All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms
@ 2013-03-28  4:43 Stephen Warren
  2013-03-28 11:15 ` Albert ARIBAUD
  0 siblings, 1 reply; 6+ messages in thread
From: Stephen Warren @ 2013-03-28  4:43 UTC (permalink / raw)
  To: u-boot

Apparently, CONFIG_SYS_HZ must be 1000. Change this, and fix the timer
driver to conform to this.

Have the timer implementation export a custom API get_timer_us() for use
by the BCM2835 MMC API, which needs us resolution for a HW workaround.

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
---
v2: Export custom API get_timer_us() to allow the MMC driver to maintain
    its current workaround implementation.
---
 arch/arm/cpu/arm1176/bcm2835/timer.c      |   14 +++++++++++---
 arch/arm/include/asm/arch-bcm2835/timer.h |    2 ++
 drivers/mmc/bcm2835_sdhci.c               |    5 +++--
 include/configs/rpi_b.h                   |    2 +-
 4 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/arch/arm/cpu/arm1176/bcm2835/timer.c b/arch/arm/cpu/arm1176/bcm2835/timer.c
index d232d7e..2edd671 100644
--- a/arch/arm/cpu/arm1176/bcm2835/timer.c
+++ b/arch/arm/cpu/arm1176/bcm2835/timer.c
@@ -23,7 +23,7 @@ int timer_init(void)
 	return 0;
 }
 
-ulong get_timer(ulong base)
+ulong get_timer_us(ulong base)
 {
 	struct bcm2835_timer_regs *regs =
 		(struct bcm2835_timer_regs *)BCM2835_TIMER_PHYSADDR;
@@ -31,6 +31,14 @@ ulong get_timer(ulong base)
 	return readl(&regs->clo) - base;
 }
 
+ulong get_timer(ulong base)
+{
+	ulong us = get_timer_us(0);
+	us /= (1000000 / CONFIG_SYS_HZ);
+	us -= base;
+	return us;
+}
+
 unsigned long long get_ticks(void)
 {
 	return get_timer(0);
@@ -46,10 +54,10 @@ void __udelay(unsigned long usec)
 	ulong endtime;
 	signed long diff;
 
-	endtime = get_timer(0) + usec;
+	endtime = get_timer_us(0) + usec;
 
 	do {
-		ulong now = get_timer(0);
+		ulong now = get_timer_us(0);
 		diff = endtime - now;
 	} while (diff >= 0);
 }
diff --git a/arch/arm/include/asm/arch-bcm2835/timer.h b/arch/arm/include/asm/arch-bcm2835/timer.h
index 30c70e0..c2001b6 100644
--- a/arch/arm/include/asm/arch-bcm2835/timer.h
+++ b/arch/arm/include/asm/arch-bcm2835/timer.h
@@ -34,4 +34,6 @@ struct bcm2835_timer_regs {
 #define BCM2835_TIMER_CS_M1	(1 << 1)
 #define BCM2835_TIMER_CS_M0	(1 << 0)
 
+extern ulong get_timer_us(ulong base);
+
 #endif
diff --git a/drivers/mmc/bcm2835_sdhci.c b/drivers/mmc/bcm2835_sdhci.c
index b0afc3c..54cfabf 100644
--- a/drivers/mmc/bcm2835_sdhci.c
+++ b/drivers/mmc/bcm2835_sdhci.c
@@ -39,6 +39,7 @@
 #include <common.h>
 #include <malloc.h>
 #include <sdhci.h>
+#include <asm/arch/timer.h>
 
 /* 400KHz is max freq for card ID etc. Use that as min */
 #define MIN_FREQ 400000
@@ -67,11 +68,11 @@ static inline void bcm2835_sdhci_raw_writel(struct sdhci_host *host, u32 val,
 	 * (Which is just as well - otherwise we'd have to nobble the DMA engine
 	 * too)
 	 */
-	while (get_timer(bcm_host->last_write) < bcm_host->twoticks_delay)
+	while (get_timer_us(bcm_host->last_write) < bcm_host->twoticks_delay)
 		;
 
 	writel(val, host->ioaddr + reg);
-	bcm_host->last_write = get_timer(0);
+	bcm_host->last_write = get_timer_us(0);
 }
 
 static inline u32 bcm2835_sdhci_raw_readl(struct sdhci_host *host, int reg)
diff --git a/include/configs/rpi_b.h b/include/configs/rpi_b.h
index 3d55d36..c18b35b 100644
--- a/include/configs/rpi_b.h
+++ b/include/configs/rpi_b.h
@@ -31,7 +31,7 @@
 #define CONFIG_MACH_TYPE		MACH_TYPE_BCM2708
 
 /* Timer */
-#define CONFIG_SYS_HZ			1000000
+#define CONFIG_SYS_HZ			1000
 
 /* Memory layout */
 #define CONFIG_NR_DRAM_BANKS		1
-- 
1.7.10.4

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

* [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms
  2013-03-28  4:43 [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms Stephen Warren
@ 2013-03-28 11:15 ` Albert ARIBAUD
  2013-03-28 14:59   ` Stephen Warren
  0 siblings, 1 reply; 6+ messages in thread
From: Albert ARIBAUD @ 2013-03-28 11:15 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On Wed, 27 Mar 2013 22:43:23 -0600, Stephen Warren
<swarren@wwwdotorg.org> wrote:

> Apparently, CONFIG_SYS_HZ must be 1000. Change this, and fix the timer
> driver to conform to this.
> 
> Have the timer implementation export a custom API get_timer_us() for use
> by the BCM2835 MMC API, which needs us resolution for a HW workaround.
> 
> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
> ---
> v2: Export custom API get_timer_us() to allow the MMC driver to maintain
>     its current workaround implementation.
> ---

This patch and "mmc: bcm2835: fix delays in bug workaround" cannot be
both applied together. Can you do a V2 for the delays fix patch too?

Amicalement,
-- 
Albert.

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

* [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms
  2013-03-28 11:15 ` Albert ARIBAUD
