Commit c84d364f authored by Felipe Balbi's avatar Felipe Balbi

usb: xceiv: nop: let it work as USB2 and USB3 phy

We add a platform_data to pass the desired mode
for the nop-xceiv so it can work on USB2 and USB3
modes.
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 78c289f8
...@@ -95,7 +95,9 @@ static int nop_set_host(struct usb_otg *otg, struct usb_bus *host) ...@@ -95,7 +95,9 @@ static int nop_set_host(struct usb_otg *otg, struct usb_bus *host)
static int __devinit nop_usb_xceiv_probe(struct platform_device *pdev) static int __devinit nop_usb_xceiv_probe(struct platform_device *pdev)
{ {
struct nop_usb_xceiv_platform_data *pdata = pdev->dev.platform_data;
struct nop_usb_xceiv *nop; struct nop_usb_xceiv *nop;
enum usb_phy_type type = USB_PHY_TYPE_USB2;
int err; int err;
nop = kzalloc(sizeof *nop, GFP_KERNEL); nop = kzalloc(sizeof *nop, GFP_KERNEL);
...@@ -108,6 +110,9 @@ static int __devinit nop_usb_xceiv_probe(struct platform_device *pdev) ...@@ -108,6 +110,9 @@ static int __devinit nop_usb_xceiv_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
} }
if (pdata)
type = pdata->type;
nop->dev = &pdev->dev; nop->dev = &pdev->dev;
nop->phy.dev = nop->dev; nop->phy.dev = nop->dev;
nop->phy.label = "nop-xceiv"; nop->phy.label = "nop-xceiv";
...@@ -118,7 +123,7 @@ static int __devinit nop_usb_xceiv_probe(struct platform_device *pdev) ...@@ -118,7 +123,7 @@ static int __devinit nop_usb_xceiv_probe(struct platform_device *pdev)
nop->phy.otg->set_host = nop_set_host; nop->phy.otg->set_host = nop_set_host;
nop->phy.otg->set_peripheral = nop_set_peripheral; nop->phy.otg->set_peripheral = nop_set_peripheral;
err = usb_add_phy(&nop->phy, USB_PHY_TYPE_USB2); err = usb_add_phy(&nop->phy, type);
if (err) { if (err) {
dev_err(&pdev->dev, "can't register transceiver, err: %d\n", dev_err(&pdev->dev, "can't register transceiver, err: %d\n",
err); err);
......
#ifndef __LINUX_USB_NOP_XCEIV_H #ifndef __LINUX_USB_NOP_XCEIV_H
#define __LINUX_USB_NOP_XCEIV_H #define __LINUX_USB_NOP_XCEIV_H
#include <linux/usb/otg.h>
struct nop_usb_xceiv_platform_data {
enum usb_phy_type type;
};
#if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE)) #if defined(CONFIG_NOP_USB_XCEIV) || (defined(CONFIG_NOP_USB_XCEIV_MODULE) && defined(MODULE))
/* sometimes transceivers are accessed only through e.g. ULPI */ /* sometimes transceivers are accessed only through e.g. ULPI */
extern void usb_nop_xceiv_register(void); extern void usb_nop_xceiv_register(void);
......
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