linux/arch/blackfin/include/asm/clocks.h
<<
>>
Prefs
   1/*
   2 * Common Clock definitions for various kernel files
   3 *
   4 * Copyright 2007-2008 Analog Devices Inc.
   5 *
   6 * Licensed under the GPL-2 or later.
   7 */
   8
   9#ifndef _BFIN_CLOCKS_H
  10#define _BFIN_CLOCKS_H
  11
  12#include <asm/dpmc.h>
  13
  14#ifdef CONFIG_CCLK_DIV_1
  15# define CONFIG_CCLK_ACT_DIV   CCLK_DIV1
  16# define CONFIG_CCLK_DIV 1
  17#endif
  18
  19#ifdef CONFIG_CCLK_DIV_2
  20# define CONFIG_CCLK_ACT_DIV   CCLK_DIV2
  21# define CONFIG_CCLK_DIV 2
  22#endif
  23
  24#ifdef CONFIG_CCLK_DIV_4
  25# define CONFIG_CCLK_ACT_DIV   CCLK_DIV4
  26# define CONFIG_CCLK_DIV 4
  27#endif
  28
  29#ifdef CONFIG_CCLK_DIV_8
  30# define CONFIG_CCLK_ACT_DIV   CCLK_DIV8
  31# define CONFIG_CCLK_DIV 8
  32#endif
  33
  34#ifndef CONFIG_PLL_BYPASS
  35# ifndef CONFIG_CLKIN_HALF
  36#  define CONFIG_VCO_HZ   (CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)
  37# else
  38#  define CONFIG_VCO_HZ   ((CONFIG_CLKIN_HZ * CONFIG_VCO_MULT)/2)
  39# endif
  40
  41# define CONFIG_CCLK_HZ  (CONFIG_VCO_HZ/CONFIG_CCLK_DIV)
  42# define CONFIG_SCLK_HZ  (CONFIG_VCO_HZ/CONFIG_SCLK_DIV)
  43
  44#else
  45# define CONFIG_VCO_HZ   (CONFIG_CLKIN_HZ)
  46# define CONFIG_CCLK_HZ  (CONFIG_CLKIN_HZ)
  47# define CONFIG_SCLK_HZ  (CONFIG_CLKIN_HZ)
  48# define CONFIG_VCO_MULT 0
  49#endif
  50
  51#include <linux/clk.h>
  52
  53struct clk_ops {
  54        unsigned long (*get_rate)(struct clk *clk);
  55        unsigned long (*round_rate)(struct clk *clk, unsigned long rate);
  56        int (*set_rate)(struct clk *clk, unsigned long rate);
  57        int (*enable)(struct clk *clk);
  58        int (*disable)(struct clk *clk);
  59};
  60
  61struct clk {
  62        struct clk              *parent;
  63        const char              *name;
  64        unsigned long           rate;
  65        spinlock_t              lock;
  66        u32                     flags;
  67        const struct clk_ops    *ops;
  68        void __iomem            *reg;
  69        u32                     mask;
  70        u32                     shift;
  71};
  72
  73int clk_init(void);
  74#endif
  75