Skip to content

Commit 2a9de9c

Browse files
committed
extcon: Use the unique id for external connector instead of string
This patch uses the unique id to identify the type of external connector instead of string name. The string name have the many potential issues. So, this patch defines the 'extcon' enumeration which includes all supported external connector on EXTCON subsystem. If new external connector is necessary, the unique id of new connector have to be added in 'extcon' enumeration. There are current supported external connector in 'enum extcon' as following: enum extcon { EXTCON_NONE = 0x0, /* USB external connector */ EXTCON_USB = 0x1, EXTCON_USB_HOST = 0x2, /* Charger external connector */ EXTCON_TA = 0x10, EXTCON_FAST_CHARGER = 0x11, EXTCON_SLOW_CHARGER = 0x12, EXTCON_CHARGE_DOWNSTREAM = 0x13, /* Audio and video external connector */ EXTCON_LINE_IN = 0x20, EXTCON_LINE_OUT = 0x21, EXTCON_MICROPHONE = 0x22, EXTCON_HEADPHONE = 0x23, EXTCON_HDMI = 0x30, EXTCON_MHL = 0x31, EXTCON_DVI = 0x32, EXTCON_VGA = 0x33, EXTCON_SPDIF_IN = 0x34, EXTCON_SPDIF_OUT = 0x35, EXTCON_VIDEO_IN = 0x36, EXTCON_VIDEO_OUT = 0x37, /* Miscellaneous external connector */ EXTCON_DOCK = 0x50, EXTCON_JIG = 0x51, EXTCON_MECHANICAL = 0x52, EXTCON_END, }; For example in extcon-arizona.c: To use unique id removes the potential issue about handling the inconsistent name of external connector with string. - Previously, use the string to register the type of arizona jack connector static const char *arizona_cable[] = { "Mechanical", "Microphone", "Headphone", "Line-out", }; - Newly, use the unique id to register the type of arizona jack connector static const enum extcon arizona_cable[] = { EXTCON_MECHANICAL, EXTCON_MICROPHONE, EXTCON_HEADPHONE, EXTCON_LINE_OUT, EXTCON_NONE, }; And this patch modify the prototype of extcon_{get|set}_cable_state_() which uses the 'enum extcon id' instead of 'cable_index'. Because although one more extcon drivers support USB cable, each extcon driver might has the differnt 'cable_index' for USB cable. All extcon drivers can use the unique id number for same external connector with modified extcon_{get|set}_cable_state_(). - Previously, use 'cable_index' on these functions: extcon_get_cable_state_(struct extcon_dev*, int cable_index) extcon_set_cable_state_(struct extcon_dev*, int cable_index, bool state) -Newly, use 'enum extcon id' on these functions: extcon_get_cable_state_(struct extcon_dev*, enum extcon id) extcon_set_cable_state_(struct extcon_dev*, enum extcon id, bool state) Cc: Arnd Bergmann <arnd@arndb.de> Cc: Felipe Balbi <balbi@ti.com> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Acked-by: Roger Quadros <rogerq@ti.com> Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Acked-by: Ramakrishna Pallala <ramakrishna.pallala@intel.com> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> [arnd: Report the build break about drivers/usb/phy/phy-tahvo.c after using the unique id for external connector insteadf of string] Reported-by: Arnd Bergmann <arnd@arndb.de> [dan.carpenter: Report the build warning of extcon_{set|get}_cable_state_()] Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
1 parent 35eed7a commit 2a9de9c

File tree

14 files changed

+320
-411
lines changed

14 files changed

+320
-411
lines changed

drivers/extcon/extcon-arizona.c

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,12 @@ static const int arizona_micd_levels[] = {
118118
1257,
119119
};
120120

