linux-rockchip.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Revert "rockchip: make sure timer7 is enabled on rk3288 platforms"
@ 2019-12-25  2:59 Kever Yang
  2019-12-25  3:02 ` Chen-Yu Tsai
  0 siblings, 1 reply; 3+ messages in thread
From: Kever Yang @ 2019-12-25  2:59 UTC (permalink / raw)
  To: heiko
  Cc: linux-rockchip, Kever Yang, Russell King, linux-arm-kernel, linux-kernel

This reverts commit 2a9fe3ca84afff6259820c4f62e579f41476becc.
All the U-Boot version for rk3288 including mainline, rockchip
legacy/next-dev, have init the timer7, so no need to init it in kernel
again.

One more reason is that if  we enable the trust for rk3288, then timer7 is
not able to be accessed in kernel.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
---

 arch/arm/mach-rockchip/rockchip.c | 23 -----------------------
 1 file changed, 23 deletions(-)

diff --git a/arch/arm/mach-rockchip/rockchip.c b/arch/arm/mach-rockchip/rockchip.c
index f9797a2b5d0d..f6e1851ed46a 100644
--- a/arch/arm/mach-rockchip/rockchip.c
+++ b/arch/arm/mach-rockchip/rockchip.c
@@ -21,31 +21,8 @@
 #include "core.h"
 #include "pm.h"
 
-#define RK3288_TIMER6_7_PHYS 0xff810000
-
 static void __init rockchip_timer_init(void)
 {
-	if (of_machine_is_compatible("rockchip,rk3288")) {
-		void __iomem *reg_base;
-
-		/*
-		 * Most/all uboot versions for rk3288 don't enable timer7
-		 * which is needed for the architected timer to work.
-		 * So make sure it is running during early boot.
-		 */
-		reg_base = ioremap(RK3288_TIMER6_7_PHYS, SZ_16K);
-		if (reg_base) {
-			writel(0, reg_base + 0x30);
-			writel(0xffffffff, reg_base + 0x20);
-			writel(0xffffffff, reg_base + 0x24);
-			writel(1, reg_base + 0x30);
-			dsb();
-			iounmap(reg_base);
-		} else {
-			pr_err("rockchip: could not map timer7 registers\n");
-		}
-	}
-
 	of_clk_init(NULL);
 	timer_probe();
 }
-- 
2.17.1

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

* Re: [PATCH] Revert "rockchip: make sure timer7 is enabled on rk3288 platforms"
  2019-12-25  2:59 [PATCH] Revert "rockchip: make sure timer7 is enabled on rk3288 platforms" Kever Yang
@ 2019-12-25  3:02 ` Chen-Yu Tsai
  2019-12-26 20:27   ` Heiko Stuebner
  0 siblings, 1 reply; 3+ messages in thread
From: Chen-Yu Tsai @ 2019-12-25  3:02 UTC (permalink / raw)
  To: Kever Yang
  Cc: Heiko Stübner, open list:ARM/Rockchip SoC...,
	linux-kernel, linux-arm-kernel, Russell King

On Wed, Dec 25, 2019 at 10:59 AM Kever Yang <kever.yang@rock-chips.com> wrote:
>
> This reverts commit 2a9fe3ca84afff6259820c4f62e579f41476becc.
> All the U-Boot version for rk3288 including mainline, rockchip
> legacy/next-dev, have init the timer7, so no need to init it in kernel
> again.

What about the ChromeOS bootloader?

> One more reason is that if  we enable the trust for rk3288, then timer7 is
> not able to be accessed in kernel.
>
> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>

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

* Re: [PATCH] Revert "rockchip: make sure timer7 is enabled on rk3288 platforms"
  2019-12-25  3:02 ` Chen-Yu Tsai
@ 2019-12-26 20:27   ` Heiko Stuebner
  0 siblings, 0 replies; 3+ messages in thread
From: Heiko Stuebner @ 2019-12-26 20:27 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Kever Yang, open list:ARM/Rockchip SoC...,
	linux-kernel, linux-arm-kernel, Russell King

Am Mittwoch, 25. Dezember 2019, 04:02:29 CET schrieb Chen-Yu Tsai:
> On Wed, Dec 25, 2019 at 10:59 AM Kever Yang <kever.yang@rock-chips.com> wrote:
> >
> > This reverts commit 2a9fe3ca84afff6259820c4f62e579f41476becc.
> > All the U-Boot version for rk3288 including mainline, rockchip
> > legacy/next-dev, have init the timer7, so no need to init it in kernel
> > again.
> 
> What about the ChromeOS bootloader?

Coreboot does seem to start timer7 correctly:
https://github.com/coreboot/coreboot/blob/master/src/soc/rockchip/rk3288/timer.c

But old rk3288 Android TV-boxes do contain bootloaders not doing that and
as the owners of such boxes will most often not have too great development
tools available, that would break newer kernels for them, which is really bad
as we value backwards compatibility very much.

Instead (just checked theoretically) could we just check for psci existence?
I.e. the calling order seems to be:

start_kernel() (in init/main.c)
	-> setup_arch()
		-> psci_dt_init()
			-> populates struct psci_ops
	-> time_init()
		-> machine_desc->init_time()

so in rockchip_timer_init() you should "just" be able to check like

	if (of_machine_is_compatible("rockchip,rk3288") && !psci_ops.cpu_on) {
		/* timer init */
	}


Heiko

> > One more reason is that if  we enable the trust for rk3288, then timer7 is
> > not able to be accessed in kernel.
> >
> > Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> 

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

end of thread, other threads:[~2019-12-26 20:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-25  2:59 [PATCH] Revert "rockchip: make sure timer7 is enabled on rk3288 platforms" Kever Yang
2019-12-25  3:02 ` Chen-Yu Tsai
2019-12-26 20:27   ` Heiko Stuebner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).