android_kernel_samsung_on5x.../drivers/soc/samsung/pwrcal/S5E7570/S5E7570-pmu.c
2018-06-19 23:16:04 +02:00

104 lines
2.8 KiB
C

#include "../pwrcal.h"
#include "../pwrcal-env.h"
#include "../pwrcal-rae.h"
#include "../pwrcal-pmu.h"
#include "S5E7570-cmusfr.h"
#include "S5E7570-pmusfr.h"
#include "S5E7570-cmu.h"
static void dispaud_prev(int enable)
{
pwrcal_setbit(CLKRUN_CMU_DISPAUD_SYS_PWR_REG, 0, 0);
pwrcal_setbit(CLKSTOP_CMU_DISPAUD_SYS_PWR_REG, 0, 0);
pwrcal_setbit(DISABLE_PLL_CMU_DISPAUD_SYS_PWR_REG, 0, 0);
pwrcal_setf(RESET_LOGIC_DISPAUD_SYS_PWR_REG, 0, 0x3, 0);
pwrcal_setf(RESET_CMU_DISPAUD_SYS_PWR_REG, 0, 0x3, 0);
}
static void g3d_prev(int enable)
{
pwrcal_setbit(CLKRUN_CMU_G3D_SYS_PWR_REG, 0, 0);
pwrcal_setbit(CLKSTOP_CMU_G3D_SYS_PWR_REG, 0, 0);
pwrcal_setbit(DISABLE_PLL_CMU_G3D_SYS_PWR_REG, 0, 0);
pwrcal_setf(RESET_LOGIC_G3D_SYS_PWR_REG, 0, 0x3, 0);
pwrcal_setf(RESET_CMU_G3D_SYS_PWR_REG, 0, 0x3, 0);
}
static void isp_prev(int enable)
{
pwrcal_setbit(CLKRUN_CMU_ISP_SYS_PWR_REG, 0, 0);
pwrcal_setbit(CLKSTOP_CMU_ISP_SYS_PWR_REG, 0, 0);
pwrcal_setbit(DISABLE_PLL_CMU_ISP_SYS_PWR_REG, 0, 0);
pwrcal_setf(RESET_LOGIC_ISP_SYS_PWR_REG, 0, 0x3, 0);
pwrcal_setf(RESET_CMU_ISP_SYS_PWR_REG, 0, 0x3, 0);
}
static void mfcmscl_prev(int enable)
{
pwrcal_setbit(CLKRUN_CMU_MFCMSCL_SYS_PWR_REG, 0, 0);
pwrcal_setbit(CLKSTOP_CMU_MFCMSCL_SYS_PWR_REG, 0, 0);
pwrcal_setbit(DISABLE_PLL_CMU_MFCMSCL_SYS_PWR_REG, 0, 0);
pwrcal_setf(RESET_LOGIC_MFCMSCL_SYS_PWR_REG, 0, 0x3, 0);
pwrcal_setf(RESET_CMU_MFCMSCL_SYS_PWR_REG, 0, 0x3, 0);
}
static void dispaud_post(int enable)
{
pwrcal_setbit(PAD_RETENTION_AUD_OPTION, 28, 1);
}
static void g3d_post(int enable)
{
}
static void isp_post(int enable)
{
}
static void mfcmscl_post(int enable)
{
}
static void dispaud_config(int enable)
{
pwrcal_setf(DISPAUD_OPTION, 0, 0xFFFFFFFF, 0x2);
}
static void g3d_config(int enable)
{
pwrcal_setf(G3D_OPTION, 0, 0xFFFFFFFF, 0x1);
}
static void isp_config(int enable)
{
pwrcal_setf(ISP_OPTION, 0, 0xFFFFFFFF, 0x2);
}
static void mfcmscl_config(int enable)
{
pwrcal_setf(MFCMSCL_OPTION, 0, 0xFFFFFFFF, 0x2);
}
BLKPWR(blkpwr_dispaud, DISPAUD_CONFIGURATION, 0, 0xF, DISPAUD_STATUS, 0, 0xF, dispaud_config, dispaud_prev, dispaud_post);
BLKPWR(blkpwr_g3d, G3D_CONFIGURATION, 0, 0xF, G3D_STATUS, 0, 0xF, g3d_config, g3d_prev, g3d_post);
BLKPWR(blkpwr_isp, ISP_CONFIGURATION, 0, 0xF, ISP_STATUS, 0, 0xF, isp_config, isp_prev, isp_post);
BLKPWR(blkpwr_mfcmscl, MFCMSCL_CONFIGURATION, 0, 0xF, MFCMSCL_STATUS, 0, 0xF, mfcmscl_config, mfcmscl_prev, mfcmscl_post);
struct cal_pd *pwrcal_blkpwr_list[4];
unsigned int pwrcal_blkpwr_size = 4;
static int blkpwr_init(void)
{
pwrcal_blkpwr_list[0] = &blkpwr_blkpwr_dispaud;
pwrcal_blkpwr_list[1] = &blkpwr_blkpwr_g3d;
pwrcal_blkpwr_list[2] = &blkpwr_blkpwr_isp;
pwrcal_blkpwr_list[3] = &blkpwr_blkpwr_mfcmscl;
return 0;
}
struct cal_pd_ops cal_pd_ops = {
.pd_control = blkpwr_control,
.pd_status = blkpwr_status,
.pd_init = blkpwr_init,
};