This source file includes following definitions.
- ddk750_set_dpms
- get_power_mode
- sm750_set_power_mode
- sm750_set_current_gate
- sm750_enable_2d_engine
- sm750_enable_dma
- sm750_enable_gpio
- sm750_enable_i2c
1
2 #include "ddk750_chip.h"
3 #include "ddk750_reg.h"
4 #include "ddk750_power.h"
5
6 void ddk750_set_dpms(enum dpms state)
7 {
8 unsigned int value;
9
10 if (sm750_get_chip_type() == SM750LE) {
11 value = peek32(CRT_DISPLAY_CTRL) & ~CRT_DISPLAY_CTRL_DPMS_MASK;
12 value |= (state << CRT_DISPLAY_CTRL_DPMS_SHIFT);
13 poke32(CRT_DISPLAY_CTRL, value);
14 } else {
15 value = peek32(SYSTEM_CTRL);
16 value = (value & ~SYSTEM_CTRL_DPMS_MASK) | state;
17 poke32(SYSTEM_CTRL, value);
18 }
19 }
20
21 static unsigned int get_power_mode(void)
22 {
23 if (sm750_get_chip_type() == SM750LE)
24 return 0;
25 return peek32(POWER_MODE_CTRL) & POWER_MODE_CTRL_MODE_MASK;
26 }
27
28
29
30
31
32 void sm750_set_power_mode(unsigned int mode)
33 {
34 unsigned int ctrl = 0;
35
36 ctrl = peek32(POWER_MODE_CTRL) & ~POWER_MODE_CTRL_MODE_MASK;
37
38 if (sm750_get_chip_type() == SM750LE)
39 return;
40
41 switch (mode) {
42 case POWER_MODE_CTRL_MODE_MODE0:
43 ctrl |= POWER_MODE_CTRL_MODE_MODE0;
44 break;
45
46 case POWER_MODE_CTRL_MODE_MODE1:
47 ctrl |= POWER_MODE_CTRL_MODE_MODE1;
48 break;
49
50 case POWER_MODE_CTRL_MODE_SLEEP:
51 ctrl |= POWER_MODE_CTRL_MODE_SLEEP;
52 break;
53
54 default:
55 break;
56 }
57
58
59 if (mode == POWER_MODE_CTRL_MODE_SLEEP) {
60 ctrl &= ~POWER_MODE_CTRL_OSC_INPUT;
61 #ifdef VALIDATION_CHIP
62 ctrl &= ~POWER_MODE_CTRL_336CLK;
63 #endif
64 } else {
65 ctrl |= POWER_MODE_CTRL_OSC_INPUT;
66 #ifdef VALIDATION_CHIP
67 ctrl |= POWER_MODE_CTRL_336CLK;
68 #endif
69 }
70
71
72 poke32(POWER_MODE_CTRL, ctrl);
73 }
74
75 void sm750_set_current_gate(unsigned int gate)
76 {
77 if (get_power_mode() == POWER_MODE_CTRL_MODE_MODE1)
78 poke32(MODE1_GATE, gate);
79 else
80 poke32(MODE0_GATE, gate);
81 }
82
83
84
85
86 void sm750_enable_2d_engine(unsigned int enable)
87 {
88 u32 gate;
89
90 gate = peek32(CURRENT_GATE);
91 if (enable)
92 gate |= (CURRENT_GATE_DE | CURRENT_GATE_CSC);
93 else
94 gate &= ~(CURRENT_GATE_DE | CURRENT_GATE_CSC);
95
96 sm750_set_current_gate(gate);
97 }
98
99 void sm750_enable_dma(unsigned int enable)
100 {
101 u32 gate;
102
103
104 gate = peek32(CURRENT_GATE);
105 if (enable)
106 gate |= CURRENT_GATE_DMA;
107 else
108 gate &= ~CURRENT_GATE_DMA;
109
110 sm750_set_current_gate(gate);
111 }
112
113
114
115
116 void sm750_enable_gpio(unsigned int enable)
117 {
118 u32 gate;
119
120
121 gate = peek32(CURRENT_GATE);
122 if (enable)
123 gate |= CURRENT_GATE_GPIO;
124 else
125 gate &= ~CURRENT_GATE_GPIO;
126
127 sm750_set_current_gate(gate);
128 }
129
130
131
132
133 void sm750_enable_i2c(unsigned int enable)
134 {
135 u32 gate;
136
137
138 gate = peek32(CURRENT_GATE);
139 if (enable)
140 gate |= CURRENT_GATE_I2C;
141 else
142 gate &= ~CURRENT_GATE_I2C;
143
144 sm750_set_current_gate(gate);
145 }