summaryrefslogtreecommitdiff
path: root/drivers/extcon
diff options
context:
space:
mode:
authorJonghwa Lee <jonghwa3.lee@samsung.com>2014-03-17 17:44:06 +0900
committerChanho Park <chanho61.park@samsung.com>2014-11-18 11:47:12 +0900
commit24af1c0efd3f75e05c7a6ed70071838500b64b21 (patch)
tree62c69c150f67386a677c53d22d62c3cc327ae62a /drivers/extcon
parent9777d4d038bab127726a4e60bf48efd04f2522e7 (diff)
downloadlinux-3.10-24af1c0efd3f75e05c7a6ed70071838500b64b21.tar.gz
linux-3.10-24af1c0efd3f75e05c7a6ed70071838500b64b21.tar.bz2
linux-3.10-24af1c0efd3f75e05c7a6ed70071838500b64b21.zip
extcon: max77693: Fix inaccurate extcon event for JIG with USB cable
Dmitry's patch 'extcon: max77693: Force using UART~' fixes problem when device is connected JIG with USB cable. However, with the patch, driver sends inaccurate event "USB" even muic keeps path to UART not USB. This would make users confused. This patch keeps Dmitry's modification working and also bypasses signaling event "USB" when device is connected to JIG with USB cable. Change-Id: Ia5f3328e5b0827378178502c70cb90da48e9e3f7 Signed-off-by: Jonghwa Lee <jonghwa3.lee@samsung.com>
Diffstat (limited to 'drivers/extcon')
-rw-r--r--drivers/extcon/extcon-max77693.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c
index 3955391a4d3..2b930526372 100644
--- a/drivers/extcon/extcon-max77693.c
+++ b/drivers/extcon/extcon-max77693.c
@@ -293,18 +293,10 @@ static int max77693_muic_set_path(struct max77693_muic_info *info,
return ret;
}
- if (attached) {
- if (info->prev_cable_type ==
- MAX77693_MUIC_ADC_FACTORY_MODE_UART_OFF) {
- /* if cable_type is jig, then force UART */
- dev_info(info->dev, "For jig force using UART path\n");
- ctrl1 = CONTROL1_SW_UART;
- } else {
- ctrl1 = val;
- }
- } else {
+ if (attached)
+ ctrl1 = val;
+ else
ctrl1 = CONTROL1_SW_OPEN;
- }
ret = max77693_update_reg(info->max77693->regmap_muic,
MAX77693_MUIC_REG_CTRL1, ctrl1, COMP_SW_MASK);
@@ -922,6 +914,15 @@ static int max77693_muic_chg_handler(struct max77693_muic_info *info)
*/
break;
case MAX77693_CHARGER_TYPE_USB:
+ /* If UART is still connected, do not set path to USB */
+ if (cable_type == MAX77693_MUIC_ADC_FACTORY_MODE_UART_OFF) {
+ ret = max77693_muic_set_path(info, info->path_uart,
+ attached);
+ if (ret < 0)
+ return ret;
+ break;
+ }
+
/* Only USB cable, PATH:AP_USB */
ret = max77693_muic_set_path(info, info->path_usb, attached);
if (ret < 0)