mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3] usb: xhci-pci: Add TUSB73x0 definitions
@ 2026-10-09 12:51 Fabio Estevam
  2026-10-09 15:30 ` Bjorn Helgaas
  2026-10-11  6:32 ` Michal Pecio
  0 siblings, 2 replies; 3+ messages in thread
From: Fabio Estevam @ 2026-10-09 12:51 UTC (permalink / raw)
  To: mathias.nyman
  Cc: gregkh, bhelgaas, linux-usb, linux-kernel, linux-pci, Fabio Estevam

Instead of hard-coding the TUSB73X0 PCI ID, USB_CTRL register address
and the PWRON_POLARITY, introduce definitions for them to make the code
easier to read.

No functional change.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
Changes since v2:
- Move the TUSB73x0 PCI device ID to the shared PCI ID header and use it
  in pci-quirks.c too, as suggested by Sashiko.

Changes since v1:
- None. Only sent it as a standalone patch instead of part
  of a series.

 drivers/usb/host/pci-quirks.c | 3 ++-
 drivers/usb/host/xhci-pci.c   | 9 +++++++--
 include/linux/pci_ids.h       | 1 +
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index ba158d63bb8b..f670e7aab984 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -1189,7 +1189,8 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
 	val = readl(base + ext_cap_offset);
 
 	/* Auto handoff never worked for these devices. Force it and continue */
