Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1447044
| Path | csiph.com!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Chanwoo Choi <cw00.choi@samsung.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH 2/4] extcon: adc-jack: Remove the usage of extcon_set_state() |
| Date | Wed, 20 Jul 2016 09:40:02 +0200 |
| Message-ID | <rWUgO-6SN-9@gated-at.bofh.it> (permalink) |
| References | <rWUgN-6SN-3@gated-at.bofh.it> |
| X-Original-To | linux-kernel@vger.kernel.org |
| X-Auditid | cbfee68e-f79266d000001428-cc-578f2a88cb01 |
| X-Mailer | git-send-email 1.8.0 |
| X-Brightmail-Tracker | H4sIAAAAAAAAA+NgFjrALMWRmVeSWpSXmKPExsWyRsSkQLdDqz/cYOJpUYt/U26wW1z/8pzV 4vKuOWwWtxtXsDmweLyc+JvNo2/LKkaPz5vkApijuGxSUnMyy1KL9O0SuDKO3X/KVNAiU/Hx xnPWBsarYl2MnBwSAiYSU65fYYewxSQu3FvP1sXIxSEksIJR4ty0iSwwRVv2fgIrEhJYyihx drMcRNEXRolNl3qZQBJsAloS+1/cYAOxRQQUJDb3PmMFsZkFoiSOXP4C1MzBISzgK/G4WxzE ZBFQlfjcyQtSwSvgKtFzpZ0RYpWcxIc9j8BWcQq4SWw6/5wZYq2rxJaN58FukxD4ziZxY89S sCIWAQGJb5MPsYDMlBCQldh0gBlijqTEwRU3WCYwCi9gZFjFKJpakFxQnJReZKRXnJhbXJqX rpecn7uJERiwp/8969vBePOA9SFGAQ5GJR7eiIN94UKsiWXFlbmHGE2BNkxklhJNzgfGRV5J vKGxmZGFqYmpsZG5pZmSOG+C1M9gIYH0xJLU7NTUgtSi+KLSnNTiQ4xMHJxSDYxJTSrTr3rO EF99OMuCk2VG7+2K1Xnrk7rD3H/tO9ERL5+ducJI9r0u9847i55/0pr6TN38XLDpwqD3uw+/ 1Yvbz/SoI+DCoQXOd1aJm/yyfWb5cP18E2VdVYbtfDWP5p2ovPDmi6NO7ikbgzSBxXP1t5/0 P30uxsb31/TU/YF3Oy5eMkjh7VmpxFKckWioxVxUnAgASSmFQlMCAAA= |
| X-Brightmail-Tracker | H4sIAAAAAAAAA+NgFuplkeLIzCtJLcpLzFFi42I5/e+xgG6HVn+4wdPnAhb/ptxgt7j+5Tmr xeVdc9gsbjeuYHNg8Xg58TebR9+WVYwenzfJBTBHNTDaZKQmpqQWKaTmJeenZOal2yp5B8c7 x5uaGRjqGlpamCsp5CXmptoqufgE6Lpl5gCtU1IoS8wpBQoFJBYXK+nbYZoQGuKmawHTGKHr GxIE12NkgAYS1jBmHLv/lKmgRabi443nrA2MV8W6GDk5JARMJLbs/cQOYYtJXLi3ng3EFhJY yihxdrNcFyMXkP2FUWLTpV4mkASbgJbE/hc3wIpEBBQkNvc+YwWxmQWiJI5c/gI0iINDWMBX 4nG3OIjJIqAq8bmTF6SCV8BVoudKOyPEKjmJD3sega3lFHCT2HT+OTPEWleJLRvPs01g5F3A yLCKUSK1ILmgOCk91zAvtVyvODG3uDQvXS85P3cTIzgqnkntYDy4y/0QowAHoxIPb8TBvnAh 1sSy4srcQ4wSHMxKIrxr1PrDhXhTEiurUovy44tKc1KLDzGaAt01kVlKNDkfGLF5JfGGxiZm RpZG5oYWRsbmSuK8j/+vCxMSSE8sSc1OTS1ILYLpY+LglGpgDM2YWv6vx+R9saOuaHSmk9XU z8u7OBOjrVcv8Iv486t0V27r+vdHJ/jLsizY7JgzTz9koy1nzIlvS9bKhq9buLhmcuOBRbF7 2M/y/mvnWClfb1n0kO2HYjHra9n0IEuPfY/PVnbpXjjE3RDLMCfT4eHRz0+563vMl3xM7+8X 5eyNjJyrejRQiaU4I9FQi7moOBEAwZqG5qACAAA= |
| Dlp-Filter | Pass |
| X-Mtr | 20000000000000000@CPGS |
| X-Cfilter-Loop | Reflected |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 103 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | cw00.choi@samsung.com, myungjoo.ham@samsung.com, ckeepax@opensource.wolfsonmicro.com |
| X-Original-Date | Wed, 20 Jul 2016 16:38:45 +0900 |
| X-Original-Message-ID | <1469000327-15615-3-git-send-email-cw00.choi@samsung.com> |
| X-Original-References | <1469000327-15615-1-git-send-email-cw00.choi@samsung.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1447044 |
Show key headers only | View raw
This patch removes the usage of extcon_set_state() because it uses the bit
masking to change the state of external connectors. The extcon framework
should handle the state by extcon_set/get_cable_state_() with extcon id.
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
---
drivers/extcon/extcon-adc-jack.c | 26 ++++++++++++++------------
include/linux/extcon/extcon-adc-jack.h | 4 ++--
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/drivers/extcon/extcon-adc-jack.c b/drivers/extcon/extcon-adc-jack.c
index 48dec94b487b..e62e6cd7e00a 100644
--- a/drivers/extcon/extcon-adc-jack.c
+++ b/drivers/extcon/extcon-adc-jack.c
@@ -3,6 +3,9 @@
*
* Analog Jack extcon driver with ADC-based detection capability.
*
+ * Copyright (C) 2016 Samsung Electronics
+ * Chanwoo Choi <cw00.choi@samsung.com>
+ *
* Copyright (C) 2012 Samsung Electronics
* MyungJoo Ham <myungjoo.ham@samsung.com>
*
@@ -58,7 +61,7 @@ static void adc_jack_handler(struct work_struct *work)
struct adc_jack_data *data = container_of(to_delayed_work(work),
struct adc_jack_data,
handler);
- u32 state = 0;
+ struct adc_jack_cond *def;
int ret, adc_val;
int i;
@@ -70,17 +73,18 @@ static void adc_jack_handler(struct work_struct *work)
/* Get state from adc value with adc_conditions */
for (i = 0; i < data->num_conditions; i++) {
- struct adc_jack_cond *def = &data->adc_conditions[i];
- if (!def->state)
- break;
+ def = &data->adc_conditions[i];
if (def->min_adc <= adc_val && def->max_adc >= adc_val) {
- state = def->state;
- break;
+ extcon_set_cable_state_(data->edev, def->id, true);
+ return;
}
}
- /* if no def has met, it means state = 0 (no cables attached) */
- extcon_set_state(data->edev, state);
+ /* Set the detached state if adc value is not included in the range */
+ for (i = 0; i < data->num_conditions; i++) {
+ def = &data->adc_conditions[i];
+ extcon_set_cable_state_(data->edev, def->id, false);
+ }
}
static irqreturn_t adc_jack_irq_thread(int irq, void *_data)
@@ -114,16 +118,14 @@ static int adc_jack_probe(struct platform_device *pdev)
return -ENOMEM;
}
- if (!pdata->adc_conditions ||
- !pdata->adc_conditions[0].state) {
+ if (!pdata->adc_conditions) {
dev_err(&pdev->dev, "error: adc_conditions not defined.\n");
return -EINVAL;
}
data->adc_conditions = pdata->adc_conditions;
/* Check the length of array and set num_conditions */
- for (i = 0; data->adc_conditions[i].state; i++)
- ;
+ for (i = 0; data->adc_conditions[i].id != EXTCON_NONE; i++);
data->num_conditions = i;
data->chan = iio_channel_get(&pdev->dev, pdata->consumer_channel);
diff --git a/include/linux/extcon/extcon-adc-jack.h b/include/linux/extcon/extcon-adc-jack.h
index ac85f2061351..a0e03b13b449 100644
--- a/include/linux/extcon/extcon-adc-jack.h
+++ b/include/linux/extcon/extcon-adc-jack.h
@@ -20,8 +20,8 @@
/**
* struct adc_jack_cond - condition to use an extcon state
- * @state: the corresponding extcon state (if 0, this struct
* denotes the last adc_jack_cond element among the array)
+ * @id: the unique id of each external connector
* @min_adc: min adc value for this condition
* @max_adc: max adc value for this condition
*
@@ -33,7 +33,7 @@
* because when no adc_jack_cond is met, state = 0 is automatically chosen.
*/
struct adc_jack_cond {
- u32 state; /* extcon state value. 0 if invalid */
+ unsigned int id;
u32 min_adc;
u32 max_adc;
};
--
1.9.1
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH 2/4] extcon: adc-jack: Remove the usage of extcon_set_state() Chanwoo Choi <cw00.choi@samsung.com> - 2016-07-20 09:40 +0200
csiph-web