linux/arch/mips/include/asm/clock.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __ASM_MIPS_CLOCK_H
   3#define __ASM_MIPS_CLOCK_H
   4
   5#include <linux/kref.h>
   6#include <linux/list.h>
   7#include <linux/seq_file.h>
   8#include <linux/clk.h>
   9
  10struct clk;
  11
  12struct clk_ops {
  13        void (*init) (struct clk *clk);
  14        void (*enable) (struct clk *clk);
  15        void (*disable) (struct clk *clk);
  16        void (*recalc) (struct clk *clk);
  17        int (*set_rate) (struct clk *clk, unsigned long rate, int algo_id);
  18        long (*round_rate) (struct clk *clk, unsigned long rate);
  19};
  20
  21struct clk {
  22        struct list_head node;
  23        const char *name;
  24        int id;
  25        struct module *owner;
  26
  27        struct clk *parent;
  28        struct clk_ops *ops;
  29
  30        struct kref kref;
  31
  32        unsigned long rate;
  33        unsigned long flags;
  34};
  35
  36#define CLK_ALWAYS_ENABLED      (1 << 0)
  37#define CLK_RATE_PROPAGATES     (1 << 1)
  38
  39int clk_init(void);
  40
  41int __clk_enable(struct clk *);
  42void __clk_disable(struct clk *);
  43
  44void clk_recalc_rate(struct clk *);
  45
  46int clk_register(struct clk *);
  47void clk_unregister(struct clk *);
  48
  49#endif                          /* __ASM_MIPS_CLOCK_H */
  50