diff options
Diffstat (limited to 'arch/arm/boards/gk802')
-rw-r--r-- | arch/arm/boards/gk802/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/boards/gk802/board.c | 84 | ||||
-rw-r--r-- | arch/arm/boards/gk802/env/config-board | 7 | ||||
-rw-r--r-- | arch/arm/boards/gk802/flash-header.imxcfg | 96 | ||||
-rw-r--r-- | arch/arm/boards/gk802/lowlevel.c | 18 |
5 files changed, 208 insertions, 0 deletions
diff --git a/arch/arm/boards/gk802/Makefile b/arch/arm/boards/gk802/Makefile new file mode 100644 index 0000000000..d9c7ab60ed --- /dev/null +++ b/arch/arm/boards/gk802/Makefile @@ -0,0 +1,3 @@ +obj-y += board.o flash-header.dcd.o +extra-y += flash-header.dcd.S flash-header.dcd +lwl-y += lowlevel.o diff --git a/arch/arm/boards/gk802/board.c b/arch/arm/boards/gk802/board.c new file mode 100644 index 0000000000..3c703a8463 --- /dev/null +++ b/arch/arm/boards/gk802/board.c @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2013 Philipp Zabel + * + * This program 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 program 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. + */ + +#include <asm/armlinux.h> +#include <asm/io.h> +#include <bootsource.h> +#include <common.h> +#include <environment.h> +#include <envfs.h> +#include <gpio.h> +#include <init.h> +#include <mach/generic.h> +#include <mach/imx6-regs.h> +#include <mach/imx6.h> +#include <mfd/imx6q-iomuxc-gpr.h> +#include <sizes.h> + +#define GK802_GPIO_RECOVERY_BTN IMX_GPIO_NR(3, 16) /* recovery button */ +#define GK802_GPIO_RTL8192_PDN IMX_GPIO_NR(2, 0) /* RTL8192CU powerdown */ + +static int gk802_env_init(void) +{ + char *bootsource_name; + char *barebox_name; + char *default_environment_name; + + if (!of_machine_is_compatible("zealz,imx6q-gk802")) + return 0; + + /* Keep RTL8192CU disabled */ + gpio_direction_output(GK802_GPIO_RTL8192_PDN, 1); + + gpio_direction_input(GK802_GPIO_RECOVERY_BTN); + setenv("recovery", gpio_get_value(GK802_GPIO_RECOVERY_BTN) ? "0" : "1"); + + if (bootsource_get() != BOOTSOURCE_MMC) + return 0; + + switch (bootsource_get_instance()) { + case 2: + bootsource_name = "mmc2"; + barebox_name = "mmc2.barebox"; + default_environment_name = "mmc2.bareboxenv"; + default_environment_path = "/dev/mmc2.bareboxenv"; + break; + case 3: + bootsource_name = "mmc3"; + barebox_name = "mmc3.barebox"; + default_environment_name = "mmc3.bareboxenv"; + default_environment_path = "/dev/mmc3.bareboxenv"; + break; + default: + return 0; + } + + device_detect_by_name(bootsource_name); + devfs_add_partition(bootsource_name, 0x00000, SZ_512K, DEVFS_PARTITION_FIXED, barebox_name); + devfs_add_partition(bootsource_name, SZ_512K, SZ_512K, DEVFS_PARTITION_FIXED, default_environment_name); + + return 0; +} +late_initcall(gk802_env_init); + +static int gk802_console_init(void) +{ + if (!of_machine_is_compatible("zealz,imx6q-gk802")) + return 0; + + imx6_init_lowlevel(); + + return 0; +} +postcore_initcall(gk802_console_init); diff --git a/arch/arm/boards/gk802/env/config-board b/arch/arm/boards/gk802/env/config-board new file mode 100644 index 0000000000..99540e9a63 --- /dev/null +++ b/arch/arm/boards/gk802/env/config-board @@ -0,0 +1,7 @@ +#!/bin/sh + +# board defaults, do not change in running system. Change /env/config +# instead + +global.hostname=gk802 +global.linux.bootargs.base="console=ttymxc3,115200" diff --git a/arch/arm/boards/gk802/flash-header.imxcfg b/arch/arm/boards/gk802/flash-header.imxcfg new file mode 100644 index 0000000000..9638b02bda --- /dev/null +++ b/arch/arm/boards/gk802/flash-header.imxcfg @@ -0,0 +1,96 @@ +loadaddr 0x10000000 +soc imx6 +dcdofs 0x400 +wm 32 0x020e05a8 0x00000030 +wm 32 0x020e05b0 0x00000030 +wm 32 0x020e0524 0x00000030 +wm 32 0x020e051c 0x00000030 +wm 32 0x020e0518 0x00000030 +wm 32 0x020e050c 0x00000030 +wm 32 0x020e05b8 0x00000030 +wm 32 0x020e05c0 0x00000030 +wm 32 0x020e05ac 0x00020030 +wm 32 0x020e05b4 0x00020030 +wm 32 0x020e0528 0x00020030 +wm 32 0x020e0520 0x00020030 +wm 32 0x020e0514 0x00020030 +wm 32 0x020e0510 0x00020030 +wm 32 0x020e05bc 0x00020030 +wm 32 0x020e05c4 0x00020030 +wm 32 0x020e056c 0x00020030 +wm 32 0x020e0578 0x00020030 +wm 32 0x020e0588 0x00020030 +wm 32 0x020e0594 0x00020030 +wm 32 0x020e057c 0x00020030 +wm 32 0x020e0590 0x00003000 +wm 32 0x020e0598 0x00003000 +wm 32 0x020e058c 0x00000000 +wm 32 0x020e059c 0x00003030 +wm 32 0x020e05a0 0x00003030 +wm 32 0x020e0784 0x00000030 +wm 32 0x020e0788 0x00000030 +wm 32 0x020e0794 0x00000030 +wm 32 0x020e079c 0x00000030 +wm 32 0x020e07a0 0x00000030 +wm 32 0x020e07a4 0x00000030 +wm 32 0x020e07a8 0x00000030 +wm 32 0x020e0748 0x00000030 +wm 32 0x020e074c 0x00000030 +wm 32 0x020e0750 0x00020000 +wm 32 0x020e0758 0x00000000 +wm 32 0x020e0774 0x00020000 +wm 32 0x020e078c 0x00000030 +wm 32 0x020e0798 0x000c0000 +wm 32 0x021b081c 0x33333333 +wm 32 0x021b0820 0x33333333 +wm 32 0x021b0824 0x33333333 +wm 32 0x021b0828 0x33333333 +wm 32 0x021b481c 0x33333333 +wm 32 0x021b4820 0x33333333 +wm 32 0x021b4824 0x33333333 +wm 32 0x021b4828 0x33333333 +wm 32 0x021b0018 0x00081740 +wm 32 0x021b001c 0x00008000 +wm 32 0x021b000c 0x555a7975 +wm 32 0x021b0010 0xff538e64 +wm 32 0x021b0014 0x01ff00db +wm 32 0x021b002c 0x000026d2 +wm 32 0x021b0030 0x005b0e21 +wm 32 0x021b0008 0x09444040 +wm 32 0x021b0004 0x00025576 +wm 32 0x021b0040 0x00000027 +wm 32 0x021b0000 0x831a0000 +wm 32 0x021b001c 0x04088032 +wm 32 0x021b001c 0x0408803a +wm 32 0x021b001c 0x00008033 +wm 32 0x021b001c 0x0000803b +wm 32 0x021b001c 0x00428031 +wm 32 0x021b001c 0x00428039 +wm 32 0x021b001c 0x09408030 +wm 32 0x021b001c 0x09408038 +wm 32 0x021b001c 0x04008040 +wm 32 0x021b001c 0x04008048 +wm 32 0x021b0800 0xa1380003 +wm 32 0x021b4800 0xa1380003 +wm 32 0x021b0020 0x00005800 +wm 32 0x021b0818 0x00000007 +wm 32 0x021b4818 0x00000007 +wm 32 0x021b083c 0x427b030a +wm 32 0x021b0840 0x02740269 +wm 32 0x021b483c 0x43100313 +wm 32 0x021b4840 0x027d024d +wm 32 0x021b0848 0x46384240 +wm 32 0x021b4848 0x4442414a +wm 32 0x021b0850 0x45444645 +wm 32 0x021b4850 0x4a354946 +wm 32 0x021b080c 0x001f001f +wm 32 0x021b0810 0x001f001f +wm 32 0x021b480c 0x00440044 +wm 32 0x021b4810 0x00440044 +wm 32 0x021b08b8 0x00000800 +wm 32 0x021b48b8 0x00000800 +wm 32 0x021b001c 0x00000000 +wm 32 0x021b0404 0x00011006 +wm 32 0x020e0010 0xf00000ff +wm 32 0x020e0018 0x007f007f +wm 32 0x020e001c 0x007f007f diff --git a/arch/arm/boards/gk802/lowlevel.c b/arch/arm/boards/gk802/lowlevel.c new file mode 100644 index 0000000000..95b218d2d2 --- /dev/null +++ b/arch/arm/boards/gk802/lowlevel.c @@ -0,0 +1,18 @@ +#include <common.h> +#include <sizes.h> +#include <asm/barebox-arm-head.h> +#include <asm/barebox-arm.h> + +extern char __dtb_imx6q_gk802_start[]; + +ENTRY_FUNCTION(start_imx6_gk802)(void) +{ + uint32_t fdt; + + __barebox_arm_head(); + + arm_cpu_lowlevel_init(); + + fdt = (uint32_t)__dtb_imx6q_gk802_start - get_runtime_offset(); + barebox_arm_entry(0x10000000, SZ_1G, fdt); +} |