Commit 027fcd50 authored by Chanwoo Choi's avatar Chanwoo Choi

extcon: max8997: Set default of ADC debounce time during initialization

This patch set default of ADC Debounce Time(25ms) during probe step.
Also, can possible change ADC Debounce Time according to H/W situation
by using max8997_set_adc_debounce_time()
Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: default avatarMyungjoo Ham <myungjoo.ham@samsung.com>
parent 07c70503
...@@ -30,6 +30,13 @@ ...@@ -30,6 +30,13 @@
#define DEV_NAME "max8997-muic" #define DEV_NAME "max8997-muic"
enum max8997_muic_adc_debounce_time {
ADC_DEBOUNCE_TIME_0_5MS = 0, /* 0.5ms */
ADC_DEBOUNCE_TIME_10MS, /* 10ms */
ADC_DEBOUNCE_TIME_25MS, /* 25ms */
ADC_DEBOUNCE_TIME_38_62MS, /* 38.62ms */
};
struct max8997_muic_irq { struct max8997_muic_irq {
unsigned int irq; unsigned int irq;
const char *name; const char *name;
...@@ -94,6 +101,38 @@ static const char *max8997_extcon_cable[] = { ...@@ -94,6 +101,38 @@ static const char *max8997_extcon_cable[] = {
NULL, NULL,
}; };
/*
* max8997_muic_set_debounce_time - Set the debounce time of ADC
* @info: the instance including private data of max8997 MUIC
* @time: the debounce time of ADC
*/
static int max8997_muic_set_debounce_time(struct max8997_muic_info *info,
enum max8997_muic_adc_debounce_time time)
{
int ret;
switch (time) {
case ADC_DEBOUNCE_TIME_0_5MS:
case ADC_DEBOUNCE_TIME_10MS:
case ADC_DEBOUNCE_TIME_25MS:
case ADC_DEBOUNCE_TIME_38_62MS:
ret = max8997_update_reg(info->muic,
MAX8997_MUIC_REG_CONTROL3,
time << CONTROL3_ADCDBSET_SHIFT,
CONTROL3_ADCDBSET_MASK);
if (ret) {
dev_err(info->dev, "failed to set ADC debounce time\n");
return -EAGAIN;
}
break;
default:
dev_err(info->dev, "invalid ADC debounce time\n");
return -EINVAL;
}
return 0;
};
/* /*
* max8997_muic_set_path - Set hardware line according to attached cable * max8997_muic_set_path - Set hardware line according to attached cable
* @info: the instance including private data of max8997 MUIC * @info: the instance including private data of max8997 MUIC
...@@ -507,6 +546,9 @@ static int max8997_muic_probe(struct platform_device *pdev) ...@@ -507,6 +546,9 @@ static int max8997_muic_probe(struct platform_device *pdev)
} }
} }
/* Set ADC debounce time */
max8997_muic_set_debounce_time(info, ADC_DEBOUNCE_TIME_25MS);
/* Initial device detection */ /* Initial device detection */
max8997_muic_detect_dev(info); max8997_muic_detect_dev(info);
......
...@@ -251,6 +251,13 @@ enum max8997_muic_reg { ...@@ -251,6 +251,13 @@ enum max8997_muic_reg {
#define CONTROL2_USBCPINT_MASK (0x1 << CONTROL2_USBCPINT_SHIFT) #define CONTROL2_USBCPINT_MASK (0x1 << CONTROL2_USBCPINT_SHIFT)
#define CONTROL2_RCPS_MASK (0x1 << CONTROL2_RCPS_SHIFT) #define CONTROL2_RCPS_MASK (0x1 << CONTROL2_RCPS_SHIFT)
#define CONTROL3_JIGSET_SHIFT (0)
#define CONTROL3_BTLDSET_SHIFT (2)
#define CONTROL3_ADCDBSET_SHIFT (4)
#define CONTROL3_JIGSET_MASK (0x3 << CONTROL3_JIGSET_SHIFT)
#define CONTROL3_BTLDSET_MASK (0x3 << CONTROL3_BTLDSET_SHIFT)
#define CONTROL3_ADCDBSET_MASK (0x3 << CONTROL3_ADCDBSET_SHIFT)
#define MAX8997_ADC_GROUND 0x00 #define MAX8997_ADC_GROUND 0x00
#define MAX8997_ADC_MHL 0x01 #define MAX8997_ADC_MHL 0x01
#define MAX8997_ADC_JIG_USB_1 0x18 #define MAX8997_ADC_JIG_USB_1 0x18
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment