linux/drivers/rtc
Maxime Ripard bd0a601fcb rtc: sun6i: Add a determine_rate hook
The Allwinner sun6i RTC clock implements a mux with a set_parent hook,
but doesn't provide a determine_rate implementation.

This is a bit odd, since set_parent() is there to, as its name implies,
change the parent of a clock. However, the most likely candidates to
trigger that parent change are either the assigned-clock-parents device
tree property or a call to clk_set_rate(), with determine_rate()
figuring out which parent is the best suited for a given rate.

The other trigger would be a call to clk_set_parent(), but it's far less
used, and it doesn't look like there's any obvious user for that clock.

Similarly, it doesn't look like the device tree using that clock driver
uses any of the assigned-clock properties on that clock.

So, the set_parent hook is effectively unused, possibly because of an
oversight. However, it could also be an explicit decision by the
original author to avoid any reparenting but through an explicit call to
clk_set_parent().

The latter case would be equivalent to setting the determine_rate
implementation to clk_hw_determine_rate_no_reparent(). Indeed, if no
determine_rate implementation is provided, clk_round_rate() (through
clk_core_round_rate_nolock()) will call itself on the parent if
CLK_SET_RATE_PARENT is set, and will not change the clock rate
otherwise.

And if it was an oversight, then we are at least explicit about our
behavior now and it can be further refined down the line.

Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-rtc@vger.kernel.org
Cc: linux-sunxi@lists.linux.dev
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://lore.kernel.org/r/20221018-clk-range-checks-fixes-v4-45-971d5077e7d2@cerno.tech
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
2023-06-08 18:39:32 -07:00
..
Kconfig rtc: mpfs: convert SOC_MICROCHIP_POLARFIRE to ARCH_MICROCHIP_POLARFIRE 2023-03-17 23:12:58 +01:00
Makefile RTC for 6.3 2023-03-03 09:15:50 -08:00
class.c driver core: class: remove module * from class_create() 2023-03-17 15:16:33 +01:00
dev.c rtc: Remove unused rtc_dev_exit(). 2022-06-24 21:24:02 +02:00
interface.c rtc: allow rtc_read_alarm without read_alarm callback 2023-02-22 12:32:05 +01:00
lib.c rtc: Improve performance of rtc_time64_to_tm(). Add tests. 2021-08-10 00:09:21 +02:00
lib_test.c rtc: lib_test: add MODULE_LICENSE 2021-08-10 23:21:46 +02:00
nvmem.c
proc.c rtc: fix snprintf() checking in is_rtc_hctosys() 2021-05-25 00:36:11 +02:00
rtc-88pm80x.c rtc: 88pm80x: Convert to platform remove callback returning void 2023-03-17 23:03:16 +01:00
rtc-88pm860x.c rtc: 88pm860x: Convert to platform remove callback returning void 2023-03-17 23:03:16 +01:00
rtc-ab-b5ze-s3.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-ab-eoz9.c rtc: ab-eoz9: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-ab8500.c rtc: ab8500: Convert to platform remove callback returning void 2023-03-17 23:03:16 +01:00
rtc-abx80x.c rtc: abx80x: Add nvmem support 2023-02-24 00:02:30 +01:00
rtc-ac100.c rtc: ac100: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-armada38x.c rtc: armada38x: use devm_platform_ioremap_resource_byname() 2023-04-28 08:07:23 +02:00
rtc-as3722.c
rtc-asm9260.c rtc: asm9260: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-aspeed.c
rtc-at91rm9200.c rtc: at91rm9200: Fix syntax errors in comments 2022-12-15 23:34:31 +01:00
rtc-at91sam9.c rtc: at91sam9: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-au1xxx.c rtc: au1xxx: convert to SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-bd70528.c rtc: bd70528: Drop BD70528 support 2021-06-20 22:24:52 +02:00
rtc-bq32k.c rtc: Include <linux/kstrtox.h> when appropriate 2022-11-15 21:01:51 +01:00
rtc-bq4802.c
rtc-brcmstb-waketimer.c rtc: brcmstb-waketimer: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-cadence.c rtc: cadence: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-cmos.c rtc: cmos: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-core.h rtc: Remove unused rtc_dev_exit(). 2022-06-24 21:24:02 +02:00
rtc-cpcap.c
rtc-cros-ec.c rtc: cros-ec: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-da9052.c
rtc-da9055.c
rtc-da9063.c rtc: da9063: add as wakeup source 2021-12-02 23:23:38 +01:00
rtc-digicolor.c
rtc-ds1216.c
rtc-ds1286.c
rtc-ds1302.c rtc: ds1302: remove unnecessary spi_set_drvdata() 2022-11-15 21:01:51 +01:00
rtc-ds1305.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
rtc-ds1307.c rtc: ds1307: Convert to i2c's .probe_new() 2023-01-09 23:03:56 +01:00
rtc-ds1343.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
rtc-ds1347.c rtc: ds1347: fix value written to century register 2022-11-15 21:01:51 +01:00
rtc-ds1374.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rtc-ds1390.c rtc: ds1390: mark OF related data as maybe unused 2023-03-17 23:23:22 +01:00
rtc-ds1511.c rtc: ds1511: remove unused function 2021-04-17 11:21:04 +02:00
rtc-ds1553.c
rtc-ds1672.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-ds1685.c rtc: ds1685: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-ds1742.c rtc: ds1742: use devm_platform_get_and_ioremap_resource() 2022-12-15 23:34:31 +01:00
rtc-ds2404.c
rtc-ds3232.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-efi.c rtc: efi: Avoid spamming the log on RTC read failure 2023-02-22 21:07:53 +01:00
rtc-em3027.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-ep93xx.c
rtc-fm3130.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-fsl-ftm-alarm.c rtc: fsl-ftm-alarm: Use module_platform_driver replace device_initcall 2022-11-15 21:01:51 +01:00
rtc-ftrtc010.c rtc: ftrtc010: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-gamecube.c rtc: gamecube: Always reset HW_SRNPROT after read 2022-08-23 22:27:58 +02:00
rtc-generic.c
rtc-goldfish.c clocksource/drivers: Add a goldfish-timer clocksource 2022-04-11 11:48:01 +02:00
rtc-hid-sensor-time.c rtc: hid-sensor-time: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-hym8563.c rtc: hym8563: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-imx-sc.c rtc: imx-sc: remove .read_alarm 2021-04-29 23:03:26 +02:00
rtc-imxdi.c rtc: imxdi: add wakeup support 2021-05-25 00:41:25 +02:00
rtc-isl1208.c rtc: isl1208: Convert to .probe_new() 2022-11-15 21:01:33 +01:00
rtc-isl12022.c rtc: isl12022: sort header inclusion alphabetically 2023-02-22 21:06:30 +01:00
rtc-isl12026.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rtc-jz4740.c rtc: jz4740: Make sure clock provider gets removed 2023-04-28 08:07:23 +02:00
rtc-lp8788.c
rtc-lpc24xx.c rtc: lpc24xx: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-lpc32xx.c
rtc-ls1x.c
rtc-m41t80.c rtc: m41t80: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-m41t93.c
rtc-m41t94.c
rtc-m48t35.c
rtc-m48t59.c rtc: m48t59: use platform_get_irq_optional 2021-03-11 09:48:09 +01:00
rtc-m48t86.c
rtc-max6900.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-max6902.c
rtc-max6916.c
rtc-max8907.c rtc: max8907: Drop unused i2c include 2023-02-01 09:13:35 +01:00
rtc-max8925.c
rtc-max8997.c
rtc-max8998.c
rtc-max77686.c rtc: max77686: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-mc13xxx.c rtc: mc13xxx: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-mc146818-lib.c rtc: mc146818-lib: reduce RTC_UIP polling period 2022-06-24 21:23:50 +02:00
rtc-mcp795.c rtc: mcp795: Add SPI ID table 2021-10-01 23:28:28 +02:00
rtc-meson-vrtc.c rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time 2023-03-21 21:15:10 +01:00
rtc-meson.c rtc: meson: Fix email address in MODULE_AUTHOR 2022-05-18 00:20:39 +02:00
rtc-moxart.c rtc: moxart: switch to using gpiod API 2023-02-09 23:31:46 +01:00
rtc-mpc5121.c rtc: mpc5121: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-mpfs.c rtc: mpfs: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-msc313.c rtc: msc313: Fix function prototype mismatch in msc313_rtc_probe() 2022-12-11 18:14:01 +01:00
rtc-msm6242.c
rtc-mt2712.c
rtc-mt6397.c rtc: mt6397: check return value after calling platform_get_resource() 2022-05-19 12:05:48 +02:00
rtc-mt7622.c rtc: mt7622: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-mv.c
rtc-mxc.c rtc: mxc: Use devm_clk_get_enabled() helper 2022-08-23 22:33:38 +02:00
rtc-mxc_v2.c rtc: mxc_v2: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-nct3018y.c rtc: nct3018y: Convert to .probe_new() 2022-11-15 21:01:33 +01:00
rtc-ntxec.c rtc: New driver for RTC in Netronix embedded controller 2021-03-10 11:06:33 +00:00
rtc-nxp-bbnsm.c rtc: bbnsm: Add the bbnsm rtc support 2023-02-22 12:25:32 +01:00
rtc-omap.c rtc: omap: include header for omap_rtc_power_off_program prototype 2023-03-17 23:22:45 +01:00
rtc-opal.c rtc: opal: switch to RTC_FEATURE_UPDATE_INTERRUPT 2022-03-23 19:58:39 +01:00
rtc-optee.c rtc: optee: add RTC driver for OP-TEE RTC PTA 2022-03-25 11:42:50 +01:00
rtc-palmas.c rtc: palmas: Convert to platform remove callback returning void 2023-03-17 23:03:17 +01:00
rtc-pcap.c
rtc-pcf2123.c rtc: pcf2123: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-pcf2127.c rtc: pcf2127: Convert to .probe_new() 2022-11-15 21:01:33 +01:00
rtc-pcf8523.c rtc: pcf8523: remove unnecessary OR operation 2023-03-17 23:23:54 +01:00
rtc-pcf8563.c rtc: pcf8563: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-pcf8583.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-pcf50633.c rtc: pcf50633: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-pcf85063.c rtc: pcf85063: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-pcf85363.c rtc: pcf85363: add support for the quartz-load-femtofarads property 2023-02-22 15:31:01 +01:00
rtc-pic32.c rtc: pic32: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-pl030.c
rtc-pl031.c rtc: pl031: fix rtc features null pointer dereference 2022-03-23 19:58:37 +01:00
rtc-pm8xxx.c rtc: pm8xxx: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-ps3.c
rtc-pxa.c ARM: pxa: split up mach/hardware.h 2022-04-19 16:27:05 +02:00
rtc-r7301.c
rtc-r9701.c
rtc-rc5t583.c rtc: rc5t583: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-rc5t619.c
rtc-rk808.c rtc: rk808: reduce 'struct rk808' usage 2022-12-11 20:56:33 +01:00
rtc-rp5c01.c
rtc-rs5c313.c rtc: rs5c313: correct some spelling mistakes 2022-12-15 23:34:31 +01:00
rtc-rs5c348.c
rtc-rs5c372.c rtc: remove duplicated words in comments 2022-12-15 23:34:31 +01:00
rtc-rtd119x.c rtc: rtd119x: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-rv3028.c rtc: rv3028: add ACPI support 2023-02-22 12:31:05 +01:00
rtc-rv3029c2.c rtc: rv3029c2: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-rv3032.c rtc: rv3032: add ACPI support 2023-02-22 12:31:38 +01:00
rtc-rv8803.c rtc: rv8803: invalidate date/time if alarm time is invalid 2023-02-09 23:01:49 +01:00
rtc-rx4581.c
rtc-rx6110.c rtc: rx6110: Remove unused of_gpio,h 2023-02-22 21:08:27 +01:00
rtc-rx8010.c rtc: rx8010: use IRQ flags obtained from fwnode 2023-02-01 09:13:35 +01:00
rtc-rx8025.c rtc: Include <linux/kstrtox.h> when appropriate 2022-11-15 21:01:51 +01:00
rtc-rx8581.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-rzn1.c rtc: rzn1: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-s3c.c rtc: s3c: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-s3c.h
rtc-s5m.c rtc: s5m: Drop S5M8763 support 2023-04-26 11:40:26 +01:00
rtc-s35390a.c rtc: s35390a: Remove the unneeded result variable 2022-11-15 21:01:51 +01:00
rtc-sa1100.c rtc: sa1100: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-sa1100.h
rtc-sc27xx.c rtc: sc27xx: Fix format of SPDX identifier 2021-07-10 01:53:39 +02:00
rtc-sd3078.c rtc: use simple i2c probe 2022-06-24 21:24:02 +02:00
rtc-sh.c
rtc-snvs.c rtc: snvs: Allow a time difference on clock register read 2022-11-15 21:25:44 +01:00
rtc-spear.c rtc: spear: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-st-lpc.c rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe() 2022-12-10 22:36:32 +01:00
rtc-starfire.c
rtc-stk17ta8.c
rtc-stm32.c rtc: stm32: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-stmp3xxx.c rtc: stmp3xxx: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-sun4v.c
rtc-sun6i.c rtc: sun6i: Add a determine_rate hook 2023-06-08 18:39:32 -07:00
rtc-sunplus.c rtc: sunplus: use devm_platform_ioremap_resource_byname() 2023-04-28 08:07:23 +02:00
rtc-sunxi.c
rtc-tegra.c rtc: tegra: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-test.c
rtc-ti-k3.c rtc: k3: handle errors while enabling wake irq 2023-03-23 10:50:59 +01:00
rtc-tps6586x.c rtc: tps6586x: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-tps65910.c rtc: tps65910: Correct driver module alias 2021-08-17 23:36:22 +02:00
rtc-twl.c rtc: twl: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-vt8500.c rtc: vt8500: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-wilco-ec.c
rtc-wm831x.c
rtc-wm8350.c rtc: wm8350: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-x1205.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
rtc-xgene.c rtc: xgene: Convert to platform remove callback returning void 2023-03-17 23:03:18 +01:00
rtc-zynqmp.c rtc: zynqmp: Convert to platform remove callback returning void 2023-03-17 23:03:19 +01:00
sysfs.c rtc: Include <linux/kstrtox.h> when appropriate 2022-11-15 21:01:51 +01:00