diff options
author | Philippe Mathieu-Daudé | 2019-10-04 01:03:55 +0200 |
---|---|---|
committer | Laurent Vivier | 2019-10-24 20:22:12 +0200 |
commit | de04c31d31c229220d731462380a4255e7936374 (patch) | |
tree | a5bb5da293d28953f6c29a3ac0ec2d9f476acf66 /hw/timer | |
parent | hw: Move M48T59 device from hw/timer/ to hw/rtc/ subdirectory (diff) | |
download | qemu-de04c31d31c229220d731462380a4255e7936374.tar.gz qemu-de04c31d31c229220d731462380a4255e7936374.tar.xz qemu-de04c31d31c229220d731462380a4255e7936374.zip |
hw: Move M41T80 device from hw/timer/ to hw/rtc/ subdirectory
The M41T80 is a Real Time Clock, not a timer.
Move it under the hw/rtc/ subdirectory.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20191003230404.19384-6-philmd@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'hw/timer')
-rw-r--r-- | hw/timer/Kconfig | 4 | ||||
-rw-r--r-- | hw/timer/Makefile.objs | 1 | ||||
-rw-r--r-- | hw/timer/m41t80.c | 119 |
3 files changed, 0 insertions, 124 deletions
diff --git a/hw/timer/Kconfig b/hw/timer/Kconfig index a57e9b59fc..a6b668b255 100644 --- a/hw/timer/Kconfig +++ b/hw/timer/Kconfig @@ -20,10 +20,6 @@ config HPET config I8254 bool -config M41T80 - bool - depends on I2C - config TWL92230 bool depends on I2C diff --git a/hw/timer/Makefile.objs b/hw/timer/Makefile.objs index fe2d1fbc40..2fb12162a6 100644 --- a/hw/timer/Makefile.objs +++ b/hw/timer/Makefile.objs @@ -6,7 +6,6 @@ common-obj-$(CONFIG_CADENCE) += cadence_ttc.o common-obj-$(CONFIG_DS1338) += ds1338.o common-obj-$(CONFIG_HPET) += hpet.o common-obj-$(CONFIG_I8254) += i8254_common.o i8254.o -common-obj-$(CONFIG_M41T80) += m41t80.o common-obj-$(CONFIG_PUV3) += puv3_ost.o common-obj-$(CONFIG_TWL92230) += twl92230.o common-obj-$(CONFIG_XILINX) += xilinx_timer.o diff --git a/hw/timer/m41t80.c b/hw/timer/m41t80.c deleted file mode 100644 index 914ecac8f4..0000000000 --- a/hw/timer/m41t80.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * M41T80 serial rtc emulation - * - * Copyright (c) 2018 BALATON Zoltan - * - * This work is licensed under the GNU GPL license version 2 or later. - * - */ - -#include "qemu/osdep.h" -#include "qemu-common.h" -#include "qemu/log.h" -#include "qemu/module.h" -#include "qemu/timer.h" -#include "qemu/bcd.h" -#include "hw/i2c/i2c.h" - -#define TYPE_M41T80 "m41t80" -#define M41T80(obj) OBJECT_CHECK(M41t80State, (obj), TYPE_M41T80) - -typedef struct M41t80State { - I2CSlave parent_obj; - int8_t addr; -} M41t80State; - -static void m41t80_realize(DeviceState *dev, Error **errp) -{ - M41t80State *s = M41T80(dev); - - s->addr = -1; -} - -static int m41t80_send(I2CSlave *i2c, uint8_t data) -{ - M41t80State *s = M41T80(i2c); - - if (s->addr < 0) { - s->addr = data; - } else { - s->addr++; - } - return 0; -} - -static uint8_t m41t80_recv(I2CSlave *i2c) -{ - M41t80State *s = M41T80(i2c); - struct tm now; - qemu_timeval tv; - - if (s->addr < 0) { - s->addr = 0; - } - if (s->addr >= 1 && s->addr <= 7) { - qemu_get_timedate(&now, -1); - } - switch (s->addr++) { - case 0: - qemu_gettimeofday(&tv); - return to_bcd(tv.tv_usec / 10000); - case 1: - return to_bcd(now.tm_sec); - case 2: - return to_bcd(now.tm_min); - case 3: - return to_bcd(now.tm_hour); - case 4: - return to_bcd(now.tm_wday); - case 5: - return to_bcd(now.tm_mday); - case 6: - return to_bcd(now.tm_mon + 1); - case 7: - return to_bcd(now.tm_year % 100); - case 8 ... 19: - qemu_log_mask(LOG_UNIMP, "%s: unimplemented register: %d\n", - __func__, s->addr - 1); - return 0; - default: - qemu_log_mask(LOG_GUEST_ERROR, "%s: invalid register: %d\n", - __func__, s->addr - 1); - return 0; - } -} - -static int m41t80_event(I2CSlave *i2c, enum i2c_event event) -{ - M41t80State *s = M41T80(i2c); - - if (event == I2C_START_SEND) { - s->addr = -1; - } - return 0; -} - -static void m41t80_class_init(ObjectClass *klass, void *data) -{ - DeviceClass *dc = DEVICE_CLASS(klass); - I2CSlaveClass *sc = I2C_SLAVE_CLASS(klass); - - dc->realize = m41t80_realize; - sc->send = m41t80_send; - sc->recv = m41t80_recv; - sc->event = m41t80_event; -} - -static const TypeInfo m41t80_info = { - .name = TYPE_M41T80, - .parent = TYPE_I2C_SLAVE, - .instance_size = sizeof(M41t80State), - .class_init = m41t80_class_init, -}; - -static void m41t80_register_types(void) -{ - type_register_static(&m41t80_info); -} - -type_init(m41t80_register_types) |