diff options
author | Emmanuel Vadot <manu@FreeBSD.org> | 2019-05-11 15:02:20 +0000 |
---|---|---|
committer | Emmanuel Vadot <manu@FreeBSD.org> | 2019-05-11 15:02:20 +0000 |
commit | 45f64a5956c3dc84a74e68aef34a497f7365c31c (patch) | |
tree | 8c722b7594341f8e14e6666524bc15e8f4b3187b /sys/arm | |
parent | 7fa22f746b9033820217dc1050a3794f2bf6239e (diff) | |
download | src-45f64a5956c3dc84a74e68aef34a497f7365c31c.tar.gz src-45f64a5956c3dc84a74e68aef34a497f7365c31c.zip |
allwinner: clk: prediv_mux: Init the current parent
Do not init the first parent but read the clock register to find
it's current parent and init this one.
Notes
Notes:
svn path=/head/; revision=347489
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/allwinner/clkng/aw_clk_prediv_mux.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c b/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c index 0a4257ace841..a5dfa4c3a836 100644 --- a/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c +++ b/sys/arm/allwinner/clkng/aw_clk_prediv_mux.c @@ -75,7 +75,19 @@ struct aw_clk_prediv_mux_sc { static int aw_clk_prediv_mux_init(struct clknode *clk, device_t dev) { - clknode_init_parent_idx(clk, 0); + struct aw_clk_prediv_mux_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(clk); + READ4(clk, sc->offset, &val); + DEVICE_UNLOCK(clk); + + /* Init the current parent */ + val = (val & sc->mux_mask) >> sc->mux_shift; + clknode_init_parent_idx(clk, val); + return (0); } |