121-
#define ARIZONA_CABLE_MECHANICAL 0
122-
#define ARIZONA_CABLE_MICROPHONE 1
123-
#define ARIZONA_CABLE_HEADPHONE 2
124-
#define ARIZONA_CABLE_LINEOUT 3
125-
126-
static const char *arizona_cable[] = {
127-
"Mechanical",
128-
"Microphone",
129-
"Headphone",
130-
"Line-out",
131-
NULL,
121+
static const enum extcon arizona_cable[] = {
122+
EXTCON_MECHANICAL,
123+
EXTCON_MICROPHONE,
124+
EXTCON_HEADPHONE,
125+
EXTCON_LINE_OUT,
126+
EXTCON_NONE,
132127
};
133128

134129
static void arizona_start_hpdet_acc_id(struct arizona_extcon_info *info);
@@ -557,7 +552,7 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data)
557552
struct arizona_extcon_info *info = data;
558553
struct arizona *arizona = info->arizona;
559554
int id_gpio = arizona->pdata.hpdet_id_gpio;
560-
int report = ARIZONA_CABLE_HEADPHONE;
555+
enum extcon report = EXTCON_HEADPHONE;
561556
int ret, reading;
562557
bool mic = false;
563558

@@ -571,7 +566,7 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data)
571566
}
572567

573568
/* If the cable was removed while measuring ignore the result */
574-
ret = extcon_get_cable_state_(info->edev, ARIZONA_CABLE_MECHANICAL);
569+
ret = extcon_get_cable_state_(info->edev, EXTCON_MECHANICAL);
575570
if (ret < 0) {
576571
dev_err(arizona->dev, "Failed to check cable state: %d\n",
577572
ret);
@@ -602,9 +597,9 @@ static irqreturn_t arizona_hpdet_irq(int irq, void *data)
602597

603598
/* Report high impedence cables as line outputs */
604599
if (reading >= 5000)
605-
report = ARIZONA_CABLE_LINEOUT;
600+
report = EXTCON_LINE_OUT;
606601
else
607-
report = ARIZONA_CABLE_HEADPHONE;
602+
report = EXTCON_HEADPHONE;
608603

609604
ret = extcon_set_cable_state_(info->edev, report, true);
610605
if (ret != 0)
@@ -689,8 +684,7 @@ static void arizona_identify_headphone(struct arizona_extcon_info *info)
689684
ARIZONA_ACCDET_MODE_MASK, ARIZONA_ACCDET_MODE_MIC);
690685

691686
/* Just report headphone */
692-
ret = extcon_set_cable_state_(info->edev,
693-
ARIZONA_CABLE_HEADPHONE, true);
687+
ret = extcon_set_cable_state_(info->edev, EXTCON_HEADPHONE, true);
694688
if (ret != 0)
695689
dev_err(arizona->dev, "Failed to report headphone: %d\n", ret);
696690

@@ -747,8 +741,7 @@ static void arizona_start_hpdet_acc_id(struct arizona_extcon_info *info)
747741
ARIZONA_ACCDET_MODE_MASK, ARIZONA_ACCDET_MODE_MIC);
748742

749743
/* Just report headphone */
750-
ret = extcon_set_cable_state_(info->edev,
751-
ARIZONA_CABLE_HEADPHONE, true);
744+
ret = extcon_set_cable_state_(info->edev, EXTCON_HEADPHONE, true);
752745
if (ret != 0)
753746
dev_err(arizona->dev, "Failed to report headphone: %d\n", ret);
754747

@@ -787,7 +780,7 @@ static void arizona_micd_detect(struct work_struct *work)
787780
mutex_lock(&info->lock);
788781

