Commit fd7f82b8 authored by Jean Delvare's avatar Jean Delvare Committed by Jean Delvare

hwmon: (w83795) Make W83795_REG_PWM more efficient

Cascaded conditionals are inefficient. Reorder the fields so that
PWM register addresses can be computed more efficiently.
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Acked-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
parent 5f7b77cb
...@@ -178,15 +178,11 @@ static const u8 IN_LSB_SHIFT_IDX[][2] = { ...@@ -178,15 +178,11 @@ static const u8 IN_LSB_SHIFT_IDX[][2] = {
#define W83795_REG_TSS(index) (0x209 + (index)) #define W83795_REG_TSS(index) (0x209 + (index))
#define PWM_OUTPUT 0 #define PWM_OUTPUT 0
#define PWM_START 1 #define PWM_FREQ 1
#define PWM_NONSTOP 2 #define PWM_START 2
#define PWM_STOP_TIME 3 #define PWM_NONSTOP 3
#define PWM_FREQ 4 #define PWM_STOP_TIME 4
#define W83795_REG_PWM(index, nr) \ #define W83795_REG_PWM(index, nr) (0x210 + (nr) * 8 + (index))
(((nr) == 0 ? 0x210 : \
(nr) == 1 ? 0x220 : \
(nr) == 2 ? 0x228 : \
(nr) == 3 ? 0x230 : 0x218) + (index))
#define W83795_REG_FTSH(index) (0x240 + (index) * 2) #define W83795_REG_FTSH(index) (0x240 + (index) * 2)
#define W83795_REG_FTSL(index) (0x241 + (index) * 2) #define W83795_REG_FTSL(index) (0x241 + (index) * 2)
...@@ -356,8 +352,8 @@ struct w83795_data { ...@@ -356,8 +352,8 @@ struct w83795_data {
u8 has_pwm; /* 795g supports 8 pwm, 795adg only supports 2, u8 has_pwm; /* 795g supports 8 pwm, 795adg only supports 2,
* no config register, only affected by chip * no config register, only affected by chip
* type */ * type */
u8 pwm[8][5]; /* Register value, output, start, non stop, stop u8 pwm[8][5]; /* Register value, output, freq, start,
* time, freq */ * non stop, stop time */
u16 clkin; /* CLKIN frequency in kHz */ u16 clkin; /* CLKIN frequency in kHz */
u8 pwm_fcms[2]; /* Register value */ u8 pwm_fcms[2]; /* Register value */
u8 pwm_tfmr[6]; /* Register value */ u8 pwm_tfmr[6]; /* Register value */
...@@ -1979,7 +1975,7 @@ static int w83795_probe(struct i2c_client *client, ...@@ -1979,7 +1975,7 @@ static int w83795_probe(struct i2c_client *client,
data->pwm_tfmr[i] = w83795_read(client, W83795_REG_TFMR(i)); data->pwm_tfmr[i] = w83795_read(client, W83795_REG_TFMR(i));
data->pwm_fomc = w83795_read(client, W83795_REG_FOMC); data->pwm_fomc = w83795_read(client, W83795_REG_FOMC);
for (i = 0; i < data->has_pwm; i++) { for (i = 0; i < data->has_pwm; i++) {
for (tmp = PWM_START; tmp <= PWM_FREQ; tmp++) for (tmp = PWM_FREQ; tmp <= PWM_STOP_TIME; tmp++)
data->pwm[i][tmp] = data->pwm[i][tmp] =
w83795_read(client, W83795_REG_PWM(i, tmp)); w83795_read(client, W83795_REG_PWM(i, tmp));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment