diff options
| author | Cristian Marussi <cristian.marussi@arm.com> | 2023-12-10 22:14:21 +0000 |
|---|---|---|
| committer | Andrew Turner <andrew@FreeBSD.org> | 2024-09-02 08:46:27 +0000 |
| commit | 4047cec13239e2bfa5b4fbd98de56bdb214e15bc (patch) | |
| tree | ee8e0c991e3c727741792221634753dc3860d789 | |
| parent | 519141de7e6639e4df3485073d2521dc95b60207 (diff) | |
scmi: Implement scmi_clknode_recalc_freq method
Allow the SCMI clock frequency to be queried back, useful for testing
the IRQ path via sysctl access.
Reviewed by: andrew
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D43038
(cherry picked from commit ecd8cc84dcee7d08be8663f721f0502dc5b65808)
| -rw-r--r-- | sys/dev/firmware/arm/scmi_clk.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/dev/firmware/arm/scmi_clk.c b/sys/dev/firmware/arm/scmi_clk.c index 30d630c8ef57..48259d81a60a 100644 --- a/sys/dev/firmware/arm/scmi_clk.c +++ b/sys/dev/firmware/arm/scmi_clk.c @@ -56,7 +56,7 @@ struct scmi_clknode_softc { int clock_id; }; -static int __unused +static int scmi_clk_get_rate(struct scmi_clk_softc *sc, int clk_id, uint64_t *rate) { struct scmi_clk_rate_get_out out; @@ -155,8 +155,18 @@ scmi_clknode_init(struct clknode *clk, device_t dev) static int scmi_clknode_recalc_freq(struct clknode *clk, uint64_t *freq) { + struct scmi_clknode_softc *clk_sc; + struct scmi_clk_softc *sc; + uint64_t rate; + int ret; - return (0); + clk_sc = clknode_get_softc(clk); + sc = device_get_softc(clk_sc->dev); + ret = scmi_clk_get_rate(sc, clk_sc->clock_id, &rate); + if (ret == 0) + *freq = rate; + + return (ret); } static int |
