Module Name: src Committed By: thorpej Date: Wed May 9 02:53:00 UTC 2018
Modified Files: src/sys/arch/arm/broadcom: bcm2835_bsc.c src/sys/arch/arm/nvidia: tegra_i2c.c src/sys/arch/arm/samsung: exynos_i2c.c src/sys/arch/arm/sunxi: sunxi_rsb.c sunxi_twi.c Log Message: If we don't get informed (via device properties) of child I2C devices, don't assign an empty array to iba.iba_child_devices, as it will prevent indirect configuration of the I2C bus from occurring. Tested on Raspberry Pi (bcm2835), identical logical fix replicated (and compile-tested) elsewhere. PR port-arm/53171 To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/broadcom/bcm2835_bsc.c cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/nvidia/tegra_i2c.c cvs rdiff -u -r1.13 -r1.14 src/sys/arch/arm/samsung/exynos_i2c.c cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/sunxi/sunxi_rsb.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/sunxi/sunxi_twi.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.c diff -u src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.10 src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.11 --- src/sys/arch/arm/broadcom/bcm2835_bsc.c:1.10 Sat Mar 3 16:03:38 2018 +++ src/sys/arch/arm/broadcom/bcm2835_bsc.c Wed May 9 02:53:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: bcm2835_bsc.c,v 1.10 2018/03/03 16:03:38 skrll Exp $ */ +/* $NetBSD: bcm2835_bsc.c,v 1.11 2018/05/09 02:53:00 thorpej Exp $ */ /* * Copyright (c) 2012 Jonathan A. Kollasch @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.10 2018/03/03 16:03:38 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bcm2835_bsc.c,v 1.11 2018/05/09 02:53:00 thorpej Exp $"); #if defined(_KERNEL_OPT) #include "opt_kernhist.h" @@ -183,8 +183,6 @@ bsciic_attach(device_t parent, device_t iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices"); if (iba.iba_child_devices) prop_object_retain(iba.iba_child_devices); - else - iba.iba_child_devices = prop_array_create(); prop_object_release(devs); config_found_ia(self, "i2cbus", &iba, iicbus_print); Index: src/sys/arch/arm/nvidia/tegra_i2c.c diff -u src/sys/arch/arm/nvidia/tegra_i2c.c:1.16 src/sys/arch/arm/nvidia/tegra_i2c.c:1.17 --- src/sys/arch/arm/nvidia/tegra_i2c.c:1.16 Thu May 25 23:43:49 2017 +++ src/sys/arch/arm/nvidia/tegra_i2c.c Wed May 9 02:53:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: tegra_i2c.c,v 1.16 2017/05/25 23:43:49 jmcneill Exp $ */ +/* $NetBSD: tegra_i2c.c,v 1.17 2018/05/09 02:53:00 thorpej Exp $ */ /*- * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.16 2017/05/25 23:43:49 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tegra_i2c.c,v 1.17 2018/05/09 02:53:00 thorpej Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -199,11 +199,8 @@ tegra_i2c_attach(device_t parent, device memset(&iba, 0, sizeof(iba)); iba.iba_tag = &sc->sc_ic; iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices"); - if (iba.iba_child_devices != NULL) { + if (iba.iba_child_devices != NULL) prop_object_retain(iba.iba_child_devices); - } else { - iba.iba_child_devices = prop_array_create(); - } prop_object_release(devs); sc->sc_i2cdev = config_found_ia(self, "i2cbus", &iba, iicbus_print); Index: src/sys/arch/arm/samsung/exynos_i2c.c diff -u src/sys/arch/arm/samsung/exynos_i2c.c:1.13 src/sys/arch/arm/samsung/exynos_i2c.c:1.14 --- src/sys/arch/arm/samsung/exynos_i2c.c:1.13 Sun Jul 2 18:27:45 2017 +++ src/sys/arch/arm/samsung/exynos_i2c.c Wed May 9 02:53:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: exynos_i2c.c,v 1.13 2017/07/02 18:27:45 jmcneill Exp $ */ +/* $NetBSD: exynos_i2c.c,v 1.14 2018/05/09 02:53:00 thorpej Exp $ */ /* * Copyright (c) 2015 Jared D. McNeill <jmcne...@invisible.ca> @@ -31,7 +31,7 @@ #include "opt_arm_debug.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: exynos_i2c.c,v 1.13 2017/07/02 18:27:45 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: exynos_i2c.c,v 1.14 2018/05/09 02:53:00 thorpej Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -198,8 +198,6 @@ exynos_i2c_attach(device_t parent, devic iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices"); if (iba.iba_child_devices != NULL) prop_object_retain(iba.iba_child_devices); - else - iba.iba_child_devices = prop_array_create(); prop_object_release(devs); sc->sc_i2cdev = config_found_ia(self, "i2cbus", &iba, iicbus_print); Index: src/sys/arch/arm/sunxi/sunxi_rsb.c diff -u src/sys/arch/arm/sunxi/sunxi_rsb.c:1.1 src/sys/arch/arm/sunxi/sunxi_rsb.c:1.2 --- src/sys/arch/arm/sunxi/sunxi_rsb.c:1.1 Sun Jul 2 18:06:45 2017 +++ src/sys/arch/arm/sunxi/sunxi_rsb.c Wed May 9 02:53:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: sunxi_rsb.c,v 1.1 2017/07/02 18:06:45 jmcneill Exp $ */ +/* $NetBSD: sunxi_rsb.c,v 1.2 2018/05/09 02:53:00 thorpej Exp $ */ /*- * Copyright (c) 2014-2017 Jared McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sunxi_rsb.c,v 1.1 2017/07/02 18:06:45 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sunxi_rsb.c,v 1.2 2018/05/09 02:53:00 thorpej Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -220,8 +220,6 @@ sunxi_rsb_attach(device_t parent, device iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices"); if (iba.iba_child_devices) prop_object_retain(iba.iba_child_devices); - else - iba.iba_child_devices = prop_array_create(); prop_object_release(devs); sc->sc_i2cdev = config_found_ia(self, "i2cbus", &iba, iicbus_print); Index: src/sys/arch/arm/sunxi/sunxi_twi.c diff -u src/sys/arch/arm/sunxi/sunxi_twi.c:1.8 src/sys/arch/arm/sunxi/sunxi_twi.c:1.9 --- src/sys/arch/arm/sunxi/sunxi_twi.c:1.8 Sat Dec 2 18:56:18 2017 +++ src/sys/arch/arm/sunxi/sunxi_twi.c Wed May 9 02:53:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: sunxi_twi.c,v 1.8 2017/12/02 18:56:18 jmcneill Exp $ */ +/* $NetBSD: sunxi_twi.c,v 1.9 2018/05/09 02:53:00 thorpej Exp $ */ /*- * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca> @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sunxi_twi.c,v 1.8 2017/12/02 18:56:18 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sunxi_twi.c,v 1.9 2018/05/09 02:53:00 thorpej Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -236,8 +236,6 @@ sunxi_twi_attach(device_t parent, device iba.iba_child_devices = prop_dictionary_get(devs, "i2c-child-devices"); if (iba.iba_child_devices) prop_object_retain(iba.iba_child_devices); - else - iba.iba_child_devices = prop_array_create(); prop_object_release(devs); config_found_ia(self, "i2cbus", &iba, iicbus_print);