Lines Matching +full:lsb +full:- +full:first
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
44 * system errno value later. This lets controller- and bus-layer code get
54 * Translate IIC_Exxxxx status values to vaguely-equivelent errno values.
75 * IIC_ERRNO marker bit. If lots of high-order bits are set, in iic2errno()
76 * then it's one of the negative pseudo-errors such as ERESTART in iic2errno()
77 * and we return it as-is. Otherwise it's a plain "small in iic2errno()
99 if (sc->owner) in iicbus_intr()
100 IICBUS_INTR(sc->owner, event, buf); in iicbus_intr()
113 error = mtx_sleep(sc, &sc->lock, IICPRI|PCATCH, "iicreq", 0); in iicbus_poll()
117 error = mtx_sleep(sc, &sc->lock, IICPRI, "iicreq", 0); in iicbus_poll()
144 if (sc->owner == NULL) in iicbus_request_bus()
146 if ((how & IIC_RECURSIVE) && sc->owner == dev) in iicbus_request_bus()
153 ++sc->owncount; in iicbus_request_bus()
154 if (sc->owner == NULL) { in iicbus_request_bus()
155 sc->owner = dev; in iicbus_request_bus()
164 sc->busydev = bus; in iicbus_request_bus()
166 sc->busydev = dev; in iicbus_request_bus()
167 device_busy(sc->busydev); in iicbus_request_bus()
184 sc->owner = NULL; in iicbus_request_bus()
185 sc->owncount = 0; in iicbus_request_bus()
187 device_unbusy(sc->busydev); in iicbus_request_bus()
210 if (sc->owner != dev) { in iicbus_release_bus()
215 if (--sc->owncount == 0) { in iicbus_release_bus()
216 /* Drop the lock while informing the low-level driver. */ in iicbus_release_bus()
224 sc->owner = NULL; in iicbus_release_bus()
226 device_unbusy(sc->busydev); in iicbus_release_bus()
242 return (sc->started); in iicbus_started()
256 if (sc->started) in iicbus_start()
260 sc->started = slave; in iicbus_start()
262 sc->started = 0; in iicbus_start()
278 if (!sc->started) in iicbus_repeated_start()
282 sc->started = slave; in iicbus_repeated_start()
284 sc->started = 0; in iicbus_repeated_start()
300 if (!sc->started) in iicbus_stop()
306 sc->started = 0; in iicbus_stop()
323 if (sc->started == 0 || (sc->strict != 0 && (sc->started & LSB) != 0)) in iicbus_write()
341 if (sc->started == 0 || (sc->strict != 0 && (sc->started & LSB) == 0)) in iicbus_read()
360 if (sc->started == 0 || (sc->strict != 0 && (sc->started & LSB) != 0)) in iicbus_write_byte()
378 if (sc->started == 0 || (sc->strict != 0 && (sc->started & LSB) == 0)) in iicbus_read_byte()
392 u_char addr = slave & ~LSB; in iicbus_block_write()
413 u_char addr = slave | LSB; in iicbus_block_read()
485 addr |= LSB; in iicbus_transfer_gen()
487 addr &= ~LSB; in iicbus_transfer_gen()
528 * Two transfers back to back with a repeat-start between them; first we in iicdev_readfrom()
529 * write the address-within-device, then we read from the device. in iicdev_readfrom()
557 * between them using an array of 2 iic_msgs; first we'd write the in iicdev_writeto()