diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-08-14 09:32:04 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-08-15 09:49:32 +0200 |
commit | 20d9c229e108505a422f06e30aa85bc11747e177 (patch) | |
tree | 7699593bcb7cb8291d5016596a7256e1b69f45ef /arch/arm/boards | |
parent | b76d5bee8b1c034fb321540a782a176843531f77 (diff) | |
download | barebox-20d9c229e108505a422f06e30aa85bc11747e177.tar.gz barebox-20d9c229e108505a422f06e30aa85bc11747e177.tar.xz |
ARM: i.MX: scb9328: refurbish board suport
- switch the i.MX1 based scb9328 board to device tree
- Remove scb9328_defconfig and enable scb9328 board support in
imx_defconfig
- Remove old environment and switch to new default environment
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/boards')
-rw-r--r-- | arch/arm/boards/scb9328/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/boards/scb9328/defaultenv-scb9328/config | 50 | ||||
-rw-r--r-- | arch/arm/boards/scb9328/lowlevel.c | 23 | ||||
-rw-r--r-- | arch/arm/boards/scb9328/lowlevel_init.S | 8 | ||||
-rw-r--r-- | arch/arm/boards/scb9328/scb9328.c | 64 |
5 files changed, 29 insertions, 119 deletions
diff --git a/arch/arm/boards/scb9328/Makefile b/arch/arm/boards/scb9328/Makefile index 7ef6c3fe62..8e1c7ef7a5 100644 --- a/arch/arm/boards/scb9328/Makefile +++ b/arch/arm/boards/scb9328/Makefile @@ -1,4 +1,3 @@ -lwl-y += lowlevel_init.o +lwl-y += lowlevel_init.o lowlevel.o obj-y += scb9328.o -bbenv-$(CONFIG_DEFAULT_ENVIRONMENT_GENERIC) += defaultenv-scb9328 diff --git a/arch/arm/boards/scb9328/defaultenv-scb9328/config b/arch/arm/boards/scb9328/defaultenv-scb9328/config deleted file mode 100644 index c3cbce57d4..0000000000 --- a/arch/arm/boards/scb9328/defaultenv-scb9328/config +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh - -eth0.serverip= -user= - -# use 'dhcp' to do dhcp in barebox and in kernel -# use 'none' if you want to skip kernel ip autoconfiguration -ip=dhcp - -# or set your networking parameters here -#eth0.ipaddr=a.b.c.d -#eth0.netmask=a.b.c.d -#eth0.gateway=a.b.c.d -#eth0.serverip=a.b.c.d - -# can be either 'net', 'nor' or 'nand' -kernel_loc=net -# can be either 'net', 'nor', 'nand' or 'initrd' -rootfs_loc=net - -# can be either 'jffs2' or 'ubifs' -rootfs_type=ubifs -rootfsimage=root-${global.hostname}.$rootfs_type - -kernelimage=zImage-${global.hostname} -#kernelimage=uImage-${global.hostname} -#kernelimage=Image-${global.hostname} -#kernelimage=Image-${global.hostname}.lzo - -if [ -n $user ]; then - kernelimage="$user"-"$kernelimage" - nfsroot="$eth0.serverip:/home/$user/nfsroot/${global.hostname}" - rootfsimage="$user"-"$rootfsimage" -else - nfsroot="$eth0.serverip:/path/to/nfs/root" -fi - -autoboot_timeout=3 - -bootargs="console=ttymxc0,115200" - -nor_parts="256k(barebox)ro,128k(bareboxenv),2M(kernel),-(root)" -rootfs_mtdblock_nor=3 - -nand_parts="256k(barebox)ro,128k(bareboxenv),2M(kernel),-(root)" -rootfs_mtdblock_nand=7 - -# set a fancy prompt (if support is compiled in) -PS1="\e[1;32mbarebox@\e[1;31m\h:\w\e[0m " - diff --git a/arch/arm/boards/scb9328/lowlevel.c b/arch/arm/boards/scb9328/lowlevel.c new file mode 100644 index 0000000000..a2057f0c6b --- /dev/null +++ b/arch/arm/boards/scb9328/lowlevel.c @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 +#include <common.h> +#include <mach/imx1-regs.h> +#include <mach/iomux-v1.h> +#include <mach/iomux-mx1.h> +#include <asm/barebox-arm.h> +#include <mach/esdctl.h> + +extern char __dtb_imx1_scb9328_start[]; + +/* Called from assembly */ +void scb9328_start(void); + +void scb9328_start(void) +{ + void *fdt; + + fdt = __dtb_imx1_scb9328_start + get_runtime_offset(); + + imx1_gpio_mode(PA23_PF_CS5); + + imx1_barebox_entry(fdt); +} diff --git a/arch/arm/boards/scb9328/lowlevel_init.S b/arch/arm/boards/scb9328/lowlevel_init.S index 73afc09b70..e20e3b92da 100644 --- a/arch/arm/boards/scb9328/lowlevel_init.S +++ b/arch/arm/boards/scb9328/lowlevel_init.S @@ -25,8 +25,10 @@ ldr r1, =val; \ str r1, [r0]; -.globl barebox_arm_reset_vector -barebox_arm_reset_vector: +.section .text_head_entry_start_scb9328 + +.globl start_scb9328 +start_scb9328: bl arm_cpu_lowlevel_init @@ -132,4 +134,4 @@ barebox_arm_reset_vector: 2: ldr sp, =0x08100000 - 4; - b imx1_barebox_entry + b scb9328_start diff --git a/arch/arm/boards/scb9328/scb9328.c b/arch/arm/boards/scb9328/scb9328.c index fcdb3de49d..d1f741a70e 100644 --- a/arch/arm/boards/scb9328/scb9328.c +++ b/arch/arm/boards/scb9328/scb9328.c @@ -26,81 +26,17 @@ #include <partition.h> #include <fs.h> #include <envfs.h> -#include <fcntl.h> -#include <platform_data/eth-dm9000.h> -#include <led.h> #include <mach/iomux-mx1.h> #include <mach/devices-imx1.h> -static struct dm9000_platform_data dm9000_data = { - .srom = 1, -}; - -struct gpio_led leds[] = { - { - .gpio = 32 + 21, - }, { - .gpio = 32 + 22, - }, { - .gpio = 32 + 23, - }, { - .gpio = 32 + 24, - }, -}; - static int scb9328_devices_init(void) { - int i; - - imx1_gpio_mode(PA23_PF_CS5); - imx1_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 21); - imx1_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 22); - imx1_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 23); - imx1_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 24); - - for (i = 0; i < ARRAY_SIZE(leds); i++) - led_gpio_register(&leds[i]); - /* CS3 becomes CS3 by clearing reset default bit 1 in FMCR */ writel(0x1, MX1_SCM_BASE_ADDR + MX1_FMCR); - imx1_setup_eimcs(0, 0x000F2000, 0x11110d01); - imx1_setup_eimcs(1, 0x000F0a00, 0x11110601); - imx1_setup_eimcs(3, 0x000FFFFF, 0x00000303); - imx1_setup_eimcs(4, 0x000F0a00, 0x11110301); - imx1_setup_eimcs(5, 0x00008400, 0x00000D03); - - add_cfi_flash_device(DEVICE_ID_DYNAMIC, 0x10000000, 16 * 1024 * 1024, 0); - add_dm9000_device(DEVICE_ID_DYNAMIC, 0x16000000, 0x16000004, - IORESOURCE_MEM_16BIT, &dm9000_data); - - devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self0"); - devfs_add_partition("nor0", 0x40000, 0x20000, DEVFS_PARTITION_FIXED, "env0"); - protect_file("/dev/env0", 1); - armlinux_set_architecture(MACH_TYPE_SCB9328); - if (IS_ENABLED(CONFIG_DEFAULT_ENVIRONMENT_GENERIC)) - defaultenv_append_directory(defaultenv_scb9328); - return 0; } device_initcall(scb9328_devices_init); - -static int scb9328_console_init(void) -{ - /* init gpios for serial port */ - imx1_gpio_mode(PC11_PF_UART1_TXD); - imx1_gpio_mode(PC12_PF_UART1_RXD); - - barebox_set_model("Synertronixx scb9328"); - barebox_set_hostname("scb9328"); - - imx1_add_uart0(); - - return 0; -} - -console_initcall(scb9328_console_init); - |