123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- From 1ab23afbfa7ae436741947c0b9bdacc434ad6153 Mon Sep 17 00:00:00 2001
- From: Patrick Rudolph <patrick.rudolph@9elements.com>
- Date: Sun, 15 Nov 2020 19:54:40 +0100
- Subject: [PATCH 18/22] grub-core/bus/usb/usbhub: Add new private fields for
- xHCI controller
- Store the root port number, the route, consisting out of the port ID
- in each nibble, and a pointer to driver private data.
- Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
- ---
- grub-core/bus/usb/usbhub.c | 11 ++++++++---
- include/grub/usb.h | 5 +++++
- 2 files changed, 13 insertions(+), 3 deletions(-)
- diff --git a/grub-core/bus/usb/usbhub.c b/grub-core/bus/usb/usbhub.c
- index 8e963e84b..b4b3a1a61 100644
- --- a/grub-core/bus/usb/usbhub.c
- +++ b/grub-core/bus/usb/usbhub.c
- @@ -49,7 +49,9 @@ static grub_usb_controller_dev_t grub_usb_list;
- static grub_usb_device_t
- grub_usb_hub_add_dev (grub_usb_controller_t controller,
- grub_usb_speed_t speed,
- - int split_hubport, int split_hubaddr)
- + int split_hubport, int split_hubaddr,
- + int root_portno,
- + grub_uint32_t route)
- {
- grub_usb_device_t dev;
- int i;
- @@ -65,6 +67,8 @@ grub_usb_hub_add_dev (grub_usb_controller_t controller,
- dev->speed = speed;
- dev->split_hubport = split_hubport;
- dev->split_hubaddr = split_hubaddr;
- + dev->root_port = root_portno;
- + dev->route = route;
-
- if (controller->dev->attach_dev) {
- err = controller->dev->attach_dev (controller, dev);
- @@ -245,7 +249,7 @@ attach_root_port (struct grub_usb_hub *hub, int portno,
- and full/low speed device connected to OHCI/UHCI needs not
- transaction translation - e.g. hubport and hubaddr should be
- always none (zero) for any device connected to any root hub. */
- - dev = grub_usb_hub_add_dev (hub->controller, speed, 0, 0);
- + dev = grub_usb_hub_add_dev (hub->controller, speed, 0, 0, portno, 0);
- hub->controller->dev->pending_reset = 0;
- npending--;
- if (! dev)
- @@ -676,7 +680,8 @@ poll_nonroot_hub (grub_usb_device_t dev)
-
- /* Add the device and assign a device address to it. */
- next_dev = grub_usb_hub_add_dev (&dev->controller, speed,
- - split_hubport, split_hubaddr);
- + split_hubport, split_hubaddr, dev->root_port,
- + dev->route << 4 | (i & 0xf));
- if (dev->controller.dev->pending_reset)
- {
- dev->controller.dev->pending_reset = 0;
- diff --git a/include/grub/usb.h b/include/grub/usb.h
- index 4dd179db2..609faf7d0 100644
- --- a/include/grub/usb.h
- +++ b/include/grub/usb.h
- @@ -237,6 +237,11 @@ struct grub_usb_device
- int split_hubport;
-
- int split_hubaddr;
- +
- + /* xHCI specific information */
- + int root_port;
- + grub_uint32_t route;
- + void *xhci_priv;
- };
-
-
- --
- 2.39.2
|