From: Matthias Kaehlcke <mka@chromium.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Alan Stern <stern@rowland.harvard.edu>,
Rob Herring <robh+dt@kernel.org>,
Frank Rowand <frowand.list@gmail.com>,
Mathias Nyman <mathias.nyman@intel.com>,
Felipe Balbi <balbi@kernel.org>
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
Douglas Anderson <dianders@chromium.org>,
Michal Simek <michal.simek@xilinx.com>,
linux-usb@vger.kernel.org,
Ravi Chandra Sadineni <ravisadineni@chromium.org>,
Roger Quadros <rogerq@kernel.org>,
Bastien Nocera <hadess@hadess.net>,
Peter Chen <peter.chen@kernel.org>,
Stephen Boyd <swboyd@chromium.org>,
Krzysztof Kozlowski <krzk@kernel.org>,
Matthias Kaehlcke <mka@chromium.org>,
Bhuvanesh Surachari <Bhuvanesh_Surachari@mentor.com>,
Dan Carpenter <dan.carpenter@oracle.com>,
Kai-Heng Feng <kai.heng.feng@canonical.com>,
Mathias Nyman <mathias.nyman@linux.intel.com>,
Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Subject: [PATCH v24 4/4] usb: core: hub: Create platform devices for onboard hubs in hub_probe()
Date: Thu, 30 Jun 2022 12:35:30 -0700 [thread overview]
Message-ID: <20220630123445.v24.4.Ic9dd36078f9d803de82ca01a6700c58b8e4de27e@changeid> (raw)
In-Reply-To: <20220630193530.2608178-1-mka@chromium.org>
Call onboard_hub_create/destroy_pdevs() from hub_probe/disconnect()
to create/destroy platform devices for onboard USB hubs that may be
connected to the hub. The onboard hubs must have nodes in the
device tree.
onboard_hub_create/destroy_pdevs() are NOPs unless
CONFIG_USB_ONBOARD_HUB=y/m.
Also add a field to struct usb_hub to keep track of the onboard hub
platform devices that are owned by the hub.
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
---
Changes in v24:
- none
Changes in v23:
- added Doug's 'Reviewed-by' tag
Changes in v22:
- patch added to the series (moved creation/deletion from HCD)
drivers/usb/core/hub.c | 9 ++++++++-
drivers/usb/core/hub.h | 1 +
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 68e9121c1878..8055130ee602 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -23,6 +23,7 @@
#include <linux/usb.h>
#include <linux/usbdevice_fs.h>
#include <linux/usb/hcd.h>
+#include <linux/usb/onboard_hub.h>
#include <linux/usb/otg.h>
#include <linux/usb/quirks.h>
#include <linux/workqueue.h>
@@ -1752,6 +1753,8 @@ static void hub_disconnect(struct usb_interface *intf)
if (hub->quirk_disable_autosuspend)
usb_autopm_put_interface(intf);
+ onboard_hub_destroy_pdevs(&hub->onboard_hub_devs);
+
kref_put(&hub->kref, hub_release);
}
@@ -1869,6 +1872,7 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
INIT_DELAYED_WORK(&hub->leds, led_work);
INIT_DELAYED_WORK(&hub->init_work, NULL);
INIT_WORK(&hub->events, hub_event);
+ INIT_LIST_HEAD(&hub->onboard_hub_devs);
spin_lock_init(&hub->irq_urb_lock);
timer_setup(&hub->irq_urb_retry, hub_retry_irq_urb, 0);
usb_get_intf(intf);
@@ -1889,8 +1893,11 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)
usb_autopm_get_interface_no_resume(intf);
}
- if (hub_configure(hub, &desc->endpoint[0].desc) >= 0)
+ if (hub_configure(hub, &desc->endpoint[0].desc) >= 0) {
+ onboard_hub_create_pdevs(hdev, &hub->onboard_hub_devs);
+
return 0;
+ }
hub_disconnect(intf);
return -ENODEV;
diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h
index 22ea1f4f2d66..ccf90052d12a 100644
--- a/drivers/usb/core/hub.h
+++ b/drivers/usb/core/hub.h
@@ -73,6 +73,7 @@ struct usb_hub {
spinlock_t irq_urb_lock;
struct timer_list irq_urb_retry;
struct usb_port **ports;
+ struct list_head onboard_hub_devs;
};
/**
--
2.37.0.rc0.161.g10f37bed90-goog
prev parent reply other threads:[~2022-06-30 19:35 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-30 19:35 [PATCH v24 0/4] usb: misc: Add onboard_usb_hub driver Matthias Kaehlcke
2022-06-30 19:35 ` [PATCH v24 1/4] of/platform: Add stubs for of_platform_device_create/destroy() Matthias Kaehlcke
2022-06-30 19:35 ` [PATCH v24 2/4] dt-bindings: usb: rts5411: Rename property 'companion-hub' to 'peer-hub' Matthias Kaehlcke
2022-06-30 23:15 ` Doug Anderson
2022-07-01 20:16 ` Rob Herring
2022-06-30 19:35 ` [PATCH v24 3/4] usb: misc: Add onboard_usb_hub driver Matthias Kaehlcke
2022-06-30 23:15 ` Doug Anderson
2022-06-30 19:35 ` Matthias Kaehlcke [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220630123445.v24.4.Ic9dd36078f9d803de82ca01a6700c58b8e4de27e@changeid \
--to=mka@chromium.org \
--cc=Bhuvanesh_Surachari@mentor.com \
--cc=balbi@kernel.org \
--cc=dan.carpenter@oracle.com \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=frowand.list@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hadess@hadess.net \
--cc=kai.heng.feng@canonical.com \
--cc=krzk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mailhol.vincent@wanadoo.fr \
--cc=mathias.nyman@intel.com \
--cc=mathias.nyman@linux.intel.com \
--cc=michal.simek@xilinx.com \
--cc=peter.chen@kernel.org \
--cc=ravisadineni@chromium.org \
--cc=robh+dt@kernel.org \
--cc=rogerq@kernel.org \
--cc=stern@rowland.harvard.edu \
--cc=swboyd@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).