summaryrefslogtreecommitdiffstats
path: root/sys/dev/iicbus
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2016-12-14 16:20:51 +0000
committeravg <avg@FreeBSD.org>2016-12-14 16:20:51 +0000
commitf599bb0eed67899afba8f32dfd9d752c13c58ec1 (patch)
tree36266c15d0ce5619830c5ae4d120f1af2248ff03 /sys/dev/iicbus
parentc9cb255d7a73f32a8da1724b0121146455a4b9a5 (diff)
downloadFreeBSD-src-f599bb0eed67899afba8f32dfd9d752c13c58ec1.zip
FreeBSD-src-f599bb0eed67899afba8f32dfd9d752c13c58ec1.tar.gz
MFC r306589: Implement iicbus_write_ivar and impelemnt the NOSTOP ivar
in both read and write.
Diffstat (limited to 'sys/dev/iicbus')
-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 a090bb9..0e529fd 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);
}
@@ -328,6 +348,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