Skip to content

Commit

Permalink
usb: common: of_usb_get_maximum_speed to usb_get_maximum_speed
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 58efd4b commit 63863b9
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 36 deletions.
2 changes: 1 addition & 1 deletion drivers/usb/chipidea/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -648,7 +648,7 @@ static int ci_get_platdata(struct device *dev,
return ret;
}

if (of_usb_get_maximum_speed(dev->of_node) == USB_SPEED_FULL)
if (usb_get_maximum_speed(dev) == USB_SPEED_FULL)
platdata->flags |= CI_HDRC_FORCE_FULLSPEED;

platdata->itc_setting = 1;
Expand Down
44 changes: 18 additions & 26 deletions drivers/usb/common/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,24 @@ const char *usb_speed_string(enum usb_device_speed speed)
}
EXPORT_SYMBOL_GPL(usb_speed_string);

enum usb_device_speed usb_get_maximum_speed(struct device *dev)
{
const char *maximum_speed;
int err;
int i;

err = device_property_read_string(dev, "maximum-speed", &maximum_speed);
if (err < 0)
return USB_SPEED_UNKNOWN;

for (i = 0; i < ARRAY_SIZE(speed_names); i++)
if (strcmp(maximum_speed, speed_names[i]) == 0)
return i;

return USB_SPEED_UNKNOWN;
}
EXPORT_SYMBOL_GPL(usb_get_maximum_speed);

const char *usb_state_string(enum usb_device_state state)
{
static const char *const names[] = {
Expand Down Expand Up @@ -113,32 +131,6 @@ enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
}
EXPORT_SYMBOL_GPL(of_usb_get_dr_mode);

/**
* of_usb_get_maximum_speed - Get maximum requested speed for a given USB
* controller.
* @np: Pointer to the given device_node
*
* The function gets the maximum speed string from property "maximum-speed",
* and returns the corresponding enum usb_device_speed.
*/
enum usb_device_speed of_usb_get_maximum_speed(struct device_node *np)
{
const char *maximum_speed;
int err;
int i;

err = of_property_read_string(np, "maximum-speed", &maximum_speed);
if (err < 0)
return USB_SPEED_UNKNOWN;

for (i = 0; i < ARRAY_SIZE(speed_names); i++)
if (strcmp(maximum_speed, speed_names[i]) == 0)
return i;

return USB_SPEED_UNKNOWN;
}
EXPORT_SYMBOL_GPL(of_usb_get_maximum_speed);

/**
* of_usb_host_tpl_support - to get if Targeted Peripheral List is supported
* for given targeted hosts (non-PC hosts)
Expand Down
3 changes: 2 additions & 1 deletion drivers/usb/dwc3/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -870,8 +870,9 @@ static int dwc3_probe(struct platform_device *pdev)
*/
hird_threshold = 12;

dwc->maximum_speed = usb_get_maximum_speed(dev);

if (node) {
dwc->maximum_speed = of_usb_get_maximum_speed(node);
dwc->has_lpm_erratum = of_property_read_bool(node,
"snps,has-lpm-erratum");
of_property_read_u8(node, "snps,lpm-nyet-threshold",
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 @@ -747,7 +747,7 @@ static int dsps_create_musb_pdev(struct dsps_glue *glue,
if (!ret && val)
config->multipoint = true;

config->maximum_speed = of_usb_get_maximum_speed(dn);
config->maximum_speed = usb_get_maximum_speed(&parent->dev);
switch (config->maximum_speed) {
case USB_SPEED_LOW:
case USB_SPEED_FULL:
Expand Down
11 changes: 10 additions & 1 deletion include/linux/usb/ch9.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
#ifndef __LINUX_USB_CH9_H
#define __LINUX_USB_CH9_H

#include <linux/device.h>
#include <uapi/linux/usb/ch9.h>


/**
* usb_speed_string() - Returns human readable-name of the speed.
* @speed: The speed to return human-readable name for. If it's not
Expand All @@ -43,6 +43,15 @@
*/
extern const char *usb_speed_string(enum usb_device_speed speed);

/**
* usb_get_maximum_speed - Get maximum requested speed for a given USB
* controller.
* @dev: Pointer to the given USB controller device
*
* The function gets the maximum speed string from property "maximum-speed",
* and returns the corresponding enum usb_device_speed.
*/
extern enum usb_device_speed usb_get_maximum_speed(struct device *dev);

/**
* usb_state_string - Returns human readable name for the state.
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 @@ -13,7 +13,6 @@

#if IS_ENABLED(CONFIG_OF)
enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np);
enum usb_device_speed of_usb_get_maximum_speed(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);
Expand All @@ -23,11 +22,6 @@ static inline enum usb_dr_mode of_usb_get_dr_mode(struct device_node *np)
return USB_DR_MODE_UNKNOWN;
}

static inline enum usb_device_speed
of_usb_get_maximum_speed(struct device_node *np)
{
return USB_SPEED_UNKNOWN;
}
static inline bool of_usb_host_tpl_support(struct device_node *np)
{
return false;
Expand Down

0 comments on commit 63863b9

Please sign in to comment.