789782
/* If the cable was removed while measuring ignore the result */
790-
ret = extcon_get_cable_state_(info->edev, ARIZONA_CABLE_MECHANICAL);
783+
ret = extcon_get_cable_state_(info->edev, EXTCON_MECHANICAL);
791784
if (ret < 0) {
792785
dev_err(arizona->dev, "Failed to check cable state: %d\n",
793786
ret);
@@ -836,8 +829,7 @@ static void arizona_micd_detect(struct work_struct *work)
836829
arizona_identify_headphone(info);
837830

838831
ret = extcon_set_cable_state_(info->edev,
839-
ARIZONA_CABLE_MICROPHONE, true);
840-
832+
EXTCON_MICROPHONE, true);
841833
if (ret != 0)
842834
dev_err(arizona->dev, "Headset report failed: %d\n",
843835
ret);
@@ -1028,7 +1020,7 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
10281020
if (info->last_jackdet == present) {
10291021
dev_dbg(arizona->dev, "Detected jack\n");
10301022
ret = extcon_set_cable_state_(info->edev,
1031-
ARIZONA_CABLE_MECHANICAL, true);
1023+
EXTCON_MECHANICAL, true);
10321024

10331025
if (ret != 0)
10341026
dev_err(arizona->dev, "Mechanical report failed: %d\n",

drivers/extcon/extcon-axp288.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,6 @@
7777
/* IRQ enable-6 register */
7878
#define BC12_IRQ_CFG_MASK BIT(1)
7979

80-
#define AXP288_EXTCON_SLOW_CHARGER "SLOW-CHARGER"
81-
#define AXP288_EXTCON_DOWNSTREAM_CHARGER "CHARGE-DOWNSTREAM"
82-
#define AXP288_EXTCON_FAST_CHARGER "FAST-CHARGER"
83-
8480
enum axp288_extcon_reg {
8581
AXP288_PS_STAT_REG = 0x00,
8682
AXP288_PS_BOOT_REASON_REG = 0x02,
@@ -105,11 +101,11 @@ enum axp288_extcon_irq {
105101
EXTCON_IRQ_END,
106102
};
107103

108-
static const char *axp288_extcon_cables[] = {
109-
AXP288_EXTCON_SLOW_CHARGER,
110-
AXP288_EXTCON_DOWNSTREAM_CHARGER,
111-
AXP288_EXTCON_FAST_CHARGER,
112-
NULL,
104+
static const enum extcon axp288_extcon_cables[] = {
105+
EXTCON_SLOW_CHARGER,
106+
EXTCON_CHARGE_DOWNSTREAM,
107+
EXTCON_FAST_CHARGER,
108+
EXTCON_NONE,
113109
};
114110

115111
struct axp288_extcon_info {
@@ -161,7 +157,7 @@ static void axp288_extcon_log_rsi(struct axp288_extcon_info *info)
161157
static int axp288_handle_chrg_det_event(struct axp288_extcon_info *info)
162158
{
163159
static bool notify_otg, notify_charger;
164-
static char *cable;
160+
static enum extcon cable;
165161
int ret, stat, cfg, pwr_stat;
166162
u8 chrg_type;
167163
bool vbus_attach = false;
@@ -196,18 +192,18 @@ static int axp288_handle_chrg_det_event(struct axp288_extcon_info *info)
196192
dev_dbg(info->dev, "sdp cable is connecetd\n");
197193
notify_otg = true;
198194
notify_charger = true;
199-
cable = AXP288_EXTCON_SLOW_CHARGER;
195+
cable = EXTCON_SLOW_CHARGER;
200196
break;
201197
case DET_STAT_CDP:
202198
dev_dbg(info->dev, "cdp cable is connecetd\n");
203199
notify_otg = true;
204200
notify_charger = true;
205-
cable = AXP288_EXTCON_DOWNSTREAM_CHARGER;
201+
cable = EXTCON_CHARGE_DOWNSTREAM;
206202
break;
207203
case DET_STAT_DCP:
208204
dev_dbg(info->dev, "dcp cable is connecetd\n");
209205
notify_charger = true;
210-
cable = AXP288_EXTCON_FAST_CHARGER;
206+
cable = EXTCON_FAST_CHARGER;
211207
break;
212208
default:
213209
dev_warn(info->dev,
@@ -230,7 +226,7 @@ static int axp288_handle_chrg_det_event(struct axp288_extcon_info *info)
230226
}
231227

232228
if (notify_charger)
233-
extcon_set_cable_state(info->edev, cable, vbus_attach);
229+
extcon_set_cable_state_(info->edev, cable, vbus_attach);
234230

235231
/* Clear the flags on disconnect event */
236232
if (!vbus_attach)

drivers/extcon/extcon-max14577.c

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -148,27 +148,14 @@ enum max14577_muic_acc_type {
148148
MAX14577_MUIC_ADC_OPEN,
149149
};
150150

151-
/* max14577 MUIC device support below list of accessories(external connector) */
152-
enum {
153-
EXTCON_CABLE_USB = 0,
154-
EXTCON_CABLE_TA,
155-
EXTCON_CABLE_FAST_CHARGER,
156-
EXTCON_CABLE_SLOW_CHARGER,
157-
EXTCON_CABLE_CHARGE_DOWNSTREAM,
158-
EXTCON_CABLE_JIG,
159-
160-
_EXTCON_CABLE_NUM,
161-
};
162-
163-
static const char *max14577_extcon_cable[] = {
164-
[EXTCON_CABLE_USB] = "USB",
165-
[EXTCON_CABLE_TA] = "TA",
166-
[EXTCON_CABLE_FAST_CHARGER] = "Fast-charger",
167-
[EXTCON_CABLE_SLOW_CHARGER] = "Slow-charger",
168-
[EXTCON_CABLE_CHARGE_DOWNSTREAM] = "Charge-downstream",
169-
[EXTCON_CABLE_JIG] = "JIG",
170-
171-
NULL,
151+
static const enum extcon max14577_extcon_cable[] = {
152+
EXTCON_USB,
153+
EXTCON_TA,
154+
EXTCON_FAST_CHARGER,
155+
EXTCON_SLOW_CHARGER,
156+
EXTCON_CHARGE_DOWNSTREAM,
157+
EXTCON_JIG,
158+
EXTCON_NONE,
172159
};
173160

174161
/*
@@ -369,7 +356,7 @@ static int max14577_muic_jig_handler(struct max14577_muic_info *info,
369356
if (ret < 0)
370357
return ret;
371358

372-
extcon_set_cable_state(info->edev, "JIG", attached);
359+
extcon_set_cable_state_(info->edev, EXTCON_JIG, attached);
373360

374361
return 0;
375362
}
@@ -466,20 +453,22 @@ static int max14577_muic_chg_handler(struct max14577_muic_info *info)
466453
if (ret < 0)
467454
return ret;
468455

469-
extcon_set_cable_state(info->edev, "USB", attached);
456+
extcon_set_cable_state_(info->edev, EXTCON_USB, attached);
470457
break;
471458
case MAX14577_CHARGER_TYPE_DEDICATED_CHG:
472-
extcon_set_cable_state(info->edev, "TA", attached);
459+
extcon_set_cable_state_(info->edev, EXTCON_TA, attached);
473460
break;
474461
case MAX14577_CHARGER_TYPE_DOWNSTREAM_PORT:
475-
extcon_set_cable_state(info->edev,
476-
"Charge-downstream", attached);
462+
extcon_set_cable_state_(info->edev, EXTCON_CHARGE_DOWNSTREAM,
463+
attached);
477464
break;
478465
case MAX14577_CHARGER_TYPE_SPECIAL_500MA:
479-
extcon_set_cable_state(info->edev, "Slow-charger", attached);
466+
extcon_set_cable_state_(info->edev, EXTCON_SLOW_CHARGER,
467+
attached);
480468
break;
481469
case MAX14577_CHARGER_TYPE_SPECIAL_1A:
482-
extcon_set_cable_state(info->edev, "Fast-charger", attached);
470+
extcon_set_cable_state_(info->edev, EXTCON_FAST_CHARGER,
471+
attached);
483472
break;
484473
case MAX14577_CHARGER_TYPE_NONE:
485474
case MAX14577_CHARGER_TYPE_DEAD_BATTERY:

0 commit comments

Comments
 (0)