xref: /linux/drivers/gpu/drm/msm/adreno/a5xx_catalog.c (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
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