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);

Reply via email to