From: Guenter Roeck <linux@roeck-us.net>
To: Hardware Monitoring <linux-hwmon@vger.kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Subject: [PATCH 2/6] hwmon: (max6697) Drop platform data support
Date: Mon, 22 Jul 2024 17:52:00 -0700 [thread overview]
Message-ID: <20240723005204.1356501-3-linux@roeck-us.net> (raw)
In-Reply-To: <20240723005204.1356501-1-linux@roeck-us.net>
Platform data is not used anywhere in the upstram kernel. Drop support
for it to simplify code maintenance.
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
drivers/hwmon/max6697.c | 169 ++++++++++++--------------
include/linux/platform_data/max6697.h | 33 -----
2 files changed, 76 insertions(+), 126 deletions(-)
delete mode 100644 include/linux/platform_data/max6697.h
diff --git a/drivers/hwmon/max6697.c b/drivers/hwmon/max6697.c
index 6745d311dcf2..1ad4bf31cd24 100644
--- a/drivers/hwmon/max6697.c
+++ b/drivers/hwmon/max6697.c
@@ -17,8 +17,6 @@
#include <linux/of.h>
#include <linux/slab.h>
-#include <linux/platform_data/max6697.h>
-
enum chips { max6581, max6602, max6622, max6636, max6689, max6693, max6694,
max6697, max6698, max6699 };
@@ -558,54 +556,92 @@ static const struct attribute_group max6697_group = {
};
__ATTRIBUTE_GROUPS(max6697);
-static void max6697_get_config_of(struct device_node *node,
- struct max6697_platform_data *pdata)
+static int max6697_config_of(struct max6697_data *data, struct i2c_client *client)
{
- int len;
- const __be32 *prop;
+ const struct max6697_chip_data *chip = data->chip;
+ struct device_node *node = client->dev.of_node;
+ int ret, confreg;
+ int factor = 0;
+ u32 vals[2];
- pdata->smbus_timeout_disable =
- of_property_read_bool(node, "smbus-timeout-disable");
- pdata->extended_range_enable =
- of_property_read_bool(node, "extended-range-enable");
- pdata->beta_compensation =
- of_property_read_bool(node, "beta-compensation-enable");
+ confreg = 0;
+ if (of_property_read_bool(node, "smbus-timeout-disable") &&
+ (data->chip->valid_conf & MAX6697_CONF_TIMEOUT)) {
+ confreg |= MAX6697_CONF_TIMEOUT;
+ }
+ if (of_property_read_bool(node, "extended-range-enable") &&
+ (chip->valid_conf & MAX6581_CONF_EXTENDED)) {
+ confreg |= MAX6581_CONF_EXTENDED;
+ data->temp_offset = 64;
+ }
+ if (of_property_read_bool(node, "beta-compensation-enable") &&
+ (chip->valid_conf & MAX6693_CONF_BETA)) {
+ confreg |= MAX6693_CONF_BETA;
+ }
- prop = of_get_property(node, "alert-mask", &len);
- if (prop && len == sizeof(u32))
- pdata->alert_mask = be32_to_cpu(prop[0]);
- prop = of_get_property(node, "over-temperature-mask", &len);
- if (prop && len == sizeof(u32))
- pdata->over_temperature_mask = be32_to_cpu(prop[0]);
- prop = of_get_property(node, "resistance-cancellation", &len);
- if (prop) {
- if (len == sizeof(u32))
- pdata->resistance_cancellation = be32_to_cpu(prop[0]);
- else
- pdata->resistance_cancellation = 0xfe;
- }
- prop = of_get_property(node, "transistor-ideality", &len);
- if (prop && len == 2 * sizeof(u32)) {
- pdata->ideality_mask = be32_to_cpu(prop[0]);
- pdata->ideality_value = be32_to_cpu(prop[1]);
+ if (of_property_read_u32(node, "alert-mask", vals))
+ vals[0] = 0;
+ ret = i2c_smbus_write_byte_data(client, MAX6697_REG_ALERT_MASK,
+ MAX6697_ALERT_MAP_BITS(vals[0]));
+ if (ret)
+ return ret;
+
+ if (of_property_read_u32(node, "over-temperature-mask", vals))
+ vals[0] = 0;
+ ret = i2c_smbus_write_byte_data(client, MAX6697_REG_OVERT_MASK,
+ MAX6697_OVERT_MAP_BITS(vals[0]));
+ if (ret)
+ return ret;
+
+ if (data->type == max6581) {
+ if (of_property_read_bool(node, "resistance-cancellation") &&
+ chip->valid_conf & MAX6697_CONF_RESISTANCE) {
+ confreg |= MAX6697_CONF_RESISTANCE;
+ factor = 1;
+ }
+ } else {
+ if (of_property_read_u32(node, "resistance-cancellation", &vals[0]))
+ vals[0] = 0xfe;
+
+ factor = hweight8(vals[0] & 0xfe);
+ ret = i2c_smbus_write_byte_data(client, MAX6581_REG_RESISTANCE,
+ vals[0] >> 1);
+ if (ret < 0)
+ return ret;
+
+ if (of_property_read_u32_array(node, "transistor-ideality", vals, 2)) {
+ vals[0] = 0;
+ vals[1] = 0;
+ }
+
+ ret = i2c_smbus_write_byte_data(client, MAX6581_REG_IDEALITY,
+ vals[1]);
+ if (ret < 0)
+ return ret;
+ ret = i2c_smbus_write_byte_data(client,
+ MAX6581_REG_IDEALITY_SELECT,
+ vals[0] >> 1);
+ if (ret < 0)
+ return ret;
}
+ ret = i2c_smbus_write_byte_data(client, MAX6697_REG_CONFIG, confreg);
+ if (ret < 0)
+ return ret;
+ return factor;
}
static int max6697_init_chip(struct max6697_data *data,
struct i2c_client *client)
{
- struct max6697_platform_data *pdata = dev_get_platdata(&client->dev);
- struct max6697_platform_data p;
const struct max6697_chip_data *chip = data->chip;
int factor = chip->channels;
int ret, reg;
/*
- * Don't touch configuration if neither platform data nor OF
- * configuration was specified. If that is the case, use the
- * current chip configuration.
+ * Don't touch configuration if there is no devicetree configuration.
+ * If that is the case, use the current chip configuration.
*/
- if (!pdata && !client->dev.of_node) {
+ if (!client->dev.of_node) {
reg = i2c_smbus_read_byte_data(client, MAX6697_REG_CONFIG);
if (reg < 0)
return reg;
@@ -621,67 +657,14 @@ static int max6697_init_chip(struct max6697_data *data,
if (reg & MAX6697_CONF_RESISTANCE)
factor++;
}
- goto done;
- }
-
- if (client->dev.of_node) {
- memset(&p, 0, sizeof(p));
- max6697_get_config_of(client->dev.of_node, &p);
- pdata = &p;
- }
-
- reg = 0;
- if (pdata->smbus_timeout_disable &&
- (chip->valid_conf & MAX6697_CONF_TIMEOUT)) {
- reg |= MAX6697_CONF_TIMEOUT;
- }
- if (pdata->extended_range_enable &&
- (chip->valid_conf & MAX6581_CONF_EXTENDED)) {
- reg |= MAX6581_CONF_EXTENDED;
- data->temp_offset = 64;
- }
- if (pdata->resistance_cancellation &&
- (chip->valid_conf & MAX6697_CONF_RESISTANCE)) {
- reg |= MAX6697_CONF_RESISTANCE;
- factor++;
- }
- if (pdata->beta_compensation &&
- (chip->valid_conf & MAX6693_CONF_BETA)) {
- reg |= MAX6693_CONF_BETA;
- }
-
- ret = i2c_smbus_write_byte_data(client, MAX6697_REG_CONFIG, reg);
- if (ret < 0)
- return ret;
-
- ret = i2c_smbus_write_byte_data(client, MAX6697_REG_ALERT_MASK,
- MAX6697_ALERT_MAP_BITS(pdata->alert_mask));
- if (ret < 0)
- return ret;
-
- ret = i2c_smbus_write_byte_data(client, MAX6697_REG_OVERT_MASK,
- MAX6697_OVERT_MAP_BITS(pdata->over_temperature_mask));
- if (ret < 0)
- return ret;
-
- if (data->type == max6581) {
- factor += hweight8(pdata->resistance_cancellation >> 1);
- ret = i2c_smbus_write_byte_data(client, MAX6581_REG_RESISTANCE,
- pdata->resistance_cancellation >> 1);
- if (ret < 0)
- return ret;
- ret = i2c_smbus_write_byte_data(client, MAX6581_REG_IDEALITY,
- pdata->ideality_value);
- if (ret < 0)
- return ret;
- ret = i2c_smbus_write_byte_data(client,
- MAX6581_REG_IDEALITY_SELECT,
- pdata->ideality_mask >> 1);
+ data->update_interval = factor * MAX6697_CONV_TIME;
+ } else {
+ ret = max6697_config_of(data, client);
if (ret < 0)
return ret;
+ data->update_interval = (factor + ret) * MAX6697_CONV_TIME;
}
-done:
- data->update_interval = factor * MAX6697_CONV_TIME;
+
return 0;
}
diff --git a/include/linux/platform_data/max6697.h b/include/linux/platform_data/max6697.h
deleted file mode 100644
index 6fbb70005541..000000000000
--- a/include/linux/platform_data/max6697.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * max6697.h
- * Copyright (c) 2012 Guenter Roeck <linux@roeck-us.net>
- */
-
-#ifndef MAX6697_H
-#define MAX6697_H
-
-#include <linux/types.h>
-
-/*
- * For all bit masks:
- * bit 0: local temperature
- * bit 1..7: remote temperatures
- */
-struct max6697_platform_data {
- bool smbus_timeout_disable; /* set to disable SMBus timeouts */
- bool extended_range_enable; /* set to enable extended temp range */
- bool beta_compensation; /* set to enable beta compensation */
- u8 alert_mask; /* set bit to 1 to disable alert */
- u8 over_temperature_mask; /* set bit to 1 to disable */
- u8 resistance_cancellation; /* set bit to 0 to disable
- * bit mask for MAX6581,
- * boolean for other chips
- */
- u8 ideality_mask; /* set bit to 0 to disable */
- u8 ideality_value; /* transistor ideality as per
- * MAX6581 datasheet
- */
-};
-
-#endif /* MAX6697_H */
--
2.39.2
next prev parent reply other threads:[~2024-07-23 0:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-23 0:51 [PATCH 0/6] hwmon: (max6697) Cleanup, use regmap and with_info API Guenter Roeck
2024-07-23 0:51 ` [PATCH 1/6] hwmon: (max6697) Reorder include files Guenter Roeck
2024-07-23 5:36 ` Tzung-Bi Shih
2024-07-23 14:16 ` Guenter Roeck
2024-07-23 0:52 ` Guenter Roeck [this message]
2024-07-23 5:37 ` [PATCH 2/6] hwmon: (max6697) Drop platform data support Tzung-Bi Shih
2024-07-23 14:20 ` Guenter Roeck
2024-07-23 14:48 ` Guenter Roeck
2024-07-23 0:52 ` [PATCH 3/6] hwmon: (max6697) Use bit operations where possible Guenter Roeck
2024-07-23 5:37 ` Tzung-Bi Shih
2024-07-23 14:24 ` Guenter Roeck
2024-07-23 0:52 ` [PATCH 4/6] hwmon: (max6697) Convert to use regmap Guenter Roeck
2024-07-23 5:37 ` Tzung-Bi Shih
2024-07-23 0:52 ` [PATCH 5/6] hwmon: (max6697) Convert to with_info hwmon API Guenter Roeck
2024-07-23 5:37 ` Tzung-Bi Shih
2024-07-23 0:52 ` [PATCH 6/6] hwmon: (max6697) Add support for tempX_min and tempX_min_alarm Guenter Roeck
2024-07-23 5:37 ` Tzung-Bi Shih
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240723005204.1356501-3-linux@roeck-us.net \
--to=linux@roeck-us.net \
--cc=linux-hwmon@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.