Clean include statements
[qemu/ar7.git] / hw / arm / ch7xxx.c
blob17b185bcb500ca85215ea17b6517e8c46a42c347
1 /* Chrontel 7xxx (7006 in particular) stub implementation.
3 * Copyright 2008 Daniel Silverstone <dsilvers@simtec.co.uk> and
4 * Vincent Sanders <vince@simtec.co.uk>
6 * Copyright 2010, 2012 Stefan Weil
8 */
10 #include "qemu/osdep.h"
11 #include "qemu-common.h"
12 #include "hw/i2c/i2c.h"
14 //#define DBF(X...) fprintf(stderr, "QEMU:ch7xxx:" X)
15 #define DBF(X...)
17 typedef struct {
18 I2CSlave i2c;
19 int reg;
20 int wridx;
21 } CH7xxxState;
23 static int
24 ch7xxx_rx(I2CSlave *i2c)
26 CH7xxxState *s = (CH7xxxState *)i2c;
27 DBF("RX?\n");
29 switch (s->reg) {
30 case 0x25:
31 return 0x2A; /* CH7006 ID */
34 return 0x00;
37 static int
38 ch7xxx_tx(I2CSlave *i2c, uint8_t data)
40 DBF("TX: %d\n", data);
41 CH7xxxState *s = (CH7xxxState *)i2c;
42 if (s->wridx == 0) {
43 s->reg = data;
44 s->wridx++;
45 return 0;
48 return 0;
51 static void
52 ch7xxx_event(I2CSlave *i2c, enum i2c_event event)
54 CH7xxxState *s = (CH7xxxState *)i2c;
55 DBF("EV? %d\n", event);
56 switch (event) {
57 case I2C_START_RECV:
58 break;
59 case I2C_START_SEND:
60 s->wridx = 0;
61 case I2C_FINISH:
62 case I2C_NACK:
63 break;
67 static int ch7xxx_init(I2CSlave *i2c)
69 //~ StcPMUState *s = FROM_I2C_SLAVE(StcPMUState, i2c);
70 //~ StcPMUState *s = (StcPMUState *)
71 //~ i2c_slave_init(bus, addr, sizeof(StcPMUState));
73 return 0;
76 static const VMStateDescription vmstate_ch7xxx = {
77 .name = "ch7xxx",
78 .version_id = 0,
79 .minimum_version_id = 0,
80 .minimum_version_id_old = 0,
81 //~ .pre_save = menelaus_pre_save,
82 //~ .post_load = menelaus_post_load,
83 .fields = (VMStateField []) {
84 VMSTATE_I2C_SLAVE(i2c, CH7xxxState),
85 VMSTATE_END_OF_LIST()
89 static void ch7xx_class_init(ObjectClass *klass, void *data)
91 DeviceClass *dc = DEVICE_CLASS(klass);
92 I2CSlaveClass *k = I2C_SLAVE_CLASS(klass);
93 dc->vmsd = &vmstate_ch7xxx;
94 k->init = ch7xxx_init;
95 k->event = ch7xxx_event;
96 k->recv = ch7xxx_rx;
97 k->send = ch7xxx_tx;
100 static const TypeInfo ch7xxx_info = {
101 .name ="ch7xxx",
102 .parent = TYPE_I2C_SLAVE,
103 .instance_size = sizeof(CH7xxxState),
104 .class_init = ch7xx_class_init,
107 static void ch7xxx_register_types(void)
109 type_register_static(&ch7xxx_info);
112 type_init(ch7xxx_register_types)