[U-Boot] [PATCH] arm: mx6: tqma6: Add WRU-IV baseboard for the TQMa6 SoM

Stefan Roese sr at denx.de
Mon Jun 15 17:21:33 CEST 2015


Hi Markus,

On 15.06.2015 15:29, Markus Niebel wrote:

<snip>

>> +int board_eth_init(bd_t *bis)
>> +{
>> +	uint32_t base = IMX_FEC_BASE;
>> +	struct mii_dev *bus = NULL;
>> +	struct phy_device *phydev = NULL;
>> +	int ret;
>> +
>> +	bus = fec_get_miibus(base, -1);
>> +	if (!bus) {
>> +		puts("MII bus not found\n");
>> +		return 0;
>> +	}
>> +
>> +	/* scan phy */
>> +	phydev = phy_find_by_mask(bus, (0xf << CONFIG_FEC_MXC_PHYADDR),
>> +				  PHY_INTERFACE_MODE_RMII);
>> +	if (!phydev) {
>> +		free(bus);
>> +		puts("No phy found\n");
>> +		return 0;
>> +	}
>> +
>> +	ret  = fec_probe(bis, -1, base, bus, phydev);
>> +	if (ret) {
>> +		puts("FEC MXC: probe failed\n");
>> +		free(phydev);
>> +		free(bus);
>> +	}
>> +
>> +	return 0;
>> +}
> This was implemented in the original starter kit code to implement
> the phy specific setup in board_phy_config. Your phy should not need
> this.

Right, thanks. I'll change this in v2.

