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