[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/4] xen/arm: introduce Allwinner sun6i SOC basic support
Ian Campbell wrote: > On Fri, 2013-05-31 at 20:53 +0800, Bamvor Jian Zhang wrote: >> Allwinner A31(code name sun6i) is a quad-core Cortex-A7 SOC. Allwinner has >> released the source code in http://git.rhombus-tech.net. >> >> This patch define registers and macros for early printk and mode switch. >> kick cpu is not implemneted yet. because the secondary cpu boot up >> sequence is a little bit different from exynos5. >> >> Signed-off-by: Bamvor Jian Zhang <bjzhang@xxxxxxxx> >> --- >> xen/arch/arm/arm32/debug-sun6i.inc | 50 >> +++++++++++++++++++++++++++++++++++ >> xen/include/asm-arm/platforms/sun6i.h | 28 ++++++++++++++++++++ >> 2 files changed, 78 insertions(+) >> create mode 100644 xen/arch/arm/arm32/debug-sun6i.inc >> create mode 100644 xen/include/asm-arm/platforms/sun6i.h >> >> diff --git a/xen/arch/arm/arm32/debug-sun6i.inc >> b/xen/arch/arm/arm32/debug-sun6i.inc >> new file mode 100644 >> index 0000000..eaa1197 >> --- /dev/null >> +++ b/xen/arch/arm/arm32/debug-sun6i.inc >> @@ -0,0 +1,50 @@ >> +/* >> + * xen/arch/arm/arm32/debug-sun6i.inc >> + * >> + * Allwinner sun6i specific debug code >> + * >> + * Bamvor Jian Zhang <bjzhang@xxxxxxxx> >> + * Copyright (c) 2013 SUSE >> + * >> + * 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. >> + */ >> + >> +/* sun6i UART initialization > > This does appear to use a distinct set of registers from either the > existing pl011 or exynos4xxx UART driver so it should be a separate > driver. Do you know if this particular logic block is specific to sn6i > or is it used elsewhere (e.g. in all sun*i)? Do you know if there is a > more generic name for the part? sun4i, sun5i use the Synopsys DesignWare 8250 IP. and sun6i is also the 8250 compatiblity one. how about i create a debug-8250.inc and update it when other 8250 device add. > > Not a big deal -- we can always rename to be more generic as we see > other examples of the same UART. > >> + * rb: register which contains the UART base address >> + * rc: scratch register 1 (unused here) >> + * rd: scratch register 2 (unused here) */ >> +.macro early_uart_init rb, rc, rd >> +/* assume the uart already init by bootloader */ >> +.endm > > I think Andre's refactoring of the UART init stuff in and around commit > 130645eee340608c12b632535d3f983508348ba1 lets you avoid this by just not > setting EARLY_PRINTK_INIT_UART. yes. I saw Andre' patch. when i write this piece of code Andre's patch is not commit. i will modify this in next version. > >> + >> +/* sun6i UART wait UART to be ready to transmit >> + * rb: register which contains the UART base address >> + * rc: scratch register */ >> +.macro early_uart_ready rb, rc >> +1: >> + ldr \rc, [\rb, #0x7c] /* <- UART_USR (Status Register) */ >> + tst \rc, #0x2 /* Check BUSY bit */ >> + beq 1b /* Wait for the UART to be ready */ >> +.endm >> + >> +/* sun6i UART transmit character >> + * rb: register which contains the UART base address >> + * rt: register which contains the character to transmit */ >> +.macro early_uart_transmit rb, rt >> + str \rt, [\rb] /* -> UART_THR (Transmit Holding >> Register) */ >> +.endm >> + >> +/* >> + * Local variables: >> + * mode: ASM >> + * indent-tabs-mode: nil >> + * End: >> + */ >> diff --git a/xen/include/asm-arm/platforms/sun6i.h >> b/xen/include/asm-arm/platforms/sun6i.h >> new file mode 100644 >> index 0000000..f910ad6 >> --- /dev/null >> +++ b/xen/include/asm-arm/platforms/sun6i.h >> @@ -0,0 +1,28 @@ >> +#ifndef __ASM_ARM_PLATFORMS_SUN6I_H >> +#define __ASM_ASM_PLATFORMS_SUN6I_H >> + >> +/* Constants below is only used in assembly because the DTS is not yet >> parsed */ >> +#ifdef __ASSEMBLY__ >> + >> +/* GIC Base Address */ >> +#define SUN6I_GIC_BASE_ADDRESS 0x01c82000 >> + >> +/* Timer's frequency */ >> +/* \TODO I do not know yet, assume it 24MHz. check it later */ >> +#define SUN6I_TIMER_FREQUENCY (24 * 1000 * 1000) /* 24 MHz */ >> + >> +/* Arndale machine ID */ > > Comment is out of date, but I hope we can avoid needing to know machine > numbers entirely some where down the line. (I expect this will be > clearer after my reply to #4) > >> +/* XXX 3894 is downstream number for sun6i. 4137 is upstream number for >> sun6i */ >> +#define MACH_TYPE_SUN6I 4137 >> + >> +#endif /* __ASSEMBLY__ */ >> + >> +#endif /* __ASM_ARM_PLATFORMS_SUN6I_H */ >> +/* >> + * Local variables: >> + * mode: C >> + * c-file-style: "BSD" >> + * c-basic-offset: 4 >> + * indent-tabs-mode: nil >> + * End: >> + */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |