[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 14/15] hw/i2c: Extract i2c_do_start_transfer() from i2c_start_
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH v5 14/15] hw/i2c: Extract i2c_do_start_transfer() from i2c_start_transfer() |
Date: |
Thu, 17 Jun 2021 13:53:33 +0200 |
To allow further simplications, extract i2c_do_start_transfer()
from i2c_start_transfer(). This is mostly the same function,
but the former is static and takes an enum argument.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/i2c/core.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/hw/i2c/core.c b/hw/i2c/core.c
index 6639ca8c2e0..5483bf95a3e 100644
--- a/hw/i2c/core.c
+++ b/hw/i2c/core.c
@@ -114,8 +114,11 @@ bool i2c_scan_bus(I2CBus *bus, uint8_t address, bool
broadcast,
* protocol uses a start transfer to switch from write to read mode
* without releasing the bus. If that fails, the bus is still
* in a transaction.
+ *
+ * @event must be I2C_START_RECV or I2C_START_SEND.
*/
-int i2c_start_transfer(I2CBus *bus, uint8_t address, bool is_recv)
+static int i2c_do_start_transfer(I2CBus *bus, uint8_t address,
+ enum i2c_event event)
{
I2CSlaveClass *sc;
I2CNode *node;
@@ -157,7 +160,7 @@ int i2c_start_transfer(I2CBus *bus, uint8_t address, bool
is_recv)
if (sc->event) {
trace_i2c_event("start", s->address);
- rv = sc->event(s, is_recv ? I2C_START_RECV : I2C_START_SEND);
+ rv = sc->event(s, event);
if (rv && !bus->broadcast) {
if (bus_scanned) {
/* First call, terminate the transfer. */
@@ -170,6 +173,13 @@ int i2c_start_transfer(I2CBus *bus, uint8_t address, bool
is_recv)
return 0;
}
+int i2c_start_transfer(I2CBus *bus, uint8_t address, bool is_recv)
+{
+ return i2c_do_start_transfer(bus, address, is_recv
+ ? I2C_START_RECV
+ : I2C_START_SEND);
+}
+
void i2c_end_transfer(I2CBus *bus)
{
I2CSlaveClass *sc;
--
2.31.1
- [PATCH v5 05/15] hw/i2c/ppc4xx_i2c: Add reference to datasheet, (continued)
- [PATCH v5 05/15] hw/i2c/ppc4xx_i2c: Add reference to datasheet, Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 06/15] hw/i2c/ppc4xx_i2c: Replace i2c_send_recv() by i2c_recv() & i2c_send(), Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 07/15] hw/misc/auxbus: Fix MOT/classic I2C mode, Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 08/15] hw/misc/auxbus: Explode READ_I2C / WRITE_I2C_MOT cases, Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 09/15] hw/misc/auxbus: Replace 'is_write' boolean by its value, Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 10/15] hw/misc/auxbus: Replace i2c_send_recv() by i2c_recv() & i2c_send(), Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 11/15] hw/i2c: Remove confusing i2c_send_recv(), Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 12/15] hw/i2c: Rename i2c_set_slave_address() -> i2c_slave_set_address(), Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 13/15] hw/i2c: Make i2c_start_transfer() direction argument a boolean, Philippe Mathieu-Daudé, 2021/06/17
- [PATCH v5 14/15] hw/i2c: Extract i2c_do_start_transfer() from i2c_start_transfer(),
Philippe Mathieu-Daudé <=
- [PATCH v5 15/15] hw/i2c: Introduce i2c_start_recv() and i2c_start_send(), Philippe Mathieu-Daudé, 2021/06/17
- Re: [PATCH v5 00/15] hw/i2c: Remove confusing i2c_send_recv() API, Corey Minyard, 2021/06/17