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