Hi Rosen, Thank you for your patch. On 4-Dec-24 12:35 AM, Rosen Penev wrote: > Instead of using container_of, we can pass the pointer to > gpiochip_add_data and use it. Yes that is possible, but why? What is the advantage of doing this? Given that the struct gpio_chip is the first member of struct int0002_data it is actually free as it turns into a no-op. Where as gpiochip_get_data() is a non inline helper, so your replacing a no-op with a function call here I don't see how this makes things better? Regards, Hans > > Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx> > --- > drivers/platform/x86/intel/int0002_vgpio.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/platform/x86/intel/int0002_vgpio.c b/drivers/platform/x86/intel/int0002_vgpio.c > index 0cc80603a8a9..7ce0774b3896 100644 > --- a/drivers/platform/x86/intel/int0002_vgpio.c > +++ b/drivers/platform/x86/intel/int0002_vgpio.c > @@ -102,7 +102,7 @@ static void int0002_irq_mask(struct irq_data *data) > static int int0002_irq_set_wake(struct irq_data *data, unsigned int on) > { > struct gpio_chip *chip = irq_data_get_irq_chip_data(data); > - struct int0002_data *int0002 = container_of(chip, struct int0002_data, chip); > + struct int0002_data *int0002 = gpiochip_get_data(chip); > > /* > * Applying of the wakeup flag to our parent IRQ is delayed till system > @@ -211,7 +211,7 @@ static int int0002_probe(struct platform_device *pdev) > girq->default_type = IRQ_TYPE_NONE; > girq->handler = handle_edge_irq; > > - ret = devm_gpiochip_add_data(dev, chip, NULL); > + ret = devm_gpiochip_add_data(dev, chip, int0002); > if (ret) { > dev_err(dev, "Error adding gpio chip: %d\n", ret); > return ret;