Lines Matching defs:iie
683 iic_ioctl_exec(struct iic_softc *sc, i2c_ioctl_exec_t *iie, int flag)
691 if (iie->iie_addr > I2C_MAX_ADDR)
693 if (iie->iie_cmdlen > I2C_EXEC_MAX_CMDLEN ||
694 iie->iie_buflen > I2C_EXEC_MAX_BUFLEN)
696 if (iie->iie_cmd != NULL && iie->iie_cmdlen == 0)
698 if (iie->iie_buf != NULL && iie->iie_buflen == 0)
700 if (I2C_OP_WRITE_P(iie->iie_op) && (flag & FWRITE) == 0)
705 if (sc->sc_devices[iie->iie_addr] != NULL)
709 if (iie->iie_cmd != NULL) {
710 cmd = kmem_alloc(iie->iie_cmdlen, KM_SLEEP);
711 error = copyin(iie->iie_cmd, cmd, iie->iie_cmdlen);
716 if (iie->iie_buf != NULL) {
717 buf = kmem_alloc(iie->iie_buflen, KM_SLEEP);
718 if (I2C_OP_WRITE_P(iie->iie_op)) {
719 error = copyin(iie->iie_buf, buf, iie->iie_buflen);
726 error = iic_exec(ic, iie->iie_op, iie->iie_addr, cmd, iie->iie_cmdlen,
727 buf, iie->iie_buflen, 0);
737 if (!error && iie->iie_buf != NULL && I2C_OP_READ_P(iie->iie_op))
738 error = copyout(buf, iie->iie_buf, iie->iie_buflen);
741 kmem_free(buf, iie->iie_buflen);
744 kmem_free(cmd, iie->iie_cmdlen);