mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 04:06:46 +00:00 
			
		
		
		
	 da8df26d2e
			
		
	
	
		da8df26d2e
		
	
	
	
	
		
			
			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
 |