Config max31785 based on devtree attrs
cover Config max31785 based on devtree attrs
Add optional property for max31785 in device tree to indicate that fan PWM should be set to 100% on fault. Driver references this property during initialization time to set fault response appropriately.
Christopher Bostic (3):
drivers/hwmon: Document optional dev tree property 'fault-max-fan' arch/arm/boot/dts: Add optional property for max31785 drivers/hwmon: max31785 Set fan fault response based on dev tree
Documentation/devicetree/bindings/hwmon/max31785.txt | 20 ++++++++++++++++++++ arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts | 1 + drivers/hwmon/max31785.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 0 deletions(-)
Signature · 1 line
1.8.2.2
PATCH 1/3 drivers/hwmon: Document optional dev tree property 'fault-max-fan'
Document new optional device tree property 'fault-max-fan'. This property indicates that the max31785 should be configured to drive fan with 100% PWM duty cycle on fault condition.
--- Documentation/devicetree/bindings/hwmon/max31785.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Documentation/devicetree/bindings/hwmon/max31785.txt
Documentation/devicetree/bindings/hwmon/max31785.txt new file +20 -0
@@ -0,0 +1,20 @@ +Bindings for MAX31785 I2C fan controller + +Reference: +[1] https://datasheets.maximintegrated.com/en/ds/MAX31785.pdf + +Required properties: +- compatible : "maxim,max31785" +- reg : I2C address, 0x52. + +Optional properties, default is to retain the chip's current setting: +- fault-max-fan : When present this property indicates to set fan to 100% PWM + duty cycle on FAULT condition. + +Example: + + max31785@52 { + compatible = "maxim,max31785"; + reg = <0x52>; + fault-max-fan; + };
Signature · 1 line
1.8.2.2
PATCH 2/3 arch/arm/boot/dts: Add optional property for max31785
In reply to Christopher BosticAdd new optional property 'fault-max-fan'. Indicates that the max31785 should be configured to set 100% PWM fan duty cycle on fault condition.
--- arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts | 1 + 1 file changed, 1 insertion(+)
arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts +1 -0
@@ -196,6 +196,7 @@ max31785@52 { compatible = "maxim,max31785"; reg = <0x52>; + fault-max-fan; }; dps310@76 {
Signature · 1 line
1.8.2.2
PATCH 3/3 drivers/hwmon: max31785 Set fan fault response based on dev tree
In reply to Christopher BosticCheck for the optional device tree property 'fault-max-fan'. If present, configure hardware for 100% PWM fan duty cycle on fault condition.
--- drivers/hwmon/max31785.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+)
drivers/hwmon/max31785.c +34 -0
@@ -38,6 +38,7 @@#define MAX31785_REG_MFR_ID 0x99#define MAX31785_REG_MFR_MODEL 0x9a#define MAX31785_REG_MFR_REVISION 0x9b +#define MAX31785_REG_MFR_FAULT_RESP 0xd9#define MAX31785_REG_MFR_FAN_CONFIG 0xf1#define MAX31785_REG_READ_FAN_PWM 0xf3
@@ -51,6 +52,9 @@/* Fan Status register bits */ #define MAX31785_FAN_STATUS_FAULT_MASK 0x80 +/* Fault response register bits */ +#define MAX31785_FAULT_RESP_PIN_MONITOR 0x01 +/* Fan Command constants */ #define MAX31785_FAN_COMMAND_PWM_RATIO 40
@@ -762,6 +766,32 @@ static int max31785_get_capabilities(struct max31785 *data)return 0 ; } +static int max31785_init_fault_resp (struct i2c_client *client) +{ +struct device_node *np = client->dev.of_node; +int rc; + +if (np &&of_get_property (np,"fault-max-fan" ,NULL )) { + +/* set max fans on fault */ + rc =max31785_set_page (client,0 ); +if (rc <0 ) +return rc; + + rc =i2c_smbus_read_byte_data (client, +MAX31785_REG_MFR_FAULT_RESP ); +if (rc <0 ) +return rc; + + rc |=MAX31785_FAULT_RESP_PIN_MONITOR ; + rc =i2c_smbus_write_byte_data (client, +MAX31785_REG_MFR_FAULT_RESP , rc); +return rc; + } + +return 0 ; +} +static int max31785_probe (struct i2c_client *client,const struct i2c_device_id *id) {
@@ -783,6 +813,10 @@ static int max31785_probe(struct i2c_client *client, data->client = client;mutex_init (&data->lock); + rc =max31785_init_fault_resp (client); +if (rc) +return rc; + rc =max31785_init_fans (data);if (rc)return rc;
Signature · 1 line
1.8.2.2