mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
ARM: exynos4210: UART support
Add basic support of exynos4210 UART Signed-off-by: Maksim Kozlov <m.kozlov@samsung.com> Signed-off-by: Evgeny Voevodin <e.voevodin@samsung.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
committed by
Peter Maydell
parent
0caa711335
commit
e5a4914efc
+1
-1
@@ -345,7 +345,7 @@ obj-arm-y += arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
|
||||
obj-arm-y += versatile_pci.o
|
||||
obj-arm-y += realview_gic.o realview.o arm_sysctl.o arm11mpcore.o a9mpcore.o
|
||||
obj-arm-y += exynos4210_gic.o exynos4210_combiner.o exynos4210.o
|
||||
obj-arm-y += exynos4_boards.o
|
||||
obj-arm-y += exynos4_boards.o exynos4210_uart.o
|
||||
obj-arm-y += arm_l2x0.o
|
||||
obj-arm-y += arm_mptimer.o
|
||||
obj-arm-y += armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
|
||||
|
||||
@@ -29,6 +29,18 @@
|
||||
|
||||
#define EXYNOS4210_CHIPID_ADDR 0x10000000
|
||||
|
||||
/* UART's definitions */
|
||||
#define EXYNOS4210_UART0_BASE_ADDR 0x13800000
|
||||
#define EXYNOS4210_UART1_BASE_ADDR 0x13810000
|
||||
#define EXYNOS4210_UART2_BASE_ADDR 0x13820000
|
||||
#define EXYNOS4210_UART3_BASE_ADDR 0x13830000
|
||||
#define EXYNOS4210_UART0_FIFO_SIZE 256
|
||||
#define EXYNOS4210_UART1_FIFO_SIZE 64
|
||||
#define EXYNOS4210_UART2_FIFO_SIZE 16
|
||||
#define EXYNOS4210_UART3_FIFO_SIZE 16
|
||||
/* Interrupt Group of External Interrupt Combiner for UART */
|
||||
#define EXYNOS4210_UART_INT_GRP 26
|
||||
|
||||
/* External GIC */
|
||||
#define EXYNOS4210_EXT_GIC_CPU_BASE_ADDR 0x10480000
|
||||
#define EXYNOS4210_EXT_GIC_DIST_BASE_ADDR 0x10490000
|
||||
@@ -187,5 +199,22 @@ Exynos4210State *exynos4210_init(MemoryRegion *system_mem,
|
||||
memory_region_add_subregion(system_mem, EXYNOS4210_DRAM0_BASE_ADDR,
|
||||
&s->dram0_mem);
|
||||
|
||||
/*** UARTs ***/
|
||||
exynos4210_uart_create(EXYNOS4210_UART0_BASE_ADDR,
|
||||
EXYNOS4210_UART0_FIFO_SIZE, 0, NULL,
|
||||
s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP, 0)]);
|
||||
|
||||
exynos4210_uart_create(EXYNOS4210_UART1_BASE_ADDR,
|
||||
EXYNOS4210_UART1_FIFO_SIZE, 1, NULL,
|
||||
s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP, 1)]);
|
||||
|
||||
exynos4210_uart_create(EXYNOS4210_UART2_BASE_ADDR,
|
||||
EXYNOS4210_UART2_FIFO_SIZE, 2, NULL,
|
||||
s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP, 2)]);
|
||||
|
||||
exynos4210_uart_create(EXYNOS4210_UART3_BASE_ADDR,
|
||||
EXYNOS4210_UART3_FIFO_SIZE, 3, NULL,
|
||||
s->irq_table[exynos4210_get_irq(EXYNOS4210_UART_INT_GRP, 3)]);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -119,4 +119,13 @@ uint32_t exynos4210_get_irq(uint32_t grp, uint32_t bit);
|
||||
void exynos4210_combiner_get_gpioin(Exynos4210Irq *irqs, DeviceState *dev,
|
||||
int ext);
|
||||
|
||||
/*
|
||||
* exynos4210 UART
|
||||
*/
|
||||
DeviceState *exynos4210_uart_create(target_phys_addr_t addr,
|
||||
int fifo_size,
|
||||
int channel,
|
||||
CharDriverState *chr,
|
||||
qemu_irq irq);
|
||||
|
||||
#endif /* EXYNOS4210_H_ */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user