On 12/05/2023 17:54, Charles Keepax wrote: > On Fri, May 12, 2023 at 05:30:37PM +0200, Krzysztof Kozlowski wrote: >> On 12/05/2023 14:28, Charles Keepax wrote: >>> + priv->gpio_chip.fwnode = dev_fwnode(cs42l43->dev); What's also a bit confusing is that gpio_chip is the parent's node, but pinctrl is not... >>> + >>> + if (is_of_node(dev_fwnode(cs42l43->dev))) { >>> + device_set_node(priv->dev, >>> + fwnode_get_named_child_node(dev_fwnode(cs42l43->dev), >>> + "pinctrl")); >> >> That's something unusual. It seems you want to bind to a DT node because >> you miss compatible in DT node? >> > > Kinda, I don't really want to add multiple compatibles for the > device. This is just a CODEC device, even in device tree it > seems a little weird to have multiple compatibles for a single > I2C device. On ACPI I am pretty sure it would be considered flat > out right wrong. The fact Linux supports the device using multiple > drivers is seemed to be a Linux implementation detail, rather than > describing the hardware. > I think if you do not have compatible, then the device node should be rather the parent (so the main node with compatible), not the child. Child is just a wrapper for pinctrls, but not something representing a device. Best regards, Krzysztof