1*4882a593SmuzhiyunKernel driver ina209 2*4882a593Smuzhiyun==================== 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunSupported chips: 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun * Burr-Brown / Texas Instruments INA209 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun Prefix: 'ina209' 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun Addresses scanned: - 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun Datasheet: 13*4882a593Smuzhiyun https://www.ti.com/lit/gpn/ina209 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunAuthor: 16*4882a593Smuzhiyun - Paul Hays <Paul.Hays@cattail.ca> 17*4882a593Smuzhiyun - Ira W. Snyder <iws@ovro.caltech.edu> 18*4882a593Smuzhiyun - Guenter Roeck <linux@roeck-us.net> 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunDescription 22*4882a593Smuzhiyun----------- 23*4882a593Smuzhiyun 24*4882a593SmuzhiyunThe TI / Burr-Brown INA209 monitors voltage, current, and power on the high side 25*4882a593Smuzhiyunof a D.C. power supply. It can perform measurements and calculations in the 26*4882a593Smuzhiyunbackground to supply readings at any time. It includes a programmable 27*4882a593Smuzhiyuncalibration multiplier to scale the displayed current and power values. 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunSysfs entries 31*4882a593Smuzhiyun------------- 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunThe INA209 chip is highly configurable both via hardwiring and via 34*4882a593Smuzhiyunthe I2C bus. See the datasheet for details. 35*4882a593Smuzhiyun 36*4882a593SmuzhiyunThis tries to expose most monitoring features of the hardware via 37*4882a593Smuzhiyunsysfs. It does not support every feature of this chip. 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun======================= ======================================================= 40*4882a593Smuzhiyunin0_input shunt voltage (mV) 41*4882a593Smuzhiyunin0_input_highest shunt voltage historical maximum reading (mV) 42*4882a593Smuzhiyunin0_input_lowest shunt voltage historical minimum reading (mV) 43*4882a593Smuzhiyunin0_reset_history reset shunt voltage history 44*4882a593Smuzhiyunin0_max shunt voltage max alarm limit (mV) 45*4882a593Smuzhiyunin0_min shunt voltage min alarm limit (mV) 46*4882a593Smuzhiyunin0_crit_max shunt voltage crit max alarm limit (mV) 47*4882a593Smuzhiyunin0_crit_min shunt voltage crit min alarm limit (mV) 48*4882a593Smuzhiyunin0_max_alarm shunt voltage max alarm limit exceeded 49*4882a593Smuzhiyunin0_min_alarm shunt voltage min alarm limit exceeded 50*4882a593Smuzhiyunin0_crit_max_alarm shunt voltage crit max alarm limit exceeded 51*4882a593Smuzhiyunin0_crit_min_alarm shunt voltage crit min alarm limit exceeded 52*4882a593Smuzhiyun 53*4882a593Smuzhiyunin1_input bus voltage (mV) 54*4882a593Smuzhiyunin1_input_highest bus voltage historical maximum reading (mV) 55*4882a593Smuzhiyunin1_input_lowest bus voltage historical minimum reading (mV) 56*4882a593Smuzhiyunin1_reset_history reset bus voltage history 57*4882a593Smuzhiyunin1_max bus voltage max alarm limit (mV) 58*4882a593Smuzhiyunin1_min bus voltage min alarm limit (mV) 59*4882a593Smuzhiyunin1_crit_max bus voltage crit max alarm limit (mV) 60*4882a593Smuzhiyunin1_crit_min bus voltage crit min alarm limit (mV) 61*4882a593Smuzhiyunin1_max_alarm bus voltage max alarm limit exceeded 62*4882a593Smuzhiyunin1_min_alarm bus voltage min alarm limit exceeded 63*4882a593Smuzhiyunin1_crit_max_alarm bus voltage crit max alarm limit exceeded 64*4882a593Smuzhiyunin1_crit_min_alarm bus voltage crit min alarm limit exceeded 65*4882a593Smuzhiyun 66*4882a593Smuzhiyunpower1_input power measurement (uW) 67*4882a593Smuzhiyunpower1_input_highest power historical maximum reading (uW) 68*4882a593Smuzhiyunpower1_reset_history reset power history 69*4882a593Smuzhiyunpower1_max power max alarm limit (uW) 70*4882a593Smuzhiyunpower1_crit power crit alarm limit (uW) 71*4882a593Smuzhiyunpower1_max_alarm power max alarm limit exceeded 72*4882a593Smuzhiyunpower1_crit_alarm power crit alarm limit exceeded 73*4882a593Smuzhiyun 74*4882a593Smuzhiyuncurr1_input current measurement (mA) 75*4882a593Smuzhiyun 76*4882a593Smuzhiyunupdate_interval data conversion time; affects number of samples used 77*4882a593Smuzhiyun to average results for shunt and bus voltages. 78*4882a593Smuzhiyun======================= ======================================================= 79*4882a593Smuzhiyun 80*4882a593SmuzhiyunGeneral Remarks 81*4882a593Smuzhiyun--------------- 82*4882a593Smuzhiyun 83*4882a593SmuzhiyunThe power and current registers in this chip require that the calibration 84*4882a593Smuzhiyunregister is programmed correctly before they are used. Normally this is expected 85*4882a593Smuzhiyunto be done in the BIOS. In the absence of BIOS programming, the shunt resistor 86*4882a593Smuzhiyunvoltage can be provided using platform data. The driver uses platform data from 87*4882a593Smuzhiyunthe ina2xx driver for this purpose. If calibration register data is not provided 88*4882a593Smuzhiyunvia platform data, the driver checks if the calibration register has been 89*4882a593Smuzhiyunprogrammed (ie has a value not equal to zero). If so, this value is retained. 90*4882a593SmuzhiyunOtherwise, a default value reflecting a shunt resistor value of 10 mOhm is 91*4882a593Smuzhiyunprogrammed into the calibration register. 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun 94*4882a593SmuzhiyunOutput Pins 95*4882a593Smuzhiyun----------- 96*4882a593Smuzhiyun 97*4882a593SmuzhiyunOutput pin programming is a board feature which depends on the BIOS. It is 98*4882a593Smuzhiyunoutside the scope of a hardware monitoring driver to enable or disable output 99*4882a593Smuzhiyunpins. 100