* [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.