RE: [PATCH v9 5/7] ACPI: Translate the I/O range of non-MMIO devices before scanning
From: Gabriele Paoloni
Date: Tue Jul 04 2017 - 11:15:36 EST
> JFYI: Mika on vacation.
Thanks for letting me know
> > I had a look into the MFD framework. If my understanding is correct
> the mfd
> > framework create a platform device for each declared mfd_cell that is
> > to mfd_add_devices().
> > However there is something that I do not quite understand:
> > from
> > http://elixir.free-electrons.com/linux/latest/source/drivers/mfd/mfd-
> > it seems that mfd_add_device() will create the platform device using
> > resources that are statically declared in the respective mfd_cell.
> It's one possibility.
> > In my case I'd like to have a platform device using the resources
> that are
> > parsed from the ACPI table (i.e. as it is done now by
> > acpi_create_platform_device()).
> So far so good. Nothing prevents you to do that.
> > If my understanding is correct, if I declared an mfd_cell for my IPMI
> > the mfd subsystem would create a platform device for such child and
> > therefore acpi_create_platform_device() would fail to create a new
> > device as adev->physical_node_count will be non zero.
> > However as things stand now mfd_cell devices can only use the
> > that are statically defined in the code (and therefore not the ones
> in the
> > ACPI nodes)...am I right?
> You may file resources first and then register MFD cells. See many
> existing examples in the kernel.
Well I had a look around the Kernel I have seen no mfd cells using
Resources that are not statically defined:
i.e. cell->resources in mfd_add_device() always points to statically
defined resource structures.
Usually for ACPI devices first you need to parse the ACPI resources
from the table calling acpi_dev_get_resources(), then you iterate
over the resource list and fill the resource array by calling
acpi_platform_fill_resurces() (as in acpi_create_platform_device())
With respect to my case are you suggesting dynamically allocate a
resource array and fill it using the same fashion as
acpi_create_platform_device(), then point cell->resources to such
array before calling mfd_add_device() ?
> With Best Regards,
> Andy Shevchenko