LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Tony Lindgren <tony@atomide.com>, linux-omap@vger.kernel.org
Cc: "Benoît Cousson" <bcousson@baylibre.com>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Jarkko Nikula" <jarkko.nikula@bitmer.com>
Subject: Re: [PATCH] ARM: dts: Fix timer regression for beagleboard revision c
Date: Mon, 29 Nov 2021 10:56:23 +0100	[thread overview]
Message-ID: <6ce29c03-03ce-8e65-76e1-40fe2bf23caa@linaro.org> (raw)
In-Reply-To: <20211125144834.52457-1-tony@atomide.com>


Hi Tony,

On 25/11/2021 15:48, Tony Lindgren wrote:
> Commit e428e250fde6 ("ARM: dts: Configure system timers for omap3")
> caused a timer regression for beagleboard revision c where the system
> clockevent stops working if omap3isp module is unloaded.
> 
> Turns out we still have beagleboard revisions a-b4 capacitor c70 quirks
> applied that limit the usable timers for no good reason. This also affects
> the power management as we use the system clock instead of the 32k clock
> source.
> 
> Let's fix the issue by adding a new omap3-beagle-ab4.dts for the old timer
> quirks. This allows us to remove the timer quirks for later beagleboard
> revisions. We also need to update the related timer quirk check for the
> correct compatible property.
> 
> Fixes: e428e250fde6 ("ARM: dts: Configure system timers for omap3")
> Cc: linux-kernel@vger.kernel.org
> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Rob Herring <robh+dt@kernel.org>
> Reported-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  .../devicetree/bindings/arm/omap/omap.txt     |  3 ++
>  arch/arm/boot/dts/Makefile                    |  1 +
>  arch/arm/boot/dts/omap3-beagle-ab4.dts        | 47 +++++++++++++++++++
>  arch/arm/boot/dts/omap3-beagle.dts            | 33 -------------
>  drivers/clocksource/timer-ti-dm-systimer.c    |  2 +-
>  5 files changed, 52 insertions(+), 34 deletions(-)
>  create mode 100644 arch/arm/boot/dts/omap3-beagle-ab4.dts

Usually, bindings DT and driver changes are separate patches


> diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt
> --- a/Documentation/devicetree/bindings/arm/omap/omap.txt
> +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
> @@ -119,6 +119,9 @@ Boards (incomplete list of examples):
>  - OMAP3 BeagleBoard : Low cost community board
>    compatible = "ti,omap3-beagle", "ti,omap3430", "ti,omap3"
>  
> +- OMAP3 BeagleBoard A to B4 : Early BeagleBoard revisions A to B4 with a timer quirk
> +  compatible = "ti,omap3-beagle-ab4", "ti,omap3-beagle", "ti,omap3430", "ti,omap3"
> +
>  - OMAP3 Tobi with Overo : Commercial expansion board with daughter board
>    compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3"
>  
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -794,6 +794,7 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
>  	logicpd-som-lv-37xx-devkit.dtb \
>  	omap3430-sdp.dtb \
>  	omap3-beagle.dtb \
> +	omap3-beagle-ab4.dtb \
>  	omap3-beagle-xm.dtb \
>  	omap3-beagle-xm-ab.dtb \
>  	omap3-cm-t3517.dtb \
> diff --git a/arch/arm/boot/dts/omap3-beagle-ab4.dts b/arch/arm/boot/dts/omap3-beagle-ab4.dts
> new file mode 100644
> --- /dev/null
> +++ b/arch/arm/boot/dts/omap3-beagle-ab4.dts
> @@ -0,0 +1,47 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/dts-v1/;
> +
> +#include "omap3-beagle.dts"
> +
> +/ {
> +	model = "TI OMAP3 BeagleBoard A to B4";
> +	compatible = "ti,omap3-beagle-ab4", "ti,omap3-beagle", "ti,omap3430", "ti,omap3";
> +};
> +
> +/*
> + * Workaround for capacitor C70 issue, see "Boards revision A and < B5"
> + * section at https://elinux.org/BeagleBoard_Community
> + */
> +
> +/* Unusable as clocksource because of unreliable oscillator */
> +&counter32k {
> +	status = "disabled";
> +};
> +
> +/* Unusable as clockevent because of unreliable oscillator, allow to idle */
> +&timer1_target {
> +	/delete-property/ti,no-reset-on-init;
> +	/delete-property/ti,no-idle;
> +	timer@0 {
> +		/delete-property/ti,timer-alwon;
> +	};
> +};
> +
> +/* Preferred always-on timer for clocksource */
> +&timer12_target {
> +	ti,no-reset-on-init;
> +	ti,no-idle;
> +	timer@0 {
> +		/* Always clocked by secure_32k_fck */
> +	};
> +};
> +
> +/* Preferred timer for clockevent */
> +&timer2_target {
> +	ti,no-reset-on-init;
> +	ti,no-idle;
> +	timer@0 {
> +		assigned-clocks = <&gpt2_fck>;
> +		assigned-clock-parents = <&sys_ck>;
> +	};
> +};
> diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts
> --- a/arch/arm/boot/dts/omap3-beagle.dts
> +++ b/arch/arm/boot/dts/omap3-beagle.dts
> @@ -308,39 +308,6 @@ &usbhsehci {
>  	phys = <0 &hsusb2_phy>;
>  };
>  
> -/* Unusable as clocksource because of unreliable oscillator */
> -&counter32k {
> -	status = "disabled";
> -};
> -
> -/* Unusable as clockevent because if unreliable oscillator, allow to idle */
> -&timer1_target {
> -	/delete-property/ti,no-reset-on-init;
> -	/delete-property/ti,no-idle;
> -	timer@0 {
> -		/delete-property/ti,timer-alwon;
> -	};
> -};
> -
> -/* Preferred always-on timer for clocksource */
> -&timer12_target {
> -	ti,no-reset-on-init;
> -	ti,no-idle;
> -	timer@0 {
> -		/* Always clocked by secure_32k_fck */
> -	};
> -};
> -
> -/* Preferred timer for clockevent */
> -&timer2_target {
> -	ti,no-reset-on-init;
> -	ti,no-idle;
> -	timer@0 {
> -		assigned-clocks = <&gpt2_fck>;
> -		assigned-clock-parents = <&sys_ck>;
> -	};
> -};
> -
>  &twl_gpio {
>  	ti,use-leds;
>  	/* pullups: BIT(1) */
> diff --git a/drivers/clocksource/timer-ti-dm-systimer.c b/drivers/clocksource/timer-ti-dm-systimer.c
> --- a/drivers/clocksource/timer-ti-dm-systimer.c
> +++ b/drivers/clocksource/timer-ti-dm-systimer.c
> @@ -241,7 +241,7 @@ static void __init dmtimer_systimer_assign_alwon(void)
>  	bool quirk_unreliable_oscillator = false;
>  
>  	/* Quirk unreliable 32 KiHz oscillator with incomplete dts */
> -	if (of_machine_is_compatible("ti,omap3-beagle") ||
> +	if (of_machine_is_compatible("ti,omap3-beagle-ab4") ||
>  	    of_machine_is_compatible("timll,omap3-devkit8000")) {
>  		quirk_unreliable_oscillator = true;
>  		counter_32k = -ENODEV;
> 


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

  parent reply	other threads:[~2021-11-29 10:24 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-25 14:48 Tony Lindgren
2021-11-28 18:43 ` Jarkko Nikula
2021-11-29  9:56 ` Daniel Lezcano [this message]
2021-11-29 13:30   ` Tony Lindgren
2021-12-11 15:30 ` Jarkko Nikula
2021-12-12 19:04   ` Jarkko Nikula
2021-12-13  5:43     ` Tony Lindgren
2021-12-17 12:17       ` Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6ce29c03-03ce-8e65-76e1-40fe2bf23caa@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --cc=bcousson@baylibre.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jarkko.nikula@bitmer.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tony@atomide.com \
    --subject='Re: [PATCH] ARM: dts: Fix timer regression for beagleboard revision c' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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).