sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/translations/zh_CN/hwmon/lm93modnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/zh_TW/hwmon/lm93modnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/it_IT/hwmon/lm93modnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ja_JP/hwmon/lm93modnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/ko_KR/hwmon/lm93modnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget/translations/sp_SP/hwmon/lm93modnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hKernel driver lm93h]hKernel driver lm93}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh8/var/lib/git/docbuild/linux/Documentation/hwmon/lm93.rsthKubh paragraph)}(hSupported chips:h]hSupported chips:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh block_quote)}(hX* National Semiconductor LM93 Prefix 'lm93' Addresses scanned: I2C 0x2c-0x2e Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdf * National Semiconductor LM94 Prefix 'lm94' Addresses scanned: I2C 0x2c-0x2e Datasheet: http://www.national.com/ds.cgi/LM/LM94.pdf h]h bullet_list)}(hhh](h list_item)}(hNational Semiconductor LM93 Prefix 'lm93' Addresses scanned: I2C 0x2c-0x2e Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdf h](h)}(hNational Semiconductor LM93h]hNational Semiconductor LM93}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubh)}(h Prefix 'lm93'h]hPrefix ‘lm93’}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubh)}(h Addresses scanned: I2C 0x2c-0x2eh]h Addresses scanned: I2C 0x2c-0x2e}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubh)}(h5Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdfh](h Datasheet: }(hjhhhNhNubh reference)}(h*http://www.national.com/ds.cgi/LM/LM93.pdfh]h*http://www.national.com/ds.cgi/LM/LM93.pdf}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j hjubeh}(h]h ]h"]h$]h&]uh1hhhhK hhubeh}(h]h ]h"]h$]h&]uh1hhhubh)}(hNational Semiconductor LM94 Prefix 'lm94' Addresses scanned: I2C 0x2c-0x2e Datasheet: http://www.national.com/ds.cgi/LM/LM94.pdf h](h)}(hNational Semiconductor LM94h]hNational Semiconductor LM94}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubh)}(h Prefix 'lm94'h]hPrefix ‘lm94’}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubh)}(h Addresses scanned: I2C 0x2c-0x2eh]h Addresses scanned: I2C 0x2c-0x2e}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubh)}(h5Datasheet: http://www.national.com/ds.cgi/LM/LM94.pdfh](h Datasheet: }(hjUhhhNhNubj )}(h*http://www.national.com/ds.cgi/LM/LM94.pdfh]h*http://www.national.com/ds.cgi/LM/LM94.pdf}(hj]hhhNhNubah}(h]h ]h"]h$]h&]refurij_uh1j hjUubeh}(h]h ]h"]h$]h&]uh1hhhhKhj'ubeh}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]bullet*uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhdefinition_list)}(hhh]hdefinition_list_item)}(hAuthors: - Mark M. Hoffman - Ported to 2.6 by Eric J. Bowersox - Adapted to 2.6.20 by Carsten Emde - Modified for mainline integration by Hans J. Koch h](hterm)}(hAuthors:h]hAuthors:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjubh definition)}(hhh]h)}(hhh](h)}(h(Mark M. Hoffman h]h)}(hjh](hMark M. Hoffman <}(hjhhhNhNubj )}(hmhoffman@lightlink.comh]hmhoffman@lightlink.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mhoffman@lightlink.comuh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h4Ported to 2.6 by Eric J. Bowersox h]h)}(hjh](h#Ported to 2.6 by Eric J. Bowersox <}(hjhhhNhNubj )}(hericb@aspsys.comh]hericb@aspsys.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:ericb@aspsys.comuh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h0Adapted to 2.6.20 by Carsten Emde h]h)}(hjh](h#Adapted to 2.6.20 by Carsten Emde <}(hjhhhNhNubj )}(h ce@osadl.orgh]h ce@osadl.org}(hj hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:ce@osadl.orguh1j hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hEModified for mainline integration by Hans J. Koch h]h)}(hDModified for mainline integration by Hans J. Koch h](h3Modified for mainline integration by Hans J. Koch <}(hj.hhhNhNubj )}(hhjk@hansjkoch.deh]hhjk@hansjkoch.de}(hj6hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:hjk@hansjkoch.deuh1j hj.ubh>}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj*ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]j~-uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhhhNhNubh)}(hhh](h)}(hModule Parametersh]hModule Parameters}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohhhhhKubh)}(hhh](h)}(hKinit: integer Set to non-zero to force some initializations (default is 0).h]h)}(hKinit: integer Set to non-zero to force some initializations (default is 0).h]hKinit: integer Set to non-zero to force some initializations (default is 0).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hdisable_block: integer A "0" allows SMBus block data transactions if the host supports them. A "1" disables SMBus block data transactions. The default is 0.h]h)}(hdisable_block: integer A "0" allows SMBus block data transactions if the host supports them. A "1" disables SMBus block data transactions. The default is 0.h]hdisable_block: integer A “0” allows SMBus block data transactions if the host supports them. A “1” disables SMBus block data transactions. The default is 0.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hXvccp_limit_type: integer array (2) Configures in7 and in8 limit type, where 0 means absolute and non-zero means relative. "Relative" here refers to "Dynamic Vccp Monitoring using VID" from the datasheet. It greatly simplifies the interface to allow only one set of limits (absolute or relative) to be in operation at a time (even though the hardware is capable of enabling both). There's not a compelling use case for enabling both at once, anyway. The default is "0,0".h]h)}(hXvccp_limit_type: integer array (2) Configures in7 and in8 limit type, where 0 means absolute and non-zero means relative. "Relative" here refers to "Dynamic Vccp Monitoring using VID" from the datasheet. It greatly simplifies the interface to allow only one set of limits (absolute or relative) to be in operation at a time (even though the hardware is capable of enabling both). There's not a compelling use case for enabling both at once, anyway. The default is "0,0".h]hXvccp_limit_type: integer array (2) Configures in7 and in8 limit type, where 0 means absolute and non-zero means relative. “Relative” here refers to “Dynamic Vccp Monitoring using VID” from the datasheet. It greatly simplifies the interface to allow only one set of limits (absolute or relative) to be in operation at a time (even though the hardware is capable of enabling both). There’s not a compelling use case for enabling both at once, anyway. The default is “0,0”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK%hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubh)}(hXvvid_agtl: integer A "0" configures the VID pins for V(ih) = 2.1V min, V(il) = 0.8V max. A "1" configures the VID pins for V(ih) = 0.8V min, V(il) = 0.4V max. (The latter setting is referred to as AGTL+ Compatible in the datasheet.) I.e. this parameter controls the VID pin input thresholds; if your VID inputs are not working, try changing this. The default value is "0". h]h)}(hXtvid_agtl: integer A "0" configures the VID pins for V(ih) = 2.1V min, V(il) = 0.8V max. A "1" configures the VID pins for V(ih) = 0.8V min, V(il) = 0.4V max. (The latter setting is referred to as AGTL+ Compatible in the datasheet.) I.e. this parameter controls the VID pin input thresholds; if your VID inputs are not working, try changing this. The default value is "0".h]hXvid_agtl: integer A “0” configures the VID pins for V(ih) = 2.1V min, V(il) = 0.8V max. A “1” configures the VID pins for V(ih) = 0.8V min, V(il) = 0.4V max. (The latter setting is referred to as AGTL+ Compatible in the datasheet.) I.e. this parameter controls the VID pin input thresholds; if your VID inputs are not working, try changing this. The default value is “0”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjubah}(h]h ]h"]h$]h&]uh1hhjhhhhhNubeh}(h]h ]h"]h$]h&]j~juh1hhhhK hjohhubeh}(h]module-parametersah ]h"]module parametersah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHardware Descriptionh]hHardware Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK6ubh)}(h(from the datasheet)h]h(from the datasheet)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubh)}(hXThe LM93 hardware monitor has a two wire digital interface compatible with SMBus 2.0. Using an 8-bit ADC, the LM93 measures the temperature of two remote diode connected transistors as well as its own die and 16 power supply voltages. To set fan speed, the LM93 has two PWM outputs that are each controlled by up to four temperature zones. The fancontrol algorithm is lookup table based. The LM93 includes a digital filter that can be invoked to smooth temperature readings for better control of fan speed. The LM93 has four tachometer inputs to measure fan speed. Limit and status registers for all measured values are included. The LM93 builds upon the functionality of previous motherboard management ASICs and uses some of the LM85's features (i.e. smart tachometer mode). It also adds measurement and control support for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual processor Xeon class motherboard with a minimum of external components.h]hXThe LM93 hardware monitor has a two wire digital interface compatible with SMBus 2.0. Using an 8-bit ADC, the LM93 measures the temperature of two remote diode connected transistors as well as its own die and 16 power supply voltages. To set fan speed, the LM93 has two PWM outputs that are each controlled by up to four temperature zones. The fancontrol algorithm is lookup table based. The LM93 includes a digital filter that can be invoked to smooth temperature readings for better control of fan speed. The LM93 has four tachometer inputs to measure fan speed. Limit and status registers for all measured values are included. The LM93 builds upon the functionality of previous motherboard management ASICs and uses some of the LM85’s features (i.e. smart tachometer mode). It also adds measurement and control support for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual processor Xeon class motherboard with a minimum of external components.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjhhubh)}(heLM94 is also supported in LM93 compatible mode. Extra sensors and features of LM94 are not supported.h]heLM94 is also supported in LM93 compatible mode. Extra sensors and features of LM94 are not supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjhhubeh}(h]hardware-descriptionah ]h"]hardware descriptionah$]h&]uh1hhhhhhhhK6ubh)}(hhh](h)}(hUser Interfaceh]hUser Interface}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hhhhhKMubh)}(hhh](h)}(h#PROCHOTh]h#PROCHOT}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhhhhhKPubh)}(hXThe LM93 can monitor two #PROCHOT signals. The results are found in the sysfs files prochot1, prochot2, prochot1_avg, prochot2_avg, prochot1_max, and prochot2_max. prochot1_max and prochot2_max contain the user limits for #PROCHOT1 and #PROCHOT2, respectively. prochot1 and prochot2 contain the current readings for the most recent complete time interval. The value of prochot1_avg and prochot2_avg is something like a 2 period exponential moving average (but not quite - check the datasheet). Note that this third value is calculated by the chip itself. All values range from 0-255 where 0 indicates no throttling, and 255 indicates > 99.6%.h]hXThe LM93 can monitor two #PROCHOT signals. The results are found in the sysfs files prochot1, prochot2, prochot1_avg, prochot2_avg, prochot1_max, and prochot2_max. prochot1_max and prochot2_max contain the user limits for #PROCHOT1 and #PROCHOT2, respectively. prochot1 and prochot2 contain the current readings for the most recent complete time interval. The value of prochot1_avg and prochot2_avg is something like a 2 period exponential moving average (but not quite - check the datasheet). Note that this third value is calculated by the chip itself. All values range from 0-255 where 0 indicates no throttling, and 255 indicates > 99.6%.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjEhhubh)}(hXThe monitoring intervals for the two #PROCHOT signals is also configurable. These intervals can be found in the sysfs files prochot1_interval and prochot2_interval. The values in these files specify the intervals for #P1_PROCHOT and #P2_PROCHOT, respectively. Selecting a value not in this list will cause the driver to use the next largest interval. The available intervals are (in seconds):h]hXThe monitoring intervals for the two #PROCHOT signals is also configurable. These intervals can be found in the sysfs files prochot1_interval and prochot2_interval. The values in these files specify the intervals for #P1_PROCHOT and #P2_PROCHOT, respectively. Selecting a value not in this list will cause the driver to use the next largest interval. The available intervals are (in seconds):}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK\hjEhhubj)}(hhh]j)}(hK#PROCHOT intervals: 0.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372 h](j)}(h#PROCHOT intervals:h]h#PROCHOT intervals:}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKdhjuubj)}(hhh]h)}(h60.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372h]h60.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhhhKdhjrubah}(h]h ]h"]h$]h&]uh1jhjEhhhhhNubh)}(hX It is possible to configure the LM93 to logically short the two #PROCHOT signals. I.e. when #P1_PROCHOT is asserted, the LM93 will automatically assert #P2_PROCHOT, and vice-versa. This mode is enabled by writing a non-zero integer to the sysfs file prochot_short.h]hX It is possible to configure the LM93 to logically short the two #PROCHOT signals. I.e. when #P1_PROCHOT is asserted, the LM93 will automatically assert #P2_PROCHOT, and vice-versa. This mode is enabled by writing a non-zero integer to the sysfs file prochot_short.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjEhhubh)}(hX"The LM93 can also override the #PROCHOT pins by driving a PWM signal onto one or both of them. When overridden, the signal has a period of 3.56 ms, a minimum pulse width of 5 clocks (at 22.5kHz => 6.25% duty cycle), and a maximum pulse width of 80 clocks (at 22.5kHz => 99.88% duty cycle).h]hX"The LM93 can also override the #PROCHOT pins by driving a PWM signal onto one or both of them. When overridden, the signal has a period of 3.56 ms, a minimum pulse width of 5 clocks (at 22.5kHz => 6.25% duty cycle), and a maximum pulse width of 80 clocks (at 22.5kHz => 99.88% duty cycle).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjEhhubh)}(hXThe sysfs files prochot1_override and prochot2_override contain boolean integers which enable or disable the override function for #P1_PROCHOT and #P2_PROCHOT, respectively. The sysfs file prochot_override_duty_cycle contains a value controlling the duty cycle for the PWM signal used when the override function is enabled. This value ranges from 0 to 15, with 0 indicating minimum duty cycle and 15 indicating maximum.h]hXThe sysfs files prochot1_override and prochot2_override contain boolean integers which enable or disable the override function for #P1_PROCHOT and #P2_PROCHOT, respectively. The sysfs file prochot_override_duty_cycle contains a value controlling the duty cycle for the PWM signal used when the override function is enabled. This value ranges from 0 to 15, with 0 indicating minimum duty cycle and 15 indicating maximum.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjEhhubeh}(h]prochotah ]h"]#prochotah$]h&]uh1hhj4hhhhhKPubh)}(hhh](h)}(h#VRD_HOTh]h#VRD_HOT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKxubh)}(hThe LM93 can monitor two #VRD_HOT signals. The results are found in the sysfs files vrdhot1 and vrdhot2. There is one value per file: a boolean for which 1 indicates #VRD_HOT is asserted and 0 indicates it is negated. These files are read-only.h]hThe LM93 can monitor two #VRD_HOT signals. The results are found in the sysfs files vrdhot1 and vrdhot2. There is one value per file: a boolean for which 1 indicates #VRD_HOT is asserted and 0 indicates it is negated. These files are read-only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKzhjhhubh)}(h&Smart Tach Mode (from the datasheet)::h]h%Smart Tach Mode (from the datasheet):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(hX'If a fan is driven using a low-side drive PWM, the tachometer output of the fan is corrupted. The LM93 includes smart tachometer circuitry that allows an accurate tachometer reading to be achieved despite the signal corruption. In smart tach mode all four signals are measured within 4 seconds.h]hX'If a fan is driven using a low-side drive PWM, the tachometer output of the fan is corrupted. The LM93 includes smart tachometer circuitry that allows an accurate tachometer reading to be achieved despite the signal corruption. In smart tach mode all four signals are measured within 4 seconds.}hj sbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1j hhhKhjhhubh)}(hXSmart tach mode is enabled by the driver by writing 1 or 2 (associating the fan tachometer with a pwm) to the sysfs file fan_smart_tach. A zero will disable the function for that fan. Note that Smart tach mode cannot be enabled if the PWM output frequency is 22500 Hz (see below).h]hXSmart tach mode is enabled by the driver by writing 1 or 2 (associating the fan tachometer with a pwm) to the sysfs file fan_smart_tach. A zero will disable the function for that fan. Note that Smart tach mode cannot be enabled if the PWM output frequency is 22500 Hz (see below).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]vrd-hotah ]h"]#vrd_hotah$]h&]uh1hhj4hhhhhKxubh)}(hhh](h)}(h Manual PWMh]h Manual PWM}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hhhhhKubh)}(hX The LM93 has a fixed or override mode for the two PWM outputs (although, there are still some conditions that will override even this mode - see section 15.10.6 of the datasheet for details.) The sysfs files pwm1_override and pwm2_override are used to enable this mode; each is a boolean integer where 0 disables and 1 enables the manual control mode. The sysfs files pwm1 and pwm2 are used to set the manual duty cycle; each is an integer (0-255) where 0 is 0% duty cycle, and 255 is 100%. Note that the duty cycle values are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value. Also note: when manual PWM mode is disabled, the value of pwm1 and pwm2 indicates the current duty cycle chosen by the h/w.h]hX The LM93 has a fixed or override mode for the two PWM outputs (although, there are still some conditions that will override even this mode - see section 15.10.6 of the datasheet for details.) The sysfs files pwm1_override and pwm2_override are used to enable this mode; each is a boolean integer where 0 disables and 1 enables the manual control mode. The sysfs files pwm1 and pwm2 are used to set the manual duty cycle; each is an integer (0-255) where 0 is 0% duty cycle, and 255 is 100%. Note that the duty cycle values are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value. Also note: when manual PWM mode is disabled, the value of pwm1 and pwm2 indicates the current duty cycle chosen by the h/w.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1hhubeh}(h] manual-pwmah ]h"] manual pwmah$]h&]uh1hhj4hhhhhKubh)}(hhh](h)}(hPWM Output Frequencyh]hPWM Output Frequency}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhhhhhKubh)}(hXThe LM93 supports several different frequencies for the PWM output channels. The sysfs files pwm1_freq and pwm2_freq are used to select the frequency. The frequency values are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value. Also note that this parameter has implications for the Smart Tach Mode (see above).h]hXThe LM93 supports several different frequencies for the PWM output channels. The sysfs files pwm1_freq and pwm2_freq are used to select the frequency. The frequency values are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value. Also note that this parameter has implications for the Smart Tach Mode (see above).}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubj)}(hhh]j)}(hLPWM Output Frequencies (in Hz): 12, 36, 48, 60, 72, 84, 96, 22500 (default) h](j)}(hPWM Output Frequencies (in Hz):h]hPWM Output Frequencies (in Hz):}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhjzubj)}(hhh]h)}(h+12, 36, 48, 60, 72, 84, 96, 22500 (default)h]h+12, 36, 48, 60, 72, 84, 96, 22500 (default)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]uh1jhhhKhjwubah}(h]h ]h"]h$]h&]uh1jhjXhhhhhNubeh}(h]pwm-output-frequencyah ]h"]pwm output frequencyah$]h&]uh1hhj4hhhhhKubh)}(hhh](h)}(h Automatic PWMh]h Automatic PWM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hXThe LM93 is capable of complex automatic fan control, with many different points of configuration. To start, each PWM output can be bound to any combination of eight control sources. The final PWM is the largest of all individual control sources to which the PWM output is bound.h]hXThe LM93 is capable of complex automatic fan control, with many different points of configuration. To start, each PWM output can be bound to any combination of eight control sources. The final PWM is the largest of all individual control sources to which the PWM output is bound.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX)The eight control sources are: temp1-temp4 (aka "zones" in the datasheet), #PROCHOT 1 & 2, and #VRDHOT 1 & 2. The bindings are expressed as a bitmask in the sysfs files pwm_auto_channels, where a "1" enables the binding, and a "0" disables it. The h/w default is 0x0f (all temperatures bound).h]hX5The eight control sources are: temp1-temp4 (aka “zones” in the datasheet), #PROCHOT 1 & 2, and #VRDHOT 1 & 2. The bindings are expressed as a bitmask in the sysfs files pwm_auto_channels, where a “1” enables the binding, and a “0” disables it. The h/w default is 0x0f (all temperatures bound).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h====== =========== 0x01 Temp 1 0x02 Temp 2 0x04 Temp 3 0x08 Temp 4 0x10 #PROCHOT 1 0x20 #PROCHOT 2 0x40 #VRDHOT 1 0x80 #VRDHOT 2 ====== =========== h]htable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jhjubhtbody)}(hhh](hrow)}(hhh](hentry)}(hhh]h)}(h0x01h]h0x01}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTemp 1h]hTemp 1}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj+ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hj ubj)}(hhh](j)}(hhh]h)}(h0x02h]h0x02}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjKubah}(h]h ]h"]h$]h&]uh1jhjHubj)}(hhh]h)}(hTemp 2h]hTemp 2}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjbubah}(h]h ]h"]h$]h&]uh1jhjHubeh}(h]h ]h"]h$]h&]uh1j hj ubj)}(hhh](j)}(hhh]h)}(h0x04h]h0x04}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTemp 3h]hTemp 3}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hj ubj)}(hhh](j)}(hhh]h)}(h0x08h]h0x08}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hTemp 4h]hTemp 4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hj ubj)}(hhh](j)}(hhh]h)}(h0x10h]h0x10}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h #PROCHOT 1h]h #PROCHOT 1}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hj ubj)}(hhh](j)}(hhh]h)}(h0x20h]h0x20}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'ubah}(h]h ]h"]h$]h&]uh1jhj$ubj)}(hhh]h)}(h #PROCHOT 2h]h #PROCHOT 2}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1j hj ubj)}(hhh](j)}(hhh]h)}(h0x40h]h0x40}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ubah}(h]h ]h"]h$]h&]uh1jhj[ubj)}(hhh]h)}(h #VRDHOT 1h]h #VRDHOT 1}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjuubah}(h]h ]h"]h$]h&]uh1jhj[ubeh}(h]h ]h"]h$]h&]uh1j hj ubj)}(hhh](j)}(hhh]h)}(h0x80h]h0x80}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h #VRDHOT 2h]h #VRDHOT 2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXThe function y = f(x) takes a source temperature x to a PWM output y. This function of the LM93 is derived from a base temperature and a table of 12 temperature offsets. The base temperature is expressed in degrees C in the sysfs files temp_auto_base. The offsets are expressed in cumulative degrees C, with the value of offset for temperature value being contained in the file temp_auto_offset. E.g. if the base temperature is 40C:h]hXThe function y = f(x) takes a source temperature x to a PWM output y. This function of the LM93 is derived from a base temperature and a table of 12 temperature offsets. The base temperature is expressed in degrees C in the sysfs files temp_auto_base. The offsets are expressed in cumulative degrees C, with the value of offset for temperature value being contained in the file temp_auto_offset. E.g. if the base temperature is 40C:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX========== ======================= =============== ======= offset # temp_auto_offset range pwm ========== ======================= =============== ======= 1 0 - 25.00% 2 0 - 28.57% 3 1 40C - 41C 32.14% 4 1 41C - 42C 35.71% 5 2 42C - 44C 39.29% 6 2 44C - 46C 42.86% 7 2 48C - 50C 46.43% 8 2 50C - 52C 50.00% 9 2 52C - 54C 53.57% 10 2 54C - 56C 57.14% 11 2 56C - 58C 71.43% 12 2 58C - 60C 85.71% - - > 60C 100.00% ========== ======================= =============== ======= h]j)}(hhh]j)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubhthead)}(hhh]j)}(hhh](j)}(hhh]h)}(hoffset #h]hoffset #}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj*ubah}(h]h ]h"]h$]h&]uh1jhj'ubj)}(hhh]h)}(htemp_auto_offseth]htemp_auto_offset}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjAubah}(h]h ]h"]h$]h&]uh1jhj'ubj)}(hhh]h)}(hrangeh]hrange}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXubah}(h]h ]h"]h$]h&]uh1jhj'ubj)}(hhh]h)}(hpwmh]hpwm}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjoubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1j hj$ubah}(h]h ]h"]h$]h&]uh1j"hjubj )}(hhh](j)}(hhh](j)}(hhh]h)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h0h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]j~j\uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h25.00%h]h25.00%}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h2h]h2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hjh]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhj1ubah}(h]h ]h"]h$]h&]j~j\uh1hhhhKhj.ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h28.57%h]h28.57%}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjIubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h3h]h3}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjiubah}(h]h ]h"]h$]h&]uh1jhjfubj)}(hhh]h)}(hjh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjfubj)}(hhh]h)}(h 40C - 41Ch]h 40C - 41C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjfubj)}(hhh]h)}(h32.14%h]h32.14%}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h4h]h4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hjh]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h 41C - 42Ch]h 41C - 42C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h35.71%h]h35.71%}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h5h]h5}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 ubah}(h]h ]h"]h$]h&]uh1jhj. ubj)}(hhh]h)}(hjh]h2}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjH ubah}(h]h ]h"]h$]h&]uh1jhj. ubj)}(hhh]h)}(h 42C - 44Ch]h 42C - 44C}(hja hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ ubah}(h]h ]h"]h$]h&]uh1jhj. ubj)}(hhh]h)}(h39.29%h]h39.29%}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhju ubah}(h]h ]h"]h$]h&]uh1jhj. ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h6h]h6}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hjh]h2}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h 44C - 46Ch]h 44C - 46C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h42.86%h]h42.86%}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h7h]h7}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hjh]h2}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h 48C - 50Ch]h 48C - 50C}(hj) hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj& ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h46.43%h]h46.43%}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj= ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h8h]h8}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj] ubah}(h]h ]h"]h$]h&]uh1jhjZ ubj)}(hhh]h)}(hjh]h2}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjt ubah}(h]h ]h"]h$]h&]uh1jhjZ ubj)}(hhh]h)}(h 50C - 52Ch]h 50C - 52C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjZ ubj)}(hhh]h)}(h50.00%h]h50.00%}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjZ ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h9h]h9}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hjh]h2}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h 52C - 54Ch]h 52C - 54C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h53.57%h]h53.57%}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h10h]h10}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj% ubah}(h]h ]h"]h$]h&]uh1jhj" ubj)}(hhh]h)}(hjh]h2}(hj? hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj< ubah}(h]h ]h"]h$]h&]uh1jhj" ubj)}(hhh]h)}(h 54C - 56Ch]h 54C - 56C}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjR ubah}(h]h ]h"]h$]h&]uh1jhj" ubj)}(hhh]h)}(h57.14%h]h57.14%}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhji ubah}(h]h ]h"]h$]h&]uh1jhj" ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h11h]h11}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hjh]h2}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h 56C - 58Ch]h 56C - 58C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h71.43%h]h71.43%}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h12h]h12}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(hjh]h2}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h 58C - 60Ch]h 58C - 60C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hhh]h)}(h85.71%h]h85.71%}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj1 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjT ubah}(h]h ]h"]h$]h&]j~j\uh1hhhhKhjQ ubah}(h]h ]h"]h$]h&]uh1jhjN ubj)}(hhh]h)}(hhh]h)}(hhh]h}(h]h ]h"]h$]h&]uh1hhjo ubah}(h]h ]h"]h$]h&]j~j\uh1hhhhKhjl ubah}(h]h ]h"]h$]h&]uh1jhjN ubj)}(hhh]h)}(h> 60Ch]h> 60C}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjN ubj)}(hhh]h)}(h100.00%h]h100.00%}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjN ubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hBValid offsets are in the range 0C <= x <= 7.5C in 0.5C increments.h]hBValid offsets are in the range 0C <= x <= 7.5C in 0.5C increments.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hThere is an independent base temperature for each temperature channel. Note, however, there are only two tables of offsets: one each for temp[12] and temp[34]. Therefore, any change to e.g. temp1_auto_offset will also affect temp2_auto_offset.h]hThere is an independent base temperature for each temperature channel. Note, however, there are only two tables of offsets: one each for temp[12] and temp[34]. Therefore, any change to e.g. temp1_auto_offset will also affect temp2_auto_offset.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXThe LM93 can also apply hysteresis to the offset table, to prevent unwanted oscillation between two steps in the offsets table. These values are found in the sysfs files temp_auto_offset_hyst. The value in this file has the same representation as in temp_auto_offset.h]hXThe LM93 can also apply hysteresis to the offset table, to prevent unwanted oscillation between two steps in the offsets table. These values are found in the sysfs files temp_auto_offset_hyst. The value in this file has the same representation as in temp_auto_offset.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hXNIf a temperature reading falls below the base value for that channel, the LM93 will use the minimum PWM value. These values are found in the sysfs files temp_auto_pwm_min. Note, there are only two minimums: one each for temp[12] and temp[34]. Therefore, any change to e.g. temp1_auto_pwm_min will also affect temp2_auto_pwm_min.h]hXNIf a temperature reading falls below the base value for that channel, the LM93 will use the minimum PWM value. These values are found in the sysfs files temp_auto_pwm_min. Note, there are only two minimums: one each for temp[12] and temp[34]. Therefore, any change to e.g. temp1_auto_pwm_min will also affect temp2_auto_pwm_min.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h] automatic-pwmah ]h"] automatic pwmah$]h&]uh1hhj4hhhhhKubh)}(hhh](h)}(hPWM Spin-Up Cycleh]hPWM Spin-Up Cycle}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(hXzA spin-up cycle occurs when a PWM output is commanded from 0% duty cycle to some value > 0%. The LM93 supports a minimum duty cycle during spin-up. These values are found in the sysfs files pwm_auto_spinup_min. The value in this file has the same representation as other PWM duty cycle values. The duration of the spin-up cycle is also configurable. These values are found in the sysfs files pwm_auto_spinup_time. The value in this file is the spin-up time in seconds. The available spin-up times are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value.h]hXzA spin-up cycle occurs when a PWM output is commanded from 0% duty cycle to some value > 0%. The LM93 supports a minimum duty cycle during spin-up. These values are found in the sysfs files pwm_auto_spinup_min. The value in this file has the same representation as other PWM duty cycle values. The duration of the spin-up cycle is also configurable. These values are found in the sysfs files pwm_auto_spinup_time. The value in this file is the spin-up time in seconds. The available spin-up times are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value.}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubj)}(hhh]j)}(hQSpin-up Durations: 0 (disabled, h/w default), 0.1, 0.25, 0.4, 0.7, 1.0, 2.0, 4.0 h](j)}(hSpin-up Durations:h]hSpin-up Durations:}(hj: hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj6 ubj)}(hhh]h)}(h=0 (disabled, h/w default), 0.1, 0.25, 0.4, 0.7, 1.0, 2.0, 4.0h]h=0 (disabled, h/w default), 0.1, 0.25, 0.4, 0.7, 1.0, 2.0, 4.0}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjH ubah}(h]h ]h"]h$]h&]uh1jhj6 ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj3 ubah}(h]h ]h"]h$]h&]uh1jhj hhhhhNubeh}(h]pwm-spin-up-cycleah ]h"]pwm spin-up cycleah$]h&]uh1hhj4hhhhhKubh)}(hhh](h)}(h #PROCHOT and #VRDHOT PWM Rampingh]h #PROCHOT and #VRDHOT PWM Ramping}(hjv hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjs hhhhhKubh)}(hXIf the #PROCHOT or #VRDHOT signals are asserted while bound to a PWM output channel, the LM93 will ramp the PWM output up to 100% duty cycle in discrete steps. The duration of each step is configurable. There are two files, with one value each in seconds: pwm_auto_prochot_ramp and pwm_auto_vrdhot_ramp. The available ramp times are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value.h]hXIf the #PROCHOT or #VRDHOT signals are asserted while bound to a PWM output channel, the LM93 will ramp the PWM output up to 100% duty cycle in discrete steps. The duration of each step is configurable. There are two files, with one value each in seconds: pwm_auto_prochot_ramp and pwm_auto_vrdhot_ramp. The available ramp times are constrained by the hardware. Selecting a value which is not available will cause the driver to use the next largest value.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjs hhubj)}(hhh]j)}(hGRamp Times: 0 (disabled, h/w default) to 0.75 in 0.05 second intervals h](j)}(h Ramp Times:h]h Ramp Times:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhMhj ubj)}(hhh]h)}(h:0 (disabled, h/w default) to 0.75 in 0.05 second intervalsh]h:0 (disabled, h/w default) to 0.75 in 0.05 second intervals}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhhhMhj ubah}(h]h ]h"]h$]h&]uh1jhjs hhhhhNubeh}(h]prochot-and-vrdhot-pwm-rampingah ]h"] #prochot and #vrdhot pwm rampingah$]h&]uh1hhj4hhhhhKubh)}(hhh](h)}(h Fan Boosth]h Fan Boost}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhM ubh)}(hXFor each temperature channel, there is a boost temperature: if the channel exceeds this limit, the LM93 will immediately drive both PWM outputs to 100%. This limit is expressed in degrees C in the sysfs files temp_auto_boost. There is also a hysteresis temperature for this function: after the boost limit is reached, the temperature channel must drop below this value before the boost function is disabled. This temperature is also expressed in degrees C in the sysfs files temp_auto_boost_hyst.h]hXFor each temperature channel, there is a boost temperature: if the channel exceeds this limit, the LM93 will immediately drive both PWM outputs to 100%. This limit is expressed in degrees C in the sysfs files temp_auto_boost. There is also a hysteresis temperature for this function: after the boost limit is reached, the temperature channel must drop below this value before the boost function is disabled. This temperature is also expressed in degrees C in the sysfs files temp_auto_boost_hyst.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hj hhubeh}(h] fan-boostah ]h"] fan boostah$]h&]uh1hhj4hhhhhM ubh)}(hhh](h)}(h GPIO Pinsh]h GPIO Pins}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hXThe LM93 can monitor the logic level of four dedicated GPIO pins as well as the four tach input pins. GPIO0-GPIO3 correspond to (fan) tach 1-4, respectively. All eight GPIOs are read by reading the bitmask in the sysfs file gpio. The LSB is GPIO0, and the MSB is GPIO7.h]hXThe LM93 can monitor the logic level of four dedicated GPIO pins as well as the four tach input pins. GPIO0-GPIO3 correspond to (fan) tach 1-4, respectively. All eight GPIOs are read by reading the bitmask in the sysfs file gpio. The LSB is GPIO0, and the MSB is GPIO7.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubeh}(h] gpio-pinsah ]h"] gpio pinsah$]h&]uh1hhj4hhhhhMubeh}(h]user-interfaceah ]h"]user interfaceah$]h&]uh1hhhhhhhhKMubh)}(hhh](h)}(hLM93 Unique sysfs Filesh]hLM93 Unique sysfs Files}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hhhhhMubj)}(hhh]j)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhj<ubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK/uh1jhj<ubj#)}(hhh]j)}(hhh](j)}(hhh]h)}(hfileh]hfile}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjYubah}(h]h ]h"]h$]h&]uh1jhjVubj)}(hhh]h)}(h descriptionh]h description}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM hjpubah}(h]h ]h"]h$]h&]uh1jhjVubeh}(h]h ]h"]h$]h&]uh1j hjSubah}(h]h ]h"]h$]h&]uh1j"hj<ubj )}(hhh](j)}(hhh](j)}(hhh]h)}(h prochoth]h prochot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM"hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hcurrent #PROCHOT %h]hcurrent #PROCHOT %}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM"hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hprochot_avgh]hprochot_avg}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM#hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hmoving average #PROCHOT %h]hmoving average #PROCHOT %}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM#hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hprochot_maxh]hprochot_max}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM$hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hlimit #PROCHOT %h]hlimit #PROCHOT %}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM$hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h prochot_shorth]h prochot_short}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM%hj>ubah}(h]h ]h"]h$]h&]uh1jhj;ubj)}(hhh]h)}(h,enable or disable logical #PROCHOT pin shorth]h,enable or disable logical #PROCHOT pin short}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM%hjUubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hprochot_overrideh]hprochot_override}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hjuubah}(h]h ]h"]h$]h&]uh1jhjrubj)}(hhh]h)}(hforce #PROCHOT assertion as PWMh]hforce #PROCHOT assertion as PWM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM&hjubah}(h]h ]h"]h$]h&]uh1jhjrubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hprochot_override_duty_cycleh]hprochot_override_duty_cycle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h>duty cycle for the PWM signal used when #PROCHOT is overriddenh]h>duty cycle for the PWM signal used when #PROCHOT is overridden}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM'hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hprochot_intervalh]hprochot_interval}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h#PROCHOT PWM sampling intervalh]h#PROCHOT PWM sampling interval}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(h vrdhoth]h vrdhot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h!0 means negated, 1 means assertedh]h!0 means negated, 1 means asserted}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM*hj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hfan_smart_tachh]hfan_smart_tach}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM+hjQubah}(h]h ]h"]h$]h&]uh1jhjNubj)}(hhh]h)}(h!enable or disable smart tach modeh]h!enable or disable smart tach mode}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM+hjhubah}(h]h ]h"]h$]h&]uh1jhjNubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hpwm_auto_channelsh]hpwm_auto_channels}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h&select control sources for PWM outputsh]h&select control sources for PWM outputs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM,hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hpwm_auto_spinup_minh]hpwm_auto_spinup_min}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h!minimum duty cycle during spin-uph]h!minimum duty cycle during spin-up}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM-hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hpwm_auto_spinup_timeh]hpwm_auto_spinup_time}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hduration of spin-uph]hduration of spin-up}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM.hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hpwm_auto_prochot_ramph]hpwm_auto_prochot_ramp}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hj-ubah}(h]h ]h"]h$]h&]uh1jhj*ubj)}(hhh]h)}(h)ramp time per step when #PROCHOT assertedh]h)ramp time per step when #PROCHOT asserted}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM/hjDubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hpwm_auto_vrdhot_ramph]hpwm_auto_vrdhot_ramp}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM0hjdubah}(h]h ]h"]h$]h&]uh1jhjaubj)}(hhh]h)}(h(ramp time per step when #VRDHOT assertedh]h(ramp time per step when #VRDHOT asserted}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM0hj{ubah}(h]h ]h"]h$]h&]uh1jhjaubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(htemp_auto_baseh]htemp_auto_base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM1hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(htemperature channel baseh]htemperature channel base}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM1hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(htemp_auto_offset[1-12]h]htemp_auto_offset[1-12]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(htemperature channel offsetsh]htemperature channel offsets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM2hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(htemp_auto_offset_hysth]htemp_auto_offset_hyst}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h%temperature channel offset hysteresish]h%temperature channel offset hysteresis}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM3hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(htemp_auto_boosth]htemp_auto_boost}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hj@ubah}(h]h ]h"]h$]h&]uh1jhj=ubj)}(hhh]h)}(h.temperature channel boost (PWMs to 100%) limith]h.temperature channel boost (PWMs to 100%) limit}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hjWubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(htemp_auto_boost_hysth]htemp_auto_boost_hyst}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjwubah}(h]h ]h"]h$]h&]uh1jhjtubj)}(hhh]h)}(h$temperature channel boost hysteresish]h$temperature channel boost hysteresis}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hhh](j)}(hhh]h)}(hgpioh]hgpio}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h%input state of 8 GPIO pins; read-onlyh]h%input state of 8 GPIO pins; read-only}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM7hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]colsKuh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhj(hhhhhNubeh}(h]lm93-unique-sysfs-filesah ]h"]lm93 unique sysfs filesah$]h&]uh1hhhhhhhhMubeh}(h]kernel-driver-lm93ah ]h"]kernel driver lm93ah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj'error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjjj1j.j%j"jjj.j+jUjRjjj j jp jm j j j j jjjju nametypes}(jjj1j%jj.jUjj jp j j jjuh}(jhjjoj.jj"j4jjEj+jjRj1jjXj jjm j j js j j jj jj(u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.