linux/arch/m68k/include/asm/mcfclk.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * mcfclk.h -- coldfire specific clock structure
   4 */
   5
   6
   7#ifndef mcfclk_h
   8#define mcfclk_h
   9
  10struct clk;
  11
  12struct clk_ops {
  13        void (*enable)(struct clk *);
  14        void (*disable)(struct clk *);
  15};
  16
  17struct clk {
  18        const char *name;
  19        struct clk_ops *clk_ops;
  20        unsigned long rate;
  21        unsigned long enabled;
  22        u8 slot;
  23};
  24
  25extern struct clk *mcf_clks[];
  26
  27#ifdef MCFPM_PPMCR0
  28extern struct clk_ops clk_ops0;
  29#ifdef MCFPM_PPMCR1
  30extern struct clk_ops clk_ops1;
  31#endif /* MCFPM_PPMCR1 */
  32
  33#define DEFINE_CLK(clk_bank, clk_name, clk_slot, clk_rate) \
  34static struct clk __clk_##clk_bank##_##clk_slot = { \
  35        .name = clk_name, \
  36        .clk_ops = &clk_ops##clk_bank, \
  37        .rate = clk_rate, \
  38        .slot = clk_slot, \
  39}
  40
  41void __clk_init_enabled(struct clk *);
  42void __clk_init_disabled(struct clk *);
  43#else
  44#define DEFINE_CLK(clk_ref, clk_name, clk_rate) \
  45        static struct clk clk_##clk_ref = { \
  46                .name = clk_name, \
  47                .rate = clk_rate, \
  48        }
  49#endif /* MCFPM_PPMCR0 */
  50
  51#endif /* mcfclk_h */
  52