Re: [RFC 0/2] Match i2c_device_id when using DT ids through ACPI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday, June 06, 2016 11:03:26 PM Crestez Dan Leonard wrote:
> Linux supports instantiating devices using devicetree ids from ACPI by setting
> the id to PRP0001 and adding the devicetree compatible string in _DSD
> properties. This is described in Documentation/acpi/enumeration.txt.
> 
> I've tried to use this feature using custom ACPI tables and one issue I
> encountered is that a lot of i2c device drivers are written for DT only and
> expect a valid i2c_device_id *id parameter to their probe function but this is
> always NULL for the PRP0001 case. Others call of_match_device in order to
> determine their exact model number and that will also fail.
> 
> Drivers normally do this in order to differentiate between minor model numbers
> supported by the same driver, for example hmc5883 versus hmc5983.
> 
> For ACPI it is common to add calls to acpi_match_device in order to do such
> differentiation. It might make sense to call some form of acpi_of_match_device
> except no such function is currently exported. I think it makes a lot of sense
> to refactor the current acpi_of_match_device to return the of_device_id and
> export it.
> 
> This is in PATCH 1. After exposing this function it could be called from each
> driver that needs to support multiple models through PRP0001. I guess the
> alternative to exposing acpi_of_match_device would be for driver code to poke
> at acpi_device->data.of_compatible?
> 
> Going further it might make sense to attempt to fetch the i2c_device_id when
> instantiating through PRP0001. This already happens automatically for
> devicetree and it makes a lot of sense it would work through ACPI with DT ids.
> Patch 2 hacks an additional search in i2c register code. This makes some
> drivers "just work" without manually handling the "ACPI with DT ids" case.
> 
> For P1 it might make sense to change the parameters around so that
> acpi_of_match_device will have the same signature as of_match_device.
> 
> The purpose of these changes would be to make more drivers easier to
> instantiate through ACPI firmware. It's possible that I misunderstood and this
> problem already has a different solution.
> 
> Crestez Dan Leonard (2):
>   acpi: Expose acpi_of_match_device
>   i2c: Pass i2c_device_id to probe func when using DT ids through ACPI

It would be good to CC the actual patches to the same set of addresses as this
message.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux