[PATCH 4/4] usb: ohci-at91: Add USB PHY functionality

Marek Vasut marex at denx.de
Tue Jan 3 15:38:21 CET 2023


On 1/3/23 14:02, Sergiu.Moga at microchip.com wrote:
> On 03.01.2023 01:33, Marek Vasut wrote:
>> On 12/23/22 13:34, Sergiu Moga wrote:
>>> Add the ability to enable/disable whatever USB PHY's are
>>> passed to the AT91 OHCI driver through DT.
>>>
>>> Signed-off-by: Sergiu Moga <sergiu.moga at microchip.com>
>>> Tested-by: Mihai Sain <mihai.sain at microchip.com>
>>> ---
>>>    drivers/usb/host/ohci-at91.c | 31 +++++++++++++++++++++++++++++++
>>>    1 file changed, 31 insertions(+)
>>>
>>> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
>>> index 5cf8f283e5..217f31b402 100644
>>> --- a/drivers/usb/host/ohci-at91.c
>>> +++ b/drivers/usb/host/ohci-at91.c
>>> @@ -74,6 +74,10 @@ int usb_cpu_init_fail(void)
>>>    #include <usb.h>
>>>    #include "ohci.h"
>>>
>>> +#if CONFIG_IS_ENABLED(PHY_MICROCHIP_SAMA7_USB)
>>> +#include <generic-phy.h>
>>> +#endif
>>> +
>>>    #define AT91_MAX_USBH_PORTS        3
>>>
>>>    #define at91_for_each_port(index)   \
>>> @@ -91,6 +95,10 @@ struct ohci_at91_priv {
>>>        struct clk *fclk;
>>>        struct clk *hclk;
>>>        bool clocked;
>>> +
>>> +#if CONFIG_IS_ENABLED(PHY_MICROCHIP_SAMA7_USB)
>>> +     struct phy phy[AT91_MAX_USBH_PORTS];
>>> +#endif
>>>    };
>>>
>>>    static void at91_start_clock(struct ohci_at91_priv *ohci_at91)
>>> @@ -98,6 +106,13 @@ static void at91_start_clock(struct ohci_at91_priv
>>> *ohci_at91)
>>>        if (ohci_at91->clocked)
>>>                return;
>>>
>>> +#if CONFIG_IS_ENABLED(PHY_MICROCHIP_SAMA7_USB)
>>
>> Use plain:
>>
>> if (CONFIG_IS_ENABLED(...)) { ... }
>>
>> instead of the #if ... , the compiler would optimize the code out
>> correctly.
>>
> 
> 
> The build system complains that the generic_phy_* methods are not
> present and, if possible, I would like not to have to enable the PHY
> related CONFIGs on the boards that do not need it only to avoid these
> warnings.

Do include <generic-phy.h> . If CONFIG_PHY is not set, then those 
generic_phy_*() functions become empty inline functions, where are 
optimized out by the compiler.


More information about the U-Boot mailing list