[U-Boot] [PATCH 2/2] usb: sunxi: sun50i: enable OHCI0 clock when OHCI1 is in use

Jagan Teki jagannadh.teki at gmail.com
Wed Jun 6 16:36:51 UTC 2018


On Wed, Jun 6, 2018 at 8:43 PM, Marek Vasut <marex at denx.de> wrote:
> On 06/06/2018 05:12 PM, Vasily Khoruzhick wrote:
>> On Wed, Jun 6, 2018 at 2:02 AM, Marek Vasut <marex at denx.de> wrote:
>>> On 06/06/2018 05:38 AM, Vasily Khoruzhick wrote:
>>>> On A64 OHCI1 clock source is OHCI0 clock, so we need to enable OHCI0
>>>> clock when OHCI1 is in use.
>>>>
>>>> Fixes commit dd3228170ad7 ("usb: sunxi: Switch to use generic-phy")
>>>>
>>>> Signed-off-by: Vasily Khoruzhick <anarsoul at gmail.com>
>>>> ---
>>>>  drivers/usb/host/ohci-sunxi.c | 7 ++++++-
>>>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/usb/host/ohci-sunxi.c b/drivers/usb/host/ohci-sunxi.c
>>>> index ce2b47a5c4..5661557a3d 100644
>>>> --- a/drivers/usb/host/ohci-sunxi.c
>>>> +++ b/drivers/usb/host/ohci-sunxi.c
>>>> @@ -36,6 +36,7 @@ static int ohci_usb_probe(struct udevice *dev)
>>>>       struct ohci_sunxi_priv *priv = dev_get_priv(dev);
>>>>       struct ohci_regs *regs = (struct ohci_regs *)devfdt_get_addr(dev);
>>>>       int extra_ahb_gate_mask = 0;
>>>> +     int extra_usb_gate_mask = 0;
>>>>       int phys, ret;
>>>>
>>>>       priv->ccm = (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
>>>> @@ -78,13 +79,17 @@ no_phy:
>>>>       extra_ahb_gate_mask = 1 << AHB_GATE_OFFSET_USB_EHCI0;
>>>>  #endif
>>>>       priv->usb_gate_mask = CCM_USB_CTRL_OHCI0_CLK;
>>>> +#ifdef CONFIG_MACH_SUN50I
>>>> +     extra_usb_gate_mask = CCM_USB_CTRL_OHCI0_CLK;
>>>> +#endif
>>>>       priv->ahb_gate_mask <<= phys * AHB_CLK_DIST;
>>>>       extra_ahb_gate_mask <<= phys * AHB_CLK_DIST;
>>>>       priv->usb_gate_mask <<= phys;
>>>>
>>>>       setbits_le32(&priv->ccm->ahb_gate0,
>>>>                    priv->ahb_gate_mask | extra_ahb_gate_mask);
>>>> -     setbits_le32(&priv->ccm->usb_clk_cfg, priv->usb_gate_mask);
>>>> +     setbits_le32(&priv->ccm->usb_clk_cfg,
>>>> +                  priv->usb_gate_mask | extra_usb_gate_mask);
>>>
>>> Why is the SoC / compatible information not coming from DT instead ? Why
>>> is the driver polluted by more ifdefs ?
>>
>> Because this platform doesn't have DM clock driver yet. This code will
>> be removed once this driver is implemented.
>
> You don't need DM clock driver, you can check the compatible string I
> think ?

Yes or driver_data, if we wanted to get rid of other #Ifdef on the file


More information about the U-Boot mailing list