* [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector
@ 2012-04-10 6:20 Axel Lin
2012-04-10 6:21 ` [PATCH RESEND 2/3] regulator: max8998: " Axel Lin
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Axel Lin @ 2012-04-10 6:20 UTC (permalink / raw)
To: linux-kernel; +Cc: Kyungmin Park, MyungJoo Ham, Liam Girdwood, Mark Brown
It's more efficient to get the best selector by simple equation.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
drivers/regulator/max8997.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/regulator/max8997.c b/drivers/regulator/max8997.c
index 6e7beee..de752da 100644
--- a/drivers/regulator/max8997.c
+++ b/drivers/regulator/max8997.c
@@ -416,7 +416,7 @@ static inline int max8997_get_voltage_proper_val(
const struct voltage_map_desc *desc,
int min_vol, int max_vol)
{
- int i = 0;
+ int i;
if (desc == NULL)
return -EINVAL;
@@ -424,9 +424,10 @@ static inline int max8997_get_voltage_proper_val(
if (max_vol < desc->min || min_vol > desc->max)
return -EINVAL;
- while (desc->min + desc->step * i < min_vol &&
- desc->min + desc->step * i < desc->max)
- i++;
+ if (min_vol < desc->min)
+ min_vol = desc->min;
+
+ i = DIV_ROUND_UP(min_vol - desc->min, desc->step);
if (desc->min + desc->step * i > max_vol)
return -EINVAL;
--
1.7.5.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH RESEND 2/3] regulator: max8998: Use simple equation to get selector
2012-04-10 6:20 [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector Axel Lin
@ 2012-04-10 6:21 ` Axel Lin
2012-04-10 6:22 ` [PATCH 3/3] regulator: max8997: Remove n_bits from struct voltage_map_desc Axel Lin
2012-04-10 9:14 ` [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Axel Lin @ 2012-04-10 6:21 UTC (permalink / raw)
To: linux-kernel; +Cc: Kyungmin Park, MyungJoo Ham, Liam Girdwood, Mark Brown
It's more efficient to get the best selector by simple equation.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
drivers/regulator/max8998.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/regulator/max8998.c b/drivers/regulator/max8998.c
index 5890265..90b3193 100644
--- a/drivers/regulator/max8998.c
+++ b/drivers/regulator/max8998.c
@@ -306,8 +306,7 @@ static int max8998_set_voltage_ldo(struct regulator_dev *rdev,
int min_vol = min_uV / 1000, max_vol = max_uV / 1000;
const struct voltage_map_desc *desc;
int ldo = rdev_get_id(rdev);
- int reg, shift = 0, mask, ret;
- int i = 0;
+ int reg, shift = 0, mask, ret, i;
if (ldo >= ARRAY_SIZE(ldo_voltage_map))
return -EINVAL;
@@ -319,9 +318,10 @@ static int max8998_set_voltage_ldo(struct regulator_dev *rdev,
if (max_vol < desc->min || min_vol > desc->max)
return -EINVAL;
- while (desc->min + desc->step*i < min_vol &&
- desc->min + desc->step*i < desc->max)
- i++;
+ if (min_vol < desc->min)
+ min_vol = desc->min;
+
+ i = DIV_ROUND_UP(min_vol - desc->min, desc->step);
if (desc->min + desc->step*i > max_vol)
return -EINVAL;
@@ -359,7 +359,7 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,
const struct voltage_map_desc *desc;
int buck = rdev_get_id(rdev);
int reg, shift = 0, mask, ret;
- int difference = 0, i = 0, j = 0, previous_vol = 0;
+ int difference = 0, i, j = 0, previous_vol = 0;
u8 val = 0;
static u8 buck1_last_val;
@@ -374,9 +374,10 @@ static int max8998_set_voltage_buck(struct regulator_dev *rdev,
if (max_vol < desc->min || min_vol > desc->max)
return -EINVAL;
- while (desc->min + desc->step*i < min_vol &&
- desc->min + desc->step*i < desc->max)
- i++;
+ if (min_vol < desc->min)
+ min_vol = desc->min;
+
+ i = DIV_ROUND_UP(min_vol - desc->min, desc->step);
if (desc->min + desc->step*i > max_vol)
return -EINVAL;
--
1.7.5.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] regulator: max8997: Remove n_bits from struct voltage_map_desc
2012-04-10 6:20 [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector Axel Lin
2012-04-10 6:21 ` [PATCH RESEND 2/3] regulator: max8998: " Axel Lin
@ 2012-04-10 6:22 ` Axel Lin
2012-04-10 9:14 ` [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Axel Lin @ 2012-04-10 6:22 UTC (permalink / raw)
To: linux-kernel; +Cc: Kyungmin Park, MyungJoo Ham, Liam Girdwood, Mark Brown
The n_bits is only used in max8997_get_voltage_proper_val to check the valid
range for variable i.
Current code already ensures min_vol never greater than desc->max,
which means the variable i always in the valid range:
0 .. (desc->max - desc->min)/desc->step.
Thus we can remove the checking (i >= (1 << desc->n_bits) and then remove
n_bits from struct voltage_map_desc.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
drivers/regulator/max8997.c | 14 +++++---------
1 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/drivers/regulator/max8997.c b/drivers/regulator/max8997.c
index e0fa9b7..e490141 100644
--- a/drivers/regulator/max8997.c
+++ b/drivers/regulator/max8997.c
@@ -68,29 +68,28 @@ struct voltage_map_desc {
int min;
int max;
int step;
- unsigned int n_bits;
};
/* Voltage maps in mV */
static const struct voltage_map_desc ldo_voltage_map_desc = {
- .min = 800, .max = 3950, .step = 50, .n_bits = 6,
+ .min = 800, .max = 3950, .step = 50,
}; /* LDO1 ~ 18, 21 all */
static const struct voltage_map_desc buck1245_voltage_map_desc = {
- .min = 650, .max = 2225, .step = 25, .n_bits = 6,
+ .min = 650, .max = 2225, .step = 25,
}; /* Buck1, 2, 4, 5 */
static const struct voltage_map_desc buck37_voltage_map_desc = {
- .min = 750, .max = 3900, .step = 50, .n_bits = 6,
+ .min = 750, .max = 3900, .step = 50,
}; /* Buck3, 7 */
/* current map in mA */
static const struct voltage_map_desc charger_current_map_desc = {
- .min = 200, .max = 950, .step = 50, .n_bits = 4,
+ .min = 200, .max = 950, .step = 50,
};
static const struct voltage_map_desc topoff_current_map_desc = {
- .min = 50, .max = 200, .step = 10, .n_bits = 4,
+ .min = 50, .max = 200, .step = 10,
};
static const struct voltage_map_desc *reg_voltage_map[] = {
@@ -432,9 +431,6 @@ static inline int max8997_get_voltage_proper_val(
if (desc->min + desc->step * i > max_vol)
return -EINVAL;
- if (i >= (1 << desc->n_bits))
- return -EINVAL;
-
return i;
}
--
1.7.5.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector
2012-04-10 6:20 [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector Axel Lin
2012-04-10 6:21 ` [PATCH RESEND 2/3] regulator: max8998: " Axel Lin
2012-04-10 6:22 ` [PATCH 3/3] regulator: max8997: Remove n_bits from struct voltage_map_desc Axel Lin
@ 2012-04-10 9:14 ` Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2012-04-10 9:14 UTC (permalink / raw)
To: Axel Lin; +Cc: linux-kernel, Kyungmin Park, MyungJoo Ham, Liam Girdwood
[-- Attachment #1: Type: text/plain, Size: 147 bytes --]
On Tue, Apr 10, 2012 at 02:20:03PM +0800, Axel Lin wrote:
> It's more efficient to get the best selector by simple equation.
Applied all, thanks.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-04-10 9:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-10 6:20 [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector Axel Lin
2012-04-10 6:21 ` [PATCH RESEND 2/3] regulator: max8998: " Axel Lin
2012-04-10 6:22 ` [PATCH 3/3] regulator: max8997: Remove n_bits from struct voltage_map_desc Axel Lin
2012-04-10 9:14 ` [PATCH RESEND 1/3] regulator: max8997: Use simple equation to get selector Mark Brown
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.