Skip to content

Commit

Permalink
usb: common: of_usb_get_dr_mode to usb_get_dr_mode
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Heikki Krogerus authored and Felipe Balbi committed Sep 27, 2015
1 parent 6664727 commit 06e7114
Show file tree
Hide file tree
Showing 11 changed files with 21 additions and 25 deletions.
2 changes: 1 addition & 1 deletion drivers/usb/chipidea/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ static int ci_get_platdata(struct device *dev,
platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);

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)
platdata->dr_mode = USB_DR_MODE_OTG;
Expand Down
15 changes: 4 additions & 11 deletions drivers/usb/common/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,27 +99,19 @@ const char *usb_state_string(enum usb_device_state state)
}
EXPORT_SYMBOL_GPL(usb_state_string);

#ifdef CONFIG_OF
static const char *const usb_dr_modes[] = {
[USB_DR_MODE_UNKNOWN] = "",
[USB_DR_MODE_HOST] = "host",
[USB_DR_MODE_PERIPHERAL] = "peripheral",
[USB_DR_MODE_OTG] = "otg",
};

/**
* 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)
enum usb_dr_mode usb_get_dr_mode(struct device *dev)
{
const char *dr_mode;
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)
return USB_DR_MODE_UNKNOWN;

Expand All @@ -129,8 +121,9 @@ enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)

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
* for given targeted hosts (non-PC hosts)
Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/dwc2/platform.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ static int dwc2_driver_probe(struct platform_device *dev)
dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
(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
Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/dwc3/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -871,6 +871,7 @@ static int dwc3_probe(struct platform_device *pdev)
hird_threshold = 12;

dwc->maximum_speed = usb_get_maximum_speed(dev);
dwc->dr_mode = usb_get_dr_mode(dev);

if (node) {
dwc->has_lpm_erratum = of_property_read_bool(node,
Expand All @@ -886,7 +887,6 @@ static int dwc3_probe(struct platform_device *pdev)

dwc->needs_fifo_resize = of_property_read_bool(node,
"tx-fifo-resize");
dwc->dr_mode = of_usb_get_dr_mode(node);

dwc->disable_scramble_quirk = of_property_read_bool(node,
"snps,disable_scramble_quirk");
Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/dwc3/dwc3-st.c
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ static int st_dwc3_probe(struct platform_device *pdev)
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
Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/musb/musb_dsps.c
Original file line number Diff line number Diff line change
Expand Up @@ -666,7 +666,7 @@ static int get_musb_port_mode(struct device *dev)
{
enum usb_dr_mode mode;

mode = of_usb_get_dr_mode(dev->of_node);
mode = usb_get_dr_mode(dev);
switch (mode) {
case USB_DR_MODE_HOST:
return MUSB_PORT_MODE_HOST;
Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/musb/sunxi.c
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,7 @@ static int sunxi_musb_probe(struct platform_device *pdev)
return -ENOMEM;

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
case USB_DR_MODE_HOST:
pdata.mode = MUSB_PORT_MODE_HOST;
Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/phy/phy-msm-usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1529,7 +1529,7 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
if (IS_ERR(motg->phy_rst))
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)
pdata->mode = USB_DR_MODE_OTG;

Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/phy/phy-tegra-usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -1029,7 +1029,7 @@ static int tegra_usb_phy_probe(struct platform_device *pdev)
}

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
tegra_phy->mode = USB_DR_MODE_HOST;

Expand Down
6 changes: 0 additions & 6 deletions include/linux/usb/of.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,10 @@
#include <linux/usb/phy.h>

#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);
int of_usb_update_otg_caps(struct device_node *np,
struct usb_otg_caps *otg_caps);
#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)
{
return false;
Expand Down
9 changes: 9 additions & 0 deletions include/linux/usb/otg.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,4 +119,13 @@ enum usb_dr_mode {
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 */

0 comments on commit 06e7114

Please sign in to comment.