diff mbox series

[U-Boot,V2,2/2] core: device: use dev_power_domain_on

Message ID 20190917094556.29530-2-peng.fan@nxp.com
State Superseded
Delegated to: Simon Glass
Headers show
Series [U-Boot,V2,1/2] power: domain: add dev_power_domain_on | expand

Commit Message

Peng Fan Sept. 17, 2019, 9:29 a.m. UTC
When multiple power domains attached to a device, need power on
them all, so use dev_power_domain_on to do that.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---

V2:
 use dev_power_domain_on in patch 1/2

 drivers/core/device.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Lokesh Vutla Sept. 24, 2019, 6:13 a.m. UTC | #1
On 17/09/19 2:59 PM, Peng Fan wrote:
> When multiple power domains attached to a device, need power on
> them all, so use dev_power_domain_on to do that.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> 
> V2:
>  use dev_power_domain_on in patch 1/2
> 
>  drivers/core/device.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/core/device.c b/drivers/core/device.c
> index 05dadf98f9..f4d7140698 100644
> --- a/drivers/core/device.c
> +++ b/drivers/core/device.c
> @@ -307,7 +307,6 @@ static void *alloc_priv(int size, uint flags)
>  
>  int device_probe(struct udevice *dev)
>  {
> -	struct power_domain pd;
>  	const struct driver *drv;
>  	int size = 0;
>  	int ret;
> @@ -390,8 +389,9 @@ int device_probe(struct udevice *dev)
>  
>  	if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
>  	    device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) {

I guess we can drop the if condition all together and can directly call
dev_power_domain_on(). Rest looks good to me.

Thanks and regards,
Lokesh

> -		if (!power_domain_get(dev, &pd))
> -			power_domain_on(&pd);
> +		ret = dev_power_domain_on(dev);
> +		if (ret)
> +			goto fail;
>  	}
>  
>  	ret = uclass_pre_probe_device(dev);
>
Lokesh Vutla Sept. 24, 2019, 11:49 a.m. UTC | #2
On 17/09/19 2:59 PM, Peng Fan wrote:
> When multiple power domains attached to a device, need power on
> them all, so use dev_power_domain_on to do that.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> 
> V2:
>  use dev_power_domain_on in patch 1/2
> 
>  drivers/core/device.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/core/device.c b/drivers/core/device.c
> index 05dadf98f9..f4d7140698 100644
> --- a/drivers/core/device.c
> +++ b/drivers/core/device.c
> @@ -307,7 +307,6 @@ static void *alloc_priv(int size, uint flags)
>  
>  int device_probe(struct udevice *dev)
>  {
> -	struct power_domain pd;
>  	const struct driver *drv;
>  	int size = 0;
>  	int ret;
> @@ -390,8 +389,9 @@ int device_probe(struct udevice *dev)
>  
>  	if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
>  	    device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) {
> -		if (!power_domain_get(dev, &pd))
> -			power_domain_on(&pd);
> +		ret = dev_power_domain_on(dev);
> +		if (ret)
> +			goto fail;

Also can you not return here in case of failure? It might be the case that
power_domain driver might not be available yet.

Thanks and regards,
Lokesh

>  	}
>  
>  	ret = uclass_pre_probe_device(dev);
>
Peng Fan Sept. 25, 2019, 1:26 a.m. UTC | #3
Hi Lokesh,

> Subject: Re: [PATCH V2 2/2] core: device: use dev_power_domain_on
> 
> 
> 
> On 17/09/19 2:59 PM, Peng Fan wrote:
> > When multiple power domains attached to a device, need power on them
> > all, so use dev_power_domain_on to do that.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >
> > V2:
> >  use dev_power_domain_on in patch 1/2
> >
> >  drivers/core/device.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/core/device.c b/drivers/core/device.c index
> > 05dadf98f9..f4d7140698 100644
> > --- a/drivers/core/device.c
> > +++ b/drivers/core/device.c
> > @@ -307,7 +307,6 @@ static void *alloc_priv(int size, uint flags)
> >
> >  int device_probe(struct udevice *dev)  {
> > -	struct power_domain pd;
> >  	const struct driver *drv;
> >  	int size = 0;
> >  	int ret;
> > @@ -390,8 +389,9 @@ int device_probe(struct udevice *dev)
> >
> >  	if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
> >  	    device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) {
> > -		if (!power_domain_get(dev, &pd))
> > -			power_domain_on(&pd);
> > +		ret = dev_power_domain_on(dev);
> > +		if (ret)
> > +			goto fail;
> 
> Also can you not return here in case of failure? It might be the case that
> power_domain driver might not be available yet

Only when POWER_DOMAIN is enabled, dev_power_domain_on will be called.
I not follow you not available yet.

Thanks,
Peng.

> 
> Thanks and regards,
> Lokesh
> 
> >  	}
> >
> >  	ret = uclass_pre_probe_device(dev);
> >
Lokesh Vutla Sept. 25, 2019, 5:24 a.m. UTC | #4
Hi Peng,

