summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2018-01-13 21:07:10 +0100
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2018-02-03 16:27:56 +0000
commit1f032e95500d0e2ec60381e4ed3a5fde698427c7 (patch)
treefc9c22aaf2036a787f147da40d9bc74e23756f7c
parentdaed5353981450089919ebf451e15d7726519644 (diff)
csky: add better qemu support
-rw-r--r--package/uclibc-ng/Makefile4
-rw-r--r--target/config/Config.in.cpu14
-rw-r--r--target/config/Config.in.qemuopts9
-rw-r--r--target/csky/Makefile12
-rw-r--r--target/csky/ck610.dtbbin0 -> 1727 bytes
-rw-r--r--target/csky/ck610.dts98
-rw-r--r--target/csky/ck810.dtbbin0 -> 1759 bytes
-rw-r--r--target/csky/ck810.dts98
-rw-r--r--target/csky/kernel/qemu-csky-ck6108
-rw-r--r--target/csky/kernel/qemu-csky-ck807 (renamed from target/csky/kernel/qemu-csky-ck807f)0
-rw-r--r--target/csky/kernel/qemu-csky-ck81011
-rw-r--r--target/csky/kernel/qemu-csky-ck810f4
-rw-r--r--target/csky/qemu.dtbbin0 -> 1638 bytes
-rw-r--r--target/csky/qemu.dts87
-rw-r--r--target/csky/systems/qemu-csky-ck8077
-rw-r--r--target/csky/systems/qemu-csky-ck807f7
-rw-r--r--target/csky/systems/qemu-csky-ck8107
-rw-r--r--target/csky/systems/qemu-csky-ck810f7
-rw-r--r--target/linux/config/Config.in.ethernet17
-rw-r--r--target/linux/config/Config.in.serial9
-rw-r--r--target/linux/patches/6064a9bdf48cefbccc4f6472dd04251f0dec1931/startup.patch34
21 files changed, 399 insertions, 34 deletions
diff --git a/package/uclibc-ng/Makefile b/package/uclibc-ng/Makefile
index a48ddc704..6f00286ce 100644
--- a/package/uclibc-ng/Makefile
+++ b/package/uclibc-ng/Makefile
@@ -31,6 +31,10 @@ uclibc-ng-install:
-$(CP) $(STAGING_TARGET_DIR)/lib/ld*-uClibc*.so* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-$(CP) $(STAGING_TARGET_DIR)/lib/libc.so.* $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
-$(CP) $(STAGING_TARGET_DIR)/lib/libuClibc-*.so $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH)
+ifeq ($(ADK_TARGET_ARCH_CSKY),y)
+ cd $(IDIR_UCLIBC_NG)/$(ADK_TARGET_LIBC_PATH) && \
+ ln -sf ld-uClibc.so.0 ld.so.1
+endif
test -z $(ADK_RUNTIME_TIMEZONE) || \
grep $(ADK_RUNTIME_TIMEZONE) ./files/tz.lst | \
cut -f 2 > $(IDIR_UCLIBC_NG)/etc/TZ
diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu
index a251a84a2..f60e22b8b 100644
--- a/target/config/Config.in.cpu
+++ b/target/config/Config.in.cpu
@@ -498,23 +498,21 @@ config ADK_TARGET_CPU_CSKY_CK610
depends on ADK_TARGET_ARCH_CSKY
depends on ADK_TARGET_LITTLE_ENDIAN
-config ADK_TARGET_CPU_CSKY_CK807F
- bool "ck807f"
+config ADK_TARGET_CPU_CSKY_CK807
+ bool "ck807"
select ADK_TARGET_SUPPORTS_THREADS
select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_WITH_MMU
- select ADK_TARGET_CPU_WITH_FPU
depends on ADK_TARGET_ARCH_CSKY
depends on ADK_TARGET_LITTLE_ENDIAN
-config ADK_TARGET_CPU_CSKY_CK810F
- bool "ck810f"
+config ADK_TARGET_CPU_CSKY_CK810
+ bool "ck810"
select ADK_TARGET_SUPPORTS_THREADS
select ADK_TARGET_SUPPORTS_LT
select ADK_TARGET_SUPPORTS_NPTL
select ADK_TARGET_WITH_MMU
- select ADK_TARGET_CPU_WITH_FPU
depends on ADK_TARGET_ARCH_CSKY
depends on ADK_TARGET_LITTLE_ENDIAN
@@ -2098,8 +2096,8 @@ config ADK_TARGET_CPU_FLAGS
default "-mcpu=bf561" if ADK_TARGET_CPU_BFIN_BF561
default "-mcpu=bf592" if ADK_TARGET_CPU_BFIN_BF592
default "-mcpu=ck610" if ADK_TARGET_CPU_CSKY_CK610
- default "-mcpu=ck810f" if ADK_TARGET_CPU_CSKY_CK810F
- default "-mcpu=ck807f" if ADK_TARGET_CPU_CSKY_CK807F
+ default "-mcpu=ck807" if ADK_TARGET_CPU_CSKY_CK807
+ default "-mcpu=ck810" if ADK_TARGET_CPU_CSKY_CK810
default "-mcpu=v10" if ADK_TARGET_CPU_CRIS_CRISV10
default "-mcpu=v32" if ADK_TARGET_CPU_CRIS_CRISV32
default "-mh" if ADK_TARGET_CPU_H8300H
diff --git a/target/config/Config.in.qemuopts b/target/config/Config.in.qemuopts
index 4b8216beb..61fc8ff0c 100644
--- a/target/config/Config.in.qemuopts
+++ b/target/config/Config.in.qemuopts
@@ -38,6 +38,9 @@ menu "Qemu system configuration"
depends on ADK_TARGET_QEMU && (ADK_TARGET_SYSTEM_QEMU_X86_64 \
|| ADK_TARGET_SYSTEM_QEMU_RISCV32 \
|| ADK_TARGET_SYSTEM_QEMU_RISCV64 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK610 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK807 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK810 \
|| ADK_TARGET_SYSTEM_QEMU_X86 \
|| ADK_TARGET_SYSTEM_QEMU_AARCH64 \
|| ADK_TARGET_SYSTEM_QEMU_SPARC64)
@@ -95,9 +98,15 @@ depends on ADK_TARGET_SYSTEM_QEMU_SPARC64 || \
ADK_TARGET_SYSTEM_QEMU_AARCH64 || \
ADK_TARGET_SYSTEM_QEMU_RISCV32 || \
ADK_TARGET_SYSTEM_QEMU_RISCV64 || \
+ ADK_TARGET_SYSTEM_QEMU_CSKY_CK610 || \
+ ADK_TARGET_SYSTEM_QEMU_CSKY_CK807 || \
+ ADK_TARGET_SYSTEM_QEMU_CSKY_CK810 || \
ADK_TARGET_SYSTEM_QEMU_X86 || \
ADK_TARGET_SYSTEM_QEMU_X86_64
default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_AARCH64
+default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_CSKY_CK610
+default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_CSKY_CK807
+default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_CSKY_CK810
default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV32
default ADK_TARGET_QEMU_WITH_VIRTIO if ADK_TARGET_SYSTEM_QEMU_RISCV64
diff --git a/target/csky/Makefile b/target/csky/Makefile
index 4765ed007..c60d44536 100644
--- a/target/csky/Makefile
+++ b/target/csky/Makefile
@@ -7,15 +7,15 @@ include $(ADK_TOPDIR)/mk/image.mk
KERNEL:=$(LINUX_DIR)/$(ADK_TARGET_KERNEL)
-QEMU_ARGS:=${ADK_QEMU_ARGS}
+QEMU_ARGS:=${ADK_QEMU_ARGS} -M virt
ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK610),y)
-QEMU:=qemu-system-cskyv1
+QEMU:=qemu-system-cskyv1 -dtb target/csky/ck610.dtb
endif
-ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK807F),y)
-QEMU:=qemu-system-cskyv2
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK807),y)
+QEMU:=qemu-system-cskyv2 -dtb target/csky/qemu.dtb
endif
-ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK810F),y)
-QEMU:=qemu-system-cskyv2
+ifeq ($(ADK_TARGET_SYSTEM_QEMU_CSKY_CK810),y)
+QEMU:=qemu-system-cskyv2 -dtb target/csky/ck810.dtb
endif
# target helper text
diff --git a/target/csky/ck610.dtb b/target/csky/ck610.dtb
new file mode 100644
index 000000000..a228fc6b7
--- /dev/null
+++ b/target/csky/ck610.dtb
Binary files differ
diff --git a/target/csky/ck610.dts b/target/csky/ck610.dts
new file mode 100644
index 000000000..b29a3cdf1
--- /dev/null
+++ b/target/csky/ck610.dts
@@ -0,0 +1,98 @@
+/dts-v1/;
+
+/ {
+ model = "qemu.csky.ck610";
+ compatible = "csky";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x1f400000>;
+ };
+
+ cpus {
+ #address-cells = <0>;
+ #size-cells = <0>;
+
+ cpu {
+ device_type = "cpu";
+ ccr = <0x7d>;
+ hint = <0x1c>;
+ };
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ ranges;
+
+ dummy_apb: apb-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <40000000>;
+ clock-output-names = "dummy_apb";
+ #clock-cells = <0>;
+ };
+
+ intc: interrupt-controller {
+ compatible = "csky,intc-v1";
+ reg = <0x1ffff000 0x1000>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ /* clockevent */
+ timer0 {
+ compatible = "snps,dw-apb-timer";
+ reg = <0x1fffd000 0x1000>;
+ clocks = <&dummy_apb>;
+ clock-names = "timer";
+ interrupts = <1>;
+ interrupt-parent = <&intc>;
+ };
+
+ /* clocksource */
+ timer1 {
+ compatible = "snps,dw-apb-timer";
+ reg = <0x1fffd014 0x800>;
+ clocks = <&dummy_apb>;
+ clock-names = "timer";
+ interrupts = <2>;
+ interrupt-parent = <&intc>;
+ };
+
+ serial0 {
+ compatible = "ns16550a";
+ reg = <0x1fffe000 0x1000>;
+ interrupt-parent = <&intc>;
+ interrupts = <3>;
+ clocks = <&dummy_apb>;
+ baud = <115200>;
+ reg-shift = <2>;
+ reg-io-width = <1>;
+ };
+
+ gmac: ethernet {
+ compatible = "snps,dwmac";
+ reg = <0x1fffa000 0x2000>;
+ interrupt-parent = <&intc>;
+ interrupts = <4>;
+ interrupt-names = "macirq";
+ clocks = <&dummy_apb>;
+ clock-names = "stmmaceth";
+ phy-mode = "mii";
+ snps,pbl = <32>;
+ snps,fixed-burst;
+ };
+
+ qemu-exit {
+ compatible = "csky,qemu-exit";
+ reg = <0x1fffc000 0x1000>;
+ };
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200";
+ };
+};
diff --git a/target/csky/ck810.dtb b/target/csky/ck810.dtb
new file mode 100644
index 000000000..9248925d6
--- /dev/null
+++ b/target/csky/ck810.dtb
Binary files differ
diff --git a/target/csky/ck810.dts b/target/csky/ck810.dts
new file mode 100644
index 000000000..de5ad3d0a
--- /dev/null
+++ b/target/csky/ck810.dts
@@ -0,0 +1,98 @@
+/dts-v1/;
+
+/ {
+ model = "qemu.csky.ck810";
+ compatible = "csky";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x1f400000>;
+ };
+
+ cpus {
+ #address-cells = <0>;
+ #size-cells = <0>;
+
+ cpu {
+ device_type = "cpu";
+ ccr = <0x417d>;
+ hint = <0xe>;
+ };
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ ranges;
+
+ intc: interrupt-controller {
+ compatible = "csky,intc-v1";
+ reg = <0x1ffff000 0x1000>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ /* clockevent */
+ timer0 {
+ compatible = "snps,dw-apb-timer";
+ reg = <0x1fffd000 0x1000>;
+ clocks = <&dummy_apb>;
+ clock-names = "timer";
+ interrupts = <1>;
+ interrupt-parent = <&intc>;
+ };
+
+ /* clocksource */
+ timer1 {
+ compatible = "snps,dw-apb-timer";
+ reg = <0x1fffd014 0x800>;
+ clocks = <&dummy_apb>;
+ clock-names = "timer";
+ interrupts = <2>;
+ interrupt-parent = <&intc>;
+ };
+
+ serial0 {
+ compatible = "ns16550a";
+ reg = <0x1fffe000 0x1000>;
+ interrupt-parent = <&intc>;
+ interrupts = <3>;
+ clocks = <&dummy_apb>;
+ baud = <115200>;
+ reg-shift = <2>;
+ reg-io-width = <1>;
+ };
+
+ dummy_apb: apb-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <40000000>;
+ clock-output-names = "dummy_apb";
+ #clock-cells = <0>;
+ };
+
+ gmac: ethernet {
+ compatible = "snps,dwmac";
+ reg = <0x1fffa000 0x2000>;
+ interrupt-parent = <&intc>;
+ interrupts = <4>;
+ interrupt-names = "macirq";
+ clocks = <&dummy_apb>;
+ clock-names = "stmmaceth";
+ phy-mode = "mii";
+ snps,pbl = <32>;
+ snps,fixed-burst;
+ };
+
+ qemu-exit {
+ compatible = "csky,qemu-exit";
+ reg = <0x1fffc000 0x1000>;
+ };
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200 rdinit=/sbin/init root=/dev/ram0";
+ };
+};
diff --git a/target/csky/kernel/qemu-csky-ck610 b/target/csky/kernel/qemu-csky-ck610
index 3725f01d2..341d9059d 100644
--- a/target/csky/kernel/qemu-csky-ck610
+++ b/target/csky/kernel/qemu-csky-ck610
@@ -1,3 +1,11 @@
CONFIG_CSKY=y
CONFIG_CPU_CK610=y
+CONFIG_CSKY_IRQ=y
+CONFIG_RAM_BASE=0x0
+CONFIG_NATIONALCHIP_IRQ=y
+CONFIG_NATIONALCHIP_TIMER=y
+CONFIG_CSKYMAC=y
+CONFIG_CSKY_ADDONS=y
+CONFIG_MMU_HARD_REFILL=y
+CONFIG_SOFT_HANDMISSALIGN=y
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
diff --git a/target/csky/kernel/qemu-csky-ck807f b/target/csky/kernel/qemu-csky-ck807
index 1dc23212a..1dc23212a 100644
--- a/target/csky/kernel/qemu-csky-ck807f
+++ b/target/csky/kernel/qemu-csky-ck807
diff --git a/target/csky/kernel/qemu-csky-ck810 b/target/csky/kernel/qemu-csky-ck810
new file mode 100644
index 000000000..d87522604
--- /dev/null
+++ b/target/csky/kernel/qemu-csky-ck810
@@ -0,0 +1,11 @@
+CONFIG_CSKY=y
+CONFIG_CPU_CK810=y
+CONFIG_CSKY_IRQ=y
+CONFIG_RAM_BASE=0x0
+CONFIG_NATIONALCHIP_IRQ=y
+CONFIG_NATIONALCHIP_TIMER=y
+CONFIG_CSKYMAC=y
+CONFIG_CSKY_ADDONS=y
+CONFIG_MMU_HARD_REFILL=y
+CONFIG_SOFT_HANDMISSALIGN=y
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
diff --git a/target/csky/kernel/qemu-csky-ck810f b/target/csky/kernel/qemu-csky-ck810f
deleted file mode 100644
index 58a17168d..000000000
--- a/target/csky/kernel/qemu-csky-ck810f
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_CSKY=y
-CONFIG_CPU_CK810=y
-CSKY_BUILTIN_DTB=y
-CONFIG_SECTION_MISMATCH_WARN_ONLY=y
diff --git a/target/csky/qemu.dtb b/target/csky/qemu.dtb
new file mode 100644
index 000000000..5cc22b091
--- /dev/null
+++ b/target/csky/qemu.dtb
Binary files differ
diff --git a/target/csky/qemu.dts b/target/csky/qemu.dts
new file mode 100644
index 000000000..59e1c8390
--- /dev/null
+++ b/target/csky/qemu.dts
@@ -0,0 +1,87 @@
+/dts-v1/;
+
+/ {
+ model = "qemu.csky";
+ compatible = "csky";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ memory {
+ device_type = "memory";
+ reg = <0x0 0x40000000>;
+ };
+
+ soc {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ ranges;
+
+ intc: interrupt-controller {
+ compatible = "csky,intc-v1";
+ reg = <0xfffff000 0x1000>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+ };
+
+ /* clockevent */
+ timer0 {
+ compatible = "snps,dw-apb-timer";
+ reg = <0xffffd000 0x1000>;
+ clocks = <&dummy_apb>;
+ clock-names = "timer";
+ interrupts = <1>;
+ interrupt-parent = <&intc>;
+ };
+
+ /* clocksource */
+ timer1 {
+ compatible = "snps,dw-apb-timer";
+ reg = <0xffffd014 0x800>;
+ clocks = <&dummy_apb>;
+ clock-names = "timer";
+ interrupts = <2>;
+ interrupt-parent = <&intc>;
+ };
+
+ serial0 {
+ compatible = "ns16550a";
+ reg = <0xffffe000 0x1000>;
+ interrupt-parent = <&intc>;
+ interrupts = <3>;
+ clocks = <&dummy_apb>;
+ baud = <115200>;
+ reg-shift = <2>;
+ reg-io-width = <1>;
+ };
+
+ dummy_apb: apb-clock {
+ compatible = "fixed-clock";
+ clock-frequency = <40000000>;
+ clock-output-names = "dummy_apb";
+ #clock-cells = <0>;
+ };
+
+ gmac: ethernet {
+ compatible = "snps,dwmac";
+ reg = <0xffffa000 0x2000>;
+ interrupt-parent = <&intc>;
+ interrupts = <4>;
+ interrupt-names = "macirq";
+ clocks = <&dummy_apb>;
+ clock-names = "stmmaceth";
+ phy-mode = "mii";
+ snps,pbl = <32>;
+ snps,fixed-burst;
+ };
+
+ qemu-exit {
+ compatible = "csky,qemu-exit";
+ reg = <0xffffc000 0x1000>;
+ };
+ };
+
+ chosen {
+ bootargs = "console=ttyS0,115200 rdinit=/sbin/init root=/dev/ram0";
+ };
+};
diff --git a/target/csky/systems/qemu-csky-ck807 b/target/csky/systems/qemu-csky-ck807
new file mode 100644
index 000000000..4b964dc1b
--- /dev/null
+++ b/target/csky/systems/qemu-csky-ck807
@@ -0,0 +1,7 @@
+config ADK_TARGET_SYSTEM_QEMU_CSKY_CK807
+ bool "Qemu Emulator (ck807)"
+ select ADK_TARGET_QEMU
+ select ADK_TARGET_CPU_CSKY_CK807
+ help
+ Qemu Emulator for C-SKY architecture (ck807).
+
diff --git a/target/csky/systems/qemu-csky-ck807f b/target/csky/systems/qemu-csky-ck807f
deleted file mode 100644
index f1deaef84..000000000
--- a/target/csky/systems/qemu-csky-ck807f
+++ /dev/null
@@ -1,7 +0,0 @@
-config ADK_TARGET_SYSTEM_QEMU_CSKY_CK807F
- bool "Qemu Emulator (ck807f)"
- select ADK_TARGET_QEMU
- select ADK_TARGET_CPU_CSKY_CK807F
- help
- Qemu Emulator for C-SKY architecture (ck807f).
-
diff --git a/target/csky/systems/qemu-csky-ck810 b/target/csky/systems/qemu-csky-ck810
new file mode 100644
index 000000000..02314bf6e
--- /dev/null
+++ b/target/csky/systems/qemu-csky-ck810
@@ -0,0 +1,7 @@
+config ADK_TARGET_SYSTEM_QEMU_CSKY_CK810
+ bool "Qemu Emulator (ck810)"
+ select ADK_TARGET_QEMU
+ select ADK_TARGET_CPU_CSKY_CK810
+ help
+ Qemu Emulator for C-SKY architecture (ck810).
+
diff --git a/target/csky/systems/qemu-csky-ck810f b/target/csky/systems/qemu-csky-ck810f
deleted file mode 100644
index d5bc10643..000000000
--- a/target/csky/systems/qemu-csky-ck810f
+++ /dev/null
@@ -1,7 +0,0 @@
-config ADK_TARGET_SYSTEM_QEMU_CSKY_CK810F
- bool "Qemu Emulator (ck810f)"
- select ADK_TARGET_QEMU
- select ADK_TARGET_CPU_CSKY_CK810F
- help
- Qemu Emulator for C-SKY architecture (ck810f).
-
diff --git a/target/linux/config/Config.in.ethernet b/target/linux/config/Config.in.ethernet
index 761bf6192..76656e14e 100644
--- a/target/linux/config/Config.in.ethernet
+++ b/target/linux/config/Config.in.ethernet
@@ -106,6 +106,9 @@ config ADK_KERNEL_NETDEV_1000
config ADK_KERNEL_VIA_RHINE_MMIO
bool
+config ADK_KERNEL_DWMAC_GENERIC
+ bool
+
config ADK_KERNEL_DWMAC_SUNXI
bool
@@ -455,11 +458,21 @@ config ADK_KERNEL_STMMAC_ETH
bool "Stmicro MAC ethernet driver"
select ADK_KERNEL_NET_VENDOR_STMICRO
select ADK_KERNEL_STMMAC_PLATFORM
- select ADK_KERNEL_DWMAC_SUNXI
+ select ADK_KERNEL_DWMAC_SUNXI if ADK_TARGET_SYSTEM_BANANA_PRO \
+ || ADK_TARGET_SYSTEM_ORANGE_PI0
+ select ADK_KERNEL_DWMAC_GENERIC if ADK_TARGET_SYSTEM_QEMU_CSKY_CK610
+ select ADK_KERNEL_DWMAC_GENERIC if ADK_TARGET_SYSTEM_QEMU_CSKY_CK807
+ select ADK_KERNEL_DWMAC_GENERIC if ADK_TARGET_SYSTEM_QEMU_CSKY_CK810
depends on ADK_TARGET_SYSTEM_BANANA_PRO \
- || ADK_TARGET_SYSTEM_ORANGE_PI0
+ || ADK_TARGET_SYSTEM_ORANGE_PI0 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK610 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK807 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK810
default y if ADK_TARGET_SYSTEM_BANANA_PRO
default y if ADK_TARGET_SYSTEM_ORANGE_PI0
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY_CK610
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY_CK807
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY_CK810
default n
config ADK_KERNEL_ETHOC
diff --git a/target/linux/config/Config.in.serial b/target/linux/config/Config.in.serial
index 6511bc5a2..f4326eb52 100644
--- a/target/linux/config/Config.in.serial
+++ b/target/linux/config/Config.in.serial
@@ -89,6 +89,9 @@ config ADK_KERNEL_SERIAL_8250
select ADK_KERNEL_SERIAL_8250_CONSOLE
select ADK_KERNEL_SERIAL_OF_PLATFORM if ADK_TARGET_SYSTEM_XILINX_KINTEX7 \
|| ADK_TARGET_SYSTEM_IMGTEC_CI20 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK610 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK807 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK810 \
|| ADK_TARGET_SYSTEM_QEMU_XTENSA \
|| ADK_TARGET_SYSTEM_QEMU_MICROBLAZE_ML605 \
|| ADK_TARGET_SYSTEM_QEMU_NIOS2 \
@@ -112,6 +115,9 @@ config ADK_KERNEL_SERIAL_8250
|| ADK_TARGET_SYSTEM_QEMU_MIPS64 \
|| ADK_TARGET_SYSTEM_SGI_O2 \
|| ADK_TARGET_SYSTEM_QEMU_ALPHA \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK610 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK807 \
+ || ADK_TARGET_SYSTEM_QEMU_CSKY_CK810 \
|| ADK_TARGET_SYSTEM_QEMU_NIOS2 \
|| ADK_TARGET_SYSTEM_QEMU_OR1K \
|| ADK_TARGET_SYSTEM_QEMU_PPC_BAMBOO \
@@ -140,6 +146,9 @@ config ADK_KERNEL_SERIAL_8250
default y if ADK_TARGET_SYSTEM_QEMU_MIPS64
default y if ADK_TARGET_SYSTEM_SGI_O2
default y if ADK_TARGET_SYSTEM_QEMU_ALPHA
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY_CK610
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY_CK807
+ default y if ADK_TARGET_SYSTEM_QEMU_CSKY_CK810
default y if ADK_TARGET_SYSTEM_QEMU_NIOS2
default y if ADK_TARGET_SYSTEM_QEMU_OR1K
default y if ADK_TARGET_SYSTEM_QEMU_PPC_BAMBOO
diff --git a/target/linux/patches/6064a9bdf48cefbccc4f6472dd04251f0dec1931/startup.patch b/target/linux/patches/6064a9bdf48cefbccc4f6472dd04251f0dec1931/startup.patch
new file mode 100644
index 000000000..e54ac19a6
--- /dev/null
+++ b/target/linux/patches/6064a9bdf48cefbccc4f6472dd04251f0dec1931/startup.patch
@@ -0,0 +1,34 @@
+diff -Nur linux-4.4.6.orig/init/initramfs.c linux-4.4.6/init/initramfs.c
+--- linux-4.4.6.orig/init/initramfs.c 2016-03-16 16:43:17.000000000 +0100
++++ linux-4.4.6/init/initramfs.c 2016-03-27 14:15:43.931044532 +0200
+@@ -653,6 +653,9 @@
+ */
+ load_default_modules();
+ }
++#ifdef CONFIG_DEVTMPFS_MOUNT
++ devtmpfs_mount("dev");
++#endif
+ return 0;
+ }
+ rootfs_initcall(populate_rootfs);
+diff -Nur linux-4.4.6.orig/init/main.c linux-4.4.6/init/main.c
+--- linux-4.4.6.orig/init/main.c 2016-03-16 16:43:17.000000000 +0100
++++ linux-4.4.6/init/main.c 2016-03-27 14:15:43.935044783 +0200
+@@ -1011,6 +1011,8 @@
+ if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
+ pr_err("Warning: unable to open an initial console.\n");
+
++ printk(KERN_WARNING "Starting Linux (built with OpenADK).\n");
++
+ (void) sys_dup(0);
+ (void) sys_dup(0);
+ /*
+@@ -1019,7 +1021,7 @@
+ */
+
+ if (!ramdisk_execute_command)
+- ramdisk_execute_command = "/init";
++ ramdisk_execute_command = "/sbin/init";
+
+ if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {
+ ramdisk_execute_command = NULL;