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> 174b45efe8SAndy Shevchenko 184b45efe8SAndy Shevchenko #include "intel-lpss.h" 194b45efe8SAndy Shevchenko 20e6b14206SHans de Goede /* Some DSDTs have an unused GEXP ACPI device conflicting with I2C4 resources */ 21e6b14206SHans de Goede static const struct pci_device_id ignore_resource_conflicts_ids[] = { 22e6b14206SHans de Goede /* Microsoft Surface Go (version 1) I2C4 */ 23e6b14206SHans de Goede { PCI_DEVICE_SUB(PCI_VENDOR_ID_INTEL, 0x9d64, 0x152d, 0x1182), }, 24e6b14206SHans de Goede /* Microsoft Surface Go 2 I2C4 */ 25e6b14206SHans de Goede { PCI_DEVICE_SUB(PCI_VENDOR_ID_INTEL, 0x9d64, 0x152d, 0x1237), }, 26e6b14206SHans de Goede { } 27e6b14206SHans de Goede }; 28e6b14206SHans de Goede 294b45efe8SAndy Shevchenko static int intel_lpss_pci_probe(struct pci_dev *pdev, 304b45efe8SAndy Shevchenko const struct pci_device_id *id) 314b45efe8SAndy Shevchenko { 324b45efe8SAndy Shevchenko struct intel_lpss_platform_info *info; 334b45efe8SAndy Shevchenko int ret; 344b45efe8SAndy Shevchenko 354b45efe8SAndy Shevchenko ret = pcim_enable_device(pdev); 364b45efe8SAndy Shevchenko if (ret) 374b45efe8SAndy Shevchenko return ret; 384b45efe8SAndy Shevchenko 394b45efe8SAndy Shevchenko info = devm_kmemdup(&pdev->dev, (void *)id->driver_data, sizeof(*info), 404b45efe8SAndy Shevchenko GFP_KERNEL); 414b45efe8SAndy Shevchenko if (!info) 424b45efe8SAndy Shevchenko return -ENOMEM; 434b45efe8SAndy Shevchenko 444b45efe8SAndy Shevchenko info->mem = &pdev->resource[0]; 454b45efe8SAndy Shevchenko info->irq = pdev->irq; 464b45efe8SAndy Shevchenko 47e6b14206SHans de Goede if (pci_match_id(ignore_resource_conflicts_ids, pdev)) 48e6b14206SHans de Goede info->ignore_resource_conflicts = true; 49e6b14206SHans de Goede 5076380a60SKai-Heng Feng pdev->d3cold_delay = 0; 5176380a60SKai-Heng Feng 524b45efe8SAndy Shevchenko /* Probably it is enough to set this for iDMA capable devices only */ 534b45efe8SAndy Shevchenko pci_set_master(pdev); 5485a9419aSAndy Shevchenko pci_try_set_mwi(pdev); 554b45efe8SAndy Shevchenko 564b45efe8SAndy Shevchenko ret = intel_lpss_probe(&pdev->dev, info); 574b45efe8SAndy Shevchenko if (ret) 584b45efe8SAndy Shevchenko return ret; 594b45efe8SAndy Shevchenko 604b45efe8SAndy Shevchenko pm_runtime_put(&pdev->dev); 614b45efe8SAndy Shevchenko pm_runtime_allow(&pdev->dev); 624b45efe8SAndy Shevchenko 634b45efe8SAndy Shevchenko return 0; 644b45efe8SAndy Shevchenko } 654b45efe8SAndy Shevchenko 664b45efe8SAndy Shevchenko static void intel_lpss_pci_remove(struct pci_dev *pdev) 674b45efe8SAndy Shevchenko { 684b45efe8SAndy Shevchenko pm_runtime_forbid(&pdev->dev); 694b45efe8SAndy Shevchenko pm_runtime_get_sync(&pdev->dev); 704b45efe8SAndy Shevchenko 714b45efe8SAndy Shevchenko intel_lpss_remove(&pdev->dev); 724b45efe8SAndy Shevchenko } 734b45efe8SAndy Shevchenko 744b45efe8SAndy Shevchenko static INTEL_LPSS_PM_OPS(intel_lpss_pci_pm_ops); 754b45efe8SAndy Shevchenko 764b45efe8SAndy Shevchenko static const struct intel_lpss_platform_info spt_info = { 774b45efe8SAndy Shevchenko .clk_rate = 120000000, 784b45efe8SAndy Shevchenko }; 794b45efe8SAndy Shevchenko 809677e6f7SAndy Shevchenko static const struct property_entry spt_i2c_properties[] = { 81028af594SMika Westerberg PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 230), 82028af594SMika Westerberg { }, 83028af594SMika Westerberg }; 84028af594SMika Westerberg 8503152e35SHeikki Krogerus static const struct software_node spt_i2c_node = { 8603152e35SHeikki Krogerus .properties = spt_i2c_properties, 8703152e35SHeikki Krogerus }; 8803152e35SHeikki Krogerus 89028af594SMika Westerberg static const struct intel_lpss_platform_info spt_i2c_info = { 90028af594SMika Westerberg .clk_rate = 120000000, 9103152e35SHeikki Krogerus .swnode = &spt_i2c_node, 92028af594SMika Westerberg }; 93028af594SMika Westerberg 949677e6f7SAndy Shevchenko static const struct property_entry uart_properties[] = { 95ec14c539SAndy Shevchenko PROPERTY_ENTRY_U32("reg-io-width", 4), 96ec14c539SAndy Shevchenko PROPERTY_ENTRY_U32("reg-shift", 2), 97ec14c539SAndy Shevchenko PROPERTY_ENTRY_BOOL("snps,uart-16550-compatible"), 98ec14c539SAndy Shevchenko { }, 99ec14c539SAndy Shevchenko }; 100ec14c539SAndy Shevchenko 10103152e35SHeikki Krogerus static const struct software_node uart_node = { 10203152e35SHeikki Krogerus .properties = uart_properties, 10303152e35SHeikki Krogerus }; 10403152e35SHeikki Krogerus 1054b45efe8SAndy Shevchenko static const struct intel_lpss_platform_info spt_uart_info = { 1064b45efe8SAndy Shevchenko .clk_rate = 120000000, 1074b45efe8SAndy Shevchenko .clk_con_id = "baudclk", 10803152e35SHeikki Krogerus .swnode = &uart_node, 1094b45efe8SAndy Shevchenko }; 1104b45efe8SAndy Shevchenko 111ff0a04a6SAndy Shevchenko static const struct intel_lpss_platform_info bxt_info = { 112ff0a04a6SAndy Shevchenko .clk_rate = 100000000, 113ff0a04a6SAndy Shevchenko }; 114ff0a04a6SAndy Shevchenko 115ff0a04a6SAndy Shevchenko static const struct intel_lpss_platform_info bxt_uart_info = { 116ff0a04a6SAndy Shevchenko .clk_rate = 100000000, 117ff0a04a6SAndy Shevchenko .clk_con_id = "baudclk", 11803152e35SHeikki Krogerus .swnode = &uart_node, 119ff0a04a6SAndy Shevchenko }; 120ff0a04a6SAndy Shevchenko 1219677e6f7SAndy Shevchenko static const struct property_entry bxt_i2c_properties[] = { 1220343b2f4SMika Westerberg PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 42), 1230343b2f4SMika Westerberg PROPERTY_ENTRY_U32("i2c-sda-falling-time-ns", 171), 1240343b2f4SMika Westerberg PROPERTY_ENTRY_U32("i2c-scl-falling-time-ns", 208), 1250343b2f4SMika Westerberg { }, 1260343b2f4SMika Westerberg }; 1270343b2f4SMika Westerberg 12803152e35SHeikki Krogerus static const struct software_node bxt_i2c_node = { 12903152e35SHeikki Krogerus .properties = bxt_i2c_properties, 13003152e35SHeikki Krogerus }; 13103152e35SHeikki Krogerus 132ff0a04a6SAndy Shevchenko static const struct intel_lpss_platform_info bxt_i2c_info = { 133ff0a04a6SAndy Shevchenko .clk_rate = 133000000, 13403152e35SHeikki Krogerus .swnode = &bxt_i2c_node, 135ff0a04a6SAndy Shevchenko }; 136ff0a04a6SAndy Shevchenko 1379677e6f7SAndy Shevchenko static const struct property_entry apl_i2c_properties[] = { 138c50cdd62SJarkko Nikula PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 207), 139c50cdd62SJarkko Nikula PROPERTY_ENTRY_U32("i2c-sda-falling-time-ns", 171), 140c50cdd62SJarkko Nikula PROPERTY_ENTRY_U32("i2c-scl-falling-time-ns", 208), 141c50cdd62SJarkko Nikula { }, 142c50cdd62SJarkko Nikula }; 143c50cdd62SJarkko Nikula 14403152e35SHeikki Krogerus static const struct software_node apl_i2c_node = { 14503152e35SHeikki Krogerus .properties = apl_i2c_properties, 14603152e35SHeikki Krogerus }; 14703152e35SHeikki Krogerus 148c50cdd62SJarkko Nikula static const struct intel_lpss_platform_info apl_i2c_info = { 149c50cdd62SJarkko Nikula .clk_rate = 133000000, 15003152e35SHeikki Krogerus .swnode = &apl_i2c_node, 151c50cdd62SJarkko Nikula }; 152c50cdd62SJarkko Nikula 1539677e6f7SAndy Shevchenko static const struct property_entry glk_i2c_properties[] = { 1543f31bc67SJarkko Nikula PROPERTY_ENTRY_U32("i2c-sda-hold-time-ns", 313), 1553f31bc67SJarkko Nikula PROPERTY_ENTRY_U32("i2c-sda-falling-time-ns", 171), 1563f31bc67SJarkko Nikula PROPERTY_ENTRY_U32("i2c-scl-falling-time-ns", 290), 1573f31bc67SJarkko Nikula { }, 1583f31bc67SJarkko Nikula }; 1593f31bc67SJarkko Nikula 16003152e35SHeikki Krogerus static const struct software_node glk_i2c_node = { 16103152e35SHeikki Krogerus .properties = glk_i2c_properties, 16203152e35SHeikki Krogerus }; 16303152e35SHeikki Krogerus 1643f31bc67SJarkko Nikula static const struct intel_lpss_platform_info glk_i2c_info = { 1653f31bc67SJarkko Nikula .clk_rate = 133000000, 16603152e35SHeikki Krogerus .swnode = &glk_i2c_node, 1673f31bc67SJarkko Nikula }; 1683f31bc67SJarkko Nikula 1694e93a658SJarkko Nikula static const struct intel_lpss_platform_info cnl_i2c_info = { 1704e93a658SJarkko Nikula .clk_rate = 216000000, 17103152e35SHeikki Krogerus .swnode = &spt_i2c_node, 1724e93a658SJarkko Nikula }; 1734e93a658SJarkko Nikula 174d2923aa4SJarkko Nikula static const struct intel_lpss_platform_info ehl_i2c_info = { 175d2923aa4SJarkko Nikula .clk_rate = 100000000, 17603152e35SHeikki Krogerus .swnode = &bxt_i2c_node, 177d2923aa4SJarkko Nikula }; 178d2923aa4SJarkko Nikula 1794b45efe8SAndy Shevchenko static const struct pci_device_id intel_lpss_pci_ids[] = { 180dd047dceSAndy Shevchenko /* CML-LP */ 181dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02a8), (kernel_ulong_t)&spt_uart_info }, 182dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02a9), (kernel_ulong_t)&spt_uart_info }, 183dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02aa), (kernel_ulong_t)&spt_info }, 184dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02ab), (kernel_ulong_t)&spt_info }, 185dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02c5), (kernel_ulong_t)&cnl_i2c_info }, 186dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02c6), (kernel_ulong_t)&cnl_i2c_info }, 187dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02c7), (kernel_ulong_t)&spt_uart_info }, 188dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02e8), (kernel_ulong_t)&cnl_i2c_info }, 189dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02e9), (kernel_ulong_t)&cnl_i2c_info }, 190dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02ea), (kernel_ulong_t)&cnl_i2c_info }, 191dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02eb), (kernel_ulong_t)&cnl_i2c_info }, 192dd662907SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x02fb), (kernel_ulong_t)&spt_info }, 193dd047dceSAndy Shevchenko /* CML-H */ 194dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06a8), (kernel_ulong_t)&spt_uart_info }, 195dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06a9), (kernel_ulong_t)&spt_uart_info }, 196dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06aa), (kernel_ulong_t)&spt_info }, 197dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06ab), (kernel_ulong_t)&spt_info }, 198dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06c7), (kernel_ulong_t)&spt_uart_info }, 199dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06e8), (kernel_ulong_t)&cnl_i2c_info }, 200dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06e9), (kernel_ulong_t)&cnl_i2c_info }, 201dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06ea), (kernel_ulong_t)&cnl_i2c_info }, 202dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06eb), (kernel_ulong_t)&cnl_i2c_info }, 203dd047dceSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x06fb), (kernel_ulong_t)&spt_info }, 204023269ccSHuiquan Zhong /* BXT A-Step */ 205ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0aac), (kernel_ulong_t)&bxt_i2c_info }, 206ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0aae), (kernel_ulong_t)&bxt_i2c_info }, 207ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ab0), (kernel_ulong_t)&bxt_i2c_info }, 208ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ab2), (kernel_ulong_t)&bxt_i2c_info }, 209ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ab4), (kernel_ulong_t)&bxt_i2c_info }, 210ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ab6), (kernel_ulong_t)&bxt_i2c_info }, 211ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ab8), (kernel_ulong_t)&bxt_i2c_info }, 212ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0aba), (kernel_ulong_t)&bxt_i2c_info }, 213ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0abc), (kernel_ulong_t)&bxt_uart_info }, 214ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0abe), (kernel_ulong_t)&bxt_uart_info }, 215ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ac0), (kernel_ulong_t)&bxt_uart_info }, 216ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ac2), (kernel_ulong_t)&bxt_info }, 217ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ac4), (kernel_ulong_t)&bxt_info }, 218ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0ac6), (kernel_ulong_t)&bxt_info }, 219ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x0aee), (kernel_ulong_t)&bxt_uart_info }, 220023269ccSHuiquan Zhong /* BXT B-Step */ 221023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1aac), (kernel_ulong_t)&bxt_i2c_info }, 222023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1aae), (kernel_ulong_t)&bxt_i2c_info }, 223023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ab0), (kernel_ulong_t)&bxt_i2c_info }, 224023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ab2), (kernel_ulong_t)&bxt_i2c_info }, 225023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ab4), (kernel_ulong_t)&bxt_i2c_info }, 226023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ab6), (kernel_ulong_t)&bxt_i2c_info }, 227023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ab8), (kernel_ulong_t)&bxt_i2c_info }, 228023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1aba), (kernel_ulong_t)&bxt_i2c_info }, 229023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1abc), (kernel_ulong_t)&bxt_uart_info }, 230023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1abe), (kernel_ulong_t)&bxt_uart_info }, 231023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ac0), (kernel_ulong_t)&bxt_uart_info }, 232023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ac2), (kernel_ulong_t)&bxt_info }, 233023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ac4), (kernel_ulong_t)&bxt_info }, 234023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1ac6), (kernel_ulong_t)&bxt_info }, 235023269ccSHuiquan Zhong { PCI_VDEVICE(INTEL, 0x1aee), (kernel_ulong_t)&bxt_uart_info }, 2363ea2e4eaSAndy Shevchenko /* EBG */ 2373ea2e4eaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x1bad), (kernel_ulong_t)&bxt_uart_info }, 2383ea2e4eaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x1bae), (kernel_ulong_t)&bxt_uart_info }, 239f80e78aaSAndy Shevchenko /* GLK */ 2403f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31ac), (kernel_ulong_t)&glk_i2c_info }, 2413f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31ae), (kernel_ulong_t)&glk_i2c_info }, 2423f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31b0), (kernel_ulong_t)&glk_i2c_info }, 2433f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31b2), (kernel_ulong_t)&glk_i2c_info }, 2443f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31b4), (kernel_ulong_t)&glk_i2c_info }, 2453f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31b6), (kernel_ulong_t)&glk_i2c_info }, 2463f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31b8), (kernel_ulong_t)&glk_i2c_info }, 2473f31bc67SJarkko Nikula { PCI_VDEVICE(INTEL, 0x31ba), (kernel_ulong_t)&glk_i2c_info }, 248f80e78aaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x31bc), (kernel_ulong_t)&bxt_uart_info }, 249f80e78aaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x31be), (kernel_ulong_t)&bxt_uart_info }, 250f80e78aaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x31c0), (kernel_ulong_t)&bxt_uart_info }, 251f80e78aaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x31c2), (kernel_ulong_t)&bxt_info }, 252f80e78aaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x31c4), (kernel_ulong_t)&bxt_info }, 253f80e78aaSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x31c6), (kernel_ulong_t)&bxt_info }, 254f88314c1SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x31ee), (kernel_ulong_t)&bxt_uart_info }, 255a13c93b3SMika Westerberg /* ICL-LP */ 256a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34a8), (kernel_ulong_t)&spt_uart_info }, 257a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34a9), (kernel_ulong_t)&spt_uart_info }, 258a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34aa), (kernel_ulong_t)&spt_info }, 259a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34ab), (kernel_ulong_t)&spt_info }, 260a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34c5), (kernel_ulong_t)&bxt_i2c_info }, 261a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34c6), (kernel_ulong_t)&bxt_i2c_info }, 262a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34c7), (kernel_ulong_t)&spt_uart_info }, 263a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34e8), (kernel_ulong_t)&bxt_i2c_info }, 264a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34e9), (kernel_ulong_t)&bxt_i2c_info }, 265a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34ea), (kernel_ulong_t)&bxt_i2c_info }, 266a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34eb), (kernel_ulong_t)&bxt_i2c_info }, 267a13c93b3SMika Westerberg { PCI_VDEVICE(INTEL, 0x34fb), (kernel_ulong_t)&spt_info }, 268ddb1ada4SOrlando Chamberlain /* ICL-N */ 2699651cf2cSOrlando Chamberlain { PCI_VDEVICE(INTEL, 0x38a8), (kernel_ulong_t)&spt_uart_info }, 270bb7fcad4SAndy Shevchenko /* TGL-H */ 271bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43a7), (kernel_ulong_t)&bxt_uart_info }, 272bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43a8), (kernel_ulong_t)&bxt_uart_info }, 273bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43a9), (kernel_ulong_t)&bxt_uart_info }, 274bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43aa), (kernel_ulong_t)&bxt_info }, 275bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43ab), (kernel_ulong_t)&bxt_info }, 276bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43ad), (kernel_ulong_t)&bxt_i2c_info }, 277bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43ae), (kernel_ulong_t)&bxt_i2c_info }, 278bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43d8), (kernel_ulong_t)&bxt_i2c_info }, 279bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43da), (kernel_ulong_t)&bxt_uart_info }, 280bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43e8), (kernel_ulong_t)&bxt_i2c_info }, 281bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43e9), (kernel_ulong_t)&bxt_i2c_info }, 282bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43ea), (kernel_ulong_t)&bxt_i2c_info }, 283bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43eb), (kernel_ulong_t)&bxt_i2c_info }, 284bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43fb), (kernel_ulong_t)&bxt_info }, 285bb7fcad4SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x43fd), (kernel_ulong_t)&bxt_info }, 28601e4eceeSAndy Shevchenko /* EHL */ 28701e4eceeSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4b28), (kernel_ulong_t)&bxt_uart_info }, 28801e4eceeSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4b29), (kernel_ulong_t)&bxt_uart_info }, 28901e4eceeSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4b2a), (kernel_ulong_t)&bxt_info }, 29001e4eceeSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4b2b), (kernel_ulong_t)&bxt_info }, 29101e4eceeSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4b37), (kernel_ulong_t)&bxt_info }, 292d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b44), (kernel_ulong_t)&ehl_i2c_info }, 293d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b45), (kernel_ulong_t)&ehl_i2c_info }, 294d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b4b), (kernel_ulong_t)&ehl_i2c_info }, 295d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b4c), (kernel_ulong_t)&ehl_i2c_info }, 29601e4eceeSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4b4d), (kernel_ulong_t)&bxt_uart_info }, 297d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b78), (kernel_ulong_t)&ehl_i2c_info }, 298d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b79), (kernel_ulong_t)&ehl_i2c_info }, 299d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b7a), (kernel_ulong_t)&ehl_i2c_info }, 300d2923aa4SJarkko Nikula { PCI_VDEVICE(INTEL, 0x4b7b), (kernel_ulong_t)&ehl_i2c_info }, 30157b89dd2SAndy Shevchenko /* JSL */ 30257b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4da8), (kernel_ulong_t)&spt_uart_info }, 30357b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4da9), (kernel_ulong_t)&spt_uart_info }, 30457b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4daa), (kernel_ulong_t)&spt_info }, 30557b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4dab), (kernel_ulong_t)&spt_info }, 30657b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4dc5), (kernel_ulong_t)&bxt_i2c_info }, 30757b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4dc6), (kernel_ulong_t)&bxt_i2c_info }, 3089a875245SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4dc7), (kernel_ulong_t)&spt_uart_info }, 30957b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4de8), (kernel_ulong_t)&bxt_i2c_info }, 31057b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4de9), (kernel_ulong_t)&bxt_i2c_info }, 31157b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4dea), (kernel_ulong_t)&bxt_i2c_info }, 31257b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4deb), (kernel_ulong_t)&bxt_i2c_info }, 31357b89dd2SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x4dfb), (kernel_ulong_t)&spt_info }, 314f7b67321SAndy Shevchenko /* ADL-P */ 315f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51a8), (kernel_ulong_t)&bxt_uart_info }, 316f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51a9), (kernel_ulong_t)&bxt_uart_info }, 317f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51aa), (kernel_ulong_t)&bxt_info }, 318f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51ab), (kernel_ulong_t)&bxt_info }, 319f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51c5), (kernel_ulong_t)&bxt_i2c_info }, 320f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51c6), (kernel_ulong_t)&bxt_i2c_info }, 321f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51c7), (kernel_ulong_t)&bxt_uart_info }, 322*eeb0a442SGaggery Tsai { PCI_VDEVICE(INTEL, 0x51d8), (kernel_ulong_t)&bxt_i2c_info }, 323*eeb0a442SGaggery Tsai { PCI_VDEVICE(INTEL, 0x51d9), (kernel_ulong_t)&bxt_i2c_info }, 324f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51e8), (kernel_ulong_t)&bxt_i2c_info }, 325f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51e9), (kernel_ulong_t)&bxt_i2c_info }, 326f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51ea), (kernel_ulong_t)&bxt_i2c_info }, 327f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51eb), (kernel_ulong_t)&bxt_i2c_info }, 328f7b67321SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x51fb), (kernel_ulong_t)&bxt_info }, 3299fb3cad0SAndy Shevchenko /* ADL-M */ 3309fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54a8), (kernel_ulong_t)&bxt_uart_info }, 3319fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54a9), (kernel_ulong_t)&bxt_uart_info }, 3329fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54aa), (kernel_ulong_t)&bxt_info }, 3339fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54ab), (kernel_ulong_t)&bxt_info }, 3349fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54c5), (kernel_ulong_t)&bxt_i2c_info }, 3359fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54c6), (kernel_ulong_t)&bxt_i2c_info }, 3369fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54c7), (kernel_ulong_t)&bxt_uart_info }, 3379fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54e8), (kernel_ulong_t)&bxt_i2c_info }, 3389fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54e9), (kernel_ulong_t)&bxt_i2c_info }, 3399fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54ea), (kernel_ulong_t)&bxt_i2c_info }, 3409fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54eb), (kernel_ulong_t)&bxt_i2c_info }, 3419fb3cad0SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x54fb), (kernel_ulong_t)&bxt_info }, 342ff0a04a6SAndy Shevchenko /* APL */ 343c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5aac), (kernel_ulong_t)&apl_i2c_info }, 344c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5aae), (kernel_ulong_t)&apl_i2c_info }, 345c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5ab0), (kernel_ulong_t)&apl_i2c_info }, 346c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5ab2), (kernel_ulong_t)&apl_i2c_info }, 347c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5ab4), (kernel_ulong_t)&apl_i2c_info }, 348c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5ab6), (kernel_ulong_t)&apl_i2c_info }, 349c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5ab8), (kernel_ulong_t)&apl_i2c_info }, 350c50cdd62SJarkko Nikula { PCI_VDEVICE(INTEL, 0x5aba), (kernel_ulong_t)&apl_i2c_info }, 351ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x5abc), (kernel_ulong_t)&bxt_uart_info }, 352ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x5abe), (kernel_ulong_t)&bxt_uart_info }, 353ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x5ac0), (kernel_ulong_t)&bxt_uart_info }, 354ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x5ac2), (kernel_ulong_t)&bxt_info }, 355ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x5ac4), (kernel_ulong_t)&bxt_info }, 356ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x5ac6), (kernel_ulong_t)&bxt_info }, 357ff0a04a6SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x5aee), (kernel_ulong_t)&bxt_uart_info }, 3588c70bd58SJarkko Nikula /* RPL-S */ 3598c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a28), (kernel_ulong_t)&bxt_uart_info }, 3608c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a29), (kernel_ulong_t)&bxt_uart_info }, 3618c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a2a), (kernel_ulong_t)&bxt_info }, 3628c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a2b), (kernel_ulong_t)&bxt_info }, 3638c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a4c), (kernel_ulong_t)&bxt_i2c_info }, 3648c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a4d), (kernel_ulong_t)&bxt_i2c_info }, 3658c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a4e), (kernel_ulong_t)&bxt_i2c_info }, 3668c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a4f), (kernel_ulong_t)&bxt_i2c_info }, 3678c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a5c), (kernel_ulong_t)&bxt_uart_info }, 3688c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a79), (kernel_ulong_t)&bxt_info }, 3698c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a7b), (kernel_ulong_t)&bxt_info }, 3708c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a7c), (kernel_ulong_t)&bxt_i2c_info }, 3718c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a7d), (kernel_ulong_t)&bxt_i2c_info }, 3728c70bd58SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7a7e), (kernel_ulong_t)&bxt_uart_info }, 373c7b79a75SJarkko Nikula /* ADL-S */ 374c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7aa8), (kernel_ulong_t)&bxt_uart_info }, 375c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7aa9), (kernel_ulong_t)&bxt_uart_info }, 376c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7aaa), (kernel_ulong_t)&bxt_info }, 377c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7aab), (kernel_ulong_t)&bxt_info }, 378c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7acc), (kernel_ulong_t)&bxt_i2c_info }, 379c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7acd), (kernel_ulong_t)&bxt_i2c_info }, 380c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7ace), (kernel_ulong_t)&bxt_i2c_info }, 381c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7acf), (kernel_ulong_t)&bxt_i2c_info }, 382c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7adc), (kernel_ulong_t)&bxt_uart_info }, 383c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7af9), (kernel_ulong_t)&bxt_info }, 384c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7afb), (kernel_ulong_t)&bxt_info }, 385c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7afc), (kernel_ulong_t)&bxt_i2c_info }, 386c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7afd), (kernel_ulong_t)&bxt_i2c_info }, 387c7b79a75SJarkko Nikula { PCI_VDEVICE(INTEL, 0x7afe), (kernel_ulong_t)&bxt_uart_info }, 3885f039fa7SAndy Shevchenko /* LKF */ 3895f039fa7SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x98a8), (kernel_ulong_t)&bxt_uart_info }, 3905f039fa7SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x98a9), (kernel_ulong_t)&bxt_uart_info }, 3918b2051a1SEd Schaller { PCI_VDEVICE(INTEL, 0x98aa), (kernel_ulong_t)&bxt_info }, 3928b2051a1SEd Schaller { PCI_VDEVICE(INTEL, 0x98c5), (kernel_ulong_t)&bxt_i2c_info }, 3938b2051a1SEd Schaller { PCI_VDEVICE(INTEL, 0x98c6), (kernel_ulong_t)&bxt_i2c_info }, 3945f039fa7SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x98c7), (kernel_ulong_t)&bxt_uart_info }, 3958b2051a1SEd Schaller { PCI_VDEVICE(INTEL, 0x98e8), (kernel_ulong_t)&bxt_i2c_info }, 3968b2051a1SEd Schaller { PCI_VDEVICE(INTEL, 0x98e9), (kernel_ulong_t)&bxt_i2c_info }, 3978b2051a1SEd Schaller { PCI_VDEVICE(INTEL, 0x98ea), (kernel_ulong_t)&bxt_i2c_info }, 3988b2051a1SEd Schaller { PCI_VDEVICE(INTEL, 0x98eb), (kernel_ulong_t)&bxt_i2c_info }, 3994b45efe8SAndy Shevchenko /* SPT-LP */ 4004b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9d27), (kernel_ulong_t)&spt_uart_info }, 4014b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9d28), (kernel_ulong_t)&spt_uart_info }, 4024b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9d29), (kernel_ulong_t)&spt_info }, 4034b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9d2a), (kernel_ulong_t)&spt_info }, 404028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0x9d60), (kernel_ulong_t)&spt_i2c_info }, 405028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0x9d61), (kernel_ulong_t)&spt_i2c_info }, 406028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0x9d62), (kernel_ulong_t)&spt_i2c_info }, 407028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0x9d63), (kernel_ulong_t)&spt_i2c_info }, 408028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0x9d64), (kernel_ulong_t)&spt_i2c_info }, 409028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0x9d65), (kernel_ulong_t)&spt_i2c_info }, 4104b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9d66), (kernel_ulong_t)&spt_uart_info }, 411b418bbffSAndy Shevchenko /* CNL-LP */ 412b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9da8), (kernel_ulong_t)&spt_uart_info }, 413b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9da9), (kernel_ulong_t)&spt_uart_info }, 414b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9daa), (kernel_ulong_t)&spt_info }, 415b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9dab), (kernel_ulong_t)&spt_info }, 4164e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0x9dc5), (kernel_ulong_t)&cnl_i2c_info }, 4174e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0x9dc6), (kernel_ulong_t)&cnl_i2c_info }, 418b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9dc7), (kernel_ulong_t)&spt_uart_info }, 4194e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0x9de8), (kernel_ulong_t)&cnl_i2c_info }, 4204e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0x9de9), (kernel_ulong_t)&cnl_i2c_info }, 4214e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0x9dea), (kernel_ulong_t)&cnl_i2c_info }, 4224e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0x9deb), (kernel_ulong_t)&cnl_i2c_info }, 423f88314c1SAndy Shevchenko { PCI_VDEVICE(INTEL, 0x9dfb), (kernel_ulong_t)&spt_info }, 424ec65b560SAndy Shevchenko /* TGL-LP */ 425ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0a8), (kernel_ulong_t)&bxt_uart_info }, 426ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0a9), (kernel_ulong_t)&bxt_uart_info }, 427ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0aa), (kernel_ulong_t)&spt_info }, 428ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0ab), (kernel_ulong_t)&spt_info }, 429ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0c5), (kernel_ulong_t)&spt_i2c_info }, 430ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0c6), (kernel_ulong_t)&spt_i2c_info }, 431ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0c7), (kernel_ulong_t)&bxt_uart_info }, 432ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0d8), (kernel_ulong_t)&spt_i2c_info }, 433ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0d9), (kernel_ulong_t)&spt_i2c_info }, 434ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0da), (kernel_ulong_t)&bxt_uart_info }, 435ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0db), (kernel_ulong_t)&bxt_uart_info }, 436ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0dc), (kernel_ulong_t)&bxt_uart_info }, 437ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0dd), (kernel_ulong_t)&bxt_uart_info }, 438ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0de), (kernel_ulong_t)&spt_info }, 439ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0df), (kernel_ulong_t)&spt_info }, 440ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0e8), (kernel_ulong_t)&spt_i2c_info }, 441ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0e9), (kernel_ulong_t)&spt_i2c_info }, 442ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0ea), (kernel_ulong_t)&spt_i2c_info }, 443ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0eb), (kernel_ulong_t)&spt_i2c_info }, 444ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0fb), (kernel_ulong_t)&spt_info }, 445ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0fd), (kernel_ulong_t)&spt_info }, 446ec65b560SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa0fe), (kernel_ulong_t)&spt_info }, 4474b45efe8SAndy Shevchenko /* SPT-H */ 4484b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa127), (kernel_ulong_t)&spt_uart_info }, 4494b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa128), (kernel_ulong_t)&spt_uart_info }, 4504b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa129), (kernel_ulong_t)&spt_info }, 4514b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa12a), (kernel_ulong_t)&spt_info }, 452028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0xa160), (kernel_ulong_t)&spt_i2c_info }, 453028af594SMika Westerberg { PCI_VDEVICE(INTEL, 0xa161), (kernel_ulong_t)&spt_i2c_info }, 454e4b91470SFlorian R. Hölzlwimmer { PCI_VDEVICE(INTEL, 0xa162), (kernel_ulong_t)&spt_i2c_info }, 4554b45efe8SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa166), (kernel_ulong_t)&spt_uart_info }, 45677fc5ff6SMika Westerberg /* KBL-H */ 4572c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2a7), (kernel_ulong_t)&spt_uart_info }, 4582c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2a8), (kernel_ulong_t)&spt_uart_info }, 4592c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2a9), (kernel_ulong_t)&spt_info }, 4602c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2aa), (kernel_ulong_t)&spt_info }, 4612c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2e0), (kernel_ulong_t)&spt_i2c_info }, 4622c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2e1), (kernel_ulong_t)&spt_i2c_info }, 4632c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2e2), (kernel_ulong_t)&spt_i2c_info }, 4642c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2e3), (kernel_ulong_t)&spt_i2c_info }, 4652c8c3416SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa2e6), (kernel_ulong_t)&spt_uart_info }, 466b418bbffSAndy Shevchenko /* CNL-H */ 467b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa328), (kernel_ulong_t)&spt_uart_info }, 468b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa329), (kernel_ulong_t)&spt_uart_info }, 469b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa32a), (kernel_ulong_t)&spt_info }, 470b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa32b), (kernel_ulong_t)&spt_info }, 471b418bbffSAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa347), (kernel_ulong_t)&spt_uart_info }, 4724e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa368), (kernel_ulong_t)&cnl_i2c_info }, 4734e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa369), (kernel_ulong_t)&cnl_i2c_info }, 4744e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa36a), (kernel_ulong_t)&cnl_i2c_info }, 4754e93a658SJarkko Nikula { PCI_VDEVICE(INTEL, 0xa36b), (kernel_ulong_t)&cnl_i2c_info }, 476f88314c1SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa37b), (kernel_ulong_t)&spt_info }, 4774e213b45SAndy Shevchenko /* CML-V */ 4784e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3a7), (kernel_ulong_t)&spt_uart_info }, 4794e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3a8), (kernel_ulong_t)&spt_uart_info }, 4804e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3a9), (kernel_ulong_t)&spt_info }, 4814e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3aa), (kernel_ulong_t)&spt_info }, 4824e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3e0), (kernel_ulong_t)&spt_i2c_info }, 4834e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3e1), (kernel_ulong_t)&spt_i2c_info }, 4844e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3e2), (kernel_ulong_t)&spt_i2c_info }, 4854e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3e3), (kernel_ulong_t)&spt_i2c_info }, 4864e213b45SAndy Shevchenko { PCI_VDEVICE(INTEL, 0xa3e6), (kernel_ulong_t)&spt_uart_info }, 4874b45efe8SAndy Shevchenko { } 4884b45efe8SAndy Shevchenko }; 4894b45efe8SAndy Shevchenko MODULE_DEVICE_TABLE(pci, intel_lpss_pci_ids); 4904b45efe8SAndy Shevchenko 4914b45efe8SAndy Shevchenko static struct pci_driver intel_lpss_pci_driver = { 4924b45efe8SAndy Shevchenko .name = "intel-lpss", 4934b45efe8SAndy Shevchenko .id_table = intel_lpss_pci_ids, 4944b45efe8SAndy Shevchenko .probe = intel_lpss_pci_probe, 4954b45efe8SAndy Shevchenko .remove = intel_lpss_pci_remove, 4964b45efe8SAndy Shevchenko .driver = { 4974b45efe8SAndy Shevchenko .pm = &intel_lpss_pci_pm_ops, 4984b45efe8SAndy Shevchenko }, 4994b45efe8SAndy Shevchenko }; 5004b45efe8SAndy Shevchenko 5014b45efe8SAndy Shevchenko module_pci_driver(intel_lpss_pci_driver); 5024b45efe8SAndy Shevchenko 5034b45efe8SAndy Shevchenko MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>"); 5044b45efe8SAndy Shevchenko MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>"); 5054b45efe8SAndy Shevchenko MODULE_DESCRIPTION("Intel LPSS PCI driver"); 5064b45efe8SAndy Shevchenko MODULE_LICENSE("GPL v2"); 507