On Mon, 29 Jan 2024 at 15:35, Abel Vesa <abel.vesa@xxxxxxxxxx> wrote: > > From: Sibi Sankar <quic_sibis@xxxxxxxxxxx> > > The UEFI loads a lite variant of the ADSP firmware to support charging > use cases. The kernel needs to unload and reload it with the firmware > that has full feature support for audio. This patch arbitarily shutsdown > the lite firmware before loading the full firmware. > > Signed-off-by: Sibi Sankar <quic_sibis@xxxxxxxxxxx> > Signed-off-by: Abel Vesa <abel.vesa@xxxxxxxxxx> > --- > drivers/remoteproc/qcom_q6v5_pas.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c > index 083d71f80e5c..4f6940368eb4 100644 > --- a/drivers/remoteproc/qcom_q6v5_pas.c > +++ b/drivers/remoteproc/qcom_q6v5_pas.c > @@ -39,6 +39,7 @@ struct adsp_data { > const char *dtb_firmware_name; > int pas_id; > int dtb_pas_id; > + int lite_pas_id; > unsigned int minidump_id; > bool auto_boot; > bool decrypt_shutdown; > @@ -72,6 +73,7 @@ struct qcom_adsp { > const char *dtb_firmware_name; > int pas_id; > int dtb_pas_id; > + int lite_pas_id; > unsigned int minidump_id; > int crash_reason_smem; > bool decrypt_shutdown; > @@ -210,6 +212,10 @@ static int adsp_load(struct rproc *rproc, const struct firmware *fw) > /* Store firmware handle to be used in adsp_start() */ > adsp->firmware = fw; > > + /* WIP: Shutdown the ADSP if it's running a lite version of the firmware*/ Why is it still marked as WIP? > + if (adsp->lite_pas_id) > + ret = qcom_scm_pas_shutdown(adsp->lite_pas_id); > + > if (adsp->dtb_pas_id) { > ret = request_firmware(&adsp->dtb_firmware, adsp->dtb_firmware_name, adsp->dev); > if (ret) { > @@ -693,6 +699,7 @@ static int adsp_probe(struct platform_device *pdev) > adsp->rproc = rproc; > adsp->minidump_id = desc->minidump_id; > adsp->pas_id = desc->pas_id; > + adsp->lite_pas_id = desc->lite_pas_id; > adsp->info_name = desc->sysmon_name; > adsp->decrypt_shutdown = desc->decrypt_shutdown; > adsp->region_assign_idx = desc->region_assign_idx; > @@ -990,6 +997,7 @@ static const struct adsp_data x1e80100_adsp_resource = { > .dtb_firmware_name = "adsp_dtb.mdt", > .pas_id = 1, > .dtb_pas_id = 0x24, > + .lite_pas_id = 0x1f, > .minidump_id = 5, > .auto_boot = true, > .proxy_pd_names = (char*[]){ > > -- > 2.34.1 > > -- With best wishes Dmitry