Module Name: src Committed By: bouyer Date: Sun Dec 10 16:53:32 UTC 2017
Modified Files: src/sys/dev/i2c: i2c.c i2cvar.h Log Message: For direct-config devices, pass the whole dictionary to the child as ia_prop, so that chil drivers can look up device-specific properties. Needed for the upcoming HID over I2C support, proposed on tech-kern@ on Dec, 1. To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 src/sys/dev/i2c/i2c.c cvs rdiff -u -r1.9 -r1.10 src/sys/dev/i2c/i2cvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/i2c/i2c.c diff -u src/sys/dev/i2c/i2c.c:1.56 src/sys/dev/i2c/i2c.c:1.57 --- src/sys/dev/i2c/i2c.c:1.56 Sat Oct 28 04:53:55 2017 +++ src/sys/dev/i2c/i2c.c Sun Dec 10 16:53:32 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: i2c.c,v 1.56 2017/10/28 04:53:55 riastradh Exp $ */ +/* $NetBSD: i2c.c,v 1.57 2017/12/10 16:53:32 bouyer Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -40,7 +40,7 @@ #endif #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: i2c.c,v 1.56 2017/10/28 04:53:55 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i2c.c,v 1.57 2017/12/10 16:53:32 bouyer Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -140,6 +140,7 @@ iic_search(device_t parent, cfdata_t cf, ia.ia_name = NULL; ia.ia_ncompat = 0; ia.ia_compat = NULL; + ia.ia_prop = NULL; for (ia.ia_addr = 0; ia.ia_addr <= I2C_MAX_ADDR; ia.ia_addr++) { if (sc->sc_devices[ia.ia_addr] != NULL) @@ -262,6 +263,7 @@ iic_attach(device_t parent, device_t sel ia.ia_name = name; ia.ia_cookie = cookie; ia.ia_size = size; + ia.ia_prop = dev; buf = NULL; cdata = prop_dictionary_get(dev, "compatible"); Index: src/sys/dev/i2c/i2cvar.h diff -u src/sys/dev/i2c/i2cvar.h:1.9 src/sys/dev/i2c/i2cvar.h:1.10 --- src/sys/dev/i2c/i2cvar.h:1.9 Sun Dec 13 17:14:56 2015 +++ src/sys/dev/i2c/i2cvar.h Sun Dec 10 16:53:32 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: i2cvar.h,v 1.9 2015/12/13 17:14:56 jmcneill Exp $ */ +/* $NetBSD: i2cvar.h,v 1.10 2017/12/10 16:53:32 bouyer Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -125,6 +125,7 @@ struct i2c_attach_args { int ia_ncompat; /* number of pointers in the ia_compat array */ const char ** ia_compat; /* chip names */ + prop_dictionary_t ia_prop; /* dictionnary for this device */ /* * The following is of limited usefulness and should only be used * in rare cases where we really know what we are doing. Example: @@ -134,6 +135,8 @@ struct i2c_attach_args { * may be present. Example: on OpenFirmware machines the device * tree OF node - if available. This info is hard to transport * down to MD drivers through the MI i2c bus otherwise. + * + * On ACPI platforms this is the ACPI_HANDLE of the device. */ uintptr_t ia_cookie; /* OF node in openfirmware machines */ };