Merge tag 'v4.4-rc3'
[firefly-linux-kernel-4.4.55.git] / include / dt-bindings / suspend / rockchip-pm.h
1 /*
2  * Header providing constants for Rockchip pinctrl bindings.
3  *
4  * Copyright (c) 2013 MundoReader S.L.
5  * Author: Heiko Stuebner <heiko@sntech.de>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  */
17
18 #ifndef __DT_BINDINGS_ROCKCHIP_PM_H__
19 #define __DT_BINDINGS_ROCKCHIP_PM_H__
20 /******************************bits ops************************************/
21
22 #ifndef BIT
23 #define BIT(nr)                 (1 << (nr))
24 #endif
25
26 #define RKPM_BITS_W_MSK(bits_shift, msk)        ((msk) << ((bits_shift) + 16))
27
28 #define RKPM_BITS_CLR_VAL(val, bits_shift, msk) (val&~(msk<<bits_shift))
29
30 #define RKPM_SETBITS(bits, bits_shift, msk)     (((bits)&(msk)) << (bits_shift))
31
32 #define RKPM_W_MSK_SETBITS(bits, bits_shift, msk) \
33     (RKPM_BITS_W_MSK(bits_shift, msk) | RKPM_SETBITS(bits, bits_shift, msk))
34
35 #define RKPM_VAL_SETBITS(val,bits, bits_shift, msk) \
36     (RKPM_BITS_CLR_VAL(val,bits_shift, msk) | RKPM_SETBITS(bits, bits_shift, msk))
37
38 #define RKPM_GETBITS(val, bits_shift, msk)      (((val)>> (bits_shift))&(msk))
39
40 /*********************CTRBIT DEFINE*****************************/
41 #define RKPM_CTR_PWR_DMNS BIT(0)
42 #define RKPM_CTR_GTCLKS BIT(1)
43 #define RKPM_CTR_PLLS BIT(2)
44 #define RKPM_CTR_VOLTS BIT(3)
45 #define RKPM_CTR_GPIOS BIT(4)
46 #define RKPM_CTR_DDR BIT(5)
47 #define RKPM_CTR_PMIC BIT(6)
48 #define RKPM_CTR_VOL_PWM0 BIT(10)
49 #define RKPM_CTR_VOL_PWM1 BIT(11)
50 #define RKPM_CTR_VOL_PWM2 BIT(12)
51 #define RKPM_CTR_VOL_PWM3 BIT(13)
52 #define RKPM_CTR_BUS_IDLE BIT(14)
53 /*************************************************************
54 *sys_clk 24M div , it is mutex for 
55 **RKPM_CTR_SYSCLK_DIV and RKPM_CTR_SYSCLK_32K and RKPM_CTR_SYSCLK_OSC_DIS.
56 **you can select only one
57 ************************************************************/
58 #define RKPM_CTR_SYSCLK_DIV BIT(7)// system clk is 24M,and div to min
59 #define RKPM_CTR_SYSCLK_32K BIT(8)// switch sysclk to 32k,need hardwart susport. and div to min
60 #define RKPM_CTR_SYSCLK_OSC_DIS BIT(9) // switch sysclk to 32k,disable 24M OSC,need hardwart susport. and div to min
61
62 //Low Power Function Selection
63 #define RKPM_CTR_IDLESRAM_MD BIT(16) // ddr reslf by soft // nor low power
64 #define RKPM_CTR_IDLEAUTO_MD BIT(17) // ddr reslf by soc // nor low power
65 #define RKPM_CTR_ARMDP_LPMD BIT(18) // arm enter deep sleep,not off power supply  
66 #define RKPM_CTR_ARMOFF_LPMD BIT(19) // arm enter deep sleep,off power supply
67 #define RKPM_CTR_ARMLOGDP_LPMD BIT(20)// arm and logic enter deep sleep,both is not off power supply  
68 #define RKPM_CTR_ARMOFF_LOGDP_LPMD BIT(21)// arm off ,logic enter deep sleep,but it is not off power supply  
69 #define RKPM_CTR_ARMLOGOFF_DLPMD BIT(22) //// arm and logic enter deep sleep,both is off power supply  
70     
71         //debug ctrl Selection
72 #define RKPM_CTR_RET_DIRT BIT(24)
73 #define RKPM_CTR_SRAM_NO_WFI BIT(26)
74 #define RKPM_CTR_WAKE_UP_KEY BIT(27)
75 #define RKPM_CTR_ALL BIT(31)
76
77 /*********************CTRBIT DEFINE END*****************************/
78
79
80 //RKPM_IDX_TO_BITS
81 #define RKPM_OR_2BITS(bit1,bit2) ((RKPM_CTR_##bit1)|(RKPM_CTR_##bit2))
82 #define RKPM_OR_3BITS(bit1,bit2,bit3) ((RKPM_CTR_##bit1)|RKPM_OR_2BITS(bit2,bit3))
83 #define RKPM_OR_4BITS(bit1,bit2,bit3,bit4) ((RKPM_CTR_##bit1)|RKPM_OR_3BITS(bit2,bit3,bit4))
84 #define RKPM_OR_5BITS(bit1,bit2,bit3,bit4,bit5) ((RKPM_CTR_##bit1)|RKPM_OR_4BITS(bit2,bit3,bit4,bit5))
85
86 /*********************CTRBIT DEFINE END*****************************/
87
88 //pin=0x0a21  gpio0a2,port=0,bank=a,b_gpio=2,fun=1
89 #define RKPM_PINBITS_BGPIO(pins) RKPM_GETBITS(pins,4,0xf)
90 #define RKPM_PINBITS_BANK(pins) RKPM_GETBITS(pins,8,0xf) // a,b,c,d
91 #define RKPM_PINBITS_PORT(pins) RKPM_GETBITS(pins,0xc,0xf)
92 #define RKPM_PINBITS_FUN(pins) RKPM_GETBITS(pins,0,0xf)
93
94 //#define RKPM_PINBITS(port,bank,bgpio,fun) 0
95
96 #if 1
97 #define RKPM_PINBITS(port,bank,bgpio,fun) (0\
98                                                                             |RKPM_SETBITS(fun,0,0xf)\
99                                                                             |RKPM_SETBITS(bgpio,0x4,0xf)\
100                                                                             |RKPM_SETBITS(bank,0x8,0xf)\
101                                                                             |RKPM_SETBITS(port,0xc,0xf)\
102                                                                             )
103 #endif
104 #define RKPM_PINBITS_SET_FUN(pins,fun) RKPM_VAL_SETBITS(pins,fun,0,0xf)
105
106 #define RKPM_PINGPIO_PIN (0)
107 #define RKPM_PINGPIO_PIN_MSK (0xffff)
108
109 #define RKPM_PINGPIO_PULL (24)
110 #define RKPM_PINGPIO_PULL_MSK (0x3)
111
112 #define RKPM_PINGPIO_INOUT (26)
113 #define RKPM_PINGPIO_INOUT_MSK (0x3)
114
115 #define RKPM_PINGPIO_LEVEL (28)
116 #define RKPM_PINGPIO_LEVEL_MSK (0x3)
117
118 #define RKPM_GPIO_INPUT (0)
119 #define RKPM_GPIO_OUTPUT (1)
120
121 #define RKPM_GPIO_OUT_L (0)
122 #define RKPM_GPIO_OUT_H (1)
123
124 #define RKPM_GPIO_PULL_Z (0)
125 #define RKPM_GPIO_PULL_UP (0x1)
126 #define RKPM_GPIO_PULL_DN (0x2)
127 #define RKPM_GPIO_PULL_RPTR (0x3)
128
129 #define RKPM_PINGPIO_BITS(pin,pull,inout,_level) (0\
130                                                                          |RKPM_SETBITS(pin,RKPM_PINGPIO_PIN,RKPM_PINGPIO_PIN_MSK)\
131                                                                          |RKPM_SETBITS(inout,RKPM_PINGPIO_INOUT,RKPM_PINGPIO_INOUT_MSK)\
132                                                                          |RKPM_SETBITS(pull,RKPM_PINGPIO_PULL,RKPM_PINGPIO_PULL_MSK)\
133                                                                          |RKPM_SETBITS(_level,RKPM_PINGPIO_LEVEL,RKPM_PINGPIO_LEVEL_MSK)\
134                                                                         )
135                                                              
136 #define RKPM_PINGPIO_BITS_OUTPUT(pin,_level) (0\
137                                                                          |RKPM_SETBITS(pin,RKPM_PINGPIO_PIN,RKPM_PINGPIO_PIN_MSK)\
138                                                                          |RKPM_SETBITS(RKPM_GPIO_OUTPUT,RKPM_PINGPIO_INOUT,RKPM_PINGPIO_INOUT_MSK)\
139                                                                          |RKPM_SETBITS(_level,RKPM_PINGPIO_LEVEL,RKPM_PINGPIO_LEVEL_MSK)\
140                                                                         )
141                                                                         
142 #define RKPM_PINGPIO_BITS_INTPUT(pin,pull) (0\
143                                                                              |RKPM_SETBITS(pin,RKPM_PINGPIO_PIN,RKPM_PINGPIO_PIN_MSK)\
144                                                                              |RKPM_SETBITS(RKPM_GPIO_INPUT,RKPM_PINGPIO_INOUT,RKPM_PINGPIO_INOUT_MSK)\
145                                                                              |RKPM_SETBITS(pull,RKPM_PINGPIO_PULL,RKPM_PINGPIO_PULL_MSK)\
146                                                                             )
147  #define RKPM_PINGPIO_BITS_FUN(pin,pull) (0\
148                                                                              |RKPM_SETBITS(pin,RKPM_PINGPIO_PIN,RKPM_PINGPIO_PIN_MSK)\
149                                                                              |RKPM_SETBITS(pull,RKPM_PINGPIO_PULL,RKPM_PINGPIO_PULL_MSK)\
150                                                                             )    
151
152 #define RKPM_PINGPIO_BITS_PIN(bits)  RKPM_GETBITS(bits,RKPM_PINGPIO_PIN,RKPM_PINGPIO_PIN_MSK)
153 #define RKPM_PINGPIO_BITS_LEVEL(bits) RKPM_GETBITS(bits,RKPM_PINGPIO_LEVEL,RKPM_PINGPIO_INOUT_MSK)  
154 #define RKPM_PINGPIO_BITS_PULL(bits) RKPM_GETBITS(bits,RKPM_PINGPIO_PULL,RKPM_PINGPIO_PULL_MSK)   
155 #define RKPM_PINGPIO_BITS_INOUT(bits) RKPM_GETBITS(bits,RKPM_PINGPIO_INOUT,RKPM_PINGPIO_LEVEL_MSK)   
156
157
158 #endif