usb: common: of_usb_get_dr_mode to usb_get_dr_mode

By using the unified device property interface, the function
can be made available for all platforms and not just the
ones using DT.

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Heikki Krogerus 2015-09-21 11:14:34 +03:00 committed by Felipe Balbi
parent 666472733b
commit 06e7114f0d
11 changed files with 21 additions and 25 deletions

View File

@ -611,7 +611,7 @@ static int ci_get_platdata(struct device *dev,
platdata->phy_mode = of_usb_get_phy_mode(dev->of_node); platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
if (!platdata->dr_mode) if (!platdata->dr_mode)
platdata->dr_mode = of_usb_get_dr_mode(dev->of_node); platdata->dr_mode = usb_get_dr_mode(dev);
if (platdata->dr_mode == USB_DR_MODE_UNKNOWN) if (platdata->dr_mode == USB_DR_MODE_UNKNOWN)
platdata->dr_mode = USB_DR_MODE_OTG; platdata->dr_mode = USB_DR_MODE_OTG;

View File

@ -99,7 +99,6 @@ const char *usb_state_string(enum usb_device_state state)
} }
EXPORT_SYMBOL_GPL(usb_state_string); EXPORT_SYMBOL_GPL(usb_state_string);
#ifdef CONFIG_OF
static const char *const usb_dr_modes[] = { static const char *const usb_dr_modes[] = {
[USB_DR_MODE_UNKNOWN] = "", [USB_DR_MODE_UNKNOWN] = "",
[USB_DR_MODE_HOST] = "host", [USB_DR_MODE_HOST] = "host",
@ -107,19 +106,12 @@ static const char *const usb_dr_modes[] = {
[USB_DR_MODE_OTG] = "otg", [USB_DR_MODE_OTG] = "otg",
}; };
/** enum usb_dr_mode usb_get_dr_mode(struct device *dev)
* of_usb_get_dr_mode - Get dual role mode for given device_node
* @np: Pointer to the given device_node
*
* The function gets phy interface string from property 'dr_mode',
* and returns the correspondig enum usb_dr_mode
*/
enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
{ {
const char *dr_mode; const char *dr_mode;
int err, i; int err, i;
err = of_property_read_string(np, "dr_mode", &dr_mode); err = device_property_read_string(dev, "dr_mode", &dr_mode);
if (err < 0) if (err < 0)
return USB_DR_MODE_UNKNOWN; return USB_DR_MODE_UNKNOWN;
@ -129,8 +121,9 @@ enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
return USB_DR_MODE_UNKNOWN; return USB_DR_MODE_UNKNOWN;
} }
EXPORT_SYMBOL_GPL(of_usb_get_dr_mode); EXPORT_SYMBOL_GPL(usb_get_dr_mode);
#ifdef CONFIG_OF
/** /**
* of_usb_host_tpl_support - to get if Targeted Peripheral List is supported * of_usb_host_tpl_support - to get if Targeted Peripheral List is supported
* for given targeted hosts (non-PC hosts) * for given targeted hosts (non-PC hosts)

View File

@ -220,7 +220,7 @@ static int dwc2_driver_probe(struct platform_device *dev)
dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n", dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
(unsigned long)res->start, hsotg->regs); (unsigned long)res->start, hsotg->regs);
hsotg->dr_mode = of_usb_get_dr_mode(dev->dev.of_node); hsotg->dr_mode = usb_get_dr_mode(&dev->dev);
/* /*
* Attempt to find a generic PHY, then look for an old style * Attempt to find a generic PHY, then look for an old style

View File

@ -871,6 +871,7 @@ static int dwc3_probe(struct platform_device *pdev)
hird_threshold = 12; hird_threshold = 12;
dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->maximum_speed = usb_get_maximum_speed(dev);
dwc->dr_mode = usb_get_dr_mode(dev);
if (node) { if (node) {
dwc->has_lpm_erratum = of_property_read_bool(node, dwc->has_lpm_erratum = of_property_read_bool(node,
@ -886,7 +887,6 @@ static int dwc3_probe(struct platform_device *pdev)
dwc->needs_fifo_resize = of_property_read_bool(node, dwc->needs_fifo_resize = of_property_read_bool(node,
"tx-fifo-resize"); "tx-fifo-resize");
dwc->dr_mode = of_usb_get_dr_mode(node);
dwc->disable_scramble_quirk = of_property_read_bool(node, dwc->disable_scramble_quirk = of_property_read_bool(node,
"snps,disable_scramble_quirk"); "snps,disable_scramble_quirk");

View File

@ -268,7 +268,7 @@ static int st_dwc3_probe(struct platform_device *pdev)
goto undo_softreset; goto undo_softreset;
} }
dwc3_data->dr_mode = of_usb_get_dr_mode(child_pdev->dev.of_node); dwc3_data->dr_mode = usb_get_dr_mode(&child_pdev->dev);
/* /*
* Configure the USB port as device or host according to the static * Configure the USB port as device or host according to the static

View File

@ -666,7 +666,7 @@ static int get_musb_port_mode(struct device *dev)
{ {
enum usb_dr_mode mode; enum usb_dr_mode mode;
mode = of_usb_get_dr_mode(dev->of_node); mode = usb_get_dr_mode(dev);
switch (mode) { switch (mode) {
case USB_DR_MODE_HOST: case USB_DR_MODE_HOST:
return MUSB_PORT_MODE_HOST; return MUSB_PORT_MODE_HOST;

View File

@ -617,7 +617,7 @@ static int sunxi_musb_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
memset(&pdata, 0, sizeof(pdata)); memset(&pdata, 0, sizeof(pdata));
switch (of_usb_get_dr_mode(np)) { switch (usb_get_dr_mode(&pdev->dev)) {
#if defined CONFIG_USB_MUSB_DUAL_ROLE || defined CONFIG_USB_MUSB_HOST #if defined CONFIG_USB_MUSB_DUAL_ROLE || defined CONFIG_USB_MUSB_HOST
case USB_DR_MODE_HOST: case USB_DR_MODE_HOST:
pdata.mode = MUSB_PORT_MODE_HOST; pdata.mode = MUSB_PORT_MODE_HOST;

View File

@ -1529,7 +1529,7 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
if (IS_ERR(motg->phy_rst)) if (IS_ERR(motg->phy_rst))
motg->phy_rst = NULL; motg->phy_rst = NULL;
pdata->mode = of_usb_get_dr_mode(node); pdata->mode = usb_get_dr_mode(&pdev->dev);
if (pdata->mode == USB_DR_MODE_UNKNOWN) if (pdata->mode == USB_DR_MODE_UNKNOWN)
pdata->mode = USB_DR_MODE_OTG; pdata->mode = USB_DR_MODE_OTG;

View File

@ -1029,7 +1029,7 @@ static int tegra_usb_phy_probe(struct platform_device *pdev)
} }
if (of_find_property(np, "dr_mode", NULL)) if (of_find_property(np, "dr_mode", NULL))
tegra_phy->mode = of_usb_get_dr_mode(np); tegra_phy->mode = usb_get_dr_mode(&pdev->dev);
else else
tegra_phy->mode = USB_DR_MODE_HOST; tegra_phy->mode = USB_DR_MODE_HOST;

View File

@ -12,16 +12,10 @@
#include <linux/usb/phy.h> #include <linux/usb/phy.h>
#if IS_ENABLED(CONFIG_OF) #if IS_ENABLED(CONFIG_OF)
enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np);
bool of_usb_host_tpl_support(struct device_node *np); bool of_usb_host_tpl_support(struct device_node *np);
int of_usb_update_otg_caps(struct device_node *np, int of_usb_update_otg_caps(struct device_node *np,
struct usb_otg_caps *otg_caps); struct usb_otg_caps *otg_caps);
#else #else
static inline enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
{
return USB_DR_MODE_UNKNOWN;
}
static inline bool of_usb_host_tpl_support(struct device_node *np) static inline bool of_usb_host_tpl_support(struct device_node *np)
{ {
return false; return false;

View File

@ -119,4 +119,13 @@ enum usb_dr_mode {
USB_DR_MODE_OTG, USB_DR_MODE_OTG,
}; };
/**
* usb_get_dr_mode - Get dual role mode for given device
* @dev: Pointer to the given device
*
* The function gets phy interface string from property 'dr_mode',
* and returns the correspondig enum usb_dr_mode
*/
extern enum usb_dr_mode usb_get_dr_mode(struct device *dev);
#endif /* __LINUX_USB_OTG_H */ #endif /* __LINUX_USB_OTG_H */