* [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config
@ 2009-11-11 8:03 Mike Rapoport
2009-11-15 9:22 ` Mike Rapoport
0 siblings, 1 reply; 6+ messages in thread
From: Mike Rapoport @ 2009-11-11 8:03 UTC (permalink / raw)
To: u-boot
There are several presets for GPMC registers defined in
include/asm-arm/arch-omap3/mem.h. Allow selection between SMNAND and
M_NAND presets based on OMAP34XX_GPMC_NAND_<PART> defines
Signed-off-by: Mike Rapoport <mike@compulab.co.il>
---
cpu/arm_cortexa8/omap3/mem.c | 25 ++++++++++++++++---------
1 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c
index 8b8cd6d..2bd7e1c 100644
--- a/cpu/arm_cortexa8/omap3/mem.c
+++ b/cpu/arm_cortexa8/omap3/mem.c
@@ -44,14 +44,21 @@ volatile unsigned int boot_flash_env_addr;
struct gpmc *gpmc_cfg;
#if defined(CONFIG_CMD_NAND)
-static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
- M_NAND_GPMC_CONFIG1,
- M_NAND_GPMC_CONFIG2,
- M_NAND_GPMC_CONFIG3,
- M_NAND_GPMC_CONFIG4,
- M_NAND_GPMC_CONFIG5,
- M_NAND_GPMC_CONFIG6, 0
-};
+#define GPMC_NAND(PART) \
+ static const u32 gpmc_nand[GPMC_MAX_REG] = { \
+ PART##_GPMC_CONFIG1, \
+ PART##_GPMC_CONFIG2, \
+ PART##_GPMC_CONFIG3, \
+ PART##_GPMC_CONFIG4, \
+ PART##_GPMC_CONFIG5, \
+ PART##_GPMC_CONFIG6, 0 \
+ };
+
+#ifdef OMAP34XX_GPMC_NAND_SMNAND
+GPMC_NAND(SMNAND)
+#else
+GPMC_NAND(M_NAND)
+#endif
#if defined(CONFIG_ENV_IS_IN_NAND)
#define GPMC_CS 0
@@ -246,7 +253,7 @@ void gpmc_init(void)
sdelay(1000);
#if defined(CONFIG_CMD_NAND) /* CS 0 */
- gpmc_config = gpmc_m_nand;
+ gpmc_config = gpmc_nand;
base = PISMO1_NAND_BASE;
size = PISMO1_NAND_SIZE;
--
1.6.0.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config
2009-11-11 8:03 [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config Mike Rapoport
@ 2009-11-15 9:22 ` Mike Rapoport
2009-11-15 16:36 ` Tom
0 siblings, 1 reply; 6+ messages in thread
From: Mike Rapoport @ 2009-11-15 9:22 UTC (permalink / raw)
To: u-boot
Any comments on this?
Mike Rapoport wrote:
> There are several presets for GPMC registers defined in
> include/asm-arm/arch-omap3/mem.h. Allow selection between SMNAND and
> M_NAND presets based on OMAP34XX_GPMC_NAND_<PART> defines
>
> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
> ---
> cpu/arm_cortexa8/omap3/mem.c | 25 ++++++++++++++++---------
> 1 files changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c
> index 8b8cd6d..2bd7e1c 100644
> --- a/cpu/arm_cortexa8/omap3/mem.c
> +++ b/cpu/arm_cortexa8/omap3/mem.c
> @@ -44,14 +44,21 @@ volatile unsigned int boot_flash_env_addr;
> struct gpmc *gpmc_cfg;
>
> #if defined(CONFIG_CMD_NAND)
> -static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
> - M_NAND_GPMC_CONFIG1,
> - M_NAND_GPMC_CONFIG2,
> - M_NAND_GPMC_CONFIG3,
> - M_NAND_GPMC_CONFIG4,
> - M_NAND_GPMC_CONFIG5,
> - M_NAND_GPMC_CONFIG6, 0
> -};
> +#define GPMC_NAND(PART) \
> + static const u32 gpmc_nand[GPMC_MAX_REG] = { \
> + PART##_GPMC_CONFIG1, \
> + PART##_GPMC_CONFIG2, \
> + PART##_GPMC_CONFIG3, \
> + PART##_GPMC_CONFIG4, \
> + PART##_GPMC_CONFIG5, \
> + PART##_GPMC_CONFIG6, 0 \
> + };
> +
> +#ifdef OMAP34XX_GPMC_NAND_SMNAND
> +GPMC_NAND(SMNAND)
> +#else
> +GPMC_NAND(M_NAND)
> +#endif
>
> #if defined(CONFIG_ENV_IS_IN_NAND)
> #define GPMC_CS 0
> @@ -246,7 +253,7 @@ void gpmc_init(void)
> sdelay(1000);
>
> #if defined(CONFIG_CMD_NAND) /* CS 0 */
> - gpmc_config = gpmc_m_nand;
> + gpmc_config = gpmc_nand;
>
> base = PISMO1_NAND_BASE;
> size = PISMO1_NAND_SIZE;
--
Sincerely yours,
Mike.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config
2009-11-15 9:22 ` Mike Rapoport
@ 2009-11-15 16:36 ` Tom
2009-11-15 19:25 ` Mike Rapoport
2009-11-15 19:41 ` Nishanth Menon
0 siblings, 2 replies; 6+ messages in thread
From: Tom @ 2009-11-15 16:36 UTC (permalink / raw)
To: u-boot
Mike Rapoport wrote:
> Any comments on this?
>
This is a good idea but..
These defines are used in the TI codebase but
it doesn't look like the samsung nand is used here.
As a test I removed the samsung defines
and reran MAKEALL arm.
No failures.
Also grepping the code shows that it isn't used.
Do you plan on using the samsung nand ?
If not, I think a better patch would be to remove the smnand defines.
Also I think the nand and onnand initialization could be generalized. You
may want to look at that.
Thanks
Tom
> Mike Rapoport wrote:
>> There are several presets for GPMC registers defined in
>> include/asm-arm/arch-omap3/mem.h. Allow selection between SMNAND and
>> M_NAND presets based on OMAP34XX_GPMC_NAND_<PART> defines
>>
>> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
>> ---
>> cpu/arm_cortexa8/omap3/mem.c | 25 ++++++++++++++++---------
>> 1 files changed, 16 insertions(+), 9 deletions(-)
>>
>> diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c
>> index 8b8cd6d..2bd7e1c 100644
>> --- a/cpu/arm_cortexa8/omap3/mem.c
>> +++ b/cpu/arm_cortexa8/omap3/mem.c
>> @@ -44,14 +44,21 @@ volatile unsigned int boot_flash_env_addr;
>> struct gpmc *gpmc_cfg;
>>
>> #if defined(CONFIG_CMD_NAND)
>> -static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
>> - M_NAND_GPMC_CONFIG1,
>> - M_NAND_GPMC_CONFIG2,
>> - M_NAND_GPMC_CONFIG3,
>> - M_NAND_GPMC_CONFIG4,
>> - M_NAND_GPMC_CONFIG5,
>> - M_NAND_GPMC_CONFIG6, 0
>> -};
>> +#define GPMC_NAND(PART) \
>> + static const u32 gpmc_nand[GPMC_MAX_REG] = { \
>> + PART##_GPMC_CONFIG1, \
>> + PART##_GPMC_CONFIG2, \
>> + PART##_GPMC_CONFIG3, \
>> + PART##_GPMC_CONFIG4, \
>> + PART##_GPMC_CONFIG5, \
>> + PART##_GPMC_CONFIG6, 0 \
>> + };
>> +
>> +#ifdef OMAP34XX_GPMC_NAND_SMNAND
>> +GPMC_NAND(SMNAND)
>> +#else
>> +GPMC_NAND(M_NAND)
>> +#endif
>>
>> #if defined(CONFIG_ENV_IS_IN_NAND)
>> #define GPMC_CS 0
>> @@ -246,7 +253,7 @@ void gpmc_init(void)
>> sdelay(1000);
>>
>> #if defined(CONFIG_CMD_NAND) /* CS 0 */
>> - gpmc_config = gpmc_m_nand;
>> + gpmc_config = gpmc_nand;
>>
>> base = PISMO1_NAND_BASE;
>> size = PISMO1_NAND_SIZE;
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config
2009-11-15 16:36 ` Tom
@ 2009-11-15 19:25 ` Mike Rapoport
2009-11-15 19:41 ` Nishanth Menon
1 sibling, 0 replies; 6+ messages in thread
From: Mike Rapoport @ 2009-11-15 19:25 UTC (permalink / raw)
To: u-boot
On Sun, Nov 15, 2009 at 6:36 PM, Tom <Tom.Rix@windriver.com> wrote:
> Mike Rapoport wrote:
>> Any comments on this?
>>
>
> This is a good idea but..
>
> These defines are used in the TI codebase but
> it doesn't look like the samsung nand is used here.
>
> As a test I removed the samsung defines
> and reran MAKEALL arm.
> No failures.
> Also grepping the code shows that it isn't used.
>
> Do you plan on using the samsung nand ?
That's why I enabled the choice between samsung and Micron parts :)
The CM-T35 board I'm submitting uses the samsung NAND flashes
> If not, I think a better patch ?would be to remove the smnand defines.
>
> Also I think the nand and onnand initialization could be generalized. ?You
> may want to look at that.
>
> Thanks
> Tom
>
>> Mike Rapoport wrote:
>>> There are several presets for GPMC registers defined in
>>> include/asm-arm/arch-omap3/mem.h. Allow selection between SMNAND and
>>> M_NAND presets based on OMAP34XX_GPMC_NAND_<PART> defines
>>>
>>> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
>>> ---
>>> ?cpu/arm_cortexa8/omap3/mem.c | ? 25 ++++++++++++++++---------
>>> ?1 files changed, 16 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c
>>> index 8b8cd6d..2bd7e1c 100644
>>> --- a/cpu/arm_cortexa8/omap3/mem.c
>>> +++ b/cpu/arm_cortexa8/omap3/mem.c
>>> @@ -44,14 +44,21 @@ volatile unsigned int boot_flash_env_addr;
>>> ?struct gpmc *gpmc_cfg;
>>>
>>> ?#if defined(CONFIG_CMD_NAND)
>>> -static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
>>> - ? ?M_NAND_GPMC_CONFIG1,
>>> - ? ?M_NAND_GPMC_CONFIG2,
>>> - ? ?M_NAND_GPMC_CONFIG3,
>>> - ? ?M_NAND_GPMC_CONFIG4,
>>> - ? ?M_NAND_GPMC_CONFIG5,
>>> - ? ?M_NAND_GPMC_CONFIG6, 0
>>> -};
>>> +#define GPMC_NAND(PART) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \
>>> + ? ?static const u32 gpmc_nand[GPMC_MAX_REG] = { ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG1, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG2, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG3, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG4, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG5, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG6, 0 ? ? ? ? ? ? ? ? ?\
>>> + ? ?};
>>> +
>>> +#ifdef OMAP34XX_GPMC_NAND_SMNAND
>>> +GPMC_NAND(SMNAND)
>>> +#else
>>> +GPMC_NAND(M_NAND)
>>> +#endif
>>>
>>> ?#if defined(CONFIG_ENV_IS_IN_NAND)
>>> ?#define GPMC_CS 0
>>> @@ -246,7 +253,7 @@ void gpmc_init(void)
>>> ? ? ?sdelay(1000);
>>>
>>> ?#if defined(CONFIG_CMD_NAND) ? ? ? ?/* CS 0 */
>>> - ? ?gpmc_config = gpmc_m_nand;
>>> + ? ?gpmc_config = gpmc_nand;
>>>
>>> ? ? ?base = PISMO1_NAND_BASE;
>>> ? ? ?size = PISMO1_NAND_SIZE;
>>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
--
Sincerely Yours,
Mike.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config
2009-11-15 16:36 ` Tom
2009-11-15 19:25 ` Mike Rapoport
@ 2009-11-15 19:41 ` Nishanth Menon
2009-11-15 20:08 ` Tom
1 sibling, 1 reply; 6+ messages in thread
From: Nishanth Menon @ 2009-11-15 19:41 UTC (permalink / raw)
To: u-boot
On Sun, Nov 15, 2009 at 10:36 AM, Tom <Tom.Rix@windriver.com> wrote:
> Mike Rapoport wrote:
>> Any comments on this?
>>
>
> This is a good idea but..
>
> These defines are used in the TI codebase but
> it doesn't look like the samsung nand is used here.
>
> As a test I removed the samsung defines
> and reran MAKEALL arm.
> No failures.
> Also grepping the code shows that it isn't used.
>
> Do you plan on using the samsung nand ?
SDP3430 uses Samsung NAND.
>
> If not, I think a better patch ?would be to remove the smnand defines.
NAK.
>
> Also I think the nand and onnand initialization could be generalized. ?You
> may want to look at that.
>
> Thanks
> Tom
>
>> Mike Rapoport wrote:
>>> There are several presets for GPMC registers defined in
>>> include/asm-arm/arch-omap3/mem.h. Allow selection between SMNAND and
>>> M_NAND presets based on OMAP34XX_GPMC_NAND_<PART> defines
>>>
>>> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
>>> ---
>>> ?cpu/arm_cortexa8/omap3/mem.c | ? 25 ++++++++++++++++---------
>>> ?1 files changed, 16 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c
>>> index 8b8cd6d..2bd7e1c 100644
>>> --- a/cpu/arm_cortexa8/omap3/mem.c
>>> +++ b/cpu/arm_cortexa8/omap3/mem.c
>>> @@ -44,14 +44,21 @@ volatile unsigned int boot_flash_env_addr;
>>> ?struct gpmc *gpmc_cfg;
>>>
>>> ?#if defined(CONFIG_CMD_NAND)
>>> -static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
>>> - ? ?M_NAND_GPMC_CONFIG1,
>>> - ? ?M_NAND_GPMC_CONFIG2,
>>> - ? ?M_NAND_GPMC_CONFIG3,
>>> - ? ?M_NAND_GPMC_CONFIG4,
>>> - ? ?M_NAND_GPMC_CONFIG5,
>>> - ? ?M_NAND_GPMC_CONFIG6, 0
>>> -};
>>> +#define GPMC_NAND(PART) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \
>>> + ? ?static const u32 gpmc_nand[GPMC_MAX_REG] = { ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG1, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG2, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG3, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG4, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG5, ? ? ? ? ? ? ? ? ? ?\
>>> + ? ? ? ? ? ?PART##_GPMC_CONFIG6, 0 ? ? ? ? ? ? ? ? ?\
This is completely unnecessary implementation IMHO, where required,
the board files can register
their own NAND device timings on a need basis.
NOTE: timing values change based on L3 clk -> e..g 3630 means that ALL
the above timing values
are invalid as L3 is at 200Mhz!
>>> + ? ?};
>>> +
>>> +#ifdef OMAP34XX_GPMC_NAND_SMNAND
>>> +GPMC_NAND(SMNAND)
>>> +#else
>>> +GPMC_NAND(M_NAND)
>>> +#endif
>>>
>>> ?#if defined(CONFIG_ENV_IS_IN_NAND)
>>> ?#define GPMC_CS 0
>>> @@ -246,7 +253,7 @@ void gpmc_init(void)
>>> ? ? ?sdelay(1000);
>>>
>>> ?#if defined(CONFIG_CMD_NAND) ? ? ? ?/* CS 0 */
>>> - ? ?gpmc_config = gpmc_m_nand;
>>> + ? ?gpmc_config = gpmc_nand;
>>>
>>> ? ? ?base = PISMO1_NAND_BASE;
>>> ? ? ?size = PISMO1_NAND_SIZE;
>>
IMHO, NAK.
Regards,
Nishanth Menon
^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config
2009-11-15 19:41 ` Nishanth Menon
@ 2009-11-15 20:08 ` Tom
0 siblings, 0 replies; 6+ messages in thread
From: Tom @ 2009-11-15 20:08 UTC (permalink / raw)
To: u-boot
Nishanth Menon wrote:
> On Sun, Nov 15, 2009 at 10:36 AM, Tom <Tom.Rix@windriver.com> wrote:
>> Mike Rapoport wrote:
>>> Any comments on this?
>>>
>> This is a good idea but..
>>
>> These defines are used in the TI codebase but
>> it doesn't look like the samsung nand is used here.
>>
>> As a test I removed the samsung defines
>> and reran MAKEALL arm.
>> No failures.
>> Also grepping the code shows that it isn't used.
>>
>> Do you plan on using the samsung nand ?
> SDP3430 uses Samsung NAND.
>
>> If not, I think a better patch would be to remove the smnand defines.
> NAK.
>
>> Also I think the nand and onnand initialization could be generalized. You
>> may want to look at that.
>>
>> Thanks
>> Tom
>>
>>> Mike Rapoport wrote:
>>>> There are several presets for GPMC registers defined in
>>>> include/asm-arm/arch-omap3/mem.h. Allow selection between SMNAND and
>>>> M_NAND presets based on OMAP34XX_GPMC_NAND_<PART> defines
>>>>
>>>> Signed-off-by: Mike Rapoport <mike@compulab.co.il>
>>>> ---
>>>> cpu/arm_cortexa8/omap3/mem.c | 25 ++++++++++++++++---------
>>>> 1 files changed, 16 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c
>>>> index 8b8cd6d..2bd7e1c 100644
>>>> --- a/cpu/arm_cortexa8/omap3/mem.c
>>>> +++ b/cpu/arm_cortexa8/omap3/mem.c
>>>> @@ -44,14 +44,21 @@ volatile unsigned int boot_flash_env_addr;
>>>> struct gpmc *gpmc_cfg;
>>>>
>>>> #if defined(CONFIG_CMD_NAND)
>>>> -static const u32 gpmc_m_nand[GPMC_MAX_REG] = {
>>>> - M_NAND_GPMC_CONFIG1,
>>>> - M_NAND_GPMC_CONFIG2,
>>>> - M_NAND_GPMC_CONFIG3,
>>>> - M_NAND_GPMC_CONFIG4,
>>>> - M_NAND_GPMC_CONFIG5,
>>>> - M_NAND_GPMC_CONFIG6, 0
>>>> -};
>>>> +#define GPMC_NAND(PART) \
>>>> + static const u32 gpmc_nand[GPMC_MAX_REG] = { \
>>>> + PART##_GPMC_CONFIG1, \
>>>> + PART##_GPMC_CONFIG2, \
>>>> + PART##_GPMC_CONFIG3, \
>>>> + PART##_GPMC_CONFIG4, \
>>>> + PART##_GPMC_CONFIG5, \
>>>> + PART##_GPMC_CONFIG6, 0 \
>
> This is completely unnecessary implementation IMHO, where required,
> the board files can register
> their own NAND device timings on a need basis.
> NOTE: timing values change based on L3 clk -> e..g 3630 means that ALL
> the above timing values
> are invalid as L3 is at 200Mhz!
>
You are correct!
Not that this is a surprise :P
Agreeing with Nishanth..
Tom
>>>> + };
>>>> +
>>>> +#ifdef OMAP34XX_GPMC_NAND_SMNAND
>>>> +GPMC_NAND(SMNAND)
>>>> +#else
>>>> +GPMC_NAND(M_NAND)
>>>> +#endif
>>>>
>>>> #if defined(CONFIG_ENV_IS_IN_NAND)
>>>> #define GPMC_CS 0
>>>> @@ -246,7 +253,7 @@ void gpmc_init(void)
>>>> sdelay(1000);
>>>>
>>>> #if defined(CONFIG_CMD_NAND) /* CS 0 */
>>>> - gpmc_config = gpmc_m_nand;
>>>> + gpmc_config = gpmc_nand;
>>>>
>>>> base = PISMO1_NAND_BASE;
>>>> size = PISMO1_NAND_SIZE;
>
> IMHO, NAK.
> Regards,
> Nishanth Menon
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-11-15 20:08 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-11 8:03 [U-Boot] [PATCH] omap3: allow slection of NAND GPMC settings based on board config Mike Rapoport
2009-11-15 9:22 ` Mike Rapoport
2009-11-15 16:36 ` Tom
2009-11-15 19:25 ` Mike Rapoport
2009-11-15 19:41 ` Nishanth Menon
2009-11-15 20:08 ` Tom
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox