On 28/01/2023 21:26, Danny Kaehn wrote: > Bind i2c and gpio interfaces to subnodes with names > "i2c" and "gpio" if they exist, respectively. This > allows the gpio and i2c controllers to be described > in DT as usual. > > Signed-off-by: Danny Kaehn <kaehndan@xxxxxxxxx> > --- > drivers/hid/hid-cp2112.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c > index 27cadadda7c9..99e8043e1c34 100644 > --- a/drivers/hid/hid-cp2112.c > +++ b/drivers/hid/hid-cp2112.c > @@ -1310,6 +1310,7 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) > dev->adap.algo = &smbus_algorithm; > dev->adap.algo_data = dev; > dev->adap.dev.parent = &hdev->dev; > + dev->adap.dev.of_node = of_get_child_by_name(hdev->dev.of_node, "i2c"); > snprintf(dev->adap.name, sizeof(dev->adap.name), > "CP2112 SMBus Bridge on hidraw%d", > ((struct hidraw *)hdev->hidraw)->minor); > @@ -1336,6 +1337,9 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id) > dev->gc.ngpio = 8; > dev->gc.can_sleep = 1; > dev->gc.parent = &hdev->dev; > +#if defined(CONFIG_OF_GPIO) Don't use #if, but IS_ENABLED(). I think it should work here. > + dev->gc.of_node = of_get_child_by_name(hdev->dev.of_node, "gpio"); You leak it now on error paths. Best regards, Krzysztof