From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kuo-Jung Su Date: Thu, 4 Jul 2013 11:40:32 +0800 Subject: [U-Boot] [PATCH v6 00/12] arm: add Faraday A36x SoC platform support In-Reply-To: <1364540788-13943-1-git-send-email-dantesu@gmail.com> References: <1364540788-13943-1-git-send-email-dantesu@gmail.com> Message-ID: <1372909244-25211-1-git-send-email-dantesu@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de From: Kuo-Jung Su These patches introduce Faraday A36x SoC platform support. Here are some public documents for your reference. http://www.faraday-tech.com/html/documentation/index.html There is also a A369 QEMU emulator available at my github account: https://github.com/dantesu1218/qemu.git Here is quick start for QEMU + U-Boot: 1. Download the QEMU source tree $ git clone -b qemu-1.4.0 https://github.com/dantesu1218/qemu.git 2. Build & Install the QEMU: $ ./configure --target-list=arm-softmmu $ make $ make install 3. Launch u-boot with QEMU: $ qemu-system-arm -M a369 -m 512M -nographic -kernel ~/u-boot-2013.04/u-boot Changes for v6: - Drop ethernet driver updates for ftmac110&ftgmac100, because they are already commited. - arch/arm/cpu/faraday/cpu.c: struct ftwdt010_wdt __iomem *regs -> struct ftwdt010_wdt *regs - arch/arm/cpu/faraday/cmd_bootfa.c: fix compiler warnning - arch/arm/cpu/faraday/cmd_bootfa.c: use shorter paragraph in commit message, and move the original statement into the top of source file. - ftnandc021: update README for CONFIG_SYS_FTNANDC021_TIMING - ftnandc021: remove illegal type-punning Changes for v5: - Coding Style cleanup: 1. struct chip_regs __iomem *regs -> struct chip_regs *regs 2. Move Faraday specific APIs into asm/arch-faraday/*.h - Fix Copyright notices (dates) throughout the patch - Make 'arm: dma_alloc_coherent: malloc() -> memalign()' as a separate patch - Make 'cfi_flash: use buffer length in unmap_physmem()' as a separate patch - Define Faraday machine type in board's config header file - Add the rationale to the command 'bootfa' - Add myself as the maintainer for Faraday A360/A369 in MAINTAINERS. - Chain the video:FTLCDC200 back to this patch series. - Chain the nand:FTNANDC021 back to this patch series. - Chain the net:FTGMAC100 & FTMAC110 back to this patch series. - Update Faraday Firmware Image Format: 1. Drop u-boot image support to simplify the design. Since it's not possible for the hard-wired ROM code of A360/A369 to support U-boot images. And the real bootloader for A360/A369 is actually Faraday bootcode2, rather than U-Boot. 2. Add image creation timestamp - Update 'arch/arm/cpu/faraday/start.S' with the new design, which move relocation into 'arch/arm/lib/relocate.S' - Drop i2c:FTI2C010 & spi:FTSSP010_SPI support. The corresponding patch would restart after this patch series have been accepted. - Revise IRQ & MMU design: Now the exception table would be mapped to 0x00000000 as a small page(4KB), rather than runtime adjust after relocation finished. - Revise irq:FTINTC020 design, now the irq is always enabled inside irq_install_handler(). - Revise clock management system - Revise FTPWMTMR010 & FTTMR010 timer design: 1. Drop IRQ dependant implementation 2. Use gd->arch.timer_rate_hz for timer clock source 3. Use gd->arch.tbl for timestamp Changes for v4: - Coding Style cleanup. - Break down the patch series: - Patches without hard dependency to this series are now seperate patches. - Split up the patch into more logical changesets (i.e. interrupt & timers are now split up) - Drop the faraday/nand.h to remove dependency to ftnandc021 - Drop the faraday/mmc.h to remove dependency to ftsdc010 - Add change logs to each part of the patch series to make patchwork be able to grab comments. Changes for v3: - Coding Style cleanup. There is still one warnning reported by checkpatch.pl, however it's too deep for me to fix it. Here is the shapshot for it: ----------------------------------------------------- WARNING: do not add new typedefs #9735: FILE: include/lcd.h:258: +typedef struct vidinfo { ----------------------------------------------------- - Drop bit fields from c struct. - Drop macros for wirtel()/readl(), call them directly. - Always insert a blank line between declarations and code. - Replace all the infinite wait loop with a timeout. - Add '__iomem' to all the declaration of HW register pointers. - cmd_boot.c: Make it a separate stand-alone patch. - ftspi020: Make it a separate stand-alone patch. - dma-mapping.h: Have the global data ptr declared outside functions. - dma-mapping.h: Add #if...#else...#endif to dma_free_coherent(). - MMU/D-Cache: Drop static non-cached region, now we use map_physmem()/unmap_physmem() for dynamic mappings. - ftmac110: Make a correction to multi-line comment style - ftmac110: Use random MAC address while having trouble to get one from environment variables. - ftmac110: Add comments to timing control registers. - ftnandc021: Re-write this driver with ECC enabled and correct column address handling for OOB read/write, and fixing issused addressed by Scott. - a36x_config: No more static global network configurations. - a36x_config: Add a common file for the redundant configurations. Changes for v2: - Coding Style cleanup. - Use readl(), writel(), clrsetbits_le32() to replace REG() macros. - Use structure based hardware registers to replace the macro constants. - Replace BIT() with BIT_MASK(). - echi-faraday: Remove debug codes. - ftmac110: Remove debug codes. - cache-cp15: Enable write buffer in write-through mode. Kuo-Jung Su (12): arm: dma_alloc_coherent: malloc() -> memalign() video: add Faraday FTLCDC200 LCD controller support nand: add Faraday FTNANDC021 NAND controller support cfi_flash: use buffer length in unmap_physmem() arm: add MMU/D-Cache support for Faraday cores arm: add Faraday processor core support arm: add Faraday FTINTC020 interrupt controller support arm: add Faraday FTTMR010 timer support arm: add Faraday FTPWMTMR010 timer support arm: add customized boot command for Faraday Images mmc: ftsdc010_mci: clk_get_rate() -> clock_get_rate() arm: add Faraday A360/A369 SoC platform support MAINTAINERS | 5 + README | 10 + arch/arm/cpu/faraday/Makefile | 58 +++ arch/arm/cpu/faraday/a360/Makefile | 49 ++ arch/arm/cpu/faraday/a369/Makefile | 50 ++ arch/arm/cpu/faraday/a369/cmd_fa606.c | 86 ++++ arch/arm/cpu/faraday/cmd_bootfa.c | 279 +++++++++++ arch/arm/cpu/faraday/config.mk | 33 ++ arch/arm/cpu/faraday/cpu.c | 345 ++++++++++++++ arch/arm/cpu/faraday/ftintc020.c | 156 ++++++ arch/arm/cpu/faraday/ftpwmtmr010.c | 128 +++++ arch/arm/cpu/faraday/fttmr010.c | 136 ++++++ arch/arm/cpu/faraday/fwimage.h | 47 ++ arch/arm/cpu/faraday/fwimage2.h | 67 +++ arch/arm/cpu/faraday/start.S | 431 +++++++++++++++++ arch/arm/cpu/u-boot.lds | 11 + arch/arm/include/asm/arch-a360/hardware.h | 84 ++++ arch/arm/include/asm/arch-a360/pmu.h | 95 ++++ arch/arm/include/asm/arch-a360/scu.h | 79 ++++ arch/arm/include/asm/arch-a369/ahbc.h | 34 ++ arch/arm/include/asm/arch-a369/hardware.h | 99 ++++ arch/arm/include/asm/arch-a369/scu.h | 224 +++++++++ arch/arm/include/asm/arch-faraday/clock.h | 41 ++ arch/arm/include/asm/arch-faraday/interrupt.h | 29 ++ arch/arm/include/asm/dma-mapping.h | 61 ++- arch/arm/include/asm/global_data.h | 4 + arch/arm/include/asm/io.h | 160 ++++++- arch/arm/include/asm/system.h | 7 +- arch/arm/lib/cache-cp15.c | 12 + board/faraday/a360evb/Makefile | 49 ++ board/faraday/a360evb/board.c | 72 +++ board/faraday/a360evb/clock.c | 72 +++ board/faraday/a360evb/config.mk | 33 ++ board/faraday/a360evb/lowlevel_init.S | 33 ++ board/faraday/a369evb/Makefile | 49 ++ board/faraday/a369evb/board.c | 176 +++++++ board/faraday/a369evb/clock.c | 80 ++++ board/faraday/a369evb/config.mk | 33 ++ board/faraday/a369evb/lowlevel_init.S | 136 ++++++ boards.cfg | 3 + drivers/mmc/ftsdc010_mci.c | 2 +- drivers/mtd/cfi_flash.c | 2 +- drivers/mtd/nand/Makefile | 1 + drivers/mtd/nand/ftnandc021.c | 626 +++++++++++++++++++++++++ drivers/video/Makefile | 1 + drivers/video/ftlcdc200.c | 148 ++++++ drivers/video/ftlcdc200_panel.c | 221 +++++++++ include/common.h | 5 + include/configs/a360.h | 60 +++ include/configs/a369-common.h | 75 +++ include/configs/a369.h | 34 ++ include/configs/a369_fa606te.h | 31 ++ include/configs/faraday-common.h | 243 ++++++++++ include/faraday/ftintc020.h | 37 ++ include/faraday/ftlcdc200.h | 179 +++++++ include/faraday/ftnandc021.h | 153 ++++++ include/faraday/ftpwmtmr010.h | 41 ++ include/faraday/ftsmc020.h | 1 + include/faraday/fttmr010.h | 17 + include/lcd.h | 33 ++ 60 files changed, 5451 insertions(+), 15 deletions(-) create mode 100644 arch/arm/cpu/faraday/Makefile create mode 100644 arch/arm/cpu/faraday/a360/Makefile create mode 100644 arch/arm/cpu/faraday/a369/Makefile create mode 100644 arch/arm/cpu/faraday/a369/cmd_fa606.c create mode 100644 arch/arm/cpu/faraday/cmd_bootfa.c create mode 100644 arch/arm/cpu/faraday/config.mk create mode 100644 arch/arm/cpu/faraday/cpu.c create mode 100644 arch/arm/cpu/faraday/ftintc020.c create mode 100644 arch/arm/cpu/faraday/ftpwmtmr010.c create mode 100644 arch/arm/cpu/faraday/fttmr010.c create mode 100644 arch/arm/cpu/faraday/fwimage.h create mode 100644 arch/arm/cpu/faraday/fwimage2.h create mode 100644 arch/arm/cpu/faraday/start.S create mode 100644 arch/arm/include/asm/arch-a360/hardware.h create mode 100644 arch/arm/include/asm/arch-a360/pmu.h create mode 100644 arch/arm/include/asm/arch-a360/scu.h create mode 100644 arch/arm/include/asm/arch-a369/ahbc.h create mode 100644 arch/arm/include/asm/arch-a369/hardware.h create mode 100644 arch/arm/include/asm/arch-a369/scu.h create mode 100644 arch/arm/include/asm/arch-faraday/clock.h create mode 100644 arch/arm/include/asm/arch-faraday/interrupt.h create mode 100644 board/faraday/a360evb/Makefile create mode 100644 board/faraday/a360evb/board.c create mode 100644 board/faraday/a360evb/clock.c create mode 100644 board/faraday/a360evb/config.mk create mode 100644 board/faraday/a360evb/lowlevel_init.S create mode 100644 board/faraday/a369evb/Makefile create mode 100644 board/faraday/a369evb/board.c create mode 100644 board/faraday/a369evb/clock.c create mode 100644 board/faraday/a369evb/config.mk create mode 100644 board/faraday/a369evb/lowlevel_init.S create mode 100644 drivers/mtd/nand/ftnandc021.c create mode 100644 drivers/video/ftlcdc200.c create mode 100644 drivers/video/ftlcdc200_panel.c create mode 100644 include/configs/a360.h create mode 100644 include/configs/a369-common.h create mode 100644 include/configs/a369.h create mode 100644 include/configs/a369_fa606te.h create mode 100644 include/configs/faraday-common.h create mode 100644 include/faraday/ftintc020.h create mode 100644 include/faraday/ftlcdc200.h create mode 100644 include/faraday/ftnandc021.h create mode 100644 include/faraday/ftpwmtmr010.h -- 1.7.9.5