public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] Add bootcount to AT91
@ 2010-01-14 14:00 Anders Darander
  2010-01-20  9:02 ` Anders Darander
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Anders Darander @ 2010-01-14 14:00 UTC (permalink / raw)
  To: u-boot

From: Anders Darander <ad@datarespons.se>

Use AT91_GPBR 3 as a bootcount register.

Signed-off-by: Anders Darander <ad@datarespons.se>
---
 cpu/arm926ejs/at91/cpu.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/cpu/arm926ejs/at91/cpu.c b/cpu/arm926ejs/at91/cpu.c
index f2f7b62..09c1376 100644
--- a/cpu/arm926ejs/at91/cpu.c
+++ b/cpu/arm926ejs/at91/cpu.c
@@ -31,6 +31,11 @@
 #define AT91_MAIN_CLOCK 0
 #endif
 
+/* The at91sam9260 has 4 GPBR (0-3), we'll use the last one, nr 3,
+ * to keep track of the bootcount. */
+#define AT91_GPBR_BOOTCOUNT_REGISTER 3
+#define AT91_BOOTCOUNT_ADDRESS (AT91_GPBR + 4*AT91_GPBR_BOOTCOUNT_REGISTER)
+
 int arch_cpu_init(void)
 {
 	return at91_clock_init(AT91_MAIN_CLOCK);
@@ -52,3 +57,26 @@ int print_cpuinfo(void)
 	return 0;
 }
 #endif
+
+#ifdef CONFIG_BOOTCOUNT_LIMIT
+
+void bootcount_store (ulong a)
+{
+	volatile ulong *save_addr =
+		(volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS);
+
+	*save_addr = (BOOTCOUNT_MAGIC & 0xffff0000) | a;
+}
+
+ulong bootcount_load (void)
+{
+	volatile ulong *save_addr =
+		(volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS);
+
+	if ((*save_addr & 0xffff0000) != (BOOTCOUNT_MAGIC & 0xffff0000))
+		return 0;
+	else
+		return (*save_addr & 0x0000ffff);
+}
+
+#endif /* CONFIG_BOOTCOUNT_LIMIT */
-- 
1.6.6

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-01-14 14:00 [U-Boot] [PATCH] Add bootcount to AT91 Anders Darander
@ 2010-01-20  9:02 ` Anders Darander
  2010-02-04 14:30 ` Anders Darander
  2010-02-25 14:24 ` Tom
  2 siblings, 0 replies; 9+ messages in thread
From: Anders Darander @ 2010-01-20  9:02 UTC (permalink / raw)
  To: u-boot

Hi all,

As the merge window has closed, I'd just like to bump my old mail
below and ask for comments. Currently the actual register to use is
hard-coded. I'm unsure of what the current status is when it comes to
include new architecture specific CONFIG_*-options.

The bootcount-feature is supported in u-boot for some PPC-boards. The
patch below is basically a rip-off of one of these features, adapted
for the AT91SAM9-architecture. It is tested on an olimex board with an
at91sam9260.

I'd be very happy if we could get this feature mainlined. (I've also
got some replies off-list, from people wanting to use this feature.)

Thanks in advance!
Best regards,
Anders

On Thu, Jan 14, 2010 at 15:00, Anders Darander
<anders.darander@gmail.com> wrote:
> From: Anders Darander <ad@datarespons.se>
>
> Use AT91_GPBR 3 as a bootcount register.
>
> Signed-off-by: Anders Darander <ad@datarespons.se>
> ---
> ?cpu/arm926ejs/at91/cpu.c | ? 28 ++++++++++++++++++++++++++++
> ?1 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/cpu/arm926ejs/at91/cpu.c b/cpu/arm926ejs/at91/cpu.c
> index f2f7b62..09c1376 100644
> --- a/cpu/arm926ejs/at91/cpu.c
> +++ b/cpu/arm926ejs/at91/cpu.c
> @@ -31,6 +31,11 @@
> ?#define AT91_MAIN_CLOCK 0
> ?#endif
>
> +/* The at91sam9260 has 4 GPBR (0-3), we'll use the last one, nr 3,
> + * to keep track of the bootcount. */
> +#define AT91_GPBR_BOOTCOUNT_REGISTER 3
> +#define AT91_BOOTCOUNT_ADDRESS (AT91_GPBR + 4*AT91_GPBR_BOOTCOUNT_REGISTER)
> +
> ?int arch_cpu_init(void)
> ?{
> ? ? ? ?return at91_clock_init(AT91_MAIN_CLOCK);
> @@ -52,3 +57,26 @@ int print_cpuinfo(void)
> ? ? ? ?return 0;
> ?}
> ?#endif
> +
> +#ifdef CONFIG_BOOTCOUNT_LIMIT
> +
> +void bootcount_store (ulong a)
> +{
> + ? ? ? volatile ulong *save_addr =
> + ? ? ? ? ? ? ? (volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS);
> +
> + ? ? ? *save_addr = (BOOTCOUNT_MAGIC & 0xffff0000) | a;
> +}
> +
> +ulong bootcount_load (void)
> +{
> + ? ? ? volatile ulong *save_addr =
> + ? ? ? ? ? ? ? (volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS);
> +
> + ? ? ? if ((*save_addr & 0xffff0000) != (BOOTCOUNT_MAGIC & 0xffff0000))
> + ? ? ? ? ? ? ? return 0;
> + ? ? ? else
> + ? ? ? ? ? ? ? return (*save_addr & 0x0000ffff);
> +}
> +
> +#endif /* CONFIG_BOOTCOUNT_LIMIT */
> --
> 1.6.6
>
>



-- 
Anders Darander
EPO guidelines 1978: "If the contribution to the known art resides
solely in a computer program then the subject matter is not
patentable in whatever manner it may be presented in the claims."

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-01-14 14:00 [U-Boot] [PATCH] Add bootcount to AT91 Anders Darander
  2010-01-20  9:02 ` Anders Darander
@ 2010-02-04 14:30 ` Anders Darander
  2010-02-07 14:35   ` Tom
  2010-02-25 14:24 ` Tom
  2 siblings, 1 reply; 9+ messages in thread
From: Anders Darander @ 2010-02-04 14:30 UTC (permalink / raw)
  To: u-boot

Hi,

On Thu, Jan 14, 2010 at 15:00, Anders Darander
<anders.darander@gmail.com> wrote:
> From: Anders Darander <ad@datarespons.se>
>
> Use AT91_GPBR 3 as a bootcount register.
>

As a followup to Werners list of patches not incorporated (from some
time ago), I'd just like to get a comment on the status of this patch.


Should it get reworked somehow, or  could it be integrated?

Regards,
Anders Darander

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-02-04 14:30 ` Anders Darander
@ 2010-02-07 14:35   ` Tom
  2010-02-08  7:09     ` Anders Darander
  0 siblings, 1 reply; 9+ messages in thread
From: Tom @ 2010-02-07 14:35 UTC (permalink / raw)
  To: u-boot

Anders Darander wrote:
> Hi,
> 
> On Thu, Jan 14, 2010 at 15:00, Anders Darander
> <anders.darander@gmail.com> wrote:
>> From: Anders Darander <ad@datarespons.se>
>>
>> Use AT91_GPBR 3 as a bootcount register.
>>
> 
> As a followup to Werners list of patches not incorporated (from some
> time ago), I'd just like to get a comment on the status of this patch.
> 
> 
> Should it get reworked somehow, or  could it be integrated?
> 
> Regards,
> Anders Darander
Please send me a link to the original patch.
I will take a look
Tom

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-02-07 14:35   ` Tom
@ 2010-02-08  7:09     ` Anders Darander
  2010-02-08 13:32       ` Tom
  0 siblings, 1 reply; 9+ messages in thread
From: Anders Darander @ 2010-02-08  7:09 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On Sun, Feb 7, 2010 at 15:35, Tom <Tom.Rix@windriver.com> wrote:
>> From: Anders Darander <ad@datarespons.se>
>>>
>>> Use AT91_GPBR 3 as a bootcount register.

> Please send me a link to the original patch.
> I will take a look
> Tom

Here is the link from Werners patch-status mail:
http://article.gmane.org/gmane.comp.boot-loaders.u-boot/73640

