Skip to content

Commit 106cfea

Browse files
PatrickRudolphgroeck
authored andcommitted
hwmon: pmbus: ucd9000: Use generic code
Use generic pmbus bus write access delay. Signed-off-by: Patrick Rudolph <[email protected]> Message-ID: <[email protected]> Signed-off-by: Guenter Roeck <[email protected]>
1 parent d83219e commit 106cfea

File tree

1 file changed

+2
-62
lines changed

1 file changed

+2
-62
lines changed

drivers/hwmon/pmbus/ucd9000.c

Lines changed: 2 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ struct ucd9000_data {
6767
struct gpio_chip gpio;
6868
#endif
6969
struct dentry *debugfs;
70-
ktime_t write_time;
7170
};
7271
#define to_ucd9000_data(_info) container_of(_info, struct ucd9000_data, info)
7372

@@ -86,63 +85,6 @@ struct ucd9000_debugfs_entry {
8685
*/
8786
#define UCD90320_WAIT_DELAY_US 500
8887

89-
static inline void ucd90320_wait(const struct ucd9000_data *data)
90-
{
91-
s64 delta = ktime_us_delta(ktime_get(), data->write_time);
92-
93-
if (delta < UCD90320_WAIT_DELAY_US)
94-
udelay(UCD90320_WAIT_DELAY_US - delta);
95-
}
96-
97-
static int ucd90320_read_word_data(struct i2c_client *client, int page,
98-
int phase, int reg)
99-
{
100-
const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
101-
struct ucd9000_data *data = to_ucd9000_data(info);
102-
103-
if (reg >= PMBUS_VIRT_BASE)
104-
return -ENXIO;
105-
106-
ucd90320_wait(data);
107-
return pmbus_read_word_data(client, page, phase, reg);
108-
}
109-
110-
static int ucd90320_read_byte_data(struct i2c_client *client, int page, int reg)
111-
{
112-
const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
113-
struct ucd9000_data *data = to_ucd9000_data(info);
114-
115-
ucd90320_wait(data);
116-
return pmbus_read_byte_data(client, page, reg);
117-
}
118-
119-
static int ucd90320_write_word_data(struct i2c_client *client, int page,
120-
int reg, u16 word)
121-
{
122-
const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
123-
struct ucd9000_data *data = to_ucd9000_data(info);
124-
int ret;
125-
126-
ucd90320_wait(data);
127-
ret = pmbus_write_word_data(client, page, reg, word);
128-
data->write_time = ktime_get();
129-
130-
return ret;
131-
}
132-
133-
static int ucd90320_write_byte(struct i2c_client *client, int page, u8 value)
134-
{
135-
const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
136-
struct ucd9000_data *data = to_ucd9000_data(info);
137-
int ret;
138-
139-
ucd90320_wait(data);
140-
ret = pmbus_write_byte(client, page, value);
141-
data->write_time = ktime_get();
142-
143-
return ret;
144-
}
145-
14688
static int ucd9000_get_fan_config(struct i2c_client *client, int fan)
14789
{
14890
int fan_config = 0;
@@ -667,10 +609,8 @@ static int ucd9000_probe(struct i2c_client *client)
667609
info->func[0] |= PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12
668610
| PMBUS_HAVE_FAN34 | PMBUS_HAVE_STATUS_FAN34;
669611
} else if (mid->driver_data == ucd90320) {
670-
info->read_byte_data = ucd90320_read_byte_data;
671-
info->read_word_data = ucd90320_read_word_data;
672-
info->write_byte = ucd90320_write_byte;
673-
info->write_word_data = ucd90320_write_word_data;
612+
/* Delay SMBus operations after a write */
613+
info->write_delay = UCD90320_WAIT_DELAY_US;
674614
}
675615

676616
ucd9000_probe_gpio(client, mid, data);

0 commit comments

Comments
 (0)