RE: [PATCH] spi: spi-fsl-dspi: Add ACPI support

From: Kuldip Dwivedi
Date: Sat Aug 22 2020 - 10:07:38 EST


> -----Original Message-----
> From: Mark Brown <broonie@xxxxxxxxxx>
> Sent: Friday, August 21, 2020 7:37 PM
> To: kuldip dwivedi <kuldip.dwivedi@xxxxxxxxxxxxxxxx>
> Cc: linux-spi@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Qiang Zhao
> <qiang.zhao@xxxxxxx>; Pankaj Bansal <pankaj.bansal@xxxxxxx>; Varun Sethi
> <V.Sethi@xxxxxxx>; tanveer <tanveer.alam@xxxxxxxxxxxxxxxx>
> Subject: Re: [PATCH] spi: spi-fsl-dspi: Add ACPI support
>
> On Fri, Aug 21, 2020 at 06:40:29PM +0530, kuldip dwivedi wrote:
>
> > +static const struct acpi_device_id fsl_dspi_acpi_ids[] = {
> > + { "NXP0005", .driver_data =
(kernel_ulong_t)&devtype_data[LS2085A], },
> > + {},
> > +};
> > +MODULE_DEVICE_TABLE(acpi, fsl_dspi_acpi_ids);
>
> Does NXP know about this ID assignment from their namespace? ACPI IDs
should
> be namespaced by whoever's assigning the ID to avoid collisions.
Yes, I got HID from NXP only.
>
> > - ret = of_property_read_u32(np, "spi-num-chipselects",
&cs_num);
> > + if (is_acpi_node(pdev->dev.fwnode))
> > + ret = device_property_read_u32(&pdev->dev,
> > + "spi-num-chipselects", &cs_num);
> > + else
> > + ret = of_property_read_u32(np,
> > + "spi-num-chipselects", &cs_num);
>
> The whole point with the device property API is that it works with both
DT and ACPI
> without needing separate parsing, though in this case I'm wondering why
we'd
> need to specify this in an ACPI system at all?
Understood. Will take care in v2 PATCH
>
> > - of_property_read_u32(np, "bus-num", &bus_num);
> > + if (is_acpi_node(pdev->dev.fwnode)) {
> > + ret = device_property_read_u32(&pdev->dev,
> > + "bus-num",
&bus_num);
>
> This is a bad idea for DT and I can't understand why you'd carry it over
for ACPI -
> why would an ACPI system ever care about this? It's Linux internal at
the best of
> times.
Will take care in v2 PATCH
>
> It looks like you've done this by simply adding these device property
alternatives
> for every DT property. This isn't how that API is intended to be used
and suggests
> that this isn't a thought through, idiomatic ACPI binding. I'd suggest
looking at the
> Synquacer driver for an example of how this would normally be done, I'd
expect
> your ACPI code to look very much like theirs.