]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/extcon/extcon-max8997.c
Merge branch 'hinic-BugFixes'
[linux.git] / drivers / extcon / extcon-max8997.c
index bdabb2479e0df547ab60e151e3f55e0b463ed8d3..172e116ac1cedd3f4f5afa9f7fd295716d94b456 100644 (file)
@@ -311,12 +311,10 @@ static int max8997_muic_handle_usb(struct max8997_muic_info *info,
 {
        int ret = 0;
 
-       if (usb_type == MAX8997_USB_HOST) {
-               ret = max8997_muic_set_path(info, info->path_usb, attached);
-               if (ret < 0) {
-                       dev_err(info->dev, "failed to update muic register\n");
-                       return ret;
-               }
+       ret = max8997_muic_set_path(info, info->path_usb, attached);
+       if (ret < 0) {
+               dev_err(info->dev, "failed to update muic register\n");
+               return ret;
        }
 
        switch (usb_type) {
@@ -632,6 +630,8 @@ static int max8997_muic_probe(struct platform_device *pdev)
        struct max8997_platform_data *pdata = dev_get_platdata(max8997->dev);
        struct max8997_muic_info *info;
        int delay_jiffies;
+       int cable_type;
+       bool attached;
        int ret, i;
 
        info = devm_kzalloc(&pdev->dev, sizeof(struct max8997_muic_info),
@@ -724,8 +724,17 @@ static int max8997_muic_probe(struct platform_device *pdev)
                delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
        }
 
-       /* Set initial path for UART */
-        max8997_muic_set_path(info, info->path_uart, true);
+       /* Set initial path for UART when JIG is connected to get serial logs */
+       ret = max8997_bulk_read(info->muic, MAX8997_MUIC_REG_STATUS1,
+                               2, info->status);
+       if (ret) {
+               dev_err(info->dev, "failed to read MUIC register\n");
+               return ret;
+       }
+       cable_type = max8997_muic_get_cable_type(info,
+                                          MAX8997_CABLE_GROUP_ADC, &attached);
+       if (attached && cable_type == MAX8997_MUIC_ADC_FACTORY_MODE_UART_OFF)
+               max8997_muic_set_path(info, info->path_uart, true);
 
        /* Set ADC debounce time */
        max8997_muic_set_debounce_time(info, ADC_DEBOUNCE_TIME_25MS);