From: Kuo-Jung Su <dant...@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 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 v4: 1. target-arm: Add the unapplied patch for faraday ARMv5TE cores. 2. hw: Add the unapplied patch for wm8731. 3. hw/nand: Add the unapplied patches. 4. hw/arm: Fix the issues addressed by Peter. 5. hw/arm/faraday_a369: Replace pointer to (mach *) with QOM APIs. 6. hw/arm/faraday_a369: Add a error message for ROM mode when it failed to load image. 7. hw/arm/faraday_a369: Update AHB remap routine to avoid address overlap. 8. hw/arm/faraday_a360: Removed. The ftmac110 and fttmr010 has been added to A369 as external AHB devices. 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 (23): 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 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 FTSPI020 SPI flash controller support hw/arm: add Faraday FTMAC110 10/100Mbps ethernet support hw/arm: add Faraday FTTMR010 timer 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 | 229 +++++++++++++ hw/arm/faraday_a369_scu.c | 179 ++++++++++ hw/arm/faraday_a369_soc.c | 344 +++++++++++++++++++ hw/arm/ftahbc020.c | 181 ++++++++++ hw/arm/ftapbbrg020.c | 451 +++++++++++++++++++++++++ hw/arm/ftapbbrg020.h | 42 +++ hw/arm/ftddrii030.c | 163 +++++++++ hw/arm/ftdmac020.c | 588 +++++++++++++++++++++++++++++++++ hw/arm/ftdmac020.h | 105 ++++++ hw/arm/ftgmac100.c | 694 +++++++++++++++++++++++++++++++++++++++ hw/arm/ftgmac100.h | 237 +++++++++++++ hw/arm/fti2c010.c | 213 ++++++++++++ hw/arm/fti2c010.h | 69 ++++ hw/arm/ftintc020.c | 358 ++++++++++++++++++++ hw/arm/ftintc020.h | 48 +++ hw/arm/ftkbc010.h | 42 +++ hw/arm/ftlcdc200.c | 503 ++++++++++++++++++++++++++++ hw/arm/ftlcdc200.h | 110 +++++++ hw/arm/ftlcdc200_template.h | 439 +++++++++++++++++++++++++ hw/arm/ftmac110.c | 647 ++++++++++++++++++++++++++++++++++++ hw/arm/ftmac110.h | 166 ++++++++++ hw/arm/ftnandc021.c | 509 ++++++++++++++++++++++++++++ hw/arm/ftnandc021.h | 82 +++++ hw/arm/ftpwmtmr010.c | 257 +++++++++++++++ hw/arm/ftpwmtmr010.h | 29 ++ hw/arm/ftrtc011.c | 343 +++++++++++++++++++ hw/arm/ftrtc011.h | 47 +++ hw/arm/ftsdc010.c | 355 ++++++++++++++++++++ hw/arm/ftsdc010.h | 88 +++++ hw/arm/ftspi020.c | 333 +++++++++++++++++++ hw/arm/ftspi020.h | 81 +++++ hw/arm/ftssp010.c | 475 +++++++++++++++++++++++++++ hw/arm/ftssp010.h | 96 ++++++ hw/arm/fttmr010.c | 444 +++++++++++++++++++++++++ hw/arm/fttmr010.h | 39 +++ hw/arm/fttsc010.c | 257 +++++++++++++++ hw/arm/fttsc010.h | 37 +++ hw/arm/ftwdt010.c | 209 ++++++++++++ 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, 10506 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