On Thu, Sep 21, 2023 at 03:32:01PM +0200, Wolfram Sang wrote: > Tested with a Renesas KingFisher board. Because my GNSS device is hooked > up via UART and I2C simultaneously, I could verify functionality by > opening/closing the GNSS device using UART and see if the corresponding > I2C device was visible on the bus. Again, please try to make the commit message self-contained (e.g. without implicitly referring to Subject). Also say something about which u-blox module this is needed for since the modules I've seen do not have a reset line. > static int ubx_set_active(struct gnss_serial *gserial) > @@ -29,6 +31,8 @@ static int ubx_set_active(struct gnss_serial *gserial) > if (ret) > return ret; > > + gpiod_set_value_cansleep(data->reset_gpio, 0); > + > return 0; > } > > @@ -37,6 +41,8 @@ static int ubx_set_standby(struct gnss_serial *gserial) > struct ubx_data *data = gnss_serial_get_drvdata(gserial); > int ret; > > + gpiod_set_value_cansleep(data->reset_gpio, 1); > + > ret = regulator_disable(data->vcc); > if (ret) > return ret; > @@ -90,6 +96,13 @@ static int ubx_probe(struct serdev_device *serdev) > if (ret < 0 && ret != -ENODEV) > goto err_free_gserial; > > + /* Start with reset asserted */ > + data->reset_gpio = devm_gpiod_get_optional(&serdev->dev, "reset", GPIOD_OUT_HIGH); > + if (IS_ERR(data->reset_gpio)) { > + ret = PTR_ERR(data->reset_gpio); > + goto err_free_gserial; > + } So this means that the reset line will be asserted indefinitely in case the GNSS receiver is not used. Are you sure that's a good idea? I don't know yet which module this is for, or how this signal is supposed to be used, but the above makes this look more like an active-high (regulator) enable signal. Perhaps that's what it is or should be modelled as (i.e. as a fixed regulator). > + > ret = gnss_serial_register(gserial); > if (ret) > goto err_free_gserial; Johan