[U-Boot] [PATCH v12 0/8] arm: add Faraday SoC platform support

Kuo-Jung Su dantesu at gmail.com
Tue Apr 1 10:46:51 CEST 2014


From: Kuo-Jung Su <dantesu at faraday-tech.com>

These patches introduce Faraday A369 & Virtual SoC platform support.

Here are some public documents for your reference.

   http://www.faraday-tech.com/html/Product/SoCPlatform/SoCreativeIII.htm
   http://www.faraday-tech.com/html/documentation/index.html

There is also a QEMU based A369 emulator available at my github:

   https://github.com/dantesu1218/qemu.git

Here is a quick start for QEMU + U-Boot:

1. Download the QEMU source tree

   $ git clone -b qemu-1.5.1 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-2014.01/u-boot

Changes for v12:
   - Coding style cleanup.
   - Move strlcpy() from ether.c to string.c
   - Add Linux legacy clock framework support (no common clock).
   - Migrate to generic board model (CONFIG_SYS_GENERIC_BOARD).
   - Drop pre-defined Ethernet MAC for all platforms.
   - Drop USB-DFU support due to lack of registered Vendor ID.
   - CONFIG_SYS_MAXARGS: 32 -> 8
   - CONFIG_CMD_AUTOSCRIPT -> CONFIG_CMD_SOURCE

Changes for v11:
   - Fix boards.cfg (due to commit 3fa67050)
   - Rename <asm/sizes.h> to <linux/sizes.h> (due to commit 1ace4022)
   - Directly specify the timer object in 'arch/arm/cpu/faraday/<soc>/Makefile'
     instead of using CONFIG_FTTMR010 in 'arch/arm/cpu/faraday/Makefile'
   - Directly specify the timer object in 'arch/arm/cpu/faraday/<soc>/Makefile'
     instead of using CONFIG_FTPWMTMR010 in 'arch/arm/cpu/faraday/Makefile'

Changes for v10:
   - As per Albert's request, merge patch 1, 2 and patch 5, 6
   - Add missing header file for FTSDC021

Changes for v9:
   - Shrink the patch by dropping MMU/D-cache support, and see if we could get
     this patch accepted ASAP.
   - Replace the out-of-date A360 EVB with Faraday Virtual Machine (FVM).
   - Build 'arch_preboot_os()' only when CONFIG_CMD_BOOTM is defined.
   - Add do_go_exec() to override the default behavior of 'go' command.
   - Make Faraday SoC helper files & ftsmc020 standalone changesets.
   - Coding style cleanup.

Changes for v8:
   - Revise MMU/D-cache support
   - Revise Faraday SoC common configurations.
   - Drop FTINTC020 interrupt controller support.
   - Drop FTLCDC200 LCD controller support.
   - Drop FTNANDC021 NAND flash controller support, it would be latter submitted
     as a standalone patch set.
   - Drop proprietary Faraday SPL support, the u-boot-spl would be adapted instead.
     However because it depends on the FTNANDC021 patch set, so it would be submitted
     after the FTNANDC021 patch set get committed.

