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 11 static const struct adreno_info a5xx_gpus[] = { 12 { 13 .chip_ids = ADRENO_CHIP_IDS(0x05000500), 14 .family = ADRENO_5XX, 15 .revn = 505, 16 .fw = { 17 [ADRENO_FW_PM4] = "a530_pm4.fw", 18 [ADRENO_FW_PFP] = "a530_pfp.fw", 19 }, 20 .gmem = (SZ_128K + SZ_8K), 21 .inactive_period = DRM_MSM_INACTIVE_PERIOD, 22 .quirks = ADRENO_QUIRK_TWO_PASS_USE_WFI | 23 ADRENO_QUIRK_LMLOADKILL_DISABLE, 24 .init = a5xx_gpu_init, 25 }, { 26 .chip_ids = ADRENO_CHIP_IDS(0x05000600), 27 .family = ADRENO_5XX, 28 .revn = 506, 29 .fw = { 30 [ADRENO_FW_PM4] = "a530_pm4.fw", 31 [ADRENO_FW_PFP] = "a530_pfp.fw", 32 }, 33 .gmem = (SZ_128K + SZ_8K), 34 /* 35 * Increase inactive period to 250 to avoid bouncing 36 * the GDSC which appears to make it grumpy 37 */ 38 .inactive_period = 250, 39 .quirks = ADRENO_QUIRK_TWO_PASS_USE_WFI | 40 ADRENO_QUIRK_LMLOADKILL_DISABLE, 41 .init = a5xx_gpu_init, 42 .zapfw = "a506_zap.mdt", 43 }, { 44 .chip_ids = ADRENO_CHIP_IDS(0x05000800), 45 .family = ADRENO_5XX, 46 .revn = 508, 47 .fw = { 48 [ADRENO_FW_PM4] = "a530_pm4.fw", 49 [ADRENO_FW_PFP] = "a530_pfp.fw", 50 }, 51 .gmem = (SZ_128K + SZ_8K), 52 /* 53 * Increase inactive period to 250 to avoid bouncing 54 * the GDSC which appears to make it grumpy 55 */ 56 .inactive_period = 250, 57 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 58 .init = a5xx_gpu_init, 59 .zapfw = "a508_zap.mdt", 60 }, { 61 .chip_ids = ADRENO_CHIP_IDS(0x05000900), 62 .family = ADRENO_5XX, 63 .revn = 509, 64 .fw = { 65 [ADRENO_FW_PM4] = "a530_pm4.fw", 66 [ADRENO_FW_PFP] = "a530_pfp.fw", 67 }, 68 .gmem = (SZ_256K + SZ_16K), 69 /* 70 * Increase inactive period to 250 to avoid bouncing 71 * the GDSC which appears to make it grumpy 72 */ 73 .inactive_period = 250, 74 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 75 .init = a5xx_gpu_init, 76 /* Adreno 509 uses the same ZAP as 512 */ 77 .zapfw = "a512_zap.mdt", 78 }, { 79 .chip_ids = ADRENO_CHIP_IDS(0x05010000), 80 .family = ADRENO_5XX, 81 .revn = 510, 82 .fw = { 83 [ADRENO_FW_PM4] = "a530_pm4.fw", 84 [ADRENO_FW_PFP] = "a530_pfp.fw", 85 }, 86 .gmem = SZ_256K, 87 /* 88 * Increase inactive period to 250 to avoid bouncing 89 * the GDSC which appears to make it grumpy 90 */ 91 .inactive_period = 250, 92 .init = a5xx_gpu_init, 93 }, { 94 .chip_ids = ADRENO_CHIP_IDS(0x05010200), 95 .family = ADRENO_5XX, 96 .revn = 512, 97 .fw = { 98 [ADRENO_FW_PM4] = "a530_pm4.fw", 99 [ADRENO_FW_PFP] = "a530_pfp.fw", 100 }, 101 .gmem = (SZ_256K + SZ_16K), 102 /* 103 * Increase inactive period to 250 to avoid bouncing 104 * the GDSC which appears to make it grumpy 105 */ 106 .inactive_period = 250, 107 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 108 .init = a5xx_gpu_init, 109 .zapfw = "a512_zap.mdt", 110 }, { 111 .chip_ids = ADRENO_CHIP_IDS( 112 0x05030002, 113 0x05030004 114 ), 115 .family = ADRENO_5XX, 116 .revn = 530, 117 .fw = { 118 [ADRENO_FW_PM4] = "a530_pm4.fw", 119 [ADRENO_FW_PFP] = "a530_pfp.fw", 120 [ADRENO_FW_GPMU] = "a530v3_gpmu.fw2", 121 }, 122 .gmem = SZ_1M, 123 /* 124 * Increase inactive period to 250 to avoid bouncing 125 * the GDSC which appears to make it grumpy 126 */ 127 .inactive_period = 250, 128 .quirks = ADRENO_QUIRK_TWO_PASS_USE_WFI | 129 ADRENO_QUIRK_FAULT_DETECT_MASK, 130 .init = a5xx_gpu_init, 131 .zapfw = "a530_zap.mdt", 132 }, { 133 .chip_ids = ADRENO_CHIP_IDS(0x05040001), 134 .family = ADRENO_5XX, 135 .revn = 540, 136 .fw = { 137 [ADRENO_FW_PM4] = "a530_pm4.fw", 138 [ADRENO_FW_PFP] = "a530_pfp.fw", 139 [ADRENO_FW_GPMU] = "a540_gpmu.fw2", 140 }, 141 .gmem = SZ_1M, 142 /* 143 * Increase inactive period to 250 to avoid bouncing 144 * the GDSC which appears to make it grumpy 145 */ 146 .inactive_period = 250, 147 .quirks = ADRENO_QUIRK_LMLOADKILL_DISABLE, 148 .init = a5xx_gpu_init, 149 .zapfw = "a540_zap.mdt", 150 } 151 }; 152 DECLARE_ADRENO_GPULIST(a5xx); 153 154 MODULE_FIRMWARE("qcom/a530_pm4.fw"); 155 MODULE_FIRMWARE("qcom/a530_pfp.fw"); 156 MODULE_FIRMWARE("qcom/a530v3_gpmu.fw2"); 157 MODULE_FIRMWARE("qcom/a530_zap.mdt"); 158 MODULE_FIRMWARE("qcom/a530_zap.b00"); 159 MODULE_FIRMWARE("qcom/a530_zap.b01"); 160 MODULE_FIRMWARE("qcom/a530_zap.b02"); 161 MODULE_FIRMWARE("qcom/a540_gpmu.fw2"); 162