xref: /openbmc/linux/drivers/mfd/intel-lpss-pci.c (revision 6b1e61f7)
1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
24b45efe8SAndy Shevchenko /*
34b45efe8SAndy Shevchenko  * Intel LPSS PCI support.
44b45efe8SAndy Shevchenko  *
54b45efe8SAndy Shevchenko  * Copyright (C) 2015, Intel Corporation
64b45efe8SAndy Shevchenko  *
74b45efe8SAndy Shevchenko  * Authors: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
84b45efe8SAndy Shevchenko  *          Mika Westerberg <mika.westerberg@linux.intel.com>
94b45efe8SAndy Shevchenko  */
104b45efe8SAndy Shevchenko 
114b45efe8SAndy Shevchenko #include <linux/ioport.h>
124b45efe8SAndy Shevchenko #include <linux/kernel.h>
134b45efe8SAndy Shevchenko #include <linux/module.h>
144b45efe8SAndy Shevchenko #include <linux/pci.h>
154b45efe8SAndy Shevchenko #include <linux/pm_runtime.h>
16028af594SMika Westerberg #include <linux/property.h>
17fe55d732SAndy Shevchenko #include <linux/pxa2xx_ssp.h>
184b45efe8SAndy Shevchenko 
194b45efe8SAndy Shevchenko #include "intel-lpss.h"
204b45efe8SAndy Shevchenko 
21e6b14206SHans de Goede /* Some DSDTs have an unused GEXP ACPI device conflicting with I2C4 resources */
22e6b14206SHans de Goede static const struct pci_device_id ignore_resource_conflicts_ids[] = {
23e6b14206SHans de Goede 	/* Microsoft Surface Go (version 1) I2C4 */
24e6b14206SHans de Goede 	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_INTEL, 0x9d64, 0x152d, 0x1182), },
25e6b14206SHans de Goede 	/* Microsoft Surface Go 2 I2C4 */
26e6b14206SHans de Goede 	{ PCI_DEVICE_SUB(PCI_VENDOR_ID_INTEL, 0x9d64, 0x152d, 0x1237), },
27e6b14206SHans de Goede 	{ }
28e6b14206SHans de Goede };
29e6b14206SHans de Goede 
intel_lpss_pci_probe(struct pci_dev * pdev,const struct pci_device_id * id)304b45efe8SAndy Shevchenko static int intel_lpss_pci_probe(struct pci_dev *pdev,
314b45efe8SAndy Shevchenko 				const struct pci_device_id *id)
324b45efe8SAndy Shevchenko {
334b45efe8SAndy Shevchenko 	struct intel_lpss_platform_info *info;
344b45efe8SAndy Shevchenko 	int ret;
354b45efe8SAndy Shevchenko 
364b45efe8SAndy Shevchenko 	ret = pcim_enable_device(pdev);
374b45efe8SAndy Shevchenko 	if (ret)
384b45efe8SAndy Shevchenko 		return ret;
394b45efe8SAndy Shevchenko 
404b45efe8SAndy Shevchenko 	info = devm_kmemdup(&pdev->dev, (void *)id->driver_data, sizeof(*info),
414b45efe8SAndy Shevchenko 			    GFP_KERNEL);
424b45efe8SAndy Shevchenko 	if (!info)
434b45efe8SAndy Shevchenko 		return -ENOMEM;
444b45efe8SAndy Shevchenko 
454b45efe8SAndy Shevchenko 	info->mem = &pdev->resource[0];
464b45efe8SAndy Shevchenko 	info->irq = pdev->irq;
474b45efe8SAndy Shevchenko 
48e6b14206SHans de Goede 	if (pci_match_id(ignore_resource_conflicts_ids, pdev))
49e6b14206SHans de Goede 		info->ignore_resource_conflicts = true;
50e6b14206SHans de Goede 
5176380a60SKai-Heng Feng 	pdev->d3cold_delay = 0;
5276380a60SKai-Heng Feng 
534b45efe8SAndy Shevchenko 	/* Probably it is enough to set this for iDMA capable devices only */
544b45efe8SAndy Shevchenko 	pci_set_master(pdev);
5585a9419aSAndy Shevchenko 	pci_try_set_mwi(pdev);
564b45efe8SAndy Shevchenko 
574b45efe8SAndy Shevchenko 	ret = intel_lpss_probe(&pdev->dev, info);
584b45efe8SAndy Shevchenko 	if (ret)
594b45efe8SAndy Shevchenko 		return ret;
604b45efe8SAndy Shevchenko 
614b45efe8SAndy Shevchenko 	pm_runtime_put(&pdev->dev);
624b45efe8SAndy Shevchenko 	pm_runtime_allow(&pdev->dev);
634b45efe8SAndy Shevchenko 
644b45efe8SAndy Shevchenko 	return 0;
654b45efe8SAndy Shevchenko }
664b45efe8SAndy Shevchenko 
intel_lpss_pci_remove(struct pci_dev * pdev)674b45efe8SAndy Shevchenko static void intel_lpss_pci_remove(struct pci_dev *pdev)
684b45efe8SAndy Shevchenko {
694b45efe8SAndy Shevchenko 	pm_runtime_forbid(&pdev->dev);
704b45efe8SAndy Shevchenko 	pm_runtime_get_sync(&pdev->dev);
714b45efe8SAndy Shevchenko 
724b45efe8SAndy Shevchenko 	intel_lpss_remove(&pdev->dev);
734b45efe8SAndy Shevchenko }
744b45efe8SAndy Shevchenko 
754b45efe8SAndy Shevchenko static INTEL_LPSS_PM_OPS(intel_lpss_pci_pm_ops);
764b45efe8SAndy Shevchenko 
77fe55d732SAndy Shevchenko static const struct property_entry spt_spi_properties[] = {
78fe55d732SAndy Shevchenko 	PROPERTY_ENTRY_U32("intel,spi-pxa2xx-type", LPSS_SPT_SSP),
79fe55d732SAndy Shevchenko 	{ }
80fe55d732SAndy Shevchenko };
81fe55d732SAndy Shevchenko 
82fe55d732SAndy Shevchenko static const struct software_node spt_spi_node = {
83fe55d732SAndy Shevchenko 	.properties = spt_spi_properties,
84fe55d732SAndy Shevchenko };
85fe55d732SAndy Shevchenko 
864b45efe8SAndy Shevchenko static const struct intel_lpss_platform_info spt_info = {
874b45efe8SAndy Shevchenko 	.clk_rate = 120000000,
88fe55d732SAndy Shevchenko 	.swnode = &spt_spi_node,
894b45efe8SAndy Shevchenko };
904b45efe8SAndy Shevchenko 
919677e6f7SAndy Shevchenko static const struct property_entry spt_i2c_properties[] = {
92028af594SMika Westerberg 	PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 230),
93028af594SMika Westerberg 	{ },
94028af594SMika Westerberg };
95028af594SMika Westerberg 
9603152e35SHeikki Krogerus static const struct software_node spt_i2c_node = {
9703152e35SHeikki Krogerus 	.properties = spt_i2c_properties,
9803152e35SHeikki Krogerus };
9903152e35SHeikki Krogerus 
100028af594SMika Westerberg static const struct intel_lpss_platform_info spt_i2c_info = {
101028af594SMika Westerberg 	.clk_rate = 120000000,
10203152e35SHeikki Krogerus 	.swnode = &spt_i2c_node,
103028af594SMika Westerberg };
104028af594SMika Westerberg 
1059677e6f7SAndy Shevchenko static const struct property_entry uart_properties[] = {
106ec14c539SAndy Shevchenko 	PROPERTY_ENTRY_U32("reg-io-width", 4),
107ec14c539SAndy Shevchenko 	PROPERTY_ENTRY_U32("reg-shift", 2),
108ec14c539SAndy Shevchenko 	PROPERTY_ENTRY_BOOL("snps,uart-16550-compatible"),
109ec14c539SAndy Shevchenko 	{ },
110ec14c539SAndy Shevchenko };
111ec14c539SAndy Shevchenko 
11203152e35SHeikki Krogerus static const struct software_node uart_node = {
11303152e35SHeikki Krogerus 	.properties = uart_properties,
11403152e35SHeikki Krogerus };
11503152e35SHeikki Krogerus 
1164b45efe8SAndy Shevchenko static const struct intel_lpss_platform_info spt_uart_info = {
1174b45efe8SAndy Shevchenko 	.clk_rate = 120000000,
1184b45efe8SAndy Shevchenko 	.clk_con_id = "baudclk",
11903152e35SHeikki Krogerus 	.swnode = &uart_node,
1204b45efe8SAndy Shevchenko };
1214b45efe8SAndy Shevchenko 
122fe55d732SAndy Shevchenko static const struct property_entry bxt_spi_properties[] = {
123fe55d732SAndy Shevchenko 	PROPERTY_ENTRY_U32("intel,spi-pxa2xx-type", LPSS_BXT_SSP),
124fe55d732SAndy Shevchenko 	{ }
125fe55d732SAndy Shevchenko };
126fe55d732SAndy Shevchenko 
127fe55d732SAndy Shevchenko static const struct software_node bxt_spi_node = {
128fe55d732SAndy Shevchenko 	.properties = bxt_spi_properties,
129fe55d732SAndy Shevchenko };
130fe55d732SAndy Shevchenko 
131ff0a04a6SAndy Shevchenko static const struct intel_lpss_platform_info bxt_info = {
132ff0a04a6SAndy Shevchenko 	.clk_rate = 100000000,
133fe55d732SAndy Shevchenko 	.swnode = &bxt_spi_node,
134ff0a04a6SAndy Shevchenko };
135ff0a04a6SAndy Shevchenko 
136ff0a04a6SAndy Shevchenko static const struct intel_lpss_platform_info bxt_uart_info = {
137ff0a04a6SAndy Shevchenko 	.clk_rate = 100000000,
138ff0a04a6SAndy Shevchenko 	.clk_con_id = "baudclk",
13903152e35SHeikki Krogerus 	.swnode = &uart_node,
140ff0a04a6SAndy Shevchenko };
141ff0a04a6SAndy Shevchenko 
1429677e6f7SAndy Shevchenko static const struct property_entry bxt_i2c_properties[] = {
1430343b2f4SMika Westerberg 	PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 42),
1440343b2f4SMika Westerberg 	PROPERTY_ENTRY_U32("i2c-sda-falling-time-ns", 171),
1450343b2f4SMika Westerberg 	PROPERTY_ENTRY_U32("i2c-scl-falling-time-ns", 208),
1460343b2f4SMika Westerberg 	{ },
1470343b2f4SMika Westerberg };
1480343b2f4SMika Westerberg 
14903152e35SHeikki Krogerus static const struct software_node bxt_i2c_node = {
15003152e35SHeikki Krogerus 	.properties = bxt_i2c_properties,
15103152e35SHeikki Krogerus };
15203152e35SHeikki Krogerus 
153ff0a04a6SAndy Shevchenko static const struct intel_lpss_platform_info bxt_i2c_info = {
154ff0a04a6SAndy Shevchenko 	.clk_rate = 133000000,
15503152e35SHeikki Krogerus 	.swnode = &bxt_i2c_node,
156ff0a04a6SAndy Shevchenko };
157ff0a04a6SAndy Shevchenko 
1589677e6f7SAndy Shevchenko static const struct property_entry apl_i2c_properties[] = {
159c50cdd62SJarkko Nikula 	PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 207),
160c50cdd62SJarkko Nikula 	PROPERTY_ENTRY_U32("i2c-sda-falling-time-ns", 171),
161c50cdd62SJarkko Nikula 	PROPERTY_ENTRY_U32("i2c-scl-falling-time-ns", 208),
162c50cdd62SJarkko Nikula 	{ },
163c50cdd62SJarkko Nikula };
164c50cdd62SJarkko Nikula 
16503152e35SHeikki Krogerus static const struct software_node apl_i2c_node = {
16603152e35SHeikki Krogerus 	.properties = apl_i2c_properties,
16703152e35SHeikki Krogerus };
16803152e35SHeikki Krogerus 
169c50cdd62SJarkko Nikula static const struct intel_lpss_platform_info apl_i2c_info = {
170c50cdd62SJarkko Nikula 	.clk_rate = 133000000,
17103152e35SHeikki Krogerus 	.swnode = &apl_i2c_node,
172c50cdd62SJarkko Nikula };
173c50cdd62SJarkko Nikula 
1749677e6f7SAndy Shevchenko static const struct property_entry glk_i2c_properties[] = {
1753f31bc67SJarkko Nikula 	PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 313),
1763f31bc67SJarkko Nikula 	PROPERTY_ENTRY_U32("i2c-sda-falling-time-ns", 171),
1773f31bc67SJarkko Nikula 	PROPERTY_ENTRY_U32("i2c-scl-falling-time-ns", 290),
1783f31bc67SJarkko Nikula 	{ },
1793f31bc67SJarkko Nikula };
1803f31bc67SJarkko Nikula 
18103152e35SHeikki Krogerus static const struct software_node glk_i2c_node = {
18203152e35SHeikki Krogerus 	.properties = glk_i2c_properties,
18303152e35SHeikki Krogerus };
18403152e35SHeikki Krogerus 
1853f31bc67SJarkko Nikula static const struct intel_lpss_platform_info glk_i2c_info = {
1863f31bc67SJarkko Nikula 	.clk_rate = 133000000,
18703152e35SHeikki Krogerus 	.swnode = &glk_i2c_node,
1883f31bc67SJarkko Nikula };
1893f31bc67SJarkko Nikula 
190fe55d732SAndy Shevchenko static const struct property_entry cnl_spi_properties[] = {
191fe55d732SAndy Shevchenko 	PROPERTY_ENTRY_U32("intel,spi-pxa2xx-type", LPSS_CNL_SSP),
192fe55d732SAndy Shevchenko 	{ }
193fe55d732SAndy Shevchenko };
194fe55d732SAndy Shevchenko 
195fe55d732SAndy Shevchenko static const struct software_node cnl_spi_node = {
196fe55d732SAndy Shevchenko 	.properties = cnl_spi_properties,
197fe55d732SAndy Shevchenko };
198fe55d732SAndy Shevchenko 
199fe55d732SAndy Shevchenko static const struct intel_lpss_platform_info cnl_info = {
200fe55d732SAndy Shevchenko 	.clk_rate = 120000000,
201fe55d732SAndy Shevchenko 	.swnode = &cnl_spi_node,
202fe55d732SAndy Shevchenko };
203fe55d732SAndy Shevchenko 
2044e93a658SJarkko Nikula static const struct intel_lpss_platform_info cnl_i2c_info = {
2054e93a658SJarkko Nikula 	.clk_rate = 216000000,
20603152e35SHeikki Krogerus 	.swnode = &spt_i2c_node,
2074e93a658SJarkko Nikula };
2084e93a658SJarkko Nikula 
209d2923aa4SJarkko Nikula static const struct intel_lpss_platform_info ehl_i2c_info = {
210d2923aa4SJarkko Nikula 	.clk_rate = 100000000,
21103152e35SHeikki Krogerus 	.swnode = &bxt_i2c_node,
212d2923aa4SJarkko Nikula };
213d2923aa4SJarkko Nikula 
214fe55d732SAndy Shevchenko static const struct property_entry tgl_spi_properties[] = {
215fe55d732SAndy Shevchenko 	PROPERTY_ENTRY_U32("intel,spi-pxa2xx-type", LPSS_CNL_SSP),
216fe55d732SAndy Shevchenko 	{ }
217fe55d732SAndy Shevchenko };
218fe55d732SAndy Shevchenko 
219fe55d732SAndy Shevchenko static const struct software_node tgl_spi_node = {
220fe55d732SAndy Shevchenko 	.properties = tgl_spi_properties,
221fe55d732SAndy Shevchenko };
222fe55d732SAndy Shevchenko 
223fe55d732SAndy Shevchenko static const struct intel_lpss_platform_info tgl_info = {
224fe55d732SAndy Shevchenko 	.clk_rate = 100000000,
225fe55d732SAndy Shevchenko 	.swnode = &tgl_spi_node,
226fe55d732SAndy Shevchenko };
227fe55d732SAndy Shevchenko 
2284b45efe8SAndy Shevchenko static const struct pci_device_id intel_lpss_pci_ids[] = {
229dd047dceSAndy Shevchenko 	/* CML-LP */
230dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02a8), (kernel_ulong_t)&spt_uart_info },
231dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02a9), (kernel_ulong_t)&spt_uart_info },
232fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02aa), (kernel_ulong_t)&cnl_info },
233fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02ab), (kernel_ulong_t)&cnl_info },
234dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02c5), (kernel_ulong_t)&cnl_i2c_info },
235dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02c6), (kernel_ulong_t)&cnl_i2c_info },
236dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02c7), (kernel_ulong_t)&spt_uart_info },
237dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02e8), (kernel_ulong_t)&cnl_i2c_info },
238dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02e9), (kernel_ulong_t)&cnl_i2c_info },
239dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02ea), (kernel_ulong_t)&cnl_i2c_info },
240dd662907SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02eb), (kernel_ulong_t)&cnl_i2c_info },
241fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x02fb), (kernel_ulong_t)&cnl_info },
242dd047dceSAndy Shevchenko 	/* CML-H */
243dd047dceSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06a8), (kernel_ulong_t)&spt_uart_info },
244dd047dceSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06a9), (kernel_ulong_t)&spt_uart_info },
245fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06aa), (kernel_ulong_t)&cnl_info },
246fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06ab), (kernel_ulong_t)&cnl_info },
247dd047dceSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06c7), (kernel_ulong_t)&spt_uart_info },
248dd047dceSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06e8), (kernel_ulong_t)&cnl_i2c_info },
249dd047dceSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06e9), (kernel_ulong_t)&cnl_i2c_info },
250dd047dceSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06ea), (kernel_ulong_t)&cnl_i2c_info },
251dd047dceSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06eb), (kernel_ulong_t)&cnl_i2c_info },
252fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x06fb), (kernel_ulong_t)&cnl_info },
253023269ccSHuiquan Zhong 	/* BXT A-Step */
254ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0aac), (kernel_ulong_t)&bxt_i2c_info },
255ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0aae), (kernel_ulong_t)&bxt_i2c_info },
256ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ab0), (kernel_ulong_t)&bxt_i2c_info },
257ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ab2), (kernel_ulong_t)&bxt_i2c_info },
258ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ab4), (kernel_ulong_t)&bxt_i2c_info },
259ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ab6), (kernel_ulong_t)&bxt_i2c_info },
260ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ab8), (kernel_ulong_t)&bxt_i2c_info },
261ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0aba), (kernel_ulong_t)&bxt_i2c_info },
262ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0abc), (kernel_ulong_t)&bxt_uart_info },
263ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0abe), (kernel_ulong_t)&bxt_uart_info },
264ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ac0), (kernel_ulong_t)&bxt_uart_info },
265ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ac2), (kernel_ulong_t)&bxt_info },
266ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ac4), (kernel_ulong_t)&bxt_info },
267ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0ac6), (kernel_ulong_t)&bxt_info },
268ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x0aee), (kernel_ulong_t)&bxt_uart_info },
269023269ccSHuiquan Zhong 	/* BXT B-Step */
270023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1aac), (kernel_ulong_t)&bxt_i2c_info },
271023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1aae), (kernel_ulong_t)&bxt_i2c_info },
272023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ab0), (kernel_ulong_t)&bxt_i2c_info },
273023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ab2), (kernel_ulong_t)&bxt_i2c_info },
274023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ab4), (kernel_ulong_t)&bxt_i2c_info },
275023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ab6), (kernel_ulong_t)&bxt_i2c_info },
276023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ab8), (kernel_ulong_t)&bxt_i2c_info },
277023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1aba), (kernel_ulong_t)&bxt_i2c_info },
278023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1abc), (kernel_ulong_t)&bxt_uart_info },
279023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1abe), (kernel_ulong_t)&bxt_uart_info },
280023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ac0), (kernel_ulong_t)&bxt_uart_info },
281023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ac2), (kernel_ulong_t)&bxt_info },
282023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ac4), (kernel_ulong_t)&bxt_info },
283023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1ac6), (kernel_ulong_t)&bxt_info },
284023269ccSHuiquan Zhong 	{ PCI_VDEVICE(INTEL, 0x1aee), (kernel_ulong_t)&bxt_uart_info },
2853ea2e4eaSAndy Shevchenko 	/* EBG */
2863ea2e4eaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x1bad), (kernel_ulong_t)&bxt_uart_info },
2873ea2e4eaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x1bae), (kernel_ulong_t)&bxt_uart_info },
288f80e78aaSAndy Shevchenko 	/* GLK */
2893f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31ac), (kernel_ulong_t)&glk_i2c_info },
2903f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31ae), (kernel_ulong_t)&glk_i2c_info },
2913f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31b0), (kernel_ulong_t)&glk_i2c_info },
2923f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31b2), (kernel_ulong_t)&glk_i2c_info },
2933f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31b4), (kernel_ulong_t)&glk_i2c_info },
2943f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31b6), (kernel_ulong_t)&glk_i2c_info },
2953f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31b8), (kernel_ulong_t)&glk_i2c_info },
2963f31bc67SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x31ba), (kernel_ulong_t)&glk_i2c_info },
297f80e78aaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x31bc), (kernel_ulong_t)&bxt_uart_info },
298f80e78aaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x31be), (kernel_ulong_t)&bxt_uart_info },
299f80e78aaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x31c0), (kernel_ulong_t)&bxt_uart_info },
300f80e78aaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x31c2), (kernel_ulong_t)&bxt_info },
301f80e78aaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x31c4), (kernel_ulong_t)&bxt_info },
302f80e78aaSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x31c6), (kernel_ulong_t)&bxt_info },
303f88314c1SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x31ee), (kernel_ulong_t)&bxt_uart_info },
304a13c93b3SMika Westerberg 	/* ICL-LP */
305a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34a8), (kernel_ulong_t)&spt_uart_info },
306a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34a9), (kernel_ulong_t)&spt_uart_info },
307fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x34aa), (kernel_ulong_t)&cnl_info },
308fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x34ab), (kernel_ulong_t)&cnl_info },
309a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34c5), (kernel_ulong_t)&bxt_i2c_info },
310a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34c6), (kernel_ulong_t)&bxt_i2c_info },
311a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34c7), (kernel_ulong_t)&spt_uart_info },
312a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34e8), (kernel_ulong_t)&bxt_i2c_info },
313a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34e9), (kernel_ulong_t)&bxt_i2c_info },
314a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34ea), (kernel_ulong_t)&bxt_i2c_info },
315a13c93b3SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x34eb), (kernel_ulong_t)&bxt_i2c_info },
316fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x34fb), (kernel_ulong_t)&cnl_info },
317ddb1ada4SOrlando Chamberlain 	/* ICL-N */
3189651cf2cSOrlando Chamberlain 	{ PCI_VDEVICE(INTEL, 0x38a8), (kernel_ulong_t)&spt_uart_info },
319bb7fcad4SAndy Shevchenko 	/* TGL-H */
320bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43a7), (kernel_ulong_t)&bxt_uart_info },
321bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43a8), (kernel_ulong_t)&bxt_uart_info },
322bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43a9), (kernel_ulong_t)&bxt_uart_info },
323fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43aa), (kernel_ulong_t)&tgl_info },
324fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43ab), (kernel_ulong_t)&tgl_info },
325bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43ad), (kernel_ulong_t)&bxt_i2c_info },
326bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43ae), (kernel_ulong_t)&bxt_i2c_info },
327bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43d8), (kernel_ulong_t)&bxt_i2c_info },
328bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43da), (kernel_ulong_t)&bxt_uart_info },
329bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43e8), (kernel_ulong_t)&bxt_i2c_info },
330bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43e9), (kernel_ulong_t)&bxt_i2c_info },
331bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43ea), (kernel_ulong_t)&bxt_i2c_info },
332bb7fcad4SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43eb), (kernel_ulong_t)&bxt_i2c_info },
333fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43fb), (kernel_ulong_t)&tgl_info },
334fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x43fd), (kernel_ulong_t)&tgl_info },
33501e4eceeSAndy Shevchenko 	/* EHL */
33601e4eceeSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4b28), (kernel_ulong_t)&bxt_uart_info },
33701e4eceeSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4b29), (kernel_ulong_t)&bxt_uart_info },
33801e4eceeSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4b2a), (kernel_ulong_t)&bxt_info },
33901e4eceeSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4b2b), (kernel_ulong_t)&bxt_info },
34001e4eceeSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4b37), (kernel_ulong_t)&bxt_info },
341d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b44), (kernel_ulong_t)&ehl_i2c_info },
342d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b45), (kernel_ulong_t)&ehl_i2c_info },
343d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b4b), (kernel_ulong_t)&ehl_i2c_info },
344d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b4c), (kernel_ulong_t)&ehl_i2c_info },
34501e4eceeSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4b4d), (kernel_ulong_t)&bxt_uart_info },
346d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b78), (kernel_ulong_t)&ehl_i2c_info },
347d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b79), (kernel_ulong_t)&ehl_i2c_info },
348d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b7a), (kernel_ulong_t)&ehl_i2c_info },
349d2923aa4SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x4b7b), (kernel_ulong_t)&ehl_i2c_info },
35057b89dd2SAndy Shevchenko 	/* JSL */
35157b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4da8), (kernel_ulong_t)&spt_uart_info },
35257b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4da9), (kernel_ulong_t)&spt_uart_info },
353fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4daa), (kernel_ulong_t)&cnl_info },
354fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4dab), (kernel_ulong_t)&cnl_info },
35557b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4dc5), (kernel_ulong_t)&bxt_i2c_info },
35657b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4dc6), (kernel_ulong_t)&bxt_i2c_info },
3579a875245SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4dc7), (kernel_ulong_t)&spt_uart_info },
35857b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4de8), (kernel_ulong_t)&bxt_i2c_info },
35957b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4de9), (kernel_ulong_t)&bxt_i2c_info },
36057b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4dea), (kernel_ulong_t)&bxt_i2c_info },
36157b89dd2SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4deb), (kernel_ulong_t)&bxt_i2c_info },
362fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x4dfb), (kernel_ulong_t)&cnl_info },
363f7b67321SAndy Shevchenko 	/* ADL-P */
364f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51a8), (kernel_ulong_t)&bxt_uart_info },
365f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51a9), (kernel_ulong_t)&bxt_uart_info },
366fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51aa), (kernel_ulong_t)&tgl_info },
367fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51ab), (kernel_ulong_t)&tgl_info },
368f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51c5), (kernel_ulong_t)&bxt_i2c_info },
369f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51c6), (kernel_ulong_t)&bxt_i2c_info },
370f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51c7), (kernel_ulong_t)&bxt_uart_info },
371eeb0a442SGaggery Tsai 	{ PCI_VDEVICE(INTEL, 0x51d8), (kernel_ulong_t)&bxt_i2c_info },
372eeb0a442SGaggery Tsai 	{ PCI_VDEVICE(INTEL, 0x51d9), (kernel_ulong_t)&bxt_i2c_info },
373f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51e8), (kernel_ulong_t)&bxt_i2c_info },
374f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51e9), (kernel_ulong_t)&bxt_i2c_info },
375f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51ea), (kernel_ulong_t)&bxt_i2c_info },
376f7b67321SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51eb), (kernel_ulong_t)&bxt_i2c_info },
377fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x51fb), (kernel_ulong_t)&tgl_info },
3789fb3cad0SAndy Shevchenko 	/* ADL-M */
3799fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54a8), (kernel_ulong_t)&bxt_uart_info },
3809fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54a9), (kernel_ulong_t)&bxt_uart_info },
381fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54aa), (kernel_ulong_t)&tgl_info },
382fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54ab), (kernel_ulong_t)&tgl_info },
3839fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54c5), (kernel_ulong_t)&bxt_i2c_info },
3849fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54c6), (kernel_ulong_t)&bxt_i2c_info },
3859fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54c7), (kernel_ulong_t)&bxt_uart_info },
3869fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54e8), (kernel_ulong_t)&bxt_i2c_info },
3879fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54e9), (kernel_ulong_t)&bxt_i2c_info },
3889fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54ea), (kernel_ulong_t)&bxt_i2c_info },
3899fb3cad0SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54eb), (kernel_ulong_t)&bxt_i2c_info },
390fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x54fb), (kernel_ulong_t)&tgl_info },
391ff0a04a6SAndy Shevchenko 	/* APL */
392c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5aac), (kernel_ulong_t)&apl_i2c_info },
393c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5aae), (kernel_ulong_t)&apl_i2c_info },
394c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5ab0), (kernel_ulong_t)&apl_i2c_info },
395c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5ab2), (kernel_ulong_t)&apl_i2c_info },
396c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5ab4), (kernel_ulong_t)&apl_i2c_info },
397c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5ab6), (kernel_ulong_t)&apl_i2c_info },
398c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5ab8), (kernel_ulong_t)&apl_i2c_info },
399c50cdd62SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x5aba), (kernel_ulong_t)&apl_i2c_info },
400ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x5abc), (kernel_ulong_t)&bxt_uart_info },
401ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x5abe), (kernel_ulong_t)&bxt_uart_info },
402ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x5ac0), (kernel_ulong_t)&bxt_uart_info },
403ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x5ac2), (kernel_ulong_t)&bxt_info },
404ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x5ac4), (kernel_ulong_t)&bxt_info },
405ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x5ac6), (kernel_ulong_t)&bxt_info },
406ff0a04a6SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x5aee), (kernel_ulong_t)&bxt_uart_info },
4078c70bd58SJarkko Nikula 	/* RPL-S */
4088c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a28), (kernel_ulong_t)&bxt_uart_info },
4098c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a29), (kernel_ulong_t)&bxt_uart_info },
410fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7a2a), (kernel_ulong_t)&tgl_info },
411fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7a2b), (kernel_ulong_t)&tgl_info },
4128c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a4c), (kernel_ulong_t)&bxt_i2c_info },
4138c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a4d), (kernel_ulong_t)&bxt_i2c_info },
4148c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a4e), (kernel_ulong_t)&bxt_i2c_info },
4158c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a4f), (kernel_ulong_t)&bxt_i2c_info },
4168c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a5c), (kernel_ulong_t)&bxt_uart_info },
417fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7a79), (kernel_ulong_t)&tgl_info },
418fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7a7b), (kernel_ulong_t)&tgl_info },
4198c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a7c), (kernel_ulong_t)&bxt_i2c_info },
4208c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a7d), (kernel_ulong_t)&bxt_i2c_info },
4218c70bd58SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7a7e), (kernel_ulong_t)&bxt_uart_info },
422c7b79a75SJarkko Nikula 	/* ADL-S */
423c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7aa8), (kernel_ulong_t)&bxt_uart_info },
424c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7aa9), (kernel_ulong_t)&bxt_uart_info },
425fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7aaa), (kernel_ulong_t)&tgl_info },
426fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7aab), (kernel_ulong_t)&tgl_info },
427c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7acc), (kernel_ulong_t)&bxt_i2c_info },
428c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7acd), (kernel_ulong_t)&bxt_i2c_info },
429c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7ace), (kernel_ulong_t)&bxt_i2c_info },
430c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7acf), (kernel_ulong_t)&bxt_i2c_info },
431c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7adc), (kernel_ulong_t)&bxt_uart_info },
432fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7af9), (kernel_ulong_t)&tgl_info },
433fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7afb), (kernel_ulong_t)&tgl_info },
434c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7afc), (kernel_ulong_t)&bxt_i2c_info },
435c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7afd), (kernel_ulong_t)&bxt_i2c_info },
436c7b79a75SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7afe), (kernel_ulong_t)&bxt_uart_info },
43737e8ba74SAndy Shevchenko 	/* MTL-P */
43837e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e25), (kernel_ulong_t)&bxt_uart_info },
43937e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e26), (kernel_ulong_t)&bxt_uart_info },
440fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e27), (kernel_ulong_t)&tgl_info },
441fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e30), (kernel_ulong_t)&tgl_info },
442fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e46), (kernel_ulong_t)&tgl_info },
44337e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e50), (kernel_ulong_t)&bxt_i2c_info },
44437e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e51), (kernel_ulong_t)&bxt_i2c_info },
44537e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e52), (kernel_ulong_t)&bxt_uart_info },
44637e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e78), (kernel_ulong_t)&bxt_i2c_info },
44737e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e79), (kernel_ulong_t)&bxt_i2c_info },
44837e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e7a), (kernel_ulong_t)&bxt_i2c_info },
44937e8ba74SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x7e7b), (kernel_ulong_t)&bxt_i2c_info },
45072d4a168SJarkko Nikula 	/* MTP-S */
45172d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f28), (kernel_ulong_t)&bxt_uart_info },
45272d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f29), (kernel_ulong_t)&bxt_uart_info },
45372d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f2a), (kernel_ulong_t)&tgl_info },
45472d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f2b), (kernel_ulong_t)&tgl_info },
45572d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f4c), (kernel_ulong_t)&bxt_i2c_info },
45672d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f4d), (kernel_ulong_t)&bxt_i2c_info },
45772d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f4e), (kernel_ulong_t)&bxt_i2c_info },
45872d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f4f), (kernel_ulong_t)&bxt_i2c_info },
45972d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f5c), (kernel_ulong_t)&bxt_uart_info },
46072d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f5d), (kernel_ulong_t)&bxt_uart_info },
46172d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f5e), (kernel_ulong_t)&tgl_info },
46272d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f5f), (kernel_ulong_t)&tgl_info },
46372d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f7a), (kernel_ulong_t)&bxt_i2c_info },
46472d4a168SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x7f7b), (kernel_ulong_t)&bxt_i2c_info },
4655f039fa7SAndy Shevchenko 	/* LKF */
4665f039fa7SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x98a8), (kernel_ulong_t)&bxt_uart_info },
4675f039fa7SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x98a9), (kernel_ulong_t)&bxt_uart_info },
4688b2051a1SEd Schaller 	{ PCI_VDEVICE(INTEL, 0x98aa), (kernel_ulong_t)&bxt_info },
4698b2051a1SEd Schaller 	{ PCI_VDEVICE(INTEL, 0x98c5), (kernel_ulong_t)&bxt_i2c_info },
4708b2051a1SEd Schaller 	{ PCI_VDEVICE(INTEL, 0x98c6), (kernel_ulong_t)&bxt_i2c_info },
4715f039fa7SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x98c7), (kernel_ulong_t)&bxt_uart_info },
4728b2051a1SEd Schaller 	{ PCI_VDEVICE(INTEL, 0x98e8), (kernel_ulong_t)&bxt_i2c_info },
4738b2051a1SEd Schaller 	{ PCI_VDEVICE(INTEL, 0x98e9), (kernel_ulong_t)&bxt_i2c_info },
4748b2051a1SEd Schaller 	{ PCI_VDEVICE(INTEL, 0x98ea), (kernel_ulong_t)&bxt_i2c_info },
4758b2051a1SEd Schaller 	{ PCI_VDEVICE(INTEL, 0x98eb), (kernel_ulong_t)&bxt_i2c_info },
4764b45efe8SAndy Shevchenko 	/* SPT-LP */
4774b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9d27), (kernel_ulong_t)&spt_uart_info },
4784b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9d28), (kernel_ulong_t)&spt_uart_info },
4794b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9d29), (kernel_ulong_t)&spt_info },
4804b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9d2a), (kernel_ulong_t)&spt_info },
481028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x9d60), (kernel_ulong_t)&spt_i2c_info },
482028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x9d61), (kernel_ulong_t)&spt_i2c_info },
483028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x9d62), (kernel_ulong_t)&spt_i2c_info },
484028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x9d63), (kernel_ulong_t)&spt_i2c_info },
485028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x9d64), (kernel_ulong_t)&spt_i2c_info },
486028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0x9d65), (kernel_ulong_t)&spt_i2c_info },
4874b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9d66), (kernel_ulong_t)&spt_uart_info },
488b418bbffSAndy Shevchenko 	/* CNL-LP */
489b418bbffSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9da8), (kernel_ulong_t)&spt_uart_info },
490b418bbffSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9da9), (kernel_ulong_t)&spt_uart_info },
491fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9daa), (kernel_ulong_t)&cnl_info },
492fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9dab), (kernel_ulong_t)&cnl_info },
4934e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x9dc5), (kernel_ulong_t)&cnl_i2c_info },
4944e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x9dc6), (kernel_ulong_t)&cnl_i2c_info },
495b418bbffSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9dc7), (kernel_ulong_t)&spt_uart_info },
4964e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x9de8), (kernel_ulong_t)&cnl_i2c_info },
4974e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x9de9), (kernel_ulong_t)&cnl_i2c_info },
4984e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x9dea), (kernel_ulong_t)&cnl_i2c_info },
4994e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0x9deb), (kernel_ulong_t)&cnl_i2c_info },
500fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0x9dfb), (kernel_ulong_t)&cnl_info },
501ec65b560SAndy Shevchenko 	/* TGL-LP */
502ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0a8), (kernel_ulong_t)&bxt_uart_info },
503ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0a9), (kernel_ulong_t)&bxt_uart_info },
504fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0aa), (kernel_ulong_t)&cnl_info },
505fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0ab), (kernel_ulong_t)&cnl_info },
506ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0c5), (kernel_ulong_t)&spt_i2c_info },
507ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0c6), (kernel_ulong_t)&spt_i2c_info },
508ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0c7), (kernel_ulong_t)&bxt_uart_info },
509ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0d8), (kernel_ulong_t)&spt_i2c_info },
510ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0d9), (kernel_ulong_t)&spt_i2c_info },
511ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0da), (kernel_ulong_t)&bxt_uart_info },
512ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0db), (kernel_ulong_t)&bxt_uart_info },
513ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0dc), (kernel_ulong_t)&bxt_uart_info },
514ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0dd), (kernel_ulong_t)&bxt_uart_info },
515fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0de), (kernel_ulong_t)&cnl_info },
516fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0df), (kernel_ulong_t)&cnl_info },
517ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0e8), (kernel_ulong_t)&spt_i2c_info },
518ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0e9), (kernel_ulong_t)&spt_i2c_info },
519ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0ea), (kernel_ulong_t)&spt_i2c_info },
520ec65b560SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0eb), (kernel_ulong_t)&spt_i2c_info },
521fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0fb), (kernel_ulong_t)&cnl_info },
522fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0fd), (kernel_ulong_t)&cnl_info },
523fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa0fe), (kernel_ulong_t)&cnl_info },
5244b45efe8SAndy Shevchenko 	/* SPT-H */
5254b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa127), (kernel_ulong_t)&spt_uart_info },
5264b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa128), (kernel_ulong_t)&spt_uart_info },
5274b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa129), (kernel_ulong_t)&spt_info },
5284b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa12a), (kernel_ulong_t)&spt_info },
529028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0xa160), (kernel_ulong_t)&spt_i2c_info },
530028af594SMika Westerberg 	{ PCI_VDEVICE(INTEL, 0xa161), (kernel_ulong_t)&spt_i2c_info },
531e4b91470SFlorian R. Hölzlwimmer 	{ PCI_VDEVICE(INTEL, 0xa162), (kernel_ulong_t)&spt_i2c_info },
5324b45efe8SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa166), (kernel_ulong_t)&spt_uart_info },
53377fc5ff6SMika Westerberg 	/* KBL-H */
5342c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2a7), (kernel_ulong_t)&spt_uart_info },
5352c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2a8), (kernel_ulong_t)&spt_uart_info },
5362c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2a9), (kernel_ulong_t)&spt_info },
5372c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2aa), (kernel_ulong_t)&spt_info },
5382c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2e0), (kernel_ulong_t)&spt_i2c_info },
5392c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2e1), (kernel_ulong_t)&spt_i2c_info },
5402c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2e2), (kernel_ulong_t)&spt_i2c_info },
5412c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2e3), (kernel_ulong_t)&spt_i2c_info },
5422c8c3416SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa2e6), (kernel_ulong_t)&spt_uart_info },
543b418bbffSAndy Shevchenko 	/* CNL-H */
544b418bbffSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa328), (kernel_ulong_t)&spt_uart_info },
545b418bbffSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa329), (kernel_ulong_t)&spt_uart_info },
546fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa32a), (kernel_ulong_t)&cnl_info },
547fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa32b), (kernel_ulong_t)&cnl_info },
548b418bbffSAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa347), (kernel_ulong_t)&spt_uart_info },
5494e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa368), (kernel_ulong_t)&cnl_i2c_info },
5504e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa369), (kernel_ulong_t)&cnl_i2c_info },
5514e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa36a), (kernel_ulong_t)&cnl_i2c_info },
5524e93a658SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa36b), (kernel_ulong_t)&cnl_i2c_info },
553fe55d732SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa37b), (kernel_ulong_t)&cnl_info },
5544e213b45SAndy Shevchenko 	/* CML-V */
5554e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3a7), (kernel_ulong_t)&spt_uart_info },
5564e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3a8), (kernel_ulong_t)&spt_uart_info },
5574e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3a9), (kernel_ulong_t)&spt_info },
5584e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3aa), (kernel_ulong_t)&spt_info },
5594e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3e0), (kernel_ulong_t)&spt_i2c_info },
5604e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3e1), (kernel_ulong_t)&spt_i2c_info },
5614e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3e2), (kernel_ulong_t)&spt_i2c_info },
5624e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3e3), (kernel_ulong_t)&spt_i2c_info },
5634e213b45SAndy Shevchenko 	{ PCI_VDEVICE(INTEL, 0xa3e6), (kernel_ulong_t)&spt_uart_info },
564*6b1e61f7SJarkko Nikula 	/* LNL-M */
565*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa825), (kernel_ulong_t)&bxt_uart_info },
566*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa826), (kernel_ulong_t)&bxt_uart_info },
567*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa827), (kernel_ulong_t)&tgl_info },
568*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa830), (kernel_ulong_t)&tgl_info },
569*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa846), (kernel_ulong_t)&tgl_info },
570*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa850), (kernel_ulong_t)&ehl_i2c_info },
571*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa851), (kernel_ulong_t)&ehl_i2c_info },
572*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa852), (kernel_ulong_t)&bxt_uart_info },
573*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa878), (kernel_ulong_t)&ehl_i2c_info },
574*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa879), (kernel_ulong_t)&ehl_i2c_info },
575*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa87a), (kernel_ulong_t)&ehl_i2c_info },
576*6b1e61f7SJarkko Nikula 	{ PCI_VDEVICE(INTEL, 0xa87b), (kernel_ulong_t)&ehl_i2c_info },
5774b45efe8SAndy Shevchenko 	{ }
5784b45efe8SAndy Shevchenko };
5794b45efe8SAndy Shevchenko MODULE_DEVICE_TABLE(pci, intel_lpss_pci_ids);
5804b45efe8SAndy Shevchenko 
5814b45efe8SAndy Shevchenko static struct pci_driver intel_lpss_pci_driver = {
5824b45efe8SAndy Shevchenko 	.name = "intel-lpss",
5834b45efe8SAndy Shevchenko 	.id_table = intel_lpss_pci_ids,
5844b45efe8SAndy Shevchenko 	.probe = intel_lpss_pci_probe,
5854b45efe8SAndy Shevchenko 	.remove = intel_lpss_pci_remove,
5864b45efe8SAndy Shevchenko 	.driver = {
5874b45efe8SAndy Shevchenko 		.pm = &intel_lpss_pci_pm_ops,
5884b45efe8SAndy Shevchenko 	},
5894b45efe8SAndy Shevchenko };
5904b45efe8SAndy Shevchenko 
5914b45efe8SAndy Shevchenko module_pci_driver(intel_lpss_pci_driver);
5924b45efe8SAndy Shevchenko 
5934b45efe8SAndy Shevchenko MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
5944b45efe8SAndy Shevchenko MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>");
5954b45efe8SAndy Shevchenko MODULE_DESCRIPTION("Intel LPSS PCI driver");
5964b45efe8SAndy Shevchenko MODULE_LICENSE("GPL v2");
597