Lines Matching refs:clock
39 static unsigned long clk_scmi_common_get_parent_rate(rk_scmi_clock_t *clock, in clk_scmi_common_get_parent_rate() argument
44 if (clock->is_dynamic_prate != 0) { in clk_scmi_common_get_parent_rate()
45 p_clock = rockchip_scmi_get_clock(0, clock->parent_table[id]); in clk_scmi_common_get_parent_rate()
53 return clock->parent_table[id]; in clk_scmi_common_get_parent_rate()
57 unsigned long clk_scmi_common_get_rate(rk_scmi_clock_t *clock) in clk_scmi_common_get_rate() argument
61 sel = mmio_read_32(clock->info[MUX_ADDR_INFO]) >> in clk_scmi_common_get_rate()
62 clock->info[MUX_SHIFT_INFO]; in clk_scmi_common_get_rate()
63 sel = sel & (BIT(clock->info[MUX_WIDTH_INFO]) - 1); in clk_scmi_common_get_rate()
64 div = mmio_read_32(clock->info[DIV_ADDR_INFO]) >> in clk_scmi_common_get_rate()
65 clock->info[DIV_SHIFT_INFO]; in clk_scmi_common_get_rate()
66 div = div & (BIT(clock->info[DIV_WIDTH_INFO]) - 1); in clk_scmi_common_get_rate()
67 parent_rate = clk_scmi_common_get_parent_rate(clock, sel); in clk_scmi_common_get_rate()
72 int clk_scmi_common_set_rate(rk_scmi_clock_t *clock, unsigned long rate) in clk_scmi_common_set_rate() argument
78 (clock->info[MUX_WIDTH_INFO] == 0 && clock->info[DIV_WIDTH_INFO] == 0)) in clk_scmi_common_set_rate()
81 sel_mask = BIT(clock->info[MUX_WIDTH_INFO]) - 1; in clk_scmi_common_set_rate()
82 div_mask = BIT(clock->info[DIV_WIDTH_INFO]) - 1; in clk_scmi_common_set_rate()
83 if (clock->info[MUX_WIDTH_INFO] == 0) { in clk_scmi_common_set_rate()
84 parent_rate = clk_scmi_common_get_parent_rate(clock, 0); in clk_scmi_common_set_rate()
88 mmio_write_32(clock->info[DIV_ADDR_INFO], in clk_scmi_common_set_rate()
90 clock->info[DIV_SHIFT_INFO])); in clk_scmi_common_set_rate()
91 } else if (clock->info[DIV_WIDTH_INFO] == 0) { in clk_scmi_common_set_rate()
93 parent_rate = clk_scmi_common_get_parent_rate(clock, i); in clk_scmi_common_set_rate()
102 mmio_write_32(clock->info[MUX_ADDR_INFO], in clk_scmi_common_set_rate()
104 clock->info[MUX_SHIFT_INFO])); in clk_scmi_common_set_rate()
107 parent_rate = clk_scmi_common_get_parent_rate(clock, i); in clk_scmi_common_set_rate()
123 mmio_write_32(clock->info[DIV_ADDR_INFO], in clk_scmi_common_set_rate()
125 clock->info[DIV_SHIFT_INFO])); in clk_scmi_common_set_rate()
126 mmio_write_32(clock->info[MUX_ADDR_INFO], in clk_scmi_common_set_rate()
128 clock->info[MUX_SHIFT_INFO])); in clk_scmi_common_set_rate()
129 mmio_write_32(clock->info[DIV_ADDR_INFO], in clk_scmi_common_set_rate()
131 clock->info[DIV_SHIFT_INFO])); in clk_scmi_common_set_rate()
136 int clk_scmi_common_set_status(rk_scmi_clock_t *clock, bool status) in clk_scmi_common_set_status() argument
138 mmio_write_32(clock->info[GATE_ADDR_INFO], in clk_scmi_common_set_status()
140 clock->info[GATE_SHIFT_INFO])); in clk_scmi_common_set_status()