On Sunday, December 13, 2015 at 12:09:58 PM, Michael Heimpold wrote: Commit message describing the board would be real nice.
> Signed-off-by: Michael Heimpold <m...@heimpold.de> > --- > > Please note, that this board setup files need the function > mxs_power_switch_dcdc_clocksource() as introduced in my patch > "ARM: mxs: allow boards to select DC-DC switching clock source" [...] > diff --git a/arch/arm/include/asm/mach-types.h > b/arch/arm/include/asm/mach-types.h index d51be0b..1f0ffaa 100644 > --- a/arch/arm/include/asm/mach-types.h > +++ b/arch/arm/include/asm/mach-types.h > @@ -1107,6 +1107,7 @@ extern unsigned int __machine_arch_type; > #define MACH_TYPE_COLIBRI_T30 4493 > #define MACH_TYPE_APALIS_T30 4513 > #define MACH_TYPE_OMAPL138_LCDK 2495 > +#define MACH_TYPE_DUCKBILL 4754 This board is still using mach id to boot kernel ? Wow ... > #ifdef CONFIG_ARCH_EBSA110 > # ifdef machine_arch_type > @@ -14188,6 +14189,18 @@ extern unsigned int __machine_arch_type; > # define machine_is_apalis_t30() (0) > #endif [...] > +int board_init(void) > +{ > + /* Adress of boot parameters */ > + gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; > + > + return 0; > +} > + > +#ifdef CONFIG_CMD_MMC #ifdef[SPACE] please, not [TAB] > +int board_mmc_init(bd_t *bis) > +{ > + return mxsmmc_initialize(bis, 0, NULL, NULL); > +} > +#endif > + > +#ifdef CONFIG_CMD_NET DTTO [...] > +void mx28_adjust_mac(int dev_id, unsigned char *mac) > +{ > + mac[0] = 0x00; > + mac[1] = 0x01; > + mac[2] = 0x87; > +} > +#endif > + > +#ifdef CONFIG_OF_BOARD_SETUP > +int ft_board_setup(void *blob, bd_t *bd) > +{ > + uint8_t enetaddr[6]; > + u32 mac = 0; > + > + enetaddr[0] = 0x00; > + enetaddr[1] = 0x01; > + enetaddr[2] = 0x87; Looks like there are two copies of the same OUI ? > +#ifdef CONFIG_MXS_OCOTP > + /* only Duckbill SPI has a MAC for the QCA7k */ > + fuse_read(0, 1, &mac); > +#endif > + > + if (mac != 0) { > + enetaddr[3] = (mac >> 16) & 0xff; > + enetaddr[4] = (mac >> 8) & 0xff; > + enetaddr[5] = mac & 0xff; > + > + fdt_find_and_setprop(blob, > + > "/apb@80000000/apbh@80000000/ssp@80014000/ethernet@0", + > > "local-mac-address", enetaddr, 6, 1); You can use aliases {} to locate the ethernet node here. > + } > + > + return 0; > +} > +#endif > + > +#ifdef CONFIG_REVISION_TAG > +u32 get_board_rev(void) > +{ > + return system_rev; > +} > +#endif > + > +#ifdef CONFIG_SERIAL_TAG > +void get_board_serial(struct tag_serialnr *serialnr) > +{ > + serialnr->low = serialno; > + serialnr->high = 0; > +} > +#endif > + > +int misc_init_r(void) > +{ > + unsigned int led_red_gpio; > + char *s; > + > + /* Board revision detection */ > + gpio_direction_input(MX28_PAD_LCD_D17__GPIO_1_17); > + > + /* MX28_PAD_LCD_D17__GPIO_1_17: v1 = pull-down, v2 = pull-up */ > + system_rev = > + gpio_get_value(MX28_PAD_LCD_D17__GPIO_1_17); Does gpio_get_value() always return 0/1 value ? I don't think so. > + system_rev += 1; > + > + /* enable red LED to indicate a running bootloader */ > + if (system_rev == 1) > + led_red_gpio = MX28_PAD_AUART1_RX__GPIO_3_4; > + else > + led_red_gpio = MX28_PAD_SAIF0_LRCLK__GPIO_3_21; > + gpio_direction_output(led_red_gpio, 1); > + > + if (system_rev == 1) > + puts("Board: I2SE Duckbill\n"); > + else > + puts("Board: I2SE Duckbill 2\n"); > + > + serialno = getenv_ulong("serial#", 10, 0); > + s = getenv("serial#"); > + if (s && s[0]) { > + puts("Serial: "); > + puts(s); > + putc('\n'); > + } > + > + return 0; > +} [...] > diff --git a/include/configs/duckbill.h b/include/configs/duckbill.h > new file mode 100644 > index 0000000..fa70f29 > --- /dev/null > +++ b/include/configs/duckbill.h > @@ -0,0 +1,216 @@ > +/* > + * Copyright (C) 2014-2015 Michael Heimpold <m...@heimpold.de> > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > +#ifndef __CONFIGS_DUCKBILL_H__ > +#define __CONFIGS_DUCKBILL_H__ > + > +/* System configurations */ > +#define CONFIG_MX28 /* i.MX28 SoC */ > +#define CONFIG_MACH_TYPE MACH_TYPE_DUCKBILL > + > +#define CONFIG_MISC_INIT_R > + > +#define CONFIG_SYS_MXS_VDD5V_ONLY > + > +/* U-Boot Commands */ > +#define CONFIG_SYS_NO_FLASH > +#define CONFIG_DISPLAY_CPUINFO > +#define CONFIG_DOS_PARTITION > + > +#define CONFIG_CMD_BOOTZ > +#define CONFIG_CMD_CACHE > +#define CONFIG_CMD_DHCP > +#define CONFIG_CMD_EXT4 > +#define CONFIG_CMD_EXT4_WRITE > +#define CONFIG_CMD_FAT > +#define CONFIG_CMD_FUSE > +#define CONFIG_CMD_GPIO > +#define CONFIG_CMD_I2C > +#define CONFIG_CMD_MII > +#define CONFIG_CMD_MMC > +#define CONFIG_CMD_SPI > +#define CONFIG_CMD_UNZIP > + > +/* Memory configuration */ > +#define CONFIG_NR_DRAM_BANKS 1 /* 1 bank of DRAM */ > +#define PHYS_SDRAM_1 0x40000000 /* Base address */ > +#define PHYS_SDRAM_1_SIZE 0x40000000 /* Max 1 GB RAM */ > +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 > + > +/* Environment is in MMC */ > +#define CONFIG_ENV_OVERWRITE > +#define CONFIG_ENV_IS_IN_MMC 1 > +#define CONFIG_ENV_SIZE (128 * 1024) > +#define CONFIG_ENV_OFFSET (128 * 1024) > +#define CONFIG_ENV_OFFSET_REDUND (256 * 1024) > +#define CONFIG_SYS_MMC_ENV_DEV 0 > +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT > + > +/* FEC Ethernet on SoC */ > +#ifdef CONFIG_CMD_NET > +#define CONFIG_FEC_MXC > +#define CONFIG_NET_MULTI > +#define CONFIG_MX28_FEC_MAC_IN_OCOTP > +#define CONFIG_FEC_MXC_PHYADDR 1 > +#define IMX_FEC_BASE MXS_ENET0_BASE This IMX_FEC_BASE is definitelly unused on MXS. > +#endif > + > +#define CONFIG_IPADDR 192.168.1.10 > +#define CONFIG_SERVERIP 192.168.1.1 > +#define CONFIG_NETMASK 255.255.255.0 > +#define CONFIG_GATEWAYIP 192.168.1.254 Definitelly remove these, you should never ever hard-code these settings into U-Boot. > +/* BOOTP options */ > +#define CONFIG_BOOTP_SUBNETMASK > +#define CONFIG_BOOTP_GATEWAY > +#define CONFIG_BOOTP_HOSTNAME DTTO > +/* SPI */ > +#ifdef CONFIG_CMD_SPI > +#define CONFIG_DEFAULT_SPI_BUS 2 Add default CS please > +#define CONFIG_DEFAULT_SPI_MODE SPI_MODE_0 > +#endif > + > +/* Boot Linux */ > +#define CONFIG_BOOTDELAY 1 > +#define CONFIG_BOOTFILE "zImage" Why don't you switch to fitImage ? > +#define CONFIG_LOADADDR 0x42000000 > +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR > +#define CONFIG_REVISION_TAG > +#define CONFIG_SERIAL_TAG > +#define CONFIG_OF_BOARD_SETUP > +#define CONFIG_BOOT_RETRY_TIME 120 /* retry autoboot after 120 seconds */ > +#define CONFIG_BOOT_RETRY_TIME_MIN 1 /* can go down to 1 second */ > +#define CONFIG_AUTOBOOT_KEYED > +#define CONFIG_AUTOBOOT_PROMPT "Autobooting in %d seconds, " \ > + "press <c> to stop\n" > +#define CONFIG_AUTOBOOT_DELAY_STR "\x63" /* allows retry after retry time How does this work ? > */ +#define CONFIG_AUTOBOOT_STOP_STR " " /* stop autoboot with <Space> */ > +#define CONFIG_RESET_TO_RETRY /* reset board to retry booting */ + > [...] _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot