Lines Matching +full:i2c +full:- +full:slave +full:- +full:addr

1 /*-
28 * i2c-tiny-usb, DIY USB to IIC bridge (using AVR or RP2040) from
31 * https://github.com/harbaum/I2C-Tiny-USB
33 * https://github.com/Nicolai-Electronics/rp2040-i2c-interface
86 static int i2ctinyusb_reset(device_t dev, u_char speed, u_char addr,
103 error = usbd_do_request_flags(sc->sc_udev, &sc->sc_mtx, &req, data, 0, in usb_read()
107 actlen = -1; in usb_read()
126 error = usbd_do_request_flags(sc->sc_udev, &sc->sc_mtx, &req, data, 0, in usb_write()
130 actlen = -1; in usb_write()
143 if (uaa->usb_mode != USB_MODE_HOST) in i2ctinyusb_probe()
148 device_set_desc(dev, "I2C-Tiny-USB I2C interface"); in i2ctinyusb_probe()
167 sc->sc_udev = uaa->device; in i2ctinyusb_attach()
168 mtx_init(&sc->sc_mtx, "i2ctinyusb lock", NULL, MTX_DEF | MTX_RECURSE); in i2ctinyusb_attach()
170 sc->iicbus_dev = device_add_child(dev, "iicbus", DEVICE_UNIT_ANY); in i2ctinyusb_attach()
171 if (sc->iicbus_dev == NULL) { in i2ctinyusb_attach()
197 mtx_destroy(&sc->sc_mtx); in i2ctinyusb_detach()
214 mtx_lock(&sc->sc_mtx); in i2ctinyusb_transfer()
220 if (i == nmsgs - 1) in i2ctinyusb_transfer()
224 if ((ret = usb_read(sc, cmd, pmsg->flags, pmsg->slave, pmsg->buf, in i2ctinyusb_transfer()
225 pmsg->len)) != pmsg->len) { in i2ctinyusb_transfer()
231 if ((ret = usb_write(sc, cmd, pmsg->flags, pmsg->slave, pmsg->buf, in i2ctinyusb_transfer()
232 pmsg->len)) != pmsg->len) { in i2ctinyusb_transfer()
254 mtx_unlock(&sc->sc_mtx); in i2ctinyusb_transfer()
259 i2ctinyusb_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr) in i2ctinyusb_reset() argument
266 mtx_lock(&sc->sc_mtx); in i2ctinyusb_reset()
268 mtx_unlock(&sc->sc_mtx); in i2ctinyusb_reset()
282 /* I2C methods */