diff options
author | Paul Brook <paul@codesourcery.com> | 2009-05-14 22:35:08 +0100 |
---|---|---|
committer | Paul Brook <paul@codesourcery.com> | 2009-05-14 22:35:08 +0100 |
commit | 1ea96673c611cdc05ea32ac81f40d9f864e18507 (patch) | |
tree | 16a99607ac0c2aab3c3ea225eebe85beed8c96d0 /hw/smbus.h | |
parent | fd1eb2ea4286bb42ea4cf008ece14bbfbb598d21 (diff) | |
download | qemu-1ea96673c611cdc05ea32ac81f40d9f864e18507.zip qemu-1ea96673c611cdc05ea32ac81f40d9f864e18507.tar.gz qemu-1ea96673c611cdc05ea32ac81f40d9f864e18507.tar.bz2 |
SMBus qdev conversion
Signed-off-by: Paul Brook <paul@codesourcery.com>
Diffstat (limited to 'hw/smbus.h')
-rw-r--r-- | hw/smbus.h | 25 |
1 files changed, 12 insertions, 13 deletions
@@ -28,7 +28,16 @@ struct SMBusDevice { /* The SMBus protocol is implemented on top of I2C. */ i2c_slave i2c; - /* Callbacks set by the device. */ + /* Remaining fields for internal use only. */ + int mode; + int data_len; + uint8_t data_buf[34]; /* command + len + 32 bytes of data. */ + uint8_t command; +}; + +typedef struct { + I2CSlaveInfo i2c; + void (*init)(SMBusDevice *dev); void (*quick_cmd)(SMBusDevice *dev, uint8_t read); void (*send_byte)(SMBusDevice *dev, uint8_t val); uint8_t (*receive_byte)(SMBusDevice *dev); @@ -42,16 +51,9 @@ struct SMBusDevice { byte at a time. The device is responsible for adding the length byte on block reads. */ uint8_t (*read_data)(SMBusDevice *dev, uint8_t cmd, int n); +} SMBusDeviceInfo; - /* Remaining fields for internal use only. */ - int mode; - int data_len; - uint8_t data_buf[34]; /* command + len + 32 bytes of data. */ - uint8_t command; -}; - -/* Create a slave device. */ -SMBusDevice *smbus_device_init(i2c_bus *bus, int address, int size); +void smbus_register_device(const char *name, int size, SMBusDeviceInfo *info); /* Master device commands. */ void smbus_quick_command(i2c_bus *bus, int addr, int read); @@ -64,6 +66,3 @@ void smbus_write_word(i2c_bus *bus, int addr, uint8_t command, uint16_t data); int smbus_read_block(i2c_bus *bus, int addr, uint8_t command, uint8_t *data); void smbus_write_block(i2c_bus *bus, int addr, uint8_t command, uint8_t *data, int len); - -/* smbus_eeprom.c */ -void smbus_eeprom_device_init(i2c_bus *bus, uint8_t addr, uint8_t *buf); |