[U-Boot] [PATCH v5 04/11] usb: host: xhci-rockchip: use fixed regulator to control vbus

Marek Vasut marex at denx.de
Sat Jun 17 19:33:13 UTC 2017


On 06/17/2017 07:28 PM, Simon Glass wrote:
> Hi Marek,
> 
> On 17 June 2017 at 00:22, Marek Vasut <marex at denx.de> wrote:
>> On 06/17/2017 05:41 AM, Simon Glass wrote:
>>> Hi Marek,
>>>
>>> On 15 June 2017 at 10:53, Marek Vasut <marex at denx.de> wrote:
>>>> On 06/15/2017 05:51 AM, rock-chips(daniel.meng) wrote:
>>>>>
>>>>>
>>>>> On 2017/6/13 17:11, Marek Vasut wrote:
>>>>>> On 06/12/2017 11:19 AM, Meng Dongyang wrote:
>>>>>>> Use fixed regulator to control the voltage of vbus and turn off
>>>>>>> vbus when usb stop.
>>>>>>>
>>>>>>> Signed-off-by: Meng Dongyang <daniel.meng at rock-chips.com>
>>>>>>> ---
>>>>>>>
>>>>>>> Changes in v5:
>>>>>>> - Propagate return value and print error message when failed
>>>>>>>
>>>>>>> Changes in v4:
>>>>>>> - Splited from patch [Uboot,v3,04/10]
>>>>>>> - Define set vbus as empty function if the macros aren't set
>>>>>>>
>>>>>>> Changes in v3: None
>>>>>>> Changes in v2:
>>>>>>> - Use fixed regulator to control vbus instead of gpio
>>>>>>>
>>>>>>>   drivers/usb/host/xhci-rockchip.c | 55
>>>>>>> ++++++++++++++++++++++++++++++----------
>>>>>>>   1 file changed, 42 insertions(+), 13 deletions(-)
>>>>>>>
>>>>>>> diff --git a/drivers/usb/host/xhci-rockchip.c
>>>>>>> b/drivers/usb/host/xhci-rockchip.c
>>>>>>> index f559830..15df6ef 100644
>>>>>>> --- a/drivers/usb/host/xhci-rockchip.c
>>>>>>> +++ b/drivers/usb/host/xhci-rockchip.c
>>>>>>> @@ -11,10 +11,10 @@
>>>>>>>   #include <malloc.h>
>>>>>>>   #include <usb.h>
>>>>>>>   #include <watchdog.h>
>>>>>>> -#include <asm/gpio.h>
>>>>>>>   #include <linux/errno.h>
>>>>>>>   #include <linux/compat.h>
>>>>>>>   #include <linux/usb/dwc3.h>
>>>>>>> +#include <power/regulator.h>
>>>>>>>     #include "xhci.h"
>>>>>>>   @@ -23,7 +23,7 @@ DECLARE_GLOBAL_DATA_PTR;
>>>>>>>   struct rockchip_xhci_platdata {
>>>>>>>       fdt_addr_t hcd_base;
>>>>>>>       fdt_addr_t phy_base;
>>>>>>> -    struct gpio_desc vbus_gpio;
>>>>>>> +    struct udevice *vbus_supply;
>>>>>>>   };
>>>>>>>     /*
>>>>>>> @@ -48,7 +48,7 @@ static int xhci_usb_ofdata_to_platdata(struct
>>>>>>> udevice *dev)
>>>>>>>        */
>>>>>>>       plat->hcd_base = dev_get_addr(dev);
>>>>>>>       if (plat->hcd_base == FDT_ADDR_T_NONE) {
>>>>>>> -        debug("Can't get the XHCI register base address\n");
>>>>>>> +        error("Can't get the XHCI register base address\n");
>>>>>>>           return -ENXIO;
>>>>>>>       }
>>>>>>>   @@ -62,19 +62,39 @@ static int xhci_usb_ofdata_to_platdata(struct
>>>>>>> udevice *dev)
>>>>>>>       }
>>>>>>>         if (plat->phy_base == FDT_ADDR_T_NONE) {
>>>>>>> -        debug("Can't get the usbphy register address\n");
>>>>>>> +        error("Can't get the usbphy register address\n");
>>>>>>>           return -ENXIO;
>>>>>>>       }
>>>>>>>   -    /* Vbus gpio */
>>>>>>> -    ret = gpio_request_by_name(dev, "rockchip,vbus-gpio", 0,
>>>>>>> -                   &plat->vbus_gpio, GPIOD_IS_OUT);
>>>>>>> +#if defined(CONFIG_DM_USB) && defined(CONFIG_DM_REGULATOR)
>>>>>> I don't think you need the CONFIG_DM_USB , the driver depends on it (or
>>>>>> should) already anyway.
>>>>>
>>>>> Yes, I will remove it in v6.
>>>>>>
>>>>>>> +    /* Vbus regulator */
>>>>>>> +    ret = device_get_supply_regulator(dev, "vbus-supply",
>>>>>>> +                      &plat->vbus_supply);
>>>>>> So I was curious, does this expand to empty function or is this not
>>>>>> defined if CONFIG_DM_REGULATOR is not defined ?
>>>>> This is not defined if CONFIG_DM_REGULATOR is not defined.
>>>>
>>>> Simon, can you comment on this ?
>>>
>>> It looks OK to me.
>>
>> Shouldn't you have empty stub functions instead to avoid proliferation
>> of adhoc #ifdef CONFIG_FOO throughout the codebase ?
> 
> You could, but this is just a temporary state while apparently some
> rockchip boards don't use DM_USB and DM_REGULATOR. I'm not sure what
> those bad boards are, actually.

Temporary state ? What's the final state then ?

Anyway, what if you just disable regulator support (because you don't
need it for whatever reason), but want to keep USB ? Wouldn't it make
more sense to have empty stub functions instead of swamping the drivers
with ifdefs ?

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list