aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-02-25 19:46:44 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-02-25 19:46:44 -0500
commitfffddfd6c8e0c10c42c6e2cc54ba880fcc36ebbb (patch)
tree71bc5e597124dbaf7550f1e089d675718b3ed5c0 /Documentation
parent69086a78bdc973ec0b722be790b146e84ba8a8c4 (diff)
parentbe88298b0a3f771a4802f20c5e66af74bfd1dff1 (diff)
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm merge from Dave Airlie: "Highlights: - TI LCD controller KMS driver - TI OMAP KMS driver merged from staging - drop gma500 stub driver - the fbcon locking fixes - the vgacon dirty like zebra fix. - open firmware videomode and hdmi common code helpers - major locking rework for kms object handling - pageflip/cursor won't block on polling anymore! - fbcon helper and prime helper cleanups - i915: all over the map, haswell power well enhancements, valleyview macro horrors cleaned up, killing lots of legacy GTT code, - radeon: CS ioctl unification, deprecated UMS support, gpu reset rework, VM fixes - nouveau: reworked thermal code, external dp/tmds encoder support (anx9805), fences sleep instead of polling, - exynos: all over the driver fixes." Lovely conflict in radeon/evergreen_cs.c between commit de0babd60d8d ("drm/radeon: enforce use of radeon_get_ib_value when reading user cmd") and the new changes that modified that evergreen_dma_cs_parse() function. * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (508 commits) drm/tilcdc: only build on arm drm/i915: Revert hdmi HDP pin checks drm/tegra: Add list of framebuffers to debugfs drm/tegra: Fix color expansion drm/tegra: Split DC_CMD_STATE_CONTROL register write drm/tegra: Implement page-flipping support drm/tegra: Implement VBLANK support drm/tegra: Implement .mode_set_base() drm/tegra: Add plane support drm/tegra: Remove bogus tegra_framebuffer structure drm: Add consistency check for page-flipping drm/radeon: Use generic HDMI infoframe helpers drm/tegra: Use generic HDMI infoframe helpers drm: Add EDID helper documentation drm: Add HDMI infoframe helpers video: Add generic HDMI infoframe helpers drm: Add some missing forward declarations drm: Move mode tables to drm_edid.c drm: Remove duplicate drm_mode_cea_vic() gma500: Fix n, m1 and m2 clock limits for sdvo and lvds ...
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/drm.tmpl78
-rw-r--r--Documentation/EDID/HOWTO.txt27
-rw-r--r--Documentation/devicetree/bindings/drm/tilcdc/panel.txt59
-rw-r--r--Documentation/devicetree/bindings/drm/tilcdc/slave.txt18
-rw-r--r--Documentation/devicetree/bindings/drm/tilcdc/tfp410.txt21
-rw-r--r--Documentation/devicetree/bindings/drm/tilcdc/tilcdc.txt21
-rw-r--r--Documentation/devicetree/bindings/video/display-timing.txt109
-rw-r--r--Documentation/thermal/nouveau_thermal81
8 files changed, 396 insertions, 18 deletions
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index 4ee2304f82f9..f9df3b872c16 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -743,6 +743,10 @@ char *date;</synopsis>
743 These two operations are mandatory for GEM drivers that support DRM 743 These two operations are mandatory for GEM drivers that support DRM
744 PRIME. 744 PRIME.
745 </para> 745 </para>
746 <sect4>
747 <title>DRM PRIME Helper Functions Reference</title>
748!Pdrivers/gpu/drm/drm_prime.c PRIME Helpers
749 </sect4>
746 </sect3> 750 </sect3>
747 <sect3 id="drm-gem-objects-mapping"> 751 <sect3 id="drm-gem-objects-mapping">
748 <title>GEM Objects Mapping</title> 752 <title>GEM Objects Mapping</title>
@@ -978,10 +982,25 @@ int max_width, max_height;</synopsis>
978 If the parameters are deemed valid, drivers then create, initialize and 982 If the parameters are deemed valid, drivers then create, initialize and
979 return an instance of struct <structname>drm_framebuffer</structname>. 983 return an instance of struct <structname>drm_framebuffer</structname>.
980 If desired the instance can be embedded in a larger driver-specific 984 If desired the instance can be embedded in a larger driver-specific
981 structure. The new instance is initialized with a call to 985 structure. Drivers must fill its <structfield>width</structfield>,
982 <function>drm_framebuffer_init</function> which takes a pointer to DRM 986 <structfield>height</structfield>, <structfield>pitches</structfield>,
983 frame buffer operations (struct 987 <structfield>offsets</structfield>, <structfield>depth</structfield>,
984 <structname>drm_framebuffer_funcs</structname>). Frame buffer operations are 988 <structfield>bits_per_pixel</structfield> and
989 <structfield>pixel_format</structfield> fields from the values passed
990 through the <parameter>drm_mode_fb_cmd2</parameter> argument. They
991 should call the <function>drm_helper_mode_fill_fb_struct</function>
992 helper function to do so.
993 </para>
994
995 <para>
996 The initailization of the new framebuffer instance is finalized with a
997 call to <function>drm_framebuffer_init</function> which takes a pointer
998 to DRM frame buffer operations (struct
999 <structname>drm_framebuffer_funcs</structname>). Note that this function
1000 publishes the framebuffer and so from this point on it can be accessed
1001 concurrently from other threads. Hence it must be the last step in the
1002 driver's framebuffer initialization sequence. Frame buffer operations
1003 are
985 <itemizedlist> 1004 <itemizedlist>
986 <listitem> 1005 <listitem>
987 <synopsis>int (*create_handle)(struct drm_framebuffer *fb, 1006 <synopsis>int (*create_handle)(struct drm_framebuffer *fb,
@@ -1022,16 +1041,16 @@ int max_width, max_height;</synopsis>
1022 </itemizedlist> 1041 </itemizedlist>
1023 </para> 1042 </para>
1024 <para> 1043 <para>
1025 After initializing the <structname>drm_framebuffer</structname> 1044 The lifetime of a drm framebuffer is controlled with a reference count,
1026 instance drivers must fill its <structfield>width</structfield>, 1045 drivers can grab additional references with
1027 <structfield>height</structfield>, <structfield>pitches</structfield>, 1046 <function>drm_framebuffer_reference</function> </para> and drop them
1028 <structfield>offsets</structfield>, <structfield>depth</structfield>, 1047 again with <function>drm_framebuffer_unreference</function>. For
1029 <structfield>bits_per_pixel</structfield> and 1048 driver-private framebuffers for which the last reference is never
1030 <structfield>pixel_format</structfield> fields from the values passed 1049 dropped (e.g. for the fbdev framebuffer when the struct
1031 through the <parameter>drm_mode_fb_cmd2</parameter> argument. They 1050 <structname>drm_framebuffer</structname> is embedded into the fbdev
1032 should call the <function>drm_helper_mode_fill_fb_struct</function> 1051 helper struct) drivers can manually clean up a framebuffer at module
1033 helper function to do so. 1052 unload time with
1034 </para> 1053 <function>drm_framebuffer_unregister_private</function>.
1035 </sect2> 1054 </sect2>
1036 <sect2> 1055 <sect2>
1037 <title>Output Polling</title> 1056 <title>Output Polling</title>
@@ -1043,6 +1062,22 @@ int max_width, max_height;</synopsis>
1043 operation. 1062 operation.
1044 </para> 1063 </para>
1045 </sect2> 1064 </sect2>
1065 <sect2>
1066 <title>Locking</title>
1067 <para>
1068 Beside some lookup structures with their own locking (which is hidden
1069 behind the interface functions) most of the modeset state is protected
1070 by the <code>dev-&lt;mode_config.lock</code> mutex and additionally
1071 per-crtc locks to allow cursor updates, pageflips and similar operations
1072 to occur concurrently with background tasks like output detection.
1073 Operations which cross domains like a full modeset always grab all
1074 locks. Drivers there need to protect resources shared between crtcs with
1075 additional locking. They also need to be careful to always grab the
1076 relevant crtc locks if a modset functions touches crtc state, e.g. for
1077 load detection (which does only grab the <code>mode_config.lock</code>
1078 to allow concurrent screen updates on live crtcs).
1079 </para>
1080 </sect2>
1046 </sect1> 1081 </sect1>
1047 1082
1048 <!-- Internals: kms initialization and cleanup --> 1083 <!-- Internals: kms initialization and cleanup -->
@@ -1126,6 +1161,12 @@ int max_width, max_height;</synopsis>
1126 any new rendering to the frame buffer until the page flip completes. 1161 any new rendering to the frame buffer until the page flip completes.
1127 </para> 1162 </para>
1128 <para> 1163 <para>
1164 If a page flip can be successfully scheduled the driver must set the
1165 <code>drm_crtc-&lt;fb</code> field to the new framebuffer pointed to
1166 by <code>fb</code>. This is important so that the reference counting
1167 on framebuffers stays balanced.
1168 </para>
1169 <para>
1129 If a page flip is already pending, the 1170 If a page flip is already pending, the
1130 <methodname>page_flip</methodname> operation must return 1171 <methodname>page_flip</methodname> operation must return
1131 -<errorname>EBUSY</errorname>. 1172 -<errorname>EBUSY</errorname>.
@@ -1609,6 +1650,10 @@ void intel_crt_init(struct drm_device *dev)
1609 make its properties available to applications. 1650 make its properties available to applications.
1610 </para> 1651 </para>
1611 </sect2> 1652 </sect2>
1653 <sect2>
1654 <title>KMS API Functions</title>
1655!Edrivers/gpu/drm/drm_crtc.c
1656 </sect2>
1612 </sect1> 1657 </sect1>
1613 1658
1614 <!-- Internals: kms helper functions --> 1659 <!-- Internals: kms helper functions -->
@@ -2104,6 +2149,7 @@ void intel_crt_init(struct drm_device *dev)
2104 <title>fbdev Helper Functions Reference</title> 2149 <title>fbdev Helper Functions Reference</title>
2105!Pdrivers/gpu/drm/drm_fb_helper.c fbdev helpers 2150!Pdrivers/gpu/drm/drm_fb_helper.c fbdev helpers
2106!Edrivers/gpu/drm/drm_fb_helper.c 2151!Edrivers/gpu/drm/drm_fb_helper.c
2152!Iinclude/drm/drm_fb_helper.h
2107 </sect2> 2153 </sect2>
2108 <sect2> 2154 <sect2>
2109 <title>Display Port Helper Functions Reference</title> 2155 <title>Display Port Helper Functions Reference</title>
@@ -2111,6 +2157,10 @@ void intel_crt_init(struct drm_device *dev)
2111!Iinclude/drm/drm_dp_helper.h 2157!Iinclude/drm/drm_dp_helper.h
2112!Edrivers/gpu/drm/drm_dp_helper.c 2158!Edrivers/gpu/drm/drm_dp_helper.c
2113 </sect2> 2159 </sect2>
2160 <sect2>
2161 <title>EDID Helper Functions Reference</title>
2162!Edrivers/gpu/drm/drm_edid.c
2163 </sect2>
2114 </sect1> 2164 </sect1>
2115 2165
2116 <!-- Internals: vertical blanking --> 2166 <!-- Internals: vertical blanking -->
diff --git a/Documentation/EDID/HOWTO.txt b/Documentation/EDID/HOWTO.txt
index 75a9f2a0c43d..2d0a8f09475d 100644
--- a/Documentation/EDID/HOWTO.txt
+++ b/Documentation/EDID/HOWTO.txt
@@ -28,11 +28,30 @@ Makefile environment are given here.
28To create binary EDID and C source code files from the existing data 28To create binary EDID and C source code files from the existing data
29material, simply type "make". 29material, simply type "make".
30 30
31If you want to create your own EDID file, copy the file 1024x768.S and 31If you want to create your own EDID file, copy the file 1024x768.S,
32replace the settings with your own data. The CRC value in the last line 32replace the settings with your own data and add a new target to the
33Makefile. Please note that the EDID data structure expects the timing
34values in a different way as compared to the standard X11 format.
35
36X11:
37HTimings: hdisp hsyncstart hsyncend htotal
38VTimings: vdisp vsyncstart vsyncend vtotal
39
40EDID:
41#define XPIX hdisp
42#define XBLANK htotal-hdisp
43#define XOFFSET hsyncstart-hdisp
44#define XPULSE hsyncend-hsyncstart
45
46#define YPIX vdisp
47#define YBLANK vtotal-vdisp
48#define YOFFSET (63+(vsyncstart-vdisp))
49#define YPULSE (63+(vsyncend-vsyncstart))
50
51The CRC value in the last line
33 #define CRC 0x55 52 #define CRC 0x55
34is a bit tricky. After a first version of the binary data set is 53also is a bit tricky. After a first version of the binary data set is
35created, it must be be checked with the "edid-decode" utility which will 54created, it must be checked with the "edid-decode" utility which will
36most probably complain about a wrong CRC. Fortunately, the utility also 55most probably complain about a wrong CRC. Fortunately, the utility also
37displays the correct CRC which must then be inserted into the source 56displays the correct CRC which must then be inserted into the source
38file. After the make procedure is repeated, the EDID data set is ready 57file. After the make procedure is repeated, the EDID data set is ready
diff --git a/Documentation/devicetree/bindings/drm/tilcdc/panel.txt b/Documentation/devicetree/bindings/drm/tilcdc/panel.txt
new file mode 100644
index 000000000000..9301c330d1a6
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/tilcdc/panel.txt
@@ -0,0 +1,59 @@
1Device-Tree bindings for tilcdc DRM generic panel output driver
2
3Required properties:
4 - compatible: value should be "ti,tilcdc,panel".
5 - panel-info: configuration info to configure LCDC correctly for the panel
6 - ac-bias: AC Bias Pin Frequency
7 - ac-bias-intrpt: AC Bias Pin Transitions per Interrupt
8 - dma-burst-sz: DMA burst size
9 - bpp: Bits per pixel
10 - fdd: FIFO DMA Request Delay
11 - sync-edge: Horizontal and Vertical Sync Edge: 0=rising 1=falling
12 - sync-ctrl: Horizontal and Vertical Sync: Control: 0=ignore
13 - raster-order: Raster Data Order Select: 1=Most-to-least 0=Least-to-most
14 - fifo-th: DMA FIFO threshold
15 - display-timings: typical videomode of lcd panel. Multiple video modes
16 can be listed if the panel supports multiple timings, but the 'native-mode'
17 should be the preferred/default resolution. Refer to
18 Documentation/devicetree/bindings/video/display-timing.txt for display
19 timing binding details.
20
21Recommended properties:
22 - pinctrl-names, pinctrl-0: the pincontrol settings to configure
23 muxing properly for pins that connect to TFP410 device
24
25Example:
26
27 /* Settings for CDTech_S035Q01 / LCD3 cape: */
28 lcd3 {
29 compatible = "ti,tilcdc,panel";
30 pinctrl-names = "default";
31 pinctrl-0 = <&bone_lcd3_cape_lcd_pins>;
32 panel-info {
33 ac-bias = <255>;
34 ac-bias-intrpt = <0>;
35 dma-burst-sz = <16>;
36 bpp = <16>;
37 fdd = <0x80>;
38 sync-edge = <0>;
39 sync-ctrl = <1>;
40 raster-order = <0>;
41 fifo-th = <0>;
42 };
43 display-timings {
44 native-mode = <&timing0>;
45 timing0: 320x240 {
46 hactive = <320>;
47 vactive = <240>;
48 hback-porch = <21>;
49 hfront-porch = <58>;
50 hsync-len = <47>;
51 vback-porch = <11>;
52 vfront-porch = <23>;
53 vsync-len = <2>;
54 clock-frequency = <8000000>;
55 hsync-active = <0>;
56 vsync-active = <0>;
57 };
58 };
59 };
diff --git a/Documentation/devicetree/bindings/drm/tilcdc/slave.txt b/Documentation/devicetree/bindings/drm/tilcdc/slave.txt
new file mode 100644
index 000000000000..3d2c52460dca
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/tilcdc/slave.txt
@@ -0,0 +1,18 @@
1Device-Tree bindings for tilcdc DRM encoder slave output driver
2
3Required properties:
4 - compatible: value should be "ti,tilcdc,slave".
5 - i2c: the phandle for the i2c device the encoder slave is connected to
6
7Recommended properties:
8 - pinctrl-names, pinctrl-0: the pincontrol settings to configure
9 muxing properly for pins that connect to TFP410 device
10
11Example:
12
13 hdmi {
14 compatible = "ti,tilcdc,slave";
15 i2c = <&i2c0>;
16 pinctrl-names = "default";
17 pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
18 };
diff --git a/Documentation/devicetree/bindings/drm/tilcdc/tfp410.txt b/Documentation/devicetree/bindings/drm/tilcdc/tfp410.txt
new file mode 100644
index 000000000000..a58ae7756fc6
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/tilcdc/tfp410.txt
@@ -0,0 +1,21 @@
1Device-Tree bindings for tilcdc DRM TFP410 output driver
2
3Required properties:
4 - compatible: value should be "ti,tilcdc,tfp410".
5 - i2c: the phandle for the i2c device to use for DDC
6
7Recommended properties:
8 - pinctrl-names, pinctrl-0: the pincontrol settings to configure
9 muxing properly for pins that connect to TFP410 device
10 - powerdn-gpio: the powerdown GPIO, pulled low to power down the
11 TFP410 device (for DPMS_OFF)
12
13Example:
14
15 dvicape {
16 compatible = "ti,tilcdc,tfp410";
17 i2c = <&i2c2>;
18 pinctrl-names = "default";
19 pinctrl-0 = <&bone_dvi_cape_dvi_00A1_pins>;
20 powerdn-gpio = <&gpio2 31 0>;
21 };
diff --git a/Documentation/devicetree/bindings/drm/tilcdc/tilcdc.txt b/Documentation/devicetree/bindings/drm/tilcdc/tilcdc.txt
new file mode 100644
index 000000000000..e5f130159ae1
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/tilcdc/tilcdc.txt
@@ -0,0 +1,21 @@
1Device-Tree bindings for tilcdc DRM driver
2
3Required properties:
4 - compatible: value should be "ti,am33xx-tilcdc".
5 - interrupts: the interrupt number
6 - reg: base address and size of the LCDC device
7
8Recommended properties:
9 - interrupt-parent: the phandle for the interrupt controller that
10 services interrupts for this device.
11 - ti,hwmods: Name of the hwmod associated to the LCDC
12
13Example:
14
15 fb: fb@4830e000 {
16 compatible = "ti,am33xx-tilcdc";
17 reg = <0x4830e000 0x1000>;
18 interrupt-parent = <&intc>;
19 interrupts = <36>;
20 ti,hwmods = "lcdc";
21 };
diff --git a/Documentation/devicetree/bindings/video/display-timing.txt b/Documentation/devicetree/bindings/video/display-timing.txt
new file mode 100644
index 000000000000..150038552bc3
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/display-timing.txt
@@ -0,0 +1,109 @@
1display-timing bindings
2=======================
3
4display-timings node
5--------------------
6
7required properties:
8 - none
9
10optional properties:
11 - native-mode: The native mode for the display, in case multiple modes are
12 provided. When omitted, assume the first node is the native.
13
14timing subnode
15--------------
16
17required properties:
18 - hactive, vactive: display resolution
19 - hfront-porch, hback-porch, hsync-len: horizontal display timing parameters
20 in pixels
21 vfront-porch, vback-porch, vsync-len: vertical display timing parameters in
22 lines
23 - clock-frequency: display clock in Hz
24
25optional properties:
26 - hsync-active: hsync pulse is active low/high/ignored
27 - vsync-active: vsync pulse is active low/high/ignored
28 - de-active: data-enable pulse is active low/high/ignored
29 - pixelclk-active: with
30 - active high = drive pixel data on rising edge/
31 sample data on falling edge
32 - active low = drive pixel data on falling edge/
33 sample data on rising edge
34 - ignored = ignored
35 - interlaced (bool): boolean to enable interlaced mode
36 - doublescan (bool): boolean to enable doublescan mode
37
38All the optional properties that are not bool follow the following logic:
39 <1>: high active
40 <0>: low active
41 omitted: not used on hardware
42
43There are different ways of describing the capabilities of a display. The
44devicetree representation corresponds to the one commonly found in datasheets
45for displays. If a display supports multiple signal timings, the native-mode
46can be specified.
47
48The parameters are defined as:
49
50 +----------+-------------------------------------+----------+-------+
51 | | ↑ | | |
52 | | |vback_porch | | |
53 | | ↓ | | |
54 +----------#######################################----------+-------+
55 | # ↑ # | |
56 | # | # | |
57 | hback # | # hfront | hsync |
58 | porch # | hactive # porch | len |
59 |<-------->#<-------+--------------------------->#<-------->|<----->|
60 | # | # | |
61 | # |vactive # | |
62 | # | # | |
63 | # ↓ # | |
64 +----------#######################################----------+-------+
65 | | ↑ | | |
66 | | |vfront_porch | | |
67 | | ↓ | | |
68 +----------+-------------------------------------+----------+-------+
69 | | ↑ | | |
70 | | |vsync_len | | |
71 | | ↓ | | |
72 +----------+-------------------------------------+----------+-------+
73
74Example:
75
76 display-timings {
77 native-mode = <&timing0>;
78 timing0: 1080p24 {
79 /* 1920x1080p24 */
80 clock-frequency = <52000000>;
81 hactive = <1920>;
82 vactive = <1080>;
83 hfront-porch = <25>;
84 hback-porch = <25>;
85 hsync-len = <25>;
86 vback-porch = <2>;
87 vfront-porch = <2>;
88 vsync-len = <2>;
89 hsync-active = <1>;
90 };
91 };
92
93Every required property also supports the use of ranges, so the commonly used
94datasheet description with minimum, typical and maximum values can be used.
95
96Example:
97
98 timing1: timing {
99 /* 1920x1080p24 */
100 clock-frequency = <148500000>;
101 hactive = <1920>;
102 vactive = <1080>;
103 hsync-len = <0 44 60>;
104 hfront-porch = <80 88 95>;
105 hback-porch = <100 148 160>;
106 vfront-porch = <0 4 6>;
107 vback-porch = <0 36 50>;
108 vsync-len = <0 5 6>;
109 };
diff --git a/Documentation/thermal/nouveau_thermal b/Documentation/thermal/nouveau_thermal
new file mode 100644
index 000000000000..efceb7828f54
--- /dev/null
+++ b/Documentation/thermal/nouveau_thermal
@@ -0,0 +1,81 @@
1Kernel driver nouveau
2===================
3
4Supported chips:
5* NV43+
6
7Authors: Martin Peres (mupuf) <martin.peres@labri.fr>
8
9Description
10---------
11
12This driver allows to read the GPU core temperature, drive the GPU fan and
13set temperature alarms.
14
15Currently, due to the absence of in-kernel API to access HWMON drivers, Nouveau
16cannot access any of the i2c external monitoring chips it may find. If you
17have one of those, temperature and/or fan management through Nouveau's HWMON
18interface is likely not to work. This document may then not cover your situation
19entirely.
20
21Temperature management
22--------------------
23
24Temperature is exposed under as a read-only HWMON attribute temp1_input.
25
26In order to protect the GPU from overheating, Nouveau supports 4 configurable
27temperature thresholds:
28
29 * Fan_boost: Fan speed is set to 100% when reaching this temperature;
30 * Downclock: The GPU will be downclocked to reduce its power dissipation;
31 * Critical: The GPU is put on hold to further lower power dissipation;
32 * Shutdown: Shut the computer down to protect your GPU.
33
34WARNING: Some of these thresholds may not be used by Nouveau depending
35on your chipset.
36
37The default value for these thresholds comes from the GPU's vbios. These
38thresholds can be configured thanks to the following HWMON attributes:
39
40 * Fan_boost: temp1_auto_point1_temp and temp1_auto_point1_temp_hyst;
41 * Downclock: temp1_max and temp1_max_hyst;
42 * Critical: temp1_crit and temp1_crit_hyst;
43 * Shutdown: temp1_emergency and temp1_emergency_hyst.
44
45NOTE: Remember that the values are stored as milli degrees Celcius. Don't forget
46to multiply!
47
48Fan management
49------------
50
51Not all cards have a drivable fan. If you do, then the following HWMON
52attributes should be available:
53
54 * pwm1_enable: Current fan management mode (NONE, MANUAL or AUTO);
55 * pwm1: Current PWM value (power percentage);
56 * pwm1_min: The minimum PWM speed allowed;
57 * pwm1_max: The maximum PWM speed allowed (bypassed when hitting Fan_boost);
58
59You may also have the following attribute:
60
61 * fan1_input: Speed in RPM of your fan.
62
63Your fan can be driven in different modes:
64
65 * 0: The fan is left untouched;
66 * 1: The fan can be driven in manual (use pwm1 to change the speed);
67 * 2; The fan is driven automatically depending on the temperature.
68
69NOTE: Be sure to use the manual mode if you want to drive the fan speed manually
70
71NOTE2: Not all fan management modes may be supported on all chipsets. We are
72working on it.
73
74Bug reports
75---------
76
77Thermal management on Nouveau is new and may not work on all cards. If you have
78inquiries, please ping mupuf on IRC (#nouveau, freenode).
79
80Bug reports should be filled on Freedesktop's bug tracker. Please follow
81http://nouveau.freedesktop.org/wiki/Bugs