On 25/09/19 6:56 AM, Peng Fan wrote:
> Hi Lokesh,
> 
>> Subject: Re: [PATCH V2 2/2] core: device: use dev_power_domain_on
>>
>>
>>
>> On 17/09/19 2:59 PM, Peng Fan wrote:
>>> When multiple power domains attached to a device, need power on them
>>> all, so use dev_power_domain_on to do that.
>>>
>>> Signed-off-by: Peng Fan <peng.fan@nxp.com>
>>> ---
>>>
>>> V2:
>>>  use dev_power_domain_on in patch 1/2
>>>
>>>  drivers/core/device.c | 6 +++---
>>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/core/device.c b/drivers/core/device.c index
>>> 05dadf98f9..f4d7140698 100644
>>> --- a/drivers/core/device.c
>>> +++ b/drivers/core/device.c
>>> @@ -307,7 +307,6 @@ static void *alloc_priv(int size, uint flags)
>>>
>>>  int device_probe(struct udevice *dev)  {
>>> -	struct power_domain pd;
>>>  	const struct driver *drv;
>>>  	int size = 0;
>>>  	int ret;
>>> @@ -390,8 +389,9 @@ int device_probe(struct udevice *dev)
>>>
>>>  	if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
>>>  	    device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) {
>>> -		if (!power_domain_get(dev, &pd))
>>> -			power_domain_on(&pd);
>>> +		ret = dev_power_domain_on(dev);
>>> +		if (ret)
>>> +			goto fail;
>>
>> Also can you not return here in case of failure? It might be the case that
>> power_domain driver might not be available yet
> 
> Only when POWER_DOMAIN is enabled, dev_power_domain_on will be called.
> I not follow you not available yet.

Never mind, it is an issue with enabling power domain on my end. Ill take back
my comment, Sorry for the noise.

Thanks and regards,
Lokesh

> 
> Thanks,
> Peng.
> 
>>
>> Thanks and regards,
>> Lokesh
>>
>>>  	}
>>>
>>>  	ret = uclass_pre_probe_device(dev);
>>>
Simon Glass Sept. 27, 2019, 1:49 a.m. UTC | #5
On Tue, 24 Sep 2019 at 22:25, Lokesh Vutla <lokeshvutla@ti.com> wrote:
>
> Hi Peng,
>
> On 25/09/19 6:56 AM, Peng Fan wrote:
> > Hi Lokesh,
> >
> >> Subject: Re: [PATCH V2 2/2] core: device: use dev_power_domain_on
> >>
> >>
> >>
> >> On 17/09/19 2:59 PM, Peng Fan wrote:
> >>> When multiple power domains attached to a device, need power on them
> >>> all, so use dev_power_domain_on to do that.
> >>>
> >>> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> >>> ---
> >>>
> >>> V2:
> >>>  use dev_power_domain_on in patch 1/2
> >>>
> >>>  drivers/core/device.c | 6 +++---
> >>>  1 file changed, 3 insertions(+), 3 deletions(-)
> >>>
> >>> diff --git a/drivers/core/device.c b/drivers/core/device.c index
> >>> 05dadf98f9..f4d7140698 100644
> >>> --- a/drivers/core/device.c
> >>> +++ b/drivers/core/device.c
> >>> @@ -307,7 +307,6 @@ static void *alloc_priv(int size, uint flags)
> >>>
> >>>  int device_probe(struct udevice *dev)  {
> >>> -   struct power_domain pd;
> >>>     const struct driver *drv;
> >>>     int size = 0;
> >>>     int ret;
> >>> @@ -390,8 +389,9 @@ int device_probe(struct udevice *dev)
> >>>
> >>>     if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
> >>>         device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) {
> >>> -           if (!power_domain_get(dev, &pd))
> >>> -                   power_domain_on(&pd);
> >>> +           ret = dev_power_domain_on(dev);
> >>> +           if (ret)
> >>> +                   goto fail;
> >>
> >> Also can you not return here in case of failure? It might be the case that
> >> power_domain driver might not be available yet
> >
> > Only when POWER_DOMAIN is enabled, dev_power_domain_on will be called.
> > I not follow you not available yet.
>
> Never mind, it is an issue with enabling power domain on my end. Ill take back
> my comment, Sorry for the noise.

Reviewed-by: Simon Glass <sjg@chromium.org>
diff mbox series

Patch

diff --git a/drivers/core/device.c b/drivers/core/device.c
index 05dadf98f9..f4d7140698 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -307,7 +307,6 @@  static void *alloc_priv(int size, uint flags)
 
 int device_probe(struct udevice *dev)
 {
-	struct power_domain pd;
 	const struct driver *drv;
 	int size = 0;
 	int ret;
@@ -390,8 +389,9 @@  int device_probe(struct udevice *dev)
 
 	if (CONFIG_IS_ENABLED(POWER_DOMAIN) && dev->parent &&
 	    device_get_uclass_id(dev) != UCLASS_POWER_DOMAIN) {
-		if (!power_domain_get(dev, &pd))
-			power_domain_on(&pd);
+		ret = dev_power_domain_on(dev);
+		if (ret)
+			goto fail;
 	}
 
 	ret = uclass_pre_probe_device(dev);