1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (C) 2013-2014 Red Hat 4 * Author: Rob Clark <robdclark@gmail.com> 5 * 6 * Copyright (c) 2014,2017 The Linux Foundation. All rights reserved. 7 */ 8 9 #include "adreno_gpu.h" 10 #include "a5xx_gpu.h" 11 12 static const struct adreno_info a5xx_gpus[] = { 13 { 14 .chip_ids = ADRENO_CHIP_IDS(0x05000500), 15 .family = ADRENO_5XX, 16 .revn = 505, 17 .fw = { 18 [ADRENO_FW_PM4] = "a530_pm4.fw", 19 [ADRENO_FW_PFP] = "a530_pfp.fw", 20 }, 21 .gmem = (SZ_128K + SZ_8K), 22 .inactive_period = DRM_MSM_INACTIVE_PERIOD, 23 .quirks = ADRENO_QUIRK_TWO_PASS_USE_WFI | 24 ADRENO_QUIRK_LMLOADKILL_DISABLE, 25 .funcs = &a5xx_gpu_funcs, 26 }, { 27 .chip_ids = ADRENO_CHIP_IDS(0x05000600), 28 .family = ADRENO_5XX, 29 .revn = 506, 30 .fw = { 31 [ADRENO_FW_PM4] = "a530_pm4.fw", 32 [ADRENO_FW_PFP] = "a530_pfp.fw", 33 }, 34 .gmem = (SZ_128K + SZ_8K), 35 /* 36 * Increase inactive period to 250 to avoid bouncing 37 * the GDSC which appears to make it grumpy 38 */ 39 .inactive_period = 250, 40 .quirks = ADRENO_QUIRK_TWO_PASS_USE_WFI | 41 ADRENO_QUIRK_LMLOADKILL_DISABLE, 42 .funcs = &a5xx_gpu_funcs, 43 .zapfw = "a506_zap.mdt", 44 }, { 45 .chip_ids = ADRENO_CHIP_IDS(0x05000800), 46 .family = ADRENO_5XX, 47 .revn = 508, 48 .fw = { 49 [ADRENO_FW_PM4] = "a530_pm4.fw", 50 [ADRENO_FW_PFP] = "a530_pfp.fw", 51 }, 52 .gmem = (SZ_128K + SZ_8K), 53 /* 54 * Increase inactive period to 250 to avoid bouncing 55 * the GDSC which appears to make it grumpy 56 */ 57 .inactive_period = 250, 58 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 59 .funcs = &a5xx_gpu_funcs, 60 .zapfw = "a508_zap.mdt", 61 }, { 62 .chip_ids = ADRENO_CHIP_IDS(0x05000900), 63 .family = ADRENO_5XX, 64 .revn = 509, 65 .fw = { 66 [ADRENO_FW_PM4] = "a530_pm4.fw", 67 [ADRENO_FW_PFP] = "a530_pfp.fw", 68 }, 69 .gmem = (SZ_256K + SZ_16K), 70 /* 71 * Increase inactive period to 250 to avoid bouncing 72 * the GDSC which appears to make it grumpy 73 */ 74 .inactive_period = 250, 75 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 76 .funcs = &a5xx_gpu_funcs, 77 /* Adreno 509 uses the same ZAP as 512 */ 78 .zapfw = "a512_zap.mdt", 79 }, { 80 .chip_ids = ADRENO_CHIP_IDS(0x05010000), 81 .family = ADRENO_5XX, 82 .revn = 510, 83 .fw = { 84 [ADRENO_FW_PM4] = "a530_pm4.fw", 85 [ADRENO_FW_PFP] = "a530_pfp.fw", 86 }, 87 .gmem = SZ_256K, 88 /* 89 * Increase inactive period to 250 to avoid bouncing 90 * the GDSC which appears to make it grumpy 91 */ 92 .inactive_period = 250, 93 .funcs = &a5xx_gpu_funcs, 94 }, { 95 .chip_ids = ADRENO_CHIP_IDS(0x05010200), 96 .family = ADRENO_5XX, 97 .revn = 512, 98 .fw = { 99 [ADRENO_FW_PM4] = "a530_pm4.fw", 100 [ADRENO_FW_PFP] = "a530_pfp.fw", 101 }, 102 .gmem = (SZ_256K + SZ_16K), 103 /* 104 * Increase inactive period to 250 to avoid bouncing 105 * the GDSC which appears to make it grumpy 106 */ 107 .inactive_period = 250, 108 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 109 .funcs = &a5xx_gpu_funcs, 110 .zapfw = "a512_zap.mdt", 111 }, { 112 .chip_ids = ADRENO_CHIP_IDS( 113 0x05030002, 114 0x05030004 115 ), 116 .family = ADRENO_5XX, 117 .revn = 530, 118 .fw = { 119 [ADRENO_FW_PM4] = "a530_pm4.fw", 120 [ADRENO_FW_PFP] = "a530_pfp.fw", 121 [ADRENO_FW_GPMU] = "a530v3_gpmu.fw2", 122 }, 123 .gmem = SZ_1M, 124 /* 125 * Increase inactive period to 250 to avoid bouncing 126 * the GDSC which appears to make it grumpy 127 */ 128 .inactive_period = 250, 129 .quirks = ADRENO_QUIRK_TWO_PASS_USE_WFI | 130 ADRENO_QUIRK_FAULT_DETECT_MASK, 131 .funcs = &a5xx_gpu_funcs, 132 .zapfw = "a530_zap.mdt", 133 }, { 134 .chip_ids = ADRENO_CHIP_IDS(0x05040001), 135 .family = ADRENO_5XX, 136 .revn = 540, 137 .fw = { 138 [ADRENO_FW_PM4] = "a530_pm4.fw", 139 [ADRENO_FW_PFP] = "a530_pfp.fw", 140 [ADRENO_FW_GPMU] = "a540_gpmu.fw2", 141 }, 142 .gmem = SZ_1M, 143 /* 144 * Increase inactive period to 250 to avoid bouncing 145 * the GDSC which appears to make it grumpy 146 */ 147 .inactive_period = 250, 148 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 149 .funcs = &a5xx_gpu_funcs, 150 .zapfw = "a540_zap.mdt", 151 } 152 }; 153 DECLARE_ADRENO_GPULIST(a5xx); 154