@@ -309,6 +309,40 @@ static bool cs35l63_volatile_reg(struct device *dev, unsigned int reg)
309309 }
310310}
311311
312+ static const struct cs35l56_fw_reg cs35l56_fw_reg = {
313+ .fw_ver = CS35L56_DSP1_FW_VER ,
314+ .halo_state = CS35L56_DSP1_HALO_STATE ,
315+ .pm_cur_stat = CS35L56_DSP1_PM_CUR_STATE ,
316+ .prot_sts = CS35L56_PROTECTION_STATUS ,
317+ .transducer_actual_ps = CS35L56_TRANSDUCER_ACTUAL_PS ,
318+ .user_mute = CS35L56_MAIN_RENDER_USER_MUTE ,
319+ .user_volume = CS35L56_MAIN_RENDER_USER_VOLUME ,
320+ .posture_number = CS35L56_MAIN_POSTURE_NUMBER ,
321+ };
322+
323+ static const struct cs35l56_fw_reg cs35l63_fw_reg = {
324+ .fw_ver = CS35L63_DSP1_FW_VER ,
325+ .halo_state = CS35L63_DSP1_HALO_STATE ,
326+ .pm_cur_stat = CS35L63_DSP1_PM_CUR_STATE ,
327+ .prot_sts = CS35L63_PROTECTION_STATUS ,
328+ .transducer_actual_ps = CS35L63_TRANSDUCER_ACTUAL_PS ,
329+ .user_mute = CS35L63_MAIN_RENDER_USER_MUTE ,
330+ .user_volume = CS35L63_MAIN_RENDER_USER_VOLUME ,
331+ .posture_number = CS35L63_MAIN_POSTURE_NUMBER ,
332+ };
333+
334+ static void cs35l56_set_fw_reg_table (struct cs35l56_base * cs35l56_base )
335+ {
336+ switch (cs35l56_base -> type ) {
337+ default :
338+ cs35l56_base -> fw_reg = & cs35l56_fw_reg ;
339+ break ;
340+ case 0x63 :
341+ cs35l56_base -> fw_reg = & cs35l63_fw_reg ;
342+ break ;
343+ }
344+ }
345+
312346int cs35l56_mbox_send (struct cs35l56_base * cs35l56_base , unsigned int command )
313347{
314348 unsigned int val ;
@@ -979,6 +1013,7 @@ int cs35l56_hw_init(struct cs35l56_base *cs35l56_base)
9791013 return ret ;
9801014 }
9811015 cs35l56_base -> rev = revid & (CS35L56_AREVID_MASK | CS35L56_MTLREVID_MASK );
1016+ cs35l56_set_fw_reg_table (cs35l56_base );
9821017
9831018 ret = cs35l56_wait_for_firmware_boot (cs35l56_base );
9841019 if (ret )
@@ -1280,30 +1315,6 @@ const struct regmap_config cs35l63_regmap_sdw = {
12801315};
12811316EXPORT_SYMBOL_NS_GPL (cs35l63_regmap_sdw , "SND_SOC_CS35L56_SHARED" );
12821317
1283- const struct cs35l56_fw_reg cs35l56_fw_reg = {
1284- .fw_ver = CS35L56_DSP1_FW_VER ,
1285- .halo_state = CS35L56_DSP1_HALO_STATE ,
1286- .pm_cur_stat = CS35L56_DSP1_PM_CUR_STATE ,
1287- .prot_sts = CS35L56_PROTECTION_STATUS ,
1288- .transducer_actual_ps = CS35L56_TRANSDUCER_ACTUAL_PS ,
1289- .user_mute = CS35L56_MAIN_RENDER_USER_MUTE ,
1290- .user_volume = CS35L56_MAIN_RENDER_USER_VOLUME ,
1291- .posture_number = CS35L56_MAIN_POSTURE_NUMBER ,
1292- };
1293- EXPORT_SYMBOL_NS_GPL (cs35l56_fw_reg , "SND_SOC_CS35L56_SHARED" );
1294-
1295- const struct cs35l56_fw_reg cs35l63_fw_reg = {
1296- .fw_ver = CS35L63_DSP1_FW_VER ,
1297- .halo_state = CS35L63_DSP1_HALO_STATE ,
1298- .pm_cur_stat = CS35L63_DSP1_PM_CUR_STATE ,
1299- .prot_sts = CS35L63_PROTECTION_STATUS ,
1300- .transducer_actual_ps = CS35L63_TRANSDUCER_ACTUAL_PS ,
1301- .user_mute = CS35L63_MAIN_RENDER_USER_MUTE ,
1302- .user_volume = CS35L63_MAIN_RENDER_USER_VOLUME ,
1303- .posture_number = CS35L63_MAIN_POSTURE_NUMBER ,
1304- };
1305- EXPORT_SYMBOL_NS_GPL (cs35l63_fw_reg , "SND_SOC_CS35L56_SHARED" );
1306-
13071318MODULE_DESCRIPTION ("ASoC CS35L56 Shared" );
13081319MODULE_AUTHOR ("Richard Fitzgerald <rf@opensource.cirrus.com>" );
13091320MODULE_AUTHOR ("Simon Trimmer <simont@opensource.cirrus.com>" );
0 commit comments