@@ -142,6 +142,59 @@ MODULE_FIRMWARE(SKL_DMC_PATH);
142142#define BXT_DMC_MAX_FW_SIZE 0x3000
143143MODULE_FIRMWARE (BXT_DMC_PATH );
144144
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+
145198#define DMC_DEFAULT_FW_OFFSET 0xFFFFFFFF
146199#define PACKAGE_MAX_FW_INFO_ENTRIES 20
147200#define PACKAGE_V2_MAX_FW_INFO_ENTRIES 32
@@ -1009,48 +1062,7 @@ void intel_dmc_init(struct drm_i915_private *i915)
10091062
10101063 INIT_WORK (& dmc -> work , dmc_load_work_fn );
10111064
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 );
10541066
10551067 if (i915 -> params .dmc_firmware_path ) {
10561068 if (strlen (i915 -> params .dmc_firmware_path ) == 0 ) {
0 commit comments