[U-Boot] [PATCH] arm, imx6: add support for aristainetos2 board

Anatolij Gustschin agust at denx.de
Wed May 13 10:16:54 CEST 2015


Hi Heiko,

On Fri, 08 May 2015 14:02:29 +0200
Heiko Schocher <hs at denx.de> wrote:

> added Anatolij to cc for the rotate logo question ...
> 
> Am 08.05.2015 13:19, schrieb Stefano Babic:
> > Hi Heiko,
> >
> > On 12/04/2015 10:24, Heiko Schocher wrote:  
> >> add support for imx6dl based aristainetos2 board
> >>
> >> U-Boot 2015.04-rc5-00066-g60f6ed4 (Apr 10 2015 - 08:46:27)
> >>
> >> CPU:   Freescale i.MX6DL rev1.1 at 792 MHz
> >> Reset cause: WDOG
> >> Board: aristaitenos2
> >>         Watchdog enabled
> >> I2C:   ready
> >> DRAM:  1 GiB
> >> NAND:  1024 MiB
> >> MMC:   FSL_SDHC: 0
> >> SF: Detected N25Q128A with page size 256 Bytes, erase size 64 KiB, total 16 MiB
> >> Display: lg4573 (480x800)
> >> In:    serial
> >> Out:   serial
> >> Err:   serial
> >> Net:   FEC [PRIME]
> >> Hit any key to stop autoboot:  0  
> >> =>  
> >>
> >> Signed-off-by: Heiko Schocher <hs at denx.de>
> >> ---
> >>
> >>   arch/arm/Kconfig                      |   5 +
> >>   board/aristainetos2/Kconfig           |  12 +
> >>   board/aristainetos2/MAINTAINERS       |   6 +
> >>   board/aristainetos2/Makefile          |  12 +
> >>   board/aristainetos2/aristainetos2.c   | 917 ++++++++++++++++++++++++++++++++++
> >>   board/aristainetos2/aristainetos2.cfg |  34 ++
> >>   board/aristainetos2/axi.cfg           |  22 +
> >>   board/aristainetos2/clocks.cfg        |  24 +
> >>   board/aristainetos2/ddr-setup.cfg     |  59 +++
> >>   board/aristainetos2/nt5cc256m16cp.cfg |  60 +++
> >>   configs/aristainetos2_defconfig       |   3 +
> >>   include/configs/aristainetos2.h       | 351 +++++++++++++
> >>   12 files changed, 1505 insertions(+)
> >>   create mode 100644 board/aristainetos2/Kconfig
> >>   create mode 100644 board/aristainetos2/MAINTAINERS
> >>   create mode 100644 board/aristainetos2/Makefile
> >>   create mode 100644 board/aristainetos2/aristainetos2.c
> >>   create mode 100644 board/aristainetos2/aristainetos2.cfg
> >>   create mode 100644 board/aristainetos2/axi.cfg
> >>   create mode 100644 board/aristainetos2/clocks.cfg
> >>   create mode 100644 board/aristainetos2/ddr-setup.cfg
> >>   create mode 100644 board/aristainetos2/nt5cc256m16cp.cfg
> >>   create mode 100644 configs/aristainetos2_defconfig
> >>   create mode 100644 include/configs/aristainetos2.h
> >>  
> [...]
> >> diff --git a/board/aristainetos2/aristainetos2.c b/board/aristainetos2/aristainetos2.c
> >> new file mode 100644
> >> index 0000000..98e1bc7
> >> --- /dev/null
> >> +++ b/board/aristainetos2/aristainetos2.c
> >> @@ -0,0 +1,917 @@  
> [...]
> >> +struct i2c_pads_info i2c_pad_info4 = {
> >> +	.scl = {
> >> +		.i2c_mode = MX6_PAD_GPIO_7__I2C4_SCL | PC,
> >> +		.gpio_mode = MX6_PAD_GPIO_7__GPIO1_IO07 | PC,
> >> +		.gp = IMX_GPIO_NR(1, 7)
> >> +	},
> >> +	.sda = {
> >> +		.i2c_mode = MX6_PAD_GPIO_8__I2C4_SDA | PC,
> >> +		.gpio_mode = MX6_PAD_GPIO_8__GPIO1_IO08 | PC,
> >> +		.gp = IMX_GPIO_NR(1, 8)
> >> +	}
> >> +};
> >> +
> >> +static int lgdisplay;  
> >
> > It looks like strange to pass a parameter via a global variable. No
> > other way ?  
> 
> Hmm.. yes, I can check the "panel" environmentvariable ... changed.
> 
> >> +
> >> +int dram_init(void)
> >> +{
> >> +	gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
> >> +
> >> +	return 0;
> >> +}  
> [...]
> >> +int board_phy_config(struct phy_device *phydev)
> >> +{
> >> +#if defined(CONFIG_PHY_MICREL_KSZ9031)  
> >
> > Is there another possibly phy chip ? If not, can we get rid of the #ifdef ?  
> 
> No other phy ... removed.
> 
> >> +	/* control data pad skew - devaddr = 0x02, register = 0x04 */
> >> +	ksz9031_phy_extended_write(phydev, 0x02,
> >> +				   MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW,
> >> +				   MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
> >> +	/* rx data pad skew - devaddr = 0x02, register = 0x05 */
> >> +	ksz9031_phy_extended_write(phydev, 0x02,
> >> +				   MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW,
> >> +				   MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
> >> +	/* tx data pad skew - devaddr = 0x02, register = 0x06 */
> >> +	ksz9031_phy_extended_write(phydev, 0x02,
> >> +				   MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW,
> >> +				   MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x0000);
> >> +	/* gtx and rx clock pad skew - devaddr = 0x02, register = 0x08 */
> >> +	ksz9031_phy_extended_write(phydev, 0x02,
> >> +				   MII_KSZ9031_EXT_RGMII_CLOCK_SKEW,
> >> +				   MII_KSZ9031_MOD_DATA_NO_POST_INC, 0x03FF);
> >> +#endif /* CONFIG_PHY_MICREL_KSZ9031 */  
> [...]
> >> +/*
> >> + * Rotate the BMP_LOGO (only)
> >> + * Will only work, if the logo is square, as
> >> + * BMP_LOGO_HEIGHT and BMP_LOGO_WIDTH are defines, not variables
> >> + */
> >> +void rotate_logo(int rotations)
> >> +{
> >> +	unsigned char out_logo[BMP_LOGO_WIDTH * BMP_LOGO_HEIGHT];
> >> +	unsigned char *in_logo;
> >> +	int   i, j;
> >> +
> >> +	if (BMP_LOGO_WIDTH != BMP_LOGO_HEIGHT)
> >> +		return;
> >> +
> >> +	in_logo = bmp_logo_bitmap;
> >> +
> >> +	/* one 90 degree rotation */
> >> +	if (rotations == 1  ||  rotations == 2  ||  rotations == 3)
> >> +		rotate_logo_one(out_logo, in_logo);
> >> +
> >> +	/* second 90 degree rotation */
> >> +	if (rotations == 2  ||  rotations == 3)
> >> +		rotate_logo_one(in_logo, out_logo);
> >> +
> >> +	/* third 90 degree rotation */
> >> +	if (rotations == 3)
> >> +		rotate_logo_one(out_logo, in_logo);
> >> +
> >> +	/* copy result back to original array */
> >> +	if (rotations == 1  ||  rotations == 3)
> >> +		for (i = 0; i < BMP_LOGO_WIDTH; i++)
> >> +			for (j = 0; j < BMP_LOGO_HEIGHT; j++)
> >> +				in_logo[i * BMP_LOGO_WIDTH + j] =
> >> +				out_logo[i * BMP_LOGO_WIDTH + j];
> >> +}
> >> +#endif  
> >
> > Should we put this code in a more common location ? As candidate I see
> > common/lcd_console_rotation.c or drivers/video/cfb_console.c  
> 
> I am unsure, as the logo must be a square ... added Anatolij to
> Cc ... @Anatolij: What do you think, has such a function a chance
> (and if yes, where is the best place for it?)

in the drivers/video/cfb_console.c I would prefer to have more generic
rotate support so that the text output could be rotated as well. Not
only for some size-constrained logos. Therefore this custom rotation
could be in board code I think.

Best regards,

Anatolij


More information about the U-Boot mailing list