Blame view

arch/arm/mach-omap2/clock2430.c 1.79 KB
81b34fbec   Paul Walmsley   OMAP2 clock: spli...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  /*
   * clock2430.c - OMAP2430-specific clock integration code
   *
   * Copyright (C) 2005-2008 Texas Instruments, Inc.
   * Copyright (C) 2004-2010 Nokia Corporation
   *
   * Contacts:
   * Richard Woodruff <r-woodruff2@ti.com>
   * Paul Walmsley
   *
   * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
   * Gordon McNutt and RidgeRun, Inc.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   */
  #undef DEBUG
  
  #include <linux/kernel.h>
  #include <linux/clk.h>
  #include <linux/io.h>
  
  #include <plat/clock.h>
  
  #include "clock.h"
  #include "clock2xxx.h"
59fb659b0   Paul Walmsley   OMAP2/3: PRCM: sp...
28
  #include "cm2xxx_3xxx.h"
81b34fbec   Paul Walmsley   OMAP2 clock: spli...
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
  #include "cm-regbits-24xx.h"
  
  /**
   * omap2430_clk_i2chs_find_idlest - return CM_IDLEST info for 2430 I2CHS
   * @clk: struct clk * being enabled
   * @idlest_reg: void __iomem ** to store CM_IDLEST reg address into
   * @idlest_bit: pointer to a u8 to store the CM_IDLEST bit shift into
   * @idlest_val: pointer to a u8 to store the CM_IDLEST indicator
   *
   * OMAP2430 I2CHS CM_IDLEST bits are in CM_IDLEST1_CORE, but the
   * CM_*CLKEN bits are in CM_{I,F}CLKEN2_CORE.  This custom function
   * passes back the correct CM_IDLEST register address for I2CHS
   * modules.  No return value.
   */
  static void omap2430_clk_i2chs_find_idlest(struct clk *clk,
  					   void __iomem **idlest_reg,
  					   u8 *idlest_bit,
  					   u8 *idlest_val)
  {
  	*idlest_reg = OMAP2430_CM_REGADDR(CORE_MOD, CM_IDLEST);
  	*idlest_bit = clk->enable_bit;
  	*idlest_val = OMAP24XX_CM_IDLEST_VAL;
  }
  
  /* 2430 I2CHS has non-standard IDLEST register */
  const struct clkops clkops_omap2430_i2chs_wait = {
  	.enable		= omap2_dflt_clk_enable,
  	.disable	= omap2_dflt_clk_disable,
  	.find_idlest	= omap2430_clk_i2chs_find_idlest,
  	.find_companion = omap2_clk_dflt_find_companion,
  };