Thread (43 messages) 43 messages, 8 authors, 2017-07-04

[PATCH v9 5/7] ACPI: Translate the I/O range of non-MMIO devices before scanning

From: Gabriele Paoloni <hidden>
Date: 2017-07-04 15:15:23
Also in: linux-acpi, linux-pci, lkml

Hi Andy

[...]
JFYI: Mika on vacation.
Thanks for letting me know
quoted
I had a look into the MFD framework. If my understanding is correct
the mfd
quoted
framework create a platform device for each declared mfd_cell that is
passed
quoted
to mfd_add_devices().
Right.
quoted
However there is something that I do not quite understand:
from
http://elixir.free-electrons.com/linux/latest/source/drivers/mfd/mfd-
core.c#L207
quoted
it seems that mfd_add_device() will create the platform device using
the
quoted
resources that are statically declared in the respective mfd_cell.
It's one possibility.
quoted
In my case I'd like to have a platform device using the resources
that are
quoted
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.
quoted
If my understanding is correct, if I declared an mfd_cell for my IPMI
child
quoted
the mfd subsystem would create a platform device for such child and
therefore acpi_create_platform_device() would fail to create a new
platform
quoted
device as adev->physical_node_count will be non zero.
However as things stand now mfd_cell devices can only use the
resources
quoted
that are statically defined in the code (and therefore not the ones
in the
quoted
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() ?

Thanks
Gab
--
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help