[PATCH V2 3/4] soc: imx: Add generic blk-ctl driver

Frieder Schrempf frieder.schrempf at kontron.de
Thu May 6 00:55:57 PDT 2021


On 04.05.21 13:22, Peng Fan (OSS) wrote:
>> Subject: Re: [PATCH V2 3/4] soc: imx: Add generic blk-ctl driver
>>
>> On 30.04.21 07:27, Peng Fan (OSS) wrote:
>>> From: Peng Fan <peng.fan at nxp.com>
>>>
>>> The i.MX8MM introduces an IP named BLK_CTL and usually is comprised of
>>> some GPRs.
>>>
>>> The GPRs has some clock bits and reset bits, but here we take it as
>>> virtual PDs, because of the clock and power domain A/B lock issue when
>>> taking it as a clock controller.
>>>
>>> For some bits, it might be good to also make it as a reset controller,
>>> but to i.MX8MM, we not add that support for now.
>>>
>>> Signed-off-by: Peng Fan <peng.fan at nxp.com>
>>> ---
>>>   drivers/soc/imx/Makefile  |   2 +-
>>>   drivers/soc/imx/blk-ctl.c | 303
>> ++++++++++++++++++++++++++++++++++++++
>>>   drivers/soc/imx/blk-ctl.h |  76 ++++++++++
>>>   3 files changed, 380 insertions(+), 1 deletion(-)
>>>   create mode 100644 drivers/soc/imx/blk-ctl.c
>>>   create mode 100644 drivers/soc/imx/blk-ctl.h
[...]
>>> +
>>> +static int imx_blk_ctl_attach_pd(struct device *dev, struct device **devs,
>> char **pd_names,
>>> +				 u32 num_pds)
>>> +{
>>> +	int i, ret;
>>> +
>>> +	if (!pd_names)
>>> +		return 0;
>>> +
>>> +	if (dev->pm_domain) {
>>> +		devs[0] = dev;
>>> +		pm_runtime_enable(dev);
>>> +		return 0;
>>> +	}
>>> +
>>> +	for (i = 0; i < num_pds; i++) {
>>> +		devs[i] = dev_pm_domain_attach_by_name(dev, pd_names[i]);
>>> +		if (IS_ERR_OR_NULL(devs[i])) {
>>> +			ret = PTR_ERR(devs[i]) ? : -ENODATA;
>>> +			goto detach_pm;
>>> +		}
>>> +	}
>>> +
>>> +	return 0;
>>> +
>>> +detach_pm:
>>> +	for (i--; i >= 0; i--)
>>> +		dev_pm_domain_detach(devs[i], false);
>>
>> It looks like you should add pm_runtime_disable() in this error path to not
>> leave the pm_runtime_enable() unmatched.
> 
> I might need to remove pm runtime, since no the ops callback here does nothing.

Anyway, my comment is nonsense as you return success right after pm_runtime_enable().



More information about the linux-arm-kernel mailing list