Messages in this thread | | | Date | Thu, 24 Nov 2022 11:03:22 +0000 | From | Mark Rutland <> | Subject | Re: [PATCH 3/3] arm_scpi: modify to support acpi |
| |
On Thu, Nov 24, 2022 at 03:09:31PM +0800, Wang Honghui wrote: > arm_scpi: modify to support acpi > > Signed-off-by: Wang Honghui <honghui.wang@ucas.com.cn>
> @@ -937,55 +952,116 @@ static int scpi_probe(struct platform_device *pdev) > if (ret) > return ret; > > - for (; scpi_drvinfo->num_chans < count; scpi_drvinfo->num_chans++) { > - resource_size_t size; > - int idx = scpi_drvinfo->num_chans; > - struct scpi_chan *pchan = scpi_drvinfo->channels + idx; > - struct mbox_client *cl = &pchan->cl; > - struct device_node *shmem = of_parse_phandle(np, "shmem", idx); > - > - if (!of_match_node(shmem_of_match, shmem)) > - return -ENXIO; > + /* Wang Honghui modified to support acpi */ > + if (dev->of_node) {
[...]
> + } else { > + for (; scpi_info->num_chans < count; scpi_info->num_chans++) { > + u32 size; > + u32 addr; > + int idx = scpi_info->num_chans; > + struct scpi_chan *pchan = scpi_info->channels + idx; > + struct mbox_client *cl = &pchan->cl; > + struct fwnode_handle *fn; > + > + fn = dev_fwnode(&(pdev->dev)); > + ret = fwnode_property_read_u32(fn, "shmem_start", &addr); > + if (ret < 0) { > + dev_err(dev, "failed to get SCPI payload mem resource\n"); > + return ret; > + } > + > + ret = fwnode_property_read_u32(fn, "shmem_size", &size); > + if (ret < 0) { > + dev_err(dev, "failed to ioremap SCPI payload\n"); > + return -EADDRNOTAVAIL; > + }
ACPI has native mechanisms to describe IO resources, so this doesn't look right at all.
Does ARM have ACPI bindings for SCPI? I don't think we should be inventing vendor-specific bindings for this....
> + if (!ret) { > + pchan->chan = phytium_mbox_request_channel(cl);
... so this looks very wrong.
Thanks, Mark.
| |