| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- #ifndef _PMIC_SW_H_
- #define _PMIC_SW_H_
- #define PMIC_DEBUG
- /*
- * The CHIP INFO
- */
- #define PMIC6328_E1_CID_CODE 0x2810
- #define PMIC6328_E2_CID_CODE 0x2820
- #define PMIC6328_E3_CID_CODE 0x2830
- #define pmic_emerg(fmt, args...) pr_emerg("[SPM-PMIC] " fmt, ##args)
- #define pmic_alert(fmt, args...) pr_alert("[SPM-PMIC] " fmt, ##args)
- #define pmic_crit(fmt, args...) pr_crit("[SPM-PMIC] " fmt, ##args)
- #define pmic_err(fmt, args...) pr_err("[SPM-PMIC] " fmt, ##args)
- #define pmic_warn(fmt, args...) pr_warn("[SPM-PMIC] " fmt, ##args)
- #define pmic_notice(fmt, args...) pr_notice("[SPM-PMIC] " fmt, ##args)
- #define pmic_info(fmt, args...) pr_info("[SPM-PMIC] " fmt, ##args)
- #define pmic_debug(fmt, args...) pr_info("[SPM-PMIC] " fmt, ##args) /* pr_debug show nothing */
- /* just use in suspend flow for important log due to console suspend */
- #define pmic_spm_crit2(fmt, args...) \
- do { \
- aee_sram_printk(fmt, ##args); \
- pmic_crit(fmt, ##args); \
- } while (0)
- #define PMICTAG "[PMIC] "
- #ifdef PMIC_DEBUG
- #define PMICDEB(fmt, arg...) pr_debug(PMICTAG "cpuid=%d, " fmt, raw_smp_processor_id(), ##arg)
- #define PMICFUC(fmt, arg...) pr_debug(PMICTAG "cpuid=%d, %s\n", raw_smp_processor_id(), __func__)
- #endif
- /*#define PMICLOG(fmt, arg...) pr_debug(PMICTAG fmt, ##arg)*/
- #define PMICERR(fmt, arg...) pr_debug(PMICTAG "ERROR,line=%d " fmt, __LINE__, ##arg)
- #define PMICREG(fmt, arg...) pr_debug(PMICTAG fmt, ##arg)
- #define PMIC_EN REGULATOR_CHANGE_STATUS
- #define PMIC_VOL REGULATOR_CHANGE_VOLTAGE
- #define PMIC_EN_VOL 9
- #define PMIC_INT_WIDTH 16
- #define GETSIZE(array) (sizeof(array)/sizeof(array[0]))
- /* extern functions */
- extern PMU_FLAG_TABLE_ENTRY pmu_flags_table[];
- extern unsigned int bat_get_ui_percentage(void);
- extern signed int fgauge_read_IM_current(void *data);
- extern void pmic_auxadc_lock(void);
- extern void pmic_auxadc_unlock(void);
- extern unsigned int bat_get_ui_percentage(void);
- extern signed int fgauge_read_v_by_d(int d_val);
- extern signed int fgauge_read_r_bat_by_v(signed int voltage);
- /*extern PMU_ChargerStruct BMT_status;*//*have defined in battery_common.h */
- extern void kpd_pwrkey_pmic_handler(unsigned long pressed);
- extern void kpd_pmic_rstkey_handler(unsigned long pressed);
- extern int is_mt6311_sw_ready(void);
- extern int is_mt6311_exist(void);
- extern int get_mt6311_i2c_ch_num(void);
- #if !defined CONFIG_MTK_LEGACY
- extern void pmu_drv_tool_customization_init(void);
- #endif
- extern int batt_init_cust_data(void);
- extern unsigned int mt_gpio_to_irq(unsigned int gpio);
- extern int mt_gpio_set_debounce(unsigned gpio, unsigned debounce);
- /*---------------------------------------------------*/
- /* controllable voltage , not fixed step */
- #define PMIC_LDO_GEN1(_name, en, vol, array, use, mode) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = (sizeof(array)/sizeof(array[0])), \
- .ops = &mtk_regulator_ops, \
- .type = REGULATOR_VOLTAGE, \
- }, \
- .init_data = { \
- .constraints = { \
- .valid_ops_mask = (mode), \
- }, \
- }, \
- .en_att = __ATTR(LDO_##_name##_STATUS, 0664, show_LDO_STATUS, store_LDO_STATUS), \
- .voltage_att = __ATTR(LDO_##_name##_VOLTAGE, 0664, show_LDO_VOLTAGE, store_LDO_VOLTAGE), \
- .pvoltages = (void *)(array), \
- .en_reg = (PMU_FLAGS_LIST_ENUM)(en), \
- .vol_reg = (PMU_FLAGS_LIST_ENUM)(vol), \
- .isUsedable = (use), \
- }
- /* controllable voltage , fixed step */
- #define PMIC_LDO_GEN2(_name, en, vol, min, max, step, use, mode) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = ((max) - (min)) / (step) + 1, \
- .ops = &mtk_regulator_ops, \
- .type = REGULATOR_VOLTAGE, \
- .min_uV = (min), \
- .uV_step = (step), \
- }, \
- .init_data = { \
- .constraints = { \
- .valid_ops_mask = (mode), \
- }, \
- }, \
- .en_att = __ATTR(LDO_##_name##_STATUS, 0664, show_LDO_STATUS, store_LDO_STATUS), \
- .voltage_att = __ATTR(LDO_##_name##_VOLTAGE, 0664, show_LDO_VOLTAGE, store_LDO_VOLTAGE), \
- .en_reg = (en), \
- .vol_reg = (vol), \
- .isUsedable = (use), \
- }
- #define PMIC_BUCK_GEN(_name, en, vol, min, max, step) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = ((max) - (min)) / (step) + 1, \
- .min_uV = (min), \
- .uV_step = (step), \
- }, \
- .en_att = __ATTR(BUCK_##_name##_STATUS, 0664, show_BUCK_STATUS, store_BUCK_STATUS), \
- .voltage_att = __ATTR(BUCK_##_name##_VOLTAGE, 0664, show_BUCK_VOLTAGE, store_BUCK_VOLTAGE), \
- .qi_en_reg = (en), \
- .qi_vol_reg = (vol), \
- .isUsedable = 0, \
- }
- /* fixed voltage */
- #define PMIC_LDO_GEN3(_name, en, fixvoltage, use, mode) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = 1, \
- .ops = &mtk_regulator_ops, \
- .type = REGULATOR_VOLTAGE, \
- }, \
- .init_data = { \
- .constraints = { \
- .valid_ops_mask = (mode), \
- }, \
- }, \
- .en_att = __ATTR(LDO_##_name##_STATUS, 0664, show_LDO_STATUS, store_LDO_STATUS), \
- .voltage_att = __ATTR(LDO_##_name##_VOLTAGE, 0664, show_LDO_VOLTAGE, store_LDO_VOLTAGE), \
- .en_reg = (en), \
- .fixedVoltage_uv = (fixvoltage), \
- .isUsedable = (use), \
- }
- struct mtk_regulator {
- struct regulator_desc desc;
- struct regulator_init_data init_data;
- struct regulator_config config;
- struct device_attribute en_att;
- struct device_attribute voltage_att;
- struct regulator_dev *rdev;
- PMU_FLAGS_LIST_ENUM en_reg;
- PMU_FLAGS_LIST_ENUM vol_reg;
- PMU_FLAGS_LIST_ENUM qi_en_reg;
- PMU_FLAGS_LIST_ENUM qi_vol_reg;
- const void *pvoltages;
- bool isUsedable;
- struct regulator *reg;
- };
- #define PMIC_INTERRUPT_WIDTH 16
- #define PMIC_S_INT_GEN(_name) \
- { \
- .name = #_name, \
- }
- #define PMIC_M_INTS_GEN(adr, enA, setA, clearA, interrupt) \
- { \
- .address = adr, \
- .en = enA, \
- .set = setA, \
- .clear = clearA, \
- .interrupts = interrupt, \
- }
- struct pmic_interrupt_bit {
- const char *name;
- void (*callback)(void);
- unsigned int times;
- };
- struct pmic_interrupts {
- unsigned int address;
- unsigned int en;
- unsigned int set;
- unsigned int clear;
- struct pmic_interrupt_bit *interrupts;
- };
- /* controllable voltage , not fixed step */
- /*
- #define PMIC_LDO_GEN1(_name, en, vol, array, use) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = (sizeof(array)/sizeof(array[0])), \
- .ops = &mtk_regulator_ops, \
- .type = REGULATOR_VOLTAGE, \
- .owner = THIS_MODULE, \
- }, \
- .en_att = __ATTR(LDO_##_name##_STATUS, 0664, show_LDO_STATUS, store_LDO_STATUS), \
- .voltage_att = __ATTR(LDO_##_name##_VOLTAGE, 0664, show_LDO_VOLTAGE, store_LDO_VOLTAGE), \
- .pvoltages = array, \
- .en_reg = (en), \
- .vol_reg = (vol), \
- .isUsedable = (use), \
- }
- */
- /* fixed voltage */
- /*
- #define PMIC_LDO_GEN2(_name, en, fixvoltage, use) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = 1, \
- .ops = &mtk_regulator_ops, \
- .type = REGULATOR_VOLTAGE, \
- .owner = THIS_MODULE, \
- }, \
- .en_att = __ATTR(LDO_##_name##_STATUS, 0664, show_LDO_STATUS, store_LDO_STATUS), \
- .voltage_att = __ATTR(LDO_##_name##_VOLTAGE, 0664, show_LDO_VOLTAGE, store_LDO_VOLTAGE), \
- .en_reg = (en), \
- .fixedVoltage_uv = (fixvoltage), \
- .isUsedable = (use), \
- }
- */
- /* controllable voltage , fixed step */
- /*
- #define PMIC_LDO_GEN3(_name, en, vol, min, max, step, use) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = ((max) - (min)) / (step) + 1, \
- .ops = &mtk_regulator_ops, \
- .type = REGULATOR_VOLTAGE, \
- .owner = THIS_MODULE, \
- .min_uV = (min), \
- .uV_step = (step), \
- }, \
- .en_att = __ATTR(LDO_##_name##_STATUS, 0664, show_LDO_STATUS, store_LDO_STATUS), \
- .voltage_att = __ATTR(LDO_##_name##_VOLTAGE, 0664, show_LDO_VOLTAGE, store_LDO_VOLTAGE), \
- .en_reg = (en), \
- .vol_reg = (vol), \
- .isUsedable = (use), \
- }
- #define PMIC_BUCK_GEN(_name, en, vol, min, max, step) \
- { \
- .desc = { \
- .name = #_name, \
- .n_voltages = ((max) - (min)) / (step) + 1, \
- .min_uV = (min), \
- .uV_step = (step), \
- }, \
- .en_att = __ATTR(BUCK_##_name##_STATUS, 0664, show_BUCK_STATUS, store_BUCK_STATUS), \
- .voltage_att = __ATTR(BUCK_##_name##_VOLTAGE, 0664, show_BUCK_VOLTAGE, store_BUCK_VOLTAGE), \
- .en_reg = (en), \
- .vol_reg = (vol), \
- .isUsedable = 0, \
- }
- */
- #endif /* _PMIC_SW_H_ */
|