-	if ((pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) ||
+	if ((pdev->vendor == PCI_VENDOR_ID_TI &&
+	     pdev->device == PCI_DEVICE_ID_TI_TUSB73X0) ||
 			(pdev->vendor == PCI_VENDOR_ID_RENESAS
 			 && pdev->device == 0x0014)) {
 		val = (val | XHCI_HC_OS_OWNED) & ~XHCI_HC_BIOS_OWNED;
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index a8889081ae82..54b76e2bddd2 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -28,6 +28,9 @@
 #define SPARSE_DISABLE_BIT	17
 #define SPARSE_CNTL_ENABLE	0xC12C
 
+#define TUSB73X0_USB_CTRL			0xe0
+#define TUSB73X0_PWRON_POLARITY			BIT(22)
+
 /* Device for a quirk */
 #define PCI_VENDOR_ID_FRESCO_LOGIC		0x1b73
 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK		0x1000
@@ -479,7 +482,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
 	    pdev->device == PCI_DEVICE_ID_ASMEDIA_3042_XHCI)
 		xhci->quirks |= XHCI_RESET_ON_RESUME;
 
-	if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241)
+	if (pdev->vendor == PCI_VENDOR_ID_TI &&
+	    pdev->device == PCI_DEVICE_ID_TI_TUSB73X0)
 		xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7;
 
 	if ((pdev->vendor == PCI_VENDOR_ID_BROADCOM ||
@@ -678,7 +682,8 @@ int xhci_pci_common_probe(struct pci_dev *dev, const struct pci_device_id *id)
 	dma_set_max_seg_size(&dev->dev, UINT_MAX);
 
 	if (device_property_read_bool(&dev->dev, "ti,pwron-active-high"))
-		pci_clear_and_set_config_dword(dev, 0xE0, 0, 1 << 22);
+		pci_clear_and_set_config_dword(dev, TUSB73X0_USB_CTRL, 0,
+					       TUSB73X0_PWRON_POLARITY);
 
 	return 0;
 
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 0693e4532a68..030c86dd6d67 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -889,6 +889,7 @@
 #define PCI_DEVICE_ID_TI_XX12		0x8039
 #define PCI_DEVICE_ID_TI_XX12_FM	0x803b
 #define PCI_DEVICE_ID_TI_XIO2000A	0x8231
+#define PCI_DEVICE_ID_TI_TUSB73X0	0x8241
 #define PCI_DEVICE_ID_TI_1130		0xac12
 #define PCI_DEVICE_ID_TI_1031		0xac13
 #define PCI_DEVICE_ID_TI_1131		0xac15
-- 
2.43.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v3] usb: xhci-pci: Add TUSB73x0 definitions
  2026-10-09 12:51 [PATCH v3] usb: xhci-pci: Add TUSB73x0 definitions Fabio Estevam
@ 2026-10-09 15:30 ` Bjorn Helgaas
  2026-10-11  6:32 ` Michal Pecio
  1 sibling, 0 replies; 3+ messages in thread
From: Bjorn Helgaas @ 2026-10-09 15:30 UTC (permalink / raw)
  To: Fabio Estevam
  Cc: mathias.nyman, gregkh, bhelgaas, linux-usb, linux-kernel, linux-pci

On Fri, Oct 09, 2026 at 09:51:54AM -0300, Fabio Estevam wrote:
> Instead of hard-coding the TUSB73X0 PCI ID, USB_CTRL register address
> and the PWRON_POLARITY, introduce definitions for them to make the code
> easier to read.
> 
> No functional change.
> 
> Signed-off-by: Fabio Estevam <festevam@gmail.com>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>	# pci_ids.h

> ---
> Changes since v2:
> - Move the TUSB73x0 PCI device ID to the shared PCI ID header and use it
>   in pci-quirks.c too, as suggested by Sashiko.
> 
> Changes since v1:
> - None. Only sent it as a standalone patch instead of part
>   of a series.
> 
>  drivers/usb/host/pci-quirks.c | 3 ++-
>  drivers/usb/host/xhci-pci.c   | 9 +++++++--
>  include/linux/pci_ids.h       | 1 +
>  3 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> index ba158d63bb8b..f670e7aab984 100644
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -1189,7 +1189,8 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
>  	val = readl(base + ext_cap_offset);
>  
>  	/* Auto handoff never worked for these devices. Force it and continue */
> -	if ((pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) ||
> +	if ((pdev->vendor == PCI_VENDOR_ID_TI &&
> +	     pdev->device == PCI_DEVICE_ID_TI_TUSB73X0) ||
>  			(pdev->vendor == PCI_VENDOR_ID_RENESAS
>  			 && pdev->device == 0x0014)) {
>  		val = (val | XHCI_HC_OS_OWNED) & ~XHCI_HC_BIOS_OWNED;
> diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
> index a8889081ae82..54b76e2bddd2 100644
> --- a/drivers/usb/host/xhci-pci.c
> +++ b/drivers/usb/host/xhci-pci.c
> @@ -28,6 +28,9 @@
>  #define SPARSE_DISABLE_BIT	17
>  #define SPARSE_CNTL_ENABLE	0xC12C
>  
> +#define TUSB73X0_USB_CTRL			0xe0
> +#define TUSB73X0_PWRON_POLARITY			BIT(22)
> +
>  /* Device for a quirk */
>  #define PCI_VENDOR_ID_FRESCO_LOGIC		0x1b73
>  #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK		0x1000
> @@ -479,7 +482,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
>  	    pdev->device == PCI_DEVICE_ID_ASMEDIA_3042_XHCI)
>  		xhci->quirks |= XHCI_RESET_ON_RESUME;
>  
> -	if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241)
> +	if (pdev->vendor == PCI_VENDOR_ID_TI &&
> +	    pdev->device == PCI_DEVICE_ID_TI_TUSB73X0)
>  		xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7;
>  
>  	if ((pdev->vendor == PCI_VENDOR_ID_BROADCOM ||
> @@ -678,7 +682,8 @@ int xhci_pci_common_probe(struct pci_dev *dev, const struct pci_device_id *id)
>  	dma_set_max_seg_size(&dev->dev, UINT_MAX);
>  
>  	if (device_property_read_bool(&dev->dev, "ti,pwron-active-high"))
> -		pci_clear_and_set_config_dword(dev, 0xE0, 0, 1 << 22);
> +		pci_clear_and_set_config_dword(dev, TUSB73X0_USB_CTRL, 0,
> +					       TUSB73X0_PWRON_POLARITY);
>  
>  	return 0;
>  
> diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
> index 0693e4532a68..030c86dd6d67 100644
> --- a/include/linux/pci_ids.h
> +++ b/include/linux/pci_ids.h
> @@ -889,6 +889,7 @@
>  #define PCI_DEVICE_ID_TI_XX12		0x8039
>  #define PCI_DEVICE_ID_TI_XX12_FM	0x803b
>  #define PCI_DEVICE_ID_TI_XIO2000A	0x8231
> +#define PCI_DEVICE_ID_TI_TUSB73X0	0x8241
>  #define PCI_DEVICE_ID_TI_1130		0xac12
>  #define PCI_DEVICE_ID_TI_1031		0xac13
>  #define PCI_DEVICE_ID_TI_1131		0xac15
> -- 
> 2.43.0
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v3] usb: xhci-pci: Add TUSB73x0 definitions
  2026-10-09 12:51 [PATCH v3] usb: xhci-pci: Add TUSB73x0 definitions Fabio Estevam
  2026-10-09 15:30 ` Bjorn Helgaas
@ 2026-10-11  6:32 ` Michal Pecio
  1 sibling, 0 replies; 3+ messages in thread
From: Michal Pecio @ 2026-10-11  6:32 UTC (permalink / raw)
  To: Fabio Estevam
  Cc: mathias.nyman, gregkh, bhelgaas, linux-usb, linux-kernel,
	linux-pci, Babu Moger, Babu Moger

On Fri,  9 Oct 2026 09:51:54 -0300, Fabio Estevam wrote:
> Instead of hard-coding the TUSB73X0 PCI ID, USB_CTRL register address
> and the PWRON_POLARITY, introduce definitions for them to make the code
> easier to read.
> 
> No functional change.
> 
> Signed-off-by: Fabio Estevam <festevam@gmail.com>
> ---
> Changes since v2:
> - Move the TUSB73x0 PCI device ID to the shared PCI ID header and use it
>   in pci-quirks.c too, as suggested by Sashiko.
> 
> Changes since v1:
> - None. Only sent it as a standalone patch instead of part
>   of a series.
> 
>  drivers/usb/host/pci-quirks.c | 3 ++-
>  drivers/usb/host/xhci-pci.c   | 9 +++++++--
>  include/linux/pci_ids.h       | 1 +
>  3 files changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> index ba158d63bb8b..f670e7aab984 100644
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -1189,7 +1189,8 @@ static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
>  	val = readl(base + ext_cap_offset);
>  
>  	/* Auto handoff never worked for these devices. Force it and continue */
> -	if ((pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) ||
> +	if ((pdev->vendor == PCI_VENDOR_ID_TI &&
> +	     pdev->device == PCI_DEVICE_ID_TI_TUSB73X0) ||

You mentioned working with TUSB7340 before. Was there any board
firmware involved which made use of this chip before the OS?

I'm looking for someone who can tell whether this line should be
touched at all or deleted. It was added by c289d0eff3d5a, which
is very suspicious - it mentions "cards" (like in "PCIe expansion
cards") and adds two IDs in one go. I feel it could be a BIOS bug
affecting all cards and no problem with those chips.

[Adding the author in case he remembers what happened there.]

For example, can a PCIe card raise SMI interrupts? AFAIK it can't.
But if a BIOS thinks otherwise, and enables "SMI on OS ownership
request", it will never learn about our request, so the handoff
times out and falls into the "forced" branch. Or the BIOS may not
rely on this but poll the card, and then "forget" about polling.

Regards,
Michal

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-10-11  6:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-09 12:51 [PATCH v3] usb: xhci-pci: Add TUSB73x0 definitions Fabio Estevam
2026-10-09 15:30 ` Bjorn Helgaas
2026-10-11  6:32 ` Michal Pecio

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®