mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
hw/i2c: Extract i2c_do_start_transfer() from i2c_start_transfer()
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> Signed-off-by: Corey Minyard <cminyard@mvista.com>
This commit is contained in:
parent
e656e38797
commit
265caf45c6
1 changed files with 12 additions and 2 deletions
|
@ -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
|
* protocol uses a start transfer to switch from write to read mode
|
||||||
* without releasing the bus. If that fails, the bus is still
|
* without releasing the bus. If that fails, the bus is still
|
||||||
* in a transaction.
|
* 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;
|
I2CSlaveClass *sc;
|
||||||
I2CNode *node;
|
I2CNode *node;
|
||||||
|
@ -157,7 +160,7 @@ int i2c_start_transfer(I2CBus *bus, uint8_t address, bool is_recv)
|
||||||
|
|
||||||
if (sc->event) {
|
if (sc->event) {
|
||||||
trace_i2c_event("start", s->address);
|
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 (rv && !bus->broadcast) {
|
||||||
if (bus_scanned) {
|
if (bus_scanned) {
|
||||||
/* First call, terminate the transfer. */
|
/* First call, terminate the transfer. */
|
||||||
|
@ -170,6 +173,13 @@ int i2c_start_transfer(I2CBus *bus, uint8_t address, bool is_recv)
|
||||||
return 0;
|
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)
|
void i2c_end_transfer(I2CBus *bus)
|
||||||
{
|
{
|
||||||
I2CSlaveClass *sc;
|
I2CSlaveClass *sc;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue