[U-Boot] kb9202/at91rm9200: compiler quirk?

Jean-Christophe PLAGNIOL-VILLARD plagnioj at jcrosoft.com
Mon May 4 23:26:12 CEST 2009


On 20:13 Mon 04 May     , Matthias Kaehlcke wrote:
> hi,
> 
> i'm trying to do a forward port of the out of tree patches for the
> kwikbyte kb9202b. my board is booting and detects the nand flash, but
> only in certain circumstances.
I've never test the nand on rm9200 as the rm9200ek does not have it
but I'll try this
> 
> the hwcontrol function looks like this:
> 
> #define KB9202_NAND_NCE ((unsigned int)1 << 28) /* EN* on D28 */
unsigned int is not needed
> 
> static void kb9202_nand_hwcontrol(struct mtd_info *mtd, int cmd,
> unsigned int ctrl)
> {
> 	...
> 
> 	if (ctrl & NAND_NCE)
> 		AT91C_BASE_PIOB->PIO_CODR = KB9202_NAND_NCE;
try writel(KB9202_NAND_NCE, AT91C_BASE_PIOB->PIO_CODR);
> 	else
> 		AT91C_BASE_PIOB->PIO_SODR = KB9202_NAND_NCE;
and writel(KB9202_NAND_NCE, AT91C_BASE_PIOB->PIO_SODR);
> 
> 	...
> }
> 
> the problem is that for some reason the enable signal isn't generated
> when using the pre-processor constant KB9202_NAND_NCE. on the other
> hand it is generated when using ((unsigned int)1 << 28), instead of
> the define. it took me some hours to figure this out ...

Best Regards,
J.


More information about the U-Boot mailing list