On Tue, Sep 15, 2015 at 01:58:16PM -0500, Bin Liu wrote:
> Some USB phy drivers have different handling for the controller in each
> dr_mode. But the phy driver does not have visibility to the dr_mode of
> the controller.
> 
> This adds an api to return the dr_mode of the controller which
> associates the given phy node.
> 
> Signed-off-by: Bin Liu <[email protected]>
> ---
> v2: move drivers/usb/phy/phy-am335x.c changes into patch 3/3.
> 
>  drivers/usb/common/common.c | 27 +++++++++++++++++++++++++++
>  include/linux/usb/of.h      |  6 ++++++
>  2 files changed, 33 insertions(+)
> 
> diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
> index b530fd4..3c7dee8 100644
> --- a/drivers/usb/common/common.c
> +++ b/drivers/usb/common/common.c
> @@ -114,6 +114,33 @@ enum usb_dr_mode of_usb_get_dr_mode(struct device_node 
> *np)
>  EXPORT_SYMBOL_GPL(of_usb_get_dr_mode);
>  
>  /**
> + * of_usb_get_dr_mode_by_phy - Get dual role mode for the controller device
> + * which is associated with the given phy device_node
> + * @np:      Pointer to the given phy device_node
> + *
> + * In dts a usb controller associates with a phy device.  The function gets
> + * the string from property 'dr_mode' of the controller associated with the
> + * given phy device node, and returns the correspondig enum usb_dr_mode.
> + */
> +enum usb_dr_mode of_usb_get_dr_mode_by_phy(struct device_node *phy_np)
> +{
> +     struct device_node *controller;
> +     struct device_node *phy;
> +
> +     controller = of_get_parent(phy_np);
> +     do {
> +             controller = of_find_node_with_property(controller, "phys");
> +             if (!controller)
> +                     return USB_DR_MODE_UNKNOWN;
> +
> +             phy = of_parse_phandle(controller, "phys", 0);
> +     } while (phy != phy_np);
> +
> +     return of_usb_get_dr_mode(controller);
> +}
> +EXPORT_SYMBOL_GPL(of_usb_get_dr_mode_by_phy);

this assumes that the USB controller is described as a parent of
the PHY, but there's no requirement for this; this is merely a
function of how TI integrated the USB subsystem in HW.

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to