20
20
#include "acp.h"
21
21
#include "acp-dsp-offset.h"
22
22
23
- #define SECURED_FIRMWARE 1
24
-
25
23
static bool enable_fw_debug ;
26
24
module_param (enable_fw_debug , bool , 0444 );
27
25
MODULE_PARM_DESC (enable_fw_debug , "Enable Firmware debug" );
28
26
27
+ static struct acp_quirk_entry quirk_valve_galileo = {
28
+ .signed_fw_image = true,
29
+ .skip_iram_dram_size_mod = true,
30
+ };
31
+
29
32
const struct dmi_system_id acp_sof_quirk_table [] = {
30
33
{
31
34
/* Steam Deck OLED device */
32
35
.matches = {
33
36
DMI_MATCH (DMI_SYS_VENDOR , "Valve" ),
34
37
DMI_MATCH (DMI_PRODUCT_NAME , "Galileo" ),
35
38
},
36
- .driver_data = ( void * ) SECURED_FIRMWARE ,
39
+ .driver_data = & quirk_valve_galileo ,
37
40
},
38
41
{}
39
42
};
@@ -254,7 +257,7 @@ int configure_and_run_sha_dma(struct acp_dev_data *adata, void *image_addr,
254
257
}
255
258
}
256
259
257
- if (adata -> signed_fw_image )
260
+ if (adata -> quirks && adata -> quirks -> signed_fw_image )
258
261
snd_sof_dsp_write (sdev , ACP_DSP_BAR , ACP_SHA_DMA_INCLUDE_HDR , ACP_SHA_HEADER );
259
262
260
263
snd_sof_dsp_write (sdev , ACP_DSP_BAR , ACP_SHA_DMA_STRT_ADDR , start_addr );
@@ -278,7 +281,7 @@ int configure_and_run_sha_dma(struct acp_dev_data *adata, void *image_addr,
278
281
}
279
282
280
283
/* psp_send_cmd only required for vangogh platform (rev - 5) */
281
- if (desc -> rev == 5 ) {
284
+ if (desc -> rev == 5 && !( adata -> quirks && adata -> quirks -> skip_iram_dram_size_mod ) ) {
282
285
/* Modify IRAM and DRAM size */
283
286
ret = psp_send_cmd (adata , MBOX_ACP_IRAM_DRAM_FENCE_COMMAND | IRAM_DRAM_FENCE_2 );
284
287
if (ret )
@@ -738,26 +741,27 @@ int amd_sof_acp_probe(struct snd_sof_dev *sdev)
738
741
sdev -> debug_box .offset = sdev -> host_box .offset + sdev -> host_box .size ;
739
742
sdev -> debug_box .size = BOX_SIZE_1024 ;
740
743
741
- adata -> signed_fw_image = false;
742
744
dmi_id = dmi_first_match (acp_sof_quirk_table );
743
- if (dmi_id && dmi_id -> driver_data ) {
744
- adata -> fw_code_bin = devm_kasprintf (sdev -> dev , GFP_KERNEL ,
745
- "sof-%s-code.bin" ,
746
- chip -> name );
747
- if (!adata -> fw_code_bin ) {
748
- ret = - ENOMEM ;
749
- goto free_ipc_irq ;
745
+ if (dmi_id ) {
746
+ adata -> quirks = dmi_id -> driver_data ;
747
+
748
+ if (adata -> quirks -> signed_fw_image ) {
749
+ adata -> fw_code_bin = devm_kasprintf (sdev -> dev , GFP_KERNEL ,
750
+ "sof-%s-code.bin" ,
751
+ chip -> name );
752
+ if (!adata -> fw_code_bin ) {
753
+ ret = - ENOMEM ;
754
+ goto free_ipc_irq ;
755
+ }
756
+
757
+ adata -> fw_data_bin = devm_kasprintf (sdev -> dev , GFP_KERNEL ,
758
+ "sof-%s-data.bin" ,
759
+ chip -> name );
760
+ if (!adata -> fw_data_bin ) {
761
+ ret = - ENOMEM ;
762
+ goto free_ipc_irq ;
763
+ }
750
764
}
751
-
752
- adata -> fw_data_bin = devm_kasprintf (sdev -> dev , GFP_KERNEL ,
753
- "sof-%s-data.bin" ,
754
- chip -> name );
755
- if (!adata -> fw_data_bin ) {
756
- ret = - ENOMEM ;
757
- goto free_ipc_irq ;
758
- }
759
-
760
- adata -> signed_fw_image = dmi_id -> driver_data ;
761
765
}
762
766
763
767
adata -> enable_fw_debug = enable_fw_debug ;
0 commit comments