Module Name: src
Committed By: msaitoh
Date: Wed Oct 27 14:53:12 UTC 2021
Modified Files:
src/sys/arch/x86/pci: dwiic_pci.c
Log Message:
Add many Intel I2C devices.
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/x86/pci/dwiic_pci.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/x86/pci/dwiic_pci.c
diff -u src/sys/arch/x86/pci/dwiic_pci.c:1.6 src/sys/arch/x86/pci/dwiic_pci.c:1.7
--- src/sys/arch/x86/pci/dwiic_pci.c:1.6 Sat Aug 7 16:19:07 2021
+++ src/sys/arch/x86/pci/dwiic_pci.c Wed Oct 27 14:53:12 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: dwiic_pci.c,v 1.6 2021/08/07 16:19:07 thorpej Exp $ */
+/* $NetBSD: dwiic_pci.c,v 1.7 2021/10/27 14:53:12 msaitoh Exp $ */
/*-
* Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dwiic_pci.c,v 1.6 2021/08/07 16:19:07 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dwiic_pci.c,v 1.7 2021/10/27 14:53:12 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -65,6 +65,106 @@ struct pci_dwiic_softc {
struct acpi_devnode *sc_acpinode;
};
+#define VIDDID(a, b) PCI_ID_CODE(PCI_VENDOR_ ## a, PCI_PRODUCT_ ## a ## _ ## b)
+
+static const struct device_compatible_entry compat_data[] = {
+ { .id = VIDDID(INTEL, CORE4G_M_S_I2C_0) },
+ { .id = VIDDID(INTEL, CORE4G_M_S_I2C_1) },
+ { .id = VIDDID(INTEL, 100SERIES_I2C_0) },
+ { .id = VIDDID(INTEL, 100SERIES_I2C_1) },
+ { .id = VIDDID(INTEL, 100SERIES_I2C_2) },
+ { .id = VIDDID(INTEL, 100SERIES_I2C_3) },
+ { .id = VIDDID(INTEL, 100SERIES_LP_I2C_0) },
+ { .id = VIDDID(INTEL, 100SERIES_LP_I2C_1) },
+ { .id = VIDDID(INTEL, 100SERIES_LP_I2C_2) },
+ { .id = VIDDID(INTEL, 100SERIES_LP_I2C_3) },
+ { .id = VIDDID(INTEL, 100SERIES_LP_I2C_4) },
+ { .id = VIDDID(INTEL, 100SERIES_LP_I2C_5) },
+ { .id = VIDDID(INTEL, 2HS_I2C_0) },
+ { .id = VIDDID(INTEL, 2HS_I2C_1) },
+ { .id = VIDDID(INTEL, 2HS_I2C_2) },
+ { .id = VIDDID(INTEL, 2HS_I2C_3) },
+ { .id = VIDDID(INTEL, 3HS_I2C_0) },
+ { .id = VIDDID(INTEL, 3HS_I2C_1) },
+ { .id = VIDDID(INTEL, 3HS_I2C_2) },
+ { .id = VIDDID(INTEL, 3HS_I2C_3) },
+ { .id = VIDDID(INTEL, 3HS_U_I2C_0) },
+ { .id = VIDDID(INTEL, 3HS_U_I2C_1) },
+ { .id = VIDDID(INTEL, 3HS_U_I2C_2) },
+ { .id = VIDDID(INTEL, 3HS_U_I2C_3) },
+ { .id = VIDDID(INTEL, 3HS_U_I2C_4) },
+ { .id = VIDDID(INTEL, 3HS_U_I2C_5) },
+ { .id = VIDDID(INTEL, 4HS_H_I2C_0) },
+ { .id = VIDDID(INTEL, 4HS_H_I2C_1) },
+ { .id = VIDDID(INTEL, 4HS_H_I2C_2) },
+ { .id = VIDDID(INTEL, 4HS_H_I2C_3) },
+ { .id = VIDDID(INTEL, 4HS_V_I2C_0) },
+ { .id = VIDDID(INTEL, 4HS_V_I2C_1) },
+ { .id = VIDDID(INTEL, 4HS_V_I2C_2) },
+ { .id = VIDDID(INTEL, 4HS_V_I2C_3) },
+ { .id = VIDDID(INTEL, CMTLK_I2C_0) }, /* 4HS LP */
+ { .id = VIDDID(INTEL, CMTLK_I2C_1) },
+ { .id = VIDDID(INTEL, CMTLK_I2C_2) },
+ { .id = VIDDID(INTEL, CMTLK_I2C_3) },
+ { .id = VIDDID(INTEL, CMTLK_I2C_4) },
+ { .id = VIDDID(INTEL, CMTLK_I2C_5) },
+ { .id = VIDDID(INTEL, 495_YU_I2C_0) },
+ { .id = VIDDID(INTEL, 495_YU_I2C_1) },
+ { .id = VIDDID(INTEL, 495_YU_I2C_2) },
+ { .id = VIDDID(INTEL, 495_YU_I2C_3) },
+ { .id = VIDDID(INTEL, 495_YU_I2C_4) },
+ { .id = VIDDID(INTEL, 495_YU_I2C_5) },
+ { .id = VIDDID(INTEL, 5HS_H_I2C_0) },
+ { .id = VIDDID(INTEL, 5HS_H_I2C_1) },
+ { .id = VIDDID(INTEL, 5HS_H_I2C_2) },
+ { .id = VIDDID(INTEL, 5HS_H_I2C_3) },
+ { .id = VIDDID(INTEL, 5HS_H_I2C_4) },
+ { .id = VIDDID(INTEL, 5HS_H_I2C_5) },
+ { .id = VIDDID(INTEL, 5HS_H_I2C_6) },
+ { .id = VIDDID(INTEL, 5HS_LP_I2C_0) },
+ { .id = VIDDID(INTEL, 5HS_LP_I2C_1) },
+ { .id = VIDDID(INTEL, 5HS_LP_I2C_2) },
+ { .id = VIDDID(INTEL, 5HS_LP_I2C_3) },
+ { .id = VIDDID(INTEL, 5HS_LP_I2C_4) },
+ { .id = VIDDID(INTEL, 5HS_LP_I2C_5) },
+ { .id = VIDDID(INTEL, BAYTRAIL_SIO_I2C1) },
+ { .id = VIDDID(INTEL, BAYTRAIL_SIO_I2C2) },
+ { .id = VIDDID(INTEL, BAYTRAIL_SIO_I2C3) },
+ { .id = VIDDID(INTEL, BAYTRAIL_SIO_I2C4) },
+ { .id = VIDDID(INTEL, BAYTRAIL_SIO_I2C5) },
+ { .id = VIDDID(INTEL, BAYTRAIL_SIO_I2C6) },
+ { .id = VIDDID(INTEL, BAYTRAIL_SIO_I2C7) },
+ { .id = VIDDID(INTEL, BSW_SIO_I2C_1) },
+ { .id = VIDDID(INTEL, BSW_SIO_I2C_2) },
+ { .id = VIDDID(INTEL, BSW_SIO_I2C_3) },
+ { .id = VIDDID(INTEL, BSW_SIO_I2C_4) },
+ { .id = VIDDID(INTEL, BSW_SIO_I2C_5) },
+ { .id = VIDDID(INTEL, BSW_SIO_I2C_6) },
+ { .id = VIDDID(INTEL, BSW_SIO_I2C_7) },
+ { .id = VIDDID(INTEL, APL_I2C_0) },
+ { .id = VIDDID(INTEL, APL_I2C_1) },
+ { .id = VIDDID(INTEL, APL_I2C_2) },
+ { .id = VIDDID(INTEL, APL_I2C_3) },
+ { .id = VIDDID(INTEL, APL_I2C_4) },
+ { .id = VIDDID(INTEL, APL_I2C_5) },
+ { .id = VIDDID(INTEL, APL_I2C_6) },
+ { .id = VIDDID(INTEL, APL_I2C_7) },
+ { .id = VIDDID(INTEL, GLK_I2C_0) },
+ { .id = VIDDID(INTEL, GLK_I2C_1) },
+ { .id = VIDDID(INTEL, GLK_I2C_2) },
+ { .id = VIDDID(INTEL, GLK_I2C_3) },
+ { .id = VIDDID(INTEL, GLK_I2C_4) },
+ { .id = VIDDID(INTEL, GLK_I2C_5) },
+ { .id = VIDDID(INTEL, GLK_I2C_6) },
+ { .id = VIDDID(INTEL, GLK_I2C_7) },
+ { .id = VIDDID(INTEL, JSL_LPSS_I2C_0) },
+ { .id = VIDDID(INTEL, JSL_LPSS_I2C_1) },
+ { .id = VIDDID(INTEL, JSL_LPSS_I2C_2) },
+ { .id = VIDDID(INTEL, JSL_LPSS_I2C_3) },
+
+ PCI_COMPAT_EOL
+};
+
static uint32_t
lpss_read(struct pci_dwiic_softc *sc, int offset)
{
@@ -92,14 +192,7 @@ pci_dwiic_match(device_t parent, cfdata_
{
struct pci_attach_args *pa = aux;
- if (PCI_VENDOR(pa->pa_id) != PCI_VENDOR_INTEL)
- return 0;
-
- if (PCI_PRODUCT(pa->pa_id) < PCI_PRODUCT_INTEL_100SERIES_LP_I2C_0 ||
- PCI_PRODUCT(pa->pa_id) > PCI_PRODUCT_INTEL_100SERIES_LP_I2C_3)
- return 0;
-
- return 1;
+ return pci_compatible_match(pa, compat_data);
}
void