* [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