@@ -142,6 +142,59 @@ MODULE_FIRMWARE(SKL_DMC_PATH);
142
142
#define BXT_DMC_MAX_FW_SIZE 0x3000
143
143
MODULE_FIRMWARE (BXT_DMC_PATH );
144
144
145
+ static const char * dmc_firmware_default (struct drm_i915_private * i915 , u32 * size )
146
+ {
147
+ const char * fw_path = NULL ;
148
+ u32 max_fw_size = 0 ;
149
+
150
+ if (DISPLAY_VER_FULL (i915 ) == IP_VER (20 , 0 )) {
151
+ fw_path = XE2LPD_DMC_PATH ;
152
+ max_fw_size = XE2LPD_DMC_MAX_FW_SIZE ;
153
+ } else if (DISPLAY_VER_FULL (i915 ) == IP_VER (14 , 0 )) {
154
+ fw_path = MTL_DMC_PATH ;
155
+ max_fw_size = XELPDP_DMC_MAX_FW_SIZE ;
156
+ } else if (IS_DG2 (i915 )) {
157
+ fw_path = DG2_DMC_PATH ;
158
+ max_fw_size = DISPLAY_VER13_DMC_MAX_FW_SIZE ;
159
+ } else if (IS_ALDERLAKE_P (i915 )) {
160
+ fw_path = ADLP_DMC_PATH ;
161
+ max_fw_size = DISPLAY_VER13_DMC_MAX_FW_SIZE ;
162
+ } else if (IS_ALDERLAKE_S (i915 )) {
163
+ fw_path = ADLS_DMC_PATH ;
164
+ max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
165
+ } else if (IS_DG1 (i915 )) {
166
+ fw_path = DG1_DMC_PATH ;
167
+ max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
168
+ } else if (IS_ROCKETLAKE (i915 )) {
169
+ fw_path = RKL_DMC_PATH ;
170
+ max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
171
+ } else if (IS_TIGERLAKE (i915 )) {
172
+ fw_path = TGL_DMC_PATH ;
173
+ max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
174
+ } else if (DISPLAY_VER (i915 ) == 11 ) {
175
+ fw_path = ICL_DMC_PATH ;
176
+ max_fw_size = ICL_DMC_MAX_FW_SIZE ;
177
+ } else if (IS_GEMINILAKE (i915 )) {
178
+ fw_path = GLK_DMC_PATH ;
179
+ max_fw_size = GLK_DMC_MAX_FW_SIZE ;
180
+ } else if (IS_KABYLAKE (i915 ) ||
181
+ IS_COFFEELAKE (i915 ) ||
182
+ IS_COMETLAKE (i915 )) {
183
+ fw_path = KBL_DMC_PATH ;
184
+ max_fw_size = KBL_DMC_MAX_FW_SIZE ;
185
+ } else if (IS_SKYLAKE (i915 )) {
186
+ fw_path = SKL_DMC_PATH ;
187
+ max_fw_size = SKL_DMC_MAX_FW_SIZE ;
188
+ } else if (IS_BROXTON (i915 )) {
189
+ fw_path = BXT_DMC_PATH ;
190
+ max_fw_size = BXT_DMC_MAX_FW_SIZE ;
191
+ }
192
+
193
+ * size = max_fw_size ;
194
+
195
+ return fw_path ;
196
+ }
197
+
145
198
#define DMC_DEFAULT_FW_OFFSET 0xFFFFFFFF
146
199
#define PACKAGE_MAX_FW_INFO_ENTRIES 20
147
200
#define PACKAGE_V2_MAX_FW_INFO_ENTRIES 32
@@ -1009,48 +1062,7 @@ void intel_dmc_init(struct drm_i915_private *i915)
1009
1062
1010
1063
INIT_WORK (& dmc -> work , dmc_load_work_fn );
1011
1064
1012
- if (DISPLAY_VER_FULL (i915 ) == IP_VER (20 , 0 )) {
1013
- dmc -> fw_path = XE2LPD_DMC_PATH ;
1014
- dmc -> max_fw_size = XE2LPD_DMC_MAX_FW_SIZE ;
1015
- } else if (DISPLAY_VER_FULL (i915 ) == IP_VER (14 , 0 )) {
1016
- dmc -> fw_path = MTL_DMC_PATH ;
1017
- dmc -> max_fw_size = XELPDP_DMC_MAX_FW_SIZE ;
1018
- } else if (IS_DG2 (i915 )) {
1019
- dmc -> fw_path = DG2_DMC_PATH ;
1020
- dmc -> max_fw_size = DISPLAY_VER13_DMC_MAX_FW_SIZE ;
1021
- } else if (IS_ALDERLAKE_P (i915 )) {
1022
- dmc -> fw_path = ADLP_DMC_PATH ;
1023
- dmc -> max_fw_size = DISPLAY_VER13_DMC_MAX_FW_SIZE ;
1024
- } else if (IS_ALDERLAKE_S (i915 )) {
1025
- dmc -> fw_path = ADLS_DMC_PATH ;
1026
- dmc -> max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
1027
- } else if (IS_DG1 (i915 )) {
1028
- dmc -> fw_path = DG1_DMC_PATH ;
1029
- dmc -> max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
1030
- } else if (IS_ROCKETLAKE (i915 )) {
1031
- dmc -> fw_path = RKL_DMC_PATH ;
1032
- dmc -> max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
1033
- } else if (IS_TIGERLAKE (i915 )) {
1034
- dmc -> fw_path = TGL_DMC_PATH ;
1035
- dmc -> max_fw_size = DISPLAY_VER12_DMC_MAX_FW_SIZE ;
1036
- } else if (DISPLAY_VER (i915 ) == 11 ) {
1037
- dmc -> fw_path = ICL_DMC_PATH ;
1038
- dmc -> max_fw_size = ICL_DMC_MAX_FW_SIZE ;
1039
- } else if (IS_GEMINILAKE (i915 )) {
1040
- dmc -> fw_path = GLK_DMC_PATH ;
1041
- dmc -> max_fw_size = GLK_DMC_MAX_FW_SIZE ;
1042
- } else if (IS_KABYLAKE (i915 ) ||
1043
- IS_COFFEELAKE (i915 ) ||
1044
- IS_COMETLAKE (i915 )) {
1045
- dmc -> fw_path = KBL_DMC_PATH ;
1046
- dmc -> max_fw_size = KBL_DMC_MAX_FW_SIZE ;
1047
- } else if (IS_SKYLAKE (i915 )) {
1048
- dmc -> fw_path = SKL_DMC_PATH ;
1049
- dmc -> max_fw_size = SKL_DMC_MAX_FW_SIZE ;
1050
- } else if (IS_BROXTON (i915 )) {
1051
- dmc -> fw_path = BXT_DMC_PATH ;
1052
- dmc -> max_fw_size = BXT_DMC_MAX_FW_SIZE ;
1053
- }
1065
+ dmc -> fw_path = dmc_firmware_default (i915 , & dmc -> max_fw_size );
1054
1066
1055
1067
if (i915 -> params .dmc_firmware_path ) {
1056
1068
if (strlen (i915 -> params .dmc_firmware_path ) == 0 ) {
0 commit comments