On 10/27/2011 05:46 AM, Premi, Sanjeev wrote:
>> -----Original Message-----
>> From: [email protected] 
>> [mailto:[email protected]] On Behalf Of Rini, Tom
>> Sent: Thursday, October 27, 2011 2:44 AM
>> To: [email protected]
>> Subject: [U-Boot] [PATCH 2/2] OMAP3: Add SPL support to Beagleboard
>>
>> This introduces 200MHz Micron parts timing information based 
>> on x-loader
>> and re-organizes the file slightly for grouping.  The memory 
>> init logic
>> is also based on what x-loader does in these cases.  Note that while
>> previously u-boot would be flashed in with SW ECC in this case it now
>> must be flashed with HW ECC.
>>
>> Beagleboard rev C5, xM rev A:
>> Tested-by: Tom Rini <[email protected]>
>> Beagleboard xM rev C:
>> Tested-by: Matt Ranostay <[email protected]>
>> Beagleboard rev B7, C2, xM rev B:
>> Tested-by: Matt Porter <[email protected]>
>> Signed-off-by: Tom Rini <[email protected]>
>> ---
> 
> [snip]...[snip]
> 
>>  
>> +#ifdef CONFIG_SPL_BUILD
>> +
>> +#define MICRON_DDR  0
>> +#define NUMONYX_MCP 1
>> +#define MICRON_MCP  2
>> +
>> +#define NAND_CMD_STATUS             0x70
>> +#define NAND_CMD_READID             0x90
>> +#define NAND_CMD_RESET              0xff
>> +
>> +#define GPMC_NAND_COMMAND_0      (OMAP34XX_GPMC_BASE+0x7C)
>> +#define GPMC_NAND_ADDRESS_0      (OMAP34XX_GPMC_BASE+0x80)
>> +#define GPMC_NAND_DATA_0     (OMAP34XX_GPMC_BASE+0x84)
>> +
>> +#define WRITE_NAND_COMMAND(d, adr) \
>> +    do {*(volatile u16 *)GPMC_NAND_COMMAND_0 = d;} while(0)
>> +#define WRITE_NAND_ADDRESS(d, adr) \
>> +    do {*(volatile u16 *)GPMC_NAND_ADDRESS_0 = d;} while(0)
>> +#define READ_NAND(adr)          (*(volatile u16 *)GPMC_NAND_DATA_0)
>> +
> 
> I am not yet familiar with SPL code, but I would suggest using
> "struct gpmc" instead of hardcoded offsets above.
> 
> [snip]...[snip]
> 
>> +
>> +#define GPMC_CONFIG_CS0_CONFIG1             0x6E000060
>> +#define GPMC_CONFIG_CS0_CONFIG2             0x6E000064
>> +#define GPMC_CONFIG_CS0_CONFIG3             0x6E000068
>> +#define GPMC_CONFIG_CS0_CONFIG4             0x6E00006C
>> +#define GPMC_CONFIG_CS0_CONFIG5             0x6E000070
>> +#define GPMC_CONFIG_CS0_CONFIG6             0x6E000074
>> +#define GPMC_CONFIG_CS0_CONFIG7             0x6E000078
>> +#define OMAP34XX_GPMC_CS0_SIZE              0x8
> 
> Suggest using "struct gpmc_cs" instead of defining offsets.
> 
> [snip]...[snip]
> 
>> +
>> +static int identify_xm_ddr(void)
>> +{
>> +    int mfr, id;
>> +
>> +    /* Make sure that we have setup GPMC for NAND correctly. */
>> +    writel(M_NAND_GPMC_CONFIG1, GPMC_CONFIG_CS0_CONFIG1);
>> +    writel(M_NAND_GPMC_CONFIG2, GPMC_CONFIG_CS0_CONFIG2);
>> +    writel(M_NAND_GPMC_CONFIG3, GPMC_CONFIG_CS0_CONFIG3);
>> +    writel(M_NAND_GPMC_CONFIG4, GPMC_CONFIG_CS0_CONFIG4);
>> +    writel(M_NAND_GPMC_CONFIG5, GPMC_CONFIG_CS0_CONFIG5);
>> +    writel(M_NAND_GPMC_CONFIG6, GPMC_CONFIG_CS0_CONFIG6);
>> +
>> +    /* Enable the GPMC Mapping */
>> +    writel((((OMAP34XX_GPMC_CS0_SIZE & 0xF) << 8) |
>> +                         ((NAND_BASE >> 24) & 0x3F) |
>> +                         (1 << 6)),  (GPMC_CONFIG_CS0_CONFIG7));
> 
> Same comment as before. Looks like there may be few more places
> where hardcoded addresses/ offsets are being used.

Yeah, this is all a drop-in of the x-loader code which needs some clean
up.  But the overall logic (poke this to determine that) is what I want
to make sure we're going to be OK with.

-- 
Tom
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to