This set of patches adds support for Samsung S5PC210-based boards NURI and SMDKC210. Tested on Linux kernel v3.x series.
Usage: "-smp 2" option is obligatory for now. To test emulation models user can launch Linux kernel v3.x configured with exynos4_defconfig configuration. This will allow to boot kernel with initrd. To get support of framebuffer by kernel, enable Samsung S3C framebuffer driver in configuration file. Note: at current time mainline kernel does not support framebuffer properly and to get it worked kernel must be patched a little. This problem will be solved soon by Samsung kernel developers To get support of ethernet for smdkc210 board by kernel, enable SMSC LAN911x/LAN921x families embedded ethernet driver in configuration file. Note: NURI board does not emulate ethernet adapter since it is a mobile device. Examples: Boot smdkc210 with NFS root support. qemu-system-arm -kernel ./zImage -append "ip=dhcp root=/dev/nfs nfsroot=10.0.2.2:/srv/nfs/ rw " -M smdkc210 -smp 2 Boot smdkc210 with NFS root support and serial redirected to terminal qemu-system-arm -kernel ./zImage -append "console=ttySAC0,115200n8 ip=dhcp root=/dev/nfs nfsroot=10.0.2.2:/srv/nfs/ rw " -serial stdio -M smdkc210 -smp 2 Boot NURI with initrd root support and serial redirected to terminal qemu-system-arm -kernel ./zImage -append "console=ttySAC0,115200n8 root=/dev/ram rw " -serial stdio -M nuri -smp 2 -initrd ./rootfs.ext2 Changelog: v8->v9 - exynos4210.c: secondary cpu bootloader memory region allocation is removed (it resides in already allocated IROM), removed hack memory region for secondary CPU boot loader (PMU device added). added l2x0 cache controller - exynos4210_pmu.c: PMU registers modelling device added to emulation. It is needed since PMU contains INFORM5 register which is used to boot the secondary CPUs. - exynos4_boards.c: indentation fix - exynos4210_uart.c: indentation fix, BREAK event handling code added, fixed size of allocated registers region - exynos4210_gic.c: number of IRQs passed to gic_init() due to last mainline update. - lan9118.: added VMSTATE fields due to last mainline update. v7->v8 - exynos4_boards.c: lack of spaces fix - exynos4210_gic.c: lack of spaces fix - exynos4210_combiner.c: lack of spaces fix - exynos4210_uart.c: lack of spaces fix, indentation fix - exynos4210_mct.c: ULL suffix fix v6->v7 - exynos4210_pwm.c: added usage of "ptimer.h" - exynos4210_mct.c: added usage of "ptimer.h" v5->v6 - arm_boot.c, vexpress.c, realview.c: board should specify smp_bootreg_addr if its ncpu > 1 - patch order changed, "boot secondary CPU" is included in "exynos boards" patch. - exynos4210_mct.c: usage of UINTX_MAX, removed excessive property list, fixed indentation, fixed comments - exynos4210_pwm.c: spaces and brakcets in macros, removed excessive property list, fixed indentation, - exynos4210_combiner.c: removed excessive reset, fixed indentation, fixed comments - exynos4210_gic.c: fixed indentation, fixed syntax - exynos4210_uart.c: fixed indentation, fixed syntax - exynos4210.c: fixed comments - Makefile.target: removed "\" - hw/exynos4210_fimd.c: rebased against current master: all manipulation with physical pages are dropped and replaced with new memory API functions; added three new members to winow's state: MemoryRegionSection to describe section of system RAM containing current framebuffer, host pointer to framebuffer data and framebuffer length; mapping of framebuffer now performed only on framebuffer settings change instead on every display update; bytes swap in uint64 variable now performed with standard QEMU bswap64 function; blencon register type changed to uint32_t; fixed incorrect spelling of "palette" word; if ... else statements in exynos4210_fimd_read() and exynos4210_fimd_write() are replaced with switch() {} statement. v4->v5 - hw/exynos4210_gic.c: Use memory aliases for CPU interface and Distributer. Excessive RW functions are removed. - hw/exynos4210_pwm.c and hw/exynos4210_mct.c: Saving of timers added. - hw/exynos4210_uart.c: VMSTATE version_id fixed. v3->v4 - Split Exynos SOC and boards. - Temporary removed SD and CMU support to post later. - Lan9118 remarks took into account. - Secondary CPU bootloader remarks took into account. - PWM remarks took into account. - UART remarks took into account. v2->v3 - Reverted hw/arm_gic.c modification - Added IRQ Gate to Exynos4210 board. Evgeny Voevodin (6): ARM: exynos4210: IRQ subsystem support. ARM: Samsung exynos4210-based boards emulation ARM: exynos4210: PWM support. ARM: exynos4210: MCT support. hw/lan9118: Add basic 16-bit mode support. hw/exynos4210.c: Add LAN support for SMDKC210. Maksim Kozlov (2): ARM: exynos4210: UART support ARM: exynos4210: Added PMU register model. Mitsyanko Igor (1): Exynos4210: added display controller implementation Makefile.target | 3 + hw/exynos4210.c | 272 +++++++ hw/exynos4210.h | 131 ++++ hw/exynos4210_combiner.c | 472 ++++++++++++ hw/exynos4210_fimd.c | 1924 ++++++++++++++++++++++++++++++++++++++++++++++ hw/exynos4210_gic.c | 436 +++++++++++ hw/exynos4210_mct.c | 1479 +++++++++++++++++++++++++++++++++++ hw/exynos4210_pmu.c | 549 +++++++++++++ hw/exynos4210_pwm.c | 413 ++++++++++ hw/exynos4210_uart.c | 661 ++++++++++++++++ hw/exynos4_boards.c | 166 ++++ hw/lan9118.c | 122 +++- 12 files changed, 6623 insertions(+), 5 deletions(-) create mode 100644 hw/exynos4210.c create mode 100644 hw/exynos4210.h create mode 100644 hw/exynos4210_combiner.c create mode 100644 hw/exynos4210_fimd.c create mode 100644 hw/exynos4210_gic.c create mode 100644 hw/exynos4210_mct.c create mode 100644 hw/exynos4210_pmu.c create mode 100644 hw/exynos4210_pwm.c create mode 100644 hw/exynos4210_uart.c create mode 100644 hw/exynos4_boards.c -- 1.7.4.1