Lines Matching refs:value
655 static int sfp_hwmon_read_sensor(struct sfp *sfp, int reg, long *value)
664 *value = be16_to_cpu(val);
669 static void sfp_hwmon_to_rx_power(long *value)
671 *value = DIV_ROUND_CLOSEST(*value, 10);
675 long *value)
678 *value = DIV_ROUND_CLOSEST(*value * slope, 256) + offset;
681 static void sfp_hwmon_calibrate_temp(struct sfp *sfp, long *value)
684 be16_to_cpu(sfp->diag.cal_t_offset), value);
686 if (*value >= 0x8000)
687 *value -= 0x10000;
689 *value = DIV_ROUND_CLOSEST(*value * 1000, 256);
692 static void sfp_hwmon_calibrate_vcc(struct sfp *sfp, long *value)
695 be16_to_cpu(sfp->diag.cal_v_offset), value);
697 *value = DIV_ROUND_CLOSEST(*value, 10);
700 static void sfp_hwmon_calibrate_bias(struct sfp *sfp, long *value)
703 be16_to_cpu(sfp->diag.cal_txi_offset), value);
705 *value = DIV_ROUND_CLOSEST(*value, 500);
708 static void sfp_hwmon_calibrate_tx_power(struct sfp *sfp, long *value)
711 be16_to_cpu(sfp->diag.cal_txpwr_offset), value);
713 *value = DIV_ROUND_CLOSEST(*value, 10);
716 static int sfp_hwmon_read_temp(struct sfp *sfp, int reg, long *value)
720 err = sfp_hwmon_read_sensor(sfp, reg, value);
724 sfp_hwmon_calibrate_temp(sfp, value);
729 static int sfp_hwmon_read_vcc(struct sfp *sfp, int reg, long *value)
733 err = sfp_hwmon_read_sensor(sfp, reg, value);
737 sfp_hwmon_calibrate_vcc(sfp, value);
742 static int sfp_hwmon_read_bias(struct sfp *sfp, int reg, long *value)
746 err = sfp_hwmon_read_sensor(sfp, reg, value);
750 sfp_hwmon_calibrate_bias(sfp, value);
755 static int sfp_hwmon_read_tx_power(struct sfp *sfp, int reg, long *value)
759 err = sfp_hwmon_read_sensor(sfp, reg, value);
763 sfp_hwmon_calibrate_tx_power(sfp, value);
768 static int sfp_hwmon_read_rx_power(struct sfp *sfp, int reg, long *value)
772 err = sfp_hwmon_read_sensor(sfp, reg, value);
776 sfp_hwmon_to_rx_power(value);
781 static int sfp_hwmon_temp(struct sfp *sfp, u32 attr, long *value)
788 return sfp_hwmon_read_temp(sfp, SFP_TEMP, value);
791 *value = be16_to_cpu(sfp->diag.temp_low_alarm);
792 sfp_hwmon_calibrate_temp(sfp, value);
796 *value = be16_to_cpu(sfp->diag.temp_low_warn);
797 sfp_hwmon_calibrate_temp(sfp, value);
800 *value = be16_to_cpu(sfp->diag.temp_high_warn);
801 sfp_hwmon_calibrate_temp(sfp, value);
805 *value = be16_to_cpu(sfp->diag.temp_high_alarm);
806 sfp_hwmon_calibrate_temp(sfp, value);
814 *value = !!(status & SFP_ALARM0_TEMP_LOW);
822 *value = !!(status & SFP_WARN0_TEMP_LOW);
830 *value = !!(status & SFP_WARN0_TEMP_HIGH);
838 *value = !!(status & SFP_ALARM0_TEMP_HIGH);
847 static int sfp_hwmon_vcc(struct sfp *sfp, u32 attr, long *value)
854 return sfp_hwmon_read_vcc(sfp, SFP_VCC, value);
857 *value = be16_to_cpu(sfp->diag.volt_low_alarm);
858 sfp_hwmon_calibrate_vcc(sfp, value);
862 *value = be16_to_cpu(sfp->diag.volt_low_warn);
863 sfp_hwmon_calibrate_vcc(sfp, value);
867 *value = be16_to_cpu(sfp->diag.volt_high_warn);
868 sfp_hwmon_calibrate_vcc(sfp, value);
872 *value = be16_to_cpu(sfp->diag.volt_high_alarm);
873 sfp_hwmon_calibrate_vcc(sfp, value);
881 *value = !!(status & SFP_ALARM0_VCC_LOW);
889 *value = !!(status & SFP_WARN0_VCC_LOW);
897 *value = !!(status & SFP_WARN0_VCC_HIGH);
905 *value = !!(status & SFP_ALARM0_VCC_HIGH);
914 static int sfp_hwmon_bias(struct sfp *sfp, u32 attr, long *value)
921 return sfp_hwmon_read_bias(sfp, SFP_TX_BIAS, value);
924 *value = be16_to_cpu(sfp->diag.bias_low_alarm);
925 sfp_hwmon_calibrate_bias(sfp, value);
929 *value = be16_to_cpu(sfp->diag.bias_low_warn);
930 sfp_hwmon_calibrate_bias(sfp, value);
934 *value = be16_to_cpu(sfp->diag.bias_high_warn);
935 sfp_hwmon_calibrate_bias(sfp, value);
939 *value = be16_to_cpu(sfp->diag.bias_high_alarm);
940 sfp_hwmon_calibrate_bias(sfp, value);
948 *value = !!(status & SFP_ALARM0_TX_BIAS_LOW);
956 *value = !!(status & SFP_WARN0_TX_BIAS_LOW);
964 *value = !!(status & SFP_WARN0_TX_BIAS_HIGH);
972 *value = !!(status & SFP_ALARM0_TX_BIAS_HIGH);
981 static int sfp_hwmon_tx_power(struct sfp *sfp, u32 attr, long *value)
988 return sfp_hwmon_read_tx_power(sfp, SFP_TX_POWER, value);
991 *value = be16_to_cpu(sfp->diag.txpwr_low_alarm);
992 sfp_hwmon_calibrate_tx_power(sfp, value);
996 *value = be16_to_cpu(sfp->diag.txpwr_low_warn);
997 sfp_hwmon_calibrate_tx_power(sfp, value);
1001 *value = be16_to_cpu(sfp->diag.txpwr_high_warn);
1002 sfp_hwmon_calibrate_tx_power(sfp, value);
1006 *value = be16_to_cpu(sfp->diag.txpwr_high_alarm);
1007 sfp_hwmon_calibrate_tx_power(sfp, value);
1015 *value = !!(status & SFP_ALARM0_TXPWR_LOW);
1023 *value = !!(status & SFP_WARN0_TXPWR_LOW);
1031 *value = !!(status & SFP_WARN0_TXPWR_HIGH);
1039 *value = !!(status & SFP_ALARM0_TXPWR_HIGH);
1048 static int sfp_hwmon_rx_power(struct sfp *sfp, u32 attr, long *value)
1055 return sfp_hwmon_read_rx_power(sfp, SFP_RX_POWER, value);
1058 *value = be16_to_cpu(sfp->diag.rxpwr_low_alarm);
1059 sfp_hwmon_to_rx_power(value);
1063 *value = be16_to_cpu(sfp->diag.rxpwr_low_warn);
1064 sfp_hwmon_to_rx_power(value);
1068 *value = be16_to_cpu(sfp->diag.rxpwr_high_warn);
1069 sfp_hwmon_to_rx_power(value);
1073 *value = be16_to_cpu(sfp->diag.rxpwr_high_alarm);
1074 sfp_hwmon_to_rx_power(value);
1082 *value = !!(status & SFP_ALARM1_RXPWR_LOW);
1090 *value = !!(status & SFP_WARN1_RXPWR_LOW);
1098 *value = !!(status & SFP_WARN1_RXPWR_HIGH);
1106 *value = !!(status & SFP_ALARM1_RXPWR_HIGH);
1116 u32 attr, int channel, long *value)
1122 return sfp_hwmon_temp(sfp, attr, value);
1124 return sfp_hwmon_vcc(sfp, attr, value);
1126 return sfp_hwmon_bias(sfp, attr, value);
1130 return sfp_hwmon_tx_power(sfp, attr, value);
1132 return sfp_hwmon_rx_power(sfp, attr, value);