qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v5 00/24] Add Faraday A369 SoC platform support


From: Kuo-Jung Su
Subject: [Qemu-devel] [PATCH v5 00/24] Add Faraday A369 SoC platform support
Date: Wed, 27 Feb 2013 15:15:26 +0800

From: Kuo-Jung Su <address@hidden>

These patches introduce Faraday A369 SoC platform support.

Here are some public documents for your reference.

http://www.faraday-tech.com/html/documentation/index.html

The partial version of faraday cpu datasheet with only
the CP15 and MPU description are available at my Google Drive:

https://docs.google.com/folder/d/0BwfiewvSmUgAalh5TkxyZWtlWEE/edit?usp=sharing

The pre-built A369 images are also available at my Google Drive:

https://docs.google.com/folder/d/0BwfiewvSmUgAX2pTTmtUMGFCZW8/edit

Here is the image file list:

1. android-4.0.4/zImage: A369 linux-3.0.31
2. android-4.0.4/romfs-4.0.4.tar.bz2: android-4.0.4
3. nand.img.bz2: A369 nand flash image
4. rom.img.bz2: A369 embedded ROM image
5. u-boot: A369 u-boot-2012.10 ELF file
6. zImage: A369 linux-3.4.12 + initramfs
7. README

Changes for v3 -> v5:

   1. [cpu] Add the unapplied patches for faraday ARMv5TE cores.
   2. [nand] Add the unapplied patches for hw/nand.c.
   3. [audio] Add the unapplied patches for wm8731.
   4. [Global] Replace redundant statement in xxx_update_irq() with
            qemu_set_irq(s->irq, !!(xxxx));
   5. [Global] Introduce 'case xxx ... xxx' statement in switch { }
            to replace the 'if {} else {}' statement.
   6. [Global] Replace complex bitwise operation with functions defined in 
bitops.h
   7. [Global] Introduce array register caches (i.e. s->regs[]) implementation
            to fttsc010, ftrtc011, ftmac110, ftgmac100, ftddrii030
            faraday_a369_kpd and faraday_a369_soc.
   8. [Global] Add qemu_log_mask(LOG_GUEST_ERROR...) on undefined memory 
accesses.
   9. [Global] Add missing register access size constraint to
            faraday_a369_kpd, faraday_a369_soc, ftahbc020.c, ftddrii030.c,
            ftintc020.c, ftlcdc200.c, ftpwmtmr010.c, ftspi020.c, fttmr010.c
            and fttsc010.c.
  10. [Global] Add more register and bitmask descriptions to all the chips.
  11. [Global] Rename all the MemoryRegionOps variables to 'mmio_ops'
  12. [Global] Update all non-system header includes from '<>' into '""'
  13. [bitrev] Port bitrev.[ch] from linux kernel into QEMU.
  14. [ftapbbrg020] Replace 
cpu_physical_memory_read()/cpu_physical_memory_write()
            with dma_memory_read()/dma_memory_write()
  15. [ftdmac020] Replace cpu_physical_memory_read()/cpu_physical_memory_write()
            with dma_memory_read()/dma_memory_write()
  16. [ftgmac100/ftmac110] Replace 
cpu_physical_memory_read()/cpu_physical_memory_write()
            with dma_memory_read()/dma_memory_write()
  17. [ftgmac100/ftmac110] Add a 10ms timer for polling the owner bit of 
descriptors
              to call qemu_flush_queued_packets() when it's necessary.
  18. [ftgmac100/ftmac110] Replace hw_error() with 
qemu_log_mask(LOG_GUEST_ERROR, ) 
              for programmer errors.
  19. [ftgmac100/ftmac110] Update descriptor struct for big endian QEMU host 
support.
  20. [ftgmac100/ftmac110] Typo fix ('FTMAC_H' --> 'HW_ARM_FTMAC110_H') to the 
header files.
  21. [ftmac110] Update mdio phy response emulation from Marvell into Davicom 
PHY.
  22. [ftwdt010/fttsc010] Switch to a slower timer. (i.e. rt_clock)

  23. [faraday_a360] Removed. The ftmac110 and fttmr010 has been moved to 
              A369 as external AHB devices.  
  24. [faraday_a369] Add register caches for AHB/APB slave devices.
  25. [faraday_a369] Remember (arm_boot_info *) when launching in direct boot 
mode.
  26. [faraday_a369] Replace pointer to (mach *) with QOM APIs. (i.e. no more 
DEFINE_PROP_PTR())
  27. [faraday_a369] Add a error message for ROM mode when it failed to load 
