Module Name: src
Committed By: jmcneill
Date: Tue Jan 26 00:19:53 UTC 2021
Modified Files:
src/sys/arch/arm/broadcom: bcm2835_bsc_acpi.c
src/sys/arch/x86/pci: dwiic_pci.c
src/sys/dev/acpi: acpi_i2c.c acpi_i2c.h acpi_util.c acpi_util.h
dwiic_acpi.c nxpiic_acpi.c
src/sys/dev/i2c: i2cmux.c
Log Message:
Add a device_t parameter to acpi_enter_i2c_devs. If non-NULL, all child
acpi_devnodes will be claimed by that device so we don't later try to
attach a duplicate device to that node at acpinodebus.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/broadcom/bcm2835_bsc_acpi.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/x86/pci/dwiic_pci.c
cvs rdiff -u -r1.9 -r1.10 src/sys/dev/acpi/acpi_i2c.c \
src/sys/dev/acpi/acpi_util.h
cvs rdiff -u -r1.1 -r1.2 src/sys/dev/acpi/acpi_i2c.h
cvs rdiff -u -r1.20 -r1.21 src/sys/dev/acpi/acpi_util.c
cvs rdiff -u -r1.5 -r1.6 src/sys/dev/acpi/dwiic_acpi.c
cvs rdiff -u -r1.2 -r1.3 src/sys/dev/acpi/nxpiic_acpi.c
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/i2c/i2cmux.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/arm/broadcom/bcm2835_bsc_acpi.c
diff -u src/sys/arch/arm/broadcom/bcm2835_bsc_acpi.c:1.1 src/sys/arch/arm/broadcom/bcm2835_bsc_acpi.c:1.2
--- src/sys/arch/arm/broadcom/bcm2835_bsc_acpi.c:1.1 Tue Mar 31 12:23:17 2020
+++ src/sys/arch/arm/broadcom/bcm2835_bsc_acpi.c Tue Jan 26 00:19:52 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_bsc_acpi.c,v 1.1 2020/03/31 12:23:17 jmcneill Exp $ */
+/* $NetBSD: bcm2835_bsc_acpi.c,v 1.2 2021/01/26 00:19:52 jmcneill Exp $ */
/*-
* Copyright (c) 2020 Jared McNeill <[email protected]>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_acpi.c,v 1.1 2020/03/31 12:23:17 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc_acpi.c,v 1.2 2021/01/26 00:19:52 jmcneill Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -160,7 +160,7 @@ bsciic_acpi_attach(device_t parent, devi
memset(&iba, 0, sizeof(iba));
iba.iba_tag = &sc->sc_i2c;
- iba.iba_child_devices = acpi_enter_i2c_devs(aa->aa_node);
+ iba.iba_child_devices = acpi_enter_i2c_devs(self, aa->aa_node);
config_found_ia(self, "i2cbus", &iba, iicbus_print);
done:
Index: src/sys/arch/x86/pci/dwiic_pci.c
diff -u src/sys/arch/x86/pci/dwiic_pci.c:1.2 src/sys/arch/x86/pci/dwiic_pci.c:1.3
--- src/sys/arch/x86/pci/dwiic_pci.c:1.2 Wed Sep 26 19:06:33 2018
+++ src/sys/arch/x86/pci/dwiic_pci.c Tue Jan 26 00:19:52 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: dwiic_pci.c,v 1.2 2018/09/26 19:06:33 jakllsch Exp $ */
+/* $NetBSD: dwiic_pci.c,v 1.3 2021/01/26 00:19:52 jmcneill 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.2 2018/09/26 19:06:33 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dwiic_pci.c,v 1.3 2021/01/26 00:19:52 jmcneill Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -170,7 +170,7 @@ pci_dwiic_attach(device_t parent, device
if (sc->sc_acpinode) {
sc->sc_dwiic.sc_iba.iba_child_devices =
- acpi_enter_i2c_devs(sc->sc_acpinode);
+ acpi_enter_i2c_devs(NULL, sc->sc_acpinode);
} else {
aprint_verbose_dev(self, "no matching ACPI node\n");
}
Index: src/sys/dev/acpi/acpi_i2c.c
diff -u src/sys/dev/acpi/acpi_i2c.c:1.9 src/sys/dev/acpi/acpi_i2c.c:1.10
--- src/sys/dev/acpi/acpi_i2c.c:1.9 Mon Jan 25 12:15:32 2021
+++ src/sys/dev/acpi/acpi_i2c.c Tue Jan 26 00:19:53 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_i2c.c,v 1.9 2021/01/25 12:15:32 jmcneill Exp $ */
+/* $NetBSD: acpi_i2c.c,v 1.10 2021/01/26 00:19:53 jmcneill Exp $ */
/*-
* Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_i2c.c,v 1.9 2021/01/25 12:15:32 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_i2c.c,v 1.10 2021/01/26 00:19:53 jmcneill Exp $");
#include <dev/acpi/acpireg.h>
#include <dev/acpi/acpivar.h>
@@ -225,7 +225,7 @@ acpi_enter_i2c_device(struct acpi_devnod
prop_array_t
-acpi_enter_i2c_devs(struct acpi_devnode *devnode)
+acpi_enter_i2c_devs(device_t dev, struct acpi_devnode *devnode)
{
struct acpi_devnode *ad;
prop_array_t array = prop_array_create();
@@ -240,5 +240,10 @@ acpi_enter_i2c_devs(struct acpi_devnode
continue;
acpi_enter_i2c_device(ad, array);
}
+
+ if (dev != NULL) {
+ acpi_claim_childdevs(dev, devnode);
+ }
+
return array;
}
Index: src/sys/dev/acpi/acpi_util.h
diff -u src/sys/dev/acpi/acpi_util.h:1.9 src/sys/dev/acpi/acpi_util.h:1.10
--- src/sys/dev/acpi/acpi_util.h:1.9 Thu Jan 14 14:35:53 2021
+++ src/sys/dev/acpi/acpi_util.h Tue Jan 26 00:19:53 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_util.h,v 1.9 2021/01/14 14:35:53 thorpej Exp $ */
+/* $NetBSD: acpi_util.h,v 1.10 2021/01/26 00:19:53 jmcneill Exp $ */
/*-
* Copyright (c) 2003, 2007 The NetBSD Foundation, Inc.
@@ -102,4 +102,6 @@ ACPI_STATUS acpi_dsm_integer(ACPI_HANDL
ACPI_INTEGER, const ACPI_OBJECT *,
ACPI_INTEGER *);
+ACPI_STATUS acpi_claim_childdevs(device_t, struct acpi_devnode *);
+
#endif /* !_SYS_DEV_ACPI_ACPI_UTIL_H */
Index: src/sys/dev/acpi/acpi_i2c.h
diff -u src/sys/dev/acpi/acpi_i2c.h:1.1 src/sys/dev/acpi/acpi_i2c.h:1.2
--- src/sys/dev/acpi/acpi_i2c.h:1.1 Sun Dec 10 16:51:30 2017
+++ src/sys/dev/acpi/acpi_i2c.h Tue Jan 26 00:19:53 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_i2c.h,v 1.1 2017/12/10 16:51:30 bouyer Exp $ */
+/* $NetBSD: acpi_i2c.h,v 1.2 2021/01/26 00:19:53 jmcneill Exp $ */
/*-
* Copyright (c) 2017 The NetBSD Foundation, Inc.
@@ -34,5 +34,5 @@
#define _SYS_DEV_ACPI_ACPI_I2C_H
#include <prop/proplib.h>
-prop_array_t acpi_enter_i2c_devs(struct acpi_devnode *);
+prop_array_t acpi_enter_i2c_devs(device_t, struct acpi_devnode *);
#endif /* _SYS_DEV_ACPI_ACPI_I2C_H */
Index: src/sys/dev/acpi/acpi_util.c
diff -u src/sys/dev/acpi/acpi_util.c:1.20 src/sys/dev/acpi/acpi_util.c:1.21
--- src/sys/dev/acpi/acpi_util.c:1.20 Thu Jan 14 14:35:53 2021
+++ src/sys/dev/acpi/acpi_util.c Tue Jan 26 00:19:53 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_util.c,v 1.20 2021/01/14 14:35:53 thorpej Exp $ */
+/* $NetBSD: acpi_util.c,v 1.21 2021/01/26 00:19:53 jmcneill Exp $ */
/*-
* Copyright (c) 2003, 2007, 2021 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_util.c,v 1.20 2021/01/14 14:35:53 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_util.c,v 1.21 2021/01/26 00:19:53 jmcneill Exp $");
#include <sys/param.h>
#include <sys/kmem.h>
@@ -864,3 +864,19 @@ acpi_dsm(ACPI_HANDLE handle, uint8_t *uu
return acpi_dsm_typed(handle, uuid, rev, func, arg3, ACPI_TYPE_ANY,
return_obj);
}
+
+ACPI_STATUS
+acpi_claim_childdevs(device_t dev, struct acpi_devnode *devnode)
+{
+ struct acpi_devnode *ad;
+
+ SIMPLEQ_FOREACH(ad, &devnode->ad_child_head, ad_child_list) {
+ if (ad->ad_device != NULL)
+ continue;
+ aprint_debug(dev, "claiming %s\n", acpi_name(ad->ad_handle));
+ ad->ad_device = dev;
+ acpi_claim_childdevs(dev, ad);
+ }
+
+ return AE_OK;
+}
Index: src/sys/dev/acpi/dwiic_acpi.c
diff -u src/sys/dev/acpi/dwiic_acpi.c:1.5 src/sys/dev/acpi/dwiic_acpi.c:1.6
--- src/sys/dev/acpi/dwiic_acpi.c:1.5 Sun Jan 24 16:33:48 2021
+++ src/sys/dev/acpi/dwiic_acpi.c Tue Jan 26 00:19:53 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: dwiic_acpi.c,v 1.5 2021/01/24 16:33:48 jmcneill Exp $ */
+/* $NetBSD: dwiic_acpi.c,v 1.6 2021/01/26 00:19:53 jmcneill Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dwiic_acpi.c,v 1.5 2021/01/24 16:33:48 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dwiic_acpi.c,v 1.6 2021/01/26 00:19:53 jmcneill Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -128,7 +128,7 @@ dwiic_acpi_attach(device_t parent, devic
dwiic_acpi_configure(sc, aa->aa_node->ad_handle);
- sc->sc_iba.iba_child_devices = acpi_enter_i2c_devs(aa->aa_node);
+ sc->sc_iba.iba_child_devices = acpi_enter_i2c_devs(self, aa->aa_node);
dwiic_attach(sc);
Index: src/sys/dev/acpi/nxpiic_acpi.c
diff -u src/sys/dev/acpi/nxpiic_acpi.c:1.2 src/sys/dev/acpi/nxpiic_acpi.c:1.3
--- src/sys/dev/acpi/nxpiic_acpi.c:1.2 Mon Jan 25 12:09:58 2021
+++ src/sys/dev/acpi/nxpiic_acpi.c Tue Jan 26 00:19:53 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: nxpiic_acpi.c,v 1.2 2021/01/25 12:09:58 jmcneill Exp $ */
+/* $NetBSD: nxpiic_acpi.c,v 1.3 2021/01/26 00:19:53 jmcneill Exp $ */
/*-
* Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nxpiic_acpi.c,v 1.2 2021/01/25 12:09:58 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nxpiic_acpi.c,v 1.3 2021/01/26 00:19:53 jmcneill Exp $");
#include <sys/param.h>
#include <sys/bus.h>
@@ -151,7 +151,7 @@ nxpiic_acpi_attach(device_t parent, devi
msc->sc_flags |= MOTOI2C_F_ENABLE_INV | MOTOI2C_F_STATUS_W1C;
msc->sc_iord = nxpiic_acpi_iord;
msc->sc_iowr = nxpiic_acpi_iowr;
- msc->sc_child_devices = acpi_enter_i2c_devs(aa->aa_node);
+ msc->sc_child_devices = acpi_enter_i2c_devs(self, aa->aa_node);
motoi2c_attach_common(self, msc, &settings);
Index: src/sys/dev/i2c/i2cmux.c
diff -u src/sys/dev/i2c/i2cmux.c:1.3 src/sys/dev/i2c/i2cmux.c:1.4
--- src/sys/dev/i2c/i2cmux.c:1.3 Mon Jan 25 12:18:18 2021
+++ src/sys/dev/i2c/i2cmux.c Tue Jan 26 00:19:53 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i2cmux.c,v 1.3 2021/01/25 12:18:18 jmcneill Exp $ */
+/* $NetBSD: i2cmux.c,v 1.4 2021/01/26 00:19:53 jmcneill Exp $ */
/*-
* Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
#endif
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i2cmux.c,v 1.3 2021/01/25 12:18:18 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i2cmux.c,v 1.4 2021/01/26 00:19:53 jmcneill Exp $");
#include <sys/types.h>
#include <sys/device.h>
@@ -199,7 +199,7 @@ iicmux_attach_bus(struct iicmux_softc *
KASSERT(ad != NULL);
struct i2cbus_attach_args iba = {
.iba_tag = &bus->controller,
- .iba_child_devices = acpi_enter_i2c_devs(ad)
+ .iba_child_devices = acpi_enter_i2c_devs(NULL, ad)
};
config_found_ia(sc->sc_dev, "i2cbus", &iba, iicbus_print);
} break;