/* * IN: mV (0V to 4.08V) * REG: 16mV/bit */ static inline u8 IN_TO_REG(unsigned long val) { unsigned long nval = SENSORS_LIMIT(val, 0, 4080); return (nval + 8) / 16; }
/* * TEMP: mC (-128C to +127C) * REG: 1C/bit, two's complement */ static inline s8 TEMP_TO_REG(int val) { int nval = SENSORS_LIMIT(val, -128000, 127000) ; return nval < 0 ? (nval - 500) / 1000 : (nval + 500) / 1000; }
/* PWM: 0 - 255 per sensors documentation REG: (6.25% duty cycle per bit) */ static u8 ASB100_PWM_TO_REG(int pwm) { pwm = SENSORS_LIMIT(pwm, 0, 255); return (u8)(pwm / 16); }
/* TEMP: 0.001C/bit (-128C to +127C) REG: 1C/bit, two's complement */ static u8 TEMP_TO_REG(int temp) { int ntemp = SENSORS_LIMIT(temp, ASB100_TEMP_MIN, ASB100_TEMP_MAX); ntemp += (ntemp<0 ? -500 : 500); return (u8)(ntemp / 1000); }
/* IN: 1/1000 V (0V to 4.08V) REG: 16mV/bit */ static u8 IN_TO_REG(unsigned val) { unsigned nval = SENSORS_LIMIT(val, ASB100_IN_MIN, ASB100_IN_MAX); return (nval + 8) / 16; }
static inline u8 FAN_TO_REG(long rpm, int div) { if (rpm <= 0) return 255; return SENSORS_LIMIT((1350000 + rpm * div / 2) / (rpm * div), 1, 254); }