[PATCH] rtc: sun6i: Always export the internal oscillator

Andre Przywara andre.przywara at arm.com
Thu Dec 29 15:17:03 PST 2022


On Thu, 29 Dec 2022 15:53:19 -0600
Samuel Holland <samuel at sholland.org> wrote:

Hi Samuel,

> On all variants of the hardware, the internal oscillator is one possible
> parent for the AR100 clock. It needs to be exported so we can model that
> relationship correctly in the devicetree.

So do you plan to use this third clock on any SoCs that don't export it
yet, like the R40 or V3s, or the older SoCs? This would then create a
non-compatible DT change, wouldn't it? Since existing/older kernels
cannot resolve clock index 2?
Or would that not be used by kernels, or would not be fatal?

Cheers,
Andre

> Fixes: c56afc1844d6 ("rtc: sun6i: Expose internal oscillator through device tree")
> Signed-off-by: Samuel Holland <samuel at sholland.org>
> ---
> This patch should be applied before [1] so this patch can be backported.
> [1]: https://lore.kernel.org/linux-rtc/20221229184011.62925-2-samuel@sholland.org/
> 
>  drivers/rtc/rtc-sun6i.c | 16 ++++------------
>  1 file changed, 4 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c
> index ed5516089e9a..7038f47d77ff 100644
> --- a/drivers/rtc/rtc-sun6i.c
> +++ b/drivers/rtc/rtc-sun6i.c
> @@ -136,7 +136,6 @@ struct sun6i_rtc_clk_data {
>  	unsigned int fixed_prescaler : 16;
>  	unsigned int has_prescaler : 1;
>  	unsigned int has_out_clk : 1;
> -	unsigned int export_iosc : 1;
>  	unsigned int has_losc_en : 1;
>  	unsigned int has_auto_swt : 1;
>  };
> @@ -271,10 +270,8 @@ static void __init sun6i_rtc_clk_init(struct device_node *node,
>  	/* Yes, I know, this is ugly. */
>  	sun6i_rtc = rtc;
>  
> -	/* Only read IOSC name from device tree if it is exported */
> -	if (rtc->data->export_iosc)
> -		of_property_read_string_index(node, "clock-output-names", 2,
> -					      &iosc_name);
> +	of_property_read_string_index(node, "clock-output-names", 2,
> +				      &iosc_name);
>  
>  	rtc->int_osc = clk_hw_register_fixed_rate_with_accuracy(NULL,
>  								iosc_name,
> @@ -315,13 +312,10 @@ static void __init sun6i_rtc_clk_init(struct device_node *node,
>  		goto err_register;
>  	}
>  
> -	clk_data->num = 2;
> +	clk_data->num = 3;
>  	clk_data->hws[0] = &rtc->hw;
>  	clk_data->hws[1] = __clk_get_hw(rtc->ext_losc);
> -	if (rtc->data->export_iosc) {
> -		clk_data->hws[2] = rtc->int_osc;
> -		clk_data->num = 3;
> -	}
> +	clk_data->hws[2] = rtc->int_osc;
>  	of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
>  	return;
>  
> @@ -361,7 +355,6 @@ static const struct sun6i_rtc_clk_data sun8i_h3_rtc_data = {
>  	.fixed_prescaler = 32,
>  	.has_prescaler = 1,
>  	.has_out_clk = 1,
> -	.export_iosc = 1,
>  };
>  
>  static void __init sun8i_h3_rtc_clk_init(struct device_node *node)
> @@ -379,7 +372,6 @@ static const struct sun6i_rtc_clk_data sun50i_h6_rtc_data = {
>  	.fixed_prescaler = 32,
>  	.has_prescaler = 1,
>  	.has_out_clk = 1,
> -	.export_iosc = 1,
>  	.has_losc_en = 1,
>  	.has_auto_swt = 1,
>  };




More information about the linux-arm-kernel mailing list