diff mbox series

xhci-pci: Allow host runtime PM as default for Intel Maple Ridge xHCI

Message ID 20201105110031.8691-1-mika.westerberg@linux.intel.com
State New
Headers show
Series xhci-pci: Allow host runtime PM as default for Intel Maple Ridge xHCI | expand

Commit Message

Mika Westerberg Nov. 5, 2020, 11 a.m. UTC
Intel Maple Ridge is successor of Titan Ridge Thunderbolt controller. As
Titan Ridge this one also includes xHCI host controller. In order to
safe energy we should put it to low power state by default when idle.
For this reason allow host runtime PM for Maple Ridge.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
 drivers/usb/host/xhci-pci.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Felipe Balbi Nov. 5, 2020, 11:37 a.m. UTC | #1
Hi,

Mika Westerberg <mika.westerberg@linux.intel.com> writes:
> Intel Maple Ridge is successor of Titan Ridge Thunderbolt controller. As

> Titan Ridge this one also includes xHCI host controller. In order to

> safe energy we should put it to low power state by default when idle.

  ^^^^
  save

> For this reason allow host runtime PM for Maple Ridge.

>

> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>

> ---

>  drivers/usb/host/xhci-pci.c | 4 +++-

>  1 file changed, 3 insertions(+), 1 deletion(-)

>

> diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c

> index bf89172c43ca..d17e463087df 100644

> --- a/drivers/usb/host/xhci-pci.c

> +++ b/drivers/usb/host/xhci-pci.c

> @@ -55,6 +55,7 @@

>  #define PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI		0x8a13

>  #define PCI_DEVICE_ID_INTEL_CML_XHCI			0xa3af

>  #define PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI		0x9a13

> +#define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI		0x1138

>  

>  #define PCI_DEVICE_ID_AMD_PROMONTORYA_4			0x43b9

>  #define PCI_DEVICE_ID_AMD_PROMONTORYA_3			0x43ba

> @@ -238,7 +239,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)

>  	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_XHCI ||

>  	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_XHCI ||

>  	     pdev->device == PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI ||

> -	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI))

> +	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI ||

> +	     pdev->device == PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI))

>  		xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;


the ever growing list of quirks to *allow* PM :-) Perhaps the logic
should be inverted here and call a quirk to something that *can't*
handle PM?

-- 
balbi
Mika Westerberg Nov. 5, 2020, 11:50 a.m. UTC | #2
On Thu, Nov 05, 2020 at 01:37:10PM +0200, Felipe Balbi wrote:
> 

> Hi,

> 

> Mika Westerberg <mika.westerberg@linux.intel.com> writes:

> > Intel Maple Ridge is successor of Titan Ridge Thunderbolt controller. As

> > Titan Ridge this one also includes xHCI host controller. In order to

> > safe energy we should put it to low power state by default when idle.

>   ^^^^

>   save


Indeed, thanks.

> > For this reason allow host runtime PM for Maple Ridge.

> >

> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>

> > ---

> >  drivers/usb/host/xhci-pci.c | 4 +++-

> >  1 file changed, 3 insertions(+), 1 deletion(-)

> >

> > diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c

> > index bf89172c43ca..d17e463087df 100644

> > --- a/drivers/usb/host/xhci-pci.c

> > +++ b/drivers/usb/host/xhci-pci.c

> > @@ -55,6 +55,7 @@

> >  #define PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI		0x8a13

> >  #define PCI_DEVICE_ID_INTEL_CML_XHCI			0xa3af

> >  #define PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI		0x9a13

> > +#define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI		0x1138

> >  

> >  #define PCI_DEVICE_ID_AMD_PROMONTORYA_4			0x43b9

> >  #define PCI_DEVICE_ID_AMD_PROMONTORYA_3			0x43ba

> > @@ -238,7 +239,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)

> >  	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_XHCI ||

> >  	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_XHCI ||

> >  	     pdev->device == PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI ||

> > -	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI))

> > +	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI ||

> > +	     pdev->device == PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI))

> >  		xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;

> 

> the ever growing list of quirks to *allow* PM :-) Perhaps the logic

> should be inverted here and call a quirk to something that *can't*

> handle PM?


I'm not a xHCI expert but I would expect that list to be even longer ;-)
Mathias Nyman Nov. 5, 2020, 11:57 a.m. UTC | #3
On 5.11.2020 13.50, Mika Westerberg wrote:
> On Thu, Nov 05, 2020 at 01:37:10PM +0200, Felipe Balbi wrote:

>>

>> Hi,

>>

>> Mika Westerberg <mika.westerberg@linux.intel.com> writes:

>>> Intel Maple Ridge is successor of Titan Ridge Thunderbolt controller. As

>>> Titan Ridge this one also includes xHCI host controller. In order to

>>> safe energy we should put it to low power state by default when idle.

>>   ^^^^

>>   save


I'll fix that while applying

> 

> Indeed, thanks.

> 

>>> For this reason allow host runtime PM for Maple Ridge.

>>>

>>> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>

>>> ---

>>>  drivers/usb/host/xhci-pci.c | 4 +++-

>>>  1 file changed, 3 insertions(+), 1 deletion(-)

>>>

>>> diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c

>>> index bf89172c43ca..d17e463087df 100644

>>> --- a/drivers/usb/host/xhci-pci.c

>>> +++ b/drivers/usb/host/xhci-pci.c

>>> @@ -55,6 +55,7 @@

>>>  #define PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI		0x8a13

>>>  #define PCI_DEVICE_ID_INTEL_CML_XHCI			0xa3af

>>>  #define PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI		0x9a13

>>> +#define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI		0x1138

>>>  

>>>  #define PCI_DEVICE_ID_AMD_PROMONTORYA_4			0x43b9

>>>  #define PCI_DEVICE_ID_AMD_PROMONTORYA_3			0x43ba

>>> @@ -238,7 +239,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)

>>>  	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_XHCI ||

>>>  	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_XHCI ||

>>>  	     pdev->device == PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI ||

>>> -	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI))

>>> +	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI ||

>>> +	     pdev->device == PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI))

>>>  		xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;

>>

>> the ever growing list of quirks to *allow* PM :-) Perhaps the logic

>> should be inverted here and call a quirk to something that *can't*

>> handle PM?

> 

> I'm not a xHCI expert but I would expect that list to be even longer ;-)

> 


Yes, in the long run either way isn't really an optimal solution, but for now, until we
figure out a better way this will have to do.

-Mathias
diff mbox series

Patch

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index bf89172c43ca..d17e463087df 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -55,6 +55,7 @@ 
 #define PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI		0x8a13
 #define PCI_DEVICE_ID_INTEL_CML_XHCI			0xa3af
 #define PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI		0x9a13
+#define PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI		0x1138
 
 #define PCI_DEVICE_ID_AMD_PROMONTORYA_4			0x43b9
 #define PCI_DEVICE_ID_AMD_PROMONTORYA_3			0x43ba
@@ -238,7 +239,8 @@  static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
 	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_XHCI ||
 	     pdev->device == PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_XHCI ||
 	     pdev->device == PCI_DEVICE_ID_INTEL_ICE_LAKE_XHCI ||
-	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI))
+	     pdev->device == PCI_DEVICE_ID_INTEL_TIGER_LAKE_XHCI ||
+	     pdev->device == PCI_DEVICE_ID_INTEL_MAPLE_RIDGE_XHCI))
 		xhci->quirks |= XHCI_DEFAULT_PM_RUNTIME_ALLOW;
 
 	if (pdev->vendor == PCI_VENDOR_ID_ETRON &&