Define TYPE_GPIO_I2C in the public "hw/i2c/bitbang_i2c.h" header and use it in hw/arm/musicpal.c. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Acked-by: Corey Minyard <cminyard@mvista.com> Message-id: 20230111085016.44551-2-philmd@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef BITBANG_I2C_H
 | 
						|
#define BITBANG_I2C_H
 | 
						|
 | 
						|
#include "hw/i2c/i2c.h"
 | 
						|
 | 
						|
#define TYPE_GPIO_I2C "gpio_i2c"
 | 
						|
 | 
						|
typedef struct bitbang_i2c_interface bitbang_i2c_interface;
 | 
						|
 | 
						|
#define BITBANG_I2C_SDA 0
 | 
						|
#define BITBANG_I2C_SCL 1
 | 
						|
 | 
						|
typedef enum bitbang_i2c_state {
 | 
						|
    STOPPED = 0,
 | 
						|
    SENDING_BIT7,
 | 
						|
    SENDING_BIT6,
 | 
						|
    SENDING_BIT5,
 | 
						|
    SENDING_BIT4,
 | 
						|
    SENDING_BIT3,
 | 
						|
    SENDING_BIT2,
 | 
						|
    SENDING_BIT1,
 | 
						|
    SENDING_BIT0,
 | 
						|
    WAITING_FOR_ACK,
 | 
						|
    RECEIVING_BIT7,
 | 
						|
    RECEIVING_BIT6,
 | 
						|
    RECEIVING_BIT5,
 | 
						|
    RECEIVING_BIT4,
 | 
						|
    RECEIVING_BIT3,
 | 
						|
    RECEIVING_BIT2,
 | 
						|
    RECEIVING_BIT1,
 | 
						|
    RECEIVING_BIT0,
 | 
						|
    SENDING_ACK,
 | 
						|
    SENT_NACK
 | 
						|
} bitbang_i2c_state;
 | 
						|
 | 
						|
struct bitbang_i2c_interface {
 | 
						|
    I2CBus *bus;
 | 
						|
    bitbang_i2c_state state;
 | 
						|
    int last_data;
 | 
						|
    int last_clock;
 | 
						|
    int device_out;
 | 
						|
    uint8_t buffer;
 | 
						|
    int current_addr;
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * bitbang_i2c_init: in-place initialize the bitbang_i2c_interface struct
 | 
						|
 */
 | 
						|
void bitbang_i2c_init(bitbang_i2c_interface *s, I2CBus *bus);
 | 
						|
int bitbang_i2c_set(bitbang_i2c_interface *i2c, int line, int level);
 | 
						|
 | 
						|
#endif
 |