image.
  28. [faraday_a369] Add the missing AHB remap process into direct boot mode.
  29. [faraday_a369] Bug fix to ROM and RAM memory overlap issue.
  30. [faraday_a369] Remove system reset order dependency from ftddrii030 and 
ftahbc020
  31. [faraday_a369] Separate the a369 platform implementation into 2 different 
parts:
              board=faraday_a369.c, and soc=faraday_a369_soc.c
  32. [faraday_a369] Copy all the un-used register values from read hardware 
into QEMU model.
  33. [ftssp010] Add address alignment checker.
  34. [ftssp010] Move the audio codec initialization code to faraday_a369.c.
  35. [ftspi020] Use a constant (CFG_NR_CSLINES) for the number of cs lines.
  36. [ftspi020] Replace 's->datacnt <= 0' with '!s->datacnt', because 
s->datacnt is unsigned.
  37. [ftspi020] Replace 's->datacnt' with 's->cmd[2]'
  38. [ftspi020] Remove redundant M25P80s command opcodes from the header file.
  39. [ftspi020] Replace 'g_new' with 'g_new0' for cs_lines allocation.
              This fix the bug which crash the QEMU when de-activating an 
unattached
              spi flash chip select. Thanks to Peter.

Changes for v3:
   
   1. [global] review all commit log make sure it correctly
               describe the QEMU model.
   2. [global] reformat the entire patch series to be compilable 
               on its own. Thanks to Andreas and Igor.
   3. [global] move all files from 'hw' into 'hw/arm', and 
               rename a36x.c to faraday_a36x.c
   4. [global] update lisence to GPLv2+
   5. [global] rename both struct and typedef names to CamelCase.
   6. [global] turn printfs into DPRINTF() which is controlled 
               by 'DEBUG_FARADAY'
   7. [global] remove disabled code.
   8. [global] add header files with descriptive defines to 
               ftintc020, ftrtc011, fttmr010 ... etc.
   9. [global] update all header file to have a 'HW_ARM_' prefix 
               to header guards.
  10. [faraday.h] add parameter names to ftmac110_init() and
                  ftgmac100_init()
  11. [a360/a369] remove printf("xxx %dMB ram.\n"...);
  12. [a360/a369] add 'arm926' as a fail-safe cpu model.
  13. [a360/a369] add DEFAULT_MACHINE_OPTIONS.
  14. [a360/a369] remove USB-EHCI support, it's now a standalone patch.
  15. [a360] replace ftlcdc200 init from sysbus_create_varargs() to
             sysbus_create_simple().
  16. [a360] make PMU a standalone file. (faraday_a360_pmu.c)
  17. [a369] make SCU a standalone file. (faraday_a369_pcu.c)
  18. [a369] make AHBC a standalone file. (ftahbc020.c)
  19. [a369] make DDRC a standalone file. (ftddrii030.c)
  20. [a369] rename ftkbc010 to faraday_a369_keypad.c
  21. [a369] replace ROM emulation with PFLASH.(rom.c is deleted)
  22. [ftsdc010] add sd_data_ready() to data R/W.
  23. [ftsdc010] check 'datacnt' at each read/write to make sure
             buffer would not overflow/underflow and also prevent
             'datacnt' from underflow by subtracted by a 4.
  24. [ftgmac100] add 802.1Q VLAN tag insertion/removal support.
  25. [ftgmac100] replace the dumb timer code with bottom half.
  26. [ftgmac100] rename the struct name of descriptors to CamelCase.
  27. [ftgmac100] replace 'void *' with 'Ftgmac100RXD *' and 
                  'Ftgmac100TXD *' for descriptor read/write.
  28. [ftgmac100] add buffer overflow check in ftgmac100_transmit()
  29. [ftgmac100] add buffer alignment check
  30. [ftmac110] replace the dumb timer code with bottom half.
  31. [ftmac110] rename the struct name of descriptors to CamelCase.
  32. [ftmac110] replace 'void *' with 'Ftmac110RXD *' and
                 'Ftmac110TXD *' for descriptor read/write.
  33. [ftmac110] add buffer overflow check in ftmac110_transmit()
  34. [ftmac110] add buffer alignment check
  35. [ftdmac020] replace the dumb timer code with bottom half.
  36. [ftdmac020] replace cpu_physical_memory_map() with 
                  cpu_physical_memory_read/write() for both simplicity
                  and security enhancement which caused by the un-checked
                  return mapped length from cpu_physical_memory_map().
  37. [ftapbbrg020] replace the dumb timer code with bottom half.
  38. [ftapbbrg020] replace cpu_physical_memory_map() with 
                  cpu_physical_memory_read/write() for both simplicity
                  and security enhancement which caused by the un-checked
                  return mapped length from cpu_physical_memory_map().
  39. [ftrtc011] switch to a slower timer with msec resolution. (i.e. rt_clock)
  40. [ftrtc011] re-calculate RTC counters from host timestamp upon register 
                 read/write and also vm save/restore.

