diff options
Diffstat (limited to 'arch/arm/boards')
20 files changed, 421 insertions, 213 deletions
diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index e862db4dd9..6cb40d084b 100644 --- a/arch/arm/boards/Makefile +++ b/arch/arm/boards/Makefile @@ -36,6 +36,7 @@ obj-$(CONFIG_MACH_EDB9315A) += edb93xx/ obj-$(CONFIG_MACH_EDB9315) += edb93xx/ obj-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += efika-mx-smartbook/ obj-$(CONFIG_MACH_EMBEDSKY_E9) += embedsky-e9/ +obj-$(CONFIG_MACH_EMBEST_MARSBOARD) += embest-marsboard/ obj-$(CONFIG_MACH_EMBEST_RIOTBOARD) += embest-riotboard/ obj-$(CONFIG_MACH_EUKREA_CPUIMX25) += eukrea_cpuimx25/ obj-$(CONFIG_MACH_EUKREA_CPUIMX27) += eukrea_cpuimx27/ diff --git a/arch/arm/boards/embest-marsboard/Makefile b/arch/arm/boards/embest-marsboard/Makefile new file mode 100644 index 0000000000..ef5219444c --- /dev/null +++ b/arch/arm/boards/embest-marsboard/Makefile @@ -0,0 +1,3 @@ +obj-y += board.o +lwl-y += lowlevel.o +bbenv-y += defaultenv-mars diff --git a/arch/arm/boards/embest-marsboard/board.c b/arch/arm/boards/embest-marsboard/board.c new file mode 100644 index 0000000000..66893434c2 --- /dev/null +++ b/arch/arm/boards/embest-marsboard/board.c @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2013 Lucas Stach <l.stach@pengutronix.de> + * Copyright (C) 2014 Eric BĂ©nard <eric@eukrea.com> + * Copyright (C) 2019 Ahmad Fatoum <a.fatoum@pengutronix.de> + */ + +#include <common.h> +#include <init.h> +#include <envfs.h> +#include <mach/bbu.h> +#include <linux/phy.h> + +static int ar8035_phy_fixup(struct phy_device *dev) +{ + u16 val; + + /* Ar803x phy SmartEEE feature cause link status generates glitch, + * which cause ethernet link down/up issue, so disable SmartEEE + */ + phy_write(dev, 0xd, 0x3); + phy_write(dev, 0xe, 0x805d); + phy_write(dev, 0xd, 0x4003); + + val = phy_read(dev, 0xe); + phy_write(dev, 0xe, val & ~(1 << 8)); + + /* To enable AR8031 ouput a 125MHz clk from CLK_25M */ + phy_write(dev, 0xd, 0x7); + phy_write(dev, 0xe, 0x8016); + phy_write(dev, 0xd, 0x4007); + + val = phy_read(dev, 0xe); + val &= 0xffe3; + val |= 0x18; + phy_write(dev, 0xe, val); + + /* introduce tx clock delay */ + phy_write(dev, 0x1d, 0x5); + val = phy_read(dev, 0x1e); + val |= 0x0100; + phy_write(dev, 0x1e, val); + + return 0; +} + +static int marsboard_device_init(void) +{ + if (!of_machine_is_compatible("embest,imx6q-marsboard")) + return 0; + + barebox_set_hostname("marsboard"); + + phy_register_fixup_for_uid(0x004dd072, 0xffffffef, ar8035_phy_fixup); + + imx6_bbu_internal_spi_i2c_register_handler("spiflash", + "/dev/m25p0.barebox", BBU_HANDLER_FLAG_DEFAULT); + + defaultenv_append_directory(defaultenv_mars); + + return 0; +} +device_initcall(marsboard_device_init); diff --git a/arch/arm/boards/embest-marsboard/defaultenv-mars/init/fastboot b/arch/arm/boards/embest-marsboard/defaultenv-mars/init/fastboot new file mode 100644 index 0000000000..9c784fb73b --- /dev/null +++ b/arch/arm/boards/embest-marsboard/defaultenv-mars/init/fastboot @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ "$bootsource" != "serial" ]; then + exit 0 +fi + +usbgadget -a -A "" -b diff --git a/arch/arm/boards/embest-marsboard/flash-header-embest-marsboard.imxcfg b/arch/arm/boards/embest-marsboard/flash-header-embest-marsboard.imxcfg new file mode 100644 index 0000000000..bdaf60cb4a --- /dev/null +++ b/arch/arm/boards/embest-marsboard/flash-header-embest-marsboard.imxcfg @@ -0,0 +1,99 @@ +soc imx6 +loadaddr 0x20000000 +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 0x00022227 +wm 32 0x021b4818 0x00022227 +wm 32 0x021b083c 0x434b0350 +wm 32 0x021b0840 0x034c0359 +wm 32 0x021b483c 0x434b0350 +wm 32 0x021b4840 0x03650348 +wm 32 0x021b0848 0x4436383b +wm 32 0x021b4848 0x39393341 +wm 32 0x021b0850 0x35373933 +wm 32 0x021b4850 0x48254A36 +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 0x020c4068 0x00c03f3f +wm 32 0x020c406c 0x0030fc03 +wm 32 0x020c4070 0x0fffc000 +wm 32 0x020c4074 0x3ff00000 +wm 32 0x020c4078 0x00fff300 diff --git a/arch/arm/boards/embest-marsboard/lowlevel.c b/arch/arm/boards/embest-marsboard/lowlevel.c new file mode 100644 index 0000000000..9e20a2ec06 --- /dev/null +++ b/arch/arm/boards/embest-marsboard/lowlevel.c @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2019 Ahmad Fatoum - Pengutronix + */ + +#include <common.h> +#include <io.h> +#include <asm/barebox-arm.h> +#include <mach/imx6.h> +#include <mach/esdctl.h> +#include <mach/iomux-mx6.h> +#include <debug_ll.h> + +static inline void setup_uart(void) +{ + void __iomem *iomuxbase = IOMEM(MX6_IOMUXC_BASE_ADDR); + + imx6_ungate_all_peripherals(); + + imx_setup_pad(iomuxbase, MX6Q_PAD_EIM_D26__UART2_TXD); + + imx6_uart_setup_ll(); + + putc_ll('>'); +} + +extern char __dtb_z_imx6q_marsboard_start[]; + +ENTRY_FUNCTION(start_imx6q_marsboard, r0, r1, r2) +{ + void *fdt; + + imx6_cpu_lowlevel_init(); + + if (IS_ENABLED(CONFIG_DEBUG_LL)) + setup_uart(); + + fdt = __dtb_z_imx6q_marsboard_start + get_runtime_offset(); + + imx6q_barebox_entry(fdt); +} diff --git a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c index 25bf40ce79..76d6f5ba86 100644 --- a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c +++ b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c @@ -56,22 +56,18 @@ struct imx_nand_platform_data nand_info = { .hw_ecc = 1, }; -static struct imx_fb_videomode imxfb_mode = { - .mode = { - .name = "CMO-QVGA", - .refresh = 60, - .xres = 320, - .yres = 240, - .pixclock = KHZ2PICOS(6500), - .hsync_len = 30, - .left_margin = 38, - .right_margin = 20, - .vsync_len = 3, - .upper_margin = 15, - .lower_margin = 4, - }, - .pcr = 0xCAD08B80, - .bpp = 16, +static struct fb_videomode imxfb_mode = { + .name = "CMO-QVGA", + .refresh = 60, + .xres = 320, + .yres = 240, + .pixclock = KHZ2PICOS(6500), + .hsync_len = 30, + .left_margin = 38, + .right_margin = 20, + .vsync_len = 3, + .upper_margin = 15, + .lower_margin = 4, }; static struct imx_fb_platform_data eukrea_cpuimx25_fb_data = { @@ -80,6 +76,8 @@ static struct imx_fb_platform_data eukrea_cpuimx25_fb_data = { .pwmr = 0x00A903FF, .lscr1 = 0x00120300, .dmacr = 0x80040060, + .pcr = 0xCAD08B80, + .bpp = 16, }; struct gpio_led led0 = { diff --git a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c index 63034e2755..52971ed7ee 100644 --- a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c +++ b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c @@ -80,22 +80,19 @@ static struct i2c_board_info i2c_devices[] = { }; #ifdef CONFIG_DRIVER_VIDEO_IMX -static struct imx_fb_videomode imxfb_mode = { - .mode = { - .name = "CMO-QVGA", - .refresh = 60, - .xres = 320, - .yres = 240, - .pixclock = 156000, - .hsync_len = 30, - .left_margin = 38, - .right_margin = 20, - .vsync_len = 3, - .upper_margin = 15, - .lower_margin = 4, - }, - .pcr = 0xFAD08B80, - .bpp = 16,}; +static struct fb_videomode imxfb_mode = { + .name = "CMO-QVGA", + .refresh = 60, + .xres = 320, + .yres = 240, + .pixclock = 156000, + .hsync_len = 30, + .left_margin = 38, + .right_margin = 20, + .vsync_len = 3, + .upper_margin = 15, + .lower_margin = 4, +}; static struct imx_fb_platform_data eukrea_cpuimx27_fb_data = { .mode = &imxfb_mode, @@ -103,6 +100,8 @@ static struct imx_fb_platform_data eukrea_cpuimx27_fb_data = { .pwmr = 0x00A903FF, .lscr1 = 0x00120300, .dmacr = 0x00020010, + .pcr = 0xFAD08B80, + .bpp = 16, }; #endif diff --git a/arch/arm/boards/freescale-mx21-ads/imx21ads.c b/arch/arm/boards/freescale-mx21-ads/imx21ads.c index aa654da494..2c54cd7030 100644 --- a/arch/arm/boards/freescale-mx21-ads/imx21ads.c +++ b/arch/arm/boards/freescale-mx21-ads/imx21ads.c @@ -47,24 +47,20 @@ struct imx_nand_platform_data nand_info = { }; /* Sharp LQ035Q7DB02 QVGA display */ -static struct imx_fb_videomode imx_fb_modedata = { - .mode = { - .name = "Sharp-LQ035Q7", - .refresh = 60, - .xres = 240, - .yres = 320, - .pixclock = 188679, - .left_margin = 6, - .right_margin = 16, - .upper_margin = 8, - .lower_margin = 10, - .hsync_len = 2, - .vsync_len = 1, - .sync = 0, - .vmode = FB_VMODE_NONINTERLACED, - }, - .pcr = 0xfb108bc7, - .bpp = 16, +static struct fb_videomode imx_fb_modedata = { + .name = "Sharp-LQ035Q7", + .refresh = 60, + .xres = 240, + .yres = 320, + .pixclock = 188679, + .left_margin = 6, + .right_margin = 16, + .upper_margin = 8, + .lower_margin = 10, + .hsync_len = 2, + .vsync_len = 1, + .sync = 0, + .vmode = FB_VMODE_NONINTERLACED, }; static struct imx_fb_platform_data imx_fb_data = { @@ -76,6 +72,8 @@ static struct imx_fb_platform_data imx_fb_data = { .pwmr = 0x00a903ff, .lscr1 = 0x00120300, .dmacr = 0x00020008, + .pcr = 0xfb108bc7, + .bpp = 16, }; static int imx21ads_timing_init(void) diff --git a/arch/arm/boards/guf-neso/board.c b/arch/arm/boards/guf-neso/board.c index 2a64bc14fc..6846ba5793 100644 --- a/arch/arm/boards/guf-neso/board.c +++ b/arch/arm/boards/guf-neso/board.c @@ -62,36 +62,18 @@ static struct imx_nand_platform_data nand_info = { .flash_bbt = 1, }; -static struct imx_fb_videomode imxfb_mode = { - .mode = { - .name = "CPT CLAA070LC0JCT", - .refresh = 60, - .xres = 800, - .yres = 480, - .pixclock = KHZ2PICOS(27000), - .hsync_len = 1, /* DE only sync */ - .left_margin = 50, - .right_margin = 50, - .vsync_len = 1, /* DE only sync */ - .upper_margin = 10, - .lower_margin = 10, - }, - /* - * - TFT style panel - * - clk enabled while idle - * - clock inverted - * - data not inverted - * - data enable high active - */ - .pcr = PCR_TFT | - PCR_COLOR | - PCR_PBSIZ_8 | - PCR_BPIX_16 | - PCR_CLKPOL | - PCR_SCLK_SEL | - PCR_LPPOL | - PCR_FLMPOL, - .bpp = 16, /* TODO 32 bit does not work: The 'green' component is lacking in this mode */ +static struct fb_videomode imxfb_mode = { + .name = "CPT CLAA070LC0JCT", + .refresh = 60, + .xres = 800, + .yres = 480, + .pixclock = KHZ2PICOS(27000), + .hsync_len = 1, /* DE only sync */ + .left_margin = 50, + .right_margin = 50, + .vsync_len = 1, /* DE only sync */ + .upper_margin = 10, + .lower_margin = 10, }; static void neso_fb_enable(int enable) @@ -109,6 +91,22 @@ static struct imx_fb_platform_data neso_fb_data = { .dmacr = (0 << 31) | (4 << 16) | 96, .enable = neso_fb_enable, .framebuffer_ovl = (void *)0xa7f00000, + /* + * - TFT style panel + * - clk enabled while idle + * - clock inverted + * - data not inverted + * - data enable high active + */ + .pcr = PCR_TFT | + PCR_COLOR | + PCR_PBSIZ_8 | + PCR_BPIX_16 | + PCR_CLKPOL | + PCR_SCLK_SEL | + PCR_LPPOL | + PCR_FLMPOL, + .bpp = 16, /* TODO 32 bit does not work: The 'green' component is lacking in this mode */ }; #if defined(CONFIG_USB) && defined(CONFIG_USB_ULPI) diff --git a/arch/arm/boards/karo-tx25/board.c b/arch/arm/boards/karo-tx25/board.c index ebebd58d80..a4d4af57a3 100644 --- a/arch/arm/boards/karo-tx25/board.c +++ b/arch/arm/boards/karo-tx25/board.c @@ -125,24 +125,20 @@ static iomux_v3_cfg_t tx25_lcdc_gpios[] = { MX25_PAD_OE_ACD__OE_ACD, }; -static struct imx_fb_videomode stk5_fb_mode = { - .bpp = 16, - .mode = { - .name = "G-ETV570G0DMU", - .pixclock = 33333, - - .xres = 640, - .yres = 480, - - .hsync_len = 64, - .left_margin = 96, - .right_margin = 80, - - .vsync_len = 3, - .upper_margin = 46, - .lower_margin = 39, - }, - .pcr = PCR_TFT | PCR_COLOR | PCR_FLMPOL | PCR_LPPOL | PCR_SCLK_SEL, +static struct fb_videomode stk5_fb_mode = { + .name = "G-ETV570G0DMU", + .pixclock = 33333, + + .xres = 640, + .yres = 480, + + .hsync_len = 64, + .left_margin = 96, + .right_margin = 80, + + .vsync_len = 3, + .upper_margin = 46, + .lower_margin = 39, }; #define STK5_LCD_BACKLIGHT_GPIO IMX_GPIO_NR(1, 26) @@ -168,6 +164,8 @@ static struct imx_fb_platform_data tx25_fb_data = { .num_modes = 1, .dmacr = 0x80040060, .enable = tx25_fb_enable, + .bpp = 16, + .pcr = PCR_TFT | PCR_COLOR | PCR_FLMPOL | PCR_LPPOL | PCR_SCLK_SEL, }; static int tx25_init_fb(void) diff --git a/arch/arm/boards/phytec-phycore-imx27/pcm038.c b/arch/arm/boards/phytec-phycore-imx27/pcm038.c index 5ebef516a7..008346faf1 100644 --- a/arch/arm/boards/phytec-phycore-imx27/pcm038.c +++ b/arch/arm/boards/phytec-phycore-imx27/pcm038.c @@ -34,20 +34,26 @@ #define PCM038_GPIO_OTG_STP (GPIO_PORTE + 1) -static struct imx_fb_videomode imxfb_mode = { - .mode = { - .name = "Sharp-LQ035Q7", - .refresh = 60, - .xres = 240, - .yres = 320, - .pixclock = 188679, /* in ps (5.3MHz) */ - .hsync_len = 7, - .left_margin = 5, - .right_margin = 16, - .vsync_len = 1, - .upper_margin = 7, - .lower_margin = 9, - }, +static struct fb_videomode imxfb_mode = { + .name = "Sharp-LQ035Q7", + .refresh = 60, + .xres = 240, + .yres = 320, + .pixclock = 188679, /* in ps (5.3MHz) */ + .hsync_len = 7, + .left_margin = 5, + .right_margin = 16, + .vsync_len = 1, + .upper_margin = 7, + .lower_margin = 9, +}; + +static struct imx_fb_platform_data pcm038_fb_data = { + .mode = &imxfb_mode, + .num_modes = 1, + .pwmr = 0x00a903ff, + .lscr1 = 0x00120300, + .dmacr = 0x00020010, /* * - HSYNC active high * - VSYNC active high @@ -57,16 +63,8 @@ static struct imx_fb_videomode imxfb_mode = { * - data enable low active * - enable sharp mode */ - .pcr = 0xf00080c0, - .bpp = 16, -}; - -static struct imx_fb_platform_data pcm038_fb_data = { - .mode = &imxfb_mode, - .num_modes = 1, - .pwmr = 0x00a903ff, - .lscr1 = 0x00120300, - .dmacr = 0x00020010, + .pcr = 0xf00080c0, + .bpp = 16, }; static const unsigned int pcm038_pins[] = { diff --git a/arch/arm/boards/phytec-som-imx6/board.c b/arch/arm/boards/phytec-som-imx6/board.c index 730115702b..27a1ad4f66 100644 --- a/arch/arm/boards/phytec-som-imx6/board.c +++ b/arch/arm/boards/phytec-som-imx6/board.c @@ -115,12 +115,16 @@ static int ksz8081_phy_fixup(struct phy_device *phydev) static int phycore_da9062_setup_buck_mode(void) { struct i2c_adapter *adapter = NULL; + struct device_node *pmic_np = NULL; struct i2c_client client; unsigned char value; - int bus = 0; int ret; - adapter = i2c_get_adapter(bus); + pmic_np = of_find_node_by_name(NULL, "pmic@58"); + if (!pmic_np) + return -ENODEV; + + adapter = of_find_i2c_adapter_by_node(pmic_np->parent); if (!adapter) return -ENODEV; diff --git a/arch/arm/boards/zii-common/board.c b/arch/arm/boards/zii-common/board.c index 20ec64d2d4..9a9564e6d1 100644 --- a/arch/arm/boards/zii-common/board.c +++ b/arch/arm/boards/zii-common/board.c @@ -16,6 +16,64 @@ #include <globalvar.h> #include <init.h> #include <fs.h> +#include <net.h> +#include <linux/nvmem-consumer.h> + +static int rdu_eth_register_ethaddr(struct device_node *np) +{ + u8 mac[ETH_ALEN]; + u8 *data; + int i; + + data = nvmem_cell_get_and_read(np, "mac-address", ETH_ALEN); + if (IS_ERR(data)) + return PTR_ERR(data); + /* + * EEPROM stores MAC address in reverse (to what we expect it + * to be) byte order. + */ + for (i = 0; i < ETH_ALEN; i++) + mac[i] = data[ETH_ALEN - i - 1]; + + free(data); + + of_eth_register_ethaddr(np, mac); + + return 0; +} + +static int rdu_ethernet_init(void) +{ + static const char * const aliases[] = { "ethernet0", "ethernet1" }; + struct device_node *np, *root; + int i, ret; + + if (!of_machine_is_compatible("zii,imx6q-zii-rdu2") && + !of_machine_is_compatible("zii,imx6qp-zii-rdu2") && + !of_machine_is_compatible("zii,imx8mq-ultra")) + return 0; + + root = of_get_root_node(); + + for (i = 0; i < ARRAY_SIZE(aliases); i++) { + const char *alias = aliases[i]; + + np = of_find_node_by_alias(root, alias); + if (!np) { + pr_warn("Failed to find %s\n", alias); + continue; + } + + ret = rdu_eth_register_ethaddr(np); + if (ret) { + pr_warn("Failed to register MAC for %s\n", alias); + continue; + } + } + + return 0; +} +late_initcall(rdu_ethernet_init); static int rdu_networkconfig(void) { diff --git a/arch/arm/boards/zii-imx51-rdu1/lowlevel.c b/arch/arm/boards/zii-imx51-rdu1/lowlevel.c index da05b0564c..c7bb044e0d 100644 --- a/arch/arm/boards/zii-imx51-rdu1/lowlevel.c +++ b/arch/arm/boards/zii-imx51-rdu1/lowlevel.c @@ -68,9 +68,9 @@ static unsigned int get_system_type(void) return FIELD_GET(SYSTEM_TYPE, dr); } -extern char __dtb_imx51_zii_rdu1_start[]; -extern char __dtb_imx51_zii_scu2_mezz_start[]; -extern char __dtb_imx51_zii_scu3_esb_start[]; +extern char __dtb_z_imx51_zii_rdu1_start[]; +extern char __dtb_z_imx51_zii_scu2_mezz_start[]; +extern char __dtb_z_imx51_zii_scu3_esb_start[]; ENTRY_FUNCTION(start_imx51_zii_rdu1, r0, r1, r2) { @@ -96,13 +96,13 @@ ENTRY_FUNCTION(start_imx51_zii_rdu1, r0, r1, r2) /* FALLTHROUGH */ case ZII_PLATFORM_IMX51_RDU_REV_B: case ZII_PLATFORM_IMX51_RDU_REV_C: - fdt = __dtb_imx51_zii_rdu1_start; + fdt = __dtb_z_imx51_zii_rdu1_start; break; case ZII_PLATFORM_IMX51_SCU2_MEZZ: - fdt = __dtb_imx51_zii_scu2_mezz_start; + fdt = __dtb_z_imx51_zii_scu2_mezz_start; break; case ZII_PLATFORM_IMX51_SCU3_ESB: - fdt = __dtb_imx51_zii_scu3_esb_start; + fdt = __dtb_z_imx51_zii_scu3_esb_start; break; } diff --git a/arch/arm/boards/zii-imx6q-rdu2/board.c b/arch/arm/boards/zii-imx6q-rdu2/board.c index 6adb0b1c6f..63367a419a 100644 --- a/arch/arm/boards/zii-imx6q-rdu2/board.c +++ b/arch/arm/boards/zii-imx6q-rdu2/board.c @@ -159,61 +159,6 @@ static int rdu2_devices_init(void) } device_initcall(rdu2_devices_init); -static int rdu2_eth_register_ethaddr(struct device_node *np) -{ - u8 mac[ETH_ALEN]; - u8 *data; - int i; - - data = nvmem_cell_get_and_read(np, "mac-address", ETH_ALEN); - if (IS_ERR(data)) - return PTR_ERR(data); - /* - * EEPROM stores MAC address in reverse (to what we expect it - * to be) byte order. - */ - for (i = 0; i < ETH_ALEN; i++) - mac[i] = data[ETH_ALEN - i - 1]; - - free(data); - - of_eth_register_ethaddr(np, mac); - - return 0; -} - -static int rdu2_ethernet_init(void) -{ - const char *aliases[] = { "ethernet0", "ethernet1" }; - struct device_node *np, *root; - int i, ret; - - if (!of_machine_is_compatible("zii,imx6q-zii-rdu2") && - !of_machine_is_compatible("zii,imx6qp-zii-rdu2")) - return 0; - - root = of_get_root_node(); - - for (i = 0; i < ARRAY_SIZE(aliases); i++) { - const char *alias = aliases[i]; - - np = of_find_node_by_alias(root, alias); - if (!np) { - pr_warn("Failed to find %s\n", alias); - continue; - } - - ret = rdu2_eth_register_ethaddr(np); - if (ret) { - pr_warn("Failed to register MAC for %s\n", alias); - continue; - } - } - - return 0; -} -late_initcall(rdu2_ethernet_init); - static int rdu2_fixup_egalax_ts(struct device_node *root, void *context) { struct device_node *np; diff --git a/arch/arm/boards/zii-imx6q-rdu2/lowlevel.c b/arch/arm/boards/zii-imx6q-rdu2/lowlevel.c index 3f5d90b61d..87e634509f 100644 --- a/arch/arm/boards/zii-imx6q-rdu2/lowlevel.c +++ b/arch/arm/boards/zii-imx6q-rdu2/lowlevel.c @@ -263,8 +263,8 @@ static inline void setup_uart(void) putc_ll('>'); } -extern char __dtb_imx6q_zii_rdu2_start[]; -extern char __dtb_imx6qp_zii_rdu2_start[]; +extern char __dtb_z_imx6q_zii_rdu2_start[]; +extern char __dtb_z_imx6qp_zii_rdu2_start[]; static noinline void rdu2_sram_setup(void) { @@ -304,9 +304,9 @@ ENTRY_FUNCTION(start_imx6_zii_rdu2, r0, r1, r2) rdu2_sram_setup(); if (__imx6_cpu_type() == IMX6_CPUTYPE_IMX6QP) - imx6q_barebox_entry(__dtb_imx6qp_zii_rdu2_start + + imx6q_barebox_entry(__dtb_z_imx6qp_zii_rdu2_start + get_runtime_offset()); else - imx6q_barebox_entry(__dtb_imx6q_zii_rdu2_start + + imx6q_barebox_entry(__dtb_z_imx6q_zii_rdu2_start + get_runtime_offset()); } diff --git a/arch/arm/boards/zii-imx7d-dev/lowlevel.c b/arch/arm/boards/zii-imx7d-dev/lowlevel.c index 3ad4940da8..3bacfd0c7d 100644 --- a/arch/arm/boards/zii-imx7d-dev/lowlevel.c +++ b/arch/arm/boards/zii-imx7d-dev/lowlevel.c @@ -18,8 +18,8 @@ #include <asm/cache.h> #include <mach/esdctl.h> -extern char __dtb_imx7d_zii_rpu2_start[]; -extern char __dtb_imx7d_zii_rmu2_start[]; +extern char __dtb_z_imx7d_zii_rpu2_start[]; +extern char __dtb_z_imx7d_zii_rmu2_start[]; static inline void setup_uart(void) { @@ -97,10 +97,10 @@ ENTRY_FUNCTION(start_zii_imx7d_dev, r0, r1, r2) } /* FALLTHROUGH */ case ZII_PLATFORM_IMX7D_RPU2: - fdt = __dtb_imx7d_zii_rpu2_start; + fdt = __dtb_z_imx7d_zii_rpu2_start; break; case ZII_PLATFORM_IMX7D_RMU2: - fdt = __dtb_imx7d_zii_rmu2_start; + fdt = __dtb_z_imx7d_zii_rmu2_start; break; } diff --git a/arch/arm/boards/zii-imx8mq-dev/lowlevel.c b/arch/arm/boards/zii-imx8mq-dev/lowlevel.c index 7eb8b684d2..795c98cb66 100644 --- a/arch/arm/boards/zii-imx8mq-dev/lowlevel.c +++ b/arch/arm/boards/zii-imx8mq-dev/lowlevel.c @@ -117,8 +117,8 @@ static unsigned int get_system_type(void) return FIELD_GET(SYSTEM_TYPE, dr); } -extern char __dtb_imx8mq_zii_ultra_rmb3_start[]; -extern char __dtb_imx8mq_zii_ultra_zest_start[]; +extern char __dtb_z_imx8mq_zii_ultra_rmb3_start[]; +extern char __dtb_z_imx8mq_zii_ultra_zest_start[]; static __noreturn noinline void zii_imx8mq_dev_start(void) { @@ -155,8 +155,6 @@ static __noreturn noinline void zii_imx8mq_dev_start(void) switch (system_type) { default: if (IS_ENABLED(CONFIG_DEBUG_LL)) { - relocate_to_current_adr(); - setup_c(); puts_ll("\n*********************************\n"); puts_ll("* Unknown system type: "); puthex_ll(system_type); @@ -165,10 +163,10 @@ static __noreturn noinline void zii_imx8mq_dev_start(void) } /* FALLTHROUGH */ case ZII_PLATFORM_IMX8MQ_ULTRA_RMB3: - fdt = __dtb_imx8mq_zii_ultra_rmb3_start; + fdt = __dtb_z_imx8mq_zii_ultra_rmb3_start; break; case ZII_PLATFORM_IMX8MQ_ULTRA_ZEST: - fdt = __dtb_imx8mq_zii_ultra_zest_start; + fdt = __dtb_z_imx8mq_zii_ultra_zest_start; break; } diff --git a/arch/arm/boards/zii-vf610-dev/lowlevel.c b/arch/arm/boards/zii-vf610-dev/lowlevel.c index b320fbc0cf..9b57581d1b 100644 --- a/arch/arm/boards/zii-vf610-dev/lowlevel.c +++ b/arch/arm/boards/zii-vf610-dev/lowlevel.c @@ -75,13 +75,13 @@ static unsigned int get_system_type(void) return pdir; } -extern char __dtb_vf610_zii_dev_rev_b_start[]; -extern char __dtb_vf610_zii_dev_rev_c_start[]; -extern char __dtb_vf610_zii_cfu1_start[]; -extern char __dtb_vf610_zii_ssmb_spu3_start[]; -extern char __dtb_vf610_zii_scu4_aib_start[]; -extern char __dtb_vf610_zii_ssmb_dtu_start[]; -extern char __dtb_vf610_zii_spb4_start[]; +extern char __dtb_z_vf610_zii_dev_rev_b_start[]; +extern char __dtb_z_vf610_zii_dev_rev_c_start[]; +extern char __dtb_z_vf610_zii_cfu1_start[]; +extern char __dtb_z_vf610_zii_ssmb_spu3_start[]; +extern char __dtb_z_vf610_zii_scu4_aib_start[]; +extern char __dtb_z_vf610_zii_ssmb_dtu_start[]; +extern char __dtb_z_vf610_zii_spb4_start[]; ENTRY_FUNCTION(start_zii_vf610_dev, r0, r1, r2) { @@ -105,25 +105,25 @@ ENTRY_FUNCTION(start_zii_vf610_dev, r0, r1, r2) puts_ll("*********************************\n"); } case ZII_PLATFORM_VF610_DEV_REV_B: /* FALLTHROUGH */ - fdt = __dtb_vf610_zii_dev_rev_b_start; + fdt = __dtb_z_vf610_zii_dev_rev_b_start; break; case ZII_PLATFORM_VF610_SCU4_AIB: - fdt = __dtb_vf610_zii_scu4_aib_start; + fdt = __dtb_z_vf610_zii_scu4_aib_start; break; case ZII_PLATFORM_VF610_DEV_REV_C: - fdt = __dtb_vf610_zii_dev_rev_c_start; + fdt = __dtb_z_vf610_zii_dev_rev_c_start; break; case ZII_PLATFORM_VF610_CFU1: - fdt = __dtb_vf610_zii_cfu1_start; + fdt = __dtb_z_vf610_zii_cfu1_start; break; case ZII_PLATFORM_VF610_SSMB_SPU3: - fdt = __dtb_vf610_zii_ssmb_spu3_start; + fdt = __dtb_z_vf610_zii_ssmb_spu3_start; break; case ZII_PLATFORM_VF610_SPB4: - fdt = __dtb_vf610_zii_spb4_start; + fdt = __dtb_z_vf610_zii_spb4_start; break; case ZII_PLATFORM_VF610_SSMB_DTU: - fdt = __dtb_vf610_zii_ssmb_dtu_start; + fdt = __dtb_z_vf610_zii_ssmb_dtu_start; break; } |