mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 23:58:05 +00:00
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:
parent
666472733b
commit
06e7114f0d
11 changed files with 21 additions and 25 deletions
|
@ -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;
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
Loading…
Reference in a new issue