twl92230: QOM'ify

Replace usages of FROM_I2C_SLAVE() and direct parent field accesses with
QOM cast macro. Rename parent field.

Add missing braces while at it.

Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
Andreas Färber 2013-12-19 22:41:25 +01:00
parent 59ab56b9ad
commit dd37dfa9e7
1 changed files with 21 additions and 14 deletions

View File

@ -27,8 +27,11 @@
#define VERBOSE 1 #define VERBOSE 1
typedef struct { #define TYPE_TWL92230 "twl92230"
I2CSlave i2c; #define TWL92230(obj) OBJECT_CHECK(MenelausState, (obj), TYPE_TWL92230)
typedef struct MenelausState {
I2CSlave parent_obj;
int firstbyte; int firstbyte;
uint8_t reg; uint8_t reg;
@ -127,7 +130,8 @@ static void menelaus_rtc_hz(void *opaque)
static void menelaus_reset(I2CSlave *i2c) static void menelaus_reset(I2CSlave *i2c)
{ {
MenelausState *s = (MenelausState *) i2c; MenelausState *s = TWL92230(i2c);
s->reg = 0x00; s->reg = 0x00;
s->vcore[0] = 0x0c; /* XXX: X-loader needs 0x8c? check! */ s->vcore[0] = 0x0c; /* XXX: X-loader needs 0x8c? check! */
@ -492,8 +496,9 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
break; break;
case MENELAUS_DEVICE_OFF: case MENELAUS_DEVICE_OFF:
if (value & 1) if (value & 1) {
menelaus_reset(&s->i2c); menelaus_reset(I2C_SLAVE(s));
}
break; break;
case MENELAUS_OSC_CTRL: case MENELAUS_OSC_CTRL:
@ -708,7 +713,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
static void menelaus_event(I2CSlave *i2c, enum i2c_event event) static void menelaus_event(I2CSlave *i2c, enum i2c_event event)
{ {
MenelausState *s = (MenelausState *) i2c; MenelausState *s = TWL92230(i2c);
if (event == I2C_START_SEND) if (event == I2C_START_SEND)
s->firstbyte = 1; s->firstbyte = 1;
@ -716,7 +721,8 @@ static void menelaus_event(I2CSlave *i2c, enum i2c_event event)
static int menelaus_tx(I2CSlave *i2c, uint8_t data) static int menelaus_tx(I2CSlave *i2c, uint8_t data)
{ {
MenelausState *s = (MenelausState *) i2c; MenelausState *s = TWL92230(i2c);
/* Interpret register address byte */ /* Interpret register address byte */
if (s->firstbyte) { if (s->firstbyte) {
s->reg = data; s->reg = data;
@ -729,7 +735,7 @@ static int menelaus_tx(I2CSlave *i2c, uint8_t data)
static int menelaus_rx(I2CSlave *i2c) static int menelaus_rx(I2CSlave *i2c)
{ {
MenelausState *s = (MenelausState *) i2c; MenelausState *s = TWL92230(i2c);
return menelaus_read(s, s->reg ++); return menelaus_read(s, s->reg ++);
} }
@ -834,23 +840,24 @@ static const VMStateDescription vmstate_menelaus = {
VMSTATE_STRUCT(rtc.alm, MenelausState, 0, vmstate_menelaus_tm, VMSTATE_STRUCT(rtc.alm, MenelausState, 0, vmstate_menelaus_tm,
struct tm), struct tm),
VMSTATE_UINT8(pwrbtn_state, MenelausState), VMSTATE_UINT8(pwrbtn_state, MenelausState),
VMSTATE_I2C_SLAVE(i2c, MenelausState), VMSTATE_I2C_SLAVE(parent_obj, MenelausState),
VMSTATE_END_OF_LIST() VMSTATE_END_OF_LIST()
} }
}; };
static int twl92230_init(I2CSlave *i2c) static int twl92230_init(I2CSlave *i2c)
{ {
MenelausState *s = FROM_I2C_SLAVE(MenelausState, i2c); DeviceState *dev = DEVICE(i2c);
MenelausState *s = TWL92230(i2c);
s->rtc.hz_tm = timer_new_ms(rtc_clock, menelaus_rtc_hz, s); s->rtc.hz_tm = timer_new_ms(rtc_clock, menelaus_rtc_hz, s);
/* Three output pins plus one interrupt pin. */ /* Three output pins plus one interrupt pin. */
qdev_init_gpio_out(&i2c->qdev, s->out, 4); qdev_init_gpio_out(dev, s->out, 4);
/* Three input pins plus one power-button pin. */ /* Three input pins plus one power-button pin. */
qdev_init_gpio_in(&i2c->qdev, menelaus_gpio_set, 4); qdev_init_gpio_in(dev, menelaus_gpio_set, 4);
menelaus_reset(&s->i2c); menelaus_reset(i2c);
return 0; return 0;
} }
@ -868,7 +875,7 @@ static void twl92230_class_init(ObjectClass *klass, void *data)
} }
static const TypeInfo twl92230_info = { static const TypeInfo twl92230_info = {
.name = "twl92230", .name = TYPE_TWL92230,
.parent = TYPE_I2C_SLAVE, .parent = TYPE_I2C_SLAVE,
.instance_size = sizeof(MenelausState), .instance_size = sizeof(MenelausState),
.class_init = twl92230_class_init, .class_init = twl92230_class_init,