Hi Laurent/Haibo, thanks for your patch! On Mon, May 20, 2024 at 9:59 PM Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> wrote: > From: Haibo Chen <haibo.chen@xxxxxxx> > > The ADP5585 is a 10/11 input/output port expander with a built in keypad > matrix decoder, programmable logic, reset generator, and PWM generator. > This driver supports the GPIO function using the platform device > registered by the core MFD driver. > > The driver is derived from an initial implementation from NXP, available > in commit 451f61b46b76 ("MLK-25917-2 gpio: adp5585-gpio: add > adp5585-gpio support") in their BSP kernel tree. It has been extensively > rewritten. > > Signed-off-by: Haibo Chen <haibo.chen@xxxxxxx> > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> (...) > +static int adp5585_gpio_direction_input(struct gpio_chip *chip, unsigned int off) > +{ > + struct adp5585_gpio_dev *adp5585_gpio = gpiochip_get_data(chip); > + unsigned int bank = ADP5585_BANK(off); > + unsigned int bit = ADP5585_BIT(off); > + > + guard(mutex)(&adp5585_gpio->lock); > + > + return regmap_update_bits(adp5585_gpio->regmap, > + ADP5585_GPIO_DIRECTION_A + bank, > + bit, 0); First, I love the guarded mutex! But doesn't regmap already contain a mutex? Or is this one of those cases where regmap has been instantiated without a lock? > + gc = &adp5585_gpio->gpio_chip; > + gc->parent = dev; > + gc->direction_input = adp5585_gpio_direction_input; > + gc->direction_output = adp5585_gpio_direction_output; And chance to implemen ->get_direction()? Other than this I think the driver is ready for merge, so with the comments fixed or addressed: Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Yours, Linus Walleij