mirror of https://gitee.com/openkylin/qemu.git
z2: QOM'ify AER915
Replace usages of FROM_I2C_SLAVE() with QOM cast macro. Rename the parent field. Reuse the type constant in z2_init(). Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> [AF: Use TYPE_AER915 in z2_init() too] Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
70b5169032
commit
a5f96db7e8
20
hw/arm/z2.c
20
hw/arm/z2.c
|
@ -193,15 +193,20 @@ static const TypeInfo zipit_lcd_info = {
|
||||||
.class_init = zipit_lcd_class_init,
|
.class_init = zipit_lcd_class_init,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
#define TYPE_AER915 "aer915"
|
||||||
I2CSlave i2c;
|
#define AER915(obj) OBJECT_CHECK(AER915State, (obj), TYPE_AER915)
|
||||||
|
|
||||||
|
typedef struct AER915State {
|
||||||
|
I2CSlave parent_obj;
|
||||||
|
|
||||||
int len;
|
int len;
|
||||||
uint8_t buf[3];
|
uint8_t buf[3];
|
||||||
} AER915State;
|
} AER915State;
|
||||||
|
|
||||||
static int aer915_send(I2CSlave *i2c, uint8_t data)
|
static int aer915_send(I2CSlave *i2c, uint8_t data)
|
||||||
{
|
{
|
||||||
AER915State *s = FROM_I2C_SLAVE(AER915State, i2c);
|
AER915State *s = AER915(i2c);
|
||||||
|
|
||||||
s->buf[s->len] = data;
|
s->buf[s->len] = data;
|
||||||
if (s->len++ > 2) {
|
if (s->len++ > 2) {
|
||||||
DPRINTF("%s: message too long (%i bytes)\n",
|
DPRINTF("%s: message too long (%i bytes)\n",
|
||||||
|
@ -219,7 +224,8 @@ static int aer915_send(I2CSlave *i2c, uint8_t data)
|
||||||
|
|
||||||
static void aer915_event(I2CSlave *i2c, enum i2c_event event)
|
static void aer915_event(I2CSlave *i2c, enum i2c_event event)
|
||||||
{
|
{
|
||||||
AER915State *s = FROM_I2C_SLAVE(AER915State, i2c);
|
AER915State *s = AER915(i2c);
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case I2C_START_SEND:
|
case I2C_START_SEND:
|
||||||
s->len = 0;
|
s->len = 0;
|
||||||
|
@ -238,8 +244,8 @@ static void aer915_event(I2CSlave *i2c, enum i2c_event event)
|
||||||
|
|
||||||
static int aer915_recv(I2CSlave *slave)
|
static int aer915_recv(I2CSlave *slave)
|
||||||
{
|
{
|
||||||
|
AER915State *s = AER915(slave);
|
||||||
int retval = 0x00;
|
int retval = 0x00;
|
||||||
AER915State *s = FROM_I2C_SLAVE(AER915State, slave);
|
|
||||||
|
|
||||||
switch (s->buf[0]) {
|
switch (s->buf[0]) {
|
||||||
/* Return hardcoded battery voltage,
|
/* Return hardcoded battery voltage,
|
||||||
|
@ -290,7 +296,7 @@ static void aer915_class_init(ObjectClass *klass, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo aer915_info = {
|
static const TypeInfo aer915_info = {
|
||||||
.name = "aer915",
|
.name = TYPE_AER915,
|
||||||
.parent = TYPE_I2C_SLAVE,
|
.parent = TYPE_I2C_SLAVE,
|
||||||
.instance_size = sizeof(AER915State),
|
.instance_size = sizeof(AER915State),
|
||||||
.class_init = aer915_class_init,
|
.class_init = aer915_class_init,
|
||||||
|
@ -351,7 +357,7 @@ static void z2_init(QEMUMachineInitArgs *args)
|
||||||
type_register_static(&aer915_info);
|
type_register_static(&aer915_info);
|
||||||
z2_lcd = ssi_create_slave(mpu->ssp[1], "zipit-lcd");
|
z2_lcd = ssi_create_slave(mpu->ssp[1], "zipit-lcd");
|
||||||
bus = pxa2xx_i2c_bus(mpu->i2c[0]);
|
bus = pxa2xx_i2c_bus(mpu->i2c[0]);
|
||||||
i2c_create_slave(bus, "aer915", 0x55);
|
i2c_create_slave(bus, TYPE_AER915, 0x55);
|
||||||
wm = i2c_create_slave(bus, "wm8750", 0x1b);
|
wm = i2c_create_slave(bus, "wm8750", 0x1b);
|
||||||
mpu->i2s->opaque = wm;
|
mpu->i2s->opaque = wm;
|
||||||
mpu->i2s->codec_out = wm8750_dac_dat;
|
mpu->i2s->codec_out = wm8750_dac_dat;
|
||||||
|
|
Loading…
Reference in New Issue