* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
@ 2009-04-21 16:23 Sanjeev Premi
2009-04-21 16:55 ` Dirk Behme
2009-04-22 21:20 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 2 replies; 11+ messages in thread
From: Sanjeev Premi @ 2009-04-21 16:23 UTC (permalink / raw)
To: u-boot
The function display_board_info() displays the silicon
revision as 2 - based on the return value from get_cpu_rev().
This is incorrect as the current Si version is 3.1
This patch displays the correct version; but does not
change get_cpu_rev() to minimize the code impact.
Signed-off-by: Sanjeev Premi <premi@ti.com>
---
cpu/arm_cortexa8/omap3/sys_info.c | 37 +++++++++++++++++++++++++++++++++++--
1 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/cpu/arm_cortexa8/omap3/sys_info.c b/cpu/arm_cortexa8/omap3/sys_info.c
index b385b91..8c6a4d6 100644
--- a/cpu/arm_cortexa8/omap3/sys_info.c
+++ b/cpu/arm_cortexa8/omap3/sys_info.c
@@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base = (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
+static char omap_revision[8] = "";
+
/*****************************************************************
* dieid_num_r(void) - read and set die ID
*****************************************************************/
@@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
}
+/**
+ * Converts cpu revision into a string
+ */
+void set_omap_revision(void)
+{
+ u32 idcode;
+ ctrl_id_t *id_base;
+ char *str_rev = &omap_revision[0];
+
+ if (get_cpu_rev() == CPU_3430_ES1) {
+ strcat (str_rev, "ES1.0");
+ }
+ else {
+ id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
+
+ idcode = readl(&id_base->idcode);
+
+ if (idcode == 0x1B7AE02F)
+ strcat (str_rev, "ES2.0");
+ else if (idcode == 0x2B7AE02F)
+ strcat (str_rev, "ES2.1");
+ else if (idcode == 0x3B7AE02F)
+ strcat (str_rev, "ES3.0");
+ else if (idcode == 0x4B7AE02F)
+ strcat (str_rev, "ES3.1");
+ else
+ strcat (str_rev, "ES??");
+ }
+}
+
/****************************************************
* is_mem_sdr() - return 1 if mem type in use is SDR
****************************************************/
@@ -232,9 +264,10 @@ void display_board_info(u32 btype)
sec_s = "?";
}
+ set_omap_revision();
- printf("OMAP%s-%s rev %d, CPU-OPP2 L3-165MHz\n", cpu_s,
- sec_s, get_cpu_rev());
+ printf("OMAP%s-%s (%s), CPU-OPP2 L3-165MHz\n", cpu_s,
+ sec_s, omap_revision);
printf("%s + %s/%s\n", sysinfo.board_string,
mem_s, sysinfo.nand_string);
--
1.6.2.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 16:23 [U-Boot] [PATCH] OMAP3: Print correct silicon revision Sanjeev Premi
@ 2009-04-21 16:55 ` Dirk Behme
2009-04-21 18:06 ` Premi, Sanjeev
2009-04-21 18:25 ` Premi, Sanjeev
2009-04-22 21:20 ` Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 2 replies; 11+ messages in thread
From: Dirk Behme @ 2009-04-21 16:55 UTC (permalink / raw)
To: u-boot
Dear Premi,
Sanjeev Premi wrote:
> The function display_board_info() displays the silicon
> revision as 2 - based on the return value from get_cpu_rev().
>
> This is incorrect as the current Si version is 3.1
Thanks for the patch and fixing this!
> This patch displays the correct version; but does not
> change get_cpu_rev() to minimize the code impact.
I wonder if it wouldn't be better (and cleaner) to fix get_cpu_rev()?
A quick grep resulted in 5 (?) locations which might be affected:
./cpu/arm_cortexa8/cpu.c:104: if (get_cpu_rev() == CPU_3430_ES2) {
./cpu/arm_cortexa8/cpu.c:134: if (get_cpu_rev() == CPU_3430_ES2) {
./cpu/arm_cortexa8/omap3/clock.c:173: sil_index = get_cpu_rev() - 1;
./cpu/arm_cortexa8/omap3/sys_info.c:144: if (get_cpu_rev() ==
CPU_3430_ES2)
./cpu/arm_cortexa8/omap3/sys_info.c:237: sec_s,
get_cpu_rev());
If we extend the existing macros
#define CPU_3430_ES1 1
#define CPU_3430_ES2 2
to e.g.
#define CPU_3430_ES10 1
#define CPU_3430_ES20 2
#define CPU_3430_ES21 3
#define CPU_3430_ES30 4
#define CPU_3430_ES31 5
then the three
== CPU_3430_ES2
will simply become
>= CPU_3430_ES20
The sil_index = get_cpu_rev() - 1; needs a deeper look, though.
Regarding the ASCII strings: With the numbers get_cpu_rev() returns
we then could index a const struct with the ASCII strings for the
revision print. E.g.
printf(" ... %s ...", ... omap_revision[get_cpu_rev()] ...);
What do you think?
> Signed-off-by: Sanjeev Premi <premi@ti.com>
> ---
> cpu/arm_cortexa8/omap3/sys_info.c | 37 +++++++++++++++++++++++++++++++++++--
> 1 files changed, 35 insertions(+), 2 deletions(-)
>
> diff --git a/cpu/arm_cortexa8/omap3/sys_info.c b/cpu/arm_cortexa8/omap3/sys_info.c
> index b385b91..8c6a4d6 100644
> --- a/cpu/arm_cortexa8/omap3/sys_info.c
> +++ b/cpu/arm_cortexa8/omap3/sys_info.c
> @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base = (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
> static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
> static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
>
> +static char omap_revision[8] = "";
> +
> /*****************************************************************
> * dieid_num_r(void) - read and set die ID
> *****************************************************************/
> @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
>
> }
>
> +/**
> + * Converts cpu revision into a string
> + */
> +void set_omap_revision(void)
> +{
> + u32 idcode;
> + ctrl_id_t *id_base;
> + char *str_rev = &omap_revision[0];
> +
> + if (get_cpu_rev() == CPU_3430_ES1) {
> + strcat (str_rev, "ES1.0");
> + }
> + else {
> + id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
> +
> + idcode = readl(&id_base->idcode);
> +
> + if (idcode == 0x1B7AE02F)
> + strcat (str_rev, "ES2.0");
> + else if (idcode == 0x2B7AE02F)
> + strcat (str_rev, "ES2.1");
> + else if (idcode == 0x3B7AE02F)
> + strcat (str_rev, "ES3.0");
> + else if (idcode == 0x4B7AE02F)
It looks to me that only the highest nibble of idcode changes here?
Maybe we could better mask & shift it a little and create a nice macro
for it?
Best regards
Dirk
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 16:55 ` Dirk Behme
@ 2009-04-21 18:06 ` Premi, Sanjeev
2009-04-21 18:33 ` Dirk Behme
2009-04-21 18:25 ` Premi, Sanjeev
1 sibling, 1 reply; 11+ messages in thread
From: Premi, Sanjeev @ 2009-04-21 18:06 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
> Sent: Tuesday, April 21, 2009 10:26 PM
> To: Premi, Sanjeev
> Cc: u-boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>
> Dear Premi,
>
> Sanjeev Premi wrote:
> > The function display_board_info() displays the silicon
> > revision as 2 - based on the return value from get_cpu_rev().
> >
> > This is incorrect as the current Si version is 3.1
>
> Thanks for the patch and fixing this!
>
> > This patch displays the correct version; but does not
> > change get_cpu_rev() to minimize the code impact.
>
> I wonder if it wouldn't be better (and cleaner) to fix get_cpu_rev()?
Yes. This is what I started with; but then this is where I felt that
fix may run 'deeper"
u32 get_board_type(void)
{
if (get_cpu_rev() == CPU_3430_ES2)
return sysinfo.board_type_v2;
else
return sysinfo.board_type_v1;
}
I couldn't figure out how this impacts boards other than the EVM.
>
> A quick grep resulted in 5 (?) locations which might be affected:
>
> ./cpu/arm_cortexa8/cpu.c:104: if (get_cpu_rev() == CPU_3430_ES2) {
>
> ./cpu/arm_cortexa8/cpu.c:134: if (get_cpu_rev() == CPU_3430_ES2) {
>
> ./cpu/arm_cortexa8/omap3/clock.c:173: sil_index =
> get_cpu_rev() - 1;
>
> ./cpu/arm_cortexa8/omap3/sys_info.c:144: if (get_cpu_rev() ==
> CPU_3430_ES2)
> ./cpu/arm_cortexa8/omap3/sys_info.c:237: sec_s,
> get_cpu_rev());
>
> If we extend the existing macros
>
> #define CPU_3430_ES1 1
> #define CPU_3430_ES2 2
>
> to e.g.
>
> #define CPU_3430_ES10 1
> #define CPU_3430_ES20 2
> #define CPU_3430_ES21 3
> #define CPU_3430_ES30 4
> #define CPU_3430_ES31 5
>
> then the three
>
> == CPU_3430_ES2
>
> will simply become
>
> >= CPU_3430_ES20
>
> The sil_index = get_cpu_rev() - 1; needs a deeper look, though.
>
> Regarding the ASCII strings: With the numbers get_cpu_rev() returns
> we then could index a const struct with the ASCII strings for the
> revision print. E.g.
>
> printf(" ... %s ...", ... omap_revision[get_cpu_rev()] ...);
>
> What do you think?
>
> > Signed-off-by: Sanjeev Premi <premi@ti.com>
> > ---
> > cpu/arm_cortexa8/omap3/sys_info.c | 37
> +++++++++++++++++++++++++++++++++++--
> > 1 files changed, 35 insertions(+), 2 deletions(-)
> >
> > diff --git a/cpu/arm_cortexa8/omap3/sys_info.c
> b/cpu/arm_cortexa8/omap3/sys_info.c
> > index b385b91..8c6a4d6 100644
> > --- a/cpu/arm_cortexa8/omap3/sys_info.c
> > +++ b/cpu/arm_cortexa8/omap3/sys_info.c
> > @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base =
> (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
> > static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
> > static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
> >
> > +static char omap_revision[8] = "";
> > +
> > /*****************************************************************
> > * dieid_num_r(void) - read and set die ID
> > *****************************************************************/
> > @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
> >
> > }
> >
> > +/**
> > + * Converts cpu revision into a string
> > + */
> > +void set_omap_revision(void)
> > +{
> > + u32 idcode;
> > + ctrl_id_t *id_base;
> > + char *str_rev = &omap_revision[0];
> > +
> > + if (get_cpu_rev() == CPU_3430_ES1) {
> > + strcat (str_rev, "ES1.0");
> > + }
> > + else {
> > + id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
> > +
> > + idcode = readl(&id_base->idcode);
> > +
> > + if (idcode == 0x1B7AE02F)
> > + strcat (str_rev, "ES2.0");
> > + else if (idcode == 0x2B7AE02F)
> > + strcat (str_rev, "ES2.1");
> > + else if (idcode == 0x3B7AE02F)
> > + strcat (str_rev, "ES3.0");
> > + else if (idcode == 0x4B7AE02F)
>
> It looks to me that only the highest nibble of idcode changes here?
> Maybe we could better mask & shift it a little and create a
> nice macro
> for it?
>
> Best regards
>
> Dirk
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 16:55 ` Dirk Behme
2009-04-21 18:06 ` Premi, Sanjeev
@ 2009-04-21 18:25 ` Premi, Sanjeev
2009-04-21 19:34 ` Dirk Behme
1 sibling, 1 reply; 11+ messages in thread
From: Premi, Sanjeev @ 2009-04-21 18:25 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Premi, Sanjeev
> Sent: Tuesday, April 21, 2009 11:37 PM
> To: 'Dirk Behme'
> Cc: u-boot at lists.denx.de
> Subject: RE: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>
>
> > -----Original Message-----
> > From: Dirk Behme [mailto:dirk.behme at googlemail.com]
> > Sent: Tuesday, April 21, 2009 10:26 PM
> > To: Premi, Sanjeev
> > Cc: u-boot at lists.denx.de
> > Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
> >
> > Dear Premi,
> >
> > Sanjeev Premi wrote:
> > > The function display_board_info() displays the silicon
> > > revision as 2 - based on the return value from get_cpu_rev().
> > >
> > > This is incorrect as the current Si version is 3.1
> >
> > Thanks for the patch and fixing this!
> >
> > > This patch displays the correct version; but does not
> > > change get_cpu_rev() to minimize the code impact.
> >
> > I wonder if it wouldn't be better (and cleaner) to fix
> get_cpu_rev()?
>
> Yes. This is what I started with; but then this is where I felt that
> fix may run 'deeper"
>
> u32 get_board_type(void)
> {
> if (get_cpu_rev() == CPU_3430_ES2)
> return sysinfo.board_type_v2;
> else
> return sysinfo.board_type_v1;
> }
>
...sorry, mail 'went' before I wanted to!
> I couldn't figure out how this impacts boards other than the EVM.
Though I admit not having much time looking for the impact. Beyond
this, I believe the fix could be straight forward.
> >
> > A quick grep resulted in 5 (?) locations which might be affected:
> >
> > ./cpu/arm_cortexa8/cpu.c:104: if (get_cpu_rev() ==
> CPU_3430_ES2) {
> >
> > ./cpu/arm_cortexa8/cpu.c:134: if (get_cpu_rev() ==
> CPU_3430_ES2) {
> >
> > ./cpu/arm_cortexa8/omap3/clock.c:173: sil_index =
> > get_cpu_rev() - 1;
> >
> > ./cpu/arm_cortexa8/omap3/sys_info.c:144: if
> (get_cpu_rev() ==
> > CPU_3430_ES2)
> > ./cpu/arm_cortexa8/omap3/sys_info.c:237: sec_s,
> > get_cpu_rev());
> >
> > If we extend the existing macros
> >
> > #define CPU_3430_ES1 1
> > #define CPU_3430_ES2 2
> >
> > to e.g.
> >
> > #define CPU_3430_ES10 1
> > #define CPU_3430_ES20 2
> > #define CPU_3430_ES21 3
> > #define CPU_3430_ES30 4
> > #define CPU_3430_ES31 5
> >
> > then the three
> >
> > == CPU_3430_ES2
> >
> > will simply become
> >
> > >= CPU_3430_ES20
There seems to be a slight differene between the silicon
revision between 34x and 35x for the highest nibble value
for early si revs - ES 1.0 and ES2.0.
> >
> > The sil_index = get_cpu_rev() - 1; needs a deeper look, though.
> >
> > Regarding the ASCII strings: With the numbers get_cpu_rev()
> returns
> > we then could index a const struct with the ASCII strings for the
> > revision print. E.g.
> >
> > printf(" ... %s ...", ... omap_revision[get_cpu_rev()] ...);
> >
> > What do you think?
> >
> > > Signed-off-by: Sanjeev Premi <premi@ti.com>
> > > ---
> > > cpu/arm_cortexa8/omap3/sys_info.c | 37
> > +++++++++++++++++++++++++++++++++++--
> > > 1 files changed, 35 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/cpu/arm_cortexa8/omap3/sys_info.c
> > b/cpu/arm_cortexa8/omap3/sys_info.c
> > > index b385b91..8c6a4d6 100644
> > > --- a/cpu/arm_cortexa8/omap3/sys_info.c
> > > +++ b/cpu/arm_cortexa8/omap3/sys_info.c
> > > @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base =
> > (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
> > > static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
> > > static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
> > >
> > > +static char omap_revision[8] = "";
> > > +
> > >
> /*****************************************************************
> > > * dieid_num_r(void) - read and set die ID
> > >
> *****************************************************************/
> > > @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
> > >
> > > }
> > >
> > > +/**
> > > + * Converts cpu revision into a string
> > > + */
> > > +void set_omap_revision(void)
> > > +{
> > > + u32 idcode;
> > > + ctrl_id_t *id_base;
> > > + char *str_rev = &omap_revision[0];
> > > +
> > > + if (get_cpu_rev() == CPU_3430_ES1) {
> > > + strcat (str_rev, "ES1.0");
> > > + }
> > > + else {
> > > + id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
> > > +
> > > + idcode = readl(&id_base->idcode);
> > > +
> > > + if (idcode == 0x1B7AE02F)
> > > + strcat (str_rev, "ES2.0");
> > > + else if (idcode == 0x2B7AE02F)
> > > + strcat (str_rev, "ES2.1");
> > > + else if (idcode == 0x3B7AE02F)
> > > + strcat (str_rev, "ES3.0");
> > > + else if (idcode == 0x4B7AE02F)
> >
> > It looks to me that only the highest nibble of idcode changes here?
> > Maybe we could better mask & shift it a little and create a
> > nice macro
> > for it?
It is already done in the kernel; but I am not sure if we could save
much - unless we use the index as you suggest above.
> >
> > Best regards
> >
> > Dirk
> >
> >
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 18:06 ` Premi, Sanjeev
@ 2009-04-21 18:33 ` Dirk Behme
0 siblings, 0 replies; 11+ messages in thread
From: Dirk Behme @ 2009-04-21 18:33 UTC (permalink / raw)
To: u-boot
Premi, Sanjeev wrote:
>> -----Original Message-----
>> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
>> Sent: Tuesday, April 21, 2009 10:26 PM
>> To: Premi, Sanjeev
>> Cc: u-boot at lists.denx.de
>> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>>
>> Dear Premi,
>>
>> Sanjeev Premi wrote:
>>> The function display_board_info() displays the silicon
>>> revision as 2 - based on the return value from get_cpu_rev().
>>>
>>> This is incorrect as the current Si version is 3.1
>> Thanks for the patch and fixing this!
>>
>>> This patch displays the correct version; but does not
>>> change get_cpu_rev() to minimize the code impact.
>> I wonder if it wouldn't be better (and cleaner) to fix get_cpu_rev()?
>
> Yes. This is what I started with; but then this is where I felt that
> fix may run 'deeper"
>
> u32 get_board_type(void)
> {
> if (get_cpu_rev() == CPU_3430_ES2)
> return sysinfo.board_type_v2;
> else
> return sysinfo.board_type_v1;
> }
>
> I couldn't figure out how this impacts boards other than the EVM.
Maybe I missed something, but independent of what this function does,
if we replace
if (get_cpu_rev() == CPU_3430_ES2)
with
if (get_cpu_rev() >= CPU_3430_ES20)
the functionality of this function (i.e. the value returned) wouldn't
change compared to what it actually returns?
Best regards
Dirk
>> A quick grep resulted in 5 (?) locations which might be affected:
>>
>> ./cpu/arm_cortexa8/cpu.c:104: if (get_cpu_rev() == CPU_3430_ES2) {
>>
>> ./cpu/arm_cortexa8/cpu.c:134: if (get_cpu_rev() == CPU_3430_ES2) {
>>
>> ./cpu/arm_cortexa8/omap3/clock.c:173: sil_index =
>> get_cpu_rev() - 1;
>>
>> ./cpu/arm_cortexa8/omap3/sys_info.c:144: if (get_cpu_rev() ==
>> CPU_3430_ES2)
>> ./cpu/arm_cortexa8/omap3/sys_info.c:237: sec_s,
>> get_cpu_rev());
>>
>> If we extend the existing macros
>>
>> #define CPU_3430_ES1 1
>> #define CPU_3430_ES2 2
>>
>> to e.g.
>>
>> #define CPU_3430_ES10 1
>> #define CPU_3430_ES20 2
>> #define CPU_3430_ES21 3
>> #define CPU_3430_ES30 4
>> #define CPU_3430_ES31 5
>>
>> then the three
>>
>> == CPU_3430_ES2
>>
>> will simply become
>>
>> >= CPU_3430_ES20
>>
>> The sil_index = get_cpu_rev() - 1; needs a deeper look, though.
>>
>> Regarding the ASCII strings: With the numbers get_cpu_rev() returns
>> we then could index a const struct with the ASCII strings for the
>> revision print. E.g.
>>
>> printf(" ... %s ...", ... omap_revision[get_cpu_rev()] ...);
>>
>> What do you think?
>>
>>> Signed-off-by: Sanjeev Premi <premi@ti.com>
>>> ---
>>> cpu/arm_cortexa8/omap3/sys_info.c | 37
>> +++++++++++++++++++++++++++++++++++--
>>> 1 files changed, 35 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/cpu/arm_cortexa8/omap3/sys_info.c
>> b/cpu/arm_cortexa8/omap3/sys_info.c
>>> index b385b91..8c6a4d6 100644
>>> --- a/cpu/arm_cortexa8/omap3/sys_info.c
>>> +++ b/cpu/arm_cortexa8/omap3/sys_info.c
>>> @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base =
>> (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
>>> static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
>>> static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
>>>
>>> +static char omap_revision[8] = "";
>>> +
>>> /*****************************************************************
>>> * dieid_num_r(void) - read and set die ID
>>> *****************************************************************/
>>> @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
>>>
>>> }
>>>
>>> +/**
>>> + * Converts cpu revision into a string
>>> + */
>>> +void set_omap_revision(void)
>>> +{
>>> + u32 idcode;
>>> + ctrl_id_t *id_base;
>>> + char *str_rev = &omap_revision[0];
>>> +
>>> + if (get_cpu_rev() == CPU_3430_ES1) {
>>> + strcat (str_rev, "ES1.0");
>>> + }
>>> + else {
>>> + id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
>>> +
>>> + idcode = readl(&id_base->idcode);
>>> +
>>> + if (idcode == 0x1B7AE02F)
>>> + strcat (str_rev, "ES2.0");
>>> + else if (idcode == 0x2B7AE02F)
>>> + strcat (str_rev, "ES2.1");
>>> + else if (idcode == 0x3B7AE02F)
>>> + strcat (str_rev, "ES3.0");
>>> + else if (idcode == 0x4B7AE02F)
>> It looks to me that only the highest nibble of idcode changes here?
>> Maybe we could better mask & shift it a little and create a
>> nice macro
>> for it?
>>
>> Best regards
>>
>> Dirk
>>
>>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 18:25 ` Premi, Sanjeev
@ 2009-04-21 19:34 ` Dirk Behme
2009-04-21 19:38 ` Premi, Sanjeev
2009-04-22 11:40 ` Premi, Sanjeev
0 siblings, 2 replies; 11+ messages in thread
From: Dirk Behme @ 2009-04-21 19:34 UTC (permalink / raw)
To: u-boot
Dear Premi,
Premi, Sanjeev wrote:
>> -----Original Message-----
>> From: Premi, Sanjeev
>> Sent: Tuesday, April 21, 2009 11:37 PM
>> To: 'Dirk Behme'
>> Cc: u-boot at lists.denx.de
>> Subject: RE: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>>
>>
>>> -----Original Message-----
>>> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
>>> Sent: Tuesday, April 21, 2009 10:26 PM
>>> To: Premi, Sanjeev
>>> Cc: u-boot at lists.denx.de
>>> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>>>
>>> Dear Premi,
>>>
>>> Sanjeev Premi wrote:
>>>> The function display_board_info() displays the silicon
>>>> revision as 2 - based on the return value from get_cpu_rev().
>>>>
>>>> This is incorrect as the current Si version is 3.1
>>> Thanks for the patch and fixing this!
>>>
>>>> This patch displays the correct version; but does not
>>>> change get_cpu_rev() to minimize the code impact.
>>> I wonder if it wouldn't be better (and cleaner) to fix
>> get_cpu_rev()?
>>
>> Yes. This is what I started with; but then this is where I felt that
>> fix may run 'deeper"
>>
>> u32 get_board_type(void)
>> {
>> if (get_cpu_rev() == CPU_3430_ES2)
>> return sysinfo.board_type_v2;
>> else
>> return sysinfo.board_type_v1;
>> }
>>
>
> ...sorry, mail 'went' before I wanted to!
>
>> I couldn't figure out how this impacts boards other than the EVM.
>
> Though I admit not having much time looking for the impact. Beyond
> this, I believe the fix could be straight forward.
What's about something like in the attachment? Compile tested only. Do
you like to test it?
Best regards
Dirk
>>> A quick grep resulted in 5 (?) locations which might be affected:
>>>
>>> ./cpu/arm_cortexa8/cpu.c:104: if (get_cpu_rev() ==
>> CPU_3430_ES2) {
>>> ./cpu/arm_cortexa8/cpu.c:134: if (get_cpu_rev() ==
>> CPU_3430_ES2) {
>>> ./cpu/arm_cortexa8/omap3/clock.c:173: sil_index =
>>> get_cpu_rev() - 1;
>>>
>>> ./cpu/arm_cortexa8/omap3/sys_info.c:144: if
>> (get_cpu_rev() ==
>>> CPU_3430_ES2)
>>> ./cpu/arm_cortexa8/omap3/sys_info.c:237: sec_s,
>>> get_cpu_rev());
>>>
>>> If we extend the existing macros
>>>
>>> #define CPU_3430_ES1 1
>>> #define CPU_3430_ES2 2
>>>
>>> to e.g.
>>>
>>> #define CPU_3430_ES10 1
>>> #define CPU_3430_ES20 2
>>> #define CPU_3430_ES21 3
>>> #define CPU_3430_ES30 4
>>> #define CPU_3430_ES31 5
>>>
>>> then the three
>>>
>>> == CPU_3430_ES2
>>>
>>> will simply become
>>>
>>> >= CPU_3430_ES20
>
> There seems to be a slight differene between the silicon
> revision between 34x and 35x for the highest nibble value
> for early si revs - ES 1.0 and ES2.0.
>
>>> The sil_index = get_cpu_rev() - 1; needs a deeper look, though.
>>>
>>> Regarding the ASCII strings: With the numbers get_cpu_rev()
>> returns
>>> we then could index a const struct with the ASCII strings for the
>>> revision print. E.g.
>>>
>>> printf(" ... %s ...", ... omap_revision[get_cpu_rev()] ...);
>>>
>>> What do you think?
>>>
>>>> Signed-off-by: Sanjeev Premi <premi@ti.com>
>>>> ---
>>>> cpu/arm_cortexa8/omap3/sys_info.c | 37
>>> +++++++++++++++++++++++++++++++++++--
>>>> 1 files changed, 35 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/cpu/arm_cortexa8/omap3/sys_info.c
>>> b/cpu/arm_cortexa8/omap3/sys_info.c
>>>> index b385b91..8c6a4d6 100644
>>>> --- a/cpu/arm_cortexa8/omap3/sys_info.c
>>>> +++ b/cpu/arm_cortexa8/omap3/sys_info.c
>>>> @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base =
>>> (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
>>>> static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
>>>> static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
>>>>
>>>> +static char omap_revision[8] = "";
>>>> +
>>>>
>> /*****************************************************************
>>>> * dieid_num_r(void) - read and set die ID
>>>>
>> *****************************************************************/
>>>> @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
>>>>
>>>> }
>>>>
>>>> +/**
>>>> + * Converts cpu revision into a string
>>>> + */
>>>> +void set_omap_revision(void)
>>>> +{
>>>> + u32 idcode;
>>>> + ctrl_id_t *id_base;
>>>> + char *str_rev = &omap_revision[0];
>>>> +
>>>> + if (get_cpu_rev() == CPU_3430_ES1) {
>>>> + strcat (str_rev, "ES1.0");
>>>> + }
>>>> + else {
>>>> + id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
>>>> +
>>>> + idcode = readl(&id_base->idcode);
>>>> +
>>>> + if (idcode == 0x1B7AE02F)
>>>> + strcat (str_rev, "ES2.0");
>>>> + else if (idcode == 0x2B7AE02F)
>>>> + strcat (str_rev, "ES2.1");
>>>> + else if (idcode == 0x3B7AE02F)
>>>> + strcat (str_rev, "ES3.0");
>>>> + else if (idcode == 0x4B7AE02F)
>>> It looks to me that only the highest nibble of idcode changes here?
>>> Maybe we could better mask & shift it a little and create a
>>> nice macro
>>> for it?
>
> It is already done in the kernel; but I am not sure if we could save
> much - unless we use the index as you suggest above.
>
>>> Best regards
>>>
>>> Dirk
>>>
>>>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: omap3_revision.txt
Url: http://lists.denx.de/pipermail/u-boot/attachments/20090421/bdcb6b06/attachment-0001.txt
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 19:34 ` Dirk Behme
@ 2009-04-21 19:38 ` Premi, Sanjeev
2009-04-22 11:40 ` Premi, Sanjeev
1 sibling, 0 replies; 11+ messages in thread
From: Premi, Sanjeev @ 2009-04-21 19:38 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
> Sent: Wednesday, April 22, 2009 1:04 AM
> To: Premi, Sanjeev
> Cc: u-boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>
> Dear Premi,
>
> Premi, Sanjeev wrote:
> >> -----Original Message-----
> >> From: Premi, Sanjeev
> >> Sent: Tuesday, April 21, 2009 11:37 PM
> >> To: 'Dirk Behme'
> >> Cc: u-boot at lists.denx.de
> >> Subject: RE: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
> >>
> >>
> >>> -----Original Message-----
> >>> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
> >>> Sent: Tuesday, April 21, 2009 10:26 PM
> >>> To: Premi, Sanjeev
> >>> Cc: u-boot at lists.denx.de
> >>> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct
> silicon revision
> >>>
> >>> Dear Premi,
> >>>
> >>> Sanjeev Premi wrote:
> >>>> The function display_board_info() displays the silicon
> >>>> revision as 2 - based on the return value from get_cpu_rev().
> >>>>
> >>>> This is incorrect as the current Si version is 3.1
> >>> Thanks for the patch and fixing this!
> >>>
> >>>> This patch displays the correct version; but does not
> >>>> change get_cpu_rev() to minimize the code impact.
> >>> I wonder if it wouldn't be better (and cleaner) to fix
> >> get_cpu_rev()?
> >>
> >> Yes. This is what I started with; but then this is where I
> felt that
> >> fix may run 'deeper"
> >>
> >> u32 get_board_type(void)
> >> {
> >> if (get_cpu_rev() == CPU_3430_ES2)
> >> return sysinfo.board_type_v2;
> >> else
> >> return sysinfo.board_type_v1;
> >> }
> >>
> >
> > ...sorry, mail 'went' before I wanted to!
> >
> >> I couldn't figure out how this impacts boards other than the EVM.
> >
> > Though I admit not having much time looking for the impact. Beyond
> > this, I believe the fix could be straight forward.
>
> What's about something like in the attachment? Compile tested
> only. Do
> you like to test it?
Sure. Will do it in the morning...
I did make few changes since your last mail as well.
Will post the updates later in the day.
~sanjeev
>
> Best regards
>
> Dirk
>
> >>> A quick grep resulted in 5 (?) locations which might be affected:
> >>>
> >>> ./cpu/arm_cortexa8/cpu.c:104: if (get_cpu_rev() ==
> >> CPU_3430_ES2) {
> >>> ./cpu/arm_cortexa8/cpu.c:134: if (get_cpu_rev() ==
> >> CPU_3430_ES2) {
> >>> ./cpu/arm_cortexa8/omap3/clock.c:173: sil_index =
> >>> get_cpu_rev() - 1;
> >>>
> >>> ./cpu/arm_cortexa8/omap3/sys_info.c:144: if
> >> (get_cpu_rev() ==
> >>> CPU_3430_ES2)
> >>> ./cpu/arm_cortexa8/omap3/sys_info.c:237: sec_s,
> >>> get_cpu_rev());
> >>>
> >>> If we extend the existing macros
> >>>
> >>> #define CPU_3430_ES1 1
> >>> #define CPU_3430_ES2 2
> >>>
> >>> to e.g.
> >>>
> >>> #define CPU_3430_ES10 1
> >>> #define CPU_3430_ES20 2
> >>> #define CPU_3430_ES21 3
> >>> #define CPU_3430_ES30 4
> >>> #define CPU_3430_ES31 5
> >>>
> >>> then the three
> >>>
> >>> == CPU_3430_ES2
> >>>
> >>> will simply become
> >>>
> >>> >= CPU_3430_ES20
> >
> > There seems to be a slight differene between the silicon
> > revision between 34x and 35x for the highest nibble value
> > for early si revs - ES 1.0 and ES2.0.
> >
> >>> The sil_index = get_cpu_rev() - 1; needs a deeper look, though.
> >>>
> >>> Regarding the ASCII strings: With the numbers get_cpu_rev()
> >> returns
> >>> we then could index a const struct with the ASCII strings for the
> >>> revision print. E.g.
> >>>
> >>> printf(" ... %s ...", ... omap_revision[get_cpu_rev()] ...);
> >>>
> >>> What do you think?
> >>>
> >>>> Signed-off-by: Sanjeev Premi <premi@ti.com>
> >>>> ---
> >>>> cpu/arm_cortexa8/omap3/sys_info.c | 37
> >>> +++++++++++++++++++++++++++++++++++--
> >>>> 1 files changed, 35 insertions(+), 2 deletions(-)
> >>>>
> >>>> diff --git a/cpu/arm_cortexa8/omap3/sys_info.c
> >>> b/cpu/arm_cortexa8/omap3/sys_info.c
> >>>> index b385b91..8c6a4d6 100644
> >>>> --- a/cpu/arm_cortexa8/omap3/sys_info.c
> >>>> +++ b/cpu/arm_cortexa8/omap3/sys_info.c
> >>>> @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base =
> >>> (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
> >>>> static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
> >>>> static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
> >>>>
> >>>> +static char omap_revision[8] = "";
> >>>> +
> >>>>
> >> /*****************************************************************
> >>>> * dieid_num_r(void) - read and set die ID
> >>>>
> >> *****************************************************************/
> >>>> @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
> >>>>
> >>>> }
> >>>>
> >>>> +/**
> >>>> + * Converts cpu revision into a string
> >>>> + */
> >>>> +void set_omap_revision(void)
> >>>> +{
> >>>> + u32 idcode;
> >>>> + ctrl_id_t *id_base;
> >>>> + char *str_rev = &omap_revision[0];
> >>>> +
> >>>> + if (get_cpu_rev() == CPU_3430_ES1) {
> >>>> + strcat (str_rev, "ES1.0");
> >>>> + }
> >>>> + else {
> >>>> + id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
> >>>> +
> >>>> + idcode = readl(&id_base->idcode);
> >>>> +
> >>>> + if (idcode == 0x1B7AE02F)
> >>>> + strcat (str_rev, "ES2.0");
> >>>> + else if (idcode == 0x2B7AE02F)
> >>>> + strcat (str_rev, "ES2.1");
> >>>> + else if (idcode == 0x3B7AE02F)
> >>>> + strcat (str_rev, "ES3.0");
> >>>> + else if (idcode == 0x4B7AE02F)
> >>> It looks to me that only the highest nibble of idcode
> changes here?
> >>> Maybe we could better mask & shift it a little and create a
> >>> nice macro
> >>> for it?
> >
> > It is already done in the kernel; but I am not sure if we could save
> > much - unless we use the index as you suggest above.
> >
> >>> Best regards
> >>>
> >>> Dirk
> >>>
> >>>
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 19:34 ` Dirk Behme
2009-04-21 19:38 ` Premi, Sanjeev
@ 2009-04-22 11:40 ` Premi, Sanjeev
2009-04-22 15:40 ` Dirk Behme
1 sibling, 1 reply; 11+ messages in thread
From: Premi, Sanjeev @ 2009-04-22 11:40 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
> Sent: Wednesday, April 22, 2009 1:04 AM
> To: Premi, Sanjeev
> Cc: u-boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>
> Dear Premi,
>
> Premi, Sanjeev wrote:
> >> -----Original Message-----
> >> From: Premi, Sanjeev
> >> Sent: Tuesday, April 21, 2009 11:37 PM
> >> To: 'Dirk Behme'
> >> Cc: u-boot at lists.denx.de
> >> Subject: RE: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
> >>
> >>
> >>> -----Original Message-----
> >>> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
> >>> Sent: Tuesday, April 21, 2009 10:26 PM
> >>> To: Premi, Sanjeev
> >>> Cc: u-boot at lists.denx.de
> >>> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct
> silicon revision
> >>>
> >>> Dear Premi,
> >>>
> >>> Sanjeev Premi wrote:
> >>>> The function display_board_info() displays the silicon
> >>>> revision as 2 - based on the return value from get_cpu_rev().
> >>>>
> >>>> This is incorrect as the current Si version is 3.1
> >>> Thanks for the patch and fixing this!
> >>>
> >>>> This patch displays the correct version; but does not
> >>>> change get_cpu_rev() to minimize the code impact.
> >>> I wonder if it wouldn't be better (and cleaner) to fix
> >> get_cpu_rev()?
> >>
> >> Yes. This is what I started with; but then this is where I
> felt that
> >> fix may run 'deeper"
> >>
> >> u32 get_board_type(void)
> >> {
> >> if (get_cpu_rev() == CPU_3430_ES2)
> >> return sysinfo.board_type_v2;
> >> else
> >> return sysinfo.board_type_v1;
> >> }
> >>
> >
> > ...sorry, mail 'went' before I wanted to!
> >
> >> I couldn't figure out how this impacts boards other than the EVM.
> >
> > Though I admit not having much time looking for the impact. Beyond
> > this, I believe the fix could be straight forward.
>
> What's about something like in the attachment? Compile tested
> only. Do
> you like to test it?
Yes, this works on the EVM.
I did spend some more time & fouund that value from get_board_type is
ignored in the display_board_info().
I will submit a patch to remove this function if it is really not needed.
Best regards,
Sanjeev
>
> Best regards
>
> Dirk
>
[...snip...]
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-22 11:40 ` Premi, Sanjeev
@ 2009-04-22 15:40 ` Dirk Behme
0 siblings, 0 replies; 11+ messages in thread
From: Dirk Behme @ 2009-04-22 15:40 UTC (permalink / raw)
To: u-boot
Premi, Sanjeev wrote:
>> -----Original Message-----
>> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
>> Sent: Wednesday, April 22, 2009 1:04 AM
>> To: Premi, Sanjeev
>> Cc: u-boot at lists.denx.de
>> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>>
>> Dear Premi,
>>
>> Premi, Sanjeev wrote:
>>>> -----Original Message-----
>>>> From: Premi, Sanjeev
>>>> Sent: Tuesday, April 21, 2009 11:37 PM
>>>> To: 'Dirk Behme'
>>>> Cc: u-boot at lists.denx.de
>>>> Subject: RE: [U-Boot] [PATCH] OMAP3: Print correct silicon revision
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: Dirk Behme [mailto:dirk.behme at googlemail.com]
>>>>> Sent: Tuesday, April 21, 2009 10:26 PM
>>>>> To: Premi, Sanjeev
>>>>> Cc: u-boot at lists.denx.de
>>>>> Subject: Re: [U-Boot] [PATCH] OMAP3: Print correct
>> silicon revision
>>>>> Dear Premi,
>>>>>
>>>>> Sanjeev Premi wrote:
>>>>>> The function display_board_info() displays the silicon
>>>>>> revision as 2 - based on the return value from get_cpu_rev().
>>>>>>
>>>>>> This is incorrect as the current Si version is 3.1
>>>>> Thanks for the patch and fixing this!
>>>>>
>>>>>> This patch displays the correct version; but does not
>>>>>> change get_cpu_rev() to minimize the code impact.
>>>>> I wonder if it wouldn't be better (and cleaner) to fix
>>>> get_cpu_rev()?
>>>>
>>>> Yes. This is what I started with; but then this is where I
>> felt that
>>>> fix may run 'deeper"
>>>>
>>>> u32 get_board_type(void)
>>>> {
>>>> if (get_cpu_rev() == CPU_3430_ES2)
>>>> return sysinfo.board_type_v2;
>>>> else
>>>> return sysinfo.board_type_v1;
>>>> }
>>>>
>>> ...sorry, mail 'went' before I wanted to!
>>>
>>>> I couldn't figure out how this impacts boards other than the EVM.
>>> Though I admit not having much time looking for the impact. Beyond
>>> this, I believe the fix could be straight forward.
>> What's about something like in the attachment? Compile tested
>> only. Do
>> you like to test it?
>
> Yes, this works on the EVM.
Great, thanks for testing!
> I did spend some more time & fouund that value from get_board_type is
> ignored in the display_board_info().
Hmm, yes, good catch.
> I will submit a patch to remove this function if it is really not needed.
Ok.
Best regards
Dirk
Btw.: Updated patch in attachment, maybe it helps you. Tested on Beagle.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: omap3_revision.txt
Url: http://lists.denx.de/pipermail/u-boot/attachments/20090422/34f85878/attachment-0001.txt
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-21 16:23 [U-Boot] [PATCH] OMAP3: Print correct silicon revision Sanjeev Premi
2009-04-21 16:55 ` Dirk Behme
@ 2009-04-22 21:20 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-23 14:45 ` Dirk Behme
1 sibling, 1 reply; 11+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-22 21:20 UTC (permalink / raw)
To: u-boot
On 21:53 Tue 21 Apr , Sanjeev Premi wrote:
> The function display_board_info() displays the silicon
> revision as 2 - based on the return value from get_cpu_rev().
>
> This is incorrect as the current Si version is 3.1
>
> This patch displays the correct version; but does not
> change get_cpu_rev() to minimize the code impact.
>
> Signed-off-by: Sanjeev Premi <premi@ti.com>
> ---
> cpu/arm_cortexa8/omap3/sys_info.c | 37 +++++++++++++++++++++++++++++++++++--
> 1 files changed, 35 insertions(+), 2 deletions(-)
>
> diff --git a/cpu/arm_cortexa8/omap3/sys_info.c b/cpu/arm_cortexa8/omap3/sys_info.c
> index b385b91..8c6a4d6 100644
> --- a/cpu/arm_cortexa8/omap3/sys_info.c
> +++ b/cpu/arm_cortexa8/omap3/sys_info.c
> @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base = (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
> static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
> static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
>
> +static char omap_revision[8] = "";
why 8?
you only have 5 chars
so
static char omap_revision[6] = "";
will be enough
> +
> /*****************************************************************
> * dieid_num_r(void) - read and set die ID
> *****************************************************************/
> @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
>
> }
>
why not this
in the cpu header
#define ES20 1
#define ES21 2
#define ES30 3
#define ES31 4
> +/**
> + * Converts cpu revision into a string
> + */
> +void set_omap_revision(void)
char* get_str_omap_revision(void)
{
u32 idcode;
ctrl_id_t *id_base;
if (omap_revision[0] != '\0')
return omap_revision;
if (get_cpu_rev() == CPU_3430_ES1) {
strcat (omap_revision, "ES1.0");
}
else {
id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
idcode = readl(&id_base->idcode) >> 28;
switch(idcode) {
case ES20:
strcat (omap_revision, "ES2.0");
break;
case ES21:
strcat (omap_revision, "ES2.1");
break;
case ES30:
strcat (omap_revision, "ES3.0");
break;
case ES31:
strcat (omap_revision, "ES3.1");
break;
default:
strcat (str_rev, "ES??");
}
return omap_revision;
}
Best Regards,
J.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH] OMAP3: Print correct silicon revision
2009-04-22 21:20 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2009-04-23 14:45 ` Dirk Behme
0 siblings, 0 replies; 11+ messages in thread
From: Dirk Behme @ 2009-04-23 14:45 UTC (permalink / raw)
To: u-boot
Dear Jean-Christophe,
Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 21:53 Tue 21 Apr , Sanjeev Premi wrote:
>> The function display_board_info() displays the silicon
>> revision as 2 - based on the return value from get_cpu_rev().
>>
>> This is incorrect as the current Si version is 3.1
>>
>> This patch displays the correct version; but does not
>> change get_cpu_rev() to minimize the code impact.
>>
>> Signed-off-by: Sanjeev Premi <premi@ti.com>
>> ---
>> cpu/arm_cortexa8/omap3/sys_info.c | 37 +++++++++++++++++++++++++++++++++++--
>> 1 files changed, 35 insertions(+), 2 deletions(-)
>>
>> diff --git a/cpu/arm_cortexa8/omap3/sys_info.c b/cpu/arm_cortexa8/omap3/sys_info.c
>> index b385b91..8c6a4d6 100644
>> --- a/cpu/arm_cortexa8/omap3/sys_info.c
>> +++ b/cpu/arm_cortexa8/omap3/sys_info.c
>> @@ -36,6 +36,8 @@ static gpmc_csx_t *gpmc_cs_base = (gpmc_csx_t *)GPMC_CONFIG_CS0_BASE;
>> static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
>> static ctrl_t *ctrl_base = (ctrl_t *)OMAP34XX_CTRL_BASE;
>>
>> +static char omap_revision[8] = "";
> why 8?
> you only have 5 chars
> so
> static char omap_revision[6] = "";
> will be enough
>> +
>> /*****************************************************************
>> * dieid_num_r(void) - read and set die ID
>> *****************************************************************/
>> @@ -90,6 +92,36 @@ u32 get_cpu_rev(void)
>>
>> }
>>
> why not this
> in the cpu header
>
> #define ES20 1
> #define ES21 2
> #define ES30 3
> #define ES31 4
>> +/**
>> + * Converts cpu revision into a string
>> + */
>> +void set_omap_revision(void)
> char* get_str_omap_revision(void)
> {
> u32 idcode;
> ctrl_id_t *id_base;
>
> if (omap_revision[0] != '\0')
> return omap_revision;
>
> if (get_cpu_rev() == CPU_3430_ES1) {
> strcat (omap_revision, "ES1.0");
> }
> else {
> id_base = (ctrl_id_t *)OMAP34XX_ID_L4_IO_BASE;
>
> idcode = readl(&id_base->idcode) >> 28;
>
> switch(idcode) {
> case ES20:
> strcat (omap_revision, "ES2.0");
> break;
> case ES21:
> strcat (omap_revision, "ES2.1");
> break;
> case ES30:
> strcat (omap_revision, "ES3.0");
> break;
> case ES31:
> strcat (omap_revision, "ES3.1");
> break;
> default:
> strcat (str_rev, "ES??");
> }
> return omap_revision;
> }
Did you notice that we had some discussion about this and that Premi
will send an completely redone patch, soon?
http://lists.denx.de/pipermail/u-boot/2009-April/051186.html
http://lists.denx.de/pipermail/u-boot/2009-April/051187.html
http://lists.denx.de/pipermail/u-boot/2009-April/051191.html
http://lists.denx.de/pipermail/u-boot/2009-April/051189.html
http://lists.denx.de/pipermail/u-boot/2009-April/051193.html
http://lists.denx.de/pipermail/u-boot/2009-April/051194.html
http://lists.denx.de/pipermail/u-boot/2009-April/051228.html
http://lists.denx.de/pipermail/u-boot/2009-April/051241.html
Dirk
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-04-23 14:45 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-21 16:23 [U-Boot] [PATCH] OMAP3: Print correct silicon revision Sanjeev Premi
2009-04-21 16:55 ` Dirk Behme
2009-04-21 18:06 ` Premi, Sanjeev
2009-04-21 18:33 ` Dirk Behme
2009-04-21 18:25 ` Premi, Sanjeev
2009-04-21 19:34 ` Dirk Behme
2009-04-21 19:38 ` Premi, Sanjeev
2009-04-22 11:40 ` Premi, Sanjeev
2009-04-22 15:40 ` Dirk Behme
2009-04-22 21:20 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-23 14:45 ` Dirk Behme
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox