123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- /* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * 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 __PMIC8058_OTHC_H__
- #define __PMIC8058_OTHC_H__
- /* Accessory detecion flags */
- #define OTHC_MICBIAS_DETECT BIT(0)
- #define OTHC_GPIO_DETECT BIT(1)
- #define OTHC_SWITCH_DETECT BIT(2)
- #define OTHC_ADC_DETECT BIT(3)
- enum othc_accessory_type {
- OTHC_NO_DEVICE = 0,
- OTHC_HEADSET = 1 << 0,
- OTHC_HEADPHONE = 1 << 1,
- OTHC_MICROPHONE = 1 << 2,
- OTHC_ANC_HEADSET = 1 << 3,
- OTHC_ANC_HEADPHONE = 1 << 4,
- OTHC_ANC_MICROPHONE = 1 << 5,
- OTHC_SVIDEO_OUT = 1 << 6,
- };
- struct accessory_adc_thres {
- int min_threshold;
- int max_threshold;
- };
- struct othc_accessory_info {
- unsigned int accessory;
- unsigned int detect_flags;
- unsigned int gpio;
- unsigned int active_low;
- unsigned int key_code;
- bool enabled;
- struct accessory_adc_thres adc_thres;
- };
- enum othc_headset_type {
- OTHC_HEADSET_NO,
- OTHC_HEADSET_NC,
- };
- struct othc_regulator_config {
- const char *regulator;
- unsigned int max_uV;
- unsigned int min_uV;
- };
- /* Signal control for OTHC module */
- enum othc_micbias_enable {
- /* Turn off MICBIAS signal */
- OTHC_SIGNAL_OFF,
- /* Turn on MICBIAS signal when TCXO is enabled */
- OTHC_SIGNAL_TCXO,
- /* Turn on MICBIAS signal when PWM is high or TCXO is enabled */
- OTHC_SIGNAL_PWM_TCXO,
- /* MICBIAS always enabled */
- OTHC_SIGNAL_ALWAYS_ON,
- };
- /* Number of MICBIAS lines supported by PMIC8058 */
- enum othc_micbias {
- OTHC_MICBIAS_0,
- OTHC_MICBIAS_1,
- OTHC_MICBIAS_2,
- OTHC_MICBIAS_MAX,
- };
- enum othc_micbias_capability {
- /* MICBIAS used only for BIAS with on/off capability */
- OTHC_MICBIAS,
- /* MICBIAS used to support HSED functionality */
- OTHC_MICBIAS_HSED,
- };
- struct othc_switch_info {
- u32 min_adc_threshold;
- u32 max_adc_threshold;
- u32 key_code;
- };
- struct othc_n_switch_config {
- u32 voltage_settling_time_ms;
- u8 num_adc_samples;
- uint32_t adc_channel;
- struct othc_switch_info *switch_info;
- u8 num_keys;
- bool default_sw_en;
- u8 default_sw_idx;
- };
- struct hsed_bias_config {
- enum othc_headset_type othc_headset;
- u16 othc_lowcurr_thresh_uA;
- u16 othc_highcurr_thresh_uA;
- u32 othc_hyst_prediv_us;
- u32 othc_period_clkdiv_us;
- u32 othc_hyst_clk_us;
- u32 othc_period_clk_us;
- int othc_wakeup;
- };
- /* Configuration data for HSED */
- struct othc_hsed_config {
- struct hsed_bias_config *hsed_bias_config;
- unsigned long detection_delay_ms;
- /* Switch configuration */
- unsigned long switch_debounce_ms;
- bool othc_support_n_switch; /* Set if supporting > 1 switch */
- struct othc_n_switch_config *switch_config;
- /* Accessory configuration */
- bool accessories_support;
- bool accessories_adc_support;
- uint32_t accessories_adc_channel;
- struct othc_accessory_info *accessories;
- int othc_num_accessories;
- int video_out_gpio;
- int ir_gpio;
- };
- struct pmic8058_othc_config_pdata {
- enum othc_micbias micbias_select;
- enum othc_micbias_enable micbias_enable;
- enum othc_micbias_capability micbias_capability;
- struct othc_hsed_config *hsed_config;
- const char *hsed_name;
- struct othc_regulator_config *micbias_regulator;
- };
- int pm8058_micbias_enable(enum othc_micbias micbias,
- enum othc_micbias_enable enable);
- int pm8058_othc_svideo_enable(enum othc_micbias micbias,
- bool enable);
- #endif /* __PMIC8058_OTHC_H__ */
|