diff options
Diffstat (limited to 'drivers/extcon/extcon-rt8973a.c')
-rw-r--r-- | drivers/extcon/extcon-rt8973a.c | 55 |
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 */ |
93 | enum { | 93 | static 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 | |||
105 | static 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); |