Commit 3cc7e7b7 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by Greg Kroah-Hartman

USB: bcma: initialize Northstar USB 3.0 controller

It's a rather simple controller, we just need to make sure USB is
powered (using GPIO pin) and reset bus core. Once this is done it's
safe to register XHCI controller and let it init PHY and do its magic.
Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a094760b
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_gpio.h> #include <linux/of_gpio.h>
#include <linux/of_platform.h>
#include <linux/usb/ehci_pdriver.h> #include <linux/usb/ehci_pdriver.h>
#include <linux/usb/ohci_pdriver.h> #include <linux/usb/ohci_pdriver.h>
...@@ -338,6 +339,18 @@ static int bcma_hcd_usb20_init(struct bcma_hcd_device *usb_dev) ...@@ -338,6 +339,18 @@ static int bcma_hcd_usb20_init(struct bcma_hcd_device *usb_dev)
return err; return err;
} }
static int bcma_hcd_usb30_init(struct bcma_hcd_device *bcma_hcd)
{
struct bcma_device *core = bcma_hcd->core;
struct device *dev = &core->dev;
bcma_core_enable(core, 0);
of_platform_default_populate(dev->of_node, NULL, dev);
return 0;
}
static int bcma_hcd_probe(struct bcma_device *core) static int bcma_hcd_probe(struct bcma_device *core)
{ {
int err; int err;
...@@ -362,6 +375,11 @@ static int bcma_hcd_probe(struct bcma_device *core) ...@@ -362,6 +375,11 @@ static int bcma_hcd_probe(struct bcma_device *core)
if (err) if (err)
return err; return err;
break; break;
case BCMA_CORE_NS_USB30:
err = bcma_hcd_usb30_init(usb_dev);
if (err)
return err;
break;
default: default:
return -ENODEV; return -ENODEV;
} }
...@@ -416,6 +434,7 @@ static int bcma_hcd_resume(struct bcma_device *dev) ...@@ -416,6 +434,7 @@ static int bcma_hcd_resume(struct bcma_device *dev)
static const struct bcma_device_id bcma_hcd_table[] = { static const struct bcma_device_id bcma_hcd_table[] = {
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_USB20_HOST, BCMA_ANY_REV, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_USB20_HOST, BCMA_ANY_REV, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_NS_USB20, BCMA_ANY_REV, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_NS_USB20, BCMA_ANY_REV, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_NS_USB30, BCMA_ANY_REV, BCMA_ANY_CLASS),
{}, {},
}; };
MODULE_DEVICE_TABLE(bcma, bcma_hcd_table); MODULE_DEVICE_TABLE(bcma, bcma_hcd_table);
......
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