From 8524e563d3b4339826b9d8906b158a6a55e41d98 Mon Sep 17 00:00:00 2001 From: FuzailBrcm <51665572+FuzailBrcm@users.noreply.github.com> Date: Wed, 9 Aug 2023 03:29:36 +0530 Subject: [PATCH] PDDF: Supporting extra system fans in the common PDDF drivers (#15956) --- .../i2c/modules/fan/driver/pddf_fan_api.c | 36 ++++++++++ .../i2c/modules/fan/driver/pddf_fan_driver.c | 72 +++++++++++++++++++ .../i2c/modules/include/pddf_fan_driver.h | 24 +++++++ 3 files changed, 132 insertions(+) diff --git a/platform/pddf/i2c/modules/fan/driver/pddf_fan_api.c b/platform/pddf/i2c/modules/fan/driver/pddf_fan_api.c index 66bd2169c1..4b95060e3c 100644 --- a/platform/pddf/i2c/modules/fan/driver/pddf_fan_api.c +++ b/platform/pddf/i2c/modules/fan/driver/pddf_fan_api.c @@ -106,6 +106,18 @@ void get_fan_extra_default_sysfs(int idx, char *str) break; case FAN12_PRESENT: strcpy(str, "fan12_status"); + break; + case FAN13_PRESENT: + strcpy(str, "fan13_status"); + break; + case FAN14_PRESENT: + strcpy(str, "fan14_status"); + break; + case FAN15_PRESENT: + strcpy(str, "fan15_status"); + break; + case FAN16_PRESENT: + strcpy(str, "fan16_status"); break; default: break; @@ -242,6 +254,10 @@ ssize_t fan_show_default(struct device *dev, struct device_attribute *da, char * case FAN10_PRESENT: case FAN11_PRESENT: case FAN12_PRESENT: + case FAN13_PRESENT: + case FAN14_PRESENT: + case FAN15_PRESENT: + case FAN16_PRESENT: case FAN1_DIRECTION: case FAN2_DIRECTION: case FAN3_DIRECTION: @@ -254,6 +270,10 @@ ssize_t fan_show_default(struct device *dev, struct device_attribute *da, char * case FAN10_DIRECTION: case FAN11_DIRECTION: case FAN12_DIRECTION: + case FAN13_DIRECTION: + case FAN14_DIRECTION: + case FAN15_DIRECTION: + case FAN16_DIRECTION: case FAN1_INPUT: case FAN2_INPUT: case FAN3_INPUT: @@ -266,6 +286,10 @@ ssize_t fan_show_default(struct device *dev, struct device_attribute *da, char * case FAN10_INPUT: case FAN11_INPUT: case FAN12_INPUT: + case FAN13_INPUT: + case FAN14_INPUT: + case FAN15_INPUT: + case FAN16_INPUT: case FAN1_PWM: case FAN2_PWM: case FAN3_PWM: @@ -278,6 +302,10 @@ ssize_t fan_show_default(struct device *dev, struct device_attribute *da, char * case FAN10_PWM: case FAN11_PWM: case FAN12_PWM: + case FAN13_PWM: + case FAN14_PWM: + case FAN15_PWM: + case FAN16_PWM: case FAN1_FAULT: case FAN2_FAULT: case FAN3_FAULT: @@ -290,6 +318,10 @@ ssize_t fan_show_default(struct device *dev, struct device_attribute *da, char * case FAN10_FAULT: case FAN11_FAULT: case FAN12_FAULT: + case FAN13_FAULT: + case FAN14_FAULT: + case FAN15_FAULT: + case FAN16_FAULT: case FAN_DUTY_CYCLE: status = attr_info->val.intval; break; @@ -359,6 +391,10 @@ ssize_t fan_store_default(struct device *dev, struct device_attribute *da, const case FAN10_PWM: case FAN11_PWM: case FAN12_PWM: + case FAN13_PWM: + case FAN14_PWM: + case FAN15_PWM: + case FAN16_PWM: ret = kstrtoint(buf, 10, &val); if (ret) { diff --git a/platform/pddf/i2c/modules/fan/driver/pddf_fan_driver.c b/platform/pddf/i2c/modules/fan/driver/pddf_fan_driver.c index 6c72b4adc4..cf83724d1f 100644 --- a/platform/pddf/i2c/modules/fan/driver/pddf_fan_driver.c +++ b/platform/pddf/i2c/modules/fan/driver/pddf_fan_driver.c @@ -77,6 +77,14 @@ FAN_SYSFS_ATTR_DATA data_fan11_present = {FAN11_PRESENT, S_IRUGO, fan_show_defau EXPORT_SYMBOL(data_fan11_present); FAN_SYSFS_ATTR_DATA data_fan12_present = {FAN12_PRESENT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_present_default, NULL, NULL, NULL, NULL, NULL, NULL}; EXPORT_SYMBOL(data_fan12_present); +FAN_SYSFS_ATTR_DATA data_fan13_present = {FAN13_PRESENT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_present_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan13_present); +FAN_SYSFS_ATTR_DATA data_fan14_present = {FAN14_PRESENT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_present_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan14_present); +FAN_SYSFS_ATTR_DATA data_fan15_present = {FAN15_PRESENT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_present_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan15_present); +FAN_SYSFS_ATTR_DATA data_fan16_present = {FAN16_PRESENT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_present_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan16_present); FAN_SYSFS_ATTR_DATA data_fan1_direction = {FAN1_DIRECTION, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_direction_default, NULL, NULL, NULL, NULL, NULL, NULL}; @@ -103,6 +111,14 @@ FAN_SYSFS_ATTR_DATA data_fan11_direction = {FAN11_DIRECTION, S_IRUGO, fan_show_d EXPORT_SYMBOL(data_fan11_direction); FAN_SYSFS_ATTR_DATA data_fan12_direction = {FAN12_DIRECTION, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_direction_default, NULL, NULL, NULL, NULL, NULL, NULL}; EXPORT_SYMBOL(data_fan12_direction); +FAN_SYSFS_ATTR_DATA data_fan13_direction = {FAN13_DIRECTION, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_direction_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan13_direction); +FAN_SYSFS_ATTR_DATA data_fan14_direction = {FAN14_DIRECTION, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_direction_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan14_direction); +FAN_SYSFS_ATTR_DATA data_fan15_direction = {FAN15_DIRECTION, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_direction_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan15_direction); +FAN_SYSFS_ATTR_DATA data_fan16_direction = {FAN16_DIRECTION, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_direction_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan16_direction); FAN_SYSFS_ATTR_DATA data_fan1_input = {FAN1_INPUT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_rpm_default, NULL, NULL, NULL, NULL, NULL, NULL}; @@ -129,6 +145,14 @@ FAN_SYSFS_ATTR_DATA data_fan11_input = {FAN11_INPUT, S_IRUGO, fan_show_default, EXPORT_SYMBOL(data_fan11_input); FAN_SYSFS_ATTR_DATA data_fan12_input = {FAN12_INPUT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_rpm_default, NULL, NULL, NULL, NULL, NULL, NULL}; EXPORT_SYMBOL(data_fan12_input); +FAN_SYSFS_ATTR_DATA data_fan13_input = {FAN13_INPUT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_rpm_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan13_input); +FAN_SYSFS_ATTR_DATA data_fan14_input = {FAN14_INPUT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_rpm_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan14_input); +FAN_SYSFS_ATTR_DATA data_fan15_input = {FAN15_INPUT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_rpm_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan15_input); +FAN_SYSFS_ATTR_DATA data_fan16_input = {FAN16_INPUT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_rpm_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan16_input); FAN_SYSFS_ATTR_DATA data_fan1_pwm = {FAN1_PWM, S_IRUGO | S_IWUSR, fan_show_default, NULL, sonic_i2c_get_fan_pwm_default, NULL, fan_store_default, NULL, sonic_i2c_set_fan_pwm_default, NULL, NULL}; @@ -155,6 +179,14 @@ FAN_SYSFS_ATTR_DATA data_fan11_pwm = {FAN11_PWM, S_IRUGO | S_IWUSR, fan_show_def EXPORT_SYMBOL(data_fan11_pwm); FAN_SYSFS_ATTR_DATA data_fan12_pwm = {FAN12_PWM, S_IRUGO | S_IWUSR, fan_show_default, NULL, sonic_i2c_get_fan_pwm_default, NULL, fan_store_default, NULL, sonic_i2c_set_fan_pwm_default, NULL, NULL}; EXPORT_SYMBOL(data_fan12_pwm); +FAN_SYSFS_ATTR_DATA data_fan13_pwm = {FAN13_PWM, S_IRUGO | S_IWUSR, fan_show_default, NULL, sonic_i2c_get_fan_pwm_default, NULL, fan_store_default, NULL, sonic_i2c_set_fan_pwm_default, NULL, NULL}; +EXPORT_SYMBOL(data_fan13_pwm); +FAN_SYSFS_ATTR_DATA data_fan14_pwm = {FAN14_PWM, S_IRUGO | S_IWUSR, fan_show_default, NULL, sonic_i2c_get_fan_pwm_default, NULL, fan_store_default, NULL, sonic_i2c_set_fan_pwm_default, NULL, NULL}; +EXPORT_SYMBOL(data_fan14_pwm); +FAN_SYSFS_ATTR_DATA data_fan15_pwm = {FAN15_PWM, S_IRUGO | S_IWUSR, fan_show_default, NULL, sonic_i2c_get_fan_pwm_default, NULL, fan_store_default, NULL, sonic_i2c_set_fan_pwm_default, NULL, NULL}; +EXPORT_SYMBOL(data_fan15_pwm); +FAN_SYSFS_ATTR_DATA data_fan16_pwm = {FAN16_PWM, S_IRUGO | S_IWUSR, fan_show_default, NULL, sonic_i2c_get_fan_pwm_default, NULL, fan_store_default, NULL, sonic_i2c_set_fan_pwm_default, NULL, NULL}; +EXPORT_SYMBOL(data_fan16_pwm); FAN_SYSFS_ATTR_DATA data_fan1_fault = {FAN1_FAULT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_fault_default, NULL, NULL, NULL, NULL, NULL, NULL}; @@ -181,6 +213,14 @@ FAN_SYSFS_ATTR_DATA data_fan11_fault = {FAN11_FAULT, S_IRUGO, fan_show_default, EXPORT_SYMBOL(data_fan11_fault); FAN_SYSFS_ATTR_DATA data_fan12_fault = {FAN12_FAULT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_fault_default, NULL, NULL, NULL, NULL, NULL, NULL}; EXPORT_SYMBOL(data_fan12_fault); +FAN_SYSFS_ATTR_DATA data_fan13_fault = {FAN13_FAULT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_fault_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan13_fault); +FAN_SYSFS_ATTR_DATA data_fan14_fault = {FAN14_FAULT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_fault_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan14_fault); +FAN_SYSFS_ATTR_DATA data_fan15_fault = {FAN15_FAULT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_fault_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan15_fault); +FAN_SYSFS_ATTR_DATA data_fan16_fault = {FAN16_FAULT, S_IRUGO, fan_show_default, NULL, sonic_i2c_get_fan_fault_default, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan16_fault); /* Derived attributes like status (should be derived from 'presence' and 'speed'/'fault' attributes) etc */ FAN_SYSFS_ATTR_DATA data_fan1_status = {FAN1_STATUS, S_IRUGO, fan_show_status, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; @@ -207,6 +247,14 @@ FAN_SYSFS_ATTR_DATA data_fan11_status = {FAN11_STATUS, S_IRUGO, fan_show_status, EXPORT_SYMBOL(data_fan11_status); FAN_SYSFS_ATTR_DATA data_fan12_status = {FAN12_STATUS, S_IRUGO, fan_show_status, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; EXPORT_SYMBOL(data_fan12_status); +FAN_SYSFS_ATTR_DATA data_fan13_status = {FAN13_STATUS, S_IRUGO, fan_show_status, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan13_status); +FAN_SYSFS_ATTR_DATA data_fan14_status = {FAN14_STATUS, S_IRUGO, fan_show_status, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan14_status); +FAN_SYSFS_ATTR_DATA data_fan15_status = {FAN15_STATUS, S_IRUGO, fan_show_status, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan15_status); +FAN_SYSFS_ATTR_DATA data_fan16_status = {FAN16_STATUS, S_IRUGO, fan_show_status, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; +EXPORT_SYMBOL(data_fan16_status); /* Some generic fan attributes */ FAN_SYSFS_ATTR_DATA data_fan_duty_cycle = {FAN_DUTY_CYCLE, S_IRUGO | S_IWUSR, fan_show_default, NULL, sonic_i2c_get_fan_dc_default, NULL, fan_store_default, NULL, sonic_i2c_set_fan_dc_default, NULL, NULL}; @@ -238,6 +286,10 @@ FAN_SYSFS_ATTR_DATA_ENTRY fan_sysfs_attr_data_tbl[]= { "fan10_present", &data_fan10_present}, { "fan11_present", &data_fan11_present}, { "fan12_present", &data_fan12_present}, + { "fan13_present", &data_fan13_present}, + { "fan14_present", &data_fan14_present}, + { "fan15_present", &data_fan15_present}, + { "fan16_present", &data_fan16_present}, { "fan1_direction", &data_fan1_direction}, { "fan2_direction", &data_fan2_direction}, { "fan3_direction", &data_fan3_direction}, @@ -250,6 +302,10 @@ FAN_SYSFS_ATTR_DATA_ENTRY fan_sysfs_attr_data_tbl[]= { "fan10_direction", &data_fan10_direction}, { "fan11_direction", &data_fan11_direction}, { "fan12_direction", &data_fan12_direction}, + { "fan13_direction", &data_fan13_direction}, + { "fan14_direction", &data_fan14_direction}, + { "fan15_direction", &data_fan15_direction}, + { "fan16_direction", &data_fan16_direction}, { "fan1_input", &data_fan1_input}, { "fan2_input", &data_fan2_input}, { "fan3_input", &data_fan3_input}, @@ -262,6 +318,10 @@ FAN_SYSFS_ATTR_DATA_ENTRY fan_sysfs_attr_data_tbl[]= { "fan10_input", &data_fan10_input}, { "fan11_input", &data_fan11_input}, { "fan12_input", &data_fan12_input}, + { "fan13_input", &data_fan13_input}, + { "fan14_input", &data_fan14_input}, + { "fan15_input", &data_fan15_input}, + { "fan16_input", &data_fan16_input}, { "fan1_pwm", &data_fan1_pwm}, { "fan2_pwm", &data_fan2_pwm}, { "fan3_pwm", &data_fan3_pwm}, @@ -274,6 +334,10 @@ FAN_SYSFS_ATTR_DATA_ENTRY fan_sysfs_attr_data_tbl[]= { "fan10_pwm", &data_fan10_pwm}, { "fan11_pwm", &data_fan11_pwm}, { "fan12_pwm", &data_fan12_pwm}, + { "fan13_pwm", &data_fan13_pwm}, + { "fan14_pwm", &data_fan14_pwm}, + { "fan15_pwm", &data_fan15_pwm}, + { "fan16_pwm", &data_fan16_pwm}, { "fan1_fault", &data_fan1_fault}, { "fan2_fault", &data_fan2_fault}, { "fan3_fault", &data_fan3_fault}, @@ -286,6 +350,10 @@ FAN_SYSFS_ATTR_DATA_ENTRY fan_sysfs_attr_data_tbl[]= { "fan10_fault", &data_fan10_fault}, { "fan11_fault", &data_fan11_fault}, { "fan12_fault", &data_fan12_fault}, + { "fan13_fault", &data_fan13_fault}, + { "fan14_fault", &data_fan14_fault}, + { "fan15_fault", &data_fan15_fault}, + { "fan16_fault", &data_fan16_fault}, { "fan1_status", &data_fan1_status}, { "fan2_status", &data_fan2_status}, { "fan3_status", &data_fan3_status}, @@ -298,6 +366,10 @@ FAN_SYSFS_ATTR_DATA_ENTRY fan_sysfs_attr_data_tbl[]= { "fan10_status", &data_fan10_status}, { "fan11_status", &data_fan11_status}, { "fan12_status", &data_fan12_status}, + { "fan13_status", &data_fan13_status}, + { "fan14_status", &data_fan14_status}, + { "fan15_status", &data_fan15_status}, + { "fan16_status", &data_fan16_status}, { "fan_duty_cycle", &data_fan_duty_cycle}, { "fan_model_name", &data_fan_model_name}, { "fan_serial_num", &data_fan_serial_num}, diff --git a/platform/pddf/i2c/modules/include/pddf_fan_driver.h b/platform/pddf/i2c/modules/include/pddf_fan_driver.h index ca5b73da27..07e1339a85 100644 --- a/platform/pddf/i2c/modules/include/pddf_fan_driver.h +++ b/platform/pddf/i2c/modules/include/pddf_fan_driver.h @@ -32,6 +32,10 @@ enum fan_sysfs_attributes { FAN10_PRESENT, FAN11_PRESENT, FAN12_PRESENT, + FAN13_PRESENT, + FAN14_PRESENT, + FAN15_PRESENT, + FAN16_PRESENT, FAN1_DIRECTION, FAN2_DIRECTION, FAN3_DIRECTION, @@ -44,6 +48,10 @@ enum fan_sysfs_attributes { FAN10_DIRECTION, FAN11_DIRECTION, FAN12_DIRECTION, + FAN13_DIRECTION, + FAN14_DIRECTION, + FAN15_DIRECTION, + FAN16_DIRECTION, FAN1_INPUT, FAN2_INPUT, FAN3_INPUT, @@ -56,6 +64,10 @@ enum fan_sysfs_attributes { FAN10_INPUT, FAN11_INPUT, FAN12_INPUT, + FAN13_INPUT, + FAN14_INPUT, + FAN15_INPUT, + FAN16_INPUT, FAN1_PWM, FAN2_PWM, FAN3_PWM, @@ -68,6 +80,10 @@ enum fan_sysfs_attributes { FAN10_PWM, FAN11_PWM, FAN12_PWM, + FAN13_PWM, + FAN14_PWM, + FAN15_PWM, + FAN16_PWM, FAN1_FAULT, FAN2_FAULT, FAN3_FAULT, @@ -80,6 +96,10 @@ enum fan_sysfs_attributes { FAN10_FAULT, FAN11_FAULT, FAN12_FAULT, + FAN13_FAULT, + FAN14_FAULT, + FAN15_FAULT, + FAN16_FAULT, FAN1_STATUS, FAN2_STATUS, FAN3_STATUS, @@ -92,6 +112,10 @@ enum fan_sysfs_attributes { FAN10_STATUS, FAN11_STATUS, FAN12_STATUS, + FAN13_STATUS, + FAN14_STATUS, + FAN15_STATUS, + FAN16_STATUS, FAN_DUTY_CYCLE, FAN_MODEL_NAME, FAN_SERIAL_NUM,