Thread (22 messages) 22 messages, 5 authors, 2017-02-10

[PATCH v12 3/9] usb: separate out sysdev pointer from usb_bus

From: Vivek Gautam <hidden>
Date: 2017-02-09 06:20:53
Also in: linux-devicetree, linux-pm, lkml

Hi,

On Mon, Feb 6, 2017 at 2:43 PM, Peter Chen [off-list ref] wrote:
From: Arnd Bergmann <arnd@arndb.de>

For xhci-hcd platform device, all the DMA parameters are not
configured properly, notably dma ops for dwc3 devices.

The idea here is that you pass in the parent of_node along with
the child device pointer, so it would behave exactly like the
parent already does. The difference is that it also handles all
the other attributes besides the mask.

sysdev will represent the physical device, as seen from firmware
or bus.Splitting the usb_bus->controller field into the
Linux-internal device (used for the sysfs hierarchy, for printks
and for power management) and a new pointer (used for DMA,
DT enumeration and phy lookup) probably covers all that we really
need.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sriram Dash <redacted>
Tested-by: Baolin Wang <redacted>
Tested-by: Brian Norris <briannorris@chromium.org>
Tested-by: Alexander Sverdlin <redacted>
Tested-by: Vivek Gautam <redacted>
Signed-off-by: Mathias Nyman <redacted>
Cc: Felipe Balbi <redacted>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Sinjan Kumar <redacted>
Cc: David Fisher <redacted>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: "Thang Q. Nguyen" <redacted>
Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Cc: Stephen Boyd <redacted>
Cc: Bjorn Andersson <redacted>
Cc: Ming Lei <tom.leiming@gmail.com>
Cc: Jon Masters <redacted>
Cc: Dann Frazier <redacted>
Cc: Peter Chen <redacted>
Cc: Leo Li <redacted>
---
 drivers/usb/core/buffer.c | 12 ++++++------
 drivers/usb/core/hcd.c    | 48 ++++++++++++++++++++++++++++-------------------
 drivers/usb/core/usb.c    | 18 +++++++++---------
 include/linux/usb.h       |  1 +
 include/linux/usb/hcd.h   |  3 +++
 5 files changed, 48 insertions(+), 34 deletions(-)
[snip]
quoted hunk ↗ jump to hunk
@@ -2511,8 +2512,8 @@ static void init_giveback_urb_bh(struct giveback_urb_bh *bh)
  * Return: On success, a pointer to the created and initialized HCD structure.
  * On failure (e.g. if memory is unavailable), %NULL.
  */
sorry for the noise, but a minor nit here.
The comments section above explains usb_create_shared_hcd() method
and so should be moved down to its place.
quoted hunk ↗ jump to hunk
-struct usb_hcd *usb_create_shared_hcd(const struct hc_driver *driver,
-               struct device *dev, const char *bus_name,
+struct usb_hcd *__usb_create_hcd(const struct hc_driver *driver,
+               struct device *sysdev, struct device *dev, const char *bus_name,
                struct usb_hcd *primary_hcd)
 {
        struct usb_hcd *hcd;
@@ -2553,8 +2554,9 @@ struct usb_hcd *usb_create_shared_hcd(const struct hc_driver *driver,

        usb_bus_init(&hcd->self);
        hcd->self.controller = dev;
+       hcd->self.sysdev = sysdev;
        hcd->self.bus_name = bus_name;
-       hcd->self.uses_dma = (dev->dma_mask != NULL);
+       hcd->self.uses_dma = (sysdev->dma_mask != NULL);

        init_timer(&hcd->rh_timer);
        hcd->rh_timer.function = rh_timer_func;
@@ -2569,6 +2571,14 @@ struct usb_hcd *usb_create_shared_hcd(const struct hc_driver *driver,
                        "USB Host Controller";
        return hcd;
 }
+EXPORT_SYMBOL_GPL(__usb_create_hcd);
+
+struct usb_hcd *usb_create_shared_hcd(const struct hc_driver *driver,
+               struct device *dev, const char *bus_name,
+               struct usb_hcd *primary_hcd)
+{
+       return __usb_create_hcd(driver, dev, dev, bus_name, primary_hcd);
+}
 EXPORT_SYMBOL_GPL(usb_create_shared_hcd);

Regards
Vivek

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help