>> +
>> +/* GPIO */
>> +#define GPIO_PAD_CTRL (				\
>> +		PAD_CTL_HYS |			\
>> +		PAD_CTL_PUS_100K_UP |		\
>> +		PAD_CTL_PUE |			\
>> +		PAD_CTL_SPEED_MED |		\
>> +		PAD_CTL_DSE_40ohm |		\
>> +		PAD_CTL_SRE_SLOW		\
>> +		)
>> +
>> +#define GPIO_OD_PAD_CTRL (			\
>> +		PAD_CTL_HYS |			\
>> +		PAD_CTL_PUS_100K_UP |		\
>> +		PAD_CTL_PUE |			\
>> +		PAD_CTL_ODE |			\
>> +		PAD_CTL_SPEED_MED |		\
>> +		PAD_CTL_DSE_40ohm |		\
>> +		PAD_CTL_SRE_SLOW		\
>> +		)
>> +
>> +static iomux_v3_cfg_t const gpio_pads[] = {
>> +	/* USB_H_PWR */
>> +	NEW_PAD_CTRL(MX6_PAD_GPIO_0__GPIO1_IO00, GPIO_PAD_CTRL),
>> +	/* USB_OTG_PWR */
>> +	NEW_PAD_CTRL(MX6_PAD_EIM_D22__GPIO3_IO22, GPIO_PAD_CTRL),
>> +	/* ENET1_RST */
>> +	NEW_PAD_CTRL(MX6_PAD_GPIO_8__GPIO1_IO08, GPIO_PAD_CTRL),
>
> This GPIO is already initialized in setup_iomuxc_enet.

Thanks for spotting. Will fix.

>> +	/* PCIE_RST */
>> +	NEW_PAD_CTRL(MX6_PAD_NANDF_CLE__GPIO6_IO07, GPIO_OD_PAD_CTRL),
>> +	/* UART1_PWRON */
>> +	NEW_PAD_CTRL(MX6_PAD_DISP0_DAT14__GPIO5_IO08, GPIO_PAD_CTRL),
>> +	/* UART2_PWRON */
>> +	NEW_PAD_CTRL(MX6_PAD_DISP0_DAT16__GPIO5_IO10, GPIO_PAD_CTRL),
>> +	/* UART3_PWRON */
>> +	NEW_PAD_CTRL(MX6_PAD_DISP0_DAT18__GPIO5_IO12, GPIO_PAD_CTRL),
>> +};
>> +
>> +#define GPIO_USB_H_PWR		IMX_GPIO_NR(1, 0)
>> +#define GPIO_USB_OTG_PWR	IMX_GPIO_NR(3, 22)
>> +#define GPIO_ENET1_RST		IMX_GPIO_NR(1, 8)
>> +#define GPIO_PCIE_RST		IMX_GPIO_NR(6, 7)
>> +#define GPIO_UART1_PWRON	IMX_GPIO_NR(5, 8)
>> +#define GPIO_UART2_PWRON	IMX_GPIO_NR(5, 10)
>> +#define GPIO_UART3_PWRON	IMX_GPIO_NR(5, 12)
>> +
>> +static void gpio_init(void)
>> +{
>> +	imx_iomux_v3_setup_multiple_pads(gpio_pads, ARRAY_SIZE(gpio_pads));
>> +
>> +	gpio_direction_output(GPIO_USB_H_PWR, 1);
>> +	gpio_direction_output(GPIO_USB_OTG_PWR, 1);
>> +	gpio_direction_output(GPIO_ENET1_RST, 1);
>> +	gpio_direction_output(GPIO_PCIE_RST, 1);
>> +	gpio_direction_output(GPIO_UART1_PWRON, 0);
>> +	gpio_direction_output(GPIO_UART2_PWRON, 0);
>> +	gpio_direction_output(GPIO_UART3_PWRON, 0);
>
> Some GPIO (USB) are requested later in USB specific code. I would prefer
> requesting all used GPIO - then the transition to DM_GPIO would be prepared
> already.

Yes. I've missed this. I'll add the missing gpio_request() calls in v2.

>> +}
>> +
>> +void tqma6_iomuxc_spi(void)
>> +{
>> +	/* No SPI on this baseboard */
>> +}
>> +
>> +int tqma6_bb_board_early_init_f(void)
>> +{
>> +	setup_iomuxc_uart4();
>> +
>> +	return 0;
>> +}
>> +
>> +int tqma6_bb_board_init(void)
>> +{
>> +	setup_iomuxc_enet();
>> +
>> +	gpio_init();
>> +
>> +	/* Turn the UART-couplers on one-after-another */
>> +	gpio_set_value(GPIO_UART1_PWRON, 1);
>> +	mdelay(10);
>> +	gpio_set_value(GPIO_UART2_PWRON, 1);
>> +	mdelay(10);
>> +	gpio_set_value(GPIO_UART3_PWRON, 1);
>> +
>> +	return 0;
>> +}
>> +
>> +int tqma6_bb_board_late_init(void)
>> +{
>> +	return 0;
>> +}
>> +
>> +const char *tqma6_bb_get_boardname(void)
>> +{
>> +	return "WRU-IV";
>> +}
>> +
>> +static const struct boot_mode board_boot_modes[] = {
>> +	/* 4 bit bus width */
>> +	{"sd2",	 MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
>> +	/* 8 bit bus width */
>> +	{"emmc", MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
>> +	{ NULL, 0 },
>> +};
>> +
>> +int misc_init_r(void)
>> +{
>> +	add_board_boot_modes(board_boot_modes);
>> +
>> +	return 0;
>> +}
>> +
>> +#define WRU4_USB_H1_PWR		IMX_GPIO_NR(1, 0)
>> +#define WRU4_USB_OTG_PWR	IMX_GPIO_NR(3, 22)
>> +
>> +int board_ehci_hcd_init(int port)
>> +{
>> +	int ret;
>> +
>> +	ret = gpio_request(WRU4_USB_H1_PWR, "usb-h1-pwr");
>> +	if (!ret)
>> +		gpio_direction_output(WRU4_USB_H1_PWR, 1);
>> +
>> +	ret = gpio_request(WRU4_USB_OTG_PWR, "usb-OTG-pwr");
>> +	if (!ret)
>> +		gpio_direction_output(WRU4_USB_OTG_PWR, 1);
>> +
>> +	return 0;
>> +}
>> +
>> +int board_ehci_power(int port, int on)
>> +{
>> +	if (port)
>> +		gpio_set_value(WRU4_USB_OTG_PWR, on);
>> +	else
>> +		gpio_set_value(WRU4_USB_H1_PWR, on);
>> +
>> +	return 0;
>> +}
>> +
>> +/*
>> + * Device Tree Support
>> + */
>> +#if defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT)
>> +void tqma6_bb_ft_board_setup(void *blob, bd_t *bd)
>> +{
>> +	/* TBD */
>> +}
>> +#endif /* defined(CONFIG_OF_BOARD_SETUP) && defined(CONFIG_OF_LIBFDT) */
>> diff --git a/configs/tqma6s_wru4_mmc_defconfig b/configs/tqma6s_wru4_mmc_defconfig
>> new file mode 100644
>> index 0000000..74bca0b
>> --- /dev/null
>> +++ b/configs/tqma6s_wru4_mmc_defconfig
>> @@ -0,0 +1,10 @@
>> +CONFIG_ARM=y
>> +CONFIG_TARGET_TQMA6=y
>> +CONFIG_CMD_SETEXPR=y
>> +CONFIG_CMD_NET=y
>> +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/tqc/tqma6/tqma6s.cfg,MX6S,WRU4,TQMA6X_MMC_BOOT"
>> +CONFIG_AUTOBOOT_KEYED=y
>> +CONFIG_AUTOBOOT_PROMPT="Enter password in %d seconds to stop autoboot\n"
>> +CONFIG_AUTOBOOT_ENCRYPTION=y
>> +CONFIG_AUTOBOOT_STOP_STR_SHA256="36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068"
>> +CONFIG_PCA9551_LED=y
>
> Did you notice the patches for TQMa6 related config rework?
> (arm: imx6: tqma6: Kconfig rework from 2015/06/04)

Yes. But I totally forgot to take them into account for this baseboard 
support. I'll take another look into this patchset tomorrow.

Thanks for the review,
Stefan



More information about the U-Boot mailing list