mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 23:27:06 +00:00
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: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
This commit is contained in:
parent
07c70503a4
commit
027fcd5050
2 changed files with 49 additions and 0 deletions
|
@ -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[] = {
|
||||||
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 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 {
|
||||||
#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
|
||||||
|
|
Loading…
Reference in a new issue