(Sorry  for bumping this thread that many times... I'm pretty sure
that you're quite busy...)

Best regards,
Anders Darander

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-02-08  7:09     ` Anders Darander
@ 2010-02-08 13:32       ` Tom
  2010-02-24 14:50         ` Anders Darander
  0 siblings, 1 reply; 9+ messages in thread
From: Tom @ 2010-02-08 13:32 UTC (permalink / raw)
  To: u-boot

Anders Darander wrote:
> Hi Tom,
> 
> On Sun, Feb 7, 2010 at 15:35, Tom <Tom.Rix@windriver.com> wrote:
>>> From: Anders Darander <ad@datarespons.se>
>>>> Use AT91_GPBR 3 as a bootcount register.
> 
>> Please send me a link to the original patch.
>> I will take a look
>> Tom
> 
> Here is the link from Werners patch-status mail:
> http://article.gmane.org/gmane.comp.boot-loaders.u-boot/73640
> 
> (Sorry  for bumping this thread that many times... I'm pretty sure
> that you're quite busy...)

No problem.
Its quite all right to ping me.
I have added your patch to what will be reviewed this week.
Tom

> 
> Best regards,
> Anders Darander

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-02-08 13:32       ` Tom
@ 2010-02-24 14:50         ` Anders Darander
  0 siblings, 0 replies; 9+ messages in thread
From: Anders Darander @ 2010-02-24 14:50 UTC (permalink / raw)
  To: u-boot

Hi Tom,

Any news on this?

Best regards,
Anders

On Mon, Feb 8, 2010 at 14:32, Tom <Tom.Rix@windriver.com> wrote:
> Anders Darander wrote:
>>
>> Hi Tom,
>>
>> On Sun, Feb 7, 2010 at 15:35, Tom <Tom.Rix@windriver.com> wrote:
>>>>
>>>> From: Anders Darander <ad@datarespons.se>
>>>>>
>>>>> Use AT91_GPBR 3 as a bootcount register.
>>
>>> Please send me a link to the original patch.
>>> I will take a look
>>> Tom
>>
>> Here is the link from Werners patch-status mail:
>> http://article.gmane.org/gmane.comp.boot-loaders.u-boot/73640
>>
>> (Sorry ?for bumping this thread that many times... I'm pretty sure
>> that you're quite busy...)
>
> No problem.
> Its quite all right to ping me.
> I have added your patch to what will be reviewed this week.
> Tom
>
>>
>> Best regards,
>> Anders Darander
>
>



-- 
Anders Darander
EPO guidelines 1978: "If the contribution to the known art resides
solely in a computer program then the subject matter is not
patentable in whatever manner it may be presented in the claims."

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-01-14 14:00 [U-Boot] [PATCH] Add bootcount to AT91 Anders Darander
  2010-01-20  9:02 ` Anders Darander
  2010-02-04 14:30 ` Anders Darander
@ 2010-02-25 14:24 ` Tom
  2010-02-25 14:32   ` Anders Darander
  2 siblings, 1 reply; 9+ messages in thread
From: Tom @ 2010-02-25 14:24 UTC (permalink / raw)
  To: u-boot

Anders Darander wrote:
> From: Anders Darander <ad@datarespons.se>
> 



> Use AT91_GPBR 3 as a bootcount register.
> 
> Signed-off-by: Anders Darander <ad@datarespons.se>
> ---
>  cpu/arm926ejs/at91/cpu.c |   28 ++++++++++++++++++++++++++++
>  1 files changed, 28 insertions(+), 0 deletions(-)
> 
> diff --git a/cpu/arm926ejs/at91/cpu.c b/cpu/arm926ejs/at91/cpu.c
> index f2f7b62..09c1376 100644
> --- a/cpu/arm926ejs/at91/cpu.c
> +++ b/cpu/arm926ejs/at91/cpu.c
> @@ -31,6 +31,11 @@
>  #define AT91_MAIN_CLOCK 0
>  #endif
>  
> +/* The at91sam9260 has 4 GPBR (0-3), we'll use the last one, nr 3,
> + * to keep track of the bootcount. */

multi-line comments are
/*
  *Comment lines
  */

> +#define AT91_GPBR_BOOTCOUNT_REGISTER 3
> +#define AT91_BOOTCOUNT_ADDRESS (AT91_GPBR + 4*AT91_GPBR_BOOTCOUNT_REGISTER)
> +
>  int arch_cpu_init(void)
>  {
>  	return at91_clock_init(AT91_MAIN_CLOCK);
> @@ -52,3 +57,26 @@ int print_cpuinfo(void)
>  	return 0;
>  }
>  #endif
> +
> +#ifdef CONFIG_BOOTCOUNT_LIMIT
> +
> +void bootcount_store (ulong a)
> +{
> +	volatile ulong *save_addr =
> +		(volatile ulong *)(AT91_BASE_SYS + AT91_BOOTCOUNT_ADDRESS);
> +
> +	*save_addr = (BOOTCOUNT_MAGIC & 0xffff0000) | a;

implied length of a is 16 bits.
the  parameter type passed in should be explicitly cast/masked to u16.

I see sharing the 32 bits this way is how mpc5xxx does it..

But

mpc8260, mpc83xx, mpc8xx, ppc4xx, ipx store the bootcount_magic and the
parameter as 2 32bit values.

Is there a memory limitation on why you can not follow what most of the others
are doing ? If there is, please add the explanation as a comment.

Thank you for pinging me,
Tom

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH] Add bootcount to AT91
  2010-02-25 14:24 ` Tom
@ 2010-02-25 14:32   ` Anders Darander
  0 siblings, 0 replies; 9+ messages in thread
From: Anders Darander @ 2010-02-25 14:32 UTC (permalink / raw)
  To: u-boot

Hi Tom,

Thanks for your comments.

On Thu, Feb 25, 2010 at 15:24, Tom <Tom.Rix@windriver.com> wrote:
> Anders Darander wrote:
>>
>> From: Anders Darander <ad@datarespons.se>
>> --- a/cpu/arm926ejs/at91/cpu.c
>> +++ b/cpu/arm926ejs/at91/cpu.c
>> @@ -31,6 +31,11 @@
>> ?#define AT91_MAIN_CLOCK 0
>> ?#endif
>> ?+/* The at91sam9260 has 4 GPBR (0-3), we'll use the last one, nr 3,
>> + * to keep track of the bootcount. */
>
> multi-line comments are
> /*
> ?*Comment lines
> ?*/

Correct, I'll fix this.

>> +#define AT91_GPBR_BOOTCOUNT_REGISTER 3
>> +#define AT91_BOOTCOUNT_ADDRESS (AT91_GPBR +
>> 4*AT91_GPBR_BOOTCOUNT_REGISTER)
>> +
>> ?int arch_cpu_init(void)
>> ?{
>> ? ? ? ?return at91_clock_init(AT91_MAIN_CLOCK);
>> @@ -52,3 +57,26 @@ int print_cpuinfo(void)
>> ? ? ? ?return 0;
>> ?}
>> ?#endif
>> +
>> +#ifdef CONFIG_BOOTCOUNT_LIMIT
>> +
>> +void bootcount_store (ulong a)
>> +{
>> + ? ? ? volatile ulong *save_addr =
>> + ? ? ? ? ? ? ? (volatile ulong *)(AT91_BASE_SYS +
>> AT91_BOOTCOUNT_ADDRESS);
>> +
>> + ? ? ? *save_addr = (BOOTCOUNT_MAGIC & 0xffff0000) | a;
>
> implied length of a is 16 bits.
> the ?parameter type passed in should be explicitly cast/masked to u16.

Correct, I'll fix this.

> I see sharing the 32 bits this way is how mpc5xxx does it..
>
> But
>
> mpc8260, mpc83xx, mpc8xx, ppc4xx, ipx store the bootcount_magic and the
> parameter as 2 32bit values.
>
> Is there a memory limitation on why you can not follow what most of the
> others
> are doing ? If there is, please add the explanation as a comment.

Well, I think I'd prefer to keep the boocount and the magic to share a
32-bit register; the main reason being that the AT91SAM9260 only has 4
GPBR, i.e. only four registers that keep it's data between resets.
I'll add a comment about this.

Best regards,
Anders

-- 
Anders Darander
EPO guidelines 1978: "If the contribution to the known art resides
solely in a computer program then the subject matter is not
patentable in whatever manner it may be presented in the claims."

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-02-25 14:32 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-14 14:00 [U-Boot] [PATCH] Add bootcount to AT91 Anders Darander
2010-01-20  9:02 ` Anders Darander
2010-02-04 14:30 ` Anders Darander
2010-02-07 14:35   ` Tom
2010-02-08  7:09     ` Anders Darander
2010-02-08 13:32       ` Tom
2010-02-24 14:50         ` Anders Darander
2010-02-25 14:24 ` Tom
2010-02-25 14:32   ` Anders Darander

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox