All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH linux dev-5.3 0/2] IBM CFFPS driver and Rainier devicetree updates
@ 2019-11-08 21:14 Eddie James
  2019-11-08 21:14 ` [PATCH linux dev-5.3 1/2] hwmon: (pmbus/ibm-cffps) Add version detection capability Eddie James
  2019-11-08 21:14 ` [PATCH linux dev-5.3 2/2] ARM: dts: aspeed: rainier: Switch PSUs to unknown version Eddie James
  0 siblings, 2 replies; 3+ messages in thread
From: Eddie James @ 2019-11-08 21:14 UTC (permalink / raw)
  To: openbmc

Update the hwmon driver for the IBM CFFPS with version detection, and then put
it to work in the Rainier devicetree, which could use any version power supply.

Eddie James (2):
  hwmon: (pmbus/ibm-cffps) Add version detection capability
  ARM: dts: aspeed: rainier: Switch PSUs to unknown version

 arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts |  8 +++---
 drivers/hwmon/pmbus/ibm-cffps.c              | 37 +++++++++++++++++++++++++---
 2 files changed, 37 insertions(+), 8 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH linux dev-5.3 1/2] hwmon: (pmbus/ibm-cffps) Add version detection capability
  2019-11-08 21:14 [PATCH linux dev-5.3 0/2] IBM CFFPS driver and Rainier devicetree updates Eddie James
@ 2019-11-08 21:14 ` Eddie James
  2019-11-08 21:14 ` [PATCH linux dev-5.3 2/2] ARM: dts: aspeed: rainier: Switch PSUs to unknown version Eddie James
  1 sibling, 0 replies; 3+ messages in thread
From: Eddie James @ 2019-11-08 21:14 UTC (permalink / raw)
  To: openbmc

Some systems may plug in either version 1 or version 2 of the IBM common
form factor power supply. Add a version-less compatibility string that
tells the driver to try and detect which version of the power supply is
connected.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
Link: https://lore.kernel.org/r/1570648262-25383-3-git-send-email-eajames@linux.ibm.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
 drivers/hwmon/pmbus/ibm-cffps.c | 37 +++++++++++++++++++++++++++++++++----
 1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/drivers/hwmon/pmbus/ibm-cffps.c b/drivers/hwmon/pmbus/ibm-cffps.c
index d44745e..d61547e 100644
--- a/drivers/hwmon/pmbus/ibm-cffps.c
+++ b/drivers/hwmon/pmbus/ibm-cffps.c
@@ -3,6 +3,7 @@
  * Copyright 2017 IBM Corp.
  */
 
+#include <linux/bitfield.h>
 #include <linux/bitops.h>
 #include <linux/debugfs.h>
 #include <linux/device.h>
@@ -29,6 +30,10 @@
 #define CFFPS_INPUT_HISTORY_CMD			0xD6
 #define CFFPS_INPUT_HISTORY_SIZE		100
 
+#define CFFPS_CCIN_VERSION			GENMASK(15, 8)
+#define CFFPS_CCIN_VERSION_1			 0x2b
+#define CFFPS_CCIN_VERSION_2			 0x2e
+
 /* STATUS_MFR_SPECIFIC bits */
 #define CFFPS_MFR_FAN_FAULT			BIT(0)
 #define CFFPS_MFR_THERMAL_FAULT			BIT(1)
@@ -54,7 +59,7 @@ enum {
 	CFFPS_DEBUGFS_NUM_ENTRIES
 };
 
-enum versions { cffps1, cffps2 };
+enum versions { cffps1, cffps2, cffps_unknown };
 
 struct ibm_cffps_input_history {
 	struct mutex update_lock;
@@ -395,7 +400,7 @@ static int ibm_cffps_probe(struct i2c_client *client,
 			   const struct i2c_device_id *id)
 {
 	int i, rc;
-	enum versions vs;
+	enum versions vs = cffps_unknown;
 	struct dentry *debugfs;
 	struct dentry *ibm_cffps_dir;
 	struct ibm_cffps *psu;
@@ -405,8 +410,27 @@ static int ibm_cffps_probe(struct i2c_client *client,
 		vs = (enum versions)md;
 	else if (id)
 		vs = (enum versions)id->driver_data;
-	else
-		vs = cffps1;
+
+	if (vs == cffps_unknown) {
+		u16 ccin_version = CFFPS_CCIN_VERSION_1;
+		int ccin = i2c_smbus_read_word_swapped(client, CFFPS_CCIN_CMD);
+
+		if (ccin > 0)
+			ccin_version = FIELD_GET(CFFPS_CCIN_VERSION, ccin);
+
+		switch (ccin_version) {
+		default:
+		case CFFPS_CCIN_VERSION_1:
+			vs = cffps1;
+			break;
+		case CFFPS_CCIN_VERSION_2:
+			vs = cffps2;
+			break;
+		}
+
+		/* Set the client name to include the version number. */
+		snprintf(client->name, I2C_NAME_SIZE, "cffps%d", vs + 1);
+	}
 
 	client->dev.platform_data = &ibm_cffps_pdata;
 	rc = pmbus_do_probe(client, id, &ibm_cffps_info[vs]);
@@ -465,6 +489,7 @@ static int ibm_cffps_probe(struct i2c_client *client,
 static const struct i2c_device_id ibm_cffps_id[] = {
 	{ "ibm_cffps1", cffps1 },
 	{ "ibm_cffps2", cffps2 },
+	{ "ibm_cffps", cffps_unknown },
 	{}
 };
 MODULE_DEVICE_TABLE(i2c, ibm_cffps_id);
@@ -478,6 +503,10 @@ static int ibm_cffps_probe(struct i2c_client *client,
 		.compatible = "ibm,cffps2",
 		.data = (void *)cffps2
 	},
+	{
+		.compatible = "ibm,cffps",
+		.data = (void *)cffps_unknown
+	},
 	{}
 };
 MODULE_DEVICE_TABLE(of, ibm_cffps_of_match);
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH linux dev-5.3 2/2] ARM: dts: aspeed: rainier: Switch PSUs to unknown version
  2019-11-08 21:14 [PATCH linux dev-5.3 0/2] IBM CFFPS driver and Rainier devicetree updates Eddie James
  2019-11-08 21:14 ` [PATCH linux dev-5.3 1/2] hwmon: (pmbus/ibm-cffps) Add version detection capability Eddie James
@ 2019-11-08 21:14 ` Eddie James
  1 sibling, 0 replies; 3+ messages in thread
From: Eddie James @ 2019-11-08 21:14 UTC (permalink / raw)
  To: openbmc

Rainier can use either version of the IBM CFFPS, so don't set the
version in the devicetree so the driver can detect it automatically.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
---
 arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
index 0288709..08e1db0 100644
--- a/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
@@ -101,22 +101,22 @@
 	status = "okay";
 
 	power-supply@68 {
-		compatible = "ibm,cffps2";
+		compatible = "ibm,cffps";
 		reg = <0x68>;
 	};
 
 	power-supply@69 {
-		compatible = "ibm,cffps2";
+		compatible = "ibm,cffps";
 		reg = <0x69>;
 	};
 
 	power-supply@6a {
-		compatible = "ibm,cffps2";
+		compatible = "ibm,cffps";
 		reg = <0x6a>;
 	};
 
 	power-supply@6b {
-		compatible = "ibm,cffps2";
+		compatible = "ibm,cffps";
 		reg = <0x6b>;
 	};
 };
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-11-08 21:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-11-08 21:14 [PATCH linux dev-5.3 0/2] IBM CFFPS driver and Rainier devicetree updates Eddie James
2019-11-08 21:14 ` [PATCH linux dev-5.3 1/2] hwmon: (pmbus/ibm-cffps) Add version detection capability Eddie James
2019-11-08 21:14 ` [PATCH linux dev-5.3 2/2] ARM: dts: aspeed: rainier: Switch PSUs to unknown version Eddie James

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.