i2c: sh_mobile: remove get_data function

It makes the code much easier comprehensible to explicitly code that the
first byte will be client address and all the following bytes are the
actual data.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
Wolfram Sang 2019-01-16 22:05:50 +01:00 committed by Wolfram Sang
parent 5b3e3b43b0
commit 1f32fbdfc1

View File

@ -358,18 +358,6 @@ static bool sh_mobile_i2c_is_first_byte(struct sh_mobile_i2c_data *pd)
return pd->pos == -1;
}
static void sh_mobile_i2c_get_data(struct sh_mobile_i2c_data *pd,
unsigned char *buf)
{
switch (pd->pos) {
case -1:
*buf = i2c_8bit_addr_from_msg(pd->msg);
break;
default:
*buf = pd->msg->buf[pd->pos];
}
}
static int sh_mobile_i2c_isr_tx(struct sh_mobile_i2c_data *pd)
{
unsigned char data;
@ -379,8 +367,13 @@ static int sh_mobile_i2c_isr_tx(struct sh_mobile_i2c_data *pd)
return 1;
}
sh_mobile_i2c_get_data(pd, &data);
i2c_op(pd, sh_mobile_i2c_is_first_byte(pd) ? OP_TX_FIRST : OP_TX, data);
if (sh_mobile_i2c_is_first_byte(pd)) {
data = i2c_8bit_addr_from_msg(pd->msg);
i2c_op(pd, OP_TX_FIRST, data);
} else {
data = pd->msg->buf[pd->pos];
i2c_op(pd, OP_TX, data);
}
pd->pos++;
return 0;
@ -393,7 +386,7 @@ static int sh_mobile_i2c_isr_rx(struct sh_mobile_i2c_data *pd)
do {
if (sh_mobile_i2c_is_first_byte(pd)) {
sh_mobile_i2c_get_data(pd, &data);
data = i2c_8bit_addr_from_msg(pd->msg);
i2c_op(pd, OP_TX_FIRST, data);
break;
}