Message ID | 20191205085054.6049-1-wens@kernel.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | 111bf02b8f544f98de53ea1f912ae01f598b161b |
Headers | show |
Series | rtc: sun6i: Add support for RTC clocks on R40 | expand |
On Thu, Dec 05, 2019 at 04:50:54PM +0800, Chen-Yu Tsai wrote: > From: Chen-Yu Tsai <wens@csie.org> > > When support for the R40 in the rtc-sun6i driver was split out for a > separate compatible string, only the RTC half was covered, and not the > clock half. Unfortunately this results in the whole driver not working, > as the RTC half expects the clock half to have been initialized. > > Add support for the clock part as well. The clock part is like the H3, > but does not need to export the internal oscillator, nor does it have > a gateable LOSC external output. > > This fixes issues with WiFi and Bluetooth not working on the BPI M2U. > > Fixes: d6624cc75021 ("rtc: sun6i: Add R40 compatible") > Cc: <stable@vger.kernel.org> # 5.3.x > Signed-off-by: Chen-Yu Tsai <wens@csie.org> Acked-by: Maxime Ripard <mripard@kernel.org> Maxime
On 05/12/2019 16:50:54+0800, Chen-Yu Tsai wrote: > From: Chen-Yu Tsai <wens@csie.org> > > When support for the R40 in the rtc-sun6i driver was split out for a > separate compatible string, only the RTC half was covered, and not the > clock half. Unfortunately this results in the whole driver not working, > as the RTC half expects the clock half to have been initialized. > > Add support for the clock part as well. The clock part is like the H3, > but does not need to export the internal oscillator, nor does it have > a gateable LOSC external output. > > This fixes issues with WiFi and Bluetooth not working on the BPI M2U. > > Fixes: d6624cc75021 ("rtc: sun6i: Add R40 compatible") > Cc: <stable@vger.kernel.org> # 5.3.x > Signed-off-by: Chen-Yu Tsai <wens@csie.org> > --- > > Please merge this for fixes. > > --- > drivers/rtc/rtc-sun6i.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > Applied, thanks.
diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c index 5e2bd9f1d01e..fc32be687606 100644 --- a/drivers/rtc/rtc-sun6i.c +++ b/drivers/rtc/rtc-sun6i.c @@ -380,6 +380,22 @@ static void __init sun50i_h6_rtc_clk_init(struct device_node *node) CLK_OF_DECLARE_DRIVER(sun50i_h6_rtc_clk, "allwinner,sun50i-h6-rtc", sun50i_h6_rtc_clk_init); +/* + * The R40 user manual is self-conflicting on whether the prescaler is + * fixed or configurable. The clock diagram shows it as fixed, but there + * is also a configurable divider in the RTC block. + */ +static const struct sun6i_rtc_clk_data sun8i_r40_rtc_data = { + .rc_osc_rate = 16000000, + .fixed_prescaler = 512, +}; +static void __init sun8i_r40_rtc_clk_init(struct device_node *node) +{ + sun6i_rtc_clk_init(node, &sun8i_r40_rtc_data); +} +CLK_OF_DECLARE_DRIVER(sun8i_r40_rtc_clk, "allwinner,sun8i-r40-rtc", + sun8i_r40_rtc_clk_init); + static const struct sun6i_rtc_clk_data sun8i_v3_rtc_data = { .rc_osc_rate = 32000, .has_out_clk = 1,