Changes for v2:

   1. coding style fixes (verified with checkpatch.pl)
   2. add Faraday A360 support
   3. add Faraday USB 2.0 EHCI support
   4. merge a369_scu.c into a369.c
   5. introduce QOM coding style
   6. remove lowercase Macros: min(), max()
   7. name all struct as CamelCase style
   8. move function prototypes from .c to faraday.h
   9. use switch instead of if statement in a369_ahbc_write
  10. remove debug prints
  11. update all uarts in A36x to DEVICE_LITTLE_ENDIAN.
  12. move the variable definitions to the start of the function,
      instead of inside a do { } while(0)
  13. remove disabled and commented out code.
  14. use hw_error() and exit() upon pflash register failed.
  15. add const prior to TypeInfo (i.e. static *const*
      TypeInfo ftrtc011_info)
  16. add le32_to_cpu/cpu_to_le32 to the descriptor processing in
      FTGMAC100/FTMAC110.
  17. update the GPL license to GPL v2 (except for FTLCDC200,
      it's based on pl110.c which is LGPL.)
  18. add const to src_* in the DMA controllers (FTAPBBRG020/FTDMAC020)

Kuo-Jung Su (24):
  target-arm: add Faraday ARMv5TE processors support
  hw/arm: add Faraday a369 SoC platform support
  hw/arm: add Faraday FTINTC020 interrupt controller support
  hw/arm: add Faraday FTAHBC020 support
  hw/arm: add Faraday FTDDRII030 support
  hw/arm: add Faraday FTPWMTMR010 timer support
  hw/arm: add Faraday FTWDT010 watchdog timer support
  hw/arm: add Faraday FTRTC011 RTC timer support
  hw/arm: add Faraday FTDMAC020 AHB DMA support
  hw/arm: add Faraday FTAPBBRG020 APB DMA support
  hw/nand.c: bug fix to BUSY/READY status bit
  hw/nand.c: bug fix to erase operation
  hw/arm: add Faraday FTNANDC021 nand flash controller support
  hw/arm: add Faraday FTI2C010 I2C controller support
  hw: add WM8731 codec support
  hw/arm: add Faraday FTSSP010 multi-function controller support
  util: add linux bit ordering reversal functions
  hw/arm: add Faraday FTGMAC100 1Gbps ethernet support
  hw/arm: add Faraday FTLCDC200 LCD controller support
  hw/arm: add Faraday FTTSC010 touchscreen controller support
  hw/arm: add Faraday FTSDC010 MMC/SD controller support
  hw/arm: add Faraday FTMAC110 10/100Mbps ethernet support
  hw/arm: add Faraday FTTMR010 timer support
  hw/arm: add Faraday FTSPI020 SPI flash controller support

 default-configs/arm-softmmu.mak |    1 +
 hw/Makefile.objs                |    1 +
 hw/arm/Makefile.objs            |   22 ++
 hw/arm/faraday.h                |   77 +++++
 hw/arm/faraday_a369.c           |  130 ++++++++
 hw/arm/faraday_a369_kpd.c       |  237 +++++++++++++
 hw/arm/faraday_a369_scu.c       |  187 +++++++++++
 hw/arm/faraday_a369_soc.c       |  344 +++++++++++++++++++
 hw/arm/ftahbc020.c              |  189 +++++++++++
 hw/arm/ftapbbrg020.c            |  456 +++++++++++++++++++++++++
 hw/arm/ftapbbrg020.h            |   42 +++
 hw/arm/ftddrii030.c             |  171 ++++++++++
 hw/arm/ftdmac020.c              |  596 +++++++++++++++++++++++++++++++++
 hw/arm/ftdmac020.h              |  105 ++++++
 hw/arm/ftgmac100.c              |  698 +++++++++++++++++++++++++++++++++++++++
 hw/arm/ftgmac100.h              |  237 +++++++++++++
 hw/arm/fti2c010.c               |  217 ++++++++++++
 hw/arm/fti2c010.h               |   69 ++++
 hw/arm/ftintc020.c              |  366 ++++++++++++++++++++
 hw/arm/ftintc020.h              |   48 +++
 hw/arm/ftkbc010.h               |   42 +++
 hw/arm/ftlcdc200.c              |  513 ++++++++++++++++++++++++++++
 hw/arm/ftlcdc200.h              |  110 ++++++
 hw/arm/ftlcdc200_template.h     |  439 ++++++++++++++++++++++++
 hw/arm/ftmac110.c               |  651 ++++++++++++++++++++++++++++++++++++
 hw/arm/ftmac110.h               |  166 ++++++++++
 hw/arm/ftnandc021.c             |  513 ++++++++++++++++++++++++++++
 hw/arm/ftnandc021.h             |   82 +++++
 hw/arm/ftpwmtmr010.c            |  265 +++++++++++++++
 hw/arm/ftpwmtmr010.h            |   29 ++
 hw/arm/ftrtc011.c               |  347 +++++++++++++++++++
 hw/arm/ftrtc011.h               |   47 +++
 hw/arm/ftsdc010.c               |  359 ++++++++++++++++++++
 hw/arm/ftsdc010.h               |   88 +++++
 hw/arm/ftspi020.c               |  341 +++++++++++++++++++
 hw/arm/ftspi020.h               |   81 +++++
 hw/arm/ftssp010.c               |  493 +++++++++++++++++++++++++++
 hw/arm/ftssp010.h               |   96 ++++++
 hw/arm/fttmr010.c               |  452 +++++++++++++++++++++++++
 hw/arm/fttmr010.h               |   39 +++
 hw/arm/fttsc010.c               |  265 +++++++++++++++
 hw/arm/fttsc010.h               |   37 +++
 hw/arm/ftwdt010.c               |  213 ++++++++++++
 hw/arm/ftwdt010.h               |   33 ++
 hw/i2c.h                        |    6 +
 hw/nand.c                       |   21 +-
 hw/wm8731.c                     |  499 ++++++++++++++++++++++++++++
 include/qemu/bitrev.h           |   25 ++
 target-arm/cpu.c                |   52 +++
 target-arm/cpu.h                |    6 +-
 target-arm/helper.c             |   84 +++++
 target-arm/machine.c            |    4 +
 util/Makefile.objs              |    2 +-
 util/bitrev.c                   |   59 ++++
 54 files changed, 10647 insertions(+), 5 deletions(-)
 create mode 100644 hw/arm/faraday.h
 create mode 100644 hw/arm/faraday_a369.c
 create mode 100644 hw/arm/faraday_a369_kpd.c
 create mode 100644 hw/arm/faraday_a369_scu.c
 create mode 100644 hw/arm/faraday_a369_soc.c
 create mode 100644 hw/arm/ftahbc020.c
 create mode 100644 hw/arm/ftapbbrg020.c
 create mode 100644 hw/arm/ftapbbrg020.h
 create mode 100644 hw/arm/ftddrii030.c
 create mode 100644 hw/arm/ftdmac020.c
 create mode 100644 hw/arm/ftdmac020.h
 create mode 100644 hw/arm/ftgmac100.c
 create mode 100644 hw/arm/ftgmac100.h
 create mode 100644 hw/arm/fti2c010.c
 create mode 100644 hw/arm/fti2c010.h
 create mode 100644 hw/arm/ftintc020.c
 create mode 100644 hw/arm/ftintc020.h
 create mode 100644 hw/arm/ftkbc010.h
 create mode 100644 hw/arm/ftlcdc200.c
 create mode 100644 hw/arm/ftlcdc200.h
 create mode 100644 hw/arm/ftlcdc200_template.h
 create mode 100644 hw/arm/ftmac110.c
 create mode 100644 hw/arm/ftmac110.h
 create mode 100644 hw/arm/ftnandc021.c
 create mode 100644 hw/arm/ftnandc021.h
 create mode 100644 hw/arm/ftpwmtmr010.c
 create mode 100644 hw/arm/ftpwmtmr010.h
 create mode 100644 hw/arm/ftrtc011.c
 create mode 100644 hw/arm/ftrtc011.h
 create mode 100644 hw/arm/ftsdc010.c
 create mode 100644 hw/arm/ftsdc010.h
 create mode 100644 hw/arm/ftspi020.c
 create mode 100644 hw/arm/ftspi020.h
 create mode 100644 hw/arm/ftssp010.c
 create mode 100644 hw/arm/ftssp010.h
 create mode 100644 hw/arm/fttmr010.c
 create mode 100644 hw/arm/fttmr010.h
 create mode 100644 hw/arm/fttsc010.c
 create mode 100644 hw/arm/fttsc010.h
 create mode 100644 hw/arm/ftwdt010.c
 create mode 100644 hw/arm/ftwdt010.h
 create mode 100644 hw/wm8731.c
 create mode 100644 include/qemu/bitrev.h
 create mode 100644 util/bitrev.c

-- 
1.7.9.5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]