diff options
Diffstat (limited to 'Documentation/DocBook')
-rw-r--r-- | Documentation/DocBook/80211.tmpl | 13 | ||||
-rw-r--r-- | Documentation/DocBook/device-drivers.tmpl | 6 | ||||
-rw-r--r-- | Documentation/DocBook/drm.tmpl | 277 | ||||
-rw-r--r-- | Documentation/DocBook/genericirq.tmpl | 13 | ||||
-rw-r--r-- | Documentation/DocBook/kernel-locking.tmpl | 7 | ||||
-rw-r--r-- | Documentation/DocBook/media/dvb/frontend.xml | 2 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/controls.xml | 2 | ||||
-rw-r--r-- | Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml | 2 | ||||
-rw-r--r-- | Documentation/DocBook/writing_usb_driver.tmpl | 2 |
9 files changed, 254 insertions, 70 deletions
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl index 0f6a3edcd44b..49267ea97568 100644 --- a/Documentation/DocBook/80211.tmpl +++ b/Documentation/DocBook/80211.tmpl | |||
@@ -127,14 +127,11 @@ | |||
127 | !Finclude/net/cfg80211.h cfg80211_ibss_params | 127 | !Finclude/net/cfg80211.h cfg80211_ibss_params |
128 | !Finclude/net/cfg80211.h cfg80211_connect_params | 128 | !Finclude/net/cfg80211.h cfg80211_connect_params |
129 | !Finclude/net/cfg80211.h cfg80211_pmksa | 129 | !Finclude/net/cfg80211.h cfg80211_pmksa |
130 | !Finclude/net/cfg80211.h cfg80211_send_rx_auth | 130 | !Finclude/net/cfg80211.h cfg80211_rx_mlme_mgmt |
131 | !Finclude/net/cfg80211.h cfg80211_send_auth_timeout | 131 | !Finclude/net/cfg80211.h cfg80211_auth_timeout |
132 | !Finclude/net/cfg80211.h cfg80211_send_rx_assoc | 132 | !Finclude/net/cfg80211.h cfg80211_rx_assoc_resp |
133 | !Finclude/net/cfg80211.h cfg80211_send_assoc_timeout | 133 | !Finclude/net/cfg80211.h cfg80211_assoc_timeout |
134 | !Finclude/net/cfg80211.h cfg80211_send_deauth | 134 | !Finclude/net/cfg80211.h cfg80211_tx_mlme_mgmt |
135 | !Finclude/net/cfg80211.h __cfg80211_send_deauth | ||
136 | !Finclude/net/cfg80211.h cfg80211_send_disassoc | ||
137 | !Finclude/net/cfg80211.h __cfg80211_send_disassoc | ||
138 | !Finclude/net/cfg80211.h cfg80211_ibss_joined | 135 | !Finclude/net/cfg80211.h cfg80211_ibss_joined |
139 | !Finclude/net/cfg80211.h cfg80211_connect_result | 136 | !Finclude/net/cfg80211.h cfg80211_connect_result |
140 | !Finclude/net/cfg80211.h cfg80211_roamed | 137 | !Finclude/net/cfg80211.h cfg80211_roamed |
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index c36892c072da..cbfdf5486639 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
@@ -126,6 +126,8 @@ X!Edrivers/base/interface.c | |||
126 | </sect1> | 126 | </sect1> |
127 | <sect1><title>Device Drivers DMA Management</title> | 127 | <sect1><title>Device Drivers DMA Management</title> |
128 | !Edrivers/base/dma-buf.c | 128 | !Edrivers/base/dma-buf.c |
129 | !Edrivers/base/reservation.c | ||
130 | !Iinclude/linux/reservation.h | ||
129 | !Edrivers/base/dma-coherent.c | 131 | !Edrivers/base/dma-coherent.c |
130 | !Edrivers/base/dma-mapping.c | 132 | !Edrivers/base/dma-mapping.c |
131 | </sect1> | 133 | </sect1> |
@@ -297,10 +299,10 @@ KAO --> | |||
297 | </sect1> | 299 | </sect1> |
298 | <sect1><title>Frame Buffer Fonts</title> | 300 | <sect1><title>Frame Buffer Fonts</title> |
299 | <para> | 301 | <para> |
300 | Refer to the file drivers/video/console/fonts.c for more information. | 302 | Refer to the file lib/fonts/fonts.c for more information. |
301 | </para> | 303 | </para> |
302 | <!-- FIXME: Removed for now since no structured comments in source | 304 | <!-- FIXME: Removed for now since no structured comments in source |
303 | X!Idrivers/video/console/fonts.c | 305 | X!Ilib/fonts/fonts.c |
304 | --> | 306 | --> |
305 | </sect1> | 307 | </sect1> |
306 | </chapter> | 308 | </chapter> |
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index f9df3b872c16..7d1278e7a434 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
@@ -186,11 +186,12 @@ | |||
186 | <varlistentry> | 186 | <varlistentry> |
187 | <term>DRIVER_HAVE_IRQ</term><term>DRIVER_IRQ_SHARED</term> | 187 | <term>DRIVER_HAVE_IRQ</term><term>DRIVER_IRQ_SHARED</term> |
188 | <listitem><para> | 188 | <listitem><para> |
189 | DRIVER_HAVE_IRQ indicates whether the driver has an IRQ handler. The | 189 | DRIVER_HAVE_IRQ indicates whether the driver has an IRQ handler |
190 | DRM core will automatically register an interrupt handler when the | 190 | managed by the DRM Core. The core will support simple IRQ handler |
191 | flag is set. DRIVER_IRQ_SHARED indicates whether the device & | 191 | installation when the flag is set. The installation process is |
192 | handler support shared IRQs (note that this is required of PCI | 192 | described in <xref linkend="drm-irq-registration"/>.</para> |
193 | drivers). | 193 | <para>DRIVER_IRQ_SHARED indicates whether the device & handler |
194 | support shared IRQs (note that this is required of PCI drivers). | ||
194 | </para></listitem> | 195 | </para></listitem> |
195 | </varlistentry> | 196 | </varlistentry> |
196 | <varlistentry> | 197 | <varlistentry> |
@@ -344,50 +345,71 @@ char *date;</synopsis> | |||
344 | The DRM core tries to facilitate IRQ handler registration and | 345 | The DRM core tries to facilitate IRQ handler registration and |
345 | unregistration by providing <function>drm_irq_install</function> and | 346 | unregistration by providing <function>drm_irq_install</function> and |
346 | <function>drm_irq_uninstall</function> functions. Those functions only | 347 | <function>drm_irq_uninstall</function> functions. Those functions only |
347 | support a single interrupt per device. | 348 | support a single interrupt per device, devices that use more than one |
348 | </para> | 349 | IRQs need to be handled manually. |
349 | <!--!Fdrivers/char/drm/drm_irq.c drm_irq_install--> | ||
350 | <para> | ||
351 | Both functions get the device IRQ by calling | ||
352 | <function>drm_dev_to_irq</function>. This inline function will call a | ||
353 | bus-specific operation to retrieve the IRQ number. For platform devices, | ||
354 | <function>platform_get_irq</function>(..., 0) is used to retrieve the | ||
355 | IRQ number. | ||
356 | </para> | ||
357 | <para> | ||
358 | <function>drm_irq_install</function> starts by calling the | ||
359 | <methodname>irq_preinstall</methodname> driver operation. The operation | ||
360 | is optional and must make sure that the interrupt will not get fired by | ||
361 | clearing all pending interrupt flags or disabling the interrupt. | ||
362 | </para> | ||
363 | <para> | ||
364 | The IRQ will then be requested by a call to | ||
365 | <function>request_irq</function>. If the DRIVER_IRQ_SHARED driver | ||
366 | feature flag is set, a shared (IRQF_SHARED) IRQ handler will be | ||
367 | requested. | ||
368 | </para> | ||
369 | <para> | ||
370 | The IRQ handler function must be provided as the mandatory irq_handler | ||
371 | driver operation. It will get passed directly to | ||
372 | <function>request_irq</function> and thus has the same prototype as all | ||
373 | IRQ handlers. It will get called with a pointer to the DRM device as the | ||
374 | second argument. | ||
375 | </para> | ||
376 | <para> | ||
377 | Finally the function calls the optional | ||
378 | <methodname>irq_postinstall</methodname> driver operation. The operation | ||
379 | usually enables interrupts (excluding the vblank interrupt, which is | ||
380 | enabled separately), but drivers may choose to enable/disable interrupts | ||
381 | at a different time. | ||
382 | </para> | ||
383 | <para> | ||
384 | <function>drm_irq_uninstall</function> is similarly used to uninstall an | ||
385 | IRQ handler. It starts by waking up all processes waiting on a vblank | ||
386 | interrupt to make sure they don't hang, and then calls the optional | ||
387 | <methodname>irq_uninstall</methodname> driver operation. The operation | ||
388 | must disable all hardware interrupts. Finally the function frees the IRQ | ||
389 | by calling <function>free_irq</function>. | ||
390 | </para> | 350 | </para> |
351 | <sect4> | ||
352 | <title>Managed IRQ Registration</title> | ||
353 | <para> | ||
354 | Both the <function>drm_irq_install</function> and | ||
355 | <function>drm_irq_uninstall</function> functions get the device IRQ by | ||
356 | calling <function>drm_dev_to_irq</function>. This inline function will | ||
357 | call a bus-specific operation to retrieve the IRQ number. For platform | ||
358 | devices, <function>platform_get_irq</function>(..., 0) is used to | ||
359 | retrieve the IRQ number. | ||
360 | </para> | ||
361 | <para> | ||
362 | <function>drm_irq_install</function> starts by calling the | ||
363 | <methodname>irq_preinstall</methodname> driver operation. The operation | ||
364 | is optional and must make sure that the interrupt will not get fired by | ||
365 | clearing all pending interrupt flags or disabling the interrupt. | ||
366 | </para> | ||
367 | <para> | ||
368 | The IRQ will then be requested by a call to | ||
369 | <function>request_irq</function>. If the DRIVER_IRQ_SHARED driver | ||
370 | feature flag is set, a shared (IRQF_SHARED) IRQ handler will be | ||
371 | requested. | ||
372 | </para> | ||
373 | <para> | ||
374 | The IRQ handler function must be provided as the mandatory irq_handler | ||
375 | driver operation. It will get passed directly to | ||
376 | <function>request_irq</function> and thus has the same prototype as all | ||
377 | IRQ handlers. It will get called with a pointer to the DRM device as the | ||
378 | second argument. | ||
379 | </para> | ||
380 | <para> | ||
381 | Finally the function calls the optional | ||
382 | <methodname>irq_postinstall</methodname> driver operation. The operation | ||
383 | usually enables interrupts (excluding the vblank interrupt, which is | ||
384 | enabled separately), but drivers may choose to enable/disable interrupts | ||
385 | at a different time. | ||
386 | </para> | ||
387 | <para> | ||
388 | <function>drm_irq_uninstall</function> is similarly used to uninstall an | ||
389 | IRQ handler. It starts by waking up all processes waiting on a vblank | ||
390 | interrupt to make sure they don't hang, and then calls the optional | ||
391 | <methodname>irq_uninstall</methodname> driver operation. The operation | ||
392 | must disable all hardware interrupts. Finally the function frees the IRQ | ||
393 | by calling <function>free_irq</function>. | ||
394 | </para> | ||
395 | </sect4> | ||
396 | <sect4> | ||
397 | <title>Manual IRQ Registration</title> | ||
398 | <para> | ||
399 | Drivers that require multiple interrupt handlers can't use the managed | ||
400 | IRQ registration functions. In that case IRQs must be registered and | ||
401 | unregistered manually (usually with the <function>request_irq</function> | ||
402 | and <function>free_irq</function> functions, or their devm_* equivalent). | ||
403 | </para> | ||
404 | <para> | ||
405 | When manually registering IRQs, drivers must not set the DRIVER_HAVE_IRQ | ||
406 | driver feature flag, and must not provide the | ||
407 | <methodname>irq_handler</methodname> driver operation. They must set the | ||
408 | <structname>drm_device</structname> <structfield>irq_enabled</structfield> | ||
409 | field to 1 upon registration of the IRQs, and clear it to 0 after | ||
410 | unregistering the IRQs. | ||
411 | </para> | ||
412 | </sect4> | ||
391 | </sect3> | 413 | </sect3> |
392 | <sect3> | 414 | <sect3> |
393 | <title>Memory Manager Initialization</title> | 415 | <title>Memory Manager Initialization</title> |
@@ -434,7 +456,7 @@ char *date;</synopsis> | |||
434 | The DRM core includes two memory managers, namely Translation Table Maps | 456 | The DRM core includes two memory managers, namely Translation Table Maps |
435 | (TTM) and Graphics Execution Manager (GEM). TTM was the first DRM memory | 457 | (TTM) and Graphics Execution Manager (GEM). TTM was the first DRM memory |
436 | manager to be developed and tried to be a one-size-fits-them all | 458 | manager to be developed and tried to be a one-size-fits-them all |
437 | solution. It provides a single userspace API to accomodate the need of | 459 | solution. It provides a single userspace API to accommodate the need of |
438 | all hardware, supporting both Unified Memory Architecture (UMA) devices | 460 | all hardware, supporting both Unified Memory Architecture (UMA) devices |
439 | and devices with dedicated video RAM (i.e. most discrete video cards). | 461 | and devices with dedicated video RAM (i.e. most discrete video cards). |
440 | This resulted in a large, complex piece of code that turned out to be | 462 | This resulted in a large, complex piece of code that turned out to be |
@@ -701,7 +723,7 @@ char *date;</synopsis> | |||
701 | <para> | 723 | <para> |
702 | Similar to global names, GEM file descriptors are also used to share GEM | 724 | Similar to global names, GEM file descriptors are also used to share GEM |
703 | objects across processes. They offer additional security: as file | 725 | objects across processes. They offer additional security: as file |
704 | descriptors must be explictly sent over UNIX domain sockets to be shared | 726 | descriptors must be explicitly sent over UNIX domain sockets to be shared |
705 | between applications, they can't be guessed like the globally unique GEM | 727 | between applications, they can't be guessed like the globally unique GEM |
706 | names. | 728 | names. |
707 | </para> | 729 | </para> |
@@ -1154,7 +1176,7 @@ int max_width, max_height;</synopsis> | |||
1154 | </para> | 1176 | </para> |
1155 | <para> | 1177 | <para> |
1156 | The <methodname>page_flip</methodname> operation schedules a page flip. | 1178 | The <methodname>page_flip</methodname> operation schedules a page flip. |
1157 | Once any pending rendering targetting the new frame buffer has | 1179 | Once any pending rendering targeting the new frame buffer has |
1158 | completed, the CRTC will be reprogrammed to display that frame buffer | 1180 | completed, the CRTC will be reprogrammed to display that frame buffer |
1159 | after the next vertical refresh. The operation must return immediately | 1181 | after the next vertical refresh. The operation must return immediately |
1160 | without waiting for rendering or page flip to complete and must block | 1182 | without waiting for rendering or page flip to complete and must block |
@@ -1214,6 +1236,15 @@ int max_width, max_height;</synopsis> | |||
1214 | <title>Miscellaneous</title> | 1236 | <title>Miscellaneous</title> |
1215 | <itemizedlist> | 1237 | <itemizedlist> |
1216 | <listitem> | 1238 | <listitem> |
1239 | <synopsis>void (*set_property)(struct drm_crtc *crtc, | ||
1240 | struct drm_property *property, uint64_t value);</synopsis> | ||
1241 | <para> | ||
1242 | Set the value of the given CRTC property to | ||
1243 | <parameter>value</parameter>. See <xref linkend="drm-kms-properties"/> | ||
1244 | for more information about properties. | ||
1245 | </para> | ||
1246 | </listitem> | ||
1247 | <listitem> | ||
1217 | <synopsis>void (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, | 1248 | <synopsis>void (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, |
1218 | uint32_t start, uint32_t size);</synopsis> | 1249 | uint32_t start, uint32_t size);</synopsis> |
1219 | <para> | 1250 | <para> |
@@ -1363,6 +1394,15 @@ int max_width, max_height;</synopsis> | |||
1363 | <xref linkend="drm-kms-init"/>. | 1394 | <xref linkend="drm-kms-init"/>. |
1364 | </para> | 1395 | </para> |
1365 | </listitem> | 1396 | </listitem> |
1397 | <listitem> | ||
1398 | <synopsis>void (*set_property)(struct drm_plane *plane, | ||
1399 | struct drm_property *property, uint64_t value);</synopsis> | ||
1400 | <para> | ||
1401 | Set the value of the given plane property to | ||
1402 | <parameter>value</parameter>. See <xref linkend="drm-kms-properties"/> | ||
1403 | for more information about properties. | ||
1404 | </para> | ||
1405 | </listitem> | ||
1366 | </itemizedlist> | 1406 | </itemizedlist> |
1367 | </sect3> | 1407 | </sect3> |
1368 | </sect2> | 1408 | </sect2> |
@@ -1572,6 +1612,15 @@ int max_width, max_height;</synopsis> | |||
1572 | <title>Miscellaneous</title> | 1612 | <title>Miscellaneous</title> |
1573 | <itemizedlist> | 1613 | <itemizedlist> |
1574 | <listitem> | 1614 | <listitem> |
1615 | <synopsis>void (*set_property)(struct drm_connector *connector, | ||
1616 | struct drm_property *property, uint64_t value);</synopsis> | ||
1617 | <para> | ||
1618 | Set the value of the given connector property to | ||
1619 | <parameter>value</parameter>. See <xref linkend="drm-kms-properties"/> | ||
1620 | for more information about properties. | ||
1621 | </para> | ||
1622 | </listitem> | ||
1623 | <listitem> | ||
1575 | <synopsis>void (*destroy)(struct drm_connector *connector);</synopsis> | 1624 | <synopsis>void (*destroy)(struct drm_connector *connector);</synopsis> |
1576 | <para> | 1625 | <para> |
1577 | Destroy the connector when not needed anymore. See | 1626 | Destroy the connector when not needed anymore. See |
@@ -1846,10 +1895,6 @@ void intel_crt_init(struct drm_device *dev) | |||
1846 | <synopsis>bool (*mode_fixup)(struct drm_encoder *encoder, | 1895 | <synopsis>bool (*mode_fixup)(struct drm_encoder *encoder, |
1847 | const struct drm_display_mode *mode, | 1896 | const struct drm_display_mode *mode, |
1848 | struct drm_display_mode *adjusted_mode);</synopsis> | 1897 | struct drm_display_mode *adjusted_mode);</synopsis> |
1849 | <note><para> | ||
1850 | FIXME: The mode argument be const, but the i915 driver modifies | ||
1851 | mode->clock in <function>intel_dp_mode_fixup</function>. | ||
1852 | </para></note> | ||
1853 | <para> | 1898 | <para> |
1854 | Let encoders adjust the requested mode or reject it completely. This | 1899 | Let encoders adjust the requested mode or reject it completely. This |
1855 | operation returns true if the mode is accepted (possibly after being | 1900 | operation returns true if the mode is accepted (possibly after being |
@@ -2161,6 +2206,128 @@ void intel_crt_init(struct drm_device *dev) | |||
2161 | <title>EDID Helper Functions Reference</title> | 2206 | <title>EDID Helper Functions Reference</title> |
2162 | !Edrivers/gpu/drm/drm_edid.c | 2207 | !Edrivers/gpu/drm/drm_edid.c |
2163 | </sect2> | 2208 | </sect2> |
2209 | <sect2> | ||
2210 | <title>Rectangle Utilities Reference</title> | ||
2211 | !Pinclude/drm/drm_rect.h rect utils | ||
2212 | !Iinclude/drm/drm_rect.h | ||
2213 | !Edrivers/gpu/drm/drm_rect.c | ||
2214 | </sect2> | ||
2215 | </sect1> | ||
2216 | |||
2217 | <!-- Internals: kms properties --> | ||
2218 | |||
2219 | <sect1 id="drm-kms-properties"> | ||
2220 | <title>KMS Properties</title> | ||
2221 | <para> | ||
2222 | Drivers may need to expose additional parameters to applications than | ||
2223 | those described in the previous sections. KMS supports attaching | ||
2224 | properties to CRTCs, connectors and planes and offers a userspace API to | ||
2225 | list, get and set the property values. | ||
2226 | </para> | ||
2227 | <para> | ||
2228 | Properties are identified by a name that uniquely defines the property | ||
2229 | purpose, and store an associated value. For all property types except blob | ||
2230 | properties the value is a 64-bit unsigned integer. | ||
2231 | </para> | ||
2232 | <para> | ||
2233 | KMS differentiates between properties and property instances. Drivers | ||
2234 | first create properties and then create and associate individual instances | ||
2235 | of those properties to objects. A property can be instantiated multiple | ||
2236 | times and associated with different objects. Values are stored in property | ||
2237 | instances, and all other property information are stored in the propery | ||
2238 | and shared between all instances of the property. | ||
2239 | </para> | ||
2240 | <para> | ||
2241 | Every property is created with a type that influences how the KMS core | ||
2242 | handles the property. Supported property types are | ||
2243 | <variablelist> | ||
2244 | <varlistentry> | ||
2245 | <term>DRM_MODE_PROP_RANGE</term> | ||
2246 | <listitem><para>Range properties report their minimum and maximum | ||
2247 | admissible values. The KMS core verifies that values set by | ||
2248 | application fit in that range.</para></listitem> | ||
2249 | </varlistentry> | ||
2250 | <varlistentry> | ||
2251 | <term>DRM_MODE_PROP_ENUM</term> | ||
2252 | <listitem><para>Enumerated properties take a numerical value that | ||
2253 | ranges from 0 to the number of enumerated values defined by the | ||
2254 | property minus one, and associate a free-formed string name to each | ||
2255 | value. Applications can retrieve the list of defined value-name pairs | ||
2256 | and use the numerical value to get and set property instance values. | ||
2257 | </para></listitem> | ||
2258 | </varlistentry> | ||
2259 | <varlistentry> | ||
2260 | <term>DRM_MODE_PROP_BITMASK</term> | ||
2261 | <listitem><para>Bitmask properties are enumeration properties that | ||
2262 | additionally restrict all enumerated values to the 0..63 range. | ||
2263 | Bitmask property instance values combine one or more of the | ||
2264 | enumerated bits defined by the property.</para></listitem> | ||
2265 | </varlistentry> | ||
2266 | <varlistentry> | ||
2267 | <term>DRM_MODE_PROP_BLOB</term> | ||
2268 | <listitem><para>Blob properties store a binary blob without any format | ||
2269 | restriction. The binary blobs are created as KMS standalone objects, | ||
2270 | and blob property instance values store the ID of their associated | ||
2271 | blob object.</para> | ||
2272 | <para>Blob properties are only used for the connector EDID property | ||
2273 | and cannot be created by drivers.</para></listitem> | ||
2274 | </varlistentry> | ||
2275 | </variablelist> | ||
2276 | </para> | ||
2277 | <para> | ||
2278 | To create a property drivers call one of the following functions depending | ||
2279 | on the property type. All property creation functions take property flags | ||
2280 | and name, as well as type-specific arguments. | ||
2281 | <itemizedlist> | ||
2282 | <listitem> | ||
2283 | <synopsis>struct drm_property *drm_property_create_range(struct drm_device *dev, int flags, | ||
2284 | const char *name, | ||
2285 | uint64_t min, uint64_t max);</synopsis> | ||
2286 | <para>Create a range property with the given minimum and maximum | ||
2287 | values.</para> | ||
2288 | </listitem> | ||
2289 | <listitem> | ||
2290 | <synopsis>struct drm_property *drm_property_create_enum(struct drm_device *dev, int flags, | ||
2291 | const char *name, | ||
2292 | const struct drm_prop_enum_list *props, | ||
2293 | int num_values);</synopsis> | ||
2294 | <para>Create an enumerated property. The <parameter>props</parameter> | ||
2295 | argument points to an array of <parameter>num_values</parameter> | ||
2296 | value-name pairs.</para> | ||
2297 | </listitem> | ||
2298 | <listitem> | ||
2299 | <synopsis>struct drm_property *drm_property_create_bitmask(struct drm_device *dev, | ||
2300 | int flags, const char *name, | ||
2301 | const struct drm_prop_enum_list *props, | ||
2302 | int num_values);</synopsis> | ||
2303 | <para>Create a bitmask property. The <parameter>props</parameter> | ||
2304 | argument points to an array of <parameter>num_values</parameter> | ||
2305 | value-name pairs.</para> | ||
2306 | </listitem> | ||
2307 | </itemizedlist> | ||
2308 | </para> | ||
2309 | <para> | ||
2310 | Properties can additionally be created as immutable, in which case they | ||
2311 | will be read-only for applications but can be modified by the driver. To | ||
2312 | create an immutable property drivers must set the DRM_MODE_PROP_IMMUTABLE | ||
2313 | flag at property creation time. | ||
2314 | </para> | ||
2315 | <para> | ||
2316 | When no array of value-name pairs is readily available at property | ||
2317 | creation time for enumerated or range properties, drivers can create | ||
2318 | the property using the <function>drm_property_create</function> function | ||
2319 | and manually add enumeration value-name pairs by calling the | ||
2320 | <function>drm_property_add_enum</function> function. Care must be taken to | ||
2321 | properly specify the property type through the <parameter>flags</parameter> | ||
2322 | argument. | ||
2323 | </para> | ||
2324 | <para> | ||
2325 | After creating properties drivers can attach property instances to CRTC, | ||
2326 | connector and plane objects by calling the | ||
2327 | <function>drm_object_attach_property</function>. The function takes a | ||
2328 | pointer to the target object, a pointer to the previously created property | ||
2329 | and an initial instance value. | ||
2330 | </para> | ||
2164 | </sect1> | 2331 | </sect1> |
2165 | 2332 | ||
2166 | <!-- Internals: vertical blanking --> | 2333 | <!-- Internals: vertical blanking --> |
diff --git a/Documentation/DocBook/genericirq.tmpl b/Documentation/DocBook/genericirq.tmpl index b3422341d65c..d16d21b7a3b7 100644 --- a/Documentation/DocBook/genericirq.tmpl +++ b/Documentation/DocBook/genericirq.tmpl | |||
@@ -464,6 +464,19 @@ if (desc->irq_data.chip->irq_eoi) | |||
464 | protected via desc->lock, by the generic layer. | 464 | protected via desc->lock, by the generic layer. |
465 | </para> | 465 | </para> |
466 | </chapter> | 466 | </chapter> |
467 | |||
468 | <chapter id="genericchip"> | ||
469 | <title>Generic interrupt chip</title> | ||
470 | <para> | ||
471 | To avoid copies of identical implementations of irq chips the | ||
472 | core provides a configurable generic interrupt chip | ||
473 | implementation. Developers should check carefuly whether the | ||
474 | generic chip fits their needs before implementing the same | ||
475 | functionality slightly different themself. | ||
476 | </para> | ||
477 | !Ekernel/irq/generic-chip.c | ||
478 | </chapter> | ||
479 | |||
467 | <chapter id="structs"> | 480 | <chapter id="structs"> |
468 | <title>Structures</title> | 481 | <title>Structures</title> |
469 | <para> | 482 | <para> |
diff --git a/Documentation/DocBook/kernel-locking.tmpl b/Documentation/DocBook/kernel-locking.tmpl index 67e7ab41c0a6..09e884e5b9f5 100644 --- a/Documentation/DocBook/kernel-locking.tmpl +++ b/Documentation/DocBook/kernel-locking.tmpl | |||
@@ -1955,12 +1955,17 @@ machines due to caching. | |||
1955 | </sect1> | 1955 | </sect1> |
1956 | </chapter> | 1956 | </chapter> |
1957 | 1957 | ||
1958 | <chapter id="apiref"> | 1958 | <chapter id="apiref-mutex"> |
1959 | <title>Mutex API reference</title> | 1959 | <title>Mutex API reference</title> |
1960 | !Iinclude/linux/mutex.h | 1960 | !Iinclude/linux/mutex.h |
1961 | !Ekernel/mutex.c | 1961 | !Ekernel/mutex.c |
1962 | </chapter> | 1962 | </chapter> |
1963 | 1963 | ||
1964 | <chapter id="apiref-futex"> | ||
1965 | <title>Futex API reference</title> | ||
1966 | !Ikernel/futex.c | ||
1967 | </chapter> | ||
1968 | |||
1964 | <chapter id="references"> | 1969 | <chapter id="references"> |
1965 | <title>Further reading</title> | 1970 | <title>Further reading</title> |
1966 | 1971 | ||
diff --git a/Documentation/DocBook/media/dvb/frontend.xml b/Documentation/DocBook/media/dvb/frontend.xml index df39ba395df0..0d6e81bd9ed2 100644 --- a/Documentation/DocBook/media/dvb/frontend.xml +++ b/Documentation/DocBook/media/dvb/frontend.xml | |||
@@ -233,7 +233,7 @@ typedef enum fe_status { | |||
233 | <entry align="char">The frontend FEC inner coding (Viterbi, LDPC or other inner code) is stable</entry> | 233 | <entry align="char">The frontend FEC inner coding (Viterbi, LDPC or other inner code) is stable</entry> |
234 | </row><row> | 234 | </row><row> |
235 | <entry align="char">FE_HAS_SYNC</entry> | 235 | <entry align="char">FE_HAS_SYNC</entry> |
236 | <entry align="char">Syncronization bytes was found</entry> | 236 | <entry align="char">Synchronization bytes was found</entry> |
237 | </row><row> | 237 | </row><row> |
238 | <entry align="char">FE_HAS_LOCK</entry> | 238 | <entry align="char">FE_HAS_LOCK</entry> |
239 | <entry align="char">The DVB were locked and everything is working</entry> | 239 | <entry align="char">The DVB were locked and everything is working</entry> |
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index 8d7a77928d49..c2fc9ec1417e 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -3147,7 +3147,7 @@ giving priority to the center of the metered area.</entry> | |||
3147 | <entry>A multi-zone metering. The light intensity is measured | 3147 | <entry>A multi-zone metering. The light intensity is measured |
3148 | in several points of the frame and the the results are combined. The | 3148 | in several points of the frame and the the results are combined. The |
3149 | algorithm of the zones selection and their significance in calculating the | 3149 | algorithm of the zones selection and their significance in calculating the |
3150 | final value is device dependant.</entry> | 3150 | final value is device dependent.</entry> |
3151 | </row> | 3151 | </row> |
3152 | </tbody> | 3152 | </tbody> |
3153 | </entrytbl> | 3153 | </entrytbl> |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml index 2f82b1da8dfe..8a70a1707b7a 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml | |||
@@ -24,7 +24,7 @@ into 64x32 macroblocks. The CbCr plane has the same width, in bytes, as the Y | |||
24 | plane (and the image), but is half as tall in pixels. The chroma plane is also | 24 | plane (and the image), but is half as tall in pixels. The chroma plane is also |
25 | grouped into 64x32 macroblocks.</para> | 25 | grouped into 64x32 macroblocks.</para> |
26 | <para>Width of the buffer has to be aligned to the multiple of 128, and | 26 | <para>Width of the buffer has to be aligned to the multiple of 128, and |
27 | height alignment is 32. Every four adjactent buffers - two horizontally and two | 27 | height alignment is 32. Every four adjacent buffers - two horizontally and two |
28 | vertically are grouped together and are located in memory in Z or flipped Z | 28 | vertically are grouped together and are located in memory in Z or flipped Z |
29 | order. </para> | 29 | order. </para> |
30 | <para>Layout of macroblocks in memory is presented in the following | 30 | <para>Layout of macroblocks in memory is presented in the following |
diff --git a/Documentation/DocBook/writing_usb_driver.tmpl b/Documentation/DocBook/writing_usb_driver.tmpl index bd97a13fa5ae..3210dcf741c9 100644 --- a/Documentation/DocBook/writing_usb_driver.tmpl +++ b/Documentation/DocBook/writing_usb_driver.tmpl | |||
@@ -83,7 +83,7 @@ | |||
83 | </para> | 83 | </para> |
84 | <para> | 84 | <para> |
85 | Because each different protocol causes a new driver to be created, I have | 85 | Because each different protocol causes a new driver to be created, I have |
86 | written a generic USB driver skeleton, modeled after the pci-skeleton.c | 86 | written a generic USB driver skeleton, modelled after the pci-skeleton.c |
87 | file in the kernel source tree upon which many PCI network drivers have | 87 | file in the kernel source tree upon which many PCI network drivers have |
88 | been based. This USB skeleton can be found at drivers/usb/usb-skeleton.c | 88 | been based. This USB skeleton can be found at drivers/usb/usb-skeleton.c |
89 | in the kernel source tree. In this article I will walk through the basics | 89 | in the kernel source tree. In this article I will walk through the basics |