| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * mcfclk.h -- coldfire specific clock structure |
| */ |
| |
| |
| #ifndef mcfclk_h |
| #define mcfclk_h |
| |
| struct clk; |
| |
| struct clk_ops { |
| void (*enable)(struct clk *); |
| void (*disable)(struct clk *); |
| }; |
| |
| struct clk { |
| const char *name; |
| struct clk_ops *clk_ops; |
| unsigned long rate; |
| unsigned long enabled; |
| u8 slot; |
| }; |
| |
| extern struct clk *mcf_clks[]; |
| |
| #ifdef MCFPM_PPMCR0 |
| extern struct clk_ops clk_ops0; |
| #ifdef MCFPM_PPMCR1 |
| extern struct clk_ops clk_ops1; |
| #endif /* MCFPM_PPMCR1 */ |
| |
| extern struct clk_ops clk_ops2; |
| |
| #define DEFINE_CLK(clk_bank, clk_name, clk_slot, clk_rate) \ |
| static struct clk __clk_##clk_bank##_##clk_slot = { \ |
| .name = clk_name, \ |
| .clk_ops = &clk_ops##clk_bank, \ |
| .rate = clk_rate, \ |
| .slot = clk_slot, \ |
| } |
| |
| void __clk_init_enabled(struct clk *); |
| void __clk_init_disabled(struct clk *); |
| #else |
| #define DEFINE_CLK(clk_ref, clk_name, clk_rate) \ |
| static struct clk clk_##clk_ref = { \ |
| .name = clk_name, \ |
| .rate = clk_rate, \ |
| } |
| #endif /* MCFPM_PPMCR0 */ |
| |
| #endif /* mcfclk_h */ |