From 142593c9d700e02b316443bcaa99226720242625 Mon Sep 17 00:00:00 2001 From: Antony Pavlov Date: Tue, 17 Dec 2013 19:42:37 +0000 Subject: hw/arm/digic: add UART support Signed-off-by: Antony Pavlov Reviewed-by: Peter Maydell Reviewed-by: Peter Crosthwaite Message-id: 1387188908-754-5-git-send-email-antonynpavlov@gmail.com Signed-off-by: Peter Maydell --- include/hw/arm/digic.h | 2 ++ include/hw/char/digic-uart.h | 47 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 include/hw/char/digic-uart.h (limited to 'include') diff --git a/include/hw/arm/digic.h b/include/hw/arm/digic.h index 177a06d64b..a739d6ae65 100644 --- a/include/hw/arm/digic.h +++ b/include/hw/arm/digic.h @@ -21,6 +21,7 @@ #include "cpu.h" #include "hw/timer/digic-timer.h" +#include "hw/char/digic-uart.h" #define TYPE_DIGIC "digic" @@ -36,6 +37,7 @@ typedef struct DigicState { ARMCPU cpu; DigicTimerState timer[DIGIC4_NB_TIMERS]; + DigicUartState uart; } DigicState; #endif /* HW_ARM_DIGIC_H */ diff --git a/include/hw/char/digic-uart.h b/include/hw/char/digic-uart.h new file mode 100644 index 0000000000..ef83a3059c --- /dev/null +++ b/include/hw/char/digic-uart.h @@ -0,0 +1,47 @@ +/* + * Canon DIGIC UART block declarations. + * + * Copyright (C) 2013 Antony Pavlov + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef HW_CHAR_DIGIC_UART_H +#define HW_CHAR_DIGIC_UART_H + +#include "hw/sysbus.h" +#include "qemu/typedefs.h" + +#define TYPE_DIGIC_UART "digic-uart" +#define DIGIC_UART(obj) \ + OBJECT_CHECK(DigicUartState, (obj), TYPE_DIGIC_UART) + +enum { + R_TX = 0x00, + R_RX, + R_ST = (0x14 >> 2), + R_MAX +}; + +typedef struct DigicUartState { + /*< private >*/ + SysBusDevice parent_obj; + /*< public >*/ + + MemoryRegion regs_region; + CharDriverState *chr; + + uint32_t reg_rx; + uint32_t reg_st; +} DigicUartState; + +#endif /* HW_CHAR_DIGIC_UART_H */ -- cgit v1.2.3