]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
hwmon: pmbus: ucd9000: Use generic code
authorPatrick Rudolph <patrick.rudolph@9elements.com>
Mon, 2 Sep 2024 07:53:14 +0000 (09:53 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 2 Sep 2024 14:34:02 +0000 (07:34 -0700)
Use generic pmbus bus write access delay.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Message-ID: <20240902075319.585656-3-patrick.rudolph@9elements.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/ucd9000.c

index d817c719b90bd5d7898b9698922f8d9371737ae9..5d3d1773bf520d58440908523456b08552986d63 100644 (file)
@@ -67,7 +67,6 @@ struct ucd9000_data {
        struct gpio_chip gpio;
 #endif
        struct dentry *debugfs;
-       ktime_t write_time;
 };
 #define to_ucd9000_data(_info) container_of(_info, struct ucd9000_data, info)
 
@@ -86,63 +85,6 @@ struct ucd9000_debugfs_entry {
  */
 #define UCD90320_WAIT_DELAY_US 500
 
-static inline void ucd90320_wait(const struct ucd9000_data *data)
-{
-       s64 delta = ktime_us_delta(ktime_get(), data->write_time);
-
-       if (delta < UCD90320_WAIT_DELAY_US)
-               udelay(UCD90320_WAIT_DELAY_US - delta);
-}
-
-static int ucd90320_read_word_data(struct i2c_client *client, int page,
-                                  int phase, int reg)
-{
-       const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
-       struct ucd9000_data *data = to_ucd9000_data(info);
-
-       if (reg >= PMBUS_VIRT_BASE)
-               return -ENXIO;
-
-       ucd90320_wait(data);
-       return pmbus_read_word_data(client, page, phase, reg);
-}
-
-static int ucd90320_read_byte_data(struct i2c_client *client, int page, int reg)
-{
-       const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
-       struct ucd9000_data *data = to_ucd9000_data(info);
-
-       ucd90320_wait(data);
-       return pmbus_read_byte_data(client, page, reg);
-}
-
-static int ucd90320_write_word_data(struct i2c_client *client, int page,
-                                   int reg, u16 word)
-{
-       const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
-       struct ucd9000_data *data = to_ucd9000_data(info);
-       int ret;
-
-       ucd90320_wait(data);
-       ret = pmbus_write_word_data(client, page, reg, word);
-       data->write_time = ktime_get();
-
-       return ret;
-}
-
-static int ucd90320_write_byte(struct i2c_client *client, int page, u8 value)
-{
-       const struct pmbus_driver_info *info = pmbus_get_driver_info(client);
-       struct ucd9000_data *data = to_ucd9000_data(info);
-       int ret;
-
-       ucd90320_wait(data);
-       ret = pmbus_write_byte(client, page, value);
-       data->write_time = ktime_get();
-
-       return ret;
-}
-
 static int ucd9000_get_fan_config(struct i2c_client *client, int fan)
 {
        int fan_config = 0;
@@ -667,10 +609,8 @@ static int ucd9000_probe(struct i2c_client *client)
                info->func[0] |= PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12
                  | PMBUS_HAVE_FAN34 | PMBUS_HAVE_STATUS_FAN34;
        } else if (mid->driver_data == ucd90320) {
-               info->read_byte_data = ucd90320_read_byte_data;
-               info->read_word_data = ucd90320_read_word_data;
-               info->write_byte = ucd90320_write_byte;
-               info->write_word_data = ucd90320_write_word_data;
+               /* Delay SMBus operations after a write */
+               info->write_delay = UCD90320_WAIT_DELAY_US;
        }
 
        ucd9000_probe_gpio(client, mid, data);