On 12/05/2018 06:21 AM, Laurent Pinchart wrote:
> Hi Marek,
>
> On Wednesday, 5 December 2018 01:48:01 EET Marek Vasut wrote:
>> On 12/04/2018 09:52 PM, Stephen Boyd wrote:
>>> Quoting Marek Vasut (2018-12-04 10:27:21)
>>>
>>>> diff --git a/drivers/clk/clk-versaclock5.c
>>>> b/drivers/clk/clk-versaclock5.c
>>>> index decffb3826ec..ac90fb36af1a 100644
>>>> --- a/drivers/clk/clk-versaclock5.c
>>>> +++ b/drivers/clk/clk-versaclock5.c
>>>> @@ -906,6 +906,39 @@ static int vc5_remove(struct i2c_client *client)
>>>>
>>>> return 0;
>>>>
>>>> }
>>>>
>>>> +#ifdef CONFIG_PM_SLEEP
>>>> +static int vc5_suspend(struct device *dev)
>>>
>>> Please mark as __maybe_unused and drop the #ifdef CONFIG_PM_SLEEP
>>>
>>>> +{
>>>> + struct vc5_driver_data *vc5 = dev_get_drvdata(dev);
>>>> + int ret;
>>>> +
>>>> + ret = regcache_sync(vc5->regmap);
>>>> + if (ret != 0) {
>>>> + dev_err(dev, "Failed to save register map: %d\n", ret);
>>>> + return ret;
>>>
>>> Do we need to block suspend if we can't save the register map away? Or
>>> can we just throw up our hands and not restore on resume?
>>
>> Some hardware will fail on resume, so I'd say -- yes ?
>
> But why do you need to sync on suspend in the first place ? What could cause
> the map to be dirty at this stage, and require syncing before suspend, that
> couldn't work with the sync be delayed to resume time ?
Possibly a configuration coming from eg. bootloader time , or some other
configuration not done by Linux.
--
Best regards,
Marek Vasut