Loading drivers/i2c/busses/i2c-meson.c +10 −30 Original line number Diff line number Diff line Loading @@ -242,41 +242,21 @@ static irqreturn_t meson_i2c_irq(int irqno, void *dev_id) goto out; } switch (i2c->state) { case STATE_READ: if (i2c->count > 0) { meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); i2c->pos += i2c->count; } if (i2c->pos >= i2c->msg->len) { i2c->state = STATE_IDLE; complete(&i2c->done); break; } if (i2c->state == STATE_READ && i2c->count) meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); meson_i2c_prepare_xfer(i2c); break; case STATE_WRITE: i2c->pos += i2c->count; if (i2c->pos >= i2c->msg->len) { i2c->state = STATE_IDLE; complete(&i2c->done); break; goto out; } /* Restart the processing */ meson_i2c_prepare_xfer(i2c); break; } meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, REG_CTRL_START); out: if (i2c->state != STATE_IDLE) /* Restart the processing */ meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, REG_CTRL_START); spin_unlock(&i2c->lock); return IRQ_HANDLED; Loading Loading
drivers/i2c/busses/i2c-meson.c +10 −30 Original line number Diff line number Diff line Loading @@ -242,41 +242,21 @@ static irqreturn_t meson_i2c_irq(int irqno, void *dev_id) goto out; } switch (i2c->state) { case STATE_READ: if (i2c->count > 0) { meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); i2c->pos += i2c->count; } if (i2c->pos >= i2c->msg->len) { i2c->state = STATE_IDLE; complete(&i2c->done); break; } if (i2c->state == STATE_READ && i2c->count) meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); meson_i2c_prepare_xfer(i2c); break; case STATE_WRITE: i2c->pos += i2c->count; if (i2c->pos >= i2c->msg->len) { i2c->state = STATE_IDLE; complete(&i2c->done); break; goto out; } /* Restart the processing */ meson_i2c_prepare_xfer(i2c); break; } meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, REG_CTRL_START); out: if (i2c->state != STATE_IDLE) /* Restart the processing */ meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, REG_CTRL_START); spin_unlock(&i2c->lock); return IRQ_HANDLED; Loading