![Supriya Karanth](/assets/img/avatar_default.png)
Found by checkpatch.pl - ERROR: Bad function definition A function with no arguments allows for variadic arguments. Add void in between the empty parentheses to indicate that the function takes no arguments. changes made using coccinelle script: @@ type T; identifier f; @@ T f( +void ) { ... } Signed-off-by: Supriya Karanth <iskaranth@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
240 lines
5.1 KiB
C
240 lines
5.1 KiB
C
#include "ddk750_help.h"
|
|
#include "ddk750_reg.h"
|
|
#include "ddk750_power.h"
|
|
|
|
void ddk750_setDPMS(DPMS_t state)
|
|
{
|
|
unsigned int value;
|
|
if(getChipType() == SM750LE){
|
|
value = PEEK32(CRT_DISPLAY_CTRL);
|
|
POKE32(CRT_DISPLAY_CTRL,FIELD_VALUE(value,CRT_DISPLAY_CTRL,DPMS,state));
|
|
}else{
|
|
value = PEEK32(SYSTEM_CTRL);
|
|
value= FIELD_VALUE(value,SYSTEM_CTRL,DPMS,state);
|
|
POKE32(SYSTEM_CTRL, value);
|
|
}
|
|
}
|
|
|
|
unsigned int getPowerMode(void)
|
|
{
|
|
if(getChipType() == SM750LE)
|
|
return 0;
|
|
return (FIELD_GET(PEEK32(POWER_MODE_CTRL), POWER_MODE_CTRL, MODE));
|
|
}
|
|
|
|
|
|
/*
|
|
* SM50x can operate in one of three modes: 0, 1 or Sleep.
|
|
* On hardware reset, power mode 0 is default.
|
|
*/
|
|
void setPowerMode(unsigned int powerMode)
|
|
{
|
|
unsigned int control_value = 0;
|
|
|
|
control_value = PEEK32(POWER_MODE_CTRL);
|
|
|
|
if(getChipType() == SM750LE)
|
|
return;
|
|
|
|
switch (powerMode)
|
|
{
|
|
case POWER_MODE_CTRL_MODE_MODE0:
|
|
control_value = FIELD_SET(control_value, POWER_MODE_CTRL, MODE, MODE0);
|
|
break;
|
|
|
|
case POWER_MODE_CTRL_MODE_MODE1:
|
|
control_value = FIELD_SET(control_value, POWER_MODE_CTRL, MODE, MODE1);
|
|
break;
|
|
|
|
case POWER_MODE_CTRL_MODE_SLEEP:
|
|
control_value = FIELD_SET(control_value, POWER_MODE_CTRL, MODE, SLEEP);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
/* Set up other fields in Power Control Register */
|
|
if (powerMode == POWER_MODE_CTRL_MODE_SLEEP)
|
|
{
|
|
control_value =
|
|
#ifdef VALIDATION_CHIP
|
|
FIELD_SET( control_value, POWER_MODE_CTRL, 336CLK, OFF) |
|
|
#endif
|
|
FIELD_SET( control_value, POWER_MODE_CTRL, OSC_INPUT, OFF);
|
|
}
|
|
else
|
|
{
|
|
control_value =
|
|
#ifdef VALIDATION_CHIP
|
|
FIELD_SET( control_value, POWER_MODE_CTRL, 336CLK, ON) |
|
|
#endif
|
|
FIELD_SET( control_value, POWER_MODE_CTRL, OSC_INPUT, ON);
|
|
}
|
|
|
|
/* Program new power mode. */
|
|
POKE32(POWER_MODE_CTRL, control_value);
|
|
}
|
|
|
|
void setCurrentGate(unsigned int gate)
|
|
{
|
|
unsigned int gate_reg;
|
|
unsigned int mode;
|
|
|
|
/* Get current power mode. */
|
|
mode = getPowerMode();
|
|
|
|
switch (mode)
|
|
{
|
|
case POWER_MODE_CTRL_MODE_MODE0:
|
|
gate_reg = MODE0_GATE;
|
|
break;
|
|
|
|
case POWER_MODE_CTRL_MODE_MODE1:
|
|
gate_reg = MODE1_GATE;
|
|
break;
|
|
|
|
default:
|
|
gate_reg = MODE0_GATE;
|
|
break;
|
|
}
|
|
POKE32(gate_reg, gate);
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
* This function enable/disable the 2D engine.
|
|
*/
|
|
void enable2DEngine(unsigned int enable)
|
|
{
|
|
uint32_t gate;
|
|
|
|
gate = PEEK32(CURRENT_GATE);
|
|
if (enable)
|
|
{
|
|
gate = FIELD_SET(gate, CURRENT_GATE, DE, ON);
|
|
gate = FIELD_SET(gate, CURRENT_GATE, CSC, ON);
|
|
}
|
|
else
|
|
{
|
|
gate = FIELD_SET(gate, CURRENT_GATE, DE, OFF);
|
|
gate = FIELD_SET(gate, CURRENT_GATE, CSC, OFF);
|
|
}
|
|
|
|
setCurrentGate(gate);
|
|
}
|
|
|
|
|
|
/*
|
|
* This function enable/disable the ZV Port.
|
|
*/
|
|
void enableZVPort(unsigned int enable)
|
|
{
|
|
uint32_t gate;
|
|
|
|
/* Enable ZV Port Gate */
|
|
gate = PEEK32(CURRENT_GATE);
|
|
if (enable)
|
|
{
|
|
gate = FIELD_SET(gate, CURRENT_GATE, ZVPORT, ON);
|
|
#if 1
|
|
/* Using Software I2C */
|
|
gate = FIELD_SET(gate, CURRENT_GATE, GPIO, ON);
|
|
#else
|
|
/* Using Hardware I2C */
|
|
gate = FIELD_SET(gate, CURRENT_GATE, I2C, ON);
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
/* Disable ZV Port Gate. There is no way to know whether the GPIO pins are being used
|
|
or not. Therefore, do not disable the GPIO gate. */
|
|
gate = FIELD_SET(gate, CURRENT_GATE, ZVPORT, OFF);
|
|
}
|
|
|
|
setCurrentGate(gate);
|
|
}
|
|
|
|
|
|
void enableSSP(unsigned int enable)
|
|
{
|
|
uint32_t gate;
|
|
|
|
/* Enable SSP Gate */
|
|
gate = PEEK32(CURRENT_GATE);
|
|
if (enable)
|
|
gate = FIELD_SET(gate, CURRENT_GATE, SSP, ON);
|
|
else
|
|
gate = FIELD_SET(gate, CURRENT_GATE, SSP, OFF);
|
|
|
|
setCurrentGate(gate);
|
|
}
|
|
|
|
void enableDMA(unsigned int enable)
|
|
{
|
|
uint32_t gate;
|
|
|
|
/* Enable DMA Gate */
|
|
gate = PEEK32(CURRENT_GATE);
|
|
if (enable)
|
|
gate = FIELD_SET(gate, CURRENT_GATE, DMA, ON);
|
|
else
|
|
gate = FIELD_SET(gate, CURRENT_GATE, DMA, OFF);
|
|
|
|
setCurrentGate(gate);
|
|
}
|
|
|
|
/*
|
|
* This function enable/disable the GPIO Engine
|
|
*/
|
|
void enableGPIO(unsigned int enable)
|
|
{
|
|
uint32_t gate;
|
|
|
|
/* Enable GPIO Gate */
|
|
gate = PEEK32(CURRENT_GATE);
|
|
if (enable)
|
|
gate = FIELD_SET(gate, CURRENT_GATE, GPIO, ON);
|
|
else
|
|
gate = FIELD_SET(gate, CURRENT_GATE, GPIO, OFF);
|
|
|
|
setCurrentGate(gate);
|
|
}
|
|
|
|
/*
|
|
* This function enable/disable the PWM Engine
|
|
*/
|
|
void enablePWM(unsigned int enable)
|
|
{
|
|
uint32_t gate;
|
|
|
|
/* Enable PWM Gate */
|
|
gate = PEEK32(CURRENT_GATE);
|
|
if (enable)
|
|
gate = FIELD_SET(gate, CURRENT_GATE, PWM, ON);
|
|
else
|
|
gate = FIELD_SET(gate, CURRENT_GATE, PWM, OFF);
|
|
|
|
setCurrentGate(gate);
|
|
}
|
|
|
|
/*
|
|
* This function enable/disable the I2C Engine
|
|
*/
|
|
void enableI2C(unsigned int enable)
|
|
{
|
|
uint32_t gate;
|
|
|
|
/* Enable I2C Gate */
|
|
gate = PEEK32(CURRENT_GATE);
|
|
if (enable)
|
|
gate = FIELD_SET(gate, CURRENT_GATE, I2C, ON);
|
|
else
|
|
gate = FIELD_SET(gate, CURRENT_GATE, I2C, OFF);
|
|
|
|
setCurrentGate(gate);
|
|
}
|
|
|
|
|