[U-Boot] [RFC] [PATCH] at91: add support for PM9263 board

Wolfgang Denk wd at denx.de
Thu Feb 5 00:02:41 CET 2009


Dear Jean-Christophe PLAGNIOL-VILLARD,

In message <1233785700-31051-1-git-send-email-plagnioj at jcrosoft.com> you wrote:
> From: Ilko Iliev <iliev at ronetix.at>
> 
> This patch adds support for the PM9263 board of Ronetix GmbH (www.ronetix.at)
> With the necessary to boot the board from NOR
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

I cannot parse this. What do you want to express?

> index ec6ad5d..122e23a 100644
> --- a/cpu/arm926ejs/at91/lowlevel_init.S
> +++ b/board/ronetix/pm9263/led.c

NAK.

I will not accept yet another copy of this file. Please create common
code that can be configured as needed.

> diff --git a/board/ronetix/pm9263/partition.c b/board/ronetix/pm9263/partition.c
> new file mode 100644
> index 0000000..95ac398
> --- /dev/null
> +++ b/board/ronetix/pm9263/partition.c

NAK.

I will not accept yet another copy of this file. We have already 7 of
these, most of them identical, and the remaining differences minimal.
Please create common code that can be configured as needed.


> diff --git a/board/ronetix/pm9263/pm9263.c b/board/ronetix/pm9263/pm9263.c
> new file mode 100644
> index 0000000..7bda1b8
...

> +/* ------------------------------------------------------------------------- */
> +/*
> + * Miscelaneous platform dependent initialisations
> + */
> +
> +static void pm9263_serial_hw_init(void)
> +{
> +#ifdef CONFIG_USART0
> +	at91_set_A_periph(AT91_PIN_PA26, 1);		/* TXD0 */
> +	at91_set_A_periph(AT91_PIN_PA27, 0);		/* RXD0 */
> +	at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US0);
> +#endif
> +
> +#ifdef CONFIG_USART1
> +	at91_set_A_periph(AT91_PIN_PD0, 1);		/* TXD1 */
> +	at91_set_A_periph(AT91_PIN_PD1, 0);		/* RXD1 */
> +	at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US1);
> +#endif
> +
> +#ifdef CONFIG_USART2
> +	at91_set_A_periph(AT91_PIN_PD2, 1);		/* TXD2 */
> +	at91_set_A_periph(AT91_PIN_PD3, 0);		/* RXD2 */
> +	at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_US2);
> +#endif
> +
> +#ifdef CONFIG_USART3	/* DBGU */
> +	at91_set_A_periph(AT91_PIN_PC30, 0);		/* DRXD */
> +	at91_set_A_periph(AT91_PIN_PC31, 1);		/* DTXD */
> +	at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS);
> +#endif
> +}

I think I've seent his code a couple of times before, too. Last time
in another patch earlier today. Seems there are at least 8 files in
U-Boot that contain such a sequence, with no or just minimal
differences.

Should we not clean this up, too?


> +static int pm9263_lcd_hw_psram_init(void)
> +{
...
> +	if ((readw(PHYS_PSRAM) != 0x1234) || (readw(PHYS_PSRAM+2) != 0x5678))
> +	{

Incorrect brace style.

> +		writew(0x5678, PHYS_PSRAM+2);
> +		if ((readw(PHYS_PSRAM) != 0x1234)
> +		   || (readw(PHYS_PSRAM + 2) != 0x5678))
> +			return 1;

I recommend to use curly braces because of the multi-line "if".

Also, please put the "||" at the end of line 1.

> +int dram_init(void)
> +{
> +	gd->bd->bi_dram[0].start = PHYS_SDRAM;
> +	gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
> +	return 0;
> +}

You should not hard-wire the memory size. You should auto-size it.

> +#ifdef CONFIG_RESET_PHY_R
> +void reset_phy(void)
> +{
> +#ifdef CONFIG_MACB
> +	/*
> +	 * Initialize ethernet HW addr prior to starting Linux,
> +	 * needed for nfsroot
> +	 */
> +	eth_init(gd->bd);
> +#endif

Be careful. You mustnot initialize the ehternet port unless a U-Boot
network command is being used. And you must shut it down after that.

> +#ifdef CONFIG_DISPLAY_BOARDINFO
> +int checkboard (void)
> +{
> +	char *ss;
> +
> +	uint32_t reg, diva, mula;
> +	uint32_t val, mdiv, pres, crystal;
> +	char buf[32];
> +
> +	reg = at91_sys_read(AT91_CKGR_PLLAR);
> +	mula = ((reg >> 16) & 0x7FF) + 1;
> +	diva = reg & 0xFF;
> +
> +	reg = at91_sys_read(AT91_PMC_MCKR);
> +	mdiv = (reg >> 8) & 3;
> +	pres = (reg >> 2) & 7;

Maybe a comment would help to explain what this code is doing?

> +	printf("Video memory : 0x%08lX %s\n", gd->fb_base, ss );

No space before the paren.

> +	printf ("\n");

Please use consistent style: either

	printf(...);
or
	printf (...);

bot on;t mix these (this applies to all function calls).

> diff --git a/cpu/arm926ejs/at91/lowlevel_init.S b/board/ronetix/pm9263/u-boot.lds
> similarity index 54%
> copy from cpu/arm926ejs/at91/lowlevel_init.S
> copy to board/ronetix/pm9263/u-boot.lds
> index ec6ad5d..443f180 100644
> --- a/cpu/arm926ejs/at91/lowlevel_init.S
> +++ b/board/ronetix/pm9263/u-boot.lds

That's a pretty funny diff, isn't it? lowlevel_init.S versus
u-boot.lds ...

> diff --git a/include/configs/pm9263.h b/include/configs/pm9263.h
> new file mode 100644
> index 0000000..4a20bff
> --- /dev/null
> +++ b/include/configs/pm9263.h
...
> +#define AT91_MAIN_CLOCK		(PM9263_CRYSTAL / MASTER_PLL_DIV * MASTER_PLL_MUL)

Maximum line lenght exceeded. Check all files, there are more places
like this one!

> +#define AT91_MASTER_CLOCK	(AT91_MAIN_CLOCK / MAIN_PLL_DIV)
> +#define CONFIG_SYS_AT91_PLLB	0x10483E0E	/* PLLB settings for USB */
> +#define CONFIG_SYS_HZ		1000000

NAK.

CONFIG_SYS_HZ must be 1000.

> +#define CFG_MONITOR_BASE	(CFG_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
> +#define CONFIG_ENV_OFFSET	0x4200
> +#define CONFIG_ENV_ADDR		(CFG_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
> +#define CONFIG_ENV_SIZE		0x4200
> +#define CONFIG_BOOTCOMMAND	"cp.b 0xC0042000 0x22000000 0x210000; bootm"

No need for 0x in U-Boot commands. This is just wasting environment
memory.

> +#define CONFIG_BOOTCOMMAND	"nand read 0x22000000 0xA0000 0x200000; bootm"

Ditto.

> +#define ROUND(A, B)		(((A) + (B)) & ~((B) - 1))

Do we really need this redefined in each and every
include/configs/at91*.h file?

> + * Size of malloc() pool
> + */
> +#define CONFIG_SYS_MALLOC_LEN	ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)

Same here?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A supercomputer is a machine that runs an endless loop in 2 seconds.


More information about the U-Boot mailing list