Lines Matching refs:group
32 * struct mstp_clock_group - MSTP gating clocks group
34 * @data: clock specifier translation for clocks in this group
39 * @clks: clocks in this group
54 * @group: MSTP clocks group
59 struct mstp_clock_group *group;
64 static inline u32 cpg_mstp_read(struct mstp_clock_group *group,
67 return group->width_8bit ? readb(reg) : readl(reg);
70 static inline void cpg_mstp_write(struct mstp_clock_group *group, u32 val,
73 group->width_8bit ? writeb(val, reg) : writel(val, reg);
79 struct mstp_clock_group *group = clock->group;
85 spin_lock_irqsave(&group->lock, flags);
87 value = cpg_mstp_read(group, group->smstpcr);
92 cpg_mstp_write(group, value, group->smstpcr);
94 if (!group->mstpsr) {
96 cpg_mstp_read(group, group->smstpcr);
97 barrier_data(group->smstpcr);
100 spin_unlock_irqrestore(&group->lock, flags);
102 if (!enable || !group->mstpsr)
105 /* group->width_8bit is always false if group->mstpsr is present */
106 ret = readl_poll_timeout_atomic(group->mstpsr, value,
110 group->smstpcr, clock->bit_index);
128 struct mstp_clock_group *group = clock->group;
131 if (group->mstpsr)
132 value = cpg_mstp_read(group, group->mstpsr);
134 value = cpg_mstp_read(group, group->smstpcr);
147 struct mstp_clock_group *group)
169 clock->group = group;
182 struct mstp_clock_group *group;
187 group = kzalloc(struct_size(group, clks, MSTP_MAX_CLOCKS), GFP_KERNEL);
188 if (!group)
191 clks = group->clks;
192 spin_lock_init(&group->lock);
193 group->data.clks = clks;
195 group->smstpcr = of_iomap(np, 0);
196 group->mstpsr = of_iomap(np, 1);
198 if (group->smstpcr == NULL) {
200 kfree(group);
205 group->width_8bit = true;
239 clkidx, group);
241 group->data.clk_num = max(group->data.clk_num,
258 of_clk_add_provider(np, of_clk_src_onecell_get, &group->data);