linux/arch/mips/jz4740/clock.h
<<
>>
Prefs
   1/*
   2 *  Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de>
   3 *  JZ4740 SoC clock support
   4 *
   5 *  This program is free software; you can redistribute  it and/or modify it
   6 *  under  the terms of  the GNU General  Public License as published by the
   7 *  Free Software Foundation;  either version 2 of the  License, or (at your
   8 *  option) any later version.
   9 *
  10 *  You should have received a copy of the  GNU General Public License along
  11 *  with this program; if not, write  to the Free Software Foundation, Inc.,
  12 *  675 Mass Ave, Cambridge, MA 02139, USA.
  13 *
  14 */
  15
  16#ifndef __MIPS_JZ4740_CLOCK_H__
  17#define __MIPS_JZ4740_CLOCK_H__
  18
  19#include <linux/list.h>
  20
  21struct jz4740_clock_board_data {
  22        unsigned long ext_rate;
  23        unsigned long rtc_rate;
  24};
  25
  26extern struct jz4740_clock_board_data jz4740_clock_bdata;
  27
  28void jz4740_clock_suspend(void);
  29void jz4740_clock_resume(void);
  30
  31struct clk;
  32
  33struct clk_ops {
  34        unsigned long (*get_rate)(struct clk *clk);
  35        unsigned long (*round_rate)(struct clk *clk, unsigned long rate);
  36        int (*set_rate)(struct clk *clk, unsigned long rate);
  37        int (*enable)(struct clk *clk);
  38        int (*disable)(struct clk *clk);
  39        int (*is_enabled)(struct clk *clk);
  40
  41        int (*set_parent)(struct clk *clk, struct clk *parent);
  42
  43};
  44
  45struct clk {
  46        const char *name;
  47        struct clk *parent;
  48
  49        uint32_t gate_bit;
  50
  51        const struct clk_ops *ops;
  52
  53        struct list_head list;
  54
  55#ifdef CONFIG_DEBUG_FS
  56        struct dentry *debugfs_entry;
  57        struct dentry *debugfs_parent_entry;
  58#endif
  59
  60};
  61
  62#define JZ4740_CLK_NOT_GATED ((uint32_t)-1)
  63
  64int clk_is_enabled(struct clk *clk);
  65
  66#ifdef CONFIG_DEBUG_FS
  67void jz4740_clock_debugfs_init(void);
  68void jz4740_clock_debugfs_add_clk(struct clk *clk);
  69void jz4740_clock_debugfs_update_parent(struct clk *clk);
  70#else
  71static inline void jz4740_clock_debugfs_init(void) {};
  72static inline void jz4740_clock_debugfs_add_clk(struct clk *clk) {};
  73static inline void jz4740_clock_debugfs_update_parent(struct clk *clk) {};
  74#endif
  75
  76#endif
  77