Quelle db8500-prcmu.h
Sprache: C
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright ( C ) STMicroelectronics 2009
* Copyright ( C ) ST - Ericsson SA 2010
*
* Author : Kumar Sanghvi < kumar . sanghvi @ stericsson . com >
*
* PRCMU f / w APIs
*/
#ifndef __MFD_DB8500_PRCMU_H
#define __MFD_DB8500_PRCMU_H
#include <linux/interrupt.h>
#include <linux/bitops.h>
/*
* Registers
*/
#define DB8500_PRCM_LINE_VALUE 0 x170
#define DB8500_PRCM_LINE_VALUE_HSI_CAWAKE0 BIT(3 )
#define DB8500_PRCM_DSI_SW_RESET 0 x324
#define DB8500_PRCM_DSI_SW_RESET_DSI0_SW_RESETN BIT(0 )
#define DB8500_PRCM_DSI_SW_RESET_DSI1_SW_RESETN BIT(1 )
#define DB8500_PRCM_DSI_SW_RESET_DSI2_SW_RESETN BIT(2 )
/* This portion previously known as <mach/prcmu-fw-defs_v1.h> */
/**
* enum state - ON / OFF state definition
* @ OFF : State is ON
* @ ON : State is OFF
*
*/
enum state {
OFF = 0 x0,
ON = 0 x1,
};
/**
* enum ret_state - general purpose On / Off / Retention states
*
*/
enum ret_state {
OFFST = 0 ,
ONST = 1 ,
RETST = 2
};
/**
* enum clk_arm - ARM Cortex A9 clock schemes
* @ A9_OFF :
* @ A9_BOOT :
* @ A9_OPPT1 :
* @ A9_OPPT2 :
* @ A9_EXTCLK :
*/
enum clk_arm {
A9_OFF,
A9_BOOT,
A9_OPPT1,
A9_OPPT2,
A9_EXTCLK
};
/**
* enum clk_gen - GEN # 0 / GEN # 1 clock schemes
* @ GEN_OFF :
* @ GEN_BOOT :
* @ GEN_OPPT1 :
*/
enum clk_gen {
GEN_OFF,
GEN_BOOT,
GEN_OPPT1,
};
/* some information between arm and xp70 */
/**
* enum romcode_write - Romcode message written by A9 AND read by XP70
* @ RDY_2_DS : Value set when ApDeepSleep state can be executed by XP70
* @ RDY_2_XP70_RST : Value set when 0 x0F has been successfully polled by the
* romcode . The xp70 will go into self - reset
*/
enum romcode_write {
RDY_2_DS = 0 x09,
RDY_2_XP70_RST = 0 x10
};
/**
* enum romcode_read - Romcode message written by XP70 and read by A9
* @ INIT : Init value when romcode field is not used
* @ FS_2_DS : Value set when power state is going from ApExecute to
* ApDeepSleep
* @ END_DS : Value set when ApDeepSleep power state is reached coming from
* ApExecute state
* @ DS_TO_FS : Value set when power state is going from ApDeepSleep to
* ApExecute
* @ END_FS : Value set when ApExecute power state is reached coming from
* ApDeepSleep state
* @ SWR : Value set when power state is going to ApReset
* @ END_SWR : Value set when the xp70 finished executing ApReset actions and
* waits for romcode acknowledgment to go to self - reset
*/
enum romcode_read {
INIT = 0 x00,
FS_2_DS = 0 x0A,
END_DS = 0 x0B,
DS_TO_FS = 0 x0C,
END_FS = 0 x0D,
SWR = 0 x0E,
END_SWR = 0 x0F
};
/**
* enum ap_pwrst - current power states defined in PRCMU firmware
* @ NO_PWRST : Current power state init
* @ AP_BOOT : Current power state is apBoot
* @ AP_EXECUTE : Current power state is apExecute
* @ AP_DEEP_SLEEP : Current power state is apDeepSleep
* @ AP_SLEEP : Current power state is apSleep
* @ AP_IDLE : Current power state is apIdle
* @ AP_RESET : Current power state is apReset
*/
enum ap_pwrst {
NO_PWRST = 0 x00,
AP_BOOT = 0 x01,
AP_EXECUTE = 0 x02,
AP_DEEP_SLEEP = 0 x03,
AP_SLEEP = 0 x04,
AP_IDLE = 0 x05,
AP_RESET = 0 x06
};
/**
* enum ap_pwrst_trans - Transition states defined in PRCMU firmware
* @ NO_TRANSITION : No power state transition
* @ APEXECUTE_TO_APSLEEP : Power state transition from ApExecute to ApSleep
* @ APIDLE_TO_APSLEEP : Power state transition from ApIdle to ApSleep
* @ APBOOT_TO_APEXECUTE : Power state transition from ApBoot to ApExecute
* @ APEXECUTE_TO_APDEEPSLEEP : Power state transition from ApExecute to
* ApDeepSleep
* @ APEXECUTE_TO_APIDLE : Power state transition from ApExecute to ApIdle
*/
enum ap_pwrst_trans {
PRCMU_AP_NO_CHANGE = 0 x00,
APEXECUTE_TO_APSLEEP = 0 x01,
APIDLE_TO_APSLEEP = 0 x02, /* To be removed */
PRCMU_AP_SLEEP = 0 x01,
APBOOT_TO_APEXECUTE = 0 x03,
APEXECUTE_TO_APDEEPSLEEP = 0 x04, /* To be removed */
PRCMU_AP_DEEP_SLEEP = 0 x04,
APEXECUTE_TO_APIDLE = 0 x05, /* To be removed */
PRCMU_AP_IDLE = 0 x05,
PRCMU_AP_DEEP_IDLE = 0 x07,
};
/**
* enum hw_acc_state - State definition for hardware accelerator
* @ HW_NO_CHANGE : The hardware accelerator state must remain unchanged
* @ HW_OFF : The hardware accelerator must be switched off
* @ HW_OFF_RAMRET : The hardware accelerator must be switched off with its
* internal RAM in retention
* @ HW_ON : The hwa hardware accelerator hwa must be switched on
*
* NOTE ! Deprecated , to be removed when all users switched over to use the
* regulator API .
*/
enum hw_acc_state {
HW_NO_CHANGE = 0 x00,
HW_OFF = 0 x01,
HW_OFF_RAMRET = 0 x02,
HW_ON = 0 x04
};
/**
* enum mbox_2_arm_stat - Status messages definition for mbox_arm
* @ BOOT_TO_EXECUTEOK : The apBoot to apExecute state transition has been
* completed
* @ DEEPSLEEPOK : The apExecute to apDeepSleep state transition has been
* completed
* @ SLEEPOK : The apExecute to apSleep state transition has been completed
* @ IDLEOK : The apExecute to apIdle state transition has been completed
* @ SOFTRESETOK : The A9 watchdog / SoftReset state has been completed
* @ SOFTRESETGO : The A9 watchdog / SoftReset state is on going
* @ BOOT_TO_EXECUTE : The apBoot to apExecute state transition is on going
* @ EXECUTE_TO_DEEPSLEEP : The apExecute to apDeepSleep state transition is on
* going
* @ DEEPSLEEP_TO_EXECUTE : The apDeepSleep to apExecute state transition is on
* going
* @ DEEPSLEEP_TO_EXECUTEOK : The apDeepSleep to apExecute state transition has
* been completed
* @ EXECUTE_TO_SLEEP : The apExecute to apSleep state transition is on going
* @ SLEEP_TO_EXECUTE : The apSleep to apExecute state transition is on going
* @ SLEEP_TO_EXECUTEOK : The apSleep to apExecute state transition has been
* completed
* @ EXECUTE_TO_IDLE : The apExecute to apIdle state transition is on going
* @ IDLE_TO_EXECUTE : The apIdle to apExecute state transition is on going
* @ IDLE_TO_EXECUTEOK : The apIdle to apExecute state transition has been
* completed
* @ INIT_STATUS : Status init
*/
enum ap_pwrsttr_status {
BOOT_TO_EXECUTEOK = 0 xFF,
DEEPSLEEPOK = 0 xFE,
SLEEPOK = 0 xFD,
IDLEOK = 0 xFC,
SOFTRESETOK = 0 xFB,
SOFTRESETGO = 0 xFA,
BOOT_TO_EXECUTE = 0 xF9,
EXECUTE_TO_DEEPSLEEP = 0 xF8,
DEEPSLEEP_TO_EXECUTE = 0 xF7,
DEEPSLEEP_TO_EXECUTEOK = 0 xF6,
EXECUTE_TO_SLEEP = 0 xF5,
SLEEP_TO_EXECUTE = 0 xF4,
SLEEP_TO_EXECUTEOK = 0 xF3,
EXECUTE_TO_IDLE = 0 xF2,
IDLE_TO_EXECUTE = 0 xF1,
IDLE_TO_EXECUTEOK = 0 xF0,
RDYTODS_RETURNTOEXE = 0 xEF,
NORDYTODS_RETURNTOEXE = 0 xEE,
EXETOSLEEP_RETURNTOEXE = 0 xED,
EXETOIDLE_RETURNTOEXE = 0 xEC,
INIT_STATUS = 0 xEB,
/*error messages */
INITERROR = 0 x00,
PLLARMLOCKP_ER = 0 x01,
PLLDDRLOCKP_ER = 0 x02,
PLLSOCLOCKP_ER = 0 x03,
PLLSOCK1LOCKP_ER = 0 x04,
ARMWFI_ER = 0 x05,
SYSCLKOK_ER = 0 x06,
I2C_NACK_DATA_ER = 0 x07,
BOOT_ER = 0 x08,
I2C_STATUS_ALWAYS_1 = 0 x0A,
I2C_NACK_REG_ADDR_ER = 0 x0B,
I2C_NACK_DATA0123_ER = 0 x1B,
I2C_NACK_ADDR_ER = 0 x1F,
CURAPPWRSTISNOT_BOOT = 0 x20,
CURAPPWRSTISNOT_EXECUTE = 0 x21,
CURAPPWRSTISNOT_SLEEPMODE = 0 x22,
CURAPPWRSTISNOT_CORRECTFORIT10 = 0 x23,
FIFO4500WUISNOT_WUPEVENT = 0 x24,
PLL32KLOCKP_ER = 0 x29,
DDRDEEPSLEEPOK_ER = 0 x2A,
ROMCODEREADY_ER = 0 x50,
WUPBEFOREDS = 0 x51,
DDRCONFIG_ER = 0 x52,
WUPBEFORESLEEP = 0 x53,
WUPBEFOREIDLE = 0 x54
}; /* earlier called as mbox_2_arm_stat */
/**
* enum dvfs_stat - DVFS status messages definition
* @ DVFS_GO : A state transition DVFS is on going
* @ DVFS_ARM100OPPOK : The state transition DVFS has been completed for 100 OPP
* @ DVFS_ARM50OPPOK : The state transition DVFS has been completed for 50 OPP
* @ DVFS_ARMEXTCLKOK : The state transition DVFS has been completed for EXTCLK
* @ DVFS_NOCHGTCLKOK : The state transition DVFS has been completed for
* NOCHGCLK
* @ DVFS_INITSTATUS : Value init
*/
enum dvfs_stat {
DVFS_GO = 0 xFF,
DVFS_ARM100OPPOK = 0 xFE,
DVFS_ARM50OPPOK = 0 xFD,
DVFS_ARMEXTCLKOK = 0 xFC,
DVFS_NOCHGTCLKOK = 0 xFB,
DVFS_INITSTATUS = 0 x00
};
/**
* enum sva_mmdsp_stat - SVA MMDSP status messages
* @ SVA_MMDSP_GO : SVAMMDSP interrupt has happened
* @ SVA_MMDSP_INIT : Status init
*/
enum sva_mmdsp_stat {
SVA_MMDSP_GO = 0 xFF,
SVA_MMDSP_INIT = 0 x00
};
/**
* enum sia_mmdsp_stat - SIA MMDSP status messages
* @ SIA_MMDSP_GO : SIAMMDSP interrupt has happened
* @ SIA_MMDSP_INIT : Status init
*/
enum sia_mmdsp_stat {
SIA_MMDSP_GO = 0 xFF,
SIA_MMDSP_INIT = 0 x00
};
/**
* enum mbox_to_arm_err - Error messages definition
* @ INIT_ERR : Init value
* @ PLLARMLOCKP_ERR : PLLARM has not been correctly locked in given time
* @ PLLDDRLOCKP_ERR : PLLDDR has not been correctly locked in the given time
* @ PLLSOC0LOCKP_ERR : PLLSOC0 has not been correctly locked in the given time
* @ PLLSOC1LOCKP_ERR : PLLSOC1 has not been correctly locked in the given time
* @ ARMWFI_ERR : The ARM WFI has not been correctly executed in the given time
* @ SYSCLKOK_ERR : The SYSCLK is not available in the given time
* @ BOOT_ERR : Romcode has not validated the XP70 self reset in the given time
* @ ROMCODESAVECONTEXT : The Romcode didn . t correctly save it secure context
* @ VARMHIGHSPEEDVALTO_ERR : The ARM high speed supply value transfered
* through I2C has not been correctly executed in the given time
* @ VARMHIGHSPEEDACCESS_ERR : The command value of VarmHighSpeedVal transfered
* through I2C has not been correctly executed in the given time
* @ VARMLOWSPEEDVALTO_ERR : The ARM low speed supply value transfered through
* I2C has not been correctly executed in the given time
* @ VARMLOWSPEEDACCESS_ERR : The command value of VarmLowSpeedVal transfered
* through I2C has not been correctly executed in the given time
* @ VARMRETENTIONVALTO_ERR : The ARM retention supply value transfered through
* I2C has not been correctly executed in the given time
* @ VARMRETENTIONACCESS_ERR : The command value of VarmRetentionVal transfered
* through I2C has not been correctly executed in the given time
* @ VAPEHIGHSPEEDVALTO_ERR : The APE highspeed supply value transfered through
* I2C has not been correctly executed in the given time
* @ VSAFEHPVALTO_ERR : The SAFE high power supply value transfered through I2C
* has not been correctly executed in the given time
* @ VMODSEL1VALTO_ERR : The MODEM sel1 supply value transfered through I2C has
* not been correctly executed in the given time
* @ VMODSEL2VALTO_ERR : The MODEM sel2 supply value transfered through I2C has
* not been correctly executed in the given time
* @ VARMOFFACCESS_ERR : The command value of Varm ON / OFF transfered through
* I2C has not been correctly executed in the given time
* @ VAPEOFFACCESS_ERR : The command value of Vape ON / OFF transfered through
* I2C has not been correctly executed in the given time
* @ VARMRETACCES_ERR : The command value of Varm retention ON / OFF transfered
* through I2C has not been correctly executed in the given time
* @ CURAPPWRSTISNOTBOOT : Generated when Arm want to do power state transition
* ApBoot to ApExecute but the power current state is not Apboot
* @ CURAPPWRSTISNOTEXECUTE : Generated when Arm want to do power state
* transition from ApExecute to others power state but the
* power current state is not ApExecute
* @ CURAPPWRSTISNOTSLEEPMODE : Generated when wake up events are transmitted
* but the power current state is not ApDeepSleep / ApSleep / ApIdle
* @ CURAPPWRSTISNOTCORRECTDBG : Generated when wake up events are transmitted
* but the power current state is not correct
* @ ARMREGU1VALTO_ERR : The ArmRegu1 value transferred through I2C has not
* been correctly executed in the given time
* @ ARMREGU2VALTO_ERR : The ArmRegu2 value transferred through I2C has not
* been correctly executed in the given time
* @ VAPEREGUVALTO_ERR : The VApeRegu value transfered through I2C has not
* been correctly executed in the given time
* @ VSMPS3REGUVALTO_ERR : The VSmps3Regu value transfered through I2C has not
* been correctly executed in the given time
* @ VMODREGUVALTO_ERR : The VModemRegu value transfered through I2C has not
* been correctly executed in the given time
*/
enum mbox_to_arm_err {
INIT_ERR = 0 x00,
PLLARMLOCKP_ERR = 0 x01,
PLLDDRLOCKP_ERR = 0 x02,
PLLSOC0LOCKP_ERR = 0 x03,
PLLSOC1LOCKP_ERR = 0 x04,
ARMWFI_ERR = 0 x05,
SYSCLKOK_ERR = 0 x06,
BOOT_ERR = 0 x07,
ROMCODESAVECONTEXT = 0 x08,
VARMHIGHSPEEDVALTO_ERR = 0 x10,
VARMHIGHSPEEDACCESS_ERR = 0 x11,
VARMLOWSPEEDVALTO_ERR = 0 x12,
VARMLOWSPEEDACCESS_ERR = 0 x13,
VARMRETENTIONVALTO_ERR = 0 x14,
VARMRETENTIONACCESS_ERR = 0 x15,
VAPEHIGHSPEEDVALTO_ERR = 0 x16,
VSAFEHPVALTO_ERR = 0 x17,
VMODSEL1VALTO_ERR = 0 x18,
VMODSEL2VALTO_ERR = 0 x19,
VARMOFFACCESS_ERR = 0 x1A,
VAPEOFFACCESS_ERR = 0 x1B,
VARMRETACCES_ERR = 0 x1C,
CURAPPWRSTISNOTBOOT = 0 x20,
CURAPPWRSTISNOTEXECUTE = 0 x21,
CURAPPWRSTISNOTSLEEPMODE = 0 x22,
CURAPPWRSTISNOTCORRECTDBG = 0 x23,
ARMREGU1VALTO_ERR = 0 x24,
ARMREGU2VALTO_ERR = 0 x25,
VAPEREGUVALTO_ERR = 0 x26,
VSMPS3REGUVALTO_ERR = 0 x27,
VMODREGUVALTO_ERR = 0 x28
};
enum hw_acc {
SVAMMDSP = 0 ,
SVAPIPE = 1 ,
SIAMMDSP = 2 ,
SIAPIPE = 3 ,
SGA = 4 ,
B2R2MCDE = 5 ,
ESRAM12 = 6 ,
ESRAM34 = 7 ,
};
enum cs_pwrmgt {
PWRDNCS0 = 0 ,
WKUPCS0 = 1 ,
PWRDNCS1 = 2 ,
WKUPCS1 = 3
};
/* Defs related to autonomous power management */
/**
* enum sia_sva_pwr_policy - Power policy
* @ NO_CHGT : No change
* @ DSPOFF_HWPOFF :
* @ DSPOFFRAMRET_HWPOFF :
* @ DSPCLKOFF_HWPOFF :
* @ DSPCLKOFF_HWPCLKOFF :
*
*/
enum sia_sva_pwr_policy {
NO_CHGT = 0 x0,
DSPOFF_HWPOFF = 0 x1,
DSPOFFRAMRET_HWPOFF = 0 x2,
DSPCLKOFF_HWPOFF = 0 x3,
DSPCLKOFF_HWPCLKOFF = 0 x4,
};
/**
* enum auto_enable - Auto Power enable
* @ AUTO_OFF :
* @ AUTO_ON :
*
*/
enum auto_enable {
AUTO_OFF = 0 x0,
AUTO_ON = 0 x1,
};
/* End of file previously known as prcmu-fw-defs_v1.h */
/**
* enum prcmu_power_status - results from set_power_state
* @ PRCMU_SLEEP_OK : Sleep went ok
* @ PRCMU_DEEP_SLEEP_OK : DeepSleep went ok
* @ PRCMU_IDLE_OK : Idle went ok
* @ PRCMU_DEEPIDLE_OK : DeepIdle went ok
* @ PRCMU_PRCMU2ARMPENDINGIT_ER : Pending interrupt detected
* @ PRCMU_ARMPENDINGIT_ER : Pending interrupt detected
*
*/
enum prcmu_power_status {
PRCMU_SLEEP_OK = 0 xf3,
PRCMU_DEEP_SLEEP_OK = 0 xf6,
PRCMU_IDLE_OK = 0 xf0,
PRCMU_DEEPIDLE_OK = 0 xe3,
PRCMU_PRCMU2ARMPENDINGIT_ER = 0 x91,
PRCMU_ARMPENDINGIT_ER = 0 x93,
};
/*
* Definitions for autonomous power management configuration .
*/
#define PRCMU_AUTO_PM_OFF 0
#define PRCMU_AUTO_PM_ON 1
#define PRCMU_AUTO_PM_POWER_ON_HSEM BIT(0 )
#define PRCMU_AUTO_PM_POWER_ON_ABB_FIFO_IT BIT(1 )
enum prcmu_auto_pm_policy {
PRCMU_AUTO_PM_POLICY_NO_CHANGE,
PRCMU_AUTO_PM_POLICY_DSP_OFF_HWP_OFF,
PRCMU_AUTO_PM_POLICY_DSP_OFF_RAMRET_HWP_OFF,
PRCMU_AUTO_PM_POLICY_DSP_CLK_OFF_HWP_OFF,
PRCMU_AUTO_PM_POLICY_DSP_CLK_OFF_HWP_CLK_OFF,
};
/**
* struct prcmu_auto_pm_config - Autonomous power management configuration .
* @ sia_auto_pm_enable : SIA autonomous pm enable . ( PRCMU_AUTO_PM_ { OFF , ON } )
* @ sia_power_on : SIA power ON enable . ( PRCMU_AUTO_PM_POWER_ON_ * bitmask )
* @ sia_policy : SIA power policy . ( enum prcmu_auto_pm_policy )
* @ sva_auto_pm_enable : SVA autonomous pm enable . ( PRCMU_AUTO_PM_ { OFF , ON } )
* @ sva_power_on : SVA power ON enable . ( PRCMU_AUTO_PM_POWER_ON_ * bitmask )
* @ sva_policy : SVA power policy . ( enum prcmu_auto_pm_policy )
*/
struct prcmu_auto_pm_config {
u8 sia_auto_pm_enable;
u8 sia_power_on;
u8 sia_policy;
u8 sva_auto_pm_enable;
u8 sva_power_on;
u8 sva_policy;
};
#ifdef CONFIG_MFD_DB8500_PRCMU
void db8500_prcmu_early_init(void );
int prcmu_set_rc_a2p(enum romcode_write);
enum romcode_read prcmu_get_rc_p2a(void );
enum ap_pwrst prcmu_get_xp70_current_state(void );
bool prcmu_has_arm_maxopp(void );
struct prcmu_fw_version *prcmu_get_fw_version(void );
int prcmu_release_usb_wakeup_state(void );
void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep,
struct prcmu_auto_pm_config *idle);
bool prcmu_is_auto_pm_enabled(void );
int prcmu_config_clkout(u8 clkout, u8 source, u8 div);
int prcmu_set_clock_divider(u8 clock, u8 divider);
int db8500_prcmu_config_hotdog(u8 threshold);
int db8500_prcmu_config_hotmon(u8 low, u8 high);
int db8500_prcmu_start_temp_sense(u16 cycles32k);
int db8500_prcmu_stop_temp_sense(void );
int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
int prcmu_ac_wake_req(void );
void prcmu_ac_sleep_req(void );
void db8500_prcmu_modem_reset(void );
int db8500_prcmu_config_a9wdog(u8 num, bool sleep_auto_off);
int db8500_prcmu_enable_a9wdog(u8 id);
int db8500_prcmu_disable_a9wdog(u8 id);
int db8500_prcmu_kick_a9wdog(u8 id);
int db8500_prcmu_load_a9wdog(u8 id, u32 val);
void db8500_prcmu_system_reset(u16 reset_code);
int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk, bool keep_ap_pll);
u8 db8500_prcmu_get_power_state_result(void );
void db8500_prcmu_enable_wakeups(u32 wakeups);
int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state);
int db8500_prcmu_request_clock(u8 clock, bool enable);
void db8500_prcmu_config_abb_event_readout(u32 abb_events);
void db8500_prcmu_get_abb_event_buffer(void __iomem **buf);
int db8500_prcmu_config_esram0_deep_sleep(u8 state);
u16 db8500_prcmu_get_reset_code(void );
bool db8500_prcmu_is_ac_wake_requested(void );
int db8500_prcmu_set_arm_opp(u8 opp);
int db8500_prcmu_get_arm_opp(void );
int db8500_prcmu_set_ape_opp(u8 opp);
int db8500_prcmu_get_ape_opp(void );
int db8500_prcmu_request_ape_opp_100_voltage(bool enable);
int db8500_prcmu_get_ddr_opp(void );
u32 db8500_prcmu_read(unsigned int reg);
void db8500_prcmu_write(unsigned int reg, u32 value);
void db8500_prcmu_write_masked(unsigned int reg, u32 mask, u32 value);
#else /* !CONFIG_MFD_DB8500_PRCMU */
static inline void db8500_prcmu_early_init(void ) {}
static inline int prcmu_set_rc_a2p(enum romcode_write code)
{
return 0 ;
}
static inline enum romcode_read prcmu_get_rc_p2a(void )
{
return INIT;
}
static inline enum ap_pwrst prcmu_get_xp70_current_state(void )
{
return AP_EXECUTE;
}
static inline bool prcmu_has_arm_maxopp(void )
{
return false ;
}
static inline struct prcmu_fw_version *prcmu_get_fw_version(void )
{
return NULL;
}
static inline int db8500_prcmu_set_ape_opp(u8 opp)
{
return 0 ;
}
static inline int db8500_prcmu_get_ape_opp(void )
{
return APE_100_OPP;
}
static inline int db8500_prcmu_request_ape_opp_100_voltage(bool enable)
{
return 0 ;
}
static inline int prcmu_release_usb_wakeup_state(void )
{
return 0 ;
}
static inline int db8500_prcmu_get_ddr_opp(void )
{
return DDR_100_OPP;
}
static inline void prcmu_configure_auto_pm(struct prcmu_auto_pm_config *sleep,
struct prcmu_auto_pm_config *idle)
{
}
static inline bool prcmu_is_auto_pm_enabled(void )
{
return false ;
}
static inline int prcmu_config_clkout(u8 clkout, u8 source, u8 div)
{
return 0 ;
}
static inline int prcmu_set_clock_divider(u8 clock, u8 divider)
{
return 0 ;
}
static inline int db8500_prcmu_config_hotdog(u8 threshold)
{
return 0 ;
}
static inline int db8500_prcmu_config_hotmon(u8 low, u8 high)
{
return 0 ;
}
static inline int db8500_prcmu_start_temp_sense(u16 cycles32k)
{
return 0 ;
}
static inline int db8500_prcmu_stop_temp_sense(void )
{
return 0 ;
}
static inline int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
{
return -ENOSYS;
}
static inline int prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
{
return -ENOSYS;
}
static inline int prcmu_ac_wake_req(void )
{
return 0 ;
}
static inline void prcmu_ac_sleep_req(void ) {}
static inline void db8500_prcmu_modem_reset(void ) {}
static inline void db8500_prcmu_system_reset(u16 reset_code) {}
static inline int db8500_prcmu_set_power_state(u8 state, bool keep_ulp_clk,
bool keep_ap_pll)
{
return 0 ;
}
static inline u8 db8500_prcmu_get_power_state_result(void )
{
return 0 ;
}
static inline void db8500_prcmu_enable_wakeups(u32 wakeups) {}
static inline int db8500_prcmu_set_epod(u16 epod_id, u8 epod_state)
{
return 0 ;
}
static inline int db8500_prcmu_request_clock(u8 clock, bool enable)
{
return 0 ;
}
static inline int db8500_prcmu_config_esram0_deep_sleep(u8 state)
{
return 0 ;
}
static inline void db8500_prcmu_config_abb_event_readout(u32 abb_events) {}
static inline void db8500_prcmu_get_abb_event_buffer(void __iomem **buf) {}
static inline u16 db8500_prcmu_get_reset_code(void )
{
return 0 ;
}
static inline int db8500_prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
{
return 0 ;
}
static inline int db8500_prcmu_enable_a9wdog(u8 id)
{
return 0 ;
}
static inline int db8500_prcmu_disable_a9wdog(u8 id)
{
return 0 ;
}
static inline int db8500_prcmu_kick_a9wdog(u8 id)
{
return 0 ;
}
static inline int db8500_prcmu_load_a9wdog(u8 id, u32 val)
{
return 0 ;
}
static inline bool db8500_prcmu_is_ac_wake_requested(void )
{
return false ;
}
static inline int db8500_prcmu_set_arm_opp(u8 opp)
{
return 0 ;
}
static inline int db8500_prcmu_get_arm_opp(void )
{
return 0 ;
}
static inline u32 db8500_prcmu_read(unsigned int reg)
{
return 0 ;
}
static inline void db8500_prcmu_write(unsigned int reg, u32 value) {}
static inline void db8500_prcmu_write_masked(unsigned int reg, u32 mask,
u32 value) {}
#endif /* !CONFIG_MFD_DB8500_PRCMU */
#endif /* __MFD_DB8500_PRCMU_H */
Messung V0.5 in Prozent C=91 H=94 G=92
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-09-27)
¤
*© Formatika GbR, Deutschland
2026-10-10
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1126438
#Domains=1897691