Hi Dan, On Sat, Oct 24, 2020 at 11:28:06PM +0100, Daniel Scally wrote: > On 24/10/2020 10:37, Laurent Pinchart wrote: > > > >>> I wonder if we could avoid depending on the I2C device being created by > >>> getting the fwnode from adev, and setting ->secondary manually. adev > >>> would need to be passed to get_acpi_ssdb_sensor_data() instead of dev. > >> Let me try that; I initially wanted to do > >> set_secondary_fwnode(&adev->dev, fwnode) to avoid depending on the I2C > >> dev being created but it turns out &adev->dev isn't the same pointer. I > >> shall try it and see. > > Actually, thinking on this further I think maybe we can't avoid that - > it's not actually in this patch series but during assigning GPIO > resources parsed from PMIC's ACPI node to the sensor, I'm using > dev_name() on the i2c dev to pass to .dev_id member of gpiod_lookup_table Any chance we can construct the I2C device name from the ACPI device, the same way that the ACPI/I2C core does ? It may be a dead end, but if we could avoid depending on the I2C device, I think it will make initialization easier. I have a feeling that will be difficult though, as we'll need the I2C bus number, which won't be readily available. Maybe this calls for extending the gpiod lookup API, but that would then likely be something we would build on top. I'm thinking about a way to specify the GPIO mapping in the software node, and retrieving it from there, the same way this is done for GPIOs in OF-based systems. -- Regards, Laurent Pinchart