Commit 971232cf authored by Ivan T. Ivanov's avatar Ivan T. Ivanov Committed by Felipe Balbi

usb: phy: msm: Replace custom enum usb_mode_type with enum usb_dr_mode

Use enum usb_dr_mode and drop default usb_dr_mode from platform data.

USB DT bindings states: dr_mode: "...In case this attribute isn't
passed via DT, USB DRD controllers should default to OTG...",
so remove redundand field.
Signed-off-by: default avatarIvan T. Ivanov <iivanov@mm-sol.com>
Acked-by: default avatarDavid Brown <davidb@codeaurora.org>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 3aca0fa9
...@@ -95,7 +95,7 @@ static int hsusb_phy_clk_reset(struct clk *phy_clk) ...@@ -95,7 +95,7 @@ static int hsusb_phy_clk_reset(struct clk *phy_clk)
static struct msm_otg_platform_data msm_otg_pdata = { static struct msm_otg_platform_data msm_otg_pdata = {
.phy_init_seq = hsusb_phy_init_seq, .phy_init_seq = hsusb_phy_init_seq,
.mode = USB_PERIPHERAL, .mode = USB_DR_MODE_PERIPHERAL,
.otg_control = OTG_PHY_CONTROL, .otg_control = OTG_PHY_CONTROL,
.link_clk_reset = hsusb_link_clk_reset, .link_clk_reset = hsusb_link_clk_reset,
.phy_clk_reset = hsusb_phy_clk_reset, .phy_clk_reset = hsusb_phy_clk_reset,
......
...@@ -116,7 +116,7 @@ static int hsusb_phy_clk_reset(struct clk *phy_clk) ...@@ -116,7 +116,7 @@ static int hsusb_phy_clk_reset(struct clk *phy_clk)
static struct msm_otg_platform_data msm_otg_pdata = { static struct msm_otg_platform_data msm_otg_pdata = {
.phy_init_seq = hsusb_phy_init_seq, .phy_init_seq = hsusb_phy_init_seq,
.mode = USB_PERIPHERAL, .mode = USB_DR_MODE_PERIPHERAL,
.otg_control = OTG_PHY_CONTROL, .otg_control = OTG_PHY_CONTROL,
.link_clk_reset = hsusb_link_clk_reset, .link_clk_reset = hsusb_link_clk_reset,
.phy_clk_reset = hsusb_phy_clk_reset, .phy_clk_reset = hsusb_phy_clk_reset,
......
...@@ -348,10 +348,10 @@ static int msm_otg_reset(struct usb_phy *phy) ...@@ -348,10 +348,10 @@ static int msm_otg_reset(struct usb_phy *phy)
if (pdata->otg_control == OTG_PHY_CONTROL) { if (pdata->otg_control == OTG_PHY_CONTROL) {
val = readl(USB_OTGSC); val = readl(USB_OTGSC);
if (pdata->mode == USB_OTG) { if (pdata->mode == USB_DR_MODE_OTG) {
ulpi_val = ULPI_INT_IDGRD | ULPI_INT_SESS_VALID; ulpi_val = ULPI_INT_IDGRD | ULPI_INT_SESS_VALID;
val |= OTGSC_IDIE | OTGSC_BSVIE; val |= OTGSC_IDIE | OTGSC_BSVIE;
} else if (pdata->mode == USB_PERIPHERAL) { } else if (pdata->mode == USB_DR_MODE_PERIPHERAL) {
ulpi_val = ULPI_INT_SESS_VALID; ulpi_val = ULPI_INT_SESS_VALID;
val |= OTGSC_BSVIE; val |= OTGSC_BSVIE;
} }
...@@ -637,7 +637,7 @@ static int msm_otg_set_host(struct usb_otg *otg, struct usb_bus *host) ...@@ -637,7 +637,7 @@ static int msm_otg_set_host(struct usb_otg *otg, struct usb_bus *host)
* Fail host registration if this board can support * Fail host registration if this board can support
* only peripheral configuration. * only peripheral configuration.
*/ */
if (motg->pdata->mode == USB_PERIPHERAL) { if (motg->pdata->mode == USB_DR_MODE_PERIPHERAL) {
dev_info(otg->phy->dev, "Host mode is not supported\n"); dev_info(otg->phy->dev, "Host mode is not supported\n");
return -ENODEV; return -ENODEV;
} }
...@@ -666,7 +666,7 @@ static int msm_otg_set_host(struct usb_otg *otg, struct usb_bus *host) ...@@ -666,7 +666,7 @@ static int msm_otg_set_host(struct usb_otg *otg, struct usb_bus *host)
* Kick the state machine work, if peripheral is not supported * Kick the state machine work, if peripheral is not supported
* or peripheral is already registered with us. * or peripheral is already registered with us.
*/ */
if (motg->pdata->mode == USB_HOST || otg->gadget) { if (motg->pdata->mode == USB_DR_MODE_HOST || otg->gadget) {
pm_runtime_get_sync(otg->phy->dev); pm_runtime_get_sync(otg->phy->dev);
schedule_work(&motg->sm_work); schedule_work(&motg->sm_work);
} }
...@@ -710,7 +710,7 @@ static int msm_otg_set_peripheral(struct usb_otg *otg, ...@@ -710,7 +710,7 @@ static int msm_otg_set_peripheral(struct usb_otg *otg,
* Fail peripheral registration if this board can support * Fail peripheral registration if this board can support
* only host configuration. * only host configuration.
*/ */
if (motg->pdata->mode == USB_HOST) { if (motg->pdata->mode == USB_DR_MODE_HOST) {
dev_info(otg->phy->dev, "Peripheral mode is not supported\n"); dev_info(otg->phy->dev, "Peripheral mode is not supported\n");
return -ENODEV; return -ENODEV;
} }
...@@ -735,7 +735,7 @@ static int msm_otg_set_peripheral(struct usb_otg *otg, ...@@ -735,7 +735,7 @@ static int msm_otg_set_peripheral(struct usb_otg *otg,
* Kick the state machine work, if host is not supported * Kick the state machine work, if host is not supported
* or host is already registered with us. * or host is already registered with us.
*/ */
if (motg->pdata->mode == USB_PERIPHERAL || otg->host) { if (motg->pdata->mode == USB_DR_MODE_PERIPHERAL || otg->host) {
pm_runtime_get_sync(otg->phy->dev); pm_runtime_get_sync(otg->phy->dev);
schedule_work(&motg->sm_work); schedule_work(&motg->sm_work);
} }
...@@ -1056,7 +1056,7 @@ static void msm_otg_init_sm(struct msm_otg *motg) ...@@ -1056,7 +1056,7 @@ static void msm_otg_init_sm(struct msm_otg *motg)
u32 otgsc = readl(USB_OTGSC); u32 otgsc = readl(USB_OTGSC);
switch (pdata->mode) { switch (pdata->mode) {
case USB_OTG: case USB_DR_MODE_OTG:
if (pdata->otg_control == OTG_PHY_CONTROL) { if (pdata->otg_control == OTG_PHY_CONTROL) {
if (otgsc & OTGSC_ID) if (otgsc & OTGSC_ID)
set_bit(ID, &motg->inputs); set_bit(ID, &motg->inputs);
...@@ -1068,21 +1068,14 @@ static void msm_otg_init_sm(struct msm_otg *motg) ...@@ -1068,21 +1068,14 @@ static void msm_otg_init_sm(struct msm_otg *motg)
else else
clear_bit(B_SESS_VLD, &motg->inputs); clear_bit(B_SESS_VLD, &motg->inputs);
} else if (pdata->otg_control == OTG_USER_CONTROL) { } else if (pdata->otg_control == OTG_USER_CONTROL) {
if (pdata->default_mode == USB_HOST) {
clear_bit(ID, &motg->inputs);
} else if (pdata->default_mode == USB_PERIPHERAL) {
set_bit(ID, &motg->inputs);
set_bit(B_SESS_VLD, &motg->inputs);
} else {
set_bit(ID, &motg->inputs); set_bit(ID, &motg->inputs);
clear_bit(B_SESS_VLD, &motg->inputs); clear_bit(B_SESS_VLD, &motg->inputs);
}
} }
break; break;
case USB_HOST: case USB_DR_MODE_HOST:
clear_bit(ID, &motg->inputs); clear_bit(ID, &motg->inputs);
break; break;
case USB_PERIPHERAL: case USB_DR_MODE_PERIPHERAL:
set_bit(ID, &motg->inputs); set_bit(ID, &motg->inputs);
if (otgsc & OTGSC_BSV) if (otgsc & OTGSC_BSV)
set_bit(B_SESS_VLD, &motg->inputs); set_bit(B_SESS_VLD, &motg->inputs);
...@@ -1258,7 +1251,7 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf, ...@@ -1258,7 +1251,7 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf,
char buf[16]; char buf[16];
struct usb_otg *otg = motg->phy.otg; struct usb_otg *otg = motg->phy.otg;
int status = count; int status = count;
enum usb_mode_type req_mode; enum usb_dr_mode req_mode;
memset(buf, 0x00, sizeof(buf)); memset(buf, 0x00, sizeof(buf));
...@@ -1268,18 +1261,18 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf, ...@@ -1268,18 +1261,18 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf,
} }
if (!strncmp(buf, "host", 4)) { if (!strncmp(buf, "host", 4)) {
req_mode = USB_HOST; req_mode = USB_DR_MODE_HOST;
} else if (!strncmp(buf, "peripheral", 10)) { } else if (!strncmp(buf, "peripheral", 10)) {
req_mode = USB_PERIPHERAL; req_mode = USB_DR_MODE_PERIPHERAL;
} else if (!strncmp(buf, "none", 4)) { } else if (!strncmp(buf, "none", 4)) {
req_mode = USB_NONE; req_mode = USB_DR_MODE_UNKNOWN;
} else { } else {
status = -EINVAL; status = -EINVAL;
goto out; goto out;
} }
switch (req_mode) { switch (req_mode) {
case USB_NONE: case USB_DR_MODE_UNKNOWN:
switch (otg->phy->state) { switch (otg->phy->state) {
case OTG_STATE_A_HOST: case OTG_STATE_A_HOST:
case OTG_STATE_B_PERIPHERAL: case OTG_STATE_B_PERIPHERAL:
...@@ -1290,7 +1283,7 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf, ...@@ -1290,7 +1283,7 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf,
goto out; goto out;
} }
break; break;
case USB_PERIPHERAL: case USB_DR_MODE_PERIPHERAL:
switch (otg->phy->state) { switch (otg->phy->state) {
case OTG_STATE_B_IDLE: case OTG_STATE_B_IDLE:
case OTG_STATE_A_HOST: case OTG_STATE_A_HOST:
...@@ -1301,7 +1294,7 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf, ...@@ -1301,7 +1294,7 @@ static ssize_t msm_otg_mode_write(struct file *file, const char __user *ubuf,
goto out; goto out;
} }
break; break;
case USB_HOST: case USB_DR_MODE_HOST:
switch (otg->phy->state) { switch (otg->phy->state) {
case OTG_STATE_B_IDLE: case OTG_STATE_B_IDLE:
case OTG_STATE_B_PERIPHERAL: case OTG_STATE_B_PERIPHERAL:
...@@ -1511,7 +1504,7 @@ static int msm_otg_probe(struct platform_device *pdev) ...@@ -1511,7 +1504,7 @@ static int msm_otg_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, motg); platform_set_drvdata(pdev, motg);
device_init_wakeup(&pdev->dev, 1); device_init_wakeup(&pdev->dev, 1);
if (motg->pdata->mode == USB_OTG && if (motg->pdata->mode == USB_DR_MODE_OTG &&
motg->pdata->otg_control == OTG_USER_CONTROL) { motg->pdata->otg_control == OTG_USER_CONTROL) {
ret = msm_otg_debugfs_init(motg); ret = msm_otg_debugfs_init(motg);
if (ret) if (ret)
......
...@@ -22,21 +22,6 @@ ...@@ -22,21 +22,6 @@
#include <linux/usb/otg.h> #include <linux/usb/otg.h>
#include <linux/clk.h> #include <linux/clk.h>
/**
* Supported USB modes
*
* USB_PERIPHERAL Only peripheral mode is supported.
* USB_HOST Only host mode is supported.
* USB_OTG OTG mode is supported.
*
*/
enum usb_mode_type {
USB_NONE = 0,
USB_PERIPHERAL,
USB_HOST,
USB_OTG,
};
/** /**
* OTG control * OTG control
* *
...@@ -121,8 +106,6 @@ enum usb_chg_type { ...@@ -121,8 +106,6 @@ enum usb_chg_type {
* @power_budget: VBUS power budget in mA (0 will be treated as 500mA). * @power_budget: VBUS power budget in mA (0 will be treated as 500mA).
* @mode: Supported mode (OTG/peripheral/host). * @mode: Supported mode (OTG/peripheral/host).
* @otg_control: OTG switch controlled by user/Id pin * @otg_control: OTG switch controlled by user/Id pin
* @default_mode: Default operational mode. Applicable only if
* OTG switch is controller by user.
* @pclk_src_name: pclk is derived from ebi1_usb_clk in case of 7x27 and 8k * @pclk_src_name: pclk is derived from ebi1_usb_clk in case of 7x27 and 8k
* dfab_usb_hs_clk in case of 8660 and 8960. * dfab_usb_hs_clk in case of 8660 and 8960.
*/ */
...@@ -130,9 +113,8 @@ struct msm_otg_platform_data { ...@@ -130,9 +113,8 @@ struct msm_otg_platform_data {
int *phy_init_seq; int *phy_init_seq;
void (*vbus_power)(bool on); void (*vbus_power)(bool on);
unsigned power_budget; unsigned power_budget;
enum usb_mode_type mode; enum usb_dr_mode mode;
enum otg_control_type otg_control; enum otg_control_type otg_control;
enum usb_mode_type default_mode;
enum msm_usb_phy_type phy_type; enum msm_usb_phy_type phy_type;
void (*setup_gpio)(enum usb_otg_state state); void (*setup_gpio)(enum usb_otg_state state);
char *pclk_src_name; char *pclk_src_name;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment