diff mbox

[U-Boot,5/7] rockchip: rk3368: Add initial support for RK3368 based GeekBox

Message ID 1492741976-7797-1-git-send-email-andy.yan@rock-chips.com
State Changes Requested
Delegated to: Simon Glass
Headers show

Commit Message

Andy Yan April 21, 2017, 2:32 a.m. UTC
From: Andreas Färber <afaerber@suse.de>

The GeekBox is a TV box from GeekBuying, based on an MXM3 module.
The module can be used with base boards such as the GeekBox Landingship.

This adds basic support to chain-load U-Boot from Rockchip's miniloader.

$ ./lollipop_u-boot/tools/loaderimage --pack u-boot.bin u-boot.img

Implemented is the serial console, but no boot media drivers yet.

Note that flashing the resulting U-Boot will not allow you to enter the
rockusb mode any more via "Update" button. Instead, you will need to
short two pins on the bottom of the module to enter MaskRom mode and
re-flash the loader:

Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
---

 arch/arm/dts/Makefile                 |   2 +
 arch/arm/dts/rk3368-geekbox.dts       | 319 ++++++++++++++++++++++++++++++++++
 arch/arm/mach-rockchip/rk3368/Kconfig |  11 ++
 board/geekbuying/geekbox/Kconfig      |  15 ++
 board/geekbuying/geekbox/MAINTAINERS  |   6 +
 board/geekbuying/geekbox/Makefile     |   7 +
 board/geekbuying/geekbox/geekbox.c    |  28 +++
 configs/geekbox_defconfig             |  21 +++
 include/configs/geekbox.h             |  18 ++
 9 files changed, 427 insertions(+)
 create mode 100644 arch/arm/dts/rk3368-geekbox.dts
 create mode 100644 board/geekbuying/geekbox/Kconfig
 create mode 100644 board/geekbuying/geekbox/MAINTAINERS
 create mode 100644 board/geekbuying/geekbox/Makefile
 create mode 100644 board/geekbuying/geekbox/geekbox.c
 create mode 100644 configs/geekbox_defconfig
 create mode 100644 include/configs/geekbox.h

Comments

Andreas Färber April 21, 2017, 2:59 a.m. UTC | #1
Hi Andy,

Sorry for forgetting about this, and thank you for picking it up.

Am 21.04.2017 um 04:32 schrieb Andy Yan:
> From: Andreas Färber <afaerber@suse.de>
> 
> The GeekBox is a TV box from GeekBuying, based on an MXM3 module.
> The module can be used with base boards such as the GeekBox Landingship.
> 
> This adds basic support to chain-load U-Boot from Rockchip's miniloader.
> 
> $ ./lollipop_u-boot/tools/loaderimage --pack u-boot.bin u-boot.img
> 
> Implemented is the serial console, but no boot media drivers yet.
> 
> Note that flashing the resulting U-Boot will not allow you to enter the
> rockusb mode any more via "Update" button. Instead, you will need to
> short two pins on the bottom of the module to enter MaskRom mode and
> re-flash the loader:

":"? See also below.

> 
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
> ---
> 
>  arch/arm/dts/Makefile                 |   2 +
>  arch/arm/dts/rk3368-geekbox.dts       | 319 ++++++++++++++++++++++++++++++++++
>  arch/arm/mach-rockchip/rk3368/Kconfig |  11 ++
>  board/geekbuying/geekbox/Kconfig      |  15 ++
>  board/geekbuying/geekbox/MAINTAINERS  |   6 +
>  board/geekbuying/geekbox/Makefile     |   7 +
>  board/geekbuying/geekbox/geekbox.c    |  28 +++
>  configs/geekbox_defconfig             |  21 +++
>  include/configs/geekbox.h             |  18 ++
>  9 files changed, 427 insertions(+)
>  create mode 100644 arch/arm/dts/rk3368-geekbox.dts
>  create mode 100644 board/geekbuying/geekbox/Kconfig
>  create mode 100644 board/geekbuying/geekbox/MAINTAINERS
>  create mode 100644 board/geekbuying/geekbox/Makefile
>  create mode 100644 board/geekbuying/geekbox/geekbox.c
>  create mode 100644 configs/geekbox_defconfig
>  create mode 100644 include/configs/geekbox.h

One reason this series stalled is that I was asked to add a README
instead of the text in the commit message - this is still missing in
your submission, it seems.

> 
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index ce34e3e..fbc97e8 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -41,8 +41,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \
>  	rk3288-veyron-mickey.dtb \
>  	rk3288-veyron-minnie.dtb \
>  	rk3328-evb.dtb \
> +	rk3368-geekbox.dtb \
>  	rk3399-evb.dtb \
>  	rk3399-puma.dtb
> +	rk3368-geekbox.dtb

Mismerge.

>  dtb-$(CONFIG_ARCH_MESON) += \
>  	meson-gxbb-odroidc2.dtb
[snip]

Regards,
Andreas
Andy Yan April 21, 2017, 6:17 a.m. UTC | #2
Hi Andreas:


On 2017年04月21日 10:59, Andreas Färber wrote:
> Hi Andy,
>
> Sorry for forgetting about this, and thank you for picking it up.
>
> Am 21.04.2017 um 04:32 schrieb Andy Yan:
>> From: Andreas Färber <afaerber@suse.de>
>>
>> The GeekBox is a TV box from GeekBuying, based on an MXM3 module.
>> The module can be used with base boards such as the GeekBox Landingship.
>>
>> This adds basic support to chain-load U-Boot from Rockchip's miniloader.
>>
>> $ ./lollipop_u-boot/tools/loaderimage --pack u-boot.bin u-boot.img
>>
>> Implemented is the serial console, but no boot media drivers yet.
>>
>> Note that flashing the resulting U-Boot will not allow you to enter the
>> rockusb mode any more via "Update" button. Instead, you will need to
>> short two pins on the bottom of the module to enter MaskRom mode and
>> re-flash the loader:
> ":"? See also below.
>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
>> ---
>>
>>   arch/arm/dts/Makefile                 |   2 +
>>   arch/arm/dts/rk3368-geekbox.dts       | 319 ++++++++++++++++++++++++++++++++++
>>   arch/arm/mach-rockchip/rk3368/Kconfig |  11 ++
>>   board/geekbuying/geekbox/Kconfig      |  15 ++
>>   board/geekbuying/geekbox/MAINTAINERS  |   6 +
>>   board/geekbuying/geekbox/Makefile     |   7 +
>>   board/geekbuying/geekbox/geekbox.c    |  28 +++
>>   configs/geekbox_defconfig             |  21 +++
>>   include/configs/geekbox.h             |  18 ++
>>   9 files changed, 427 insertions(+)
>>   create mode 100644 arch/arm/dts/rk3368-geekbox.dts
>>   create mode 100644 board/geekbuying/geekbox/Kconfig
>>   create mode 100644 board/geekbuying/geekbox/MAINTAINERS
>>   create mode 100644 board/geekbuying/geekbox/Makefile
>>   create mode 100644 board/geekbuying/geekbox/geekbox.c
>>   create mode 100644 configs/geekbox_defconfig
>>   create mode 100644 include/configs/geekbox.h
> One reason this series stalled is that I was asked to add a README
> instead of the text in the commit message - this is still missing in
> your submission, it seems.


     Thanks for pointing out this, I will add a README in next version.
>> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
>> index ce34e3e..fbc97e8 100644
>> --- a/arch/arm/dts/Makefile
>> +++ b/arch/arm/dts/Makefile
>> @@ -41,8 +41,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \
>>   	rk3288-veyron-mickey.dtb \
>>   	rk3288-veyron-minnie.dtb \
>>   	rk3328-evb.dtb \
>> +	rk3368-geekbox.dtb \
>>   	rk3399-evb.dtb \
>>   	rk3399-puma.dtb
>> +	rk3368-geekbox.dtb
> Mismerge.
>
>>   dtb-$(CONFIG_ARCH_MESON) += \
>>   	meson-gxbb-odroidc2.dtb
> [snip]
>
> Regards,
> Andreas
>
Andreas Färber April 30, 2017, 9:17 a.m. UTC | #3
Hi Andy,

Am 21.04.2017 um 08:17 schrieb Andy Yan:
> On 2017年04月21日 10:59, Andreas Färber wrote:
>> Am 21.04.2017 um 04:32 schrieb Andy Yan:
>>> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
>>> index ce34e3e..fbc97e8 100644
>>> --- a/arch/arm/dts/Makefile
>>> +++ b/arch/arm/dts/Makefile
>>> @@ -41,8 +41,10 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \
>>>       rk3288-veyron-mickey.dtb \
>>>       rk3288-veyron-minnie.dtb \
>>>       rk3328-evb.dtb \
>>> +    rk3368-geekbox.dtb \
>>>       rk3399-evb.dtb \
>>>       rk3399-puma.dtb
>>> +    rk3368-geekbox.dtb
>> Mismerge.

With that line dropped, I have tested the series on top of
u-boot-rockchip.git next on the GeekBox.
(New tweezers worked after three tries instead of dozens - progress!)

> U-Boot 2017.05-rc2-00088-gfdac36918d-dirty (Apr 30 2017 - 10:19:48 +0200)
> 
> Model: GeekBox
> DRAM:  2 GiB
> rkclk_init apllb(816000000) apll(800000000) dpll(1200000000) cpll(400000000) gpll(576000000)

Can we limit this output to debug builds please?

> MMC:   
> Using default environment
> 
> In:    serial@ff690000
> Out:   serial@ff690000
> Err:   serial@ff690000
> Net:   Net Initialization Skipped
> No ethernet found.
> Hit any key to stop autoboot:  0 

I notice that we're still lacking environment variables for distro boot:

fdtfile
fdt_addr_r
kernel_addr_r
ramdisk_addr_r
scriptaddr

I'll look into fdtfile and would appreciate if you could include the
addresses in v2.

It seems that despite your added drivers, we're still not able to boot?
What will be the quickest driver to enable? Net? MMC?

For rockusb support (Eddie's series) we probably need USB drivers first?

Regards,
Andreas
diff mbox

Patch

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index ce34e3e..fbc97e8 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -41,8 +41,10 @@  dtb-$(CONFIG_ARCH_ROCKCHIP) += \
 	rk3288-veyron-mickey.dtb \
 	rk3288-veyron-minnie.dtb \
 	rk3328-evb.dtb \
+	rk3368-geekbox.dtb \
 	rk3399-evb.dtb \
 	rk3399-puma.dtb
+	rk3368-geekbox.dtb
 dtb-$(CONFIG_ARCH_MESON) += \
 	meson-gxbb-odroidc2.dtb
 dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
diff --git a/arch/arm/dts/rk3368-geekbox.dts b/arch/arm/dts/rk3368-geekbox.dts
new file mode 100644
index 0000000..46cdddf
--- /dev/null
+++ b/arch/arm/dts/rk3368-geekbox.dts
@@ -0,0 +1,319 @@ 
+/*
+ * Copyright (c) 2016 Andreas Färber
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "rk3368.dtsi"
+#include <dt-bindings/input/input.h>
+
+/ {
+	model = "GeekBox";
+	compatible = "geekbuying,geekbox", "rockchip,rk3368";
+
+	chosen {
+		stdout-path = "serial2:115200n8";
+	};
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x0 0x0 0x80000000>;
+	};
+
+	ext_gmac: gmac-clk {
+		compatible = "fixed-clock";
+		clock-frequency = <125000000>;
+		clock-output-names = "ext_gmac";
+		#clock-cells = <0>;
+	};
+
+	ir: ir-receiver {
+		compatible = "gpio-ir-receiver";
+		gpios = <&gpio3 30 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&ir_int>;
+	};
+
+	keys: gpio-keys {
+		compatible = "gpio-keys";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pwr_key>;
+
+		power {
+			gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+			label = "GPIO Power";
+			linux,code = <KEY_POWER>;
+			wakeup-source;
+		};
+	};
+
+	leds: gpio-leds {
+		compatible = "gpio-leds";
+
+		blue {
+			gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
+			label = "geekbox:blue:led";
+			default-state = "on";
+		};
+
+		red {
+			gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
+			label = "geekbox:red:led";
+			default-state = "off";
+		};
+	};
+
+	vcc_sys: vcc-sys-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc_sys";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		regulator-boot-on;
+	};
+};
+
+&emmc {
+	status = "okay";
+	bus-width = <8>;
+	cap-mmc-highspeed;
+	clock-frequency = <150000000>;
+	disable-wp;
+	keep-power-in-suspend;
+	non-removable;
+	num-slots = <1>;
+	vmmc-supply = <&vcc_io>;
+	vqmmc-supply = <&vcc18_flash>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
+};
+
+&gmac {
+	status = "okay";
+	phy-supply = <&vcc_lan>;
+	phy-mode = "rgmii";
+	clock_in_out = "input";
+	assigned-clocks = <&cru SCLK_MAC>;
+	assigned-clock-parents = <&ext_gmac>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&rgmii_pins>;
+	tx_delay = <0x30>;
+	rx_delay = <0x10>;
+};
+
+&i2c0 {
+	status = "okay";
+
+	rk808: pmic@1b {
+		compatible = "rockchip,rk808";
+		reg = <0x1b>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_int>, <&pmic_sleep>;
+		interrupt-parent = <&gpio0>;
+		interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
+		rockchip,system-power-controller;
+		vcc1-supply = <&vcc_sys>;
+		vcc2-supply = <&vcc_sys>;
+		vcc3-supply = <&vcc_sys>;
+		vcc4-supply = <&vcc_sys>;
+		vcc6-supply = <&vcc_sys>;
+		vcc7-supply = <&vcc_sys>;
+		vcc8-supply = <&vcc_io>;
+		vcc9-supply = <&vcc_sys>;
+		vcc10-supply = <&vcc_sys>;
+		vcc11-supply = <&vcc_sys>;
+		vcc12-supply = <&vcc_io>;
+		clock-output-names = "xin32k", "rk808-clkout2";
+		#clock-cells = <1>;
+
+		regulators {
+			vdd_cpu: DCDC_REG1 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <700000>;
+				regulator-max-microvolt = <1500000>;
+				regulator-name = "vdd_cpu";
+			};
+
+			vdd_log: DCDC_REG2 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <700000>;
+				regulator-max-microvolt = <1500000>;
+				regulator-name = "vdd_log";
+			};
+
+			vcc_ddr: DCDC_REG3 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-name = "vcc_ddr";
+			};
+
+			vcc_io: DCDC_REG4 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc_io";
+			};
+
+			vcc18_flash: LDO_REG1 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc18_flash";
+			};
+
+			vcc33_lcd: LDO_REG2 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc33_lcd";
+			};
+
+			vdd_10: LDO_REG3 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1000000>;
+				regulator-max-microvolt = <1000000>;
+				regulator-name = "vdd_10";
+			};
+
+			vcca_18: LDO_REG4 {
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcca_18";
+			};
+
+			vccio_sd: LDO_REG5 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vccio_sd";
+			};
+
+			vdd10_lcd: LDO_REG6 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1000000>;
+				regulator-max-microvolt = <1000000>;
+				regulator-name = "vdd10_lcd";
+			};
+
+			vcc_18: LDO_REG7 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc_18";
+			};
+
+			vcc18_lcd: LDO_REG8 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc18_lcd";
+			};
+
+			vcc_sd: SWITCH_REG1 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-name = "vcc_sd";
+			};
+
+			vcc_lan: SWITCH_REG2 {
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-name = "vcc_lan";
+			};
+		};
+	};
+};
+
+&pinctrl {
+	ir {
+		ir_int: ir-int {
+			rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	keys {
+		pwr_key: pwr-key {
+			rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	pmic {
+		pmic_sleep: pmic-sleep {
+			rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
+		};
+
+		pmic_int: pmic-int {
+			rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+	};
+};
+
+&tsadc {
+	status = "okay";
+	rockchip,hw-tshut-mode = <0>; /* CRU */
+	rockchip,hw-tshut-polarity = <1>; /* high */
+};
+
+&uart2 {
+	status = "okay";
+};
+
+&usb_host0_ehci {
+	status = "okay";
+};
+
+&usb_otg {
+	status = "okay";
+};
+
+&wdt {
+	status = "okay";
+};
diff --git a/arch/arm/mach-rockchip/rk3368/Kconfig b/arch/arm/mach-rockchip/rk3368/Kconfig
index ee9c6fb..c7e9933 100644
--- a/arch/arm/mach-rockchip/rk3368/Kconfig
+++ b/arch/arm/mach-rockchip/rk3368/Kconfig
@@ -1,8 +1,19 @@ 
 if ROCKCHIP_RK3368
 
+choice
+	prompt "RK3368 board"
+
+config TARGET_GEEKBOX
+	bool "GeekBox"
+
+endchoice
+
 config SYS_SOC
 	default "rockchip"
 
 config SYS_MALLOC_F_LEN
 	default 0x0800
+
+source "board/geekbuying/geekbox/Kconfig"
+
 endif
diff --git a/board/geekbuying/geekbox/Kconfig b/board/geekbuying/geekbox/Kconfig
new file mode 100644
index 0000000..41aa8fb
--- /dev/null
+++ b/board/geekbuying/geekbox/Kconfig
@@ -0,0 +1,15 @@ 
+if TARGET_GEEKBOX
+
+config SYS_BOARD
+	default "geekbox"
+
+config SYS_VENDOR
+	default "geekbuying"
+
+config SYS_CONFIG_NAME
+	default "geekbox"
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+	def_bool y
+
+endif
diff --git a/board/geekbuying/geekbox/MAINTAINERS b/board/geekbuying/geekbox/MAINTAINERS
new file mode 100644
index 0000000..7a4989f
--- /dev/null
+++ b/board/geekbuying/geekbox/MAINTAINERS
@@ -0,0 +1,6 @@ 
+GEEKBOX
+M:	Andreas Färber <afaerber@suse.de>
+S:	Maintained
+F:	board/geekbuying/geekbox
+F:	include/configs/geekbox.h
+F:	configs/geekbox_defconfig
diff --git a/board/geekbuying/geekbox/Makefile b/board/geekbuying/geekbox/Makefile
new file mode 100644
index 0000000..5c1d66c
--- /dev/null
+++ b/board/geekbuying/geekbox/Makefile
@@ -0,0 +1,7 @@ 
+#
+# Copyright (c) 2016 Andreas Färber
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y	+= geekbox.o
diff --git a/board/geekbuying/geekbox/geekbox.c b/board/geekbuying/geekbox/geekbox.c
new file mode 100644
index 0000000..75d121d
--- /dev/null
+++ b/board/geekbuying/geekbox/geekbox.c
@@ -0,0 +1,28 @@ 
+/*
+ * Copyright (c) 2016 Andreas Färber
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_init(void)
+{
+	return 0;
+}
+
+int dram_init(void)
+{
+	gd->ram_size = 0x80000000;
+	return 0;
+}
+
+int dram_init_banksize(void)
+{
+	gd->bd->bi_dram[0].start = 0;
+	gd->bd->bi_dram[0].size = 0x80000000;
+
+	return 0;
+}
diff --git a/configs/geekbox_defconfig b/configs/geekbox_defconfig
new file mode 100644
index 0000000..f578310
--- /dev/null
+++ b/configs/geekbox_defconfig
@@ -0,0 +1,21 @@ 
+CONFIG_ARM=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_ROCKCHIP_RK3368=y
+CONFIG_TARGET_GEEKBOX=y
+CONFIG_DEFAULT_DEVICE_TREE="rk3368-geekbox"
+CONFIG_HUSH_PARSER=y
+# CONFIG_DISPLAY_CPUINFO is not set
+# CONFIG_CMD_IMLS is not set
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_CLK=y
+CONFIG_SYSRESET=y
+CONFIG_PINCTRL=y
+CONFIG_RAM=y
+CONFIG_DEBUG_UART=y
+CONFIG_DEBUG_UART_BASE=0xFF690000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_DEBUG_UART_SKIP_INIT=y
+CONFIG_ERRNO_STR=y
diff --git a/include/configs/geekbox.h b/include/configs/geekbox.h
new file mode 100644
index 0000000..6f60f9f
--- /dev/null
+++ b/include/configs/geekbox.h
@@ -0,0 +1,18 @@ 
+/*
+ * Copyright (c) 2016 Andreas Färber
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIGS_GEEKBOX_H
+#define __CONFIGS_GEEKBOX_H
+
+#include <configs/rk3368_common.h>
+
+#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_SIZE			0x2000
+
+#define CONFIG_SYS_WHITE_ON_BLACK
+#define CONFIG_CONSOLE_SCROLL_LINES		10
+
+#endif