Commit fd1eb2ea4286bb42ea4cf008ece14bbfbb598d21
1 parent
d3356811
TOSC DAC i2c qdev voncersion
Signed-off-by: Paul Brook <paul@codesourcery.com>
Showing
1 changed file
with
22 additions
and
7 deletions
hw/tosa.c
@@ -132,7 +132,7 @@ typedef struct { | @@ -132,7 +132,7 @@ typedef struct { | ||
132 | 132 | ||
133 | static int tosa_dac_send(i2c_slave *i2c, uint8_t data) | 133 | static int tosa_dac_send(i2c_slave *i2c, uint8_t data) |
134 | { | 134 | { |
135 | - TosaDACState *s = (TosaDACState *)i2c; | 135 | + TosaDACState *s = FROM_I2C_SLAVE(TosaDACState, i2c); |
136 | s->buf[s->len] = data; | 136 | s->buf[s->len] = data; |
137 | if (s->len ++ > 2) { | 137 | if (s->len ++ > 2) { |
138 | #ifdef VERBOSE | 138 | #ifdef VERBOSE |
@@ -151,7 +151,7 @@ static int tosa_dac_send(i2c_slave *i2c, uint8_t data) | @@ -151,7 +151,7 @@ static int tosa_dac_send(i2c_slave *i2c, uint8_t data) | ||
151 | 151 | ||
152 | static void tosa_dac_event(i2c_slave *i2c, enum i2c_event event) | 152 | static void tosa_dac_event(i2c_slave *i2c, enum i2c_event event) |
153 | { | 153 | { |
154 | - TosaDACState *s = (TosaDACState *)i2c; | 154 | + TosaDACState *s = FROM_I2C_SLAVE(TosaDACState, i2c); |
155 | s->len = 0; | 155 | s->len = 0; |
156 | switch (event) { | 156 | switch (event) { |
157 | case I2C_START_SEND: | 157 | case I2C_START_SEND: |
@@ -178,14 +178,15 @@ static int tosa_dac_recv(i2c_slave *s) | @@ -178,14 +178,15 @@ static int tosa_dac_recv(i2c_slave *s) | ||
178 | return -1; | 178 | return -1; |
179 | } | 179 | } |
180 | 180 | ||
181 | +static void tosa_dac_init(i2c_slave *i2c) | ||
182 | +{ | ||
183 | + /* Nothing to do. */ | ||
184 | +} | ||
185 | + | ||
181 | static void tosa_tg_init(PXA2xxState *cpu) | 186 | static void tosa_tg_init(PXA2xxState *cpu) |
182 | { | 187 | { |
183 | i2c_bus *bus = pxa2xx_i2c_bus(cpu->i2c[0]); | 188 | i2c_bus *bus = pxa2xx_i2c_bus(cpu->i2c[0]); |
184 | - i2c_slave *dac = i2c_slave_init(bus, 0, sizeof(TosaDACState)); | ||
185 | - dac->send = tosa_dac_send; | ||
186 | - dac->event = tosa_dac_event; | ||
187 | - dac->recv = tosa_dac_recv; | ||
188 | - i2c_set_slave_address(dac, DAC_BASE); | 189 | + i2c_create_slave(bus, "tosa_dac", DAC_BASE); |
189 | pxa2xx_ssp_attach(cpu->ssp[1], tosa_ssp_read, | 190 | pxa2xx_ssp_attach(cpu->ssp[1], tosa_ssp_read, |
190 | tosa_ssp_write, cpu); | 191 | tosa_ssp_write, cpu); |
191 | } | 192 | } |
@@ -241,3 +242,17 @@ QEMUMachine tosapda_machine = { | @@ -241,3 +242,17 @@ QEMUMachine tosapda_machine = { | ||
241 | .desc = "Tosa PDA (PXA255)", | 242 | .desc = "Tosa PDA (PXA255)", |
242 | .init = tosa_init, | 243 | .init = tosa_init, |
243 | }; | 244 | }; |
245 | + | ||
246 | +static I2CSlaveInfo tosa_dac_info = { | ||
247 | + .init = tosa_dac_init, | ||
248 | + .event = tosa_dac_event, | ||
249 | + .recv = tosa_dac_recv, | ||
250 | + .send = tosa_dac_send | ||
251 | +}; | ||
252 | + | ||
253 | +static void tosa_register_devices(void) | ||
254 | +{ | ||
255 | + i2c_register_slave("tosa_dac", sizeof(TosaDACState), &tosa_dac_info); | ||
256 | +} | ||
257 | + | ||
258 | +device_init(tosa_register_devices) |