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
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)
24 ch7xxx_rx(I2CSlave
*i2c
)
26 CH7xxxState
*s
= (CH7xxxState
*)i2c
;
31 return 0x2A; /* CH7006 ID */
38 ch7xxx_tx(I2CSlave
*i2c
, uint8_t data
)
40 DBF("TX: %d\n", data
);
41 CH7xxxState
*s
= (CH7xxxState
*)i2c
;
52 ch7xxx_event(I2CSlave
*i2c
, enum i2c_event event
)
54 CH7xxxState
*s
= (CH7xxxState
*)i2c
;
55 DBF("EV? %d\n", event
);
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));
76 static const VMStateDescription vmstate_ch7xxx
= {
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
),
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
;
100 static const TypeInfo ch7xxx_info
= {
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
)