diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-08-15 10:57:58 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-08-15 10:57:58 +0200 |
commit | 53e145d550c1ee9db907fccd7ad4d98d6aee806b (patch) | |
tree | 431402db1d110a43aef8289c45ad3ca1adb49cff /arch/arm/boards | |
parent | fd175c7e025f5c9cae30f105668d9f269e2831f5 (diff) | |
parent | 20d9c229e108505a422f06e30aa85bc11747e177 (diff) | |
download | barebox-53e145d550c1ee9db907fccd7ad4d98d6aee806b.tar.gz barebox-53e145d550c1ee9db907fccd7ad4d98d6aee806b.tar.xz |
Merge branch 'for-next/imx'
Diffstat (limited to 'arch/arm/boards')
-rw-r--r-- | arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c | 2 | ||||
-rw-r--r-- | arch/arm/boards/freescale-mx21-ads/imx21ads.c | 2 | ||||
-rw-r--r-- | arch/arm/boards/freescale-mx27-ads/imx27ads.c | 2 | ||||
-rw-r--r-- | arch/arm/boards/freescale-mx28-evk/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/boards/freescale-mx28-evk/board.c | 41 | ||||
-rw-r--r-- | arch/arm/boards/freescale-mx28-evk/lowlevel.c | 8 | ||||
-rw-r--r-- | arch/arm/boards/freescale-mx28-evk/mx28-evk.c | 306 | ||||
-rw-r--r-- | arch/arm/boards/guf-neso/board.c | 2 | ||||
-rw-r--r-- | arch/arm/boards/phytec-phycard-imx27/pca100.c | 6 | ||||
-rw-r--r-- | arch/arm/boards/phytec-phycore-imx27/pcm038.c | 4 | ||||
-rw-r--r-- | arch/arm/boards/phytec-phycore-imx27/pcm970.c | 2 | ||||
-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 |
16 files changed, 88 insertions, 437 deletions
diff --git a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c index f27dcd6f44..63034e2755 100644 --- a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c +++ b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c @@ -171,7 +171,7 @@ static int eukrea_cpuimx27_devices_init(void) /* initialize gpios */ for (i = 0; i < ARRAY_SIZE(mode); i++) - imx_gpio_mode(mode[i]); + imx27_gpio_mode(mode[i]); add_cfi_flash_device(DEVICE_ID_DYNAMIC, 0xC0000000, 32 * 1024 * 1024, 0); #ifdef CONFIG_EUKREA_CPUIMX27_NOR_64MB diff --git a/arch/arm/boards/freescale-mx21-ads/imx21ads.c b/arch/arm/boards/freescale-mx21-ads/imx21ads.c index 8afe9ace51..aa654da494 100644 --- a/arch/arm/boards/freescale-mx21-ads/imx21ads.c +++ b/arch/arm/boards/freescale-mx21-ads/imx21ads.c @@ -152,7 +152,7 @@ static int mx21ads_devices_init(void) /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(mode); i++) - imx_gpio_mode(mode[i]); + imx21_gpio_mode(mode[i]); add_cfi_flash_device(DEVICE_ID_DYNAMIC, MX21_CS0_BASE_ADDR, 32 * 1024 * 1024, 0); diff --git a/arch/arm/boards/freescale-mx27-ads/imx27ads.c b/arch/arm/boards/freescale-mx27-ads/imx27ads.c index 9818a55137..c0f4e464c1 100644 --- a/arch/arm/boards/freescale-mx27-ads/imx27ads.c +++ b/arch/arm/boards/freescale-mx27-ads/imx27ads.c @@ -95,7 +95,7 @@ static int mx27ads_devices_init(void) /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(mode); i++) - imx_gpio_mode(mode[i]); + imx27_gpio_mode(mode[i]); add_cfi_flash_device(DEVICE_ID_DYNAMIC, 0xC0000000, 32 * 1024 * 1024, 0); diff --git a/arch/arm/boards/freescale-mx28-evk/Makefile b/arch/arm/boards/freescale-mx28-evk/Makefile index a74ec2451b..01c7a259e9 100644 --- a/arch/arm/boards/freescale-mx28-evk/Makefile +++ b/arch/arm/boards/freescale-mx28-evk/Makefile @@ -1,2 +1,2 @@ -obj-y += mx28-evk.o +obj-y += board.o lwl-y += lowlevel.o diff --git a/arch/arm/boards/freescale-mx28-evk/board.c b/arch/arm/boards/freescale-mx28-evk/board.c new file mode 100644 index 0000000000..4590ceaa35 --- /dev/null +++ b/arch/arm/boards/freescale-mx28-evk/board.c @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2010 Juergen Beisert, Pengutronix <kernel@pengutronix.de> + * Copyright (C) 2011 Marc Kleine-Budde, Pengutronix <mkl@pengutronix.de> + * Copyright (C) 2011 Wolfram Sang, Pengutronix <w.sang@pengutronix.de> + * Copyright (C) 2019 Oleksij Rempel, Pengutronix <o.rempel@pengutronix.de> + */ + +#include <common.h> +#include <init.h> +#include <net.h> +#include <mach/ocotp.h> + +static void mx28_evk_get_ethaddr(void) +{ + u8 mac_ocotp[3], mac[6]; + int ret; + + ret = mxs_ocotp_read(mac_ocotp, 3, 0); + if (ret != 3) { + pr_err("Reading MAC from OCOTP failed!\n"); + return; + } + + mac[0] = 0x00; + mac[1] = 0x04; + mac[2] = 0x9f; + mac[3] = mac_ocotp[2]; + mac[4] = mac_ocotp[1]; + mac[5] = mac_ocotp[0]; + + eth_register_ethaddr(0, mac); +} + +static int mx28_evk_devices_init(void) +{ + mx28_evk_get_ethaddr(); /* must be after registering ocotp */ + + return 0; +} +fs_initcall(mx28_evk_devices_init); diff --git a/arch/arm/boards/freescale-mx28-evk/lowlevel.c b/arch/arm/boards/freescale-mx28-evk/lowlevel.c index 22cae1374c..82411bb516 100644 --- a/arch/arm/boards/freescale-mx28-evk/lowlevel.c +++ b/arch/arm/boards/freescale-mx28-evk/lowlevel.c @@ -12,9 +12,15 @@ #include <mach/iomux.h> #include <stmp-device.h> +extern char __dtb_imx28_evk_start[]; + ENTRY_FUNCTION(start_barebox_freescale_mx28evk, r0, r1, r2) { - barebox_arm_entry(IMX_MEMORY_BASE, SZ_128M, NULL); + void *fdt; + + fdt = __dtb_imx28_evk_start + get_runtime_offset(); + + barebox_arm_entry(IMX_MEMORY_BASE, SZ_128M, fdt); } static const uint32_t iomux_pads[] = { diff --git a/arch/arm/boards/freescale-mx28-evk/mx28-evk.c b/arch/arm/boards/freescale-mx28-evk/mx28-evk.c deleted file mode 100644 index 06a2c21a47..0000000000 --- a/arch/arm/boards/freescale-mx28-evk/mx28-evk.c +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright (C) 2010 Juergen Beisert, Pengutronix <kernel@pengutronix.de> - * Copyright (C) 2011 Marc Kleine-Budde, Pengutronix <mkl@pengutronix.de> - * Copyright (C) 2011 Wolfram Sang, Pengutronix <w.sang@pengutronix.de> - * - * 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 <common.h> -#include <environment.h> -#include <errno.h> -#include <platform_data/eth-fec.h> -#include <gpio.h> -#include <init.h> -#include <mci.h> -#include <io.h> -#include <net.h> - -#include <mach/clock.h> -#include <mach/imx-regs.h> -#include <mach/iomux-imx28.h> -#include <mach/mci.h> -#include <mach/fb.h> -#include <mach/iomux.h> -#include <mach/ocotp.h> -#include <mach/devices.h> -#include <mach/usb.h> -#include <usb/fsl_usb2.h> -#include <spi/spi.h> - -#include <asm/armlinux.h> -#include <asm/mmu.h> - -#include <generated/mach-types.h> - -#define MX28EVK_FEC_PHY_RESET_GPIO 141 - -/* setup the CPU card internal signals */ -static const uint32_t mx28evk_pads[] = { - /* duart */ - PWM0_DUART_RX | VE_3_3V, - PWM1_DUART_TX | VE_3_3V, - - /* fec0 */ - ENET_CLK | VE_3_3V | BITKEEPER(0), - ENET0_MDC | VE_3_3V | PULLUP(1), - ENET0_MDIO | VE_3_3V | PULLUP(1), - ENET0_TXD0 | VE_3_3V | PULLUP(1), - ENET0_TXD1 | VE_3_3V | PULLUP(1), - ENET0_TX_EN | VE_3_3V | PULLUP(1), - ENET0_TX_CLK | VE_3_3V | BITKEEPER(0), - ENET0_RXD0 | VE_3_3V | PULLUP(1), - ENET0_RXD1 | VE_3_3V | PULLUP(1), - ENET0_RX_EN | VE_3_3V | PULLUP(1), - /* send a "good morning" to the ext. phy 0 = reset */ - ENET0_RX_CLK_GPIO | VE_3_3V | PULLUP(0) | GPIO_OUT | GPIO_VALUE(0), - /* phy power control 1 = on */ - SSP1_D3_GPIO | VE_3_3V | PULLUP(0) | GPIO_OUT | GPIO_VALUE(0), - - /* mmc0 */ - SSP0_D0 | VE_3_3V | PULLUP(1), - SSP0_D1 | VE_3_3V | PULLUP(1), - SSP0_D2 | VE_3_3V | PULLUP(1), - SSP0_D3 | VE_3_3V | PULLUP(1), - SSP0_D4 | VE_3_3V | PULLUP(1), - SSP0_D5 | VE_3_3V | PULLUP(1), - SSP0_D6 | VE_3_3V | PULLUP(1), - SSP0_D7 | VE_3_3V | PULLUP(1), - SSP0_CMD | VE_3_3V | PULLUP(1), - SSP0_CD | VE_3_3V | PULLUP(1), - SSP0_SCK | VE_3_3V | BITKEEPER(0), - /* MCI slot power control 1 = off */ - PWM3_GPIO | VE_3_3V | GPIO_OUT | GPIO_VALUE(0), - /* MCI write protect 1 = not protected */ - SSP1_SCK_GPIO | VE_3_3V | GPIO_IN, - - /* lcd */ - LCD_WR_RWN_LCD_HSYNC | VE_3_3V | STRENGTH(S8MA), - LCD_RD_E_LCD_VSYNC | VE_3_3V | STRENGTH(S8MA), - LCD_CS_LCD_ENABLE | VE_3_3V | STRENGTH(S8MA), - LCD_RS_LCD_DOTCLK | VE_3_3V | STRENGTH(S8MA), - LCD_D0 | VE_3_3V | STRENGTH(S8MA), - LCD_D1 | VE_3_3V | STRENGTH(S8MA), - LCD_D2 | VE_3_3V | STRENGTH(S8MA), - LCD_D3 | VE_3_3V | STRENGTH(S8MA), - LCD_D4 | VE_3_3V | STRENGTH(S8MA), - LCD_D5 | VE_3_3V | STRENGTH(S8MA), - LCD_D6 | VE_3_3V | STRENGTH(S8MA), - LCD_D7 | VE_3_3V | STRENGTH(S8MA), - LCD_D8 | VE_3_3V | STRENGTH(S8MA), - LCD_D9 | VE_3_3V | STRENGTH(S8MA), - LCD_D10 | VE_3_3V | STRENGTH(S8MA), - LCD_D11 | VE_3_3V | STRENGTH(S8MA), - LCD_D12 | VE_3_3V | STRENGTH(S8MA), - LCD_D13 | VE_3_3V | STRENGTH(S8MA), - LCD_D14 | VE_3_3V | STRENGTH(S8MA), - LCD_D15 | VE_3_3V | STRENGTH(S8MA), - LCD_D16 | VE_3_3V | STRENGTH(S8MA), - LCD_D17 | VE_3_3V | STRENGTH(S8MA), - LCD_D18 | VE_3_3V | STRENGTH(S8MA), - LCD_D19 | VE_3_3V | STRENGTH(S8MA), - LCD_D20 | VE_3_3V | STRENGTH(S8MA), - LCD_D21 | VE_3_3V | STRENGTH(S8MA), - LCD_D22 | VE_3_3V | STRENGTH(S8MA), - LCD_D23 | VE_3_3V | STRENGTH(S8MA), - LCD_RESET_GPIO | VE_3_3V | GPIO_OUT | GPIO_VALUE(0), - /* backlight */ - PWM2_GPIO | VE_3_3V | STRENGTH(S4MA) | SE | VE, - - /* GPMI-NAND (blocks mmc1 for now) */ - GPMI_D0 | VE_3_3V, - GPMI_D1 | VE_3_3V, - GPMI_D2 | VE_3_3V, - GPMI_D3 | VE_3_3V, - GPMI_D4 | VE_3_3V, - GPMI_D5 | VE_3_3V, - GPMI_D6 | VE_3_3V, - GPMI_D7 | VE_3_3V, - GPMI_READY0 | VE_3_3V, /* external PU */ - GPMI_CE0N | VE_3_3V, /* external PU */ - GPMI_RDN | VE_3_3V, - GPMI_WRN | VE_3_3V, - GPMI_ALE | VE_3_3V, - GPMI_CLE | VE_3_3V, - GPMI_RESETN, /* act as WP, external PU */ - - /* SSP */ - SSP2_D0 | VE_3_3V | PULLUP(1) | STRENGTH(S8MA), /* MISO DO */ - SSP2_D3 | VE_3_3V | PULLUP(1) | STRENGTH(S8MA), /* SS0 !CS */ - SSP2_CMD | VE_3_3V | PULLUP(1) | STRENGTH(S8MA), /* MOSI DIO */ - SSP2_SCK | VE_3_3V | PULLUP(1) | STRENGTH(S8MA), /* CLK */ - - /* USB VBUS1 ENABLE - default to ON */ - AUART2_RX_GPIO | VE_3_3V | PULLUP(0) | GPIO_OUT | GPIO_VALUE(1), - /* USB VBUS0 ENABLE - default to OFF */ - AUART2_TX_GPIO | VE_3_3V | PULLUP(0) | GPIO_OUT | GPIO_VALUE(0), -}; - -static struct mxs_mci_platform_data mci_pdata = { - .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA, - .voltages = MMC_VDD_32_33 | MMC_VDD_33_34, /* fixed to 3.3 V */ - .f_min = 400 * 1000, - .f_max = 25000000, -}; - -/* fec */ -static void mx28_evk_get_ethaddr(void) -{ - u8 mac_ocotp[3], mac[6]; - int ret; - - ret = mxs_ocotp_read(mac_ocotp, 3, 0); - if (ret != 3) { - pr_err("Reading MAC from OCOTP failed!\n"); - return; - } - - mac[0] = 0x00; - mac[1] = 0x04; - mac[2] = 0x9f; - mac[3] = mac_ocotp[2]; - mac[4] = mac_ocotp[1]; - mac[5] = mac_ocotp[0]; - - eth_register_ethaddr(0, mac); -} - -static void __init mx28_evk_fec_reset(void) -{ - mdelay(1); - gpio_set_value(MX28EVK_FEC_PHY_RESET_GPIO, 1); -} - -/* PhyAD[0..2]=0, RMIISEL=1 */ -static struct fec_platform_data fec_info = { - .xcv_type = PHY_INTERFACE_MODE_RMII, - .phy_addr = 0, -}; - -/* LCD */ -static struct fb_videomode mx28_evk_vmodes[] = { - { - .name = "43WVF1G-0", - .refresh = 60, - .xres = 800, - .yres = 480, - .pixclock = 29851 /* (33,5 MHz) */, - .left_margin = 89, - .hsync_len = 10, - .right_margin = 164, - .upper_margin = 23, - .vsync_len = 10, - .lower_margin = 10, - .sync = FB_SYNC_DE_HIGH_ACT | FB_SYNC_CLK_INVERT, - .vmode = FB_VMODE_NONINTERLACED, - } -}; - -#define MAX_FB_SIZE SZ_2M - -#define GPIO_LCD_RESET 126 /* Reset */ -#define GPIO_BACKLIGHT 114 /* Backlight active */ - -static void mx28_evk_fb_enable(int enable) -{ - gpio_direction_output(GPIO_LCD_RESET, enable); - - /* Give the display a chance to sync before we enable - * the backlight to avoid flickering - */ - if (enable) - mdelay(200); - - gpio_direction_output(GPIO_BACKLIGHT, enable); -} - -static struct imx_fb_platformdata mx28_evk_fb_pdata = { - .mode_list = mx28_evk_vmodes, - .mode_cnt = ARRAY_SIZE(mx28_evk_vmodes), - .dotclk_delay = 0, /* no adaption required */ - .ld_intf_width = 24, - .bits_per_pixel = 32, - .fixed_screen = NULL, - .enable = mx28_evk_fb_enable, -}; - -static const struct spi_board_info mx28evk_spi_board_info[] = { - { - .name = "m25p80", - /* - * we leave this with the lower frequency - * as the ssp unit otherwise locks up - */ - .max_speed_hz = 32000000, - .bus_num = 2, - .chip_select = 0, - } -}; - -#ifdef CONFIG_USB_GADGET_DRIVER_ARC -static struct fsl_usb2_platform_data usb_pdata = { - .operating_mode = FSL_USB2_DR_DEVICE, - .phy_mode = FSL_USB2_PHY_UTMI, -}; -#endif -static int mx28_evk_devices_init(void) -{ - int i; - - /* initizalize muxing */ - for (i = 0; i < ARRAY_SIZE(mx28evk_pads); i++) - imx_gpio_mode(mx28evk_pads[i]); - - armlinux_set_architecture(MACH_TYPE_MX28EVK); - - add_generic_device("mxs_mci", 0, NULL, IMX_SSP0_BASE, 0x2000, - IORESOURCE_MEM, &mci_pdata); - - add_generic_device("stmfb", 0, NULL, IMX_FB_BASE, 0x2000, - IORESOURCE_MEM, &mx28_evk_fb_pdata); - - mx28_evk_get_ethaddr(); /* must be after registering ocotp */ - - mx28_evk_fec_reset(); - add_generic_device("imx28-fec", 0, NULL, IMX_FEC0_BASE, 0x4000, - IORESOURCE_MEM, &fec_info); - - imx28_add_nand(); - - spi_register_board_info(mx28evk_spi_board_info, - ARRAY_SIZE(mx28evk_spi_board_info)); - - add_generic_device("mxs_spi", 2, NULL, IMX_SSP2_BASE, 0x2000, - IORESOURCE_MEM, NULL); - -#ifdef CONFIG_USB_GADGET_DRIVER_ARC - imx28_usb_phy0_enable(); - imx28_usb_phy1_enable(); - add_generic_usb_ehci_device(DEVICE_ID_DYNAMIC, IMX_USB1_BASE, NULL); - add_generic_device("fsl-udc", DEVICE_ID_DYNAMIC, NULL, IMX_USB0_BASE, - 0x200, IORESOURCE_MEM, &usb_pdata); -#endif - - return 0; -} -device_initcall(mx28_evk_devices_init); - -static int mx28_evk_console_init(void) -{ - barebox_set_model("Freescale i.MX28 EVK"); - barebox_set_hostname("mx28evk"); - - add_generic_device("stm_serial", 0, NULL, IMX_DBGUART_BASE, 0x2000, - IORESOURCE_MEM, NULL); - - return 0; -} -console_initcall(mx28_evk_console_init); diff --git a/arch/arm/boards/guf-neso/board.c b/arch/arm/boards/guf-neso/board.c index e1cd9098e0..2a64bc14fc 100644 --- a/arch/arm/boards/guf-neso/board.c +++ b/arch/arm/boards/guf-neso/board.c @@ -266,7 +266,7 @@ static int neso_devices_init(void) /* initialize gpios */ for (i = 0; i < ARRAY_SIZE(mode); i++) - imx_gpio_mode(mode[i]); + imx27_gpio_mode(mode[i]); imx27_add_nand(&nand_info); imx27_add_fb(&neso_fb_data); diff --git a/arch/arm/boards/phytec-phycard-imx27/pca100.c b/arch/arm/boards/phytec-phycard-imx27/pca100.c index 60f1505ccb..7184a59c71 100644 --- a/arch/arm/boards/phytec-phycard-imx27/pca100.c +++ b/arch/arm/boards/phytec-phycard-imx27/pca100.c @@ -84,9 +84,9 @@ static void pca100_usb_init(void) writel(reg, MX27_USB_OTG_BASE_ADDR + 0x184); /* disable the usb phys */ - imx_gpio_mode((GPIO_PORTB | 23) | GPIO_GPIO | GPIO_IN); + imx27_gpio_mode((GPIO_PORTB | 23) | GPIO_GPIO | GPIO_IN); gpio_direction_output(GPIO_PORTB + 23, 1); - imx_gpio_mode((GPIO_PORTB | 24) | GPIO_GPIO | GPIO_IN); + imx27_gpio_mode((GPIO_PORTB | 24) | GPIO_GPIO | GPIO_IN); gpio_direction_output(GPIO_PORTB + 24, 1); } @@ -131,7 +131,7 @@ static int pca100_devices_init(void) /* initizalize gpios */ for (i = 0; i < ARRAY_SIZE(mode); i++) - imx_gpio_mode(mode[i]); + imx27_gpio_mode(mode[i]); pca100_usb_register(); diff --git a/arch/arm/boards/phytec-phycore-imx27/pcm038.c b/arch/arm/boards/phytec-phycore-imx27/pcm038.c index f1f808116c..5ebef516a7 100644 --- a/arch/arm/boards/phytec-phycore-imx27/pcm038.c +++ b/arch/arm/boards/phytec-phycore-imx27/pcm038.c @@ -112,12 +112,12 @@ static int pcm038_init(void) return 0; /* Apply delay for STP line to stop ULPI */ - imx_gpio_mode(PCM038_GPIO_OTG_STP | GPIO_GPIO); + imx27_gpio_mode(PCM038_GPIO_OTG_STP | GPIO_GPIO); gpio_direction_output(PCM038_GPIO_OTG_STP, 1); mdelay(1); for (i = 0; i < ARRAY_SIZE(pcm038_pins); i++) - imx_gpio_mode(pcm038_pins[i]); + imx27_gpio_mode(pcm038_pins[i]); imx27_add_fb(&pcm038_fb_data); diff --git a/arch/arm/boards/phytec-phycore-imx27/pcm970.c b/arch/arm/boards/phytec-phycore-imx27/pcm970.c index 13bb7c1cf5..b8faec0384 100644 --- a/arch/arm/boards/phytec-phycore-imx27/pcm970.c +++ b/arch/arm/boards/phytec-phycore-imx27/pcm970.c @@ -73,7 +73,7 @@ static int pcm970_init(void) uint32_t i; for (i = 0; i < ARRAY_SIZE(pcmcia_pins); i++) - imx_gpio_mode(pcmcia_pins[i] | GPIO_PUEN); + imx27_gpio_mode(pcmcia_pins[i] | GPIO_PUEN); /* Always set PCOE signal to low */ gpio_set_value(GPIO_IDE_PCOE, 0); 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 697ed4b401..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; - - imx_gpio_mode(PA23_PF_CS5); - imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 21); - imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 22); - imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 23); - imx_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 */ - imx_gpio_mode(PC11_PF_UART1_TXD); - imx_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); - |