Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-10 Thread Simon Glass
Hi,

On Tue, Apr 10, 2012 at 12:56 AM, Marc Dietrich  wrote:
> Am Montag, 9. April 2012, 21:51:32 schrieb Stephen Warren:
>> On 04/09/2012 05:07 PM, Simon Glass wrote:
>> > Hi Stephen,
>> >
>> > On Mon, Apr 9, 2012 at 3:03 PM, Olof Johansson  wrote:
>> >> On Mon, Apr 9, 2012 at 2:59 PM, Stephen Warren 
> wrote:
>> >>> On 04/09/2012 03:40 PM, Simon Glass wrote:
>>  +Olof
>> 
>>  Hi Stephen,
>> 
>>  On Mon, Apr 9, 2012 at 2:27 PM, Stephen Warren 
> wrote:
>> > On 04/05/2012 03:55 PM, Simon Glass wrote:
>> >> From: Jimmy Zhang 
>> >>
>> >> Set Seaboard to optimal memory settings based on the SOC in use (T20
>> >> or T25).
>> >>
>> >> Signed-off-by: Simon Glass 
>> >> ---
>> >> Changes in v2:
>> >> - Move EMC tables to device tree
>> >> - Removed check for nominal voltage (not needed as it is done just
>> >> before)
>> >>
>> >> Changes in v3:
>> >> - Add better error reporting when EMC setup fails
>> >>
>> >> Changes in v4:
>> >> - Remove support for T20 memory timings
>> >>
>> >> diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c
>> >>
>> >> +/* This rate is hard-coded for now, until fdt provides them */
>> >> +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
>> >> +
>> >> +int board_emc_init(void)
>> >> +{
>> >> +     unsigned rate;
>> >> +
>> >> +     switch (tegra_get_chip_type()) {
>> >> +     default:
>> >> +     case TEGRA_SOC_T20:
>> >> +             debug("%s: EMC timings not supported for T20
>> >> Seaboard\n",
>> >> +                   __func__);
>> >
>> > This isn't Seaboard-specific code, so the string shouldn't say
>> > "Seaboard" there.
>> >
>> > Why not support Tegra20? Many/all of the other Tegra boards U-Boot
>> > supports are Tegra20 not Tegra25.
>> >
>> > Presumably this code doesn't blow up if the EMC tables aren't in the
>> > .dts file; the code should use the tables if they're present,
>> > otherwise
>> > be a no-op.
>> 
>>  I don't mind, we can either go with v3 (with T20) or v4 (without).
>>  Both sets of patches are on the list and the removable of T20 support
>>  is the only change in v4. Please can you discuss this with Olof?
>> >>>
>> >>> IIRC, Olof objected to the incorrect Seaboard .dts file (which contained
>> >>> two unrelated sets of EMC tables for different board variants), not the
>> >>> ability for the EMC driver itself to function on either Tegra20 or
>> >>> Tegra25.
>> >>
>> >> Correct. I objected to the one device tree describing 50% inaccurate
>> >> contents without a documented way to tell the accurate from inaccurate
>> >> (unlike the case with bootid straps).
>> >>
>> >> What we do on the kernel side is that if the existing programming,
>> >> i.e. what's setup by BCT/u-boot is not matching the clocks in the
>> >> table, then we report it but continue with the existing settings. If
>> >> someone passes in bogus (matching) data in both BCT and the device
>> >> tree then all bets are off.
>> >
>> > OK, that's different from what I understood (remove support for T20
>> > Seaboard as was apparently done in the kernel). So I think this means
>> > that this patch should revert back to the original version, right?
>>
>> In the kernel, the Seaboard .dts file only supports Tegra25 since the
>> EMC tables we put into that .dts file are for Tegra25. There is no
>> Seaboard-with-Tegra20 .dts file.
>>
>> I don't believe the EMC driver has any code that cares about
>> Tegra20-vs-Tegra25, so should work just fine for either.
>>
>> In practice, we don't have any .dts files for boards with Tegra20 that
>> contain EMC tables though.
>
> well, that may change in the future. In fact, I have a EMC table here for
> paz00, but only for 333 MHz. I like to submit them once I got 166 MHz values.

OK, I am going to put the T20 code back in and send an updated patch.

Regards,
Simon

>
> Marc
>
>
>
>
>
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-10 Thread Marc Dietrich
Am Montag, 9. April 2012, 21:51:32 schrieb Stephen Warren:
> On 04/09/2012 05:07 PM, Simon Glass wrote:
> > Hi Stephen,
> > 
> > On Mon, Apr 9, 2012 at 3:03 PM, Olof Johansson  wrote:
> >> On Mon, Apr 9, 2012 at 2:59 PM, Stephen Warren  
wrote:
> >>> On 04/09/2012 03:40 PM, Simon Glass wrote:
>  +Olof
>  
>  Hi Stephen,
>  
>  On Mon, Apr 9, 2012 at 2:27 PM, Stephen Warren  
wrote:
> > On 04/05/2012 03:55 PM, Simon Glass wrote:
> >> From: Jimmy Zhang 
> >> 
> >> Set Seaboard to optimal memory settings based on the SOC in use (T20
> >> or T25).
> >> 
> >> Signed-off-by: Simon Glass 
> >> ---
> >> Changes in v2:
> >> - Move EMC tables to device tree
> >> - Removed check for nominal voltage (not needed as it is done just
> >> before)
> >> 
> >> Changes in v3:
> >> - Add better error reporting when EMC setup fails
> >> 
> >> Changes in v4:
> >> - Remove support for T20 memory timings
> >> 
> >> diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c
> >> 
> >> +/* This rate is hard-coded for now, until fdt provides them */
> >> +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
> >> +
> >> +int board_emc_init(void)
> >> +{
> >> + unsigned rate;
> >> +
> >> + switch (tegra_get_chip_type()) {
> >> + default:
> >> + case TEGRA_SOC_T20:
> >> + debug("%s: EMC timings not supported for T20
> >> Seaboard\n",
> >> +   __func__);
> > 
> > This isn't Seaboard-specific code, so the string shouldn't say
> > "Seaboard" there.
> > 
> > Why not support Tegra20? Many/all of the other Tegra boards U-Boot
> > supports are Tegra20 not Tegra25.
> > 
> > Presumably this code doesn't blow up if the EMC tables aren't in the
> > .dts file; the code should use the tables if they're present,
> > otherwise
> > be a no-op.
>  
>  I don't mind, we can either go with v3 (with T20) or v4 (without).
>  Both sets of patches are on the list and the removable of T20 support
>  is the only change in v4. Please can you discuss this with Olof?
> >>> 
> >>> IIRC, Olof objected to the incorrect Seaboard .dts file (which contained
> >>> two unrelated sets of EMC tables for different board variants), not the
> >>> ability for the EMC driver itself to function on either Tegra20 or
> >>> Tegra25.
> >> 
> >> Correct. I objected to the one device tree describing 50% inaccurate
> >> contents without a documented way to tell the accurate from inaccurate
> >> (unlike the case with bootid straps).
> >> 
> >> What we do on the kernel side is that if the existing programming,
> >> i.e. what's setup by BCT/u-boot is not matching the clocks in the
> >> table, then we report it but continue with the existing settings. If
> >> someone passes in bogus (matching) data in both BCT and the device
> >> tree then all bets are off.
> > 
> > OK, that's different from what I understood (remove support for T20
> > Seaboard as was apparently done in the kernel). So I think this means
> > that this patch should revert back to the original version, right?
> 
> In the kernel, the Seaboard .dts file only supports Tegra25 since the
> EMC tables we put into that .dts file are for Tegra25. There is no
> Seaboard-with-Tegra20 .dts file.
> 
> I don't believe the EMC driver has any code that cares about
> Tegra20-vs-Tegra25, so should work just fine for either.
> 
> In practice, we don't have any .dts files for boards with Tegra20 that
> contain EMC tables though.

well, that may change in the future. In fact, I have a EMC table here for 
paz00, but only for 333 MHz. I like to submit them once I got 166 MHz values.

Marc





___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-09 Thread Stephen Warren
On 04/09/2012 05:07 PM, Simon Glass wrote:
> Hi Stephen,
> 
> On Mon, Apr 9, 2012 at 3:03 PM, Olof Johansson  wrote:
>> On Mon, Apr 9, 2012 at 2:59 PM, Stephen Warren  wrote:
>>> On 04/09/2012 03:40 PM, Simon Glass wrote:
 +Olof

 Hi Stephen,

 On Mon, Apr 9, 2012 at 2:27 PM, Stephen Warren  
 wrote:
> On 04/05/2012 03:55 PM, Simon Glass wrote:
>> From: Jimmy Zhang 
>>
>> Set Seaboard to optimal memory settings based on the SOC in use (T20 or 
>> T25).
>>
>> Signed-off-by: Simon Glass 
>> ---
>> Changes in v2:
>> - Move EMC tables to device tree
>> - Removed check for nominal voltage (not needed as it is done just 
>> before)
>>
>> Changes in v3:
>> - Add better error reporting when EMC setup fails
>>
>> Changes in v4:
>> - Remove support for T20 memory timings
>
>> diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c
>
>> +/* This rate is hard-coded for now, until fdt provides them */
>> +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
>> +
>> +int board_emc_init(void)
>> +{
>> + unsigned rate;
>> +
>> + switch (tegra_get_chip_type()) {
>> + default:
>> + case TEGRA_SOC_T20:
>> + debug("%s: EMC timings not supported for T20 Seaboard\n",
>> +   __func__);
>
> This isn't Seaboard-specific code, so the string shouldn't say
> "Seaboard" there.
>
> Why not support Tegra20? Many/all of the other Tegra boards U-Boot
> supports are Tegra20 not Tegra25.
>
> Presumably this code doesn't blow up if the EMC tables aren't in the
> .dts file; the code should use the tables if they're present, otherwise
> be a no-op.

 I don't mind, we can either go with v3 (with T20) or v4 (without).
 Both sets of patches are on the list and the removable of T20 support
 is the only change in v4. Please can you discuss this with Olof?
>>>
>>> IIRC, Olof objected to the incorrect Seaboard .dts file (which contained
>>> two unrelated sets of EMC tables for different board variants), not the
>>> ability for the EMC driver itself to function on either Tegra20 or Tegra25.
>>
>> Correct. I objected to the one device tree describing 50% inaccurate
>> contents without a documented way to tell the accurate from inaccurate
>> (unlike the case with bootid straps).
>>
>> What we do on the kernel side is that if the existing programming,
>> i.e. what's setup by BCT/u-boot is not matching the clocks in the
>> table, then we report it but continue with the existing settings. If
>> someone passes in bogus (matching) data in both BCT and the device
>> tree then all bets are off.
> 
> OK, that's different from what I understood (remove support for T20
> Seaboard as was apparently done in the kernel). So I think this means
> that this patch should revert back to the original version, right?

In the kernel, the Seaboard .dts file only supports Tegra25 since the
EMC tables we put into that .dts file are for Tegra25. There is no
Seaboard-with-Tegra20 .dts file.

I don't believe the EMC driver has any code that cares about
Tegra20-vs-Tegra25, so should work just fine for either.

In practice, we don't have any .dts files for boards with Tegra20 that
contain EMC tables though.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-09 Thread Simon Glass
Hi Stephen,

On Mon, Apr 9, 2012 at 3:03 PM, Olof Johansson  wrote:
> On Mon, Apr 9, 2012 at 2:59 PM, Stephen Warren  wrote:
>> On 04/09/2012 03:40 PM, Simon Glass wrote:
>>> +Olof
>>>
>>> Hi Stephen,
>>>
>>> On Mon, Apr 9, 2012 at 2:27 PM, Stephen Warren  
>>> wrote:
 On 04/05/2012 03:55 PM, Simon Glass wrote:
> From: Jimmy Zhang 
>
> Set Seaboard to optimal memory settings based on the SOC in use (T20 or 
> T25).
>
> Signed-off-by: Simon Glass 
> ---
> Changes in v2:
> - Move EMC tables to device tree
> - Removed check for nominal voltage (not needed as it is done just before)
>
> Changes in v3:
> - Add better error reporting when EMC setup fails
>
> Changes in v4:
> - Remove support for T20 memory timings

> diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c

> +/* This rate is hard-coded for now, until fdt provides them */
> +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
> +
> +int board_emc_init(void)
> +{
> +     unsigned rate;
> +
> +     switch (tegra_get_chip_type()) {
> +     default:
> +     case TEGRA_SOC_T20:
> +             debug("%s: EMC timings not supported for T20 Seaboard\n",
> +                   __func__);

 This isn't Seaboard-specific code, so the string shouldn't say
 "Seaboard" there.

 Why not support Tegra20? Many/all of the other Tegra boards U-Boot
 supports are Tegra20 not Tegra25.

 Presumably this code doesn't blow up if the EMC tables aren't in the
 .dts file; the code should use the tables if they're present, otherwise
 be a no-op.
>>>
>>> I don't mind, we can either go with v3 (with T20) or v4 (without).
>>> Both sets of patches are on the list and the removable of T20 support
>>> is the only change in v4. Please can you discuss this with Olof?
>>
>> IIRC, Olof objected to the incorrect Seaboard .dts file (which contained
>> two unrelated sets of EMC tables for different board variants), not the
>> ability for the EMC driver itself to function on either Tegra20 or Tegra25.
>
> Correct. I objected to the one device tree describing 50% inaccurate
> contents without a documented way to tell the accurate from inaccurate
> (unlike the case with bootid straps).
>
> What we do on the kernel side is that if the existing programming,
> i.e. what's setup by BCT/u-boot is not matching the clocks in the
> table, then we report it but continue with the existing settings. If
> someone passes in bogus (matching) data in both BCT and the device
> tree then all bets are off.

OK, that's different from what I understood (remove support for T20
Seaboard as was apparently done in the kernel). So I think this means
that this patch should revert back to the original version, right?

>
>
> -Olof

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-09 Thread Olof Johansson
On Mon, Apr 9, 2012 at 2:59 PM, Stephen Warren  wrote:
> On 04/09/2012 03:40 PM, Simon Glass wrote:
>> +Olof
>>
>> Hi Stephen,
>>
>> On Mon, Apr 9, 2012 at 2:27 PM, Stephen Warren  wrote:
>>> On 04/05/2012 03:55 PM, Simon Glass wrote:
 From: Jimmy Zhang 

 Set Seaboard to optimal memory settings based on the SOC in use (T20 or 
 T25).

 Signed-off-by: Simon Glass 
 ---
 Changes in v2:
 - Move EMC tables to device tree
 - Removed check for nominal voltage (not needed as it is done just before)

 Changes in v3:
 - Add better error reporting when EMC setup fails

 Changes in v4:
 - Remove support for T20 memory timings
>>>
 diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c
>>>
 +/* This rate is hard-coded for now, until fdt provides them */
 +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
 +
 +int board_emc_init(void)
 +{
 +     unsigned rate;
 +
 +     switch (tegra_get_chip_type()) {
 +     default:
 +     case TEGRA_SOC_T20:
 +             debug("%s: EMC timings not supported for T20 Seaboard\n",
 +                   __func__);
>>>
>>> This isn't Seaboard-specific code, so the string shouldn't say
>>> "Seaboard" there.
>>>
>>> Why not support Tegra20? Many/all of the other Tegra boards U-Boot
>>> supports are Tegra20 not Tegra25.
>>>
>>> Presumably this code doesn't blow up if the EMC tables aren't in the
>>> .dts file; the code should use the tables if they're present, otherwise
>>> be a no-op.
>>
>> I don't mind, we can either go with v3 (with T20) or v4 (without).
>> Both sets of patches are on the list and the removable of T20 support
>> is the only change in v4. Please can you discuss this with Olof?
>
> IIRC, Olof objected to the incorrect Seaboard .dts file (which contained
> two unrelated sets of EMC tables for different board variants), not the
> ability for the EMC driver itself to function on either Tegra20 or Tegra25.

Correct. I objected to the one device tree describing 50% inaccurate
contents without a documented way to tell the accurate from inaccurate
(unlike the case with bootid straps).

What we do on the kernel side is that if the existing programming,
i.e. what's setup by BCT/u-boot is not matching the clocks in the
table, then we report it but continue with the existing settings. If
someone passes in bogus (matching) data in both BCT and the device
tree then all bets are off.


-Olof
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-09 Thread Stephen Warren
On 04/09/2012 03:40 PM, Simon Glass wrote:
> +Olof
> 
> Hi Stephen,
> 
> On Mon, Apr 9, 2012 at 2:27 PM, Stephen Warren  wrote:
>> On 04/05/2012 03:55 PM, Simon Glass wrote:
>>> From: Jimmy Zhang 
>>>
>>> Set Seaboard to optimal memory settings based on the SOC in use (T20 or 
>>> T25).
>>>
>>> Signed-off-by: Simon Glass 
>>> ---
>>> Changes in v2:
>>> - Move EMC tables to device tree
>>> - Removed check for nominal voltage (not needed as it is done just before)
>>>
>>> Changes in v3:
>>> - Add better error reporting when EMC setup fails
>>>
>>> Changes in v4:
>>> - Remove support for T20 memory timings
>>
>>> diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c
>>
>>> +/* This rate is hard-coded for now, until fdt provides them */
>>> +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
>>> +
>>> +int board_emc_init(void)
>>> +{
>>> + unsigned rate;
>>> +
>>> + switch (tegra_get_chip_type()) {
>>> + default:
>>> + case TEGRA_SOC_T20:
>>> + debug("%s: EMC timings not supported for T20 Seaboard\n",
>>> +   __func__);
>>
>> This isn't Seaboard-specific code, so the string shouldn't say
>> "Seaboard" there.
>>
>> Why not support Tegra20? Many/all of the other Tegra boards U-Boot
>> supports are Tegra20 not Tegra25.
>>
>> Presumably this code doesn't blow up if the EMC tables aren't in the
>> .dts file; the code should use the tables if they're present, otherwise
>> be a no-op.
> 
> I don't mind, we can either go with v3 (with T20) or v4 (without).
> Both sets of patches are on the list and the removable of T20 support
> is the only change in v4. Please can you discuss this with Olof?

IIRC, Olof objected to the incorrect Seaboard .dts file (which contained
two unrelated sets of EMC tables for different board variants), not the
ability for the EMC driver itself to function on either Tegra20 or Tegra25.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-09 Thread Simon Glass
+Olof

Hi Stephen,

On Mon, Apr 9, 2012 at 2:27 PM, Stephen Warren  wrote:
> On 04/05/2012 03:55 PM, Simon Glass wrote:
>> From: Jimmy Zhang 
>>
>> Set Seaboard to optimal memory settings based on the SOC in use (T20 or T25).
>>
>> Signed-off-by: Simon Glass 
>> ---
>> Changes in v2:
>> - Move EMC tables to device tree
>> - Removed check for nominal voltage (not needed as it is done just before)
>>
>> Changes in v3:
>> - Add better error reporting when EMC setup fails
>>
>> Changes in v4:
>> - Remove support for T20 memory timings
>
>> diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c
>
>> +/* This rate is hard-coded for now, until fdt provides them */
>> +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
>> +
>> +int board_emc_init(void)
>> +{
>> +     unsigned rate;
>> +
>> +     switch (tegra_get_chip_type()) {
>> +     default:
>> +     case TEGRA_SOC_T20:
>> +             debug("%s: EMC timings not supported for T20 Seaboard\n",
>> +                   __func__);
>
> This isn't Seaboard-specific code, so the string shouldn't say
> "Seaboard" there.
>
> Why not support Tegra20? Many/all of the other Tegra boards U-Boot
> supports are Tegra20 not Tegra25.
>
> Presumably this code doesn't blow up if the EMC tables aren't in the
> .dts file; the code should use the tables if they're present, otherwise
> be a no-op.

I don't mind, we can either go with v3 (with T20) or v4 (without).
Both sets of patches are on the list and the removable of T20 support
is the only change in v4. Please can you discuss this with Olof?

>
>> +             return -1;
>> +     case TEGRA_SOC_T25:
>> +             rate  = EMC_SDRAM_RATE_T25;
>> +             break;
>> +     }
>> +     return tegra_set_emc(gd->fdt_blob, rate);
>> +}

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-09 Thread Stephen Warren
On 04/05/2012 03:55 PM, Simon Glass wrote:
> From: Jimmy Zhang 
> 
> Set Seaboard to optimal memory settings based on the SOC in use (T20 or T25).
> 
> Signed-off-by: Simon Glass 
> ---
> Changes in v2:
> - Move EMC tables to device tree
> - Removed check for nominal voltage (not needed as it is done just before)
> 
> Changes in v3:
> - Add better error reporting when EMC setup fails
> 
> Changes in v4:
> - Remove support for T20 memory timings

> diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c

> +/* This rate is hard-coded for now, until fdt provides them */
> +#define EMC_SDRAM_RATE_T25   (38 * 2 * 1000)
> +
> +int board_emc_init(void)
> +{
> + unsigned rate;
> +
> + switch (tegra_get_chip_type()) {
> + default:
> + case TEGRA_SOC_T20:
> + debug("%s: EMC timings not supported for T20 Seaboard\n",
> +   __func__);

This isn't Seaboard-specific code, so the string shouldn't say
"Seaboard" there.

Why not support Tegra20? Many/all of the other Tegra boards U-Boot
supports are Tegra20 not Tegra25.

Presumably this code doesn't blow up if the EMC tables aren't in the
.dts file; the code should use the tables if they're present, otherwise
be a no-op.

> + return -1;
> + case TEGRA_SOC_T25:
> + rate  = EMC_SDRAM_RATE_T25;
> + break;
> + }
> + return tegra_set_emc(gd->fdt_blob, rate);
> +}
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v4 19/23] tegra: Add EMC settings for Seaboard

2012-04-05 Thread Simon Glass
From: Jimmy Zhang 

Set Seaboard to optimal memory settings based on the SOC in use (T20 or T25).

Signed-off-by: Simon Glass 
---
Changes in v2:
- Move EMC tables to device tree
- Removed check for nominal voltage (not needed as it is done just before)

Changes in v3:
- Add better error reporting when EMC setup fails

Changes in v4:
- Remove support for T20 memory timings

 board/nvidia/common/Makefile |1 +
 board/nvidia/common/board.c  |   13 -
 board/nvidia/common/emc.c|   53 ++
 board/nvidia/common/emc.h|   29 +++
 4 files changed, 94 insertions(+), 2 deletions(-)
 create mode 100644 board/nvidia/common/emc.c
 create mode 100644 board/nvidia/common/emc.h

diff --git a/board/nvidia/common/Makefile b/board/nvidia/common/Makefile
index 3e748fd..a93d458 100644
--- a/board/nvidia/common/Makefile
+++ b/board/nvidia/common/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(VENDOR).o
 
 COBJS-y += board.o
 COBJS-$(CONFIG_SPI_UART_SWITCH) += uart-spi-switch.o
+COBJS-$(CONFIG_TEGRA_CLOCK_SCALING) += emc.o
 
 COBJS  := $(COBJS-y)
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c
index 1d6b002..e2cdb6e 100644
--- a/board/nvidia/common/board.c
+++ b/board/nvidia/common/board.c
@@ -30,6 +30,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -39,6 +40,7 @@
 #include 
 #include 
 #include "board.h"
+#include "emc.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -82,6 +84,8 @@ static void power_det_init(void)
  */
 int board_init(void)
 {
+   int err;
+
/* Do clocks and UART first so that printf() works */
clock_init();
clock_verify();
@@ -105,8 +109,13 @@ int board_init(void)
 # ifdef CONFIG_TEGRA_PMU
if (pmu_set_nominal())
debug("Failed to select nominal voltages\n");
-# endif
-#endif
+#  ifdef CONFIG_TEGRA_CLOCK_SCALING
+   err = board_emc_init();
+   if (err)
+   debug("Memory controller init failed: %d\n", err);
+#  endif
+# endif /* CONFIG_TEGRA_PMU */
+#endif /* CONFIG_TEGRA_I2C */
 
 #ifdef CONFIG_USB_EHCI_TEGRA
pin_mux_usb();
diff --git a/board/nvidia/common/emc.c b/board/nvidia/common/emc.c
new file mode 100644
index 000..e7f68a0
--- /dev/null
+++ b/board/nvidia/common/emc.c
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* This rate is hard-coded for now, until fdt provides them */
+#define EMC_SDRAM_RATE_T25 (38 * 2 * 1000)
+
+int board_emc_init(void)
+{
+   unsigned rate;
+
+   switch (tegra_get_chip_type()) {
+   default:
+   case TEGRA_SOC_T20:
+   debug("%s: EMC timings not supported for T20 Seaboard\n",
+ __func__);
+   return -1;
+   case TEGRA_SOC_T25:
+   rate  = EMC_SDRAM_RATE_T25;
+   break;
+   }
+   return tegra_set_emc(gd->fdt_blob, rate);
+}
diff --git a/board/nvidia/common/emc.h b/board/nvidia/common/emc.h
new file mode 100644
index 000..ec1b115
--- /dev/null
+++ b/board/nvidia/common/emc.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2010,2011 NVIDIA Corporation 
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-130