Blame view

arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c 2.79 KB
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
1
  /*
a5ffef6af   Paul Walmsley   OMAP: clockdomain...
2
   * OMAP2/3 clockdomain common data
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
3
   *
a5ffef6af   Paul Walmsley   OMAP: clockdomain...
4
   * Copyright (C) 2008-2011 Texas Instruments, Inc.
98fa3d8ae   Paul Walmsley   OMAP2+ powerdomai...
5
   * Copyright (C) 2008-2010 Nokia Corporation
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
6
   *
dc0b3a701   Paul Walmsley   OMAP2+: clockdoma...
7
   * Paul Walmsley, Jouni Högander
55ed96945   Paul Walmsley   OMAP2/3 clkdm/pwr...
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
   *
   * This file contains clockdomains and clockdomain wakeup/sleep
   * dependencies for the OMAP2/3 chips.  Some notes:
   *
   * A useful validation rule for struct clockdomain: Any clockdomain
   * referenced by a wkdep_srcs or sleepdep_srcs array must have a
   * dep_bit assigned.  So wkdep_srcs/sleepdep_srcs are really just
   * software-controllable dependencies.  Non-software-controllable
   * dependencies do exist, but they are not encoded below (yet).
   *
   * 24xx does not support programmable sleep dependencies (SLEEPDEP)
   *
   * The overly-specific dep_bit names are due to a bit name collision
   * with CM_FCLKEN_{DSP,IVA2}.  The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
   * value are the same for all powerdomains: 2
   *
   * XXX should dep_bit be a mask, so we can test to see if it is 0 as a
   * sanity check?
   * XXX encode hardware fixed wakeup dependencies -- esp. for 3430 CORE
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
27
   */
1a422724c   Abhijit Pagare   ARM: OMAP4: PM: A...
28
29
30
31
32
  /*
   * To-Do List
   * -> Port the Sleep/Wakeup dependencies for the domains
   *    from the Power domain framework
   */
dc0b3a701   Paul Walmsley   OMAP2+: clockdoma...
33
34
  #include <linux/kernel.h>
  #include <linux/io.h>
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
35

1540f2140   Paul Walmsley   OMAP2+: clockdoma...
36
  #include "clockdomain.h"
59fb659b0   Paul Walmsley   OMAP2/3: PRCM: sp...
37
38
  #include "prm2xxx_3xxx.h"
  #include "cm2xxx_3xxx.h"
74bea6b98   Rajendra Nayak   OMAP: powerdomain...
39
40
41
42
43
  #include "cm-regbits-24xx.h"
  #include "cm-regbits-34xx.h"
  #include "cm-regbits-44xx.h"
  #include "prm-regbits-24xx.h"
  #include "prm-regbits-34xx.h"
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
44
45
  
  /*
55ed96945   Paul Walmsley   OMAP2/3 clkdm/pwr...
46
47
48
49
50
   * Clockdomain dependencies for wkdeps/sleepdeps
   *
   * XXX Hardware dependencies (e.g., dependencies that cannot be
   * changed in software) are not included here yet, but should be.
   */
55ed96945   Paul Walmsley   OMAP2/3 clkdm/pwr...
51
  /* Wakeup dependency source arrays */
a5ffef6af   Paul Walmsley   OMAP: clockdomain...
52
  /* 2xxx-specific possible dependencies */
3d309cdef   Paul Walmsley   OMAP2 clockdomain...
53

a5ffef6af   Paul Walmsley   OMAP: clockdomain...
54
55
56
57
58
59
  /* 2xxx PM_WKDEP_GFX: CORE, MPU, WKUP */
  struct clkdm_dep gfx_24xx_wkdeps[] = {
  	{ .clkdm_name = "core_l3_clkdm" },
  	{ .clkdm_name = "core_l4_clkdm" },
  	{ .clkdm_name = "mpu_clkdm" },
  	{ .clkdm_name = "wkup_clkdm" },
a26017002   Paul Walmsley   OMAP2/3 clockdoma...
60
61
  	{ NULL },
  };
a5ffef6af   Paul Walmsley   OMAP: clockdomain...
62
63
64
65
66
67
  /* 2xxx PM_WKDEP_DSP: CORE, MPU, WKUP */
  struct clkdm_dep dsp_24xx_wkdeps[] = {
  	{ .clkdm_name = "core_l3_clkdm" },
  	{ .clkdm_name = "core_l4_clkdm" },
  	{ .clkdm_name = "mpu_clkdm" },
  	{ .clkdm_name = "wkup_clkdm" },
55ed96945   Paul Walmsley   OMAP2/3 clkdm/pwr...
68
69
  	{ NULL },
  };
55ed96945   Paul Walmsley   OMAP2/3 clkdm/pwr...
70
71
  
  /*
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
72
   * OMAP2/3-common clockdomains
d37f1a136   Paul Walmsley   [ARM] OMAP2/3 clo...
73
74
75
76
77
   *
   * Even though the 2420 has a single PRCM module from the
   * interconnect's perspective, internally it does appear to have
   * separate PRM and CM clockdomains.  The usual test case is
   * sys_clkout/sys_clkout2.
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
78
79
80
   */
  
  /* This is an implicit clockdomain - it is never defined as such in TRM */
a5ffef6af   Paul Walmsley   OMAP: clockdomain...
81
  struct clockdomain wkup_common_clkdm = {
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
82
  	.name		= "wkup_clkdm",
5b74c6766   Paul Walmsley   [ARM] OMAP2/3 clo...
83
  	.pwrdm		= { .name = "wkup_pwrdm" },
55ed96945   Paul Walmsley   OMAP2/3 clkdm/pwr...
84
  	.dep_bit	= OMAP_EN_WKUP_SHIFT,
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
85
  };
a5ffef6af   Paul Walmsley   OMAP: clockdomain...
86
  struct clockdomain prm_common_clkdm = {
d37f1a136   Paul Walmsley   [ARM] OMAP2/3 clo...
87
88
  	.name		= "prm_clkdm",
  	.pwrdm		= { .name = "wkup_pwrdm" },
d37f1a136   Paul Walmsley   [ARM] OMAP2/3 clo...
89
  };
a5ffef6af   Paul Walmsley   OMAP: clockdomain...
90
  struct clockdomain cm_common_clkdm = {
d37f1a136   Paul Walmsley   [ARM] OMAP2/3 clo...
91
92
  	.name		= "cm_clkdm",
  	.pwrdm		= { .name = "core_pwrdm" },
801954d3d   Paul Walmsley   ARM: OMAP2: Clock...
93
  };