1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2bea8bcb1SSteven King /* 3bea8bcb1SSteven King * mcfclk.h -- coldfire specific clock structure 4bea8bcb1SSteven King */ 5bea8bcb1SSteven King 6bea8bcb1SSteven King 7bea8bcb1SSteven King #ifndef mcfclk_h 8bea8bcb1SSteven King #define mcfclk_h 9bea8bcb1SSteven King 10bea8bcb1SSteven King struct clk; 11bea8bcb1SSteven King 12bea8bcb1SSteven King struct clk_ops { 13bea8bcb1SSteven King void (*enable)(struct clk *); 14bea8bcb1SSteven King void (*disable)(struct clk *); 15bea8bcb1SSteven King }; 16bea8bcb1SSteven King 17bea8bcb1SSteven King struct clk { 18bea8bcb1SSteven King struct clk_ops *clk_ops; 19bea8bcb1SSteven King unsigned long rate; 20bea8bcb1SSteven King unsigned long enabled; 21bea8bcb1SSteven King u8 slot; 22bea8bcb1SSteven King }; 23bea8bcb1SSteven King 24610ac938SGreg Ungerer #ifdef MCFPM_PPMCR0 25bea8bcb1SSteven King extern struct clk_ops clk_ops0; 26bea8bcb1SSteven King #ifdef MCFPM_PPMCR1 27bea8bcb1SSteven King extern struct clk_ops clk_ops1; 28bea8bcb1SSteven King #endif /* MCFPM_PPMCR1 */ 29bea8bcb1SSteven King 30*991f5c4dSAngelo Dureghello extern struct clk_ops clk_ops2; 31*991f5c4dSAngelo Dureghello 32bea8bcb1SSteven King #define DEFINE_CLK(clk_bank, clk_name, clk_slot, clk_rate) \ 33bea8bcb1SSteven King static struct clk __clk_##clk_bank##_##clk_slot = { \ 34bea8bcb1SSteven King .clk_ops = &clk_ops##clk_bank, \ 35bea8bcb1SSteven King .rate = clk_rate, \ 36bea8bcb1SSteven King .slot = clk_slot, \ 37bea8bcb1SSteven King } 38bea8bcb1SSteven King 39bea8bcb1SSteven King void __clk_init_enabled(struct clk *); 40bea8bcb1SSteven King void __clk_init_disabled(struct clk *); 41610ac938SGreg Ungerer #else 42610ac938SGreg Ungerer #define DEFINE_CLK(clk_ref, clk_name, clk_rate) \ 43610ac938SGreg Ungerer static struct clk clk_##clk_ref = { \ 44610ac938SGreg Ungerer .rate = clk_rate, \ 45610ac938SGreg Ungerer } 46bea8bcb1SSteven King #endif /* MCFPM_PPMCR0 */ 47bea8bcb1SSteven King 48bea8bcb1SSteven King #endif /* mcfclk_h */ 49