From: Kuo-Jung Su <dant...@faraday-tech.com> These patches introduce Faraday A36x SoC platform support.
Faraday provides ARMv4/ARMv5TE compatible solutions, and focus on ASIC design service. Here are some public documents for your reference. http://www.faraday-tech.com/html/documentation/index.html The pre-built 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: 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 (20): arm: add Faraday a360 SoC platform support arm: add Faraday a369 SoC platform support arm: add Faraday FTAHBC020 support arm: add Faraday FTDDRII030 support arm: add Faraday FTINTC020 interrupt controller support arm: add Faraday FTWDT010 watchdog timer support arm: add Faraday FTTMR010 timer support arm: add Faraday FTPWMTMR010 timer support arm: add Faraday FTRTC011 RTC timer support arm: add Faraday FTDMAC020 AHB DMA support arm: add Faraday FTAPBBRG020 APB DMA support arm: add Faraday FTI2C010 I2C controller support arm: add Faraday FTNANDC021 nand flash controller support arm: add Faraday FTSSP010 multi-function controller support arm: add Faraday FTMAC110 10/100Mbps ethernet support arm: add Faraday FTGMAC100 1Gbps ethernet support arm: add Faraday FTLCDC200 LCD controller support arm: add Faraday FTTSC010 touchscreen controller support arm: add Faraday FTSDC010 MMC/SD controller support arm: add Faraday FTSPI020 SPI flash controller support hw/arm/Makefile.objs | 20 ++ hw/arm/faraday.h | 52 +++ hw/arm/faraday_a360.c | 210 ++++++++++++ hw/arm/faraday_a360_pmu.c | 102 ++++++ hw/arm/faraday_a369.c | 322 ++++++++++++++++++ hw/arm/faraday_a369_keypad.c | 234 +++++++++++++ hw/arm/faraday_a369_scu.c | 188 +++++++++++ hw/arm/ftahbc020.c | 185 +++++++++++ hw/arm/ftapbbrg020.c | 437 ++++++++++++++++++++++++ hw/arm/ftapbbrg020.h | 41 +++ hw/arm/ftddrii030.c | 174 ++++++++++ hw/arm/ftdmac020.c | 581 ++++++++++++++++++++++++++++++++ hw/arm/ftdmac020.h | 105 ++++++ hw/arm/ftgmac100.c | 757 ++++++++++++++++++++++++++++++++++++++++++ hw/arm/ftgmac100.h | 177 ++++++++++ hw/arm/fti2c010.c | 206 ++++++++++++ hw/arm/fti2c010.h | 62 ++++ hw/arm/ftintc020.c | 356 ++++++++++++++++++++ hw/arm/ftintc020.h | 48 +++ hw/arm/ftkbc010.h | 26 ++ hw/arm/ftlcdc200.c | 505 ++++++++++++++++++++++++++++ hw/arm/ftlcdc200.h | 110 ++++++ hw/arm/ftlcdc200_template.h | 439 ++++++++++++++++++++++++ hw/arm/ftmac110.c | 681 +++++++++++++++++++++++++++++++++++++ hw/arm/ftmac110.h | 131 ++++++++ hw/arm/ftnandc021.c | 515 ++++++++++++++++++++++++++++ hw/arm/ftnandc021.h | 55 +++ hw/arm/ftpwmtmr010.c | 246 ++++++++++++++ hw/arm/ftpwmtmr010.h | 25 ++ hw/arm/ftrtc011.c | 406 ++++++++++++++++++++++ hw/arm/ftrtc011.h | 32 ++ hw/arm/ftsdc010.c | 385 +++++++++++++++++++++ hw/arm/ftsdc010.h | 88 +++++ hw/arm/ftspi020.c | 345 +++++++++++++++++++ hw/arm/ftspi020.h | 50 +++ hw/arm/ftssp010.c | 554 +++++++++++++++++++++++++++++++ hw/arm/ftssp010.h | 91 +++++ hw/arm/fttmr010.c | 446 +++++++++++++++++++++++++ hw/arm/fttmr010.h | 38 +++ hw/arm/fttsc010.c | 260 +++++++++++++++ hw/arm/fttsc010.h | 23 ++ hw/arm/ftwdt010.c | 205 ++++++++++++ hw/arm/ftwdt010.h | 23 ++ 43 files changed, 9936 insertions(+) create mode 100644 hw/arm/faraday.h create mode 100644 hw/arm/faraday_a360.c create mode 100644 hw/arm/faraday_a360_pmu.c create mode 100644 hw/arm/faraday_a369.c create mode 100644 hw/arm/faraday_a369_keypad.c create mode 100644 hw/arm/faraday_a369_scu.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 -- 1.7.9.5