1 #include "ddk750_help.h"
2 #include "ddk750_reg.h"
3 #include "ddk750_power.h"
5 void ddk750_setDPMS(DPMS_t state)
9 if (getChipType() == SM750LE) {
10 value = PEEK32(CRT_DISPLAY_CTRL);
11 POKE32(CRT_DISPLAY_CTRL, FIELD_VALUE(value, CRT_DISPLAY_CTRL,
14 value = PEEK32(SYSTEM_CTRL);
15 value = (value & ~SYSTEM_CTRL_DPMS_MASK) | state;
16 POKE32(SYSTEM_CTRL, value);
20 static unsigned int getPowerMode(void)
22 if (getChipType() == SM750LE)
24 return FIELD_GET(PEEK32(POWER_MODE_CTRL), POWER_MODE_CTRL, MODE);
29 * SM50x can operate in one of three modes: 0, 1 or Sleep.
30 * On hardware reset, power mode 0 is default.
32 void setPowerMode(unsigned int powerMode)
34 unsigned int control_value = 0;
36 control_value = PEEK32(POWER_MODE_CTRL);
38 if (getChipType() == SM750LE)
42 case POWER_MODE_CTRL_MODE_MODE0:
43 control_value = FIELD_SET(control_value, POWER_MODE_CTRL, MODE,
47 case POWER_MODE_CTRL_MODE_MODE1:
48 control_value = FIELD_SET(control_value, POWER_MODE_CTRL, MODE,
52 case POWER_MODE_CTRL_MODE_SLEEP:
53 control_value = FIELD_SET(control_value, POWER_MODE_CTRL, MODE,
61 /* Set up other fields in Power Control Register */
62 if (powerMode == POWER_MODE_CTRL_MODE_SLEEP) {
63 control_value &= ~POWER_MODE_CTRL_OSC_INPUT;
64 #ifdef VALIDATION_CHIP
65 control_value &= ~POWER_MODE_CTRL_336CLK;
68 control_value |= POWER_MODE_CTRL_OSC_INPUT;
69 #ifdef VALIDATION_CHIP
70 control_value |= POWER_MODE_CTRL_336CLK;
74 /* Program new power mode. */
75 POKE32(POWER_MODE_CTRL, control_value);
78 void setCurrentGate(unsigned int gate)
80 unsigned int gate_reg;
83 /* Get current power mode. */
84 mode = getPowerMode();
87 case POWER_MODE_CTRL_MODE_MODE0:
88 gate_reg = MODE0_GATE;
91 case POWER_MODE_CTRL_MODE_MODE1:
92 gate_reg = MODE1_GATE;
96 gate_reg = MODE0_GATE;
99 POKE32(gate_reg, gate);
105 * This function enable/disable the 2D engine.
107 void enable2DEngine(unsigned int enable)
111 gate = PEEK32(CURRENT_GATE);
113 gate |= (CURRENT_GATE_DE | CURRENT_GATE_CSC);
115 gate &= ~(CURRENT_GATE_DE | CURRENT_GATE_CSC);
118 setCurrentGate(gate);
121 void enableDMA(unsigned int enable)
125 /* Enable DMA Gate */
126 gate = PEEK32(CURRENT_GATE);
128 gate |= CURRENT_GATE_DMA;
130 gate &= ~CURRENT_GATE_DMA;
132 setCurrentGate(gate);
136 * This function enable/disable the GPIO Engine
138 void enableGPIO(unsigned int enable)
142 /* Enable GPIO Gate */
143 gate = PEEK32(CURRENT_GATE);
145 gate |= CURRENT_GATE_GPIO;
147 gate &= ~CURRENT_GATE_GPIO;
149 setCurrentGate(gate);
153 * This function enable/disable the I2C Engine
155 void enableI2C(unsigned int enable)
159 /* Enable I2C Gate */
160 gate = PEEK32(CURRENT_GATE);
162 gate |= CURRENT_GATE_I2C;
164 gate &= ~CURRENT_GATE_I2C;
166 setCurrentGate(gate);