On Thursday 03 April 2014 14:38:33 mika.westerberg@linux.intel.com wrote:
On Thu, Apr 03, 2014 at 11:25:34AM +0000, Pallala, Ramakrishna wrote:
In non ACPI environment I used to initialize the platform_data under board or platforms files. Under ACPI how do I do that?
If you can't extract that information from ACPI namespace, then one option is to pass platform data along with the device ACPI ID:
static const struct acpi_device_id my_acpi_match[] = { { "MYID0001", (kernel_ulong_t)&my_platform_data } ... { }, };
Thanks for the Quick reply.
So If I want to use different platform_data for different boards can I do something like below?
Exactly.
And initialize the platform data in either driver or in separate module which gets compiled along with driver?
Typically it has been done in the same driver but I don't see any problems having a separate module as well.
static const struct acpi_device_id my_acpi_match[] = { { "MYID0001", (kernel_ulong_t)&my_platform_data1 } { "MYID0002", (kernel_ulong_t)&my_platform_data2 } ... { },
We definitely don't want per-board match entries, that does not scale. The driver should be reasonably generic and get all the necessary data out of well-defined tables. You can have different IDs when there are only a few cases that are actually relevant, but it has to be conceivable that the same driver get used on future hardware without changes.
Arnd