summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2016-12-14 16:21:10 +0000
committeravg <avg@FreeBSD.org>2016-12-14 16:21:10 +0000
commitda47d73e326d7119334fd2a8c6715d757f95fc18 (patch)
treec17c7c73cd0c03a060c4c5c0035807e9ea98348b
parent44078954ec08c7884c55a193e686e5f9b83d4e5a (diff)
downloadFreeBSD-src-da47d73e326d7119334fd2a8c6715d757f95fc18.zip
FreeBSD-src-da47d73e326d7119334fd2a8c6715d757f95fc18.tar.gz
MFC r306589: Implement iicbus_write_ivar and impelemnt the NOSTOP ivar
in both read and write.
-rw-r--r--sys/dev/iicbus/iicbus.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/dev/iicbus/iicbus.c b/sys/dev/iicbus/iicbus.c
index e377383..8149a08 100644
--- a/sys/dev/iicbus/iicbus.c
+++ b/sys/dev/iicbus/iicbus.c
@@ -192,6 +192,26 @@ iicbus_read_ivar(device_t bus, device_t child, int which, uintptr_t *result)
case IICBUS_IVAR_ADDR:
*result = devi->addr;
break;
+ case IICBUS_IVAR_NOSTOP:
+ *result = devi->nostop;
+ break;
+ }
+ return (0);
+}
+
+static int
+iicbus_write_ivar(device_t bus, device_t child, int which, uintptr_t value)
+{
+ struct iicbus_ivar *devi = IICBUS_IVAR(child);
+
+ switch (which) {
+ default:
+ return (EINVAL);
+ case IICBUS_IVAR_ADDR:
+ return (EINVAL);
+ case IICBUS_IVAR_NOSTOP:
+ devi->nostop = value;
+ break;
}
return (0);
}
@@ -302,6 +322,7 @@ static device_method_t iicbus_methods[] = {
DEVMETHOD(bus_print_child, iicbus_print_child),
DEVMETHOD(bus_probe_nomatch, iicbus_probe_nomatch),
DEVMETHOD(bus_read_ivar, iicbus_read_ivar),
+ DEVMETHOD(bus_write_ivar, iicbus_write_ivar),
DEVMETHOD(bus_child_pnpinfo_str, iicbus_child_pnpinfo_str),
DEVMETHOD(bus_child_location_str, iicbus_child_location_str),
DEVMETHOD(bus_hinted_child, iicbus_hinted_child),
OpenPOWER on IntegriCloud