aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/extcon/extcon-rt8973a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/extcon/extcon-rt8973a.c')
-rw-r--r--drivers/extcon/extcon-rt8973a.c55
1 files changed, 15 insertions, 40 deletions
diff --git a/drivers/extcon/extcon-rt8973a.c b/drivers/extcon/extcon-rt8973a.c
index 9ccd5af89d1c..92c939221a41 100644
--- a/drivers/extcon/extcon-rt8973a.c
+++ b/drivers/extcon/extcon-rt8973a.c
@@ -90,27 +90,12 @@ static struct reg_data rt8973a_reg_data[] = {
90}; 90};
91 91
92/* List of detectable cables */ 92/* List of detectable cables */
93enum { 93static const unsigned int rt8973a_extcon_cable[] = {
94 EXTCON_CABLE_USB = 0, 94 EXTCON_USB,
95 EXTCON_CABLE_USB_HOST, 95 EXTCON_USB_HOST,
96 EXTCON_CABLE_TA, 96 EXTCON_TA,
97 EXTCON_CABLE_JIG_OFF_USB, 97 EXTCON_JIG,
98 EXTCON_CABLE_JIG_ON_USB, 98 EXTCON_NONE,
99 EXTCON_CABLE_JIG_OFF_UART,
100 EXTCON_CABLE_JIG_ON_UART,
101
102 EXTCON_CABLE_END,
103};
104
105static const char *rt8973a_extcon_cable[] = {
106 [EXTCON_CABLE_USB] = "USB",
107 [EXTCON_CABLE_USB_HOST] = "USB-Host",
108 [EXTCON_CABLE_TA] = "TA",
109 [EXTCON_CABLE_JIG_OFF_USB] = "JIG-USB-OFF",
110 [EXTCON_CABLE_JIG_ON_USB] = "JIG-USB-ON",
111 [EXTCON_CABLE_JIG_OFF_UART] = "JIG-UART-OFF",
112 [EXTCON_CABLE_JIG_ON_UART] = "JIG-UART-ON",
113 NULL,
114}; 99};
115 100
116/* Define OVP (Over Voltage Protection), OTP (Over Temperature Protection) */ 101/* Define OVP (Over Voltage Protection), OTP (Over Temperature Protection) */
@@ -313,14 +298,11 @@ static int rt8973a_muic_cable_handler(struct rt8973a_muic_info *info,
313 enum rt8973a_event_type event) 298 enum rt8973a_event_type event)
314{ 299{
315 static unsigned int prev_cable_type; 300 static unsigned int prev_cable_type;
316 const char **cable_names = info->edev->supported_cable;
317 unsigned int con_sw = DM_DP_SWITCH_UART; 301 unsigned int con_sw = DM_DP_SWITCH_UART;
318 int ret, idx = 0, cable_type; 302 int ret, cable_type;
303 unsigned int id;
319 bool attached = false; 304 bool attached = false;
320 305
321 if (!cable_names)
322 return 0;
323
324 switch (event) { 306 switch (event) {
325 case RT8973A_EVENT_ATTACH: 307 case RT8973A_EVENT_ATTACH:
326 cable_type = rt8973a_muic_get_cable_type(info); 308 cable_type = rt8973a_muic_get_cable_type(info);
@@ -347,31 +329,25 @@ static int rt8973a_muic_cable_handler(struct rt8973a_muic_info *info,
347 329
348 switch (cable_type) { 330 switch (cable_type) {
349 case RT8973A_MUIC_ADC_OTG: 331 case RT8973A_MUIC_ADC_OTG:
350 idx = EXTCON_CABLE_USB_HOST; 332 id = EXTCON_USB_HOST;
351 con_sw = DM_DP_SWITCH_USB; 333 con_sw = DM_DP_SWITCH_USB;
352 break; 334 break;
353 case RT8973A_MUIC_ADC_TA: 335 case RT8973A_MUIC_ADC_TA:
354 idx = EXTCON_CABLE_TA; 336 id = EXTCON_TA;
355 con_sw = DM_DP_SWITCH_OPEN; 337 con_sw = DM_DP_SWITCH_OPEN;
356 break; 338 break;
357 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_OFF_USB: 339 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_OFF_USB:
358 idx = EXTCON_CABLE_JIG_OFF_USB;
359 con_sw = DM_DP_SWITCH_UART;
360 break;
361 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_ON_USB: 340 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_ON_USB:
362 idx = EXTCON_CABLE_JIG_ON_USB; 341 id = EXTCON_JIG;
363 con_sw = DM_DP_SWITCH_UART; 342 con_sw = DM_DP_SWITCH_USB;
364 break; 343 break;
365 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_OFF_UART: 344 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_OFF_UART:
366 idx = EXTCON_CABLE_JIG_OFF_UART;
367 con_sw = DM_DP_SWITCH_UART;
368 break;
369 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_ON_UART: 345 case RT8973A_MUIC_ADC_FACTORY_MODE_BOOT_ON_UART:
370 idx = EXTCON_CABLE_JIG_ON_UART; 346 id = EXTCON_JIG;
371 con_sw = DM_DP_SWITCH_UART; 347 con_sw = DM_DP_SWITCH_UART;
372 break; 348 break;
373 case RT8973A_MUIC_ADC_USB: 349 case RT8973A_MUIC_ADC_USB:
374 idx = EXTCON_CABLE_USB; 350 id = EXTCON_USB;
375 con_sw = DM_DP_SWITCH_USB; 351 con_sw = DM_DP_SWITCH_USB;
376 break; 352 break;
377 case RT8973A_MUIC_ADC_OPEN: 353 case RT8973A_MUIC_ADC_OPEN:
@@ -421,7 +397,7 @@ static int rt8973a_muic_cable_handler(struct rt8973a_muic_info *info,
421 return ret; 397 return ret;
422 398
423 /* Change the state of external accessory */ 399 /* Change the state of external accessory */
424 extcon_set_cable_state(info->edev, cable_names[idx], attached); 400 extcon_set_cable_state_(info->edev, id, attached);
425 401
426 return 0; 402 return 0;
427} 403}
@@ -643,7 +619,6 @@ static int rt8973a_muic_i2c_probe(struct i2c_client *i2c,
643 dev_err(info->dev, "failed to allocate memory for extcon\n"); 619 dev_err(info->dev, "failed to allocate memory for extcon\n");
644 return -ENOMEM; 620 return -ENOMEM;
645 } 621 }
646 info->edev->name = np->name;
647 622
648 /* Register extcon device */ 623 /* Register extcon device */
649 ret = devm_extcon_dev_register(info->dev, info->edev); 624 ret = devm_extcon_dev_register(info->dev, info->edev);