| /* include/linux/cm3629.h |
| * |
| * Copyright (C) 2010 HTC, Inc. |
| * |
| * This software is licensed under the terms of the GNU General Public |
| * License version 2, as published by the Free Software Foundation, and |
| * may be copied, distributed, and modified under those terms. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| */ |
| |
| #ifndef __LINUX_CM3629_H |
| #define __LINUX_CM3629_H |
| |
| #define CM3629_I2C_NAME "CM3629" |
| |
| |
| #define ALS_config_cmd 0x00 |
| #define ALS_high_thd 0x01 |
| #define ALS_low_thd 0x02 |
| |
| #define PS_config 0x03 |
| #define PS_config_ms 0x04 |
| #define PS_CANC 0x05 |
| #define PS_1_thd 0x06 |
| #define PS_2_thd 0x07 |
| #define PS_data 0x08 |
| #define ALS_data 0x09 |
| #define INT_FLAG 0x0B |
| #define CH_ID 0x0C |
| |
| |
| #define ALS_CALIBRATED 0x6DA5 |
| #define PS_CALIBRATED 0x5053 |
| |
| #define CM3629_ALS_IT_50ms (0 << 6) |
| #define CM3629_ALS_IT_100ms (1 << 6) |
| #define CM3629_ALS_IT_200ms (2 << 6) |
| #define CM3629_ALS_IT_400ms (3 << 6) |
| |
| #define CM3629_ALS_IT_80ms (0 << 6) |
| #define CM3629_ALS_IT_160ms (1 << 6) |
| #define CM3629_ALS_IT_320ms (2 << 6) |
| #define CM3629_ALS_IT_640ms (3 << 6) |
| |
| |
| #define CM3629_ALS_AV_1 (0 << 4) |
| #define CM3629_ALS_AV_2 (1 << 4) |
| #define CM3629_ALS_AV_4 (2 << 4) |
| #define CM3629_ALS_AV_8 (3 << 4) |
| #define CM3629_ALS_PERS_1 (0 << 2) |
| #define CM3629_ALS_PERS_2 (1 << 2) |
| #define CM3629_ALS_PERS_4 (2 << 2) |
| #define CM3629_ALS_PERS_8 (3 << 2) |
| #define CM3629_ALS_INT_EN (1 << 1) |
| #define CM3629_ALS_SD (1 << 0) |
| |
| #define CM3629_PS_63_STEPS (0 << 4) |
| #define CM3629_PS_120_STEPS (1 << 4) |
| #define CM3629_PS_191_STEPS (2 << 4) |
| #define CM3629_PS_255_STEPS (3 << 4) |
| |
| |
| |
| #define CM3629_PS_DR_1_40 (0 << 6) |
| #define CM3629_PS_DR_1_80 (1 << 6) |
| #define CM3629_PS_DR_1_160 (2 << 6) |
| #define CM3629_PS_DR_1_320 (3 << 6) |
| |
| #define CM3629_PS_IT_1T (0 << 4) |
| #define CM3629_PS_IT_1_3T (1 << 4) |
| #define CM3629_PS_IT_1_6T (2 << 4) |
| #define CM3629_PS_IT_2T (3 << 4) |
| |
| #define CM3629_PS1_PERS_1 (0 << 2) |
| #define CM3629_PS1_PERS_2 (1 << 2) |
| #define CM3629_PS1_PERS_3 (2 << 2) |
| #define CM3629_PS1_PERS_4 (3 << 2) |
| |
| #define CM3629_PS2_SD (1 << 1) |
| #define CM3629_PS1_SD (1 << 0) |
| |
| #define CM3629_PS_ITB_1_2 (0 << 6) |
| #define CM3629_PS_ITB_1 (1 << 6) |
| #define CM3629_PS_ITB_2 (2 << 6) |
| #define CM3629_PS_ITB_4 (3 << 6) |
| |
| #define CM3629_PS_ITR_1 (0 << 4) |
| #define CM3629_PS_ITR_1_2 (1 << 4) |
| #define CM3629_PS_ITR_1_4 (2 << 4) |
| #define CM3629_PS_ITR_1_8 (3 << 4) |
| |
| #define CM3629_PS2_INT_DIS (0 << 2) |
| #define CM3629_PS2_INT_CLS (1 << 2) |
| #define CM3629_PS2_INT_AWY (2 << 2) |
| #define CM3629_PS2_INT_BOTH (3 << 2) |
| |
| #define CM3629_PS1_INT_DIS (0 << 0) |
| #define CM3629_PS1_INT_CLS (1 << 0) |
| #define CM3629_PS1_INT_AWY (2 << 0) |
| #define CM3629_PS1_INT_BOTH (3 << 0) |
| |
| |
| #define CM3629_PS2_PROL_4 (0 << 6) |
| #define CM3629_PS2_PROL_8 (1 << 6) |
| #define CM3629_PS2_PROL_16 (2 << 6) |
| #define CM3629_PS2_PROL_32 (3 << 6) |
| |
| #define CM3629_PS_INTT (1 << 5) |
| #define CM3629_PS_SMART_PRES (1 << 4) |
| #define CM3629_PS_PS_FOR (1 << 3) |
| #define CM3629_PS_PS_TRIG (1 << 2) |
| |
| #define CM3629_PS2_PERS_1 (0 << 0) |
| #define CM3629_PS2_PERS_2 (1 << 0) |
| #define CM3629_PS2_PERS_3 (2 << 0) |
| #define CM3629_PS2_PERS_4 (3 << 0) |
| |
| #define CM3629_PS_MS (1 << 5) |
| |
| #define CM3629_PS2_SPFLAG (1 << 7) |
| #define CM3629_PS1_SPFLAG (1 << 6) |
| |
| #define CM3629_ALS_IF_L (1 << 5) |
| #define CM3629_ALS_IF_H (1 << 4) |
| #define CM3629_PS2_IF_CLOSE (1 << 3) |
| #define CM3629_PS2_IF_AWAY (1 << 2) |
| #define CM3629_PS1_IF_CLOSE (1 << 1) |
| #define CM3629_PS1_IF_AWAY (1 << 0) |
| |
| extern unsigned int ps_kparam1; |
| extern unsigned int ps_kparam2; |
| extern unsigned int als_kadc; |
| enum { |
| CAPELLA_CM36282, |
| CAPELLA_CM36292, |
| }; |
| |
| enum { |
| CM3629_PS_DISABLE, |
| CM3629_PS1_ONLY, |
| CM3629_PS2_ONLY, |
| CM3629_PS1_PS2_BOTH, |
| }; |
| |
| struct cm3629_platform_data { |
| int model; |
| int intr; |
| uint16_t levels[10]; |
| uint16_t golden_adc; |
| int (*power)(int, uint8_t); |
| int (*lpm_power)(uint8_t); |
| uint16_t cm3629_slave_address; |
| uint8_t ps_select; |
| uint8_t ps1_thd_set; |
| uint8_t ps1_thh_diff; |
| uint8_t ps2_thd_set; |
| uint8_t inte_cancel_set; |
| |
| uint8_t ps_conf2_val; |
| uint8_t *mapping_table; |
| uint8_t mapping_size; |
| uint8_t ps_base_index; |
| |
| uint8_t ps_calibration_rule; |
| uint8_t ps_conf1_val; |
| uint8_t ps_conf3_val; |
| uint8_t enable_polling_ignore; |
| uint8_t ps1_thd_no_cal; |
| uint8_t ps1_thd_with_cal; |
| uint8_t ps2_thd_no_cal; |
| uint8_t ps2_thd_with_cal; |
| uint8_t ls_cmd; |
| uint8_t ps1_adc_offset; |
| uint8_t ps2_adc_offset; |
| uint8_t ps_debounce; |
| uint16_t ps_delay_time; |
| unsigned int no_need_change_setting; |
| uint8_t dark_level; |
| }; |
| |
| int power_key_check_in_pocket(void); |
| #endif |