@ 2013-03-28 14:59   ` Stephen Warren
  2013-03-28 15:14     ` Albert ARIBAUD
  0 siblings, 1 reply; 6+ messages in thread
From: Stephen Warren @ 2013-03-28 14:59 UTC (permalink / raw)
  To: u-boot

On 03/28/2013 05:15 AM, Albert ARIBAUD wrote:
> Hi Stephen,
> 
> On Wed, 27 Mar 2013 22:43:23 -0600, Stephen Warren
> <swarren@wwwdotorg.org> wrote:
> 
>> Apparently, CONFIG_SYS_HZ must be 1000. Change this, and fix the timer
>> driver to conform to this.
>>
>> Have the timer implementation export a custom API get_timer_us() for use
>> by the BCM2835 MMC API, which needs us resolution for a HW workaround.
>>
>> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
>> ---
>> v2: Export custom API get_timer_us() to allow the MMC driver to maintain
>>     its current workaround implementation.
>> ---
> 
> This patch and "mmc: bcm2835: fix delays in bug workaround" cannot be
> both applied together. Can you do a V2 for the delays fix patch too?

This patch replaces the two previous separate patches. Only this one
needs to be applied.

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

* [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms
  2013-03-28 14:59   ` Stephen Warren
@ 2013-03-28 15:14     ` Albert ARIBAUD
  2013-04-04  3:22       ` Stephen Warren
  0 siblings, 1 reply; 6+ messages in thread
From: Albert ARIBAUD @ 2013-03-28 15:14 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On Thu, 28 Mar 2013 08:59:05 -0600, Stephen Warren
<swarren@wwwdotorg.org> wrote:

> On 03/28/2013 05:15 AM, Albert ARIBAUD wrote:
> > Hi Stephen,
> > 
> > On Wed, 27 Mar 2013 22:43:23 -0600, Stephen Warren
> > <swarren@wwwdotorg.org> wrote:
> > 
> >> Apparently, CONFIG_SYS_HZ must be 1000. Change this, and fix the timer
> >> driver to conform to this.
> >>
> >> Have the timer implementation export a custom API get_timer_us() for use
> >> by the BCM2835 MMC API, which needs us resolution for a HW workaround.
> >>
> >> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
> >> ---
> >> v2: Export custom API get_timer_us() to allow the MMC driver to maintain
> >>     its current workaround implementation.
> >> ---
> > 
> > This patch and "mmc: bcm2835: fix delays in bug workaround" cannot be
> > both applied together. Can you do a V2 for the delays fix patch too?
> 
> This patch replaces the two previous separate patches. Only this one
> needs to be applied.

Ok -- thanks. Will soon (i.e., in one hour at most) be available in
u-boot-arm/master.

Amicalement,
-- 
Albert.

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

* [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms
  2013-03-28 15:14     ` Albert ARIBAUD
@ 2013-04-04  3:22       ` Stephen Warren
  2013-04-04  7:09         ` Albert ARIBAUD
  0 siblings, 1 reply; 6+ messages in thread
From: Stephen Warren @ 2013-04-04  3:22 UTC (permalink / raw)
  To: u-boot

On 03/28/2013 09:14 AM, Albert ARIBAUD wrote:
> Hi Stephen,
> 
> On Thu, 28 Mar 2013 08:59:05 -0600, Stephen Warren
> <swarren@wwwdotorg.org> wrote:
> 
>> On 03/28/2013 05:15 AM, Albert ARIBAUD wrote:
>>> Hi Stephen,
>>>
>>> On Wed, 27 Mar 2013 22:43:23 -0600, Stephen Warren
>>> <swarren@wwwdotorg.org> wrote:
>>>
>>>> Apparently, CONFIG_SYS_HZ must be 1000. Change this, and fix the timer
>>>> driver to conform to this.
>>>>
>>>> Have the timer implementation export a custom API get_timer_us() for use
>>>> by the BCM2835 MMC API, which needs us resolution for a HW workaround.
>>>>
>>>> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
>>>> ---
>>>> v2: Export custom API get_timer_us() to allow the MMC driver to maintain
>>>>     its current workaround implementation.
>>>> ---
>>>
>>> This patch and "mmc: bcm2835: fix delays in bug workaround" cannot be
>>> both applied together. Can you do a V2 for the delays fix patch too?
>>
>> This patch replaces the two previous separate patches. Only this one
>> needs to be applied.
> 
> Ok -- thanks. Will soon (i.e., in one hour at most) be available in
> u-boot-arm/master.

I can't see it there yet. I assume this patch is targeted at the release?

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

* [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms
  2013-04-04  3:22       ` Stephen Warren
@ 2013-04-04  7:09         ` Albert ARIBAUD
  0 siblings, 0 replies; 6+ messages in thread
From: Albert ARIBAUD @ 2013-04-04  7:09 UTC (permalink / raw)
  To: u-boot

Hi Stephen,

On Wed, 03 Apr 2013 21:22:06 -0600, Stephen Warren
<swarren@wwwdotorg.org> wrote:

> On 03/28/2013 09:14 AM, Albert ARIBAUD wrote:
> > Hi Stephen,
> > 
> > On Thu, 28 Mar 2013 08:59:05 -0600, Stephen Warren
> > <swarren@wwwdotorg.org> wrote:
> > 
> >> On 03/28/2013 05:15 AM, Albert ARIBAUD wrote:
> >>> Hi Stephen,
> >>>
> >>> On Wed, 27 Mar 2013 22:43:23 -0600, Stephen Warren
> >>> <swarren@wwwdotorg.org> wrote:
> >>>
> >>>> Apparently, CONFIG_SYS_HZ must be 1000. Change this, and fix the timer
> >>>> driver to conform to this.
> >>>>
> >>>> Have the timer implementation export a custom API get_timer_us() for use
> >>>> by the BCM2835 MMC API, which needs us resolution for a HW workaround.
> >>>>
> >>>> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
> >>>> ---
> >>>> v2: Export custom API get_timer_us() to allow the MMC driver to maintain
> >>>>     its current workaround implementation.
> >>>> ---
> >>>
> >>> This patch and "mmc: bcm2835: fix delays in bug workaround" cannot be
> >>> both applied together. Can you do a V2 for the delays fix patch too?
> >>
> >> This patch replaces the two previous separate patches. Only this one
> >> needs to be applied.
> > 
> > Ok -- thanks. Will soon (i.e., in one hour at most) be available in
> > u-boot-arm/master.
> 
> I can't see it there yet. I assume this patch is targeted at the release?

My fault. I'd applied it somewhere in my tree and marked it accepted in
patchwork (I can find trace of both actions) but for some reason, it
did not end on my master branch.

Error fixed now, commit 5eaa2156 at ARM ToT.

Amicalement,
-- 
Albert.

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

end of thread, other threads:[~2013-04-04  7:09 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-28  4:43 [U-Boot] [PATCH V2] ARM: bcm2835: fix get_timer() to return ms Stephen Warren
2013-03-28 11:15 ` Albert ARIBAUD
2013-03-28 14:59   ` Stephen Warren
2013-03-28 15:14     ` Albert ARIBAUD
2013-04-04  3:22       ` Stephen Warren
2013-04-04  7:09         ` Albert ARIBAUD

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.