HI, On 5/19/23 12:32, Andy Shevchenko wrote: > On Thu, May 18, 2023 at 6:32 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: >> >> gc0310_s_config() used to call camera_sensor_platform_data.csi_cfg() back >> when the gc0310 driver was still using the atomisp_gmin_platform code >> for power-management. >> >> Now it is just a weirdly named wrapper around gc0310_detect(), drop >> gc0310_s_config() and make probe() call gc0310_detect() directly. > > ... > >> - ret = i2c_smbus_read_word_swapped(client, GC0310_SC_CMMN_CHIP_ID_H); >> + ret = pm_runtime_get_sync(&client->dev); >> + if (ret >= 0) >> + ret = i2c_smbus_read_word_swapped(client, GC0310_SC_CMMN_CHIP_ID_H); >> + pm_runtime_put(&client->dev); >> if (ret < 0) { >> dev_err(&client->dev, "read sensor_id failed: %d\n", ret); >> return -ENODEV; > > Not sure if it's good to have in this patch, but above can be cleaned up to > > pm_runtime_get_sync(&client->dev); > ret = i2c_smbus_read_word_swapped(client, GC0310_SC_CMMN_CHIP_ID_H); > pm_runtime_put(&client->dev); > if (ret < 0) { > dev_err(&client->dev, "read sensor_id failed: %d\n", ret); > return ret; > } > > But I don't know what will be the response on the I2C bus if the > device is powered off. In my experience the i2c bus tends to get stuck when using it with the sensor powered down and unsticking it is tricky (seems to require a full i2c-controller reset). So it is best to not even try if the pm_runtime_get_sync() fails for some reason. Regards, Hans