|
3 | 3 | // This file is provided under a dual BSD/GPLv2 license. When using or |
4 | 4 | // redistributing this file, you may do so under either license. |
5 | 5 | // |
6 | | -// Copyright(c) 2021 Advanced Micro Devices, Inc. |
| 6 | +// Copyright(c) 2021, 2023 Advanced Micro Devices, Inc. |
7 | 7 | // |
8 | 8 | // Authors: Ajit Kumar Pandey <AjitKumar.Pandey@amd.com> |
9 | 9 |
|
@@ -158,7 +158,11 @@ int acp_dsp_pre_fw_run(struct snd_sof_dev *sdev) |
158 | 158 | int ret; |
159 | 159 |
|
160 | 160 | adata = sdev->pdata->hw_pdata; |
161 | | - size_fw = adata->fw_bin_size; |
| 161 | + |
| 162 | + if (adata->signed_fw_image) |
| 163 | + size_fw = adata->fw_bin_size - ACP_FIRMWARE_SIGNATURE; |
| 164 | + else |
| 165 | + size_fw = adata->fw_bin_size; |
162 | 166 |
|
163 | 167 | page_count = PAGE_ALIGN(size_fw) >> PAGE_SHIFT; |
164 | 168 | adata->fw_bin_page_count = page_count; |
@@ -219,3 +223,34 @@ int acp_sof_dsp_run(struct snd_sof_dev *sdev) |
219 | 223 | return 0; |
220 | 224 | } |
221 | 225 | EXPORT_SYMBOL_NS(acp_sof_dsp_run, SND_SOC_SOF_AMD_COMMON); |
| 226 | + |
| 227 | +int acp_sof_load_signed_firmware(struct snd_sof_dev *sdev) |
| 228 | +{ |
| 229 | + struct snd_sof_pdata *plat_data = sdev->pdata; |
| 230 | + struct acp_dev_data *adata = plat_data->hw_pdata; |
| 231 | + int ret; |
| 232 | + |
| 233 | + ret = request_firmware(&sdev->basefw.fw, adata->fw_code_bin, sdev->dev); |
| 234 | + if (ret < 0) { |
| 235 | + dev_err(sdev->dev, "sof signed firmware code bin is missing\n"); |
| 236 | + return ret; |
| 237 | + } else { |
| 238 | + dev_dbg(sdev->dev, "request_firmware %s successful\n", adata->fw_code_bin); |
| 239 | + } |
| 240 | + ret = snd_sof_dsp_block_write(sdev, SOF_FW_BLK_TYPE_IRAM, 0, |
| 241 | + (void *)sdev->basefw.fw->data, sdev->basefw.fw->size); |
| 242 | + |
| 243 | + ret = request_firmware(&adata->fw_dbin, adata->fw_data_bin, sdev->dev); |
| 244 | + if (ret < 0) { |
| 245 | + dev_err(sdev->dev, "sof signed firmware data bin is missing\n"); |
| 246 | + return ret; |
| 247 | + |
| 248 | + } else { |
| 249 | + dev_dbg(sdev->dev, "request_firmware %s successful\n", adata->fw_data_bin); |
| 250 | + } |
| 251 | + |
| 252 | + ret = snd_sof_dsp_block_write(sdev, SOF_FW_BLK_TYPE_DRAM, 0, |
| 253 | + (void *)adata->fw_dbin->data, adata->fw_dbin->size); |
| 254 | + return ret; |
| 255 | +} |
| 256 | +EXPORT_SYMBOL_NS(acp_sof_load_signed_firmware, SND_SOC_SOF_AMD_COMMON); |
0 commit comments