diff options
author | avg <avg@FreeBSD.org> | 2016-12-14 16:20:51 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2016-12-14 16:20:51 +0000 |
commit | f599bb0eed67899afba8f32dfd9d752c13c58ec1 (patch) | |
tree | 36266c15d0ce5619830c5ae4d120f1af2248ff03 /sys/dev/iicbus | |
parent | c9cb255d7a73f32a8da1724b0121146455a4b9a5 (diff) | |
download | FreeBSD-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.c | 21 |
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), |