SSD0303 qdev conversion

Signed-off-by: Paul Brook <paul@codesourcery.com>
This commit is contained in:
Paul Brook 2009-05-14 22:35:08 +01:00
parent fe8de49258
commit d2199005d5
3 changed files with 17 additions and 11 deletions

View File

@ -91,9 +91,6 @@ void *wm8750_dac_buffer(void *opaque, int samples);
void wm8750_dac_commit(void *opaque); void wm8750_dac_commit(void *opaque);
void wm8750_set_bclk_in(void *opaque, int new_hz); void wm8750_set_bclk_in(void *opaque, int new_hz);
/* ssd0303.c */
void ssd0303_init(i2c_bus *bus, int address);
/* twl92230.c */ /* twl92230.c */
i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq); i2c_slave *twl92230_init(i2c_bus *bus, qemu_irq irq);
qemu_irq *twl92230_gpio_in_get(i2c_slave *i2c); qemu_irq *twl92230_gpio_in_get(i2c_slave *i2c);

View File

@ -10,7 +10,6 @@
/* The controller can support a variety of different displays, but we only /* The controller can support a variety of different displays, but we only
implement one. Most of the commends relating to brightness and geometry implement one. Most of the commends relating to brightness and geometry
setup are ignored. */ setup are ignored. */
#include "hw.h"
#include "i2c.h" #include "i2c.h"
#include "console.h" #include "console.h"
@ -305,17 +304,27 @@ static int ssd0303_load(QEMUFile *f, void *opaque, int version_id)
return 0; return 0;
} }
void ssd0303_init(i2c_bus *bus, int address) static void ssd0303_init(i2c_slave *i2c)
{ {
ssd0303_state *s; ssd0303_state *s = FROM_I2C_SLAVE(ssd0303_state, i2c);
s = (ssd0303_state *)i2c_slave_init(bus, address, sizeof(ssd0303_state));
s->i2c.event = ssd0303_event;
s->i2c.recv = ssd0303_recv;
s->i2c.send = ssd0303_send;
s->ds = graphic_console_init(ssd0303_update_display, s->ds = graphic_console_init(ssd0303_update_display,
ssd0303_invalidate_display, ssd0303_invalidate_display,
NULL, NULL, s); NULL, NULL, s);
qemu_console_resize(s->ds, 96 * MAGNIFY, 16 * MAGNIFY); qemu_console_resize(s->ds, 96 * MAGNIFY, 16 * MAGNIFY);
register_savevm("ssd0303_oled", -1, 1, ssd0303_save, ssd0303_load, s); register_savevm("ssd0303_oled", -1, 1, ssd0303_save, ssd0303_load, s);
} }
static I2CSlaveInfo ssd0303_info = {
.init = ssd0303_init,
.event = ssd0303_event,
.recv = ssd0303_recv,
.send = ssd0303_send
};
static void ssd0303_register_devices(void)
{
i2c_register_slave("ssd0303", sizeof(ssd0303_state), &ssd0303_info);
}
device_init(ssd0303_register_devices)

View File

@ -1324,7 +1324,7 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model,
i2c = i2c_init_bus(); i2c = i2c_init_bus();
stellaris_i2c_init(0x40020000, pic[8], i2c); stellaris_i2c_init(0x40020000, pic[8], i2c);
if (board->peripherals & BP_OLED_I2C) { if (board->peripherals & BP_OLED_I2C) {
ssd0303_init(i2c, 0x3d); i2c_create_slave(i2c, "ssd0303", 0x3d);
} }
} }