@@ -5956,3 +5956,39 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b1, aspm_l1_acceptable_latency
5956
5956
DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x56c0 , aspm_l1_acceptable_latency );
5957
5957
DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x56c1 , aspm_l1_acceptable_latency );
5958
5958
#endif
5959
+
5960
+ #ifdef CONFIG_PCIE_DPC
5961
+ /*
5962
+ * Intel Tiger Lake and Alder Lake BIOS has a bug that clears the DPC
5963
+ * RP PIO Log Size of the integrated Thunderbolt PCIe Root Ports.
5964
+ */
5965
+ static void dpc_log_size (struct pci_dev * dev )
5966
+ {
5967
+ u16 dpc , val ;
5968
+
5969
+ dpc = pci_find_ext_capability (dev , PCI_EXT_CAP_ID_DPC );
5970
+ if (!dpc )
5971
+ return ;
5972
+
5973
+ pci_read_config_word (dev , dpc + PCI_EXP_DPC_CAP , & val );
5974
+ if (!(val & PCI_EXP_DPC_CAP_RP_EXT ))
5975
+ return ;
5976
+
5977
+ if (!((val & PCI_EXP_DPC_RP_PIO_LOG_SIZE ) >> 8 )) {
5978
+ pci_info (dev , "Overriding RP PIO Log Size to 4\n" );
5979
+ dev -> dpc_rp_log_size = 4 ;
5980
+ }
5981
+ }
5982
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x461f , dpc_log_size );
5983
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x462f , dpc_log_size );
5984
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x463f , dpc_log_size );
5985
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x466e , dpc_log_size );
5986
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a23 , dpc_log_size );
5987
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a25 , dpc_log_size );
5988
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a27 , dpc_log_size );
5989
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a29 , dpc_log_size );
5990
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a2b , dpc_log_size );
5991
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a2d , dpc_log_size );
5992
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a2f , dpc_log_size );
5993
+ DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_INTEL , 0x9a31 , dpc_log_size );
5994
+ #endif
0 commit comments