Re: [PATCH 7/9] media: atomisp: gc0310: Remove gc0310_s_config() function

Hans de Goede
2023-05-19T10:35:16Z

HI,

On 5/19/23 12:32, Andy Shevchenko wrote:
> On Thu, May 18, 2023 at 6:32 PM Hans de Goede <hdegoede@redhat.com> 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