12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- From 3cc7e7b7872ebd0f200b5450f5471bc3700de141 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
- Date: Fri, 8 Jul 2016 14:02:50 +0200
- Subject: [PATCH] USB: bcma: initialize Northstar USB 3.0 controller
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- 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: Rafał Miłecki <zajec5@gmail.com>
- Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- ---
- drivers/usb/host/bcma-hcd.c | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
- --- a/drivers/usb/host/bcma-hcd.c
- +++ b/drivers/usb/host/bcma-hcd.c
- @@ -27,6 +27,7 @@
- #include <linux/slab.h>
- #include <linux/of.h>
- #include <linux/of_gpio.h>
- +#include <linux/of_platform.h>
- #include <linux/usb/ehci_pdriver.h>
- #include <linux/usb/ohci_pdriver.h>
-
- @@ -338,6 +339,18 @@ err_unregister_ohci_dev:
- 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)
- {
- int err;
- @@ -362,6 +375,11 @@ static int bcma_hcd_probe(struct bcma_de
- if (err)
- return err;
- break;
- + case BCMA_CORE_NS_USB30:
- + err = bcma_hcd_usb30_init(usb_dev);
- + if (err)
- + return err;
- + break;
- default:
- return -ENODEV;
- }
- @@ -416,6 +434,7 @@ static int bcma_hcd_resume(struct bcma_d
- 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_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);
|