[U-Boot] [PATCH v6 00/12] arm: add Faraday A36x SoC platform support

Kuo-Jung Su dantesu at gmail.com
Thu Jul 4 05:40:32 CEST 2013


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

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



More information about the U-Boot mailing list