Commit 697454eb8e2335c21e07b8cd0a7468d1c53bed08
1 parent
e3b42536
TMP105 qdev conversion
Signed-off-by: Paul Brook <paul@codesourcery.com>
Showing
3 changed files
with
20 additions
and
12 deletions
hw/i2c.h
... | ... | @@ -96,8 +96,6 @@ qemu_irq *twl92230_gpio_in_get(i2c_slave *i2c); |
96 | 96 | void twl92230_gpio_out_set(i2c_slave *i2c, int line, qemu_irq handler); |
97 | 97 | |
98 | 98 | /* tmp105.c */ |
99 | -struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm); | |
100 | -void tmp105_reset(i2c_slave *i2c); | |
101 | 99 | void tmp105_set(i2c_slave *i2c, int temp); |
102 | 100 | |
103 | 101 | /* lm832x.c */ | ... | ... |
hw/nseries.c
... | ... | @@ -179,6 +179,7 @@ static void n8x0_nand_setup(struct n800_s *s) |
179 | 179 | |
180 | 180 | static void n8x0_i2c_setup(struct n800_s *s) |
181 | 181 | { |
182 | + DeviceState *dev; | |
182 | 183 | qemu_irq tmp_irq = omap2_gpio_in_get(s->cpu->gpif, N8X0_TMP105_GPIO)[0]; |
183 | 184 | |
184 | 185 | /* Attach the CPU on one end of our I2C bus. */ |
... | ... | @@ -191,7 +192,8 @@ static void n8x0_i2c_setup(struct n800_s *s) |
191 | 192 | N8X0_MENELAUS_ADDR); |
192 | 193 | |
193 | 194 | /* Attach a TMP105 PM chip (A0 wired to ground) */ |
194 | - i2c_set_slave_address(tmp105_init(s->i2c, tmp_irq), N8X0_TMP105_ADDR); | |
195 | + dev = i2c_create_slave(s->i2c, "tmp105", N8X0_TMP105_ADDR); | |
196 | + qdev_connect_gpio_out(dev, 0, tmp_irq); | |
195 | 197 | } |
196 | 198 | |
197 | 199 | /* Touchscreen and keypad controller */ | ... | ... |
hw/tmp105.c
... | ... | @@ -214,7 +214,7 @@ static int tmp105_load(QEMUFile *f, void *opaque, int version_id) |
214 | 214 | return 0; |
215 | 215 | } |
216 | 216 | |
217 | -void tmp105_reset(i2c_slave *i2c) | |
217 | +static void tmp105_reset(i2c_slave *i2c) | |
218 | 218 | { |
219 | 219 | TMP105State *s = (TMP105State *) i2c; |
220 | 220 | |
... | ... | @@ -227,19 +227,27 @@ void tmp105_reset(i2c_slave *i2c) |
227 | 227 | tmp105_interrupt_update(s); |
228 | 228 | } |
229 | 229 | |
230 | -struct i2c_slave *tmp105_init(i2c_bus *bus, qemu_irq alarm) | |
230 | +static void tmp105_init(i2c_slave *i2c) | |
231 | 231 | { |
232 | - TMP105State *s = (TMP105State *) | |
233 | - i2c_slave_init(bus, 0, sizeof(TMP105State)); | |
232 | + TMP105State *s = FROM_I2C_SLAVE(TMP105State, i2c); | |
234 | 233 | |
235 | - s->i2c.event = tmp105_event; | |
236 | - s->i2c.recv = tmp105_rx; | |
237 | - s->i2c.send = tmp105_tx; | |
238 | - s->pin = alarm; | |
234 | + qdev_init_gpio_out(&i2c->qdev, &s->pin, 1); | |
239 | 235 | |
240 | 236 | tmp105_reset(&s->i2c); |
241 | 237 | |
242 | 238 | register_savevm("TMP105", -1, 0, tmp105_save, tmp105_load, s); |
239 | +} | |
240 | + | |
241 | +static I2CSlaveInfo tmp105_info = { | |
242 | + .init = tmp105_init, | |
243 | + .event = tmp105_event, | |
244 | + .recv = tmp105_rx, | |
245 | + .send = tmp105_tx | |
246 | +}; | |
243 | 247 | |
244 | - return &s->i2c; | |
248 | +static void tmp105_register_devices(void) | |
249 | +{ | |
250 | + i2c_register_slave("tmp105", sizeof(TMP105State), &tmp105_info); | |
245 | 251 | } |
252 | + | |
253 | +device_init(tmp105_register_devices) | ... | ... |