aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/DocBook
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2012-12-27 09:44:11 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-12-27 09:44:11 -0500
commita44dca1717ce2c2381339e21c07d1731a63a7888 (patch)
tree3d0b3bd26492f9fa1f1f1c1ad838315b266da7c1 /Documentation/DocBook
parent30ebc5e44d057a1619ad63fe32c8c1670c37c4b8 (diff)
parenta49f0d1ea3ec94fc7cf33a7c36a16343b74bd565 (diff)
Merge tag 'v3.8-rc1' into staging/for_v3.9
Linux 3.8-rc1 * tag 'v3.8-rc1': (10696 commits) Linux 3.8-rc1 Revert "nfsd: warn on odd reply state in nfsd_vfs_read" ARM: dts: fix duplicated build target and alphabetical sort out for exynos dm stripe: add WRITE SAME support dm: remove map_info dm snapshot: do not use map_context dm thin: dont use map_context dm raid1: dont use map_context dm flakey: dont use map_context dm raid1: rename read_record to bio_record dm: move target request nr to dm_target_io dm snapshot: use per_bio_data dm verity: use per_bio_data dm raid1: use per_bio_data dm: introduce per_bio_data dm kcopyd: add WRITE SAME support to dm_kcopyd_zero dm linear: add WRITE SAME support dm: add WRITE SAME support dm: prepare to support WRITE SAME dm ioctl: use kmalloc if possible ... Conflicts: MAINTAINERS
Diffstat (limited to 'Documentation/DocBook')
-rw-r--r--Documentation/DocBook/drm.tmpl39
-rw-r--r--Documentation/DocBook/gadget.tmpl2
-rw-r--r--Documentation/DocBook/kernel-api.tmpl3
-rw-r--r--Documentation/DocBook/uio-howto.tmpl56
-rw-r--r--Documentation/DocBook/writing-an-alsa-driver.tmpl85
5 files changed, 110 insertions, 75 deletions
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index b0300529ab13..4ee2304f82f9 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -1141,23 +1141,13 @@ int max_width, max_height;</synopsis>
1141 the <methodname>page_flip</methodname> operation will be called with a 1141 the <methodname>page_flip</methodname> operation will be called with a
1142 non-NULL <parameter>event</parameter> argument pointing to a 1142 non-NULL <parameter>event</parameter> argument pointing to a
1143 <structname>drm_pending_vblank_event</structname> instance. Upon page 1143 <structname>drm_pending_vblank_event</structname> instance. Upon page
1144 flip completion the driver must fill the 1144 flip completion the driver must call <methodname>drm_send_vblank_event</methodname>
1145 <parameter>event</parameter>::<structfield>event</structfield> 1145 to fill in the event and send to wake up any waiting processes.
1146 <structfield>sequence</structfield>, <structfield>tv_sec</structfield> 1146 This can be performed with
1147 and <structfield>tv_usec</structfield> fields with the associated
1148 vertical blanking count and timestamp, add the event to the
1149 <parameter>drm_file</parameter> list of events to be signaled, and wake
1150 up any waiting process. This can be performed with
1151 <programlisting><![CDATA[ 1147 <programlisting><![CDATA[
1152 struct timeval now;
1153
1154 event->event.sequence = drm_vblank_count_and_time(..., &now);
1155 event->event.tv_sec = now.tv_sec;
1156 event->event.tv_usec = now.tv_usec;
1157
1158 spin_lock_irqsave(&dev->event_lock, flags); 1148 spin_lock_irqsave(&dev->event_lock, flags);
1159 list_add_tail(&event->base.link, &event->base.file_priv->event_list); 1149 ...
1160 wake_up_interruptible(&event->base.file_priv->event_wait); 1150 drm_send_vblank_event(dev, pipe, event);
1161 spin_unlock_irqrestore(&dev->event_lock, flags); 1151 spin_unlock_irqrestore(&dev->event_lock, flags);
1162 ]]></programlisting> 1152 ]]></programlisting>
1163 </para> 1153 </para>
@@ -1621,10 +1611,10 @@ void intel_crt_init(struct drm_device *dev)
1621 </sect2> 1611 </sect2>
1622 </sect1> 1612 </sect1>
1623 1613
1624 <!-- Internals: mid-layer helper functions --> 1614 <!-- Internals: kms helper functions -->
1625 1615
1626 <sect1> 1616 <sect1>
1627 <title>Mid-layer Helper Functions</title> 1617 <title>Mode Setting Helper Functions</title>
1628 <para> 1618 <para>
1629 The CRTC, encoder and connector functions provided by the drivers 1619 The CRTC, encoder and connector functions provided by the drivers
1630 implement the DRM API. They're called by the DRM core and ioctl handlers 1620 implement the DRM API. They're called by the DRM core and ioctl handlers
@@ -2106,6 +2096,21 @@ void intel_crt_init(struct drm_device *dev)
2106 </listitem> 2096 </listitem>
2107 </itemizedlist> 2097 </itemizedlist>
2108 </sect2> 2098 </sect2>
2099 <sect2>
2100 <title>Modeset Helper Functions Reference</title>
2101!Edrivers/gpu/drm/drm_crtc_helper.c
2102 </sect2>
2103 <sect2>
2104 <title>fbdev Helper Functions Reference</title>
2105!Pdrivers/gpu/drm/drm_fb_helper.c fbdev helpers
2106!Edrivers/gpu/drm/drm_fb_helper.c
2107 </sect2>
2108 <sect2>
2109 <title>Display Port Helper Functions Reference</title>
2110!Pdrivers/gpu/drm/drm_dp_helper.c dp helpers
2111!Iinclude/drm/drm_dp_helper.h
2112!Edrivers/gpu/drm/drm_dp_helper.c
2113 </sect2>
2109 </sect1> 2114 </sect1>
2110 2115
2111 <!-- Internals: vertical blanking --> 2116 <!-- Internals: vertical blanking -->
diff --git a/Documentation/DocBook/gadget.tmpl b/Documentation/DocBook/gadget.tmpl
index 6ef2f0073e5a..4017f147ba2f 100644
--- a/Documentation/DocBook/gadget.tmpl
+++ b/Documentation/DocBook/gadget.tmpl
@@ -671,7 +671,7 @@ than a kernel driver.
671<para>There's a USB Mass Storage class driver, which provides 671<para>There's a USB Mass Storage class driver, which provides
672a different solution for interoperability with systems such 672a different solution for interoperability with systems such
673as MS-Windows and MacOS. 673as MS-Windows and MacOS.
674That <emphasis>File-backed Storage</emphasis> driver uses a 674That <emphasis>Mass Storage</emphasis> driver uses a
675file or block device as backing store for a drive, 675file or block device as backing store for a drive,
676like the <filename>loop</filename> driver. 676like the <filename>loop</filename> driver.
677The USB host uses the BBB, CB, or CBI versions of the mass 677The USB host uses the BBB, CB, or CBI versions of the mass
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 00687ee9d363..f75ab4c1b281 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -58,6 +58,9 @@
58 58
59 <sect1><title>String Conversions</title> 59 <sect1><title>String Conversions</title>
60!Elib/vsprintf.c 60!Elib/vsprintf.c
61!Finclude/linux/kernel.h kstrtol
62!Finclude/linux/kernel.h kstrtoul
63!Elib/kstrtox.c
61 </sect1> 64 </sect1>
62 <sect1><title>String Manipulation</title> 65 <sect1><title>String Manipulation</title>
63<!-- All functions are exported at now 66<!-- All functions are exported at now
diff --git a/Documentation/DocBook/uio-howto.tmpl b/Documentation/DocBook/uio-howto.tmpl
index ac3d0018140c..ddb05e98af0d 100644
--- a/Documentation/DocBook/uio-howto.tmpl
+++ b/Documentation/DocBook/uio-howto.tmpl
@@ -719,6 +719,62 @@ framework to set up sysfs files for this region. Simply leave it alone.
719 </para> 719 </para>
720</sect1> 720</sect1>
721 721
722<sect1 id="using uio_dmem_genirq">
723<title>Using uio_dmem_genirq for platform devices</title>
724 <para>
725 In addition to statically allocated memory ranges, they may also be
726 a desire to use dynamically allocated regions in a user space driver.
727 In particular, being able to access memory made available through the
728 dma-mapping API, may be particularly useful. The
729 <varname>uio_dmem_genirq</varname> driver provides a way to accomplish
730 this.
731 </para>
732 <para>
733 This driver is used in a similar manner to the
734 <varname>"uio_pdrv_genirq"</varname> driver with respect to interrupt
735 configuration and handling.
736 </para>
737 <para>
738 Set the <varname>.name</varname> element of
739 <varname>struct platform_device</varname> to
740 <varname>"uio_dmem_genirq"</varname> to use this driver.
741 </para>
742 <para>
743 When using this driver, fill in the <varname>.platform_data</varname>
744 element of <varname>struct platform_device</varname>, which is of type
745 <varname>struct uio_dmem_genirq_pdata</varname> and which contains the
746 following elements:
747 </para>
748 <itemizedlist>
749 <listitem><varname>struct uio_info uioinfo</varname>: The same
750 structure used as the <varname>uio_pdrv_genirq</varname> platform
751 data</listitem>
752 <listitem><varname>unsigned int *dynamic_region_sizes</varname>:
753 Pointer to list of sizes of dynamic memory regions to be mapped into
754 user space.
755 </listitem>
756 <listitem><varname>unsigned int num_dynamic_regions</varname>:
757 Number of elements in <varname>dynamic_region_sizes</varname> array.
758 </listitem>
759 </itemizedlist>
760 <para>
761 The dynamic regions defined in the platform data will be appended to
762 the <varname> mem[] </varname> array after the platform device
763 resources, which implies that the total number of static and dynamic
764 memory regions cannot exceed <varname>MAX_UIO_MAPS</varname>.
765 </para>
766 <para>
767 The dynamic memory regions will be allocated when the UIO device file,
768 <varname>/dev/uioX</varname> is opened.
769 Simiar to static memory resources, the memory region information for
770 dynamic regions is then visible via sysfs at
771 <varname>/sys/class/uio/uioX/maps/mapY/*</varname>.
772 The dynmaic memory regions will be freed when the UIO device file is
773 closed. When no processes are holding the device file open, the address
774 returned to userspace is ~0.
775 </para>
776</sect1>
777
722</chapter> 778</chapter>
723 779
724<chapter id="userspace_driver" xreflabel="Writing a driver in user space"> 780<chapter id="userspace_driver" xreflabel="Writing a driver in user space">
diff --git a/Documentation/DocBook/writing-an-alsa-driver.tmpl b/Documentation/DocBook/writing-an-alsa-driver.tmpl
index cab4ec58e46e..fb32aead5a0b 100644
--- a/Documentation/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/DocBook/writing-an-alsa-driver.tmpl
@@ -433,9 +433,9 @@
433 /* chip-specific constructor 433 /* chip-specific constructor
434 * (see "Management of Cards and Components") 434 * (see "Management of Cards and Components")
435 */ 435 */
436 static int __devinit snd_mychip_create(struct snd_card *card, 436 static int snd_mychip_create(struct snd_card *card,
437 struct pci_dev *pci, 437 struct pci_dev *pci,
438 struct mychip **rchip) 438 struct mychip **rchip)
439 { 439 {
440 struct mychip *chip; 440 struct mychip *chip;
441 int err; 441 int err;
@@ -475,8 +475,8 @@
475 } 475 }
476 476
477 /* constructor -- see "Constructor" sub-section */ 477 /* constructor -- see "Constructor" sub-section */
478 static int __devinit snd_mychip_probe(struct pci_dev *pci, 478 static int snd_mychip_probe(struct pci_dev *pci,
479 const struct pci_device_id *pci_id) 479 const struct pci_device_id *pci_id)
480 { 480 {
481 static int dev; 481 static int dev;
482 struct snd_card *card; 482 struct snd_card *card;
@@ -526,7 +526,7 @@
526 } 526 }
527 527
528 /* destructor -- see the "Destructor" sub-section */ 528 /* destructor -- see the "Destructor" sub-section */
529 static void __devexit snd_mychip_remove(struct pci_dev *pci) 529 static void snd_mychip_remove(struct pci_dev *pci)
530 { 530 {
531 snd_card_free(pci_get_drvdata(pci)); 531 snd_card_free(pci_get_drvdata(pci));
532 pci_set_drvdata(pci, NULL); 532 pci_set_drvdata(pci, NULL);
@@ -542,9 +542,8 @@
542 <para> 542 <para>
543 The real constructor of PCI drivers is the <function>probe</function> callback. 543 The real constructor of PCI drivers is the <function>probe</function> callback.
544 The <function>probe</function> callback and other component-constructors which are called 544 The <function>probe</function> callback and other component-constructors which are called
545 from the <function>probe</function> callback should be defined with 545 from the <function>probe</function> callback cannot be used with
546 the <parameter>__devinit</parameter> prefix. You 546 the <parameter>__init</parameter> prefix
547 cannot use the <parameter>__init</parameter> prefix for them,
548 because any PCI device could be a hotplug device. 547 because any PCI device could be a hotplug device.
549 </para> 548 </para>
550 549
@@ -728,7 +727,7 @@
728 <informalexample> 727 <informalexample>
729 <programlisting> 728 <programlisting>
730<![CDATA[ 729<![CDATA[
731 static void __devexit snd_mychip_remove(struct pci_dev *pci) 730 static void snd_mychip_remove(struct pci_dev *pci)
732 { 731 {
733 snd_card_free(pci_get_drvdata(pci)); 732 snd_card_free(pci_get_drvdata(pci));
734 pci_set_drvdata(pci, NULL); 733 pci_set_drvdata(pci, NULL);
@@ -1059,14 +1058,6 @@
1059 </para> 1058 </para>
1060 1059
1061 <para> 1060 <para>
1062 As further notes, the destructors (both
1063 <function>snd_mychip_dev_free</function> and
1064 <function>snd_mychip_free</function>) cannot be defined with
1065 the <parameter>__devexit</parameter> prefix, because they may be
1066 called from the constructor, too, at the false path.
1067 </para>
1068
1069 <para>
1070 For a device which allows hotplugging, you can use 1061 For a device which allows hotplugging, you can use
1071 <function>snd_card_free_when_closed</function>. This one will 1062 <function>snd_card_free_when_closed</function>. This one will
1072 postpone the destruction until all devices are closed. 1063 postpone the destruction until all devices are closed.
@@ -1120,9 +1111,9 @@
1120 } 1111 }
1121 1112
1122 /* chip-specific constructor */ 1113 /* chip-specific constructor */
1123 static int __devinit snd_mychip_create(struct snd_card *card, 1114 static int snd_mychip_create(struct snd_card *card,
1124 struct pci_dev *pci, 1115 struct pci_dev *pci,
1125 struct mychip **rchip) 1116 struct mychip **rchip)
1126 { 1117 {
1127 struct mychip *chip; 1118 struct mychip *chip;
1128 int err; 1119 int err;
@@ -1200,7 +1191,7 @@
1200 .name = KBUILD_MODNAME, 1191 .name = KBUILD_MODNAME,
1201 .id_table = snd_mychip_ids, 1192 .id_table = snd_mychip_ids,
1202 .probe = snd_mychip_probe, 1193 .probe = snd_mychip_probe,
1203 .remove = __devexit_p(snd_mychip_remove), 1194 .remove = snd_mychip_remove,
1204 }; 1195 };
1205 1196
1206 /* module initialization */ 1197 /* module initialization */
@@ -1465,11 +1456,6 @@
1465 </para> 1456 </para>
1466 1457
1467 <para> 1458 <para>
1468 Again, remember that you cannot
1469 use the <parameter>__devexit</parameter> prefix for this destructor.
1470 </para>
1471
1472 <para>
1473 We didn't implement the hardware disabling part in the above. 1459 We didn't implement the hardware disabling part in the above.
1474 If you need to do this, please note that the destructor may be 1460 If you need to do this, please note that the destructor may be
1475 called even before the initialization of the chip is completed. 1461 called even before the initialization of the chip is completed.
@@ -1619,7 +1605,7 @@
1619 .name = KBUILD_MODNAME, 1605 .name = KBUILD_MODNAME,
1620 .id_table = snd_mychip_ids, 1606 .id_table = snd_mychip_ids,
1621 .probe = snd_mychip_probe, 1607 .probe = snd_mychip_probe,
1622 .remove = __devexit_p(snd_mychip_remove), 1608 .remove = snd_mychip_remove,
1623 }; 1609 };
1624]]> 1610]]>
1625 </programlisting> 1611 </programlisting>
@@ -1630,11 +1616,7 @@
1630 The <structfield>probe</structfield> and 1616 The <structfield>probe</structfield> and
1631 <structfield>remove</structfield> functions have already 1617 <structfield>remove</structfield> functions have already
1632 been defined in the previous sections. 1618 been defined in the previous sections.
1633 The <structfield>remove</structfield> function should 1619 The <structfield>name</structfield>
1634 be defined with the
1635 <function>__devexit_p()</function> macro, so that it's not
1636 defined for built-in (and non-hot-pluggable) case. The
1637 <structfield>name</structfield>
1638 field is the name string of this device. Note that you must not 1620 field is the name string of this device. Note that you must not
1639 use a slash <quote>/</quote> in this string. 1621 use a slash <quote>/</quote> in this string.
1640 </para> 1622 </para>
@@ -1665,9 +1647,7 @@
1665 <para> 1647 <para>
1666 Note that these module entries are tagged with 1648 Note that these module entries are tagged with
1667 <parameter>__init</parameter> and 1649 <parameter>__init</parameter> and
1668 <parameter>__exit</parameter> prefixes, not 1650 <parameter>__exit</parameter> prefixes.
1669 <parameter>__devinit</parameter> nor
1670 <parameter>__devexit</parameter>.
1671 </para> 1651 </para>
1672 1652
1673 <para> 1653 <para>
@@ -1918,7 +1898,7 @@
1918 */ 1898 */
1919 1899
1920 /* create a pcm device */ 1900 /* create a pcm device */
1921 static int __devinit snd_mychip_new_pcm(struct mychip *chip) 1901 static int snd_mychip_new_pcm(struct mychip *chip)
1922 { 1902 {
1923 struct snd_pcm *pcm; 1903 struct snd_pcm *pcm;
1924 int err; 1904 int err;
@@ -1957,7 +1937,7 @@
1957 <informalexample> 1937 <informalexample>
1958 <programlisting> 1938 <programlisting>
1959<![CDATA[ 1939<![CDATA[
1960 static int __devinit snd_mychip_new_pcm(struct mychip *chip) 1940 static int snd_mychip_new_pcm(struct mychip *chip)
1961 { 1941 {
1962 struct snd_pcm *pcm; 1942 struct snd_pcm *pcm;
1963 int err; 1943 int err;
@@ -2124,7 +2104,7 @@
2124 .... 2104 ....
2125 } 2105 }
2126 2106
2127 static int __devinit snd_mychip_new_pcm(struct mychip *chip) 2107 static int snd_mychip_new_pcm(struct mychip *chip)
2128 { 2108 {
2129 struct snd_pcm *pcm; 2109 struct snd_pcm *pcm;
2130 .... 2110 ....
@@ -3399,7 +3379,7 @@ struct _snd_pcm_runtime {
3399 <title>Definition of a Control</title> 3379 <title>Definition of a Control</title>
3400 <programlisting> 3380 <programlisting>
3401<![CDATA[ 3381<![CDATA[
3402 static struct snd_kcontrol_new my_control __devinitdata = { 3382 static struct snd_kcontrol_new my_control = {
3403 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 3383 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
3404 .name = "PCM Playback Switch", 3384 .name = "PCM Playback Switch",
3405 .index = 0, 3385 .index = 0,
@@ -3415,13 +3395,6 @@ struct _snd_pcm_runtime {
3415 </para> 3395 </para>
3416 3396
3417 <para> 3397 <para>
3418 Most likely the control is created via
3419 <function>snd_ctl_new1()</function>, and in such a case, you can
3420 add the <parameter>__devinitdata</parameter> prefix to the
3421 definition as above.
3422 </para>
3423
3424 <para>
3425 The <structfield>iface</structfield> field specifies the control 3398 The <structfield>iface</structfield> field specifies the control
3426 type, <constant>SNDRV_CTL_ELEM_IFACE_XXX</constant>, which 3399 type, <constant>SNDRV_CTL_ELEM_IFACE_XXX</constant>, which
3427 is usually <constant>MIXER</constant>. 3400 is usually <constant>MIXER</constant>.
@@ -3847,10 +3820,8 @@ struct _snd_pcm_runtime {
3847 3820
3848 <para> 3821 <para>
3849 <function>snd_ctl_new1()</function> allocates a new 3822 <function>snd_ctl_new1()</function> allocates a new
3850 <structname>snd_kcontrol</structname> instance (that's why the definition 3823 <structname>snd_kcontrol</structname> instance,
3851 of <parameter>my_control</parameter> can be with 3824 and <function>snd_ctl_add</function> assigns the given
3852 the <parameter>__devinitdata</parameter>
3853 prefix), and <function>snd_ctl_add</function> assigns the given
3854 control component to the card. 3825 control component to the card.
3855 </para> 3826 </para>
3856 </section> 3827 </section>
@@ -3896,7 +3867,7 @@ struct _snd_pcm_runtime {
3896<![CDATA[ 3867<![CDATA[
3897 static DECLARE_TLV_DB_SCALE(db_scale_my_control, -4050, 150, 0); 3868 static DECLARE_TLV_DB_SCALE(db_scale_my_control, -4050, 150, 0);
3898 3869
3899 static struct snd_kcontrol_new my_control __devinitdata = { 3870 static struct snd_kcontrol_new my_control = {
3900 ... 3871 ...
3901 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | 3872 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE |
3902 SNDRV_CTL_ELEM_ACCESS_TLV_READ, 3873 SNDRV_CTL_ELEM_ACCESS_TLV_READ,
@@ -5761,8 +5732,8 @@ struct _snd_pcm_runtime {
5761 <informalexample> 5732 <informalexample>
5762 <programlisting> 5733 <programlisting>
5763<![CDATA[ 5734<![CDATA[
5764 static int __devinit snd_mychip_probe(struct pci_dev *pci, 5735 static int snd_mychip_probe(struct pci_dev *pci,
5765 const struct pci_device_id *pci_id) 5736 const struct pci_device_id *pci_id)
5766 { 5737 {
5767 .... 5738 ....
5768 struct snd_card *card; 5739 struct snd_card *card;
@@ -5787,8 +5758,8 @@ struct _snd_pcm_runtime {
5787 <informalexample> 5758 <informalexample>
5788 <programlisting> 5759 <programlisting>
5789<![CDATA[ 5760<![CDATA[
5790 static int __devinit snd_mychip_probe(struct pci_dev *pci, 5761 static int snd_mychip_probe(struct pci_dev *pci,
5791 const struct pci_device_id *pci_id) 5762 const struct pci_device_id *pci_id)
5792 { 5763 {
5793 .... 5764 ....
5794 struct snd_card *card; 5765 struct snd_card *card;
@@ -5825,7 +5796,7 @@ struct _snd_pcm_runtime {
5825 .name = KBUILD_MODNAME, 5796 .name = KBUILD_MODNAME,
5826 .id_table = snd_my_ids, 5797 .id_table = snd_my_ids,
5827 .probe = snd_my_probe, 5798 .probe = snd_my_probe,
5828 .remove = __devexit_p(snd_my_remove), 5799 .remove = snd_my_remove,
5829 #ifdef CONFIG_PM 5800 #ifdef CONFIG_PM
5830 .suspend = snd_my_suspend, 5801 .suspend = snd_my_suspend,
5831 .resume = snd_my_resume, 5802 .resume = snd_my_resume,