|
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 | +}; |
| 30 | + |
29 | 31 | const struct dmi_system_id acp_sof_quirk_table[] = { |
30 | 32 | { |
31 | 33 | /* Steam Deck OLED device */ |
32 | 34 | .matches = { |
33 | 35 | DMI_MATCH(DMI_SYS_VENDOR, "Valve"), |
34 | 36 | DMI_MATCH(DMI_PRODUCT_NAME, "Galileo"), |
35 | 37 | }, |
36 | | - .driver_data = (void *)SECURED_FIRMWARE, |
| 38 | + .driver_data = &quirk_valve_galileo, |
37 | 39 | }, |
38 | 40 | {} |
39 | 41 | }; |
@@ -254,7 +256,7 @@ int configure_and_run_sha_dma(struct acp_dev_data *adata, void *image_addr, |
254 | 256 | } |
255 | 257 | } |
256 | 258 |
|
257 | | - if (adata->signed_fw_image) |
| 259 | + if (adata->quirks && adata->quirks->signed_fw_image) |
258 | 260 | snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_SHA_DMA_INCLUDE_HDR, ACP_SHA_HEADER); |
259 | 261 |
|
260 | 262 | snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_SHA_DMA_STRT_ADDR, start_addr); |
@@ -738,26 +740,27 @@ int amd_sof_acp_probe(struct snd_sof_dev *sdev) |
738 | 740 | sdev->debug_box.offset = sdev->host_box.offset + sdev->host_box.size; |
739 | 741 | sdev->debug_box.size = BOX_SIZE_1024; |
740 | 742 |
|
741 | | - adata->signed_fw_image = false; |
742 | 743 | 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; |
| 744 | + if (dmi_id) { |
| 745 | + adata->quirks = dmi_id->driver_data; |
| 746 | + |
| 747 | + if (adata->quirks->signed_fw_image) { |
| 748 | + adata->fw_code_bin = devm_kasprintf(sdev->dev, GFP_KERNEL, |
| 749 | + "sof-%s-code.bin", |
| 750 | + chip->name); |
| 751 | + if (!adata->fw_code_bin) { |
| 752 | + ret = -ENOMEM; |
| 753 | + goto free_ipc_irq; |
| 754 | + } |
| 755 | + |
| 756 | + adata->fw_data_bin = devm_kasprintf(sdev->dev, GFP_KERNEL, |
| 757 | + "sof-%s-data.bin", |
| 758 | + chip->name); |
| 759 | + if (!adata->fw_data_bin) { |
| 760 | + ret = -ENOMEM; |
| 761 | + goto free_ipc_irq; |
| 762 | + } |
750 | 763 | } |
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 | 764 | } |
762 | 765 |
|
763 | 766 | adata->enable_fw_debug = enable_fw_debug; |
|
0 commit comments