Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1304526 > unrolled thread
| Started by | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| First post | 2016-01-08 14:20 +0100 |
| Last post | 2016-01-08 15:20 +0100 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH v3 0/9] lib/string: introduce match_string() helper Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-01-08 14:20 +0100
[PATCH v3 5/9] power: charger_manager: convert to use match_string() helper Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-01-08 14:20 +0100
[PATCH v3 6/9] power: ab8500: convert to use match_string() helper Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-01-08 14:20 +0100
Re: [PATCH v3 0/9] lib/string: introduce match_string() helper Al Viro <viro@ZenIV.linux.org.uk> - 2016-01-08 14:20 +0100
Re: [PATCH v3 0/9] lib/string: introduce match_string() helper Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-01-08 15:20 +0100
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2016-01-08 14:20 +0100 |
| Subject | [PATCH v3 0/9] lib/string: introduce match_string() helper |
| Message-ID | <qOEXL-7an-13@gated-at.bofh.it> |
There are users of a simple string matching in the array. Let's do a common helper for that. Several users are updated in the series. The series is compile tested. Since v2: - slightly modify implementation of the helper: - rename len -> n in prototype (Sergey) - move to for-loop (Rasmus) - change 0 -> -1 to iterate over NULL-terminated arrays (Rasmus) - add patch 9 from Heikki - append tags Since v1: - convert few more users to get helper useful Andy Shevchenko (8): lib/string: introduce match_string() helper device property: convert to use match_string() helper pinctrl: convert to use match_string() helper drm/edid: convert to use match_string() helper power: charger_manager: convert to use match_string() helper power: ab8500: convert to use match_string() helper ata: hpt366: convert to use match_string() helper ide: hpt366: convert to use match_string() helper Heikki Krogerus (1): usb: common: convert to use match_string() helper drivers/ata/pata_hpt366.c | 13 +++++-------- drivers/base/property.c | 10 ++-------- drivers/gpu/drm/drm_edid_load.c | 17 ++++++----------- drivers/ide/hpt366.c | 9 ++------- drivers/pinctrl/pinmux.c | 13 +++---------- drivers/power/ab8500_btemp.c | 15 +++++---------- drivers/power/ab8500_charger.c | 16 +++++----------- drivers/power/ab8500_fg.c | 15 +++++---------- drivers/power/abx500_chargalg.c | 14 +++++--------- drivers/power/charger-manager.c | 27 ++++----------------------- drivers/usb/common/common.c | 22 ++++++++-------------- include/linux/string.h | 2 ++ lib/string.c | 26 ++++++++++++++++++++++++++ 13 files changed, 78 insertions(+), 121 deletions(-) -- 2.6.4
[toc] | [next] | [standalone]
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2016-01-08 14:20 +0100 |
| Subject | [PATCH v3 5/9] power: charger_manager: convert to use match_string() helper |
| Message-ID | <qOF7s-7eQ-37@gated-at.bofh.it> |
| In reply to | #1304526 |
The new helper returns index of the mathing string in an array. We would use it
here.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/power/charger-manager.c | 27 ++++-----------------------
1 file changed, 4 insertions(+), 23 deletions(-)
diff --git a/drivers/power/charger-manager.c b/drivers/power/charger-manager.c
index 1ea5d1a..e664ca7 100644
--- a/drivers/power/charger-manager.c
+++ b/drivers/power/charger-manager.c
@@ -2020,27 +2020,6 @@ static void __exit charger_manager_cleanup(void)
module_exit(charger_manager_cleanup);
/**
- * find_power_supply - find the associated power_supply of charger
- * @cm: the Charger Manager representing the battery
- * @psy: pointer to instance of charger's power_supply
- */
-static bool find_power_supply(struct charger_manager *cm,
- struct power_supply *psy)
-{
- int i;
- bool found = false;
-
- for (i = 0; cm->desc->psy_charger_stat[i]; i++) {
- if (!strcmp(psy->desc->name, cm->desc->psy_charger_stat[i])) {
- found = true;
- break;
- }
- }
-
- return found;
-}
-
-/**
* cm_notify_event - charger driver notify Charger Manager of charger event
* @psy: pointer to instance of charger's power_supply
* @type: type of charger event
@@ -2057,9 +2036,11 @@ void cm_notify_event(struct power_supply *psy, enum cm_event_types type,
mutex_lock(&cm_list_mtx);
list_for_each_entry(cm, &cm_list, entry) {
- found_power_supply = find_power_supply(cm, psy);
- if (found_power_supply)
+ if (match_string(cm->desc->psy_charger_stat, -1,
+ psy->desc->name) >= 0) {
+ found_power_supply = true;
break;
+ }
}
mutex_unlock(&cm_list_mtx);
--
2.6.4
[toc] | [prev] | [next] | [standalone]
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2016-01-08 14:20 +0100 |
| Subject | [PATCH v3 6/9] power: ab8500: convert to use match_string() helper |
| Message-ID | <qOF7s-7eQ-39@gated-at.bofh.it> |
| In reply to | #1304526 |
The new helper returns index of the mathing string in an array. We would use it
here.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
drivers/power/ab8500_btemp.c | 15 +++++----------
drivers/power/ab8500_charger.c | 16 +++++-----------
drivers/power/ab8500_fg.c | 15 +++++----------
drivers/power/abx500_chargalg.c | 14 +++++---------
4 files changed, 20 insertions(+), 40 deletions(-)
diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/ab8500_btemp.c
index 8f8044e..bf2e5dd 100644
--- a/drivers/power/ab8500_btemp.c
+++ b/drivers/power/ab8500_btemp.c
@@ -906,26 +906,21 @@ static int ab8500_btemp_get_property(struct power_supply *psy,
static int ab8500_btemp_get_ext_psy_data(struct device *dev, void *data)
{
struct power_supply *psy;
- struct power_supply *ext;
+ struct power_supply *ext = dev_get_drvdata(dev);
+ const char **supplicants = (const char **)ext->supplied_to;
struct ab8500_btemp *di;
union power_supply_propval ret;
- int i, j;
- bool psy_found = false;
+ int j;
psy = (struct power_supply *)data;
- ext = dev_get_drvdata(dev);
di = power_supply_get_drvdata(psy);
/*
* For all psy where the name of your driver
* appears in any supplied_to
*/
- for (i = 0; i < ext->num_supplicants; i++) {
- if (!strcmp(ext->supplied_to[i], psy->desc->name))
- psy_found = true;
- }
-
- if (!psy_found)
+ j = match_string(supplicants, ext->num_supplicants, psy->desc->name);
+ if (j < 0)
return 0;
/* Go through all properties for the psy */
diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index e388171..30de5d4 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -1929,11 +1929,11 @@ static int ab8540_charger_usb_pre_chg_enable(struct ux500_charger *charger,
static int ab8500_charger_get_ext_psy_data(struct device *dev, void *data)
{
struct power_supply *psy;
- struct power_supply *ext;
+ struct power_supply *ext = dev_get_drvdata(dev);
+ const char **supplicants = (const char **)ext->supplied_to;
struct ab8500_charger *di;
union power_supply_propval ret;
- int i, j;
- bool psy_found = false;
+ int j;
struct ux500_charger *usb_chg;
usb_chg = (struct ux500_charger *)data;
@@ -1941,15 +1941,9 @@ static int ab8500_charger_get_ext_psy_data(struct device *dev, void *data)
di = to_ab8500_charger_usb_device_info(usb_chg);
- ext = dev_get_drvdata(dev);
-
/* For all psy where the driver name appears in any supplied_to */
- for (i = 0; i < ext->num_supplicants; i++) {
- if (!strcmp(ext->supplied_to[i], psy->desc->name))
- psy_found = true;
- }
-
- if (!psy_found)
+ j = match_string(supplicants, ext->num_supplicants, psy->desc->name);
+ if (j < 0)
return 0;
/* Go through all properties for the psy */
diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c
index 3830dad..5a36cf8 100644
--- a/drivers/power/ab8500_fg.c
+++ b/drivers/power/ab8500_fg.c
@@ -2168,26 +2168,21 @@ static int ab8500_fg_get_property(struct power_supply *psy,
static int ab8500_fg_get_ext_psy_data(struct device *dev, void *data)
{
struct power_supply *psy;
- struct power_supply *ext;
+ struct power_supply *ext = dev_get_drvdata(dev);
+ const char **supplicants = (const char **)ext->supplied_to;
struct ab8500_fg *di;
union power_supply_propval ret;
- int i, j;
- bool psy_found = false;
+ int j;
psy = (struct power_supply *)data;
- ext = dev_get_drvdata(dev);
di = power_supply_get_drvdata(psy);
/*
* For all psy where the name of your driver
* appears in any supplied_to
*/
- for (i = 0; i < ext->num_supplicants; i++) {
- if (!strcmp(ext->supplied_to[i], psy->desc->name))
- psy_found = true;
- }
-
- if (!psy_found)
+ j = match_string(supplicants, ext->num_supplicants, psy->desc->name);
+ if (j < 0)
return 0;
/* Go through all properties for the psy */
diff --git a/drivers/power/abx500_chargalg.c b/drivers/power/abx500_chargalg.c
index 541f702..d9104b1 100644
--- a/drivers/power/abx500_chargalg.c
+++ b/drivers/power/abx500_chargalg.c
@@ -975,22 +975,18 @@ static void handle_maxim_chg_curr(struct abx500_chargalg *di)
static int abx500_chargalg_get_ext_psy_data(struct device *dev, void *data)
{
struct power_supply *psy;
- struct power_supply *ext;
+ struct power_supply *ext = dev_get_drvdata(dev);
+ const char **supplicants = (const char **)ext->supplied_to;
struct abx500_chargalg *di;
union power_supply_propval ret;
- int i, j;
- bool psy_found = false;
+ int j;
bool capacity_updated = false;
psy = (struct power_supply *)data;
- ext = dev_get_drvdata(dev);
di = power_supply_get_drvdata(psy);
/* For all psy where the driver name appears in any supplied_to */
- for (i = 0; i < ext->num_supplicants; i++) {
- if (!strcmp(ext->supplied_to[i], psy->desc->name))
- psy_found = true;
- }
- if (!psy_found)
+ j = match_string(supplicants, ext->num_supplicants, psy->desc->name);
+ if (j < 0)
return 0;
/*
--
2.6.4
[toc] | [prev] | [next] | [standalone]
| From | Al Viro <viro@ZenIV.linux.org.uk> |
|---|---|
| Date | 2016-01-08 14:20 +0100 |
| Message-ID | <qOF7t-7eQ-49@gated-at.bofh.it> |
| In reply to | #1304526 |
On Fri, Jan 08, 2016 at 03:09:09PM +0200, Andy Shevchenko wrote: > There are users of a simple string matching in the array. Let's do a common > helper for that. What's the reason for making it return -ENODATA when no match is found? That one of the callers wants to return that as error in such case? At least one other is returning -EINVAL in the same situation...
[toc] | [prev] | [next] | [standalone]
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2016-01-08 15:20 +0100 |
| Message-ID | <qOG3w-7SE-27@gated-at.bofh.it> |
| In reply to | #1304530 |
On Fri, 2016-01-08 at 13:19 +0000, Al Viro wrote: > On Fri, Jan 08, 2016 at 03:09:09PM +0200, Andy Shevchenko wrote: > > There are users of a simple string matching in the array. Let's do > > a common > > helper for that. > > What's the reason for making it return -ENODATA when no match is > found? What else can be suitable? > That one of the callers wants to return that as error in such case? > At least one other is returning -EINVAL in the same situation... Linus Acked this, maybe he missed that one. Linus, do we still need to return -EINVAL in pinmux? In general our error reporting sucks, you know. So, any return value will be not ideal and self-explanatory (see json approach in perf). But I prefer return some return code instead of opaque -1, for example. This at least helps some users. -- Andy Shevchenko <andriy.shevchenko@linux.intel.com> Intel Finland Oy
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web