Changes for v7:
   - Update license to use SPDX identifiers.
   - cfi_flash: drop the patch to unmap_physmem(),
     because it's already applied.
   - ftnandc021: put_unaligned() -> memcpy()
   - ftnandc021: update ecc relatived function prototypes to fix
     compile warnnings.

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 (8):
  libc: move strlcpy() from ether.c to string.c
  arm: add legacy linux clock framework support
  arm: add Faraday ARMv5TE platform common libraries
  arm: faraday: add FTTMR010 timer suppor
  arm: faraday: add FTPWMTMR010 timer support
  arm: faraday: add A369 evaluation board support
  arm: faraday: add missing header file for FTSDC021
  arm: faraday: add faraday virtual machine support

 arch/arm/cpu/faraday/Makefile             |   13 +
 arch/arm/cpu/faraday/a369/Makefile        |    8 +
 arch/arm/cpu/faraday/a369/clock.c         |   87 ++++++
 arch/arm/cpu/faraday/a369/core.c          |   21 ++
 arch/arm/cpu/faraday/a369/core.h          |   15 ++
 arch/arm/cpu/faraday/a369/pinmux.c        |   37 +++
 arch/arm/cpu/faraday/cache.c              |  164 ++++++++++++
 arch/arm/cpu/faraday/clk.c                |   67 +++++
 arch/arm/cpu/faraday/config.mk            |   15 ++
 arch/arm/cpu/faraday/cpu.c                |  116 ++++++++
 arch/arm/cpu/faraday/ftpwmtmr010.c        |  112 ++++++++
 arch/arm/cpu/faraday/fttmr010.c           |  123 +++++++++
 arch/arm/cpu/faraday/fvm/Makefile         |    8 +
 arch/arm/cpu/faraday/fvm/clock.c          |   70 +++++
 arch/arm/cpu/faraday/fvm/core.c           |   20 ++
 arch/arm/cpu/faraday/fvm/core.h           |   14 +
 arch/arm/cpu/faraday/start.S              |  407 +++++++++++++++++++++++++++++
 arch/arm/include/asm/arch-a369/clkdev.h   |   20 ++
 arch/arm/include/asm/arch-a369/hardware.h |   88 +++++++
 arch/arm/include/asm/arch-a369/sysc.h     |  211 +++++++++++++++
 arch/arm/include/asm/arch-fvm/clkdev.h    |   20 ++
 arch/arm/include/asm/arch-fvm/hardware.h  |   76 ++++++
 arch/arm/include/asm/clkdev.h             |   29 ++
 board/faraday/a369evb/Makefile            |    9 +
 board/faraday/a369evb/board.c             |  118 +++++++++
 board/faraday/a369evb/lowlevel_init.S     |   15 ++
 board/faraday/fvm/Makefile                |    9 +
 board/faraday/fvm/board.c                 |   65 +++++
 board/faraday/fvm/lowlevel_init.S         |   15 ++
 boards.cfg                                |    2 +
 drivers/Makefile                          |    1 +
 drivers/clk/Makefile                      |    8 +
 drivers/clk/clkdev.c                      |  207 +++++++++++++++
 drivers/i2c/fti2c010.c                    |    3 +-
 drivers/mmc/ftsdc010_mci.c                |    3 +-
 drivers/mmc/ftsdc021_sdhci.c              |    3 +-
 drivers/spi/ftssp010_spi.c                |    3 +-
 drivers/usb/gadget/ether.c                |   24 --
 include/configs/a369.h                    |  104 ++++++++
 include/configs/faraday-common.h          |  276 +++++++++++++++++++
 include/configs/fvm.h                     |   68 +++++
 include/faraday/clkdev.h                  |   19 ++
 include/faraday/ftpwmtmr010.h             |   41 +++
 include/faraday/ftsdc021.h                |   13 +
 include/faraday/ftsmc020.h                |    1 +
 include/faraday/fttmr010.h                |   17 ++
 include/linux/clk.h                       |  181 +++++++++++++
 include/linux/clkdev.h                    |   45 ++++
 include/linux/string.h                    |    3 +
 lib/string.c                              |   25 ++
 50 files changed, 2991 insertions(+), 28 deletions(-)
 create mode 100644 arch/arm/cpu/faraday/Makefile
 create mode 100644 arch/arm/cpu/faraday/a369/Makefile
 create mode 100644 arch/arm/cpu/faraday/a369/clock.c
 create mode 100644 arch/arm/cpu/faraday/a369/core.c
 create mode 100644 arch/arm/cpu/faraday/a369/core.h
 create mode 100644 arch/arm/cpu/faraday/a369/pinmux.c
 create mode 100644 arch/arm/cpu/faraday/cache.c
 create mode 100644 arch/arm/cpu/faraday/clk.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/ftpwmtmr010.c
 create mode 100644 arch/arm/cpu/faraday/fttmr010.c
 create mode 100644 arch/arm/cpu/faraday/fvm/Makefile
 create mode 100644 arch/arm/cpu/faraday/fvm/clock.c
 create mode 100644 arch/arm/cpu/faraday/fvm/core.c
 create mode 100644 arch/arm/cpu/faraday/fvm/core.h
 create mode 100644 arch/arm/cpu/faraday/start.S
 create mode 100644 arch/arm/include/asm/arch-a369/clkdev.h
 create mode 100644 arch/arm/include/asm/arch-a369/hardware.h
 create mode 100644 arch/arm/include/asm/arch-a369/sysc.h
 create mode 100644 arch/arm/include/asm/arch-fvm/clkdev.h
 create mode 100644 arch/arm/include/asm/arch-fvm/hardware.h
 create mode 100644 arch/arm/include/asm/clkdev.h
 create mode 100644 board/faraday/a369evb/Makefile
 create mode 100644 board/faraday/a369evb/board.c
 create mode 100644 board/faraday/a369evb/lowlevel_init.S
 create mode 100644 board/faraday/fvm/Makefile
 create mode 100644 board/faraday/fvm/board.c
 create mode 100644 board/faraday/fvm/lowlevel_init.S
 create mode 100644 drivers/clk/Makefile
 create mode 100644 drivers/clk/clkdev.c
 create mode 100644 include/configs/a369.h
 create mode 100644 include/configs/faraday-common.h
 create mode 100644 include/configs/fvm.h
 create mode 100644 include/faraday/clkdev.h
 create mode 100644 include/faraday/ftpwmtmr010.h
 create mode 100644 include/faraday/ftsdc021.h
 create mode 100644 include/linux/clk.h
 create mode 100644 include/linux/clkdev.h

--
1.7.9.5



More information about the U-Boot mailing list