diff options
Diffstat (limited to 'Documentation')
450 files changed, 16332 insertions, 3460 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 0c4cc688e89a..38f8444bdd0e 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -40,7 +40,7 @@ IPMI.txt | |||
40 | IRQ-affinity.txt | 40 | IRQ-affinity.txt |
41 | - how to select which CPU(s) handle which interrupt events on SMP. | 41 | - how to select which CPU(s) handle which interrupt events on SMP. |
42 | IRQ-domain.txt | 42 | IRQ-domain.txt |
43 | - info on inerrupt numbering and setting up IRQ domains. | 43 | - info on interrupt numbering and setting up IRQ domains. |
44 | IRQ.txt | 44 | IRQ.txt |
45 | - description of what an IRQ is. | 45 | - description of what an IRQ is. |
46 | Intel-IOMMU.txt | 46 | Intel-IOMMU.txt |
diff --git a/Documentation/ABI/stable/sysfs-bus-usb b/Documentation/ABI/stable/sysfs-bus-usb new file mode 100644 index 000000000000..a6b685724740 --- /dev/null +++ b/Documentation/ABI/stable/sysfs-bus-usb | |||
@@ -0,0 +1,142 @@ | |||
1 | What: /sys/bus/usb/devices/.../power/persist | ||
2 | Date: May 2007 | ||
3 | KernelVersion: 2.6.23 | ||
4 | Contact: Alan Stern <stern@rowland.harvard.edu> | ||
5 | Description: | ||
6 | If CONFIG_USB_PERSIST is set, then each USB device directory | ||
7 | will contain a file named power/persist. The file holds a | ||
8 | boolean value (0 or 1) indicating whether or not the | ||
9 | "USB-Persist" facility is enabled for the device. Since the | ||
10 | facility is inherently dangerous, it is disabled by default | ||
11 | for all devices except hubs. For more information, see | ||
12 | Documentation/usb/persist.txt. | ||
13 | |||
14 | What: /sys/bus/usb/devices/.../power/autosuspend | ||
15 | Date: March 2007 | ||
16 | KernelVersion: 2.6.21 | ||
17 | Contact: Alan Stern <stern@rowland.harvard.edu> | ||
18 | Description: | ||
19 | Each USB device directory will contain a file named | ||
20 | power/autosuspend. This file holds the time (in seconds) | ||
21 | the device must be idle before it will be autosuspended. | ||
22 | 0 means the device will be autosuspended as soon as | ||
23 | possible. Negative values will prevent the device from | ||
24 | being autosuspended at all, and writing a negative value | ||
25 | will resume the device if it is already suspended. | ||
26 | |||
27 | The autosuspend delay for newly-created devices is set to | ||
28 | the value of the usbcore.autosuspend module parameter. | ||
29 | |||
30 | What: /sys/bus/usb/device/.../power/connected_duration | ||
31 | Date: January 2008 | ||
32 | KernelVersion: 2.6.25 | ||
33 | Contact: Sarah Sharp <sarah.a.sharp@intel.com> | ||
34 | Description: | ||
35 | If CONFIG_PM_RUNTIME is enabled then this file | ||
36 | is present. When read, it returns the total time (in msec) | ||
37 | that the USB device has been connected to the machine. This | ||
38 | file is read-only. | ||
39 | Users: | ||
40 | PowerTOP <powertop@lists.01.org> | ||
41 | https://01.org/powertop/ | ||
42 | |||
43 | What: /sys/bus/usb/device/.../power/active_duration | ||
44 | Date: January 2008 | ||
45 | KernelVersion: 2.6.25 | ||
46 | Contact: Sarah Sharp <sarah.a.sharp@intel.com> | ||
47 | Description: | ||
48 | If CONFIG_PM_RUNTIME is enabled then this file | ||
49 | is present. When read, it returns the total time (in msec) | ||
50 | that the USB device has been active, i.e. not in a suspended | ||
51 | state. This file is read-only. | ||
52 | |||
53 | Tools can use this file and the connected_duration file to | ||
54 | compute the percentage of time that a device has been active. | ||
55 | For example, | ||
56 | echo $((100 * `cat active_duration` / `cat connected_duration`)) | ||
57 | will give an integer percentage. Note that this does not | ||
58 | account for counter wrap. | ||
59 | Users: | ||
60 | PowerTOP <powertop@lists.01.org> | ||
61 | https://01.org/powertop/ | ||
62 | |||
63 | What: /sys/bus/usb/devices/<busnum>-<port[.port]>...:<config num>-<interface num>/supports_autosuspend | ||
64 | Date: January 2008 | ||
65 | KernelVersion: 2.6.27 | ||
66 | Contact: Sarah Sharp <sarah.a.sharp@intel.com> | ||
67 | Description: | ||
68 | When read, this file returns 1 if the interface driver | ||
69 | for this interface supports autosuspend. It also | ||
70 | returns 1 if no driver has claimed this interface, as an | ||
71 | unclaimed interface will not stop the device from being | ||
72 | autosuspended if all other interface drivers are idle. | ||
73 | The file returns 0 if autosuspend support has not been | ||
74 | added to the driver. | ||
75 | Users: | ||
76 | USB PM tool | ||
77 | git://git.moblin.org/users/sarah/usb-pm-tool/ | ||
78 | |||
79 | What: /sys/bus/usb/device/.../avoid_reset_quirk | ||
80 | Date: December 2009 | ||
81 | Contact: Oliver Neukum <oliver@neukum.org> | ||
82 | Description: | ||
83 | Writing 1 to this file tells the kernel that this | ||
84 | device will morph into another mode when it is reset. | ||
85 | Drivers will not use reset for error handling for | ||
86 | such devices. | ||
87 | Users: | ||
88 | usb_modeswitch | ||
89 | |||
90 | What: /sys/bus/usb/devices/.../devnum | ||
91 | KernelVersion: since at least 2.6.18 | ||
92 | Description: | ||
93 | Device address on the USB bus. | ||
94 | Users: | ||
95 | libusb | ||
96 | |||
97 | What: /sys/bus/usb/devices/.../bConfigurationValue | ||
98 | KernelVersion: since at least 2.6.18 | ||
99 | Description: | ||
100 | bConfigurationValue of the *active* configuration for the | ||
101 | device. Writing 0 or -1 to bConfigurationValue will reset the | ||
102 | active configuration (unconfigure the device). Writing | ||
103 | another value will change the active configuration. | ||
104 | |||
105 | Note that some devices, in violation of the USB spec, have a | ||
106 | configuration with a value equal to 0. Writing 0 to | ||
107 | bConfigurationValue for these devices will install that | ||
108 | configuration, rather then unconfigure the device. | ||
109 | |||
110 | Writing -1 will always unconfigure the device. | ||
111 | Users: | ||
112 | libusb | ||
113 | |||
114 | What: /sys/bus/usb/devices/.../busnum | ||
115 | KernelVersion: 2.6.22 | ||
116 | Description: | ||
117 | Bus-number of the USB-bus the device is connected to. | ||
118 | Users: | ||
119 | libusb | ||
120 | |||
121 | What: /sys/bus/usb/devices/.../descriptors | ||
122 | KernelVersion: 2.6.26 | ||
123 | Description: | ||
124 | Binary file containing cached descriptors of the device. The | ||
125 | binary data consists of the device descriptor followed by the | ||
126 | descriptors for each configuration of the device. | ||
127 | Note that the wTotalLength of the config descriptors can not | ||
128 | be trusted, as the device may have a smaller config descriptor | ||
129 | than it advertises. The bLength field of each (sub) descriptor | ||
130 | can be trusted, and can be used to seek forward one (sub) | ||
131 | descriptor at a time until the next config descriptor is found. | ||
132 | All descriptors read from this file are in bus-endian format | ||
133 | Users: | ||
134 | libusb | ||
135 | |||
136 | What: /sys/bus/usb/devices/.../speed | ||
137 | KernelVersion: since at least 2.6.18 | ||
138 | Description: | ||
139 | Speed the device is connected with to the usb-host in | ||
140 | Mbit / second. IE one of 1.5 / 12 / 480 / 5000. | ||
141 | Users: | ||
142 | libusb | ||
diff --git a/Documentation/ABI/testing/configfs-usb-gadget-mass-storage b/Documentation/ABI/testing/configfs-usb-gadget-mass-storage new file mode 100644 index 000000000000..ad72a37ee9ff --- /dev/null +++ b/Documentation/ABI/testing/configfs-usb-gadget-mass-storage | |||
@@ -0,0 +1,31 @@ | |||
1 | What: /config/usb-gadget/gadget/functions/mass_storage.name | ||
2 | Date: Oct 2013 | ||
3 | KenelVersion: 3.13 | ||
4 | Description: | ||
5 | The attributes: | ||
6 | |||
7 | stall - Set to permit function to halt bulk endpoints. | ||
8 | Disabled on some USB devices known not to work | ||
9 | correctly. You should set it to true. | ||
10 | num_buffers - Number of pipeline buffers. Valid numbers | ||
11 | are 2..4. Available only if | ||
12 | CONFIG_USB_GADGET_DEBUG_FILES is set. | ||
13 | |||
14 | What: /config/usb-gadget/gadget/functions/mass_storage.name/lun.name | ||
15 | Date: Oct 2013 | ||
16 | KenelVersion: 3.13 | ||
17 | Description: | ||
18 | The attributes: | ||
19 | |||
20 | file - The path to the backing file for the LUN. | ||
21 | Required if LUN is not marked as removable. | ||
22 | ro - Flag specifying access to the LUN shall be | ||
23 | read-only. This is implied if CD-ROM emulation | ||
24 | is enabled as well as when it was impossible | ||
25 | to open "filename" in R/W mode. | ||
26 | removable - Flag specifying that LUN shall be indicated as | ||
27 | being removable. | ||
28 | cdrom - Flag specifying that LUN shall be reported as | ||
29 | being a CD-ROM. | ||
30 | nofua - Flag specifying that FUA flag | ||
31 | in SCSI WRITE(10,12) | ||
diff --git a/Documentation/ABI/testing/sysfs-block-zram b/Documentation/ABI/testing/sysfs-block-zram index ec93fe33baa6..3f0b9ae61d8c 100644 --- a/Documentation/ABI/testing/sysfs-block-zram +++ b/Documentation/ABI/testing/sysfs-block-zram | |||
@@ -5,20 +5,21 @@ Description: | |||
5 | The disksize file is read-write and specifies the disk size | 5 | The disksize file is read-write and specifies the disk size |
6 | which represents the limit on the *uncompressed* worth of data | 6 | which represents the limit on the *uncompressed* worth of data |
7 | that can be stored in this disk. | 7 | that can be stored in this disk. |
8 | Unit: bytes | ||
8 | 9 | ||
9 | What: /sys/block/zram<id>/initstate | 10 | What: /sys/block/zram<id>/initstate |
10 | Date: August 2010 | 11 | Date: August 2010 |
11 | Contact: Nitin Gupta <ngupta@vflare.org> | 12 | Contact: Nitin Gupta <ngupta@vflare.org> |
12 | Description: | 13 | Description: |
13 | The disksize file is read-only and shows the initialization | 14 | The initstate file is read-only and shows the initialization |
14 | state of the device. | 15 | state of the device. |
15 | 16 | ||
16 | What: /sys/block/zram<id>/reset | 17 | What: /sys/block/zram<id>/reset |
17 | Date: August 2010 | 18 | Date: August 2010 |
18 | Contact: Nitin Gupta <ngupta@vflare.org> | 19 | Contact: Nitin Gupta <ngupta@vflare.org> |
19 | Description: | 20 | Description: |
20 | The disksize file is write-only and allows resetting the | 21 | The reset file is write-only and allows resetting the |
21 | device. The reset operation frees all the memory assocaited | 22 | device. The reset operation frees all the memory associated |
22 | with this device. | 23 | with this device. |
23 | 24 | ||
24 | What: /sys/block/zram<id>/num_reads | 25 | What: /sys/block/zram<id>/num_reads |
@@ -48,7 +49,7 @@ Contact: Nitin Gupta <ngupta@vflare.org> | |||
48 | Description: | 49 | Description: |
49 | The notify_free file is read-only and specifies the number of | 50 | The notify_free file is read-only and specifies the number of |
50 | swap slot free notifications received by this device. These | 51 | swap slot free notifications received by this device. These |
51 | notifications are send to a swap block device when a swap slot | 52 | notifications are sent to a swap block device when a swap slot |
52 | is freed. This statistic is applicable only when this disk is | 53 | is freed. This statistic is applicable only when this disk is |
53 | being used as a swap disk. | 54 | being used as a swap disk. |
54 | 55 | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index dda81ffae5cf..b20e829d350f 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio | |||
@@ -79,7 +79,7 @@ Description: | |||
79 | correspond to externally available input one of the named | 79 | correspond to externally available input one of the named |
80 | versions may be used. The number must always be specified and | 80 | versions may be used. The number must always be specified and |
81 | unique to allow association with event codes. Units after | 81 | unique to allow association with event codes. Units after |
82 | application of scale and offset are microvolts. | 82 | application of scale and offset are millivolts. |
83 | 83 | ||
84 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw | 84 | What: /sys/bus/iio/devices/iio:deviceX/in_voltageY-voltageZ_raw |
85 | KernelVersion: 2.6.35 | 85 | KernelVersion: 2.6.35 |
@@ -90,7 +90,7 @@ Description: | |||
90 | physically equivalent inputs when non differential readings are | 90 | physically equivalent inputs when non differential readings are |
91 | separately available. In differential only parts, then all that | 91 | separately available. In differential only parts, then all that |
92 | is required is a consistent labeling. Units after application | 92 | is required is a consistent labeling. Units after application |
93 | of scale and offset are microvolts. | 93 | of scale and offset are millivolts. |
94 | 94 | ||
95 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw | 95 | What: /sys/bus/iio/devices/iio:deviceX/in_capacitanceY_raw |
96 | KernelVersion: 3.2 | 96 | KernelVersion: 3.2 |
@@ -351,6 +351,7 @@ Description: | |||
351 | 6kohm_to_gnd: connected to ground via a 6kOhm resistor, | 351 | 6kohm_to_gnd: connected to ground via a 6kOhm resistor, |
352 | 20kohm_to_gnd: connected to ground via a 20kOhm resistor, | 352 | 20kohm_to_gnd: connected to ground via a 20kOhm resistor, |
353 | 100kohm_to_gnd: connected to ground via an 100kOhm resistor, | 353 | 100kohm_to_gnd: connected to ground via an 100kOhm resistor, |
354 | 500kohm_to_gnd: connected to ground via a 500kOhm resistor, | ||
354 | three_state: left floating. | 355 | three_state: left floating. |
355 | For a list of available output power down options read | 356 | For a list of available output power down options read |
356 | outX_powerdown_mode_available. If Y is not present the | 357 | outX_powerdown_mode_available. If Y is not present the |
@@ -536,6 +537,62 @@ Description: | |||
536 | value is in raw device units or in processed units (as _raw | 537 | value is in raw device units or in processed units (as _raw |
537 | and _input do on sysfs direct channel read attributes). | 538 | and _input do on sysfs direct channel read attributes). |
538 | 539 | ||
540 | What: /sys/.../events/in_accel_x_thresh_rising_hysteresis | ||
541 | What: /sys/.../events/in_accel_x_thresh_falling_hysteresis | ||
542 | What: /sys/.../events/in_accel_x_thresh_either_hysteresis | ||
543 | What: /sys/.../events/in_accel_y_thresh_rising_hysteresis | ||
544 | What: /sys/.../events/in_accel_y_thresh_falling_hysteresis | ||
545 | What: /sys/.../events/in_accel_y_thresh_either_hysteresis | ||
546 | What: /sys/.../events/in_accel_z_thresh_rising_hysteresis | ||
547 | What: /sys/.../events/in_accel_z_thresh_falling_hysteresis | ||
548 | What: /sys/.../events/in_accel_z_thresh_either_hysteresis | ||
549 | What: /sys/.../events/in_anglvel_x_thresh_rising_hysteresis | ||
550 | What: /sys/.../events/in_anglvel_x_thresh_falling_hysteresis | ||
551 | What: /sys/.../events/in_anglvel_x_thresh_either_hysteresis | ||
552 | What: /sys/.../events/in_anglvel_y_thresh_rising_hysteresis | ||
553 | What: /sys/.../events/in_anglvel_y_thresh_falling_hysteresis | ||
554 | What: /sys/.../events/in_anglvel_y_thresh_either_hysteresis | ||
555 | What: /sys/.../events/in_anglvel_z_thresh_rising_hysteresis | ||
556 | What: /sys/.../events/in_anglvel_z_thresh_falling_hysteresis | ||
557 | What: /sys/.../events/in_anglvel_z_thresh_either_hysteresis | ||
558 | What: /sys/.../events/in_magn_x_thresh_rising_hysteresis | ||
559 | What: /sys/.../events/in_magn_x_thresh_falling_hysteresis | ||
560 | What: /sys/.../events/in_magn_x_thresh_either_hysteresis | ||
561 | What: /sys/.../events/in_magn_y_thresh_rising_hysteresis | ||
562 | What: /sys/.../events/in_magn_y_thresh_falling_hysteresis | ||
563 | What: /sys/.../events/in_magn_y_thresh_either_hysteresis | ||
564 | What: /sys/.../events/in_magn_z_thresh_rising_hysteresis | ||
565 | What: /sys/.../events/in_magn_z_thresh_falling_hysteresis | ||
566 | What: /sys/.../events/in_magn_z_thresh_either_hysteresis | ||
567 | What: /sys/.../events/in_voltageY_thresh_rising_hysteresis | ||
568 | What: /sys/.../events/in_voltageY_thresh_falling_hysteresis | ||
569 | What: /sys/.../events/in_voltageY_thresh_either_hysteresis | ||
570 | What: /sys/.../events/in_tempY_thresh_rising_hysteresis | ||
571 | What: /sys/.../events/in_tempY_thresh_falling_hysteresis | ||
572 | What: /sys/.../events/in_tempY_thresh_either_hysteresis | ||
573 | What: /sys/.../events/in_illuminance0_thresh_falling_hysteresis | ||
574 | what: /sys/.../events/in_illuminance0_thresh_rising_hysteresis | ||
575 | what: /sys/.../events/in_illuminance0_thresh_either_hysteresis | ||
576 | what: /sys/.../events/in_proximity0_thresh_falling_hysteresis | ||
577 | what: /sys/.../events/in_proximity0_thresh_rising_hysteresis | ||
578 | what: /sys/.../events/in_proximity0_thresh_either_hysteresis | ||
579 | KernelVersion: 3.13 | ||
580 | Contact: linux-iio@vger.kernel.org | ||
581 | Description: | ||
582 | Specifies the hysteresis of threshold that the device is comparing | ||
583 | against for the events enabled by | ||
584 | <type>Y[_name]_thresh[_(rising|falling)]_hysteresis. | ||
585 | If separate attributes exist for the two directions, but | ||
586 | direction is not specified for this attribute, then a single | ||
587 | hysteresis value applies to both directions. | ||
588 | For falling events the hysteresis is added to the _value attribute for | ||
589 | this event to get the upper threshold for when the event goes back to | ||
590 | normal, for rising events the hysteresis is subtracted from the _value | ||
591 | attribute. E.g. if in_voltage0_raw_thresh_rising_value is set to 1200 | ||
592 | and in_voltage0_raw_thresh_rising_hysteresis is set to 50. The event | ||
593 | will get activated once in_voltage0_raw goes above 1200 and will become | ||
594 | deactived again once the value falls below 1150. | ||
595 | |||
539 | What: /sys/.../events/in_accel_x_raw_roc_rising_value | 596 | What: /sys/.../events/in_accel_x_raw_roc_rising_value |
540 | What: /sys/.../events/in_accel_x_raw_roc_falling_value | 597 | What: /sys/.../events/in_accel_x_raw_roc_falling_value |
541 | What: /sys/.../events/in_accel_y_raw_roc_rising_value | 598 | What: /sys/.../events/in_accel_y_raw_roc_rising_value |
@@ -792,3 +849,32 @@ Contact: linux-iio@vger.kernel.org | |||
792 | Description: | 849 | Description: |
793 | This attribute is used to read the amount of quadrature error | 850 | This attribute is used to read the amount of quadrature error |
794 | present in the device at a given time. | 851 | present in the device at a given time. |
852 | |||
853 | What: /sys/.../iio:deviceX/in_accelX_power_mode | ||
854 | KernelVersion: 3.11 | ||
855 | Contact: linux-iio@vger.kernel.org | ||
856 | Description: | ||
857 | Specifies the chip power mode. | ||
858 | low_noise: reduce noise level from ADC, | ||
859 | low_power: enable low current consumption. | ||
860 | For a list of available output power modes read | ||
861 | in_accel_power_mode_available. | ||
862 | |||
863 | What: /sys/bus/iio/devices/iio:deviceX/store_eeprom | ||
864 | KernelVersion: 3.4.0 | ||
865 | Contact: linux-iio@vger.kernel.org | ||
866 | Description: | ||
867 | Writing '1' stores the current device configuration into | ||
868 | on-chip EEPROM. After power-up or chip reset the device will | ||
869 | automatically load the saved configuration. | ||
870 | |||
871 | What: /sys/.../iio:deviceX/in_intensity_red_integration_time | ||
872 | What: /sys/.../iio:deviceX/in_intensity_green_integration_time | ||
873 | What: /sys/.../iio:deviceX/in_intensity_blue_integration_time | ||
874 | What: /sys/.../iio:deviceX/in_intensity_clear_integration_time | ||
875 | What: /sys/.../iio:deviceX/in_illuminance_integration_time | ||
876 | KernelVersion: 3.12 | ||
877 | Contact: linux-iio@vger.kernel.org | ||
878 | Description: | ||
879 | This attribute is used to get/set the integration time in | ||
880 | seconds. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 b/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 index 2ce9c3f68eee..a91aeabe7b24 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 +++ b/Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 | |||
@@ -18,14 +18,6 @@ Description: | |||
18 | Reading returns either '1' or '0'. '1' means that the | 18 | Reading returns either '1' or '0'. '1' means that the |
19 | pllY is locked. | 19 | pllY is locked. |
20 | 20 | ||
21 | What: /sys/bus/iio/devices/iio:deviceX/store_eeprom | ||
22 | KernelVersion: 3.4.0 | ||
23 | Contact: linux-iio@vger.kernel.org | ||
24 | Description: | ||
25 | Writing '1' stores the current device configuration into | ||
26 | on-chip EEPROM. After power-up or chip reset the device will | ||
27 | automatically load the saved configuration. | ||
28 | |||
29 | What: /sys/bus/iio/devices/iio:deviceX/sync_dividers | 21 | What: /sys/bus/iio/devices/iio:deviceX/sync_dividers |
30 | KernelVersion: 3.4.0 | 22 | KernelVersion: 3.4.0 |
31 | Contact: linux-iio@vger.kernel.org | 23 | Contact: linux-iio@vger.kernel.org |
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 b/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 index d89aded01c5a..1254457a726e 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 +++ b/Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 | |||
@@ -18,4 +18,4 @@ Description: | |||
18 | adjust the reference frequency accordingly. | 18 | adjust the reference frequency accordingly. |
19 | The value written has no effect until out_altvoltageY_frequency | 19 | The value written has no effect until out_altvoltageY_frequency |
20 | is updated. Consider to use out_altvoltageY_powerdown to power | 20 | is updated. Consider to use out_altvoltageY_powerdown to power |
21 | down the PLL and it's RFOut buffers during REFin changes. | 21 | down the PLL and its RFOut buffers during REFin changes. |
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb index 9759b8c91332..1430f584b266 100644 --- a/Documentation/ABI/testing/sysfs-bus-usb +++ b/Documentation/ABI/testing/sysfs-bus-usb | |||
@@ -1,81 +1,3 @@ | |||
1 | What: /sys/bus/usb/devices/.../power/autosuspend | ||
2 | Date: March 2007 | ||
3 | KernelVersion: 2.6.21 | ||
4 | Contact: Alan Stern <stern@rowland.harvard.edu> | ||
5 | Description: | ||
6 | Each USB device directory will contain a file named | ||
7 | power/autosuspend. This file holds the time (in seconds) | ||
8 | the device must be idle before it will be autosuspended. | ||
9 | 0 means the device will be autosuspended as soon as | ||
10 | possible. Negative values will prevent the device from | ||
11 | being autosuspended at all, and writing a negative value | ||
12 | will resume the device if it is already suspended. | ||
13 | |||
14 | The autosuspend delay for newly-created devices is set to | ||
15 | the value of the usbcore.autosuspend module parameter. | ||
16 | |||
17 | What: /sys/bus/usb/devices/.../power/persist | ||
18 | Date: May 2007 | ||
19 | KernelVersion: 2.6.23 | ||
20 | Contact: Alan Stern <stern@rowland.harvard.edu> | ||
21 | Description: | ||
22 | If CONFIG_USB_PERSIST is set, then each USB device directory | ||
23 | will contain a file named power/persist. The file holds a | ||
24 | boolean value (0 or 1) indicating whether or not the | ||
25 | "USB-Persist" facility is enabled for the device. Since the | ||
26 | facility is inherently dangerous, it is disabled by default | ||
27 | for all devices except hubs. For more information, see | ||
28 | Documentation/usb/persist.txt. | ||
29 | |||
30 | What: /sys/bus/usb/device/.../power/connected_duration | ||
31 | Date: January 2008 | ||
32 | KernelVersion: 2.6.25 | ||
33 | Contact: Sarah Sharp <sarah.a.sharp@intel.com> | ||
34 | Description: | ||
35 | If CONFIG_PM_RUNTIME is enabled then this file | ||
36 | is present. When read, it returns the total time (in msec) | ||
37 | that the USB device has been connected to the machine. This | ||
38 | file is read-only. | ||
39 | Users: | ||
40 | PowerTOP <power@bughost.org> | ||
41 | http://www.lesswatts.org/projects/powertop/ | ||
42 | |||
43 | What: /sys/bus/usb/device/.../power/active_duration | ||
44 | Date: January 2008 | ||
45 | KernelVersion: 2.6.25 | ||
46 | Contact: Sarah Sharp <sarah.a.sharp@intel.com> | ||
47 | Description: | ||
48 | If CONFIG_PM_RUNTIME is enabled then this file | ||
49 | is present. When read, it returns the total time (in msec) | ||
50 | that the USB device has been active, i.e. not in a suspended | ||
51 | state. This file is read-only. | ||
52 | |||
53 | Tools can use this file and the connected_duration file to | ||
54 | compute the percentage of time that a device has been active. | ||
55 | For example, | ||
56 | echo $((100 * `cat active_duration` / `cat connected_duration`)) | ||
57 | will give an integer percentage. Note that this does not | ||
58 | account for counter wrap. | ||
59 | Users: | ||
60 | PowerTOP <power@bughost.org> | ||
61 | http://www.lesswatts.org/projects/powertop/ | ||
62 | |||
63 | What: /sys/bus/usb/device/<busnum>-<devnum>...:<config num>-<interface num>/supports_autosuspend | ||
64 | Date: January 2008 | ||
65 | KernelVersion: 2.6.27 | ||
66 | Contact: Sarah Sharp <sarah.a.sharp@intel.com> | ||
67 | Description: | ||
68 | When read, this file returns 1 if the interface driver | ||
69 | for this interface supports autosuspend. It also | ||
70 | returns 1 if no driver has claimed this interface, as an | ||
71 | unclaimed interface will not stop the device from being | ||
72 | autosuspended if all other interface drivers are idle. | ||
73 | The file returns 0 if autosuspend support has not been | ||
74 | added to the driver. | ||
75 | Users: | ||
76 | USB PM tool | ||
77 | git://git.moblin.org/users/sarah/usb-pm-tool/ | ||
78 | |||
79 | What: /sys/bus/usb/device/.../authorized | 1 | What: /sys/bus/usb/device/.../authorized |
80 | Date: July 2008 | 2 | Date: July 2008 |
81 | KernelVersion: 2.6.26 | 3 | KernelVersion: 2.6.26 |
@@ -172,17 +94,6 @@ Description: | |||
172 | device IDs, exactly like reading from the entry | 94 | device IDs, exactly like reading from the entry |
173 | "/sys/bus/usb/drivers/.../new_id" | 95 | "/sys/bus/usb/drivers/.../new_id" |
174 | 96 | ||
175 | What: /sys/bus/usb/device/.../avoid_reset_quirk | ||
176 | Date: December 2009 | ||
177 | Contact: Oliver Neukum <oliver@neukum.org> | ||
178 | Description: | ||
179 | Writing 1 to this file tells the kernel that this | ||
180 | device will morph into another mode when it is reset. | ||
181 | Drivers will not use reset for error handling for | ||
182 | such devices. | ||
183 | Users: | ||
184 | usb_modeswitch | ||
185 | |||
186 | What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm | 97 | What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm |
187 | Date: September 2011 | 98 | Date: September 2011 |
188 | Contact: Andiry Xu <andiry.xu@amd.com> | 99 | Contact: Andiry Xu <andiry.xu@amd.com> |
diff --git a/Documentation/ABI/testing/sysfs-class-mic.txt b/Documentation/ABI/testing/sysfs-class-mic.txt new file mode 100644 index 000000000000..13f48afc534f --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-mic.txt | |||
@@ -0,0 +1,157 @@ | |||
1 | What: /sys/class/mic/ | ||
2 | Date: October 2013 | ||
3 | KernelVersion: 3.13 | ||
4 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
5 | Description: | ||
6 | The mic class directory belongs to Intel MIC devices and | ||
7 | provides information per MIC device. An Intel MIC device is a | ||
8 | PCIe form factor add-in Coprocessor card based on the Intel Many | ||
9 | Integrated Core (MIC) architecture that runs a Linux OS. | ||
10 | |||
11 | What: /sys/class/mic/mic(x) | ||
12 | Date: October 2013 | ||
13 | KernelVersion: 3.13 | ||
14 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
15 | Description: | ||
16 | The directories /sys/class/mic/mic0, /sys/class/mic/mic1 etc., | ||
17 | represent MIC devices (0,1,..etc). Each directory has | ||
18 | information specific to that MIC device. | ||
19 | |||
20 | What: /sys/class/mic/mic(x)/family | ||
21 | Date: October 2013 | ||
22 | KernelVersion: 3.13 | ||
23 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
24 | Description: | ||
25 | Provides information about the Coprocessor family for an Intel | ||
26 | MIC device. For example - "x100" | ||
27 | |||
28 | What: /sys/class/mic/mic(x)/stepping | ||
29 | Date: October 2013 | ||
30 | KernelVersion: 3.13 | ||
31 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
32 | Description: | ||
33 | Provides information about the silicon stepping for an Intel | ||
34 | MIC device. For example - "A0" or "B0" | ||
35 | |||
36 | What: /sys/class/mic/mic(x)/state | ||
37 | Date: October 2013 | ||
38 | KernelVersion: 3.13 | ||
39 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
40 | Description: | ||
41 | When read, this entry provides the current state of an Intel | ||
42 | MIC device in the context of the card OS. Possible values that | ||
43 | will be read are: | ||
44 | "offline" - The MIC device is ready to boot the card OS. On | ||
45 | reading this entry after an OSPM resume, a "boot" has to be | ||
46 | written to this entry if the card was previously shutdown | ||
47 | during OSPM suspend. | ||
48 | "online" - The MIC device has initiated booting a card OS. | ||
49 | "shutting_down" - The card OS is shutting down. | ||
50 | "reset_failed" - The MIC device has failed to reset. | ||
51 | "suspending" - The MIC device is currently being prepared for | ||
52 | suspend. On reading this entry, a "suspend" has to be written | ||
53 | to the state sysfs entry to ensure the card is shutdown during | ||
54 | OSPM suspend. | ||
55 | "suspended" - The MIC device has been suspended. | ||
56 | |||
57 | When written, this sysfs entry triggers different state change | ||
58 | operations depending upon the current state of the card OS. | ||
59 | Acceptable values are: | ||
60 | "boot" - Boot the card OS image specified by the combination | ||
61 | of firmware, ramdisk, cmdline and bootmode | ||
62 | sysfs entries. | ||
63 | "reset" - Initiates device reset. | ||
64 | "shutdown" - Initiates card OS shutdown. | ||
65 | "suspend" - Initiates card OS shutdown and also marks the card | ||
66 | as suspended. | ||
67 | |||
68 | What: /sys/class/mic/mic(x)/shutdown_status | ||
69 | Date: October 2013 | ||
70 | KernelVersion: 3.13 | ||
71 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
72 | Description: | ||
73 | An Intel MIC device runs a Linux OS during its operation. This | ||
74 | OS can shutdown because of various reasons. When read, this | ||
75 | entry provides the status on why the card OS was shutdown. | ||
76 | Possible values are: | ||
77 | "nop" - shutdown status is not applicable, when the card OS is | ||
78 | "online" | ||
79 | "crashed" - Shutdown because of a HW or SW crash. | ||
80 | "halted" - Shutdown because of a halt command. | ||
81 | "poweroff" - Shutdown because of a poweroff command. | ||
82 | "restart" - Shutdown because of a restart command. | ||
83 | |||
84 | What: /sys/class/mic/mic(x)/cmdline | ||
85 | Date: October 2013 | ||
86 | KernelVersion: 3.13 | ||
87 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
88 | Description: | ||
89 | An Intel MIC device runs a Linux OS during its operation. Before | ||
90 | booting this card OS, it is possible to pass kernel command line | ||
91 | options to configure various features in it, similar to | ||
92 | self-bootable machines. When read, this entry provides | ||
93 | information about the current kernel command line options set to | ||
94 | boot the card OS. This entry can be written to change the | ||
95 | existing kernel command line options. Typically, the user would | ||
96 | want to read the current command line options, append new ones | ||
97 | or modify existing ones and then write the whole kernel command | ||
98 | line back to this entry. | ||
99 | |||
100 | What: /sys/class/mic/mic(x)/firmware | ||
101 | Date: October 2013 | ||
102 | KernelVersion: 3.13 | ||
103 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
104 | Description: | ||
105 | When read, this sysfs entry provides the path name under | ||
106 | /lib/firmware/ where the firmware image to be booted on the | ||
107 | card can be found. The entry can be written to change the | ||
108 | firmware image location under /lib/firmware/. | ||
109 | |||
110 | What: /sys/class/mic/mic(x)/ramdisk | ||
111 | Date: October 2013 | ||
112 | KernelVersion: 3.13 | ||
113 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
114 | Description: | ||
115 | When read, this sysfs entry provides the path name under | ||
116 | /lib/firmware/ where the ramdisk image to be used during card | ||
117 | OS boot can be found. The entry can be written to change | ||
118 | the ramdisk image location under /lib/firmware/. | ||
119 | |||
120 | What: /sys/class/mic/mic(x)/bootmode | ||
121 | Date: October 2013 | ||
122 | KernelVersion: 3.13 | ||
123 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
124 | Description: | ||
125 | When read, this sysfs entry provides the current bootmode for | ||
126 | the card. This sysfs entry can be written with the following | ||
127 | valid strings: | ||
128 | a) linux - Boot a Linux image. | ||
129 | b) elf - Boot an elf image for flash updates. | ||
130 | |||
131 | What: /sys/class/mic/mic(x)/log_buf_addr | ||
132 | Date: October 2013 | ||
133 | KernelVersion: 3.13 | ||
134 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
135 | Description: | ||
136 | An Intel MIC device runs a Linux OS during its operation. For | ||
137 | debugging purpose and early kernel boot messages, the user can | ||
138 | access the card OS log buffer via debugfs. When read, this entry | ||
139 | provides the kernel virtual address of the buffer where the card | ||
140 | OS log buffer can be read. This entry is written by the host | ||
141 | configuration daemon to set the log buffer address. The correct | ||
142 | log buffer address to be written can be found in the System.map | ||
143 | file of the card OS. | ||
144 | |||
145 | What: /sys/class/mic/mic(x)/log_buf_len | ||
146 | Date: October 2013 | ||
147 | KernelVersion: 3.13 | ||
148 | Contact: Sudeep Dutt <sudeep.dutt@intel.com> | ||
149 | Description: | ||
150 | An Intel MIC device runs a Linux OS during its operation. For | ||
151 | debugging purpose and early kernel boot messages, the user can | ||
152 | access the card OS log buffer via debugfs. When read, this entry | ||
153 | provides the kernel virtual address where the card OS log buffer | ||
154 | length can be read. This entry is written by host configuration | ||
155 | daemon to set the log buffer length address. The correct log | ||
156 | buffer length address to be written can be found in the | ||
157 | System.map file of the card OS. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-mtd b/Documentation/ABI/testing/sysfs-class-mtd index 3105644b3bfc..bfd119ace6ad 100644 --- a/Documentation/ABI/testing/sysfs-class-mtd +++ b/Documentation/ABI/testing/sysfs-class-mtd | |||
@@ -128,9 +128,8 @@ KernelVersion: 3.4 | |||
128 | Contact: linux-mtd@lists.infradead.org | 128 | Contact: linux-mtd@lists.infradead.org |
129 | Description: | 129 | Description: |
130 | Maximum number of bit errors that the device is capable of | 130 | Maximum number of bit errors that the device is capable of |
131 | correcting within each region covering an ecc step. This will | 131 | correcting within each region covering an ECC step (see |
132 | always be a non-negative integer. Note that some devices will | 132 | ecc_step_size). This will always be a non-negative integer. |
133 | have multiple ecc steps within each writesize region. | ||
134 | 133 | ||
135 | In the case of devices lacking any ECC capability, it is 0. | 134 | In the case of devices lacking any ECC capability, it is 0. |
136 | 135 | ||
@@ -173,3 +172,15 @@ Description: | |||
173 | This is generally applicable only to NAND flash devices with ECC | 172 | This is generally applicable only to NAND flash devices with ECC |
174 | capability. It is ignored on devices lacking ECC capability; | 173 | capability. It is ignored on devices lacking ECC capability; |
175 | i.e., devices for which ecc_strength is zero. | 174 | i.e., devices for which ecc_strength is zero. |
175 | |||
176 | What: /sys/class/mtd/mtdX/ecc_step_size | ||
177 | Date: May 2013 | ||
178 | KernelVersion: 3.10 | ||
179 | Contact: linux-mtd@lists.infradead.org | ||
180 | Description: | ||
181 | The size of a single region covered by ECC, known as the ECC | ||
182 | step. Devices may have several equally sized ECC steps within | ||
183 | each writesize region. | ||
184 | |||
185 | It will always be a non-negative integer. In the case of | ||
186 | devices lacking any ECC capability, it is 0. | ||
diff --git a/Documentation/ABI/testing/sysfs-devices-power b/Documentation/ABI/testing/sysfs-devices-power index 9d43e7670841..efe449bdf811 100644 --- a/Documentation/ABI/testing/sysfs-devices-power +++ b/Documentation/ABI/testing/sysfs-devices-power | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /sys/devices/.../power/ | 1 | What: /sys/devices/.../power/ |
2 | Date: January 2009 | 2 | Date: January 2009 |
3 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 3 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
4 | Description: | 4 | Description: |
5 | The /sys/devices/.../power directory contains attributes | 5 | The /sys/devices/.../power directory contains attributes |
6 | allowing the user space to check and modify some power | 6 | allowing the user space to check and modify some power |
@@ -8,7 +8,7 @@ Description: | |||
8 | 8 | ||
9 | What: /sys/devices/.../power/wakeup | 9 | What: /sys/devices/.../power/wakeup |
10 | Date: January 2009 | 10 | Date: January 2009 |
11 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 11 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
12 | Description: | 12 | Description: |
13 | The /sys/devices/.../power/wakeup attribute allows the user | 13 | The /sys/devices/.../power/wakeup attribute allows the user |
14 | space to check if the device is enabled to wake up the system | 14 | space to check if the device is enabled to wake up the system |
@@ -34,7 +34,7 @@ Description: | |||
34 | 34 | ||
35 | What: /sys/devices/.../power/control | 35 | What: /sys/devices/.../power/control |
36 | Date: January 2009 | 36 | Date: January 2009 |
37 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 37 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
38 | Description: | 38 | Description: |
39 | The /sys/devices/.../power/control attribute allows the user | 39 | The /sys/devices/.../power/control attribute allows the user |
40 | space to control the run-time power management of the device. | 40 | space to control the run-time power management of the device. |
@@ -53,7 +53,7 @@ Description: | |||
53 | 53 | ||
54 | What: /sys/devices/.../power/async | 54 | What: /sys/devices/.../power/async |
55 | Date: January 2009 | 55 | Date: January 2009 |
56 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 56 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
57 | Description: | 57 | Description: |
58 | The /sys/devices/.../async attribute allows the user space to | 58 | The /sys/devices/.../async attribute allows the user space to |
59 | enable or diasble the device's suspend and resume callbacks to | 59 | enable or diasble the device's suspend and resume callbacks to |
@@ -79,7 +79,7 @@ Description: | |||
79 | 79 | ||
80 | What: /sys/devices/.../power/wakeup_count | 80 | What: /sys/devices/.../power/wakeup_count |
81 | Date: September 2010 | 81 | Date: September 2010 |
82 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 82 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
83 | Description: | 83 | Description: |
84 | The /sys/devices/.../wakeup_count attribute contains the number | 84 | The /sys/devices/.../wakeup_count attribute contains the number |
85 | of signaled wakeup events associated with the device. This | 85 | of signaled wakeup events associated with the device. This |
@@ -88,7 +88,7 @@ Description: | |||
88 | 88 | ||
89 | What: /sys/devices/.../power/wakeup_active_count | 89 | What: /sys/devices/.../power/wakeup_active_count |
90 | Date: September 2010 | 90 | Date: September 2010 |
91 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 91 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
92 | Description: | 92 | Description: |
93 | The /sys/devices/.../wakeup_active_count attribute contains the | 93 | The /sys/devices/.../wakeup_active_count attribute contains the |
94 | number of times the processing of wakeup events associated with | 94 | number of times the processing of wakeup events associated with |
@@ -98,7 +98,7 @@ Description: | |||
98 | 98 | ||
99 | What: /sys/devices/.../power/wakeup_abort_count | 99 | What: /sys/devices/.../power/wakeup_abort_count |
100 | Date: February 2012 | 100 | Date: February 2012 |
101 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 101 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
102 | Description: | 102 | Description: |
103 | The /sys/devices/.../wakeup_abort_count attribute contains the | 103 | The /sys/devices/.../wakeup_abort_count attribute contains the |
104 | number of times the processing of a wakeup event associated with | 104 | number of times the processing of a wakeup event associated with |
@@ -109,7 +109,7 @@ Description: | |||
109 | 109 | ||
110 | What: /sys/devices/.../power/wakeup_expire_count | 110 | What: /sys/devices/.../power/wakeup_expire_count |
111 | Date: February 2012 | 111 | Date: February 2012 |
112 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 112 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
113 | Description: | 113 | Description: |
114 | The /sys/devices/.../wakeup_expire_count attribute contains the | 114 | The /sys/devices/.../wakeup_expire_count attribute contains the |
115 | number of times a wakeup event associated with the device has | 115 | number of times a wakeup event associated with the device has |
@@ -119,7 +119,7 @@ Description: | |||
119 | 119 | ||
120 | What: /sys/devices/.../power/wakeup_active | 120 | What: /sys/devices/.../power/wakeup_active |
121 | Date: September 2010 | 121 | Date: September 2010 |
122 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 122 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
123 | Description: | 123 | Description: |
124 | The /sys/devices/.../wakeup_active attribute contains either 1, | 124 | The /sys/devices/.../wakeup_active attribute contains either 1, |
125 | or 0, depending on whether or not a wakeup event associated with | 125 | or 0, depending on whether or not a wakeup event associated with |
@@ -129,7 +129,7 @@ Description: | |||
129 | 129 | ||
130 | What: /sys/devices/.../power/wakeup_total_time_ms | 130 | What: /sys/devices/.../power/wakeup_total_time_ms |
131 | Date: September 2010 | 131 | Date: September 2010 |
132 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 132 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
133 | Description: | 133 | Description: |
134 | The /sys/devices/.../wakeup_total_time_ms attribute contains | 134 | The /sys/devices/.../wakeup_total_time_ms attribute contains |
135 | the total time of processing wakeup events associated with the | 135 | the total time of processing wakeup events associated with the |
@@ -139,7 +139,7 @@ Description: | |||
139 | 139 | ||
140 | What: /sys/devices/.../power/wakeup_max_time_ms | 140 | What: /sys/devices/.../power/wakeup_max_time_ms |
141 | Date: September 2010 | 141 | Date: September 2010 |
142 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 142 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
143 | Description: | 143 | Description: |
144 | The /sys/devices/.../wakeup_max_time_ms attribute contains | 144 | The /sys/devices/.../wakeup_max_time_ms attribute contains |
145 | the maximum time of processing a single wakeup event associated | 145 | the maximum time of processing a single wakeup event associated |
@@ -149,7 +149,7 @@ Description: | |||
149 | 149 | ||
150 | What: /sys/devices/.../power/wakeup_last_time_ms | 150 | What: /sys/devices/.../power/wakeup_last_time_ms |
151 | Date: September 2010 | 151 | Date: September 2010 |
152 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 152 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
153 | Description: | 153 | Description: |
154 | The /sys/devices/.../wakeup_last_time_ms attribute contains | 154 | The /sys/devices/.../wakeup_last_time_ms attribute contains |
155 | the value of the monotonic clock corresponding to the time of | 155 | the value of the monotonic clock corresponding to the time of |
@@ -160,7 +160,7 @@ Description: | |||
160 | 160 | ||
161 | What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms | 161 | What: /sys/devices/.../power/wakeup_prevent_sleep_time_ms |
162 | Date: February 2012 | 162 | Date: February 2012 |
163 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 163 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
164 | Description: | 164 | Description: |
165 | The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute | 165 | The /sys/devices/.../wakeup_prevent_sleep_time_ms attribute |
166 | contains the total time the device has been preventing | 166 | contains the total time the device has been preventing |
@@ -189,7 +189,7 @@ Description: | |||
189 | 189 | ||
190 | What: /sys/devices/.../power/pm_qos_latency_us | 190 | What: /sys/devices/.../power/pm_qos_latency_us |
191 | Date: March 2012 | 191 | Date: March 2012 |
192 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 192 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
193 | Description: | 193 | Description: |
194 | The /sys/devices/.../power/pm_qos_resume_latency_us attribute | 194 | The /sys/devices/.../power/pm_qos_resume_latency_us attribute |
195 | contains the PM QoS resume latency limit for the given device, | 195 | contains the PM QoS resume latency limit for the given device, |
@@ -207,7 +207,7 @@ Description: | |||
207 | 207 | ||
208 | What: /sys/devices/.../power/pm_qos_no_power_off | 208 | What: /sys/devices/.../power/pm_qos_no_power_off |
209 | Date: September 2012 | 209 | Date: September 2012 |
210 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 210 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
211 | Description: | 211 | Description: |
212 | The /sys/devices/.../power/pm_qos_no_power_off attribute | 212 | The /sys/devices/.../power/pm_qos_no_power_off attribute |
213 | is used for manipulating the PM QoS "no power off" flag. If | 213 | is used for manipulating the PM QoS "no power off" flag. If |
@@ -222,7 +222,7 @@ Description: | |||
222 | 222 | ||
223 | What: /sys/devices/.../power/pm_qos_remote_wakeup | 223 | What: /sys/devices/.../power/pm_qos_remote_wakeup |
224 | Date: September 2012 | 224 | Date: September 2012 |
225 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 225 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
226 | Description: | 226 | Description: |
227 | The /sys/devices/.../power/pm_qos_remote_wakeup attribute | 227 | The /sys/devices/.../power/pm_qos_remote_wakeup attribute |
228 | is used for manipulating the PM QoS "remote wakeup required" | 228 | is used for manipulating the PM QoS "remote wakeup required" |
diff --git a/Documentation/ABI/testing/sysfs-driver-sunxi-sid b/Documentation/ABI/testing/sysfs-driver-sunxi-sid new file mode 100644 index 000000000000..ffb9536f6ecc --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-sunxi-sid | |||
@@ -0,0 +1,22 @@ | |||
1 | What: /sys/devices/*/<our-device>/eeprom | ||
2 | Date: August 2013 | ||
3 | Contact: Oliver Schinagl <oliver@schinagl.nl> | ||
4 | Description: read-only access to the SID (Security-ID) on current | ||
5 | A-series SoC's from Allwinner. Currently supports A10, A10s, A13 | ||
6 | and A20 CPU's. The earlier A1x series of SoCs exports 16 bytes, | ||
7 | whereas the newer A20 SoC exposes 512 bytes split into sections. | ||
8 | Besides the 16 bytes of SID, there's also an SJTAG area, | ||
9 | HDMI-HDCP key and some custom keys. Below a quick overview, for | ||
10 | details see the user manual: | ||
11 | 0x000 128 bit root-key (sun[457]i) | ||
12 | 0x010 128 bit boot-key (sun7i) | ||
13 | 0x020 64 bit security-jtag-key (sun7i) | ||
14 | 0x028 16 bit key configuration (sun7i) | ||
15 | 0x02b 16 bit custom-vendor-key (sun7i) | ||
16 | 0x02c 320 bit low general key (sun7i) | ||
17 | 0x040 32 bit read-control access (sun7i) | ||
18 | 0x064 224 bit low general key (sun7i) | ||
19 | 0x080 2304 bit HDCP-key (sun7i) | ||
20 | 0x1a0 768 bit high general key (sun7i) | ||
21 | Users: any user space application which wants to read the SID on | ||
22 | Allwinner's A-series of CPU's. | ||
diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs new file mode 100644 index 000000000000..31942efcaf0e --- /dev/null +++ b/Documentation/ABI/testing/sysfs-fs-f2fs | |||
@@ -0,0 +1,26 @@ | |||
1 | What: /sys/fs/f2fs/<disk>/gc_max_sleep_time | ||
2 | Date: July 2013 | ||
3 | Contact: "Namjae Jeon" <namjae.jeon@samsung.com> | ||
4 | Description: | ||
5 | Controls the maximun sleep time for gc_thread. Time | ||
6 | is in milliseconds. | ||
7 | |||
8 | What: /sys/fs/f2fs/<disk>/gc_min_sleep_time | ||
9 | Date: July 2013 | ||
10 | Contact: "Namjae Jeon" <namjae.jeon@samsung.com> | ||
11 | Description: | ||
12 | Controls the minimum sleep time for gc_thread. Time | ||
13 | is in milliseconds. | ||
14 | |||
15 | What: /sys/fs/f2fs/<disk>/gc_no_gc_sleep_time | ||
16 | Date: July 2013 | ||
17 | Contact: "Namjae Jeon" <namjae.jeon@samsung.com> | ||
18 | Description: | ||
19 | Controls the default sleep time for gc_thread. Time | ||
20 | is in milliseconds. | ||
21 | |||
22 | What: /sys/fs/f2fs/<disk>/gc_idle | ||
23 | Date: July 2013 | ||
24 | Contact: "Namjae Jeon" <namjae.jeon@samsung.com> | ||
25 | Description: | ||
26 | Controls the victim selection policy for garbage collection. | ||
diff --git a/Documentation/ABI/testing/sysfs-power b/Documentation/ABI/testing/sysfs-power index 217772615d02..205a73878441 100644 --- a/Documentation/ABI/testing/sysfs-power +++ b/Documentation/ABI/testing/sysfs-power | |||
@@ -1,6 +1,6 @@ | |||
1 | What: /sys/power/ | 1 | What: /sys/power/ |
2 | Date: August 2006 | 2 | Date: August 2006 |
3 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 3 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
4 | Description: | 4 | Description: |
5 | The /sys/power directory will contain files that will | 5 | The /sys/power directory will contain files that will |
6 | provide a unified interface to the power management | 6 | provide a unified interface to the power management |
@@ -8,7 +8,7 @@ Description: | |||
8 | 8 | ||
9 | What: /sys/power/state | 9 | What: /sys/power/state |
10 | Date: August 2006 | 10 | Date: August 2006 |
11 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 11 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
12 | Description: | 12 | Description: |
13 | The /sys/power/state file controls the system power state. | 13 | The /sys/power/state file controls the system power state. |
14 | Reading from this file returns what states are supported, | 14 | Reading from this file returns what states are supported, |
@@ -22,7 +22,7 @@ Description: | |||
22 | 22 | ||
23 | What: /sys/power/disk | 23 | What: /sys/power/disk |
24 | Date: September 2006 | 24 | Date: September 2006 |
25 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 25 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
26 | Description: | 26 | Description: |
27 | The /sys/power/disk file controls the operating mode of the | 27 | The /sys/power/disk file controls the operating mode of the |
28 | suspend-to-disk mechanism. Reading from this file returns | 28 | suspend-to-disk mechanism. Reading from this file returns |
@@ -67,7 +67,7 @@ Description: | |||
67 | 67 | ||
68 | What: /sys/power/image_size | 68 | What: /sys/power/image_size |
69 | Date: August 2006 | 69 | Date: August 2006 |
70 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 70 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
71 | Description: | 71 | Description: |
72 | The /sys/power/image_size file controls the size of the image | 72 | The /sys/power/image_size file controls the size of the image |
73 | created by the suspend-to-disk mechanism. It can be written a | 73 | created by the suspend-to-disk mechanism. It can be written a |
@@ -84,7 +84,7 @@ Description: | |||
84 | 84 | ||
85 | What: /sys/power/pm_trace | 85 | What: /sys/power/pm_trace |
86 | Date: August 2006 | 86 | Date: August 2006 |
87 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 87 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
88 | Description: | 88 | Description: |
89 | The /sys/power/pm_trace file controls the code which saves the | 89 | The /sys/power/pm_trace file controls the code which saves the |
90 | last PM event point in the RTC across reboots, so that you can | 90 | last PM event point in the RTC across reboots, so that you can |
@@ -133,7 +133,7 @@ Description: | |||
133 | 133 | ||
134 | What: /sys/power/pm_async | 134 | What: /sys/power/pm_async |
135 | Date: January 2009 | 135 | Date: January 2009 |
136 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 136 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
137 | Description: | 137 | Description: |
138 | The /sys/power/pm_async file controls the switch allowing the | 138 | The /sys/power/pm_async file controls the switch allowing the |
139 | user space to enable or disable asynchronous suspend and resume | 139 | user space to enable or disable asynchronous suspend and resume |
@@ -146,7 +146,7 @@ Description: | |||
146 | 146 | ||
147 | What: /sys/power/wakeup_count | 147 | What: /sys/power/wakeup_count |
148 | Date: July 2010 | 148 | Date: July 2010 |
149 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 149 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
150 | Description: | 150 | Description: |
151 | The /sys/power/wakeup_count file allows user space to put the | 151 | The /sys/power/wakeup_count file allows user space to put the |
152 | system into a sleep state while taking into account the | 152 | system into a sleep state while taking into account the |
@@ -161,7 +161,7 @@ Description: | |||
161 | 161 | ||
162 | What: /sys/power/reserved_size | 162 | What: /sys/power/reserved_size |
163 | Date: May 2011 | 163 | Date: May 2011 |
164 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 164 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
165 | Description: | 165 | Description: |
166 | The /sys/power/reserved_size file allows user space to control | 166 | The /sys/power/reserved_size file allows user space to control |
167 | the amount of memory reserved for allocations made by device | 167 | the amount of memory reserved for allocations made by device |
@@ -175,7 +175,7 @@ Description: | |||
175 | 175 | ||
176 | What: /sys/power/autosleep | 176 | What: /sys/power/autosleep |
177 | Date: April 2012 | 177 | Date: April 2012 |
178 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 178 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
179 | Description: | 179 | Description: |
180 | The /sys/power/autosleep file can be written one of the strings | 180 | The /sys/power/autosleep file can be written one of the strings |
181 | returned by reads from /sys/power/state. If that happens, a | 181 | returned by reads from /sys/power/state. If that happens, a |
@@ -192,7 +192,7 @@ Description: | |||
192 | 192 | ||
193 | What: /sys/power/wake_lock | 193 | What: /sys/power/wake_lock |
194 | Date: February 2012 | 194 | Date: February 2012 |
195 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 195 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
196 | Description: | 196 | Description: |
197 | The /sys/power/wake_lock file allows user space to create | 197 | The /sys/power/wake_lock file allows user space to create |
198 | wakeup source objects and activate them on demand (if one of | 198 | wakeup source objects and activate them on demand (if one of |
@@ -219,7 +219,7 @@ Description: | |||
219 | 219 | ||
220 | What: /sys/power/wake_unlock | 220 | What: /sys/power/wake_unlock |
221 | Date: February 2012 | 221 | Date: February 2012 |
222 | Contact: Rafael J. Wysocki <rjw@sisk.pl> | 222 | Contact: Rafael J. Wysocki <rjw@rjwysocki.net> |
223 | Description: | 223 | Description: |
224 | The /sys/power/wake_unlock file allows user space to deactivate | 224 | The /sys/power/wake_unlock file allows user space to deactivate |
225 | wakeup sources created with the help of /sys/power/wake_lock. | 225 | wakeup sources created with the help of /sys/power/wake_lock. |
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl index 49267ea97568..f403ec3c5c9a 100644 --- a/Documentation/DocBook/80211.tmpl +++ b/Documentation/DocBook/80211.tmpl | |||
@@ -325,6 +325,7 @@ | |||
325 | <title>functions/definitions</title> | 325 | <title>functions/definitions</title> |
326 | !Finclude/net/mac80211.h ieee80211_rx_status | 326 | !Finclude/net/mac80211.h ieee80211_rx_status |
327 | !Finclude/net/mac80211.h mac80211_rx_flags | 327 | !Finclude/net/mac80211.h mac80211_rx_flags |
328 | !Finclude/net/mac80211.h mac80211_tx_info_flags | ||
328 | !Finclude/net/mac80211.h mac80211_tx_control_flags | 329 | !Finclude/net/mac80211.h mac80211_tx_control_flags |
329 | !Finclude/net/mac80211.h mac80211_rate_control_flags | 330 | !Finclude/net/mac80211.h mac80211_rate_control_flags |
330 | !Finclude/net/mac80211.h ieee80211_tx_rate | 331 | !Finclude/net/mac80211.h ieee80211_tx_rate |
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index fe397f90a34f..6c9d9d37c83a 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
@@ -87,7 +87,10 @@ X!Iinclude/linux/kobject.h | |||
87 | !Ekernel/printk/printk.c | 87 | !Ekernel/printk/printk.c |
88 | !Ekernel/panic.c | 88 | !Ekernel/panic.c |
89 | !Ekernel/sys.c | 89 | !Ekernel/sys.c |
90 | !Ekernel/rcupdate.c | 90 | !Ekernel/rcu/srcu.c |
91 | !Ekernel/rcu/tree.c | ||
92 | !Ekernel/rcu/tree_plugin.h | ||
93 | !Ekernel/rcu/update.c | ||
91 | </sect1> | 94 | </sect1> |
92 | 95 | ||
93 | <sect1><title>Device Resource Management</title> | 96 | <sect1><title>Device Resource Management</title> |
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 7d1278e7a434..ed1d6d289022 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
@@ -156,13 +156,6 @@ | |||
156 | </para></listitem> | 156 | </para></listitem> |
157 | </varlistentry> | 157 | </varlistentry> |
158 | <varlistentry> | 158 | <varlistentry> |
159 | <term>DRIVER_USE_MTRR</term> | ||
160 | <listitem><para> | ||
161 | Driver uses MTRR interface for mapping memory, the DRM core will | ||
162 | manage MTRR resources. Deprecated. | ||
163 | </para></listitem> | ||
164 | </varlistentry> | ||
165 | <varlistentry> | ||
166 | <term>DRIVER_PCI_DMA</term> | 159 | <term>DRIVER_PCI_DMA</term> |
167 | <listitem><para> | 160 | <listitem><para> |
168 | Driver is capable of PCI DMA, mapping of PCI DMA buffers to | 161 | Driver is capable of PCI DMA, mapping of PCI DMA buffers to |
@@ -195,28 +188,6 @@ | |||
195 | </para></listitem> | 188 | </para></listitem> |
196 | </varlistentry> | 189 | </varlistentry> |
197 | <varlistentry> | 190 | <varlistentry> |
198 | <term>DRIVER_IRQ_VBL</term> | ||
199 | <listitem><para>Unused. Deprecated.</para></listitem> | ||
200 | </varlistentry> | ||
201 | <varlistentry> | ||
202 | <term>DRIVER_DMA_QUEUE</term> | ||
203 | <listitem><para> | ||
204 | Should be set if the driver queues DMA requests and completes them | ||
205 | asynchronously. Deprecated. | ||
206 | </para></listitem> | ||
207 | </varlistentry> | ||
208 | <varlistentry> | ||
209 | <term>DRIVER_FB_DMA</term> | ||
210 | <listitem><para> | ||
211 | Driver supports DMA to/from the framebuffer, mapping of frambuffer | ||
212 | DMA buffers to userspace will be supported. Deprecated. | ||
213 | </para></listitem> | ||
214 | </varlistentry> | ||
215 | <varlistentry> | ||
216 | <term>DRIVER_IRQ_VBL2</term> | ||
217 | <listitem><para>Unused. Deprecated.</para></listitem> | ||
218 | </varlistentry> | ||
219 | <varlistentry> | ||
220 | <term>DRIVER_GEM</term> | 191 | <term>DRIVER_GEM</term> |
221 | <listitem><para> | 192 | <listitem><para> |
222 | Driver use the GEM memory manager. | 193 | Driver use the GEM memory manager. |
@@ -234,6 +205,12 @@ | |||
234 | Driver implements DRM PRIME buffer sharing. | 205 | Driver implements DRM PRIME buffer sharing. |
235 | </para></listitem> | 206 | </para></listitem> |
236 | </varlistentry> | 207 | </varlistentry> |
208 | <varlistentry> | ||
209 | <term>DRIVER_RENDER</term> | ||
210 | <listitem><para> | ||
211 | Driver supports dedicated render nodes. | ||
212 | </para></listitem> | ||
213 | </varlistentry> | ||
237 | </variablelist> | 214 | </variablelist> |
238 | </sect3> | 215 | </sect3> |
239 | <sect3> | 216 | <sect3> |
@@ -2212,6 +2189,18 @@ void intel_crt_init(struct drm_device *dev) | |||
2212 | !Iinclude/drm/drm_rect.h | 2189 | !Iinclude/drm/drm_rect.h |
2213 | !Edrivers/gpu/drm/drm_rect.c | 2190 | !Edrivers/gpu/drm/drm_rect.c |
2214 | </sect2> | 2191 | </sect2> |
2192 | <sect2> | ||
2193 | <title>Flip-work Helper Reference</title> | ||
2194 | !Pinclude/drm/drm_flip_work.h flip utils | ||
2195 | !Iinclude/drm/drm_flip_work.h | ||
2196 | !Edrivers/gpu/drm/drm_flip_work.c | ||
2197 | </sect2> | ||
2198 | <sect2> | ||
2199 | <title>VMA Offset Manager</title> | ||
2200 | !Pdrivers/gpu/drm/drm_vma_manager.c vma offset manager | ||
2201 | !Edrivers/gpu/drm/drm_vma_manager.c | ||
2202 | !Iinclude/drm/drm_vma_manager.h | ||
2203 | </sect2> | ||
2215 | </sect1> | 2204 | </sect1> |
2216 | 2205 | ||
2217 | <!-- Internals: kms properties --> | 2206 | <!-- Internals: kms properties --> |
@@ -2422,18 +2411,18 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis> | |||
2422 | </abstract> | 2411 | </abstract> |
2423 | <para> | 2412 | <para> |
2424 | The <methodname>firstopen</methodname> method is called by the DRM core | 2413 | The <methodname>firstopen</methodname> method is called by the DRM core |
2425 | when an application opens a device that has no other opened file handle. | 2414 | for legacy UMS (User Mode Setting) drivers only when an application |
2426 | Similarly the <methodname>lastclose</methodname> method is called when | 2415 | opens a device that has no other opened file handle. UMS drivers can |
2427 | the last application holding a file handle opened on the device closes | 2416 | implement it to acquire device resources. KMS drivers can't use the |
2428 | it. Both methods are mostly used for UMS (User Mode Setting) drivers to | 2417 | method and must acquire resources in the <methodname>load</methodname> |
2429 | acquire and release device resources which should be done in the | 2418 | method instead. |
2430 | <methodname>load</methodname> and <methodname>unload</methodname> | ||
2431 | methods for KMS drivers. | ||
2432 | </para> | 2419 | </para> |
2433 | <para> | 2420 | <para> |
2434 | Note that the <methodname>lastclose</methodname> method is also called | 2421 | Similarly the <methodname>lastclose</methodname> method is called when |
2435 | at module unload time or, for hot-pluggable devices, when the device is | 2422 | the last application holding a file handle opened on the device closes |
2436 | unplugged. The <methodname>firstopen</methodname> and | 2423 | it, for both UMS and KMS drivers. Additionally, the method is also |
2424 | called at module unload time or, for hot-pluggable devices, when the | ||
2425 | device is unplugged. The <methodname>firstopen</methodname> and | ||
2437 | <methodname>lastclose</methodname> calls can thus be unbalanced. | 2426 | <methodname>lastclose</methodname> calls can thus be unbalanced. |
2438 | </para> | 2427 | </para> |
2439 | <para> | 2428 | <para> |
@@ -2462,7 +2451,12 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis> | |||
2462 | <para> | 2451 | <para> |
2463 | The <methodname>lastclose</methodname> method should restore CRTC and | 2452 | The <methodname>lastclose</methodname> method should restore CRTC and |
2464 | plane properties to default value, so that a subsequent open of the | 2453 | plane properties to default value, so that a subsequent open of the |
2465 | device will not inherit state from the previous user. | 2454 | device will not inherit state from the previous user. It can also be |
2455 | used to execute delayed power switching state changes, e.g. in | ||
2456 | conjunction with the vga-switcheroo infrastructure. Beyond that KMS | ||
2457 | drivers should not do any further cleanup. Only legacy UMS drivers might | ||
2458 | need to clean up device state so that the vga console or an independent | ||
2459 | fbdev driver could take over. | ||
2466 | </para> | 2460 | </para> |
2467 | </sect2> | 2461 | </sect2> |
2468 | <sect2> | 2462 | <sect2> |
@@ -2498,7 +2492,6 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis> | |||
2498 | <programlisting> | 2492 | <programlisting> |
2499 | .poll = drm_poll, | 2493 | .poll = drm_poll, |
2500 | .read = drm_read, | 2494 | .read = drm_read, |
2501 | .fasync = drm_fasync, | ||
2502 | .llseek = no_llseek, | 2495 | .llseek = no_llseek, |
2503 | </programlisting> | 2496 | </programlisting> |
2504 | </para> | 2497 | </para> |
@@ -2657,6 +2650,69 @@ int (*resume) (struct drm_device *);</synopsis> | |||
2657 | info, since man pages should cover the rest. | 2650 | info, since man pages should cover the rest. |
2658 | </para> | 2651 | </para> |
2659 | 2652 | ||
2653 | <!-- External: render nodes --> | ||
2654 | |||
2655 | <sect1> | ||
2656 | <title>Render nodes</title> | ||
2657 | <para> | ||
2658 | DRM core provides multiple character-devices for user-space to use. | ||
2659 | Depending on which device is opened, user-space can perform a different | ||
2660 | set of operations (mainly ioctls). The primary node is always created | ||
2661 | and called <term>card<num></term>. Additionally, a currently | ||
2662 | unused control node, called <term>controlD<num></term> is also | ||
2663 | created. The primary node provides all legacy operations and | ||
2664 | historically was the only interface used by userspace. With KMS, the | ||
2665 | control node was introduced. However, the planned KMS control interface | ||
2666 | has never been written and so the control node stays unused to date. | ||
2667 | </para> | ||
2668 | <para> | ||
2669 | With the increased use of offscreen renderers and GPGPU applications, | ||
2670 | clients no longer require running compositors or graphics servers to | ||
2671 | make use of a GPU. But the DRM API required unprivileged clients to | ||
2672 | authenticate to a DRM-Master prior to getting GPU access. To avoid this | ||
2673 | step and to grant clients GPU access without authenticating, render | ||
2674 | nodes were introduced. Render nodes solely serve render clients, that | ||
2675 | is, no modesetting or privileged ioctls can be issued on render nodes. | ||
2676 | Only non-global rendering commands are allowed. If a driver supports | ||
2677 | render nodes, it must advertise it via the <term>DRIVER_RENDER</term> | ||
2678 | DRM driver capability. If not supported, the primary node must be used | ||
2679 | for render clients together with the legacy drmAuth authentication | ||
2680 | procedure. | ||
2681 | </para> | ||
2682 | <para> | ||
2683 | If a driver advertises render node support, DRM core will create a | ||
2684 | separate render node called <term>renderD<num></term>. There will | ||
2685 | be one render node per device. No ioctls except PRIME-related ioctls | ||
2686 | will be allowed on this node. Especially <term>GEM_OPEN</term> will be | ||
2687 | explicitly prohibited. Render nodes are designed to avoid the | ||
2688 | buffer-leaks, which occur if clients guess the flink names or mmap | ||
2689 | offsets on the legacy interface. Additionally to this basic interface, | ||
2690 | drivers must mark their driver-dependent render-only ioctls as | ||
2691 | <term>DRM_RENDER_ALLOW</term> so render clients can use them. Driver | ||
2692 | authors must be careful not to allow any privileged ioctls on render | ||
2693 | nodes. | ||
2694 | </para> | ||
2695 | <para> | ||
2696 | With render nodes, user-space can now control access to the render node | ||
2697 | via basic file-system access-modes. A running graphics server which | ||
2698 | authenticates clients on the privileged primary/legacy node is no longer | ||
2699 | required. Instead, a client can open the render node and is immediately | ||
2700 | granted GPU access. Communication between clients (or servers) is done | ||
2701 | via PRIME. FLINK from render node to legacy node is not supported. New | ||
2702 | clients must not use the insecure FLINK interface. | ||
2703 | </para> | ||
2704 | <para> | ||
2705 | Besides dropping all modeset/global ioctls, render nodes also drop the | ||
2706 | DRM-Master concept. There is no reason to associate render clients with | ||
2707 | a DRM-Master as they are independent of any graphics server. Besides, | ||
2708 | they must work without any running master, anyway. | ||
2709 | Drivers must be able to run without a master object if they support | ||
2710 | render nodes. If, on the other hand, a driver requires shared state | ||
2711 | between clients which is visible to user-space and accessible beyond | ||
2712 | open-file boundaries, they cannot support render nodes. | ||
2713 | </para> | ||
2714 | </sect1> | ||
2715 | |||
2660 | <!-- External: vblank handling --> | 2716 | <!-- External: vblank handling --> |
2661 | 2717 | ||
2662 | <sect1> | 2718 | <sect1> |
diff --git a/Documentation/DocBook/filesystems.tmpl b/Documentation/DocBook/filesystems.tmpl index 25b58efd955d..4f676838da06 100644 --- a/Documentation/DocBook/filesystems.tmpl +++ b/Documentation/DocBook/filesystems.tmpl | |||
@@ -91,7 +91,6 @@ | |||
91 | <title>The Filesystem for Exporting Kernel Objects</title> | 91 | <title>The Filesystem for Exporting Kernel Objects</title> |
92 | !Efs/sysfs/file.c | 92 | !Efs/sysfs/file.c |
93 | !Efs/sysfs/symlink.c | 93 | !Efs/sysfs/symlink.c |
94 | !Efs/sysfs/bin.c | ||
95 | </chapter> | 94 | </chapter> |
96 | 95 | ||
97 | <chapter id="debugfs"> | 96 | <chapter id="debugfs"> |
diff --git a/Documentation/DocBook/genericirq.tmpl b/Documentation/DocBook/genericirq.tmpl index d16d21b7a3b7..46347f603353 100644 --- a/Documentation/DocBook/genericirq.tmpl +++ b/Documentation/DocBook/genericirq.tmpl | |||
@@ -87,7 +87,7 @@ | |||
87 | <chapter id="rationale"> | 87 | <chapter id="rationale"> |
88 | <title>Rationale</title> | 88 | <title>Rationale</title> |
89 | <para> | 89 | <para> |
90 | The original implementation of interrupt handling in Linux is using | 90 | The original implementation of interrupt handling in Linux uses |
91 | the __do_IRQ() super-handler, which is able to deal with every | 91 | the __do_IRQ() super-handler, which is able to deal with every |
92 | type of interrupt logic. | 92 | type of interrupt logic. |
93 | </para> | 93 | </para> |
@@ -111,19 +111,19 @@ | |||
111 | </itemizedlist> | 111 | </itemizedlist> |
112 | </para> | 112 | </para> |
113 | <para> | 113 | <para> |
114 | This split implementation of highlevel IRQ handlers allows us to | 114 | This split implementation of high-level IRQ handlers allows us to |
115 | optimize the flow of the interrupt handling for each specific | 115 | optimize the flow of the interrupt handling for each specific |
116 | interrupt type. This reduces complexity in that particular codepath | 116 | interrupt type. This reduces complexity in that particular code path |
117 | and allows the optimized handling of a given type. | 117 | and allows the optimized handling of a given type. |
118 | </para> | 118 | </para> |
119 | <para> | 119 | <para> |
120 | The original general IRQ implementation used hw_interrupt_type | 120 | The original general IRQ implementation used hw_interrupt_type |
121 | structures and their ->ack(), ->end() [etc.] callbacks to | 121 | structures and their ->ack(), ->end() [etc.] callbacks to |
122 | differentiate the flow control in the super-handler. This leads to | 122 | differentiate the flow control in the super-handler. This leads to |
123 | a mix of flow logic and lowlevel hardware logic, and it also leads | 123 | a mix of flow logic and low-level hardware logic, and it also leads |
124 | to unnecessary code duplication: for example in i386, there is a | 124 | to unnecessary code duplication: for example in i386, there is an |
125 | ioapic_level_irq and a ioapic_edge_irq irq-type which share many | 125 | ioapic_level_irq and an ioapic_edge_irq IRQ-type which share many |
126 | of the lowlevel details but have different flow handling. | 126 | of the low-level details but have different flow handling. |
127 | </para> | 127 | </para> |
128 | <para> | 128 | <para> |
129 | A more natural abstraction is the clean separation of the | 129 | A more natural abstraction is the clean separation of the |
@@ -132,23 +132,23 @@ | |||
132 | <para> | 132 | <para> |
133 | Analysing a couple of architecture's IRQ subsystem implementations | 133 | Analysing a couple of architecture's IRQ subsystem implementations |
134 | reveals that most of them can use a generic set of 'irq flow' | 134 | reveals that most of them can use a generic set of 'irq flow' |
135 | methods and only need to add the chip level specific code. | 135 | methods and only need to add the chip-level specific code. |
136 | The separation is also valuable for (sub)architectures | 136 | The separation is also valuable for (sub)architectures |
137 | which need specific quirks in the irq flow itself but not in the | 137 | which need specific quirks in the IRQ flow itself but not in the |
138 | chip-details - and thus provides a more transparent IRQ subsystem | 138 | chip details - and thus provides a more transparent IRQ subsystem |
139 | design. | 139 | design. |
140 | </para> | 140 | </para> |
141 | <para> | 141 | <para> |
142 | Each interrupt descriptor is assigned its own highlevel flow | 142 | Each interrupt descriptor is assigned its own high-level flow |
143 | handler, which is normally one of the generic | 143 | handler, which is normally one of the generic |
144 | implementations. (This highlevel flow handler implementation also | 144 | implementations. (This high-level flow handler implementation also |
145 | makes it simple to provide demultiplexing handlers which can be | 145 | makes it simple to provide demultiplexing handlers which can be |
146 | found in embedded platforms on various architectures.) | 146 | found in embedded platforms on various architectures.) |
147 | </para> | 147 | </para> |
148 | <para> | 148 | <para> |
149 | The separation makes the generic interrupt handling layer more | 149 | The separation makes the generic interrupt handling layer more |
150 | flexible and extensible. For example, an (sub)architecture can | 150 | flexible and extensible. For example, an (sub)architecture can |
151 | use a generic irq-flow implementation for 'level type' interrupts | 151 | use a generic IRQ-flow implementation for 'level type' interrupts |
152 | and add a (sub)architecture specific 'edge type' implementation. | 152 | and add a (sub)architecture specific 'edge type' implementation. |
153 | </para> | 153 | </para> |
154 | <para> | 154 | <para> |
@@ -172,9 +172,9 @@ | |||
172 | <para> | 172 | <para> |
173 | There are three main levels of abstraction in the interrupt code: | 173 | There are three main levels of abstraction in the interrupt code: |
174 | <orderedlist> | 174 | <orderedlist> |
175 | <listitem><para>Highlevel driver API</para></listitem> | 175 | <listitem><para>High-level driver API</para></listitem> |
176 | <listitem><para>Highlevel IRQ flow handlers</para></listitem> | 176 | <listitem><para>High-level IRQ flow handlers</para></listitem> |
177 | <listitem><para>Chiplevel hardware encapsulation</para></listitem> | 177 | <listitem><para>Chip-level hardware encapsulation</para></listitem> |
178 | </orderedlist> | 178 | </orderedlist> |
179 | </para> | 179 | </para> |
180 | <sect1 id="Interrupt_control_flow"> | 180 | <sect1 id="Interrupt_control_flow"> |
@@ -189,16 +189,16 @@ | |||
189 | which are assigned to this interrupt. | 189 | which are assigned to this interrupt. |
190 | </para> | 190 | </para> |
191 | <para> | 191 | <para> |
192 | Whenever an interrupt triggers, the lowlevel arch code calls into | 192 | Whenever an interrupt triggers, the low-level architecture code calls |
193 | the generic interrupt code by calling desc->handle_irq(). | 193 | into the generic interrupt code by calling desc->handle_irq(). |
194 | This highlevel IRQ handling function only uses desc->irq_data.chip | 194 | This high-level IRQ handling function only uses desc->irq_data.chip |
195 | primitives referenced by the assigned chip descriptor structure. | 195 | primitives referenced by the assigned chip descriptor structure. |
196 | </para> | 196 | </para> |
197 | </sect1> | 197 | </sect1> |
198 | <sect1 id="Highlevel_Driver_API"> | 198 | <sect1 id="Highlevel_Driver_API"> |
199 | <title>Highlevel Driver API</title> | 199 | <title>High-level Driver API</title> |
200 | <para> | 200 | <para> |
201 | The highlevel Driver API consists of following functions: | 201 | The high-level Driver API consists of following functions: |
202 | <itemizedlist> | 202 | <itemizedlist> |
203 | <listitem><para>request_irq()</para></listitem> | 203 | <listitem><para>request_irq()</para></listitem> |
204 | <listitem><para>free_irq()</para></listitem> | 204 | <listitem><para>free_irq()</para></listitem> |
@@ -216,7 +216,7 @@ | |||
216 | </para> | 216 | </para> |
217 | </sect1> | 217 | </sect1> |
218 | <sect1 id="Highlevel_IRQ_flow_handlers"> | 218 | <sect1 id="Highlevel_IRQ_flow_handlers"> |
219 | <title>Highlevel IRQ flow handlers</title> | 219 | <title>High-level IRQ flow handlers</title> |
220 | <para> | 220 | <para> |
221 | The generic layer provides a set of pre-defined irq-flow methods: | 221 | The generic layer provides a set of pre-defined irq-flow methods: |
222 | <itemizedlist> | 222 | <itemizedlist> |
@@ -228,7 +228,7 @@ | |||
228 | <listitem><para>handle_edge_eoi_irq</para></listitem> | 228 | <listitem><para>handle_edge_eoi_irq</para></listitem> |
229 | <listitem><para>handle_bad_irq</para></listitem> | 229 | <listitem><para>handle_bad_irq</para></listitem> |
230 | </itemizedlist> | 230 | </itemizedlist> |
231 | The interrupt flow handlers (either predefined or architecture | 231 | The interrupt flow handlers (either pre-defined or architecture |
232 | specific) are assigned to specific interrupts by the architecture | 232 | specific) are assigned to specific interrupts by the architecture |
233 | either during bootup or during device initialization. | 233 | either during bootup or during device initialization. |
234 | </para> | 234 | </para> |
@@ -297,7 +297,7 @@ desc->irq_data.chip->irq_unmask(); | |||
297 | <para> | 297 | <para> |
298 | handle_fasteoi_irq provides a generic implementation | 298 | handle_fasteoi_irq provides a generic implementation |
299 | for interrupts, which only need an EOI at the end of | 299 | for interrupts, which only need an EOI at the end of |
300 | the handler | 300 | the handler. |
301 | </para> | 301 | </para> |
302 | <para> | 302 | <para> |
303 | The following control flow is implemented (simplified excerpt): | 303 | The following control flow is implemented (simplified excerpt): |
@@ -394,7 +394,7 @@ if (desc->irq_data.chip->irq_eoi) | |||
394 | The generic functions are intended for 'clean' architectures and chips, | 394 | The generic functions are intended for 'clean' architectures and chips, |
395 | which have no platform-specific IRQ handling quirks. If an architecture | 395 | which have no platform-specific IRQ handling quirks. If an architecture |
396 | needs to implement quirks on the 'flow' level then it can do so by | 396 | needs to implement quirks on the 'flow' level then it can do so by |
397 | overriding the highlevel irq-flow handler. | 397 | overriding the high-level irq-flow handler. |
398 | </para> | 398 | </para> |
399 | </sect2> | 399 | </sect2> |
400 | <sect2 id="Delayed_interrupt_disable"> | 400 | <sect2 id="Delayed_interrupt_disable"> |
@@ -419,9 +419,9 @@ if (desc->irq_data.chip->irq_eoi) | |||
419 | </sect2> | 419 | </sect2> |
420 | </sect1> | 420 | </sect1> |
421 | <sect1 id="Chiplevel_hardware_encapsulation"> | 421 | <sect1 id="Chiplevel_hardware_encapsulation"> |
422 | <title>Chiplevel hardware encapsulation</title> | 422 | <title>Chip-level hardware encapsulation</title> |
423 | <para> | 423 | <para> |
424 | The chip level hardware descriptor structure irq_chip | 424 | The chip-level hardware descriptor structure irq_chip |
425 | contains all the direct chip relevant functions, which | 425 | contains all the direct chip relevant functions, which |
426 | can be utilized by the irq flow implementations. | 426 | can be utilized by the irq flow implementations. |
427 | <itemizedlist> | 427 | <itemizedlist> |
@@ -429,14 +429,14 @@ if (desc->irq_data.chip->irq_eoi) | |||
429 | <listitem><para>irq_mask_ack() - Optional, recommended for performance</para></listitem> | 429 | <listitem><para>irq_mask_ack() - Optional, recommended for performance</para></listitem> |
430 | <listitem><para>irq_mask()</para></listitem> | 430 | <listitem><para>irq_mask()</para></listitem> |
431 | <listitem><para>irq_unmask()</para></listitem> | 431 | <listitem><para>irq_unmask()</para></listitem> |
432 | <listitem><para>irq_eoi() - Optional, required for eoi flow handlers</para></listitem> | 432 | <listitem><para>irq_eoi() - Optional, required for EOI flow handlers</para></listitem> |
433 | <listitem><para>irq_retrigger() - Optional</para></listitem> | 433 | <listitem><para>irq_retrigger() - Optional</para></listitem> |
434 | <listitem><para>irq_set_type() - Optional</para></listitem> | 434 | <listitem><para>irq_set_type() - Optional</para></listitem> |
435 | <listitem><para>irq_set_wake() - Optional</para></listitem> | 435 | <listitem><para>irq_set_wake() - Optional</para></listitem> |
436 | </itemizedlist> | 436 | </itemizedlist> |
437 | These primitives are strictly intended to mean what they say: ack means | 437 | These primitives are strictly intended to mean what they say: ack means |
438 | ACK, masking means masking of an IRQ line, etc. It is up to the flow | 438 | ACK, masking means masking of an IRQ line, etc. It is up to the flow |
439 | handler(s) to use these basic units of lowlevel functionality. | 439 | handler(s) to use these basic units of low-level functionality. |
440 | </para> | 440 | </para> |
441 | </sect1> | 441 | </sect1> |
442 | </chapter> | 442 | </chapter> |
@@ -445,7 +445,7 @@ if (desc->irq_data.chip->irq_eoi) | |||
445 | <title>__do_IRQ entry point</title> | 445 | <title>__do_IRQ entry point</title> |
446 | <para> | 446 | <para> |
447 | The original implementation __do_IRQ() was an alternative entry | 447 | The original implementation __do_IRQ() was an alternative entry |
448 | point for all types of interrupts. It not longer exists. | 448 | point for all types of interrupts. It no longer exists. |
449 | </para> | 449 | </para> |
450 | <para> | 450 | <para> |
451 | This handler turned out to be not suitable for all | 451 | This handler turned out to be not suitable for all |
@@ -468,11 +468,11 @@ if (desc->irq_data.chip->irq_eoi) | |||
468 | <chapter id="genericchip"> | 468 | <chapter id="genericchip"> |
469 | <title>Generic interrupt chip</title> | 469 | <title>Generic interrupt chip</title> |
470 | <para> | 470 | <para> |
471 | To avoid copies of identical implementations of irq chips the | 471 | To avoid copies of identical implementations of IRQ chips the |
472 | core provides a configurable generic interrupt chip | 472 | core provides a configurable generic interrupt chip |
473 | implementation. Developers should check carefuly whether the | 473 | implementation. Developers should check carefuly whether the |
474 | generic chip fits their needs before implementing the same | 474 | generic chip fits their needs before implementing the same |
475 | functionality slightly different themself. | 475 | functionality slightly differently themselves. |
476 | </para> | 476 | </para> |
477 | !Ekernel/irq/generic-chip.c | 477 | !Ekernel/irq/generic-chip.c |
478 | </chapter> | 478 | </chapter> |
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index c2fc9ec1417e..7a3b49b3cc3b 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -722,17 +722,22 @@ for more details.</para> | |||
722 | </section> | 722 | </section> |
723 | 723 | ||
724 | <section id="mpeg-controls"> | 724 | <section id="mpeg-controls"> |
725 | <title>MPEG Control Reference</title> | 725 | <title>Codec Control Reference</title> |
726 | 726 | ||
727 | <para>Below all controls within the MPEG control class are | 727 | <para>Below all controls within the Codec control class are |
728 | described. First the generic controls, then controls specific for | 728 | described. First the generic controls, then controls specific for |
729 | certain hardware.</para> | 729 | certain hardware.</para> |
730 | 730 | ||
731 | <para>Note: These controls are applicable to all codecs and | ||
732 | not just MPEG. The defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG | ||
733 | as the controls were originally made for MPEG codecs and later | ||
734 | extended to cover all encoding formats.</para> | ||
735 | |||
731 | <section> | 736 | <section> |
732 | <title>Generic MPEG Controls</title> | 737 | <title>Generic Codec Controls</title> |
733 | 738 | ||
734 | <table pgwide="1" frame="none" id="mpeg-control-id"> | 739 | <table pgwide="1" frame="none" id="mpeg-control-id"> |
735 | <title>MPEG Control IDs</title> | 740 | <title>Codec Control IDs</title> |
736 | <tgroup cols="4"> | 741 | <tgroup cols="4"> |
737 | <colspec colname="c1" colwidth="1*" /> | 742 | <colspec colname="c1" colwidth="1*" /> |
738 | <colspec colname="c2" colwidth="6*" /> | 743 | <colspec colname="c2" colwidth="6*" /> |
@@ -752,7 +757,7 @@ certain hardware.</para> | |||
752 | <row> | 757 | <row> |
753 | <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant> </entry> | 758 | <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant> </entry> |
754 | <entry>class</entry> | 759 | <entry>class</entry> |
755 | </row><row><entry spanname="descr">The MPEG class | 760 | </row><row><entry spanname="descr">The Codec class |
756 | descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a | 761 | descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a |
757 | description of this control class. This description can be used as the | 762 | description of this control class. This description can be used as the |
758 | caption of a Tab page in a GUI, for example.</entry> | 763 | caption of a Tab page in a GUI, for example.</entry> |
@@ -3009,6 +3014,159 @@ in by the application. 0 = do not insert, 1 = insert packets.</entry> | |||
3009 | </tgroup> | 3014 | </tgroup> |
3010 | </table> | 3015 | </table> |
3011 | </section> | 3016 | </section> |
3017 | |||
3018 | <section> | ||
3019 | <title>VPX Control Reference</title> | ||
3020 | |||
3021 | <para>The VPX controls include controls for encoding parameters | ||
3022 | of VPx video codec.</para> | ||
3023 | |||
3024 | <table pgwide="1" frame="none" id="vpx-control-id"> | ||
3025 | <title>VPX Control IDs</title> | ||
3026 | |||
3027 | <tgroup cols="4"> | ||
3028 | <colspec colname="c1" colwidth="1*" /> | ||
3029 | <colspec colname="c2" colwidth="6*" /> | ||
3030 | <colspec colname="c3" colwidth="2*" /> | ||
3031 | <colspec colname="c4" colwidth="6*" /> | ||
3032 | <spanspec namest="c1" nameend="c2" spanname="id" /> | ||
3033 | <spanspec namest="c2" nameend="c4" spanname="descr" /> | ||
3034 | <thead> | ||
3035 | <row> | ||
3036 | <entry spanname="id" align="left">ID</entry> | ||
3037 | <entry align="left">Type</entry> | ||
3038 | </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> | ||
3039 | </row> | ||
3040 | </thead> | ||
3041 | <tbody valign="top"> | ||
3042 | <row><entry></entry></row> | ||
3043 | |||
3044 | <row><entry></entry></row> | ||
3045 | <row id="v4l2-vpx-num-partitions"> | ||
3046 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS</constant></entry> | ||
3047 | <entry>enum v4l2_vp8_num_partitions</entry> | ||
3048 | </row> | ||
3049 | <row><entry spanname="descr">The number of token partitions to use in VP8 encoder. | ||
3050 | Possible values are:</entry> | ||
3051 | </row> | ||
3052 | <row> | ||
3053 | <entrytbl spanname="descr" cols="2"> | ||
3054 | <tbody valign="top"> | ||
3055 | <row> | ||
3056 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION</constant></entry> | ||
3057 | <entry>1 coefficient partition</entry> | ||
3058 | </row> | ||
3059 | <row> | ||
3060 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS</constant></entry> | ||
3061 | <entry>2 coefficient partitions</entry> | ||
3062 | </row> | ||
3063 | <row> | ||
3064 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS</constant></entry> | ||
3065 | <entry>4 coefficient partitions</entry> | ||
3066 | </row> | ||
3067 | <row> | ||
3068 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS</constant></entry> | ||
3069 | <entry>8 coefficient partitions</entry> | ||
3070 | </row> | ||
3071 | </tbody> | ||
3072 | </entrytbl> | ||
3073 | </row> | ||
3074 | |||
3075 | <row><entry></entry></row> | ||
3076 | <row> | ||
3077 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4</constant></entry> | ||
3078 | <entry>boolean</entry> | ||
3079 | </row> | ||
3080 | <row><entry spanname="descr">Setting this prevents intra 4x4 mode in the intra mode decision.</entry> | ||
3081 | </row> | ||
3082 | |||
3083 | <row><entry></entry></row> | ||
3084 | <row id="v4l2-vpx-num-ref-frames"> | ||
3085 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES</constant></entry> | ||
3086 | <entry>enum v4l2_vp8_num_ref_frames</entry> | ||
3087 | </row> | ||
3088 | <row><entry spanname="descr">The number of reference pictures for encoding P frames. | ||
3089 | Possible values are:</entry> | ||
3090 | </row> | ||
3091 | <row> | ||
3092 | <entrytbl spanname="descr" cols="2"> | ||
3093 | <tbody valign="top"> | ||
3094 | <row> | ||
3095 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME</constant></entry> | ||
3096 | <entry>Last encoded frame will be searched</entry> | ||
3097 | </row> | ||
3098 | <row> | ||
3099 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME</constant></entry> | ||
3100 | <entry>Two frames will be searched among the last encoded frame, the golden frame | ||
3101 | and the alternate reference (altref) frame. The encoder implementation will decide which two are chosen.</entry> | ||
3102 | </row> | ||
3103 | <row> | ||
3104 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME</constant></entry> | ||
3105 | <entry>The last encoded frame, the golden frame and the altref frame will be searched.</entry> | ||
3106 | </row> | ||
3107 | </tbody> | ||
3108 | </entrytbl> | ||
3109 | </row> | ||
3110 | |||
3111 | <row><entry></entry></row> | ||
3112 | <row> | ||
3113 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL</constant></entry> | ||
3114 | <entry>integer</entry> | ||
3115 | </row> | ||
3116 | <row><entry spanname="descr">Indicates the loop filter level. The adjustment of the loop | ||
3117 | filter level is done via a delta value against a baseline loop filter value.</entry> | ||
3118 | </row> | ||
3119 | |||
3120 | <row><entry></entry></row> | ||
3121 | <row> | ||
3122 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS</constant></entry> | ||
3123 | <entry>integer</entry> | ||
3124 | </row> | ||
3125 | <row><entry spanname="descr">This parameter affects the loop filter. Anything above | ||
3126 | zero weakens the deblocking effect on the loop filter.</entry> | ||
3127 | </row> | ||
3128 | |||
3129 | <row><entry></entry></row> | ||
3130 | <row> | ||
3131 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD</constant></entry> | ||
3132 | <entry>integer</entry> | ||
3133 | </row> | ||
3134 | <row><entry spanname="descr">Sets the refresh period for the golden frame. The period is defined | ||
3135 | in number of frames. For a value of 'n', every nth frame starting from the first key frame will be taken as a golden frame. | ||
3136 | For eg. for encoding sequence of 0, 1, 2, 3, 4, 5, 6, 7 where the golden frame refresh period is set as 4, the frames | ||
3137 | 0, 4, 8 etc will be taken as the golden frames as frame 0 is always a key frame.</entry> | ||
3138 | </row> | ||
3139 | |||
3140 | <row><entry></entry></row> | ||
3141 | <row id="v4l2-vpx-golden-frame-sel"> | ||
3142 | <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL</constant></entry> | ||
3143 | <entry>enum v4l2_vp8_golden_frame_sel</entry> | ||
3144 | </row> | ||
3145 | <row><entry spanname="descr">Selects the golden frame for encoding. | ||
3146 | Possible values are:</entry> | ||
3147 | </row> | ||
3148 | <row> | ||
3149 | <entrytbl spanname="descr" cols="2"> | ||
3150 | <tbody valign="top"> | ||
3151 | <row> | ||
3152 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV</constant></entry> | ||
3153 | <entry>Use the (n-2)th frame as a golden frame, current frame index being 'n'.</entry> | ||
3154 | </row> | ||
3155 | <row> | ||
3156 | <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD</constant></entry> | ||
3157 | <entry>Use the previous specific frame indicated by | ||
3158 | V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a golden frame.</entry> | ||
3159 | </row> | ||
3160 | </tbody> | ||
3161 | </entrytbl> | ||
3162 | </row> | ||
3163 | |||
3164 | <row><entry></entry></row> | ||
3165 | </tbody> | ||
3166 | </tgroup> | ||
3167 | </table> | ||
3168 | |||
3169 | </section> | ||
3012 | </section> | 3170 | </section> |
3013 | 3171 | ||
3014 | <section id="camera-controls"> | 3172 | <section id="camera-controls"> |
diff --git a/Documentation/DocBook/media/v4l/lirc_device_interface.xml b/Documentation/DocBook/media/v4l/lirc_device_interface.xml index 8d7eb6bf6312..34cada2ca710 100644 --- a/Documentation/DocBook/media/v4l/lirc_device_interface.xml +++ b/Documentation/DocBook/media/v4l/lirc_device_interface.xml | |||
@@ -46,7 +46,9 @@ describing an IR signal are read from the chardev.</para> | |||
46 | values. Pulses and spaces are only marked implicitly by their position. The | 46 | values. Pulses and spaces are only marked implicitly by their position. The |
47 | data must start and end with a pulse, therefore, the data must always include | 47 | data must start and end with a pulse, therefore, the data must always include |
48 | an uneven number of samples. The write function must block until the data has | 48 | an uneven number of samples. The write function must block until the data has |
49 | been transmitted by the hardware.</para> | 49 | been transmitted by the hardware. If more data is provided than the hardware |
50 | can send, the driver returns EINVAL.</para> | ||
51 | |||
50 | </section> | 52 | </section> |
51 | 53 | ||
52 | <section id="lirc_ioctl"> | 54 | <section id="lirc_ioctl"> |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml new file mode 100644 index 000000000000..c51d5a4cda09 --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml | |||
@@ -0,0 +1,171 @@ | |||
1 | <refentry> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | <refnamediv> | ||
7 | <refname id="V4L2-PIX-FMT-NV16M"><constant>V4L2_PIX_FMT_NV16M</constant></refname> | ||
8 | <refname id="V4L2-PIX-FMT-NV61M"><constant>V4L2_PIX_FMT_NV61M</constant></refname> | ||
9 | <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV16</constant> and <constant>V4L2_PIX_FMT_NV61</constant> with planes | ||
10 | non contiguous in memory. </refpurpose> | ||
11 | </refnamediv> | ||
12 | <refsect1> | ||
13 | <title>Description</title> | ||
14 | |||
15 | <para>This is a multi-planar, two-plane version of the YUV 4:2:0 format. | ||
16 | The three components are separated into two sub-images or planes. | ||
17 | <constant>V4L2_PIX_FMT_NV16M</constant> differs from <constant>V4L2_PIX_FMT_NV16 | ||
18 | </constant> in that the two planes are non-contiguous in memory, i.e. the chroma | ||
19 | plane does not necessarily immediately follows the luma plane. | ||
20 | The luminance data occupies the first plane. The Y plane has one byte per pixel. | ||
21 | In the second plane there is chrominance data with alternating chroma samples. | ||
22 | The CbCr plane is the same width and height, in bytes, as the Y plane. | ||
23 | Each CbCr pair belongs to four pixels. For example, | ||
24 | Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to | ||
25 | Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, | ||
26 | Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. | ||
27 | <constant>V4L2_PIX_FMT_NV61M</constant> is the same as <constant>V4L2_PIX_FMT_NV16M</constant> | ||
28 | except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para> | ||
29 | |||
30 | <para><constant>V4L2_PIX_FMT_NV16M</constant> and | ||
31 | <constant>V4L2_PIX_FMT_NV61M</constant> are intended to be used only in drivers | ||
32 | and applications that support the multi-planar API, described in | ||
33 | <xref linkend="planar-apis"/>. </para> | ||
34 | |||
35 | <example> | ||
36 | <title><constant>V4L2_PIX_FMT_NV16M</constant> 4 × 4 pixel image</title> | ||
37 | |||
38 | <formalpara> | ||
39 | <title>Byte Order.</title> | ||
40 | <para>Each cell is one byte. | ||
41 | <informaltable frame="none"> | ||
42 | <tgroup cols="5" align="center"> | ||
43 | <colspec align="left" colwidth="2*" /> | ||
44 | <tbody valign="top"> | ||
45 | <row> | ||
46 | <entry>start0 + 0:</entry> | ||
47 | <entry>Y'<subscript>00</subscript></entry> | ||
48 | <entry>Y'<subscript>01</subscript></entry> | ||
49 | <entry>Y'<subscript>02</subscript></entry> | ||
50 | <entry>Y'<subscript>03</subscript></entry> | ||
51 | </row> | ||
52 | <row> | ||
53 | <entry>start0 + 4:</entry> | ||
54 | <entry>Y'<subscript>10</subscript></entry> | ||
55 | <entry>Y'<subscript>11</subscript></entry> | ||
56 | <entry>Y'<subscript>12</subscript></entry> | ||
57 | <entry>Y'<subscript>13</subscript></entry> | ||
58 | </row> | ||
59 | <row> | ||
60 | <entry>start0 + 8:</entry> | ||
61 | <entry>Y'<subscript>20</subscript></entry> | ||
62 | <entry>Y'<subscript>21</subscript></entry> | ||
63 | <entry>Y'<subscript>22</subscript></entry> | ||
64 | <entry>Y'<subscript>23</subscript></entry> | ||
65 | </row> | ||
66 | <row> | ||
67 | <entry>start0 + 12:</entry> | ||
68 | <entry>Y'<subscript>30</subscript></entry> | ||
69 | <entry>Y'<subscript>31</subscript></entry> | ||
70 | <entry>Y'<subscript>32</subscript></entry> | ||
71 | <entry>Y'<subscript>33</subscript></entry> | ||
72 | </row> | ||
73 | <row> | ||
74 | <entry></entry> | ||
75 | </row> | ||
76 | <row> | ||
77 | <entry>start1 + 0:</entry> | ||
78 | <entry>Cb<subscript>00</subscript></entry> | ||
79 | <entry>Cr<subscript>00</subscript></entry> | ||
80 | <entry>Cb<subscript>02</subscript></entry> | ||
81 | <entry>Cr<subscript>02</subscript></entry> | ||
82 | </row> | ||
83 | <row> | ||
84 | <entry>start1 + 4:</entry> | ||
85 | <entry>Cb<subscript>10</subscript></entry> | ||
86 | <entry>Cr<subscript>10</subscript></entry> | ||
87 | <entry>Cb<subscript>12</subscript></entry> | ||
88 | <entry>Cr<subscript>12</subscript></entry> | ||
89 | </row> | ||
90 | <row> | ||
91 | <entry>start1 + 8:</entry> | ||
92 | <entry>Cb<subscript>20</subscript></entry> | ||
93 | <entry>Cr<subscript>20</subscript></entry> | ||
94 | <entry>Cb<subscript>22</subscript></entry> | ||
95 | <entry>Cr<subscript>22</subscript></entry> | ||
96 | </row> | ||
97 | <row> | ||
98 | <entry>start1 + 12:</entry> | ||
99 | <entry>Cb<subscript>30</subscript></entry> | ||
100 | <entry>Cr<subscript>30</subscript></entry> | ||
101 | <entry>Cb<subscript>32</subscript></entry> | ||
102 | <entry>Cr<subscript>32</subscript></entry> | ||
103 | </row> | ||
104 | </tbody> | ||
105 | </tgroup> | ||
106 | </informaltable> | ||
107 | </para> | ||
108 | </formalpara> | ||
109 | |||
110 | <formalpara> | ||
111 | <title>Color Sample Location.</title> | ||
112 | <para> | ||
113 | <informaltable frame="none"> | ||
114 | <tgroup cols="7" align="center"> | ||
115 | <tbody valign="top"> | ||
116 | <row> | ||
117 | <entry></entry> | ||
118 | <entry>0</entry><entry></entry><entry>1</entry><entry></entry> | ||
119 | <entry>2</entry><entry></entry><entry>3</entry> | ||
120 | </row> | ||
121 | <row> | ||
122 | <entry>0</entry> | ||
123 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
124 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
125 | </row> | ||
126 | <row> | ||
127 | <entry></entry> | ||
128 | <entry></entry><entry>C</entry><entry></entry><entry></entry> | ||
129 | <entry></entry><entry>C</entry><entry></entry> | ||
130 | </row> | ||
131 | <row> | ||
132 | <entry>1</entry> | ||
133 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
134 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
135 | </row> | ||
136 | <row> | ||
137 | <entry></entry> | ||
138 | <entry></entry><entry>C</entry><entry></entry><entry></entry> | ||
139 | <entry></entry><entry>C</entry><entry></entry> | ||
140 | </row> | ||
141 | <row> | ||
142 | <entry></entry> | ||
143 | </row> | ||
144 | <row> | ||
145 | <entry>2</entry> | ||
146 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
147 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
148 | </row> | ||
149 | <row> | ||
150 | <entry></entry> | ||
151 | <entry></entry><entry>C</entry><entry></entry><entry></entry> | ||
152 | <entry></entry><entry>C</entry><entry></entry> | ||
153 | </row> | ||
154 | <row> | ||
155 | <entry>3</entry> | ||
156 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
157 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
158 | </row> | ||
159 | <row> | ||
160 | <entry></entry> | ||
161 | <entry></entry><entry>C</entry><entry></entry><entry></entry> | ||
162 | <entry></entry><entry>C</entry><entry></entry> | ||
163 | </row> | ||
164 | </tbody> | ||
165 | </tgroup> | ||
166 | </informaltable> | ||
167 | </para> | ||
168 | </formalpara> | ||
169 | </example> | ||
170 | </refsect1> | ||
171 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index 99b8d2ad6e4f..72d72bd67d0a 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml | |||
@@ -391,9 +391,9 @@ clamp (double x) | |||
391 | else return r; | 391 | else return r; |
392 | } | 392 | } |
393 | 393 | ||
394 | y1 = (255 / 219.0) * (Y1 - 16); | 394 | y1 = (Y1 - 16) / 219.0; |
395 | pb = (255 / 224.0) * (Cb - 128); | 395 | pb = (Cb - 128) / 224.0; |
396 | pr = (255 / 224.0) * (Cr - 128); | 396 | pr = (Cr - 128) / 224.0; |
397 | 397 | ||
398 | r = 1.0 * y1 + 0 * pb + 1.402 * pr; | 398 | r = 1.0 * y1 + 0 * pb + 1.402 * pr; |
399 | g = 1.0 * y1 - 0.344 * pb - 0.714 * pr; | 399 | g = 1.0 * y1 - 0.344 * pb - 0.714 * pr; |
@@ -718,6 +718,7 @@ information.</para> | |||
718 | &sub-nv12m; | 718 | &sub-nv12m; |
719 | &sub-nv12mt; | 719 | &sub-nv12mt; |
720 | &sub-nv16; | 720 | &sub-nv16; |
721 | &sub-nv16m; | ||
721 | &sub-nv24; | 722 | &sub-nv24; |
722 | &sub-m420; | 723 | &sub-m420; |
723 | </section> | 724 | </section> |
diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml index adc61982df7b..f72c1cc93a9b 100644 --- a/Documentation/DocBook/media/v4l/subdev-formats.xml +++ b/Documentation/DocBook/media/v4l/subdev-formats.xml | |||
@@ -97,31 +97,39 @@ | |||
97 | <colspec colname="id" align="left" /> | 97 | <colspec colname="id" align="left" /> |
98 | <colspec colname="code" align="center"/> | 98 | <colspec colname="code" align="center"/> |
99 | <colspec colname="bit" /> | 99 | <colspec colname="bit" /> |
100 | <colspec colnum="4" colname="b23" align="center" /> | 100 | <colspec colnum="4" colname="b31" align="center" /> |
101 | <colspec colnum="5" colname="b22" align="center" /> | 101 | <colspec colnum="5" colname="b20" align="center" /> |
102 | <colspec colnum="6" colname="b21" align="center" /> | 102 | <colspec colnum="6" colname="b29" align="center" /> |
103 | <colspec colnum="7" colname="b20" align="center" /> | 103 | <colspec colnum="7" colname="b28" align="center" /> |
104 | <colspec colnum="8" colname="b19" align="center" /> | 104 | <colspec colnum="8" colname="b27" align="center" /> |
105 | <colspec colnum="9" colname="b18" align="center" /> | 105 | <colspec colnum="9" colname="b26" align="center" /> |
106 | <colspec colnum="10" colname="b17" align="center" /> | 106 | <colspec colnum="10" colname="b25" align="center" /> |
107 | <colspec colnum="11" colname="b16" align="center" /> | 107 | <colspec colnum="11" colname="b24" align="center" /> |
108 | <colspec colnum="12" colname="b15" align="center" /> | 108 | <colspec colnum="12" colname="b23" align="center" /> |
109 | <colspec colnum="13" colname="b14" align="center" /> | 109 | <colspec colnum="13" colname="b22" align="center" /> |
110 | <colspec colnum="14" colname="b13" align="center" /> | 110 | <colspec colnum="14" colname="b21" align="center" /> |
111 | <colspec colnum="15" colname="b12" align="center" /> | 111 | <colspec colnum="15" colname="b20" align="center" /> |
112 | <colspec colnum="16" colname="b11" align="center" /> | 112 | <colspec colnum="16" colname="b19" align="center" /> |
113 | <colspec colnum="17" colname="b10" align="center" /> | 113 | <colspec colnum="17" colname="b18" align="center" /> |
114 | <colspec colnum="18" colname="b09" align="center" /> | 114 | <colspec colnum="18" colname="b17" align="center" /> |
115 | <colspec colnum="19" colname="b08" align="center" /> | 115 | <colspec colnum="19" colname="b16" align="center" /> |
116 | <colspec colnum="20" colname="b07" align="center" /> | 116 | <colspec colnum="20" colname="b15" align="center" /> |
117 | <colspec colnum="21" colname="b06" align="center" /> | 117 | <colspec colnum="21" colname="b14" align="center" /> |
118 | <colspec colnum="22" colname="b05" align="center" /> | 118 | <colspec colnum="22" colname="b13" align="center" /> |
119 | <colspec colnum="23" colname="b04" align="center" /> | 119 | <colspec colnum="23" colname="b12" align="center" /> |
120 | <colspec colnum="24" colname="b03" align="center" /> | 120 | <colspec colnum="24" colname="b11" align="center" /> |
121 | <colspec colnum="25" colname="b02" align="center" /> | 121 | <colspec colnum="25" colname="b10" align="center" /> |
122 | <colspec colnum="26" colname="b01" align="center" /> | 122 | <colspec colnum="26" colname="b09" align="center" /> |
123 | <colspec colnum="27" colname="b00" align="center" /> | 123 | <colspec colnum="27" colname="b08" align="center" /> |
124 | <spanspec namest="b23" nameend="b00" spanname="b0" /> | 124 | <colspec colnum="28" colname="b07" align="center" /> |
125 | <colspec colnum="29" colname="b06" align="center" /> | ||
126 | <colspec colnum="30" colname="b05" align="center" /> | ||
127 | <colspec colnum="31" colname="b04" align="center" /> | ||
128 | <colspec colnum="32" colname="b03" align="center" /> | ||
129 | <colspec colnum="33" colname="b02" align="center" /> | ||
130 | <colspec colnum="34" colname="b01" align="center" /> | ||
131 | <colspec colnum="35" colname="b00" align="center" /> | ||
132 | <spanspec namest="b31" nameend="b00" spanname="b0" /> | ||
125 | <thead> | 133 | <thead> |
126 | <row> | 134 | <row> |
127 | <entry>Identifier</entry> | 135 | <entry>Identifier</entry> |
@@ -133,6 +141,14 @@ | |||
133 | <entry></entry> | 141 | <entry></entry> |
134 | <entry></entry> | 142 | <entry></entry> |
135 | <entry>Bit</entry> | 143 | <entry>Bit</entry> |
144 | <entry>31</entry> | ||
145 | <entry>30</entry> | ||
146 | <entry>29</entry> | ||
147 | <entry>28</entry> | ||
148 | <entry>27</entry> | ||
149 | <entry>26</entry> | ||
150 | <entry>25</entry> | ||
151 | <entry>24</entry> | ||
136 | <entry>23</entry> | 152 | <entry>23</entry> |
137 | <entry>22</entry> | 153 | <entry>22</entry> |
138 | <entry>21</entry> | 154 | <entry>21</entry> |
@@ -164,7 +180,7 @@ | |||
164 | <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry> | 180 | <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE</entry> |
165 | <entry>0x1001</entry> | 181 | <entry>0x1001</entry> |
166 | <entry></entry> | 182 | <entry></entry> |
167 | &dash-ent-16; | 183 | &dash-ent-24; |
168 | <entry>0</entry> | 184 | <entry>0</entry> |
169 | <entry>0</entry> | 185 | <entry>0</entry> |
170 | <entry>0</entry> | 186 | <entry>0</entry> |
@@ -178,7 +194,7 @@ | |||
178 | <entry></entry> | 194 | <entry></entry> |
179 | <entry></entry> | 195 | <entry></entry> |
180 | <entry></entry> | 196 | <entry></entry> |
181 | &dash-ent-16; | 197 | &dash-ent-24; |
182 | <entry>g<subscript>3</subscript></entry> | 198 | <entry>g<subscript>3</subscript></entry> |
183 | <entry>g<subscript>2</subscript></entry> | 199 | <entry>g<subscript>2</subscript></entry> |
184 | <entry>g<subscript>1</subscript></entry> | 200 | <entry>g<subscript>1</subscript></entry> |
@@ -192,7 +208,7 @@ | |||
192 | <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry> | 208 | <entry>V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE</entry> |
193 | <entry>0x1002</entry> | 209 | <entry>0x1002</entry> |
194 | <entry></entry> | 210 | <entry></entry> |
195 | &dash-ent-16; | 211 | &dash-ent-24; |
196 | <entry>g<subscript>3</subscript></entry> | 212 | <entry>g<subscript>3</subscript></entry> |
197 | <entry>g<subscript>2</subscript></entry> | 213 | <entry>g<subscript>2</subscript></entry> |
198 | <entry>g<subscript>1</subscript></entry> | 214 | <entry>g<subscript>1</subscript></entry> |
@@ -206,7 +222,7 @@ | |||
206 | <entry></entry> | 222 | <entry></entry> |
207 | <entry></entry> | 223 | <entry></entry> |
208 | <entry></entry> | 224 | <entry></entry> |
209 | &dash-ent-16; | 225 | &dash-ent-24; |
210 | <entry>0</entry> | 226 | <entry>0</entry> |
211 | <entry>0</entry> | 227 | <entry>0</entry> |
212 | <entry>0</entry> | 228 | <entry>0</entry> |
@@ -220,7 +236,7 @@ | |||
220 | <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry> | 236 | <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE</entry> |
221 | <entry>0x1003</entry> | 237 | <entry>0x1003</entry> |
222 | <entry></entry> | 238 | <entry></entry> |
223 | &dash-ent-16; | 239 | &dash-ent-24; |
224 | <entry>0</entry> | 240 | <entry>0</entry> |
225 | <entry>r<subscript>4</subscript></entry> | 241 | <entry>r<subscript>4</subscript></entry> |
226 | <entry>r<subscript>3</subscript></entry> | 242 | <entry>r<subscript>3</subscript></entry> |
@@ -234,7 +250,7 @@ | |||
234 | <entry></entry> | 250 | <entry></entry> |
235 | <entry></entry> | 251 | <entry></entry> |
236 | <entry></entry> | 252 | <entry></entry> |
237 | &dash-ent-16; | 253 | &dash-ent-24; |
238 | <entry>g<subscript>2</subscript></entry> | 254 | <entry>g<subscript>2</subscript></entry> |
239 | <entry>g<subscript>1</subscript></entry> | 255 | <entry>g<subscript>1</subscript></entry> |
240 | <entry>g<subscript>0</subscript></entry> | 256 | <entry>g<subscript>0</subscript></entry> |
@@ -248,7 +264,7 @@ | |||
248 | <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry> | 264 | <entry>V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE</entry> |
249 | <entry>0x1004</entry> | 265 | <entry>0x1004</entry> |
250 | <entry></entry> | 266 | <entry></entry> |
251 | &dash-ent-16; | 267 | &dash-ent-24; |
252 | <entry>g<subscript>2</subscript></entry> | 268 | <entry>g<subscript>2</subscript></entry> |
253 | <entry>g<subscript>1</subscript></entry> | 269 | <entry>g<subscript>1</subscript></entry> |
254 | <entry>g<subscript>0</subscript></entry> | 270 | <entry>g<subscript>0</subscript></entry> |
@@ -262,7 +278,7 @@ | |||
262 | <entry></entry> | 278 | <entry></entry> |
263 | <entry></entry> | 279 | <entry></entry> |
264 | <entry></entry> | 280 | <entry></entry> |
265 | &dash-ent-16; | 281 | &dash-ent-24; |
266 | <entry>0</entry> | 282 | <entry>0</entry> |
267 | <entry>r<subscript>4</subscript></entry> | 283 | <entry>r<subscript>4</subscript></entry> |
268 | <entry>r<subscript>3</subscript></entry> | 284 | <entry>r<subscript>3</subscript></entry> |
@@ -276,7 +292,7 @@ | |||
276 | <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry> | 292 | <entry>V4L2_MBUS_FMT_BGR565_2X8_BE</entry> |
277 | <entry>0x1005</entry> | 293 | <entry>0x1005</entry> |
278 | <entry></entry> | 294 | <entry></entry> |
279 | &dash-ent-16; | 295 | &dash-ent-24; |
280 | <entry>b<subscript>4</subscript></entry> | 296 | <entry>b<subscript>4</subscript></entry> |
281 | <entry>b<subscript>3</subscript></entry> | 297 | <entry>b<subscript>3</subscript></entry> |
282 | <entry>b<subscript>2</subscript></entry> | 298 | <entry>b<subscript>2</subscript></entry> |
@@ -290,7 +306,7 @@ | |||
290 | <entry></entry> | 306 | <entry></entry> |
291 | <entry></entry> | 307 | <entry></entry> |
292 | <entry></entry> | 308 | <entry></entry> |
293 | &dash-ent-16; | 309 | &dash-ent-24; |
294 | <entry>g<subscript>2</subscript></entry> | 310 | <entry>g<subscript>2</subscript></entry> |
295 | <entry>g<subscript>1</subscript></entry> | 311 | <entry>g<subscript>1</subscript></entry> |
296 | <entry>g<subscript>0</subscript></entry> | 312 | <entry>g<subscript>0</subscript></entry> |
@@ -304,7 +320,7 @@ | |||
304 | <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry> | 320 | <entry>V4L2_MBUS_FMT_BGR565_2X8_LE</entry> |
305 | <entry>0x1006</entry> | 321 | <entry>0x1006</entry> |
306 | <entry></entry> | 322 | <entry></entry> |
307 | &dash-ent-16; | 323 | &dash-ent-24; |
308 | <entry>g<subscript>2</subscript></entry> | 324 | <entry>g<subscript>2</subscript></entry> |
309 | <entry>g<subscript>1</subscript></entry> | 325 | <entry>g<subscript>1</subscript></entry> |
310 | <entry>g<subscript>0</subscript></entry> | 326 | <entry>g<subscript>0</subscript></entry> |
@@ -318,7 +334,7 @@ | |||
318 | <entry></entry> | 334 | <entry></entry> |
319 | <entry></entry> | 335 | <entry></entry> |
320 | <entry></entry> | 336 | <entry></entry> |
321 | &dash-ent-16; | 337 | &dash-ent-24; |
322 | <entry>b<subscript>4</subscript></entry> | 338 | <entry>b<subscript>4</subscript></entry> |
323 | <entry>b<subscript>3</subscript></entry> | 339 | <entry>b<subscript>3</subscript></entry> |
324 | <entry>b<subscript>2</subscript></entry> | 340 | <entry>b<subscript>2</subscript></entry> |
@@ -332,7 +348,7 @@ | |||
332 | <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry> | 348 | <entry>V4L2_MBUS_FMT_RGB565_2X8_BE</entry> |
333 | <entry>0x1007</entry> | 349 | <entry>0x1007</entry> |
334 | <entry></entry> | 350 | <entry></entry> |
335 | &dash-ent-16; | 351 | &dash-ent-24; |
336 | <entry>r<subscript>4</subscript></entry> | 352 | <entry>r<subscript>4</subscript></entry> |
337 | <entry>r<subscript>3</subscript></entry> | 353 | <entry>r<subscript>3</subscript></entry> |
338 | <entry>r<subscript>2</subscript></entry> | 354 | <entry>r<subscript>2</subscript></entry> |
@@ -346,7 +362,7 @@ | |||
346 | <entry></entry> | 362 | <entry></entry> |
347 | <entry></entry> | 363 | <entry></entry> |
348 | <entry></entry> | 364 | <entry></entry> |
349 | &dash-ent-16; | 365 | &dash-ent-24; |
350 | <entry>g<subscript>2</subscript></entry> | 366 | <entry>g<subscript>2</subscript></entry> |
351 | <entry>g<subscript>1</subscript></entry> | 367 | <entry>g<subscript>1</subscript></entry> |
352 | <entry>g<subscript>0</subscript></entry> | 368 | <entry>g<subscript>0</subscript></entry> |
@@ -360,7 +376,7 @@ | |||
360 | <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry> | 376 | <entry>V4L2_MBUS_FMT_RGB565_2X8_LE</entry> |
361 | <entry>0x1008</entry> | 377 | <entry>0x1008</entry> |
362 | <entry></entry> | 378 | <entry></entry> |
363 | &dash-ent-16; | 379 | &dash-ent-24; |
364 | <entry>g<subscript>2</subscript></entry> | 380 | <entry>g<subscript>2</subscript></entry> |
365 | <entry>g<subscript>1</subscript></entry> | 381 | <entry>g<subscript>1</subscript></entry> |
366 | <entry>g<subscript>0</subscript></entry> | 382 | <entry>g<subscript>0</subscript></entry> |
@@ -374,7 +390,7 @@ | |||
374 | <entry></entry> | 390 | <entry></entry> |
375 | <entry></entry> | 391 | <entry></entry> |
376 | <entry></entry> | 392 | <entry></entry> |
377 | &dash-ent-16; | 393 | &dash-ent-24; |
378 | <entry>r<subscript>4</subscript></entry> | 394 | <entry>r<subscript>4</subscript></entry> |
379 | <entry>r<subscript>3</subscript></entry> | 395 | <entry>r<subscript>3</subscript></entry> |
380 | <entry>r<subscript>2</subscript></entry> | 396 | <entry>r<subscript>2</subscript></entry> |
@@ -388,12 +404,7 @@ | |||
388 | <entry>V4L2_MBUS_FMT_RGB666_1X18</entry> | 404 | <entry>V4L2_MBUS_FMT_RGB666_1X18</entry> |
389 | <entry>0x1009</entry> | 405 | <entry>0x1009</entry> |
390 | <entry></entry> | 406 | <entry></entry> |
391 | <entry>-</entry> | 407 | &dash-ent-14; |
392 | <entry>-</entry> | ||
393 | <entry>-</entry> | ||
394 | <entry>-</entry> | ||
395 | <entry>-</entry> | ||
396 | <entry>-</entry> | ||
397 | <entry>r<subscript>5</subscript></entry> | 408 | <entry>r<subscript>5</subscript></entry> |
398 | <entry>r<subscript>4</subscript></entry> | 409 | <entry>r<subscript>4</subscript></entry> |
399 | <entry>r<subscript>3</subscript></entry> | 410 | <entry>r<subscript>3</subscript></entry> |
@@ -417,6 +428,7 @@ | |||
417 | <entry>V4L2_MBUS_FMT_RGB888_1X24</entry> | 428 | <entry>V4L2_MBUS_FMT_RGB888_1X24</entry> |
418 | <entry>0x100a</entry> | 429 | <entry>0x100a</entry> |
419 | <entry></entry> | 430 | <entry></entry> |
431 | &dash-ent-8; | ||
420 | <entry>r<subscript>7</subscript></entry> | 432 | <entry>r<subscript>7</subscript></entry> |
421 | <entry>r<subscript>6</subscript></entry> | 433 | <entry>r<subscript>6</subscript></entry> |
422 | <entry>r<subscript>5</subscript></entry> | 434 | <entry>r<subscript>5</subscript></entry> |
@@ -446,9 +458,7 @@ | |||
446 | <entry>V4L2_MBUS_FMT_RGB888_2X12_BE</entry> | 458 | <entry>V4L2_MBUS_FMT_RGB888_2X12_BE</entry> |
447 | <entry>0x100b</entry> | 459 | <entry>0x100b</entry> |
448 | <entry></entry> | 460 | <entry></entry> |
449 | &dash-ent-10; | 461 | &dash-ent-20; |
450 | <entry>-</entry> | ||
451 | <entry>-</entry> | ||
452 | <entry>r<subscript>7</subscript></entry> | 462 | <entry>r<subscript>7</subscript></entry> |
453 | <entry>r<subscript>6</subscript></entry> | 463 | <entry>r<subscript>6</subscript></entry> |
454 | <entry>r<subscript>5</subscript></entry> | 464 | <entry>r<subscript>5</subscript></entry> |
@@ -466,9 +476,7 @@ | |||
466 | <entry></entry> | 476 | <entry></entry> |
467 | <entry></entry> | 477 | <entry></entry> |
468 | <entry></entry> | 478 | <entry></entry> |
469 | &dash-ent-10; | 479 | &dash-ent-20; |
470 | <entry>-</entry> | ||
471 | <entry>-</entry> | ||
472 | <entry>g<subscript>3</subscript></entry> | 480 | <entry>g<subscript>3</subscript></entry> |
473 | <entry>g<subscript>2</subscript></entry> | 481 | <entry>g<subscript>2</subscript></entry> |
474 | <entry>g<subscript>1</subscript></entry> | 482 | <entry>g<subscript>1</subscript></entry> |
@@ -486,9 +494,7 @@ | |||
486 | <entry>V4L2_MBUS_FMT_RGB888_2X12_LE</entry> | 494 | <entry>V4L2_MBUS_FMT_RGB888_2X12_LE</entry> |
487 | <entry>0x100c</entry> | 495 | <entry>0x100c</entry> |
488 | <entry></entry> | 496 | <entry></entry> |
489 | &dash-ent-10; | 497 | &dash-ent-20; |
490 | <entry>-</entry> | ||
491 | <entry>-</entry> | ||
492 | <entry>g<subscript>3</subscript></entry> | 498 | <entry>g<subscript>3</subscript></entry> |
493 | <entry>g<subscript>2</subscript></entry> | 499 | <entry>g<subscript>2</subscript></entry> |
494 | <entry>g<subscript>1</subscript></entry> | 500 | <entry>g<subscript>1</subscript></entry> |
@@ -506,9 +512,7 @@ | |||
506 | <entry></entry> | 512 | <entry></entry> |
507 | <entry></entry> | 513 | <entry></entry> |
508 | <entry></entry> | 514 | <entry></entry> |
509 | &dash-ent-10; | 515 | &dash-ent-20; |
510 | <entry>-</entry> | ||
511 | <entry>-</entry> | ||
512 | <entry>r<subscript>7</subscript></entry> | 516 | <entry>r<subscript>7</subscript></entry> |
513 | <entry>r<subscript>6</subscript></entry> | 517 | <entry>r<subscript>6</subscript></entry> |
514 | <entry>r<subscript>5</subscript></entry> | 518 | <entry>r<subscript>5</subscript></entry> |
@@ -522,6 +526,43 @@ | |||
522 | <entry>g<subscript>5</subscript></entry> | 526 | <entry>g<subscript>5</subscript></entry> |
523 | <entry>g<subscript>4</subscript></entry> | 527 | <entry>g<subscript>4</subscript></entry> |
524 | </row> | 528 | </row> |
529 | <row id="V4L2-MBUS-FMT-ARGB888-1X32"> | ||
530 | <entry>V4L2_MBUS_FMT_ARGB888_1X32</entry> | ||
531 | <entry>0x100d</entry> | ||
532 | <entry></entry> | ||
533 | <entry>a<subscript>7</subscript></entry> | ||
534 | <entry>a<subscript>6</subscript></entry> | ||
535 | <entry>a<subscript>5</subscript></entry> | ||
536 | <entry>a<subscript>4</subscript></entry> | ||
537 | <entry>a<subscript>3</subscript></entry> | ||
538 | <entry>a<subscript>2</subscript></entry> | ||
539 | <entry>a<subscript>1</subscript></entry> | ||
540 | <entry>a<subscript>0</subscript></entry> | ||
541 | <entry>r<subscript>7</subscript></entry> | ||
542 | <entry>r<subscript>6</subscript></entry> | ||
543 | <entry>r<subscript>5</subscript></entry> | ||
544 | <entry>r<subscript>4</subscript></entry> | ||
545 | <entry>r<subscript>3</subscript></entry> | ||
546 | <entry>r<subscript>2</subscript></entry> | ||
547 | <entry>r<subscript>1</subscript></entry> | ||
548 | <entry>r<subscript>0</subscript></entry> | ||
549 | <entry>g<subscript>7</subscript></entry> | ||
550 | <entry>g<subscript>6</subscript></entry> | ||
551 | <entry>g<subscript>5</subscript></entry> | ||
552 | <entry>g<subscript>4</subscript></entry> | ||
553 | <entry>g<subscript>3</subscript></entry> | ||
554 | <entry>g<subscript>2</subscript></entry> | ||
555 | <entry>g<subscript>1</subscript></entry> | ||
556 | <entry>g<subscript>0</subscript></entry> | ||
557 | <entry>b<subscript>7</subscript></entry> | ||
558 | <entry>b<subscript>6</subscript></entry> | ||
559 | <entry>b<subscript>5</subscript></entry> | ||
560 | <entry>b<subscript>4</subscript></entry> | ||
561 | <entry>b<subscript>3</subscript></entry> | ||
562 | <entry>b<subscript>2</subscript></entry> | ||
563 | <entry>b<subscript>1</subscript></entry> | ||
564 | <entry>b<subscript>0</subscript></entry> | ||
565 | </row> | ||
525 | </tbody> | 566 | </tbody> |
526 | </tgroup> | 567 | </tgroup> |
527 | </table> | 568 | </table> |
@@ -1149,6 +1190,7 @@ | |||
1149 | <listitem><para>y<subscript>x</subscript> for luma component bit number x</para></listitem> | 1190 | <listitem><para>y<subscript>x</subscript> for luma component bit number x</para></listitem> |
1150 | <listitem><para>u<subscript>x</subscript> for blue chroma component bit number x</para></listitem> | 1191 | <listitem><para>u<subscript>x</subscript> for blue chroma component bit number x</para></listitem> |
1151 | <listitem><para>v<subscript>x</subscript> for red chroma component bit number x</para></listitem> | 1192 | <listitem><para>v<subscript>x</subscript> for red chroma component bit number x</para></listitem> |
1193 | <listitem><para>a<subscript>x</subscript> for alpha component bit number x</para></listitem> | ||
1152 | <listitem><para>- for non-available bits (for positions higher than the bus width)</para></listitem> | 1194 | <listitem><para>- for non-available bits (for positions higher than the bus width)</para></listitem> |
1153 | <listitem><para>d for dummy bits</para></listitem> | 1195 | <listitem><para>d for dummy bits</para></listitem> |
1154 | </itemizedlist> | 1196 | </itemizedlist> |
@@ -1159,37 +1201,39 @@ | |||
1159 | <colspec colname="id" align="left" /> | 1201 | <colspec colname="id" align="left" /> |
1160 | <colspec colname="code" align="center"/> | 1202 | <colspec colname="code" align="center"/> |
1161 | <colspec colname="bit" /> | 1203 | <colspec colname="bit" /> |
1162 | <colspec colnum="4" colname="b29" align="center" /> | 1204 | <colspec colnum="4" colname="b31" align="center" /> |
1163 | <colspec colnum="5" colname="b28" align="center" /> | 1205 | <colspec colnum="5" colname="b20" align="center" /> |
1164 | <colspec colnum="6" colname="b27" align="center" /> | 1206 | <colspec colnum="6" colname="b29" align="center" /> |
1165 | <colspec colnum="7" colname="b26" align="center" /> | 1207 | <colspec colnum="7" colname="b28" align="center" /> |
1166 | <colspec colnum="8" colname="b25" align="center" /> | 1208 | <colspec colnum="8" colname="b27" align="center" /> |
1167 | <colspec colnum="9" colname="b24" align="center" /> | 1209 | <colspec colnum="9" colname="b26" align="center" /> |
1168 | <colspec colnum="10" colname="b23" align="center" /> | 1210 | <colspec colnum="10" colname="b25" align="center" /> |
1169 | <colspec colnum="11" colname="b22" align="center" /> | 1211 | <colspec colnum="11" colname="b24" align="center" /> |
1170 | <colspec colnum="12" colname="b21" align="center" /> | 1212 | <colspec colnum="12" colname="b23" align="center" /> |
1171 | <colspec colnum="13" colname="b20" align="center" /> | 1213 | <colspec colnum="13" colname="b22" align="center" /> |
1172 | <colspec colnum="14" colname="b19" align="center" /> | 1214 | <colspec colnum="14" colname="b21" align="center" /> |
1173 | <colspec colnum="15" colname="b18" align="center" /> | 1215 | <colspec colnum="15" colname="b20" align="center" /> |
1174 | <colspec colnum="16" colname="b17" align="center" /> | 1216 | <colspec colnum="16" colname="b19" align="center" /> |
1175 | <colspec colnum="17" colname="b16" align="center" /> | 1217 | <colspec colnum="17" colname="b18" align="center" /> |
1176 | <colspec colnum="18" colname="b15" align="center" /> | 1218 | <colspec colnum="18" colname="b17" align="center" /> |
1177 | <colspec colnum="19" colname="b14" align="center" /> | 1219 | <colspec colnum="19" colname="b16" align="center" /> |
1178 | <colspec colnum="20" colname="b13" align="center" /> | 1220 | <colspec colnum="20" colname="b15" align="center" /> |
1179 | <colspec colnum="21" colname="b12" align="center" /> | 1221 | <colspec colnum="21" colname="b14" align="center" /> |
1180 | <colspec colnum="22" colname="b11" align="center" /> | 1222 | <colspec colnum="22" colname="b13" align="center" /> |
1181 | <colspec colnum="23" colname="b10" align="center" /> | 1223 | <colspec colnum="23" colname="b12" align="center" /> |
1182 | <colspec colnum="24" colname="b09" align="center" /> | 1224 | <colspec colnum="24" colname="b11" align="center" /> |
1183 | <colspec colnum="25" colname="b08" align="center" /> | 1225 | <colspec colnum="25" colname="b10" align="center" /> |
1184 | <colspec colnum="26" colname="b07" align="center" /> | 1226 | <colspec colnum="26" colname="b09" align="center" /> |
1185 | <colspec colnum="27" colname="b06" align="center" /> | 1227 | <colspec colnum="27" colname="b08" align="center" /> |
1186 | <colspec colnum="28" colname="b05" align="center" /> | 1228 | <colspec colnum="28" colname="b07" align="center" /> |
1187 | <colspec colnum="29" colname="b04" align="center" /> | 1229 | <colspec colnum="29" colname="b06" align="center" /> |
1188 | <colspec colnum="30" colname="b03" align="center" /> | 1230 | <colspec colnum="30" colname="b05" align="center" /> |
1189 | <colspec colnum="31" colname="b02" align="center" /> | 1231 | <colspec colnum="31" colname="b04" align="center" /> |
1190 | <colspec colnum="32" colname="b01" align="center" /> | 1232 | <colspec colnum="32" colname="b03" align="center" /> |
1191 | <colspec colnum="33" colname="b00" align="center" /> | 1233 | <colspec colnum="33" colname="b02" align="center" /> |
1192 | <spanspec namest="b29" nameend="b00" spanname="b0" /> | 1234 | <colspec colnum="34" colname="b01" align="center" /> |
1235 | <colspec colnum="35" colname="b00" align="center" /> | ||
1236 | <spanspec namest="b31" nameend="b00" spanname="b0" /> | ||
1193 | <thead> | 1237 | <thead> |
1194 | <row> | 1238 | <row> |
1195 | <entry>Identifier</entry> | 1239 | <entry>Identifier</entry> |
@@ -1201,6 +1245,8 @@ | |||
1201 | <entry></entry> | 1245 | <entry></entry> |
1202 | <entry></entry> | 1246 | <entry></entry> |
1203 | <entry>Bit</entry> | 1247 | <entry>Bit</entry> |
1248 | <entry>31</entry> | ||
1249 | <entry>30</entry> | ||
1204 | <entry>29</entry> | 1250 | <entry>29</entry> |
1205 | <entry>28</entry> | 1251 | <entry>28</entry> |
1206 | <entry>27</entry> | 1252 | <entry>27</entry> |
@@ -1238,10 +1284,7 @@ | |||
1238 | <entry>V4L2_MBUS_FMT_Y8_1X8</entry> | 1284 | <entry>V4L2_MBUS_FMT_Y8_1X8</entry> |
1239 | <entry>0x2001</entry> | 1285 | <entry>0x2001</entry> |
1240 | <entry></entry> | 1286 | <entry></entry> |
1241 | &dash-ent-10; | 1287 | &dash-ent-24; |
1242 | &dash-ent-10; | ||
1243 | <entry>-</entry> | ||
1244 | <entry>-</entry> | ||
1245 | <entry>y<subscript>7</subscript></entry> | 1288 | <entry>y<subscript>7</subscript></entry> |
1246 | <entry>y<subscript>6</subscript></entry> | 1289 | <entry>y<subscript>6</subscript></entry> |
1247 | <entry>y<subscript>5</subscript></entry> | 1290 | <entry>y<subscript>5</subscript></entry> |
@@ -1255,18 +1298,7 @@ | |||
1255 | <entry>V4L2_MBUS_FMT_UV8_1X8</entry> | 1298 | <entry>V4L2_MBUS_FMT_UV8_1X8</entry> |
1256 | <entry>0x2015</entry> | 1299 | <entry>0x2015</entry> |
1257 | <entry></entry> | 1300 | <entry></entry> |
1258 | <entry>-</entry> | 1301 | &dash-ent-24; |
1259 | <entry>-</entry> | ||
1260 | <entry>-</entry> | ||
1261 | <entry>-</entry> | ||
1262 | <entry>-</entry> | ||
1263 | <entry>-</entry> | ||
1264 | <entry>-</entry> | ||
1265 | <entry>-</entry> | ||
1266 | <entry>-</entry> | ||
1267 | <entry>-</entry> | ||
1268 | <entry>-</entry> | ||
1269 | <entry>-</entry> | ||
1270 | <entry>u<subscript>7</subscript></entry> | 1302 | <entry>u<subscript>7</subscript></entry> |
1271 | <entry>u<subscript>6</subscript></entry> | 1303 | <entry>u<subscript>6</subscript></entry> |
1272 | <entry>u<subscript>5</subscript></entry> | 1304 | <entry>u<subscript>5</subscript></entry> |
@@ -1280,18 +1312,7 @@ | |||
1280 | <entry></entry> | 1312 | <entry></entry> |
1281 | <entry></entry> | 1313 | <entry></entry> |
1282 | <entry></entry> | 1314 | <entry></entry> |
1283 | <entry>-</entry> | 1315 | &dash-ent-24; |
1284 | <entry>-</entry> | ||
1285 | <entry>-</entry> | ||
1286 | <entry>-</entry> | ||
1287 | <entry>-</entry> | ||
1288 | <entry>-</entry> | ||
1289 | <entry>-</entry> | ||
1290 | <entry>-</entry> | ||
1291 | <entry>-</entry> | ||
1292 | <entry>-</entry> | ||
1293 | <entry>-</entry> | ||
1294 | <entry>-</entry> | ||
1295 | <entry>v<subscript>7</subscript></entry> | 1316 | <entry>v<subscript>7</subscript></entry> |
1296 | <entry>v<subscript>6</subscript></entry> | 1317 | <entry>v<subscript>6</subscript></entry> |
1297 | <entry>v<subscript>5</subscript></entry> | 1318 | <entry>v<subscript>5</subscript></entry> |
@@ -1305,10 +1326,7 @@ | |||
1305 | <entry>V4L2_MBUS_FMT_UYVY8_1_5X8</entry> | 1326 | <entry>V4L2_MBUS_FMT_UYVY8_1_5X8</entry> |
1306 | <entry>0x2002</entry> | 1327 | <entry>0x2002</entry> |
1307 | <entry></entry> | 1328 | <entry></entry> |
1308 | &dash-ent-10; | 1329 | &dash-ent-24; |
1309 | &dash-ent-10; | ||
1310 | <entry>-</entry> | ||
1311 | <entry>-</entry> | ||
1312 | <entry>u<subscript>7</subscript></entry> | 1330 | <entry>u<subscript>7</subscript></entry> |
1313 | <entry>u<subscript>6</subscript></entry> | 1331 | <entry>u<subscript>6</subscript></entry> |
1314 | <entry>u<subscript>5</subscript></entry> | 1332 | <entry>u<subscript>5</subscript></entry> |
@@ -1322,10 +1340,7 @@ | |||
1322 | <entry></entry> | 1340 | <entry></entry> |
1323 | <entry></entry> | 1341 | <entry></entry> |
1324 | <entry></entry> | 1342 | <entry></entry> |
1325 | &dash-ent-10; | 1343 | &dash-ent-24; |
1326 | &dash-ent-10; | ||
1327 | <entry>-</entry> | ||
1328 | <entry>-</entry> | ||
1329 | <entry>y<subscript>7</subscript></entry> | 1344 | <entry>y<subscript>7</subscript></entry> |
1330 | <entry>y<subscript>6</subscript></entry> | 1345 | <entry>y<subscript>6</subscript></entry> |
1331 | <entry>y<subscript>5</subscript></entry> | 1346 | <entry>y<subscript>5</subscript></entry> |
@@ -1339,10 +1354,7 @@ | |||
1339 | <entry></entry> | 1354 | <entry></entry> |
1340 | <entry></entry> | 1355 | <entry></entry> |
1341 | <entry></entry> | 1356 | <entry></entry> |
1342 | &dash-ent-10; | 1357 | &dash-ent-24; |
1343 | &dash-ent-10; | ||
1344 | <entry>-</entry> | ||
1345 | <entry>-</entry> | ||
1346 | <entry>y<subscript>7</subscript></entry> | 1358 | <entry>y<subscript>7</subscript></entry> |
1347 | <entry>y<subscript>6</subscript></entry> | 1359 | <entry>y<subscript>6</subscript></entry> |
1348 | <entry>y<subscript>5</subscript></entry> | 1360 | <entry>y<subscript>5</subscript></entry> |
@@ -1356,10 +1368,7 @@ | |||
1356 | <entry></entry> | 1368 | <entry></entry> |
1357 | <entry></entry> | 1369 | <entry></entry> |
1358 | <entry></entry> | 1370 | <entry></entry> |
1359 | &dash-ent-10; | 1371 | &dash-ent-24; |
1360 | &dash-ent-10; | ||
1361 | <entry>-</entry> | ||
1362 | <entry>-</entry> | ||
1363 | <entry>v<subscript>7</subscript></entry> | 1372 | <entry>v<subscript>7</subscript></entry> |
1364 | <entry>v<subscript>6</subscript></entry> | 1373 | <entry>v<subscript>6</subscript></entry> |
1365 | <entry>v<subscript>5</subscript></entry> | 1374 | <entry>v<subscript>5</subscript></entry> |
@@ -1373,10 +1382,7 @@ | |||
1373 | <entry></entry> | 1382 | <entry></entry> |
1374 | <entry></entry> | 1383 | <entry></entry> |
1375 | <entry></entry> | 1384 | <entry></entry> |
1376 | &dash-ent-10; | 1385 | &dash-ent-24; |
1377 | &dash-ent-10; | ||
1378 | <entry>-</entry> | ||
1379 | <entry>-</entry> | ||
1380 | <entry>y<subscript>7</subscript></entry> | 1386 | <entry>y<subscript>7</subscript></entry> |
1381 | <entry>y<subscript>6</subscript></entry> | 1387 | <entry>y<subscript>6</subscript></entry> |
1382 | <entry>y<subscript>5</subscript></entry> | 1388 | <entry>y<subscript>5</subscript></entry> |
@@ -1390,10 +1396,7 @@ | |||
1390 | <entry></entry> | 1396 | <entry></entry> |
1391 | <entry></entry> | 1397 | <entry></entry> |
1392 | <entry></entry> | 1398 | <entry></entry> |
1393 | &dash-ent-10; | 1399 | &dash-ent-24; |
1394 | &dash-ent-10; | ||
1395 | <entry>-</entry> | ||
1396 | <entry>-</entry> | ||
1397 | <entry>y<subscript>7</subscript></entry> | 1400 | <entry>y<subscript>7</subscript></entry> |
1398 | <entry>y<subscript>6</subscript></entry> | 1401 | <entry>y<subscript>6</subscript></entry> |
1399 | <entry>y<subscript>5</subscript></entry> | 1402 | <entry>y<subscript>5</subscript></entry> |
@@ -1407,10 +1410,7 @@ | |||
1407 | <entry>V4L2_MBUS_FMT_VYUY8_1_5X8</entry> | 1410 | <entry>V4L2_MBUS_FMT_VYUY8_1_5X8</entry> |
1408 | <entry>0x2003</entry> | 1411 | <entry>0x2003</entry> |
1409 | <entry></entry> | 1412 | <entry></entry> |
1410 | &dash-ent-10; | 1413 | &dash-ent-24; |
1411 | &dash-ent-10; | ||
1412 | <entry>-</entry> | ||
1413 | <entry>-</entry> | ||
1414 | <entry>v<subscript>7</subscript></entry> | 1414 | <entry>v<subscript>7</subscript></entry> |
1415 | <entry>v<subscript>6</subscript></entry> | 1415 | <entry>v<subscript>6</subscript></entry> |
1416 | <entry>v<subscript>5</subscript></entry> | 1416 | <entry>v<subscript>5</subscript></entry> |
@@ -1424,10 +1424,7 @@ | |||
1424 | <entry></entry> | 1424 | <entry></entry> |
1425 | <entry></entry> | 1425 | <entry></entry> |
1426 | <entry></entry> | 1426 | <entry></entry> |
1427 | &dash-ent-10; | 1427 | &dash-ent-24; |
1428 | &dash-ent-10; | ||
1429 | <entry>-</entry> | ||
1430 | <entry>-</entry> | ||
1431 | <entry>y<subscript>7</subscript></entry> | 1428 | <entry>y<subscript>7</subscript></entry> |
1432 | <entry>y<subscript>6</subscript></entry> | 1429 | <entry>y<subscript>6</subscript></entry> |
1433 | <entry>y<subscript>5</subscript></entry> | 1430 | <entry>y<subscript>5</subscript></entry> |
@@ -1441,10 +1438,7 @@ | |||
1441 | <entry></entry> | 1438 | <entry></entry> |
1442 | <entry></entry> | 1439 | <entry></entry> |
1443 | <entry></entry> | 1440 | <entry></entry> |
1444 | &dash-ent-10; | 1441 | &dash-ent-24; |
1445 | &dash-ent-10; | ||
1446 | <entry>-</entry> | ||
1447 | <entry>-</entry> | ||
1448 | <entry>y<subscript>7</subscript></entry> | 1442 | <entry>y<subscript>7</subscript></entry> |
1449 | <entry>y<subscript>6</subscript></entry> | 1443 | <entry>y<subscript>6</subscript></entry> |
1450 | <entry>y<subscript>5</subscript></entry> | 1444 | <entry>y<subscript>5</subscript></entry> |
@@ -1458,10 +1452,7 @@ | |||
1458 | <entry></entry> | 1452 | <entry></entry> |
1459 | <entry></entry> | 1453 | <entry></entry> |
1460 | <entry></entry> | 1454 | <entry></entry> |
1461 | &dash-ent-10; | 1455 | &dash-ent-24; |
1462 | &dash-ent-10; | ||
1463 | <entry>-</entry> | ||
1464 | <entry>-</entry> | ||
1465 | <entry>u<subscript>7</subscript></entry> | 1456 | <entry>u<subscript>7</subscript></entry> |
1466 | <entry>u<subscript>6</subscript></entry> | 1457 | <entry>u<subscript>6</subscript></entry> |
1467 | <entry>u<subscript>5</subscript></entry> | 1458 | <entry>u<subscript>5</subscript></entry> |
@@ -1475,10 +1466,7 @@ | |||
1475 | <entry></entry> | 1466 | <entry></entry> |
1476 | <entry></entry> | 1467 | <entry></entry> |
1477 | <entry></entry> | 1468 | <entry></entry> |
1478 | &dash-ent-10; | 1469 | &dash-ent-24; |
1479 | &dash-ent-10; | ||
1480 | <entry>-</entry> | ||
1481 | <entry>-</entry> | ||
1482 | <entry>y<subscript>7</subscript></entry> | 1470 | <entry>y<subscript>7</subscript></entry> |
1483 | <entry>y<subscript>6</subscript></entry> | 1471 | <entry>y<subscript>6</subscript></entry> |
1484 | <entry>y<subscript>5</subscript></entry> | 1472 | <entry>y<subscript>5</subscript></entry> |
@@ -1492,10 +1480,7 @@ | |||
1492 | <entry></entry> | 1480 | <entry></entry> |
1493 | <entry></entry> | 1481 | <entry></entry> |
1494 | <entry></entry> | 1482 | <entry></entry> |
1495 | &dash-ent-10; | 1483 | &dash-ent-24; |
1496 | &dash-ent-10; | ||
1497 | <entry>-</entry> | ||
1498 | <entry>-</entry> | ||
1499 | <entry>y<subscript>7</subscript></entry> | 1484 | <entry>y<subscript>7</subscript></entry> |
1500 | <entry>y<subscript>6</subscript></entry> | 1485 | <entry>y<subscript>6</subscript></entry> |
1501 | <entry>y<subscript>5</subscript></entry> | 1486 | <entry>y<subscript>5</subscript></entry> |
@@ -1509,10 +1494,7 @@ | |||
1509 | <entry>V4L2_MBUS_FMT_YUYV8_1_5X8</entry> | 1494 | <entry>V4L2_MBUS_FMT_YUYV8_1_5X8</entry> |
1510 | <entry>0x2004</entry> | 1495 | <entry>0x2004</entry> |
1511 | <entry></entry> | 1496 | <entry></entry> |
1512 | &dash-ent-10; | 1497 | &dash-ent-24; |
1513 | &dash-ent-10; | ||
1514 | <entry>-</entry> | ||
1515 | <entry>-</entry> | ||
1516 | <entry>y<subscript>7</subscript></entry> | 1498 | <entry>y<subscript>7</subscript></entry> |
1517 | <entry>y<subscript>6</subscript></entry> | 1499 | <entry>y<subscript>6</subscript></entry> |
1518 | <entry>y<subscript>5</subscript></entry> | 1500 | <entry>y<subscript>5</subscript></entry> |
@@ -1526,10 +1508,7 @@ | |||
1526 | <entry></entry> | 1508 | <entry></entry> |
1527 | <entry></entry> | 1509 | <entry></entry> |
1528 | <entry></entry> | 1510 | <entry></entry> |
1529 | &dash-ent-10; | 1511 | &dash-ent-24; |
1530 | &dash-ent-10; | ||
1531 | <entry>-</entry> | ||
1532 | <entry>-</entry> | ||
1533 | <entry>y<subscript>7</subscript></entry> | 1512 | <entry>y<subscript>7</subscript></entry> |
1534 | <entry>y<subscript>6</subscript></entry> | 1513 | <entry>y<subscript>6</subscript></entry> |
1535 | <entry>y<subscript>5</subscript></entry> | 1514 | <entry>y<subscript>5</subscript></entry> |
@@ -1543,10 +1522,7 @@ | |||
1543 | <entry></entry> | 1522 | <entry></entry> |
1544 | <entry></entry> | 1523 | <entry></entry> |
1545 | <entry></entry> | 1524 | <entry></entry> |
1546 | &dash-ent-10; | 1525 | &dash-ent-24; |
1547 | &dash-ent-10; | ||
1548 | <entry>-</entry> | ||
1549 | <entry>-</entry> | ||
1550 | <entry>u<subscript>7</subscript></entry> | 1526 | <entry>u<subscript>7</subscript></entry> |
1551 | <entry>u<subscript>6</subscript></entry> | 1527 | <entry>u<subscript>6</subscript></entry> |
1552 | <entry>u<subscript>5</subscript></entry> | 1528 | <entry>u<subscript>5</subscript></entry> |
@@ -1560,10 +1536,7 @@ | |||
1560 | <entry></entry> | 1536 | <entry></entry> |
1561 | <entry></entry> | 1537 | <entry></entry> |
1562 | <entry></entry> | 1538 | <entry></entry> |
1563 | &dash-ent-10; | 1539 | &dash-ent-24; |
1564 | &dash-ent-10; | ||
1565 | <entry>-</entry> | ||
1566 | <entry>-</entry> | ||
1567 | <entry>y<subscript>7</subscript></entry> | 1540 | <entry>y<subscript>7</subscript></entry> |
1568 | <entry>y<subscript>6</subscript></entry> | 1541 | <entry>y<subscript>6</subscript></entry> |
1569 | <entry>y<subscript>5</subscript></entry> | 1542 | <entry>y<subscript>5</subscript></entry> |
@@ -1577,10 +1550,7 @@ | |||
1577 | <entry></entry> | 1550 | <entry></entry> |
1578 | <entry></entry> | 1551 | <entry></entry> |
1579 | <entry></entry> | 1552 | <entry></entry> |
1580 | &dash-ent-10; | 1553 | &dash-ent-24; |
1581 | &dash-ent-10; | ||
1582 | <entry>-</entry> | ||
1583 | <entry>-</entry> | ||
1584 | <entry>y<subscript>7</subscript></entry> | 1554 | <entry>y<subscript>7</subscript></entry> |
1585 | <entry>y<subscript>6</subscript></entry> | 1555 | <entry>y<subscript>6</subscript></entry> |
1586 | <entry>y<subscript>5</subscript></entry> | 1556 | <entry>y<subscript>5</subscript></entry> |
@@ -1594,10 +1564,7 @@ | |||
1594 | <entry></entry> | 1564 | <entry></entry> |
1595 | <entry></entry> | 1565 | <entry></entry> |
1596 | <entry></entry> | 1566 | <entry></entry> |
1597 | &dash-ent-10; | 1567 | &dash-ent-24; |
1598 | &dash-ent-10; | ||
1599 | <entry>-</entry> | ||
1600 | <entry>-</entry> | ||
1601 | <entry>v<subscript>7</subscript></entry> | 1568 | <entry>v<subscript>7</subscript></entry> |
1602 | <entry>v<subscript>6</subscript></entry> | 1569 | <entry>v<subscript>6</subscript></entry> |
1603 | <entry>v<subscript>5</subscript></entry> | 1570 | <entry>v<subscript>5</subscript></entry> |
@@ -1611,10 +1578,7 @@ | |||
1611 | <entry>V4L2_MBUS_FMT_YVYU8_1_5X8</entry> | 1578 | <entry>V4L2_MBUS_FMT_YVYU8_1_5X8</entry> |
1612 | <entry>0x2005</entry> | 1579 | <entry>0x2005</entry> |
1613 | <entry></entry> | 1580 | <entry></entry> |
1614 | &dash-ent-10; | 1581 | &dash-ent-24; |
1615 | &dash-ent-10; | ||
1616 | <entry>-</entry> | ||
1617 | <entry>-</entry> | ||
1618 | <entry>y<subscript>7</subscript></entry> | 1582 | <entry>y<subscript>7</subscript></entry> |
1619 | <entry>y<subscript>6</subscript></entry> | 1583 | <entry>y<subscript>6</subscript></entry> |
1620 | <entry>y<subscript>5</subscript></entry> | 1584 | <entry>y<subscript>5</subscript></entry> |
@@ -1628,10 +1592,7 @@ | |||
1628 | <entry></entry> | 1592 | <entry></entry> |
1629 | <entry></entry> | 1593 | <entry></entry> |
1630 | <entry></entry> | 1594 | <entry></entry> |
1631 | &dash-ent-10; | 1595 | &dash-ent-24; |
1632 | &dash-ent-10; | ||
1633 | <entry>-</entry> | ||
1634 | <entry>-</entry> | ||
1635 | <entry>y<subscript>7</subscript></entry> | 1596 | <entry>y<subscript>7</subscript></entry> |
1636 | <entry>y<subscript>6</subscript></entry> | 1597 | <entry>y<subscript>6</subscript></entry> |
1637 | <entry>y<subscript>5</subscript></entry> | 1598 | <entry>y<subscript>5</subscript></entry> |
@@ -1645,10 +1606,7 @@ | |||
1645 | <entry></entry> | 1606 | <entry></entry> |
1646 | <entry></entry> | 1607 | <entry></entry> |
1647 | <entry></entry> | 1608 | <entry></entry> |
1648 | &dash-ent-10; | 1609 | &dash-ent-24; |
1649 | &dash-ent-10; | ||
1650 | <entry>-</entry> | ||
1651 | <entry>-</entry> | ||
1652 | <entry>v<subscript>7</subscript></entry> | 1610 | <entry>v<subscript>7</subscript></entry> |
1653 | <entry>v<subscript>6</subscript></entry> | 1611 | <entry>v<subscript>6</subscript></entry> |
1654 | <entry>v<subscript>5</subscript></entry> | 1612 | <entry>v<subscript>5</subscript></entry> |
@@ -1662,10 +1620,7 @@ | |||
1662 | <entry></entry> | 1620 | <entry></entry> |
1663 | <entry></entry> | 1621 | <entry></entry> |
1664 | <entry></entry> | 1622 | <entry></entry> |
1665 | &dash-ent-10; | 1623 | &dash-ent-24; |
1666 | &dash-ent-10; | ||
1667 | <entry>-</entry> | ||
1668 | <entry>-</entry> | ||
1669 | <entry>y<subscript>7</subscript></entry> | 1624 | <entry>y<subscript>7</subscript></entry> |
1670 | <entry>y<subscript>6</subscript></entry> | 1625 | <entry>y<subscript>6</subscript></entry> |
1671 | <entry>y<subscript>5</subscript></entry> | 1626 | <entry>y<subscript>5</subscript></entry> |
@@ -1679,10 +1634,7 @@ | |||
1679 | <entry></entry> | 1634 | <entry></entry> |
1680 | <entry></entry> | 1635 | <entry></entry> |
1681 | <entry></entry> | 1636 | <entry></entry> |
1682 | &dash-ent-10; | 1637 | &dash-ent-24; |
1683 | &dash-ent-10; | ||
1684 | <entry>-</entry> | ||
1685 | <entry>-</entry> | ||
1686 | <entry>y<subscript>7</subscript></entry> | 1638 | <entry>y<subscript>7</subscript></entry> |
1687 | <entry>y<subscript>6</subscript></entry> | 1639 | <entry>y<subscript>6</subscript></entry> |
1688 | <entry>y<subscript>5</subscript></entry> | 1640 | <entry>y<subscript>5</subscript></entry> |
@@ -1696,10 +1648,7 @@ | |||
1696 | <entry></entry> | 1648 | <entry></entry> |
1697 | <entry></entry> | 1649 | <entry></entry> |
1698 | <entry></entry> | 1650 | <entry></entry> |
1699 | &dash-ent-10; | 1651 | &dash-ent-24; |
1700 | &dash-ent-10; | ||
1701 | <entry>-</entry> | ||
1702 | <entry>-</entry> | ||
1703 | <entry>u<subscript>7</subscript></entry> | 1652 | <entry>u<subscript>7</subscript></entry> |
1704 | <entry>u<subscript>6</subscript></entry> | 1653 | <entry>u<subscript>6</subscript></entry> |
1705 | <entry>u<subscript>5</subscript></entry> | 1654 | <entry>u<subscript>5</subscript></entry> |
@@ -1713,10 +1662,7 @@ | |||
1713 | <entry>V4L2_MBUS_FMT_UYVY8_2X8</entry> | 1662 | <entry>V4L2_MBUS_FMT_UYVY8_2X8</entry> |
1714 | <entry>0x2006</entry> | 1663 | <entry>0x2006</entry> |
1715 | <entry></entry> | 1664 | <entry></entry> |
1716 | &dash-ent-10; | 1665 | &dash-ent-24; |
1717 | &dash-ent-10; | ||
1718 | <entry>-</entry> | ||
1719 | <entry>-</entry> | ||
1720 | <entry>u<subscript>7</subscript></entry> | 1666 | <entry>u<subscript>7</subscript></entry> |
1721 | <entry>u<subscript>6</subscript></entry> | 1667 | <entry>u<subscript>6</subscript></entry> |
1722 | <entry>u<subscript>5</subscript></entry> | 1668 | <entry>u<subscript>5</subscript></entry> |
@@ -1730,10 +1676,7 @@ | |||
1730 | <entry></entry> | 1676 | <entry></entry> |
1731 | <entry></entry> | 1677 | <entry></entry> |
1732 | <entry></entry> | 1678 | <entry></entry> |
1733 | &dash-ent-10; | 1679 | &dash-ent-24; |
1734 | &dash-ent-10; | ||
1735 | <entry>-</entry> | ||
1736 | <entry>-</entry> | ||
1737 | <entry>y<subscript>7</subscript></entry> | 1680 | <entry>y<subscript>7</subscript></entry> |
1738 | <entry>y<subscript>6</subscript></entry> | 1681 | <entry>y<subscript>6</subscript></entry> |
1739 | <entry>y<subscript>5</subscript></entry> | 1682 | <entry>y<subscript>5</subscript></entry> |
@@ -1747,10 +1690,7 @@ | |||
1747 | <entry></entry> | 1690 | <entry></entry> |
1748 | <entry></entry> | 1691 | <entry></entry> |
1749 | <entry></entry> | 1692 | <entry></entry> |
1750 | &dash-ent-10; | 1693 | &dash-ent-24; |
1751 | &dash-ent-10; | ||
1752 | <entry>-</entry> | ||
1753 | <entry>-</entry> | ||
1754 | <entry>v<subscript>7</subscript></entry> | 1694 | <entry>v<subscript>7</subscript></entry> |
1755 | <entry>v<subscript>6</subscript></entry> | 1695 | <entry>v<subscript>6</subscript></entry> |
1756 | <entry>v<subscript>5</subscript></entry> | 1696 | <entry>v<subscript>5</subscript></entry> |
@@ -1764,10 +1704,7 @@ | |||
1764 | <entry></entry> | 1704 | <entry></entry> |
1765 | <entry></entry> | 1705 | <entry></entry> |
1766 | <entry></entry> | 1706 | <entry></entry> |
1767 | &dash-ent-10; | 1707 | &dash-ent-24; |
1768 | &dash-ent-10; | ||
1769 | <entry>-</entry> | ||
1770 | <entry>-</entry> | ||
1771 | <entry>y<subscript>7</subscript></entry> | 1708 | <entry>y<subscript>7</subscript></entry> |
1772 | <entry>y<subscript>6</subscript></entry> | 1709 | <entry>y<subscript>6</subscript></entry> |
1773 | <entry>y<subscript>5</subscript></entry> | 1710 | <entry>y<subscript>5</subscript></entry> |
@@ -1781,10 +1718,7 @@ | |||
1781 | <entry>V4L2_MBUS_FMT_VYUY8_2X8</entry> | 1718 | <entry>V4L2_MBUS_FMT_VYUY8_2X8</entry> |
1782 | <entry>0x2007</entry> | 1719 | <entry>0x2007</entry> |
1783 | <entry></entry> | 1720 | <entry></entry> |
1784 | &dash-ent-10; | 1721 | &dash-ent-24; |
1785 | &dash-ent-10; | ||
1786 | <entry>-</entry> | ||
1787 | <entry>-</entry> | ||
1788 | <entry>v<subscript>7</subscript></entry> | 1722 | <entry>v<subscript>7</subscript></entry> |
1789 | <entry>v<subscript>6</subscript></entry> | 1723 | <entry>v<subscript>6</subscript></entry> |
1790 | <entry>v<subscript>5</subscript></entry> | 1724 | <entry>v<subscript>5</subscript></entry> |
@@ -1798,10 +1732,7 @@ | |||
1798 | <entry></entry> | 1732 | <entry></entry> |
1799 | <entry></entry> | 1733 | <entry></entry> |
1800 | <entry></entry> | 1734 | <entry></entry> |
1801 | &dash-ent-10; | 1735 | &dash-ent-24; |
1802 | &dash-ent-10; | ||
1803 | <entry>-</entry> | ||
1804 | <entry>-</entry> | ||
1805 | <entry>y<subscript>7</subscript></entry> | 1736 | <entry>y<subscript>7</subscript></entry> |
1806 | <entry>y<subscript>6</subscript></entry> | 1737 | <entry>y<subscript>6</subscript></entry> |
1807 | <entry>y<subscript>5</subscript></entry> | 1738 | <entry>y<subscript>5</subscript></entry> |
@@ -1815,10 +1746,7 @@ | |||
1815 | <entry></entry> | 1746 | <entry></entry> |
1816 | <entry></entry> | 1747 | <entry></entry> |
1817 | <entry></entry> | 1748 | <entry></entry> |
1818 | &dash-ent-10; | 1749 | &dash-ent-24; |
1819 | &dash-ent-10; | ||
1820 | <entry>-</entry> | ||
1821 | <entry>-</entry> | ||
1822 | <entry>u<subscript>7</subscript></entry> | 1750 | <entry>u<subscript>7</subscript></entry> |
1823 | <entry>u<subscript>6</subscript></entry> | 1751 | <entry>u<subscript>6</subscript></entry> |
1824 | <entry>u<subscript>5</subscript></entry> | 1752 | <entry>u<subscript>5</subscript></entry> |
@@ -1832,10 +1760,7 @@ | |||
1832 | <entry></entry> | 1760 | <entry></entry> |
1833 | <entry></entry> | 1761 | <entry></entry> |
1834 | <entry></entry> | 1762 | <entry></entry> |
1835 | &dash-ent-10; | 1763 | &dash-ent-24; |
1836 | &dash-ent-10; | ||
1837 | <entry>-</entry> | ||
1838 | <entry>-</entry> | ||
1839 | <entry>y<subscript>7</subscript></entry> | 1764 | <entry>y<subscript>7</subscript></entry> |
1840 | <entry>y<subscript>6</subscript></entry> | 1765 | <entry>y<subscript>6</subscript></entry> |
1841 | <entry>y<subscript>5</subscript></entry> | 1766 | <entry>y<subscript>5</subscript></entry> |
@@ -1849,10 +1774,7 @@ | |||
1849 | <entry>V4L2_MBUS_FMT_YUYV8_2X8</entry> | 1774 | <entry>V4L2_MBUS_FMT_YUYV8_2X8</entry> |
1850 | <entry>0x2008</entry> | 1775 | <entry>0x2008</entry> |
1851 | <entry></entry> | 1776 | <entry></entry> |
1852 | &dash-ent-10; | 1777 | &dash-ent-24; |
1853 | &dash-ent-10; | ||
1854 | <entry>-</entry> | ||
1855 | <entry>-</entry> | ||
1856 | <entry>y<subscript>7</subscript></entry> | 1778 | <entry>y<subscript>7</subscript></entry> |
1857 | <entry>y<subscript>6</subscript></entry> | 1779 | <entry>y<subscript>6</subscript></entry> |
1858 | <entry>y<subscript>5</subscript></entry> | 1780 | <entry>y<subscript>5</subscript></entry> |
@@ -1866,10 +1788,7 @@ | |||
1866 | <entry></entry> | 1788 | <entry></entry> |
1867 | <entry></entry> | 1789 | <entry></entry> |
1868 | <entry></entry> | 1790 | <entry></entry> |
1869 | &dash-ent-10; | 1791 | &dash-ent-24; |
1870 | &dash-ent-10; | ||
1871 | <entry>-</entry> | ||
1872 | <entry>-</entry> | ||
1873 | <entry>u<subscript>7</subscript></entry> | 1792 | <entry>u<subscript>7</subscript></entry> |
1874 | <entry>u<subscript>6</subscript></entry> | 1793 | <entry>u<subscript>6</subscript></entry> |
1875 | <entry>u<subscript>5</subscript></entry> | 1794 | <entry>u<subscript>5</subscript></entry> |
@@ -1883,10 +1802,7 @@ | |||
1883 | <entry></entry> | 1802 | <entry></entry> |
1884 | <entry></entry> | 1803 | <entry></entry> |
1885 | <entry></entry> | 1804 | <entry></entry> |
1886 | &dash-ent-10; | 1805 | &dash-ent-24; |
1887 | &dash-ent-10; | ||
1888 | <entry>-</entry> | ||
1889 | <entry>-</entry> | ||
1890 | <entry>y<subscript>7</subscript></entry> | 1806 | <entry>y<subscript>7</subscript></entry> |
1891 | <entry>y<subscript>6</subscript></entry> | 1807 | <entry>y<subscript>6</subscript></entry> |
1892 | <entry>y<subscript>5</subscript></entry> | 1808 | <entry>y<subscript>5</subscript></entry> |
@@ -1900,10 +1816,7 @@ | |||
1900 | <entry></entry> | 1816 | <entry></entry> |
1901 | <entry></entry> | 1817 | <entry></entry> |
1902 | <entry></entry> | 1818 | <entry></entry> |
1903 | &dash-ent-10; | 1819 | &dash-ent-24; |
1904 | &dash-ent-10; | ||
1905 | <entry>-</entry> | ||
1906 | <entry>-</entry> | ||
1907 | <entry>v<subscript>7</subscript></entry> | 1820 | <entry>v<subscript>7</subscript></entry> |
1908 | <entry>v<subscript>6</subscript></entry> | 1821 | <entry>v<subscript>6</subscript></entry> |
1909 | <entry>v<subscript>5</subscript></entry> | 1822 | <entry>v<subscript>5</subscript></entry> |
@@ -1917,10 +1830,7 @@ | |||
1917 | <entry>V4L2_MBUS_FMT_YVYU8_2X8</entry> | 1830 | <entry>V4L2_MBUS_FMT_YVYU8_2X8</entry> |
1918 | <entry>0x2009</entry> | 1831 | <entry>0x2009</entry> |
1919 | <entry></entry> | 1832 | <entry></entry> |
1920 | &dash-ent-10; | 1833 | &dash-ent-24; |
1921 | &dash-ent-10; | ||
1922 | <entry>-</entry> | ||
1923 | <entry>-</entry> | ||
1924 | <entry>y<subscript>7</subscript></entry> | 1834 | <entry>y<subscript>7</subscript></entry> |
1925 | <entry>y<subscript>6</subscript></entry> | 1835 | <entry>y<subscript>6</subscript></entry> |
1926 | <entry>y<subscript>5</subscript></entry> | 1836 | <entry>y<subscript>5</subscript></entry> |
@@ -1934,10 +1844,7 @@ | |||
1934 | <entry></entry> | 1844 | <entry></entry> |
1935 | <entry></entry> | 1845 | <entry></entry> |
1936 | <entry></entry> | 1846 | <entry></entry> |
1937 | &dash-ent-10; | 1847 | &dash-ent-24; |
1938 | &dash-ent-10; | ||
1939 | <entry>-</entry> | ||
1940 | <entry>-</entry> | ||
1941 | <entry>v<subscript>7</subscript></entry> | 1848 | <entry>v<subscript>7</subscript></entry> |
1942 | <entry>v<subscript>6</subscript></entry> | 1849 | <entry>v<subscript>6</subscript></entry> |
1943 | <entry>v<subscript>5</subscript></entry> | 1850 | <entry>v<subscript>5</subscript></entry> |
@@ -1951,10 +1858,7 @@ | |||
1951 | <entry></entry> | 1858 | <entry></entry> |
1952 | <entry></entry> | 1859 | <entry></entry> |
1953 | <entry></entry> | 1860 | <entry></entry> |
1954 | &dash-ent-10; | 1861 | &dash-ent-24; |
1955 | &dash-ent-10; | ||
1956 | <entry>-</entry> | ||
1957 | <entry>-</entry> | ||
1958 | <entry>y<subscript>7</subscript></entry> | 1862 | <entry>y<subscript>7</subscript></entry> |
1959 | <entry>y<subscript>6</subscript></entry> | 1863 | <entry>y<subscript>6</subscript></entry> |
1960 | <entry>y<subscript>5</subscript></entry> | 1864 | <entry>y<subscript>5</subscript></entry> |
@@ -1968,10 +1872,7 @@ | |||
1968 | <entry></entry> | 1872 | <entry></entry> |
1969 | <entry></entry> | 1873 | <entry></entry> |
1970 | <entry></entry> | 1874 | <entry></entry> |
1971 | &dash-ent-10; | 1875 | &dash-ent-24; |
1972 | &dash-ent-10; | ||
1973 | <entry>-</entry> | ||
1974 | <entry>-</entry> | ||
1975 | <entry>u<subscript>7</subscript></entry> | 1876 | <entry>u<subscript>7</subscript></entry> |
1976 | <entry>u<subscript>6</subscript></entry> | 1877 | <entry>u<subscript>6</subscript></entry> |
1977 | <entry>u<subscript>5</subscript></entry> | 1878 | <entry>u<subscript>5</subscript></entry> |
@@ -1985,8 +1886,7 @@ | |||
1985 | <entry>V4L2_MBUS_FMT_Y10_1X10</entry> | 1886 | <entry>V4L2_MBUS_FMT_Y10_1X10</entry> |
1986 | <entry>0x200a</entry> | 1887 | <entry>0x200a</entry> |
1987 | <entry></entry> | 1888 | <entry></entry> |
1988 | &dash-ent-10; | 1889 | &dash-ent-22; |
1989 | &dash-ent-10; | ||
1990 | <entry>y<subscript>9</subscript></entry> | 1890 | <entry>y<subscript>9</subscript></entry> |
1991 | <entry>y<subscript>8</subscript></entry> | 1891 | <entry>y<subscript>8</subscript></entry> |
1992 | <entry>y<subscript>7</subscript></entry> | 1892 | <entry>y<subscript>7</subscript></entry> |
@@ -2002,8 +1902,7 @@ | |||
2002 | <entry>V4L2_MBUS_FMT_YUYV10_2X10</entry> | 1902 | <entry>V4L2_MBUS_FMT_YUYV10_2X10</entry> |
2003 | <entry>0x200b</entry> | 1903 | <entry>0x200b</entry> |
2004 | <entry></entry> | 1904 | <entry></entry> |
2005 | &dash-ent-10; | 1905 | &dash-ent-22; |
2006 | &dash-ent-10; | ||
2007 | <entry>y<subscript>9</subscript></entry> | 1906 | <entry>y<subscript>9</subscript></entry> |
2008 | <entry>y<subscript>8</subscript></entry> | 1907 | <entry>y<subscript>8</subscript></entry> |
2009 | <entry>y<subscript>7</subscript></entry> | 1908 | <entry>y<subscript>7</subscript></entry> |
@@ -2019,8 +1918,7 @@ | |||
2019 | <entry></entry> | 1918 | <entry></entry> |
2020 | <entry></entry> | 1919 | <entry></entry> |
2021 | <entry></entry> | 1920 | <entry></entry> |
2022 | &dash-ent-10; | 1921 | &dash-ent-22; |
2023 | &dash-ent-10; | ||
2024 | <entry>u<subscript>9</subscript></entry> | 1922 | <entry>u<subscript>9</subscript></entry> |
2025 | <entry>u<subscript>8</subscript></entry> | 1923 | <entry>u<subscript>8</subscript></entry> |
2026 | <entry>u<subscript>7</subscript></entry> | 1924 | <entry>u<subscript>7</subscript></entry> |
@@ -2036,8 +1934,7 @@ | |||
2036 | <entry></entry> | 1934 | <entry></entry> |
2037 | <entry></entry> | 1935 | <entry></entry> |
2038 | <entry></entry> | 1936 | <entry></entry> |
2039 | &dash-ent-10; | 1937 | &dash-ent-22; |
2040 | &dash-ent-10; | ||
2041 | <entry>y<subscript>9</subscript></entry> | 1938 | <entry>y<subscript>9</subscript></entry> |
2042 | <entry>y<subscript>8</subscript></entry> | 1939 | <entry>y<subscript>8</subscript></entry> |
2043 | <entry>y<subscript>7</subscript></entry> | 1940 | <entry>y<subscript>7</subscript></entry> |
@@ -2053,8 +1950,7 @@ | |||
2053 | <entry></entry> | 1950 | <entry></entry> |
2054 | <entry></entry> | 1951 | <entry></entry> |
2055 | <entry></entry> | 1952 | <entry></entry> |
2056 | &dash-ent-10; | 1953 | &dash-ent-22; |
2057 | &dash-ent-10; | ||
2058 | <entry>v<subscript>9</subscript></entry> | 1954 | <entry>v<subscript>9</subscript></entry> |
2059 | <entry>v<subscript>8</subscript></entry> | 1955 | <entry>v<subscript>8</subscript></entry> |
2060 | <entry>v<subscript>7</subscript></entry> | 1956 | <entry>v<subscript>7</subscript></entry> |
@@ -2070,8 +1966,7 @@ | |||
2070 | <entry>V4L2_MBUS_FMT_YVYU10_2X10</entry> | 1966 | <entry>V4L2_MBUS_FMT_YVYU10_2X10</entry> |
2071 | <entry>0x200c</entry> | 1967 | <entry>0x200c</entry> |
2072 | <entry></entry> | 1968 | <entry></entry> |
2073 | &dash-ent-10; | 1969 | &dash-ent-22; |
2074 | &dash-ent-10; | ||
2075 | <entry>y<subscript>9</subscript></entry> | 1970 | <entry>y<subscript>9</subscript></entry> |
2076 | <entry>y<subscript>8</subscript></entry> | 1971 | <entry>y<subscript>8</subscript></entry> |
2077 | <entry>y<subscript>7</subscript></entry> | 1972 | <entry>y<subscript>7</subscript></entry> |
@@ -2087,8 +1982,7 @@ | |||
2087 | <entry></entry> | 1982 | <entry></entry> |
2088 | <entry></entry> | 1983 | <entry></entry> |
2089 | <entry></entry> | 1984 | <entry></entry> |
2090 | &dash-ent-10; | 1985 | &dash-ent-22; |
2091 | &dash-ent-10; | ||
2092 | <entry>v<subscript>9</subscript></entry> | 1986 | <entry>v<subscript>9</subscript></entry> |
2093 | <entry>v<subscript>8</subscript></entry> | 1987 | <entry>v<subscript>8</subscript></entry> |
2094 | <entry>v<subscript>7</subscript></entry> | 1988 | <entry>v<subscript>7</subscript></entry> |
@@ -2104,8 +1998,7 @@ | |||
2104 | <entry></entry> | 1998 | <entry></entry> |
2105 | <entry></entry> | 1999 | <entry></entry> |
2106 | <entry></entry> | 2000 | <entry></entry> |
2107 | &dash-ent-10; | 2001 | &dash-ent-22; |
2108 | &dash-ent-10; | ||
2109 | <entry>y<subscript>9</subscript></entry> | 2002 | <entry>y<subscript>9</subscript></entry> |
2110 | <entry>y<subscript>8</subscript></entry> | 2003 | <entry>y<subscript>8</subscript></entry> |
2111 | <entry>y<subscript>7</subscript></entry> | 2004 | <entry>y<subscript>7</subscript></entry> |
@@ -2121,8 +2014,7 @@ | |||
2121 | <entry></entry> | 2014 | <entry></entry> |
2122 | <entry></entry> | 2015 | <entry></entry> |
2123 | <entry></entry> | 2016 | <entry></entry> |
2124 | &dash-ent-10; | 2017 | &dash-ent-22; |
2125 | &dash-ent-10; | ||
2126 | <entry>u<subscript>9</subscript></entry> | 2018 | <entry>u<subscript>9</subscript></entry> |
2127 | <entry>u<subscript>8</subscript></entry> | 2019 | <entry>u<subscript>8</subscript></entry> |
2128 | <entry>u<subscript>7</subscript></entry> | 2020 | <entry>u<subscript>7</subscript></entry> |
@@ -2138,15 +2030,7 @@ | |||
2138 | <entry>V4L2_MBUS_FMT_Y12_1X12</entry> | 2030 | <entry>V4L2_MBUS_FMT_Y12_1X12</entry> |
2139 | <entry>0x2013</entry> | 2031 | <entry>0x2013</entry> |
2140 | <entry></entry> | 2032 | <entry></entry> |
2141 | &dash-ent-10; | 2033 | &dash-ent-20; |
2142 | <entry>-</entry> | ||
2143 | <entry>-</entry> | ||
2144 | <entry>-</entry> | ||
2145 | <entry>-</entry> | ||
2146 | <entry>-</entry> | ||
2147 | <entry>-</entry> | ||
2148 | <entry>-</entry> | ||
2149 | <entry>-</entry> | ||
2150 | <entry>y<subscript>11</subscript></entry> | 2034 | <entry>y<subscript>11</subscript></entry> |
2151 | <entry>y<subscript>10</subscript></entry> | 2035 | <entry>y<subscript>10</subscript></entry> |
2152 | <entry>y<subscript>9</subscript></entry> | 2036 | <entry>y<subscript>9</subscript></entry> |
@@ -2164,11 +2048,7 @@ | |||
2164 | <entry>V4L2_MBUS_FMT_UYVY8_1X16</entry> | 2048 | <entry>V4L2_MBUS_FMT_UYVY8_1X16</entry> |
2165 | <entry>0x200f</entry> | 2049 | <entry>0x200f</entry> |
2166 | <entry></entry> | 2050 | <entry></entry> |
2167 | &dash-ent-10; | 2051 | &dash-ent-16; |
2168 | <entry>-</entry> | ||
2169 | <entry>-</entry> | ||
2170 | <entry>-</entry> | ||
2171 | <entry>-</entry> | ||
2172 | <entry>u<subscript>7</subscript></entry> | 2052 | <entry>u<subscript>7</subscript></entry> |
2173 | <entry>u<subscript>6</subscript></entry> | 2053 | <entry>u<subscript>6</subscript></entry> |
2174 | <entry>u<subscript>5</subscript></entry> | 2054 | <entry>u<subscript>5</subscript></entry> |
@@ -2190,11 +2070,7 @@ | |||
2190 | <entry></entry> | 2070 | <entry></entry> |
2191 | <entry></entry> | 2071 | <entry></entry> |
2192 | <entry></entry> | 2072 | <entry></entry> |
2193 | &dash-ent-10; | 2073 | &dash-ent-16; |
2194 | <entry>-</entry> | ||
2195 | <entry>-</entry> | ||
2196 | <entry>-</entry> | ||
2197 | <entry>-</entry> | ||
2198 | <entry>v<subscript>7</subscript></entry> | 2074 | <entry>v<subscript>7</subscript></entry> |
2199 | <entry>v<subscript>6</subscript></entry> | 2075 | <entry>v<subscript>6</subscript></entry> |
2200 | <entry>v<subscript>5</subscript></entry> | 2076 | <entry>v<subscript>5</subscript></entry> |
@@ -2216,11 +2092,7 @@ | |||
2216 | <entry>V4L2_MBUS_FMT_VYUY8_1X16</entry> | 2092 | <entry>V4L2_MBUS_FMT_VYUY8_1X16</entry> |
2217 | <entry>0x2010</entry> | 2093 | <entry>0x2010</entry> |
2218 | <entry></entry> | 2094 | <entry></entry> |
2219 | &dash-ent-10; | 2095 | &dash-ent-16; |
2220 | <entry>-</entry> | ||
2221 | <entry>-</entry> | ||
2222 | <entry>-</entry> | ||
2223 | <entry>-</entry> | ||
2224 | <entry>v<subscript>7</subscript></entry> | 2096 | <entry>v<subscript>7</subscript></entry> |
2225 | <entry>v<subscript>6</subscript></entry> | 2097 | <entry>v<subscript>6</subscript></entry> |
2226 | <entry>v<subscript>5</subscript></entry> | 2098 | <entry>v<subscript>5</subscript></entry> |
@@ -2242,11 +2114,7 @@ | |||
2242 | <entry></entry> | 2114 | <entry></entry> |
2243 | <entry></entry> | 2115 | <entry></entry> |
2244 | <entry></entry> | 2116 | <entry></entry> |
2245 | &dash-ent-10; | 2117 | &dash-ent-16; |
2246 | <entry>-</entry> | ||
2247 | <entry>-</entry> | ||
2248 | <entry>-</entry> | ||
2249 | <entry>-</entry> | ||
2250 | <entry>u<subscript>7</subscript></entry> | 2118 | <entry>u<subscript>7</subscript></entry> |
2251 | <entry>u<subscript>6</subscript></entry> | 2119 | <entry>u<subscript>6</subscript></entry> |
2252 | <entry>u<subscript>5</subscript></entry> | 2120 | <entry>u<subscript>5</subscript></entry> |
@@ -2268,11 +2136,7 @@ | |||
2268 | <entry>V4L2_MBUS_FMT_YUYV8_1X16</entry> | 2136 | <entry>V4L2_MBUS_FMT_YUYV8_1X16</entry> |
2269 | <entry>0x2011</entry> | 2137 | <entry>0x2011</entry> |
2270 | <entry></entry> | 2138 | <entry></entry> |
2271 | &dash-ent-10; | 2139 | &dash-ent-16; |
2272 | <entry>-</entry> | ||
2273 | <entry>-</entry> | ||
2274 | <entry>-</entry> | ||
2275 | <entry>-</entry> | ||
2276 | <entry>y<subscript>7</subscript></entry> | 2140 | <entry>y<subscript>7</subscript></entry> |
2277 | <entry>y<subscript>6</subscript></entry> | 2141 | <entry>y<subscript>6</subscript></entry> |
2278 | <entry>y<subscript>5</subscript></entry> | 2142 | <entry>y<subscript>5</subscript></entry> |
@@ -2294,11 +2158,7 @@ | |||
2294 | <entry></entry> | 2158 | <entry></entry> |
2295 | <entry></entry> | 2159 | <entry></entry> |
2296 | <entry></entry> | 2160 | <entry></entry> |
2297 | &dash-ent-10; | 2161 | &dash-ent-16; |
2298 | <entry>-</entry> | ||
2299 | <entry>-</entry> | ||
2300 | <entry>-</entry> | ||
2301 | <entry>-</entry> | ||
2302 | <entry>y<subscript>7</subscript></entry> | 2162 | <entry>y<subscript>7</subscript></entry> |
2303 | <entry>y<subscript>6</subscript></entry> | 2163 | <entry>y<subscript>6</subscript></entry> |
2304 | <entry>y<subscript>5</subscript></entry> | 2164 | <entry>y<subscript>5</subscript></entry> |
@@ -2320,11 +2180,7 @@ | |||
2320 | <entry>V4L2_MBUS_FMT_YVYU8_1X16</entry> | 2180 | <entry>V4L2_MBUS_FMT_YVYU8_1X16</entry> |
2321 | <entry>0x2012</entry> | 2181 | <entry>0x2012</entry> |
2322 | <entry></entry> | 2182 | <entry></entry> |
2323 | &dash-ent-10; | 2183 | &dash-ent-16; |
2324 | <entry>-</entry> | ||
2325 | <entry>-</entry> | ||
2326 | <entry>-</entry> | ||
2327 | <entry>-</entry> | ||
2328 | <entry>y<subscript>7</subscript></entry> | 2184 | <entry>y<subscript>7</subscript></entry> |
2329 | <entry>y<subscript>6</subscript></entry> | 2185 | <entry>y<subscript>6</subscript></entry> |
2330 | <entry>y<subscript>5</subscript></entry> | 2186 | <entry>y<subscript>5</subscript></entry> |
@@ -2346,11 +2202,7 @@ | |||
2346 | <entry></entry> | 2202 | <entry></entry> |
2347 | <entry></entry> | 2203 | <entry></entry> |
2348 | <entry></entry> | 2204 | <entry></entry> |
2349 | &dash-ent-10; | 2205 | &dash-ent-16; |
2350 | <entry>-</entry> | ||
2351 | <entry>-</entry> | ||
2352 | <entry>-</entry> | ||
2353 | <entry>-</entry> | ||
2354 | <entry>y<subscript>7</subscript></entry> | 2206 | <entry>y<subscript>7</subscript></entry> |
2355 | <entry>y<subscript>6</subscript></entry> | 2207 | <entry>y<subscript>6</subscript></entry> |
2356 | <entry>y<subscript>5</subscript></entry> | 2208 | <entry>y<subscript>5</subscript></entry> |
@@ -2372,10 +2224,7 @@ | |||
2372 | <entry>V4L2_MBUS_FMT_YDYUYDYV8_1X16</entry> | 2224 | <entry>V4L2_MBUS_FMT_YDYUYDYV8_1X16</entry> |
2373 | <entry>0x2014</entry> | 2225 | <entry>0x2014</entry> |
2374 | <entry></entry> | 2226 | <entry></entry> |
2375 | <entry>-</entry> | 2227 | &dash-ent-16; |
2376 | <entry>-</entry> | ||
2377 | <entry>-</entry> | ||
2378 | <entry>-</entry> | ||
2379 | <entry>y<subscript>7</subscript></entry> | 2228 | <entry>y<subscript>7</subscript></entry> |
2380 | <entry>y<subscript>6</subscript></entry> | 2229 | <entry>y<subscript>6</subscript></entry> |
2381 | <entry>y<subscript>5</subscript></entry> | 2230 | <entry>y<subscript>5</subscript></entry> |
@@ -2397,10 +2246,7 @@ | |||
2397 | <entry></entry> | 2246 | <entry></entry> |
2398 | <entry></entry> | 2247 | <entry></entry> |
2399 | <entry></entry> | 2248 | <entry></entry> |
2400 | <entry>-</entry> | 2249 | &dash-ent-16; |
2401 | <entry>-</entry> | ||
2402 | <entry>-</entry> | ||
2403 | <entry>-</entry> | ||
2404 | <entry>y<subscript>7</subscript></entry> | 2250 | <entry>y<subscript>7</subscript></entry> |
2405 | <entry>y<subscript>6</subscript></entry> | 2251 | <entry>y<subscript>6</subscript></entry> |
2406 | <entry>y<subscript>5</subscript></entry> | 2252 | <entry>y<subscript>5</subscript></entry> |
@@ -2422,10 +2268,7 @@ | |||
2422 | <entry></entry> | 2268 | <entry></entry> |
2423 | <entry></entry> | 2269 | <entry></entry> |
2424 | <entry></entry> | 2270 | <entry></entry> |
2425 | <entry>-</entry> | 2271 | &dash-ent-16; |
2426 | <entry>-</entry> | ||
2427 | <entry>-</entry> | ||
2428 | <entry>-</entry> | ||
2429 | <entry>y<subscript>7</subscript></entry> | 2272 | <entry>y<subscript>7</subscript></entry> |
2430 | <entry>y<subscript>6</subscript></entry> | 2273 | <entry>y<subscript>6</subscript></entry> |
2431 | <entry>y<subscript>5</subscript></entry> | 2274 | <entry>y<subscript>5</subscript></entry> |
@@ -2447,10 +2290,7 @@ | |||
2447 | <entry></entry> | 2290 | <entry></entry> |
2448 | <entry></entry> | 2291 | <entry></entry> |
2449 | <entry></entry> | 2292 | <entry></entry> |
2450 | <entry>-</entry> | 2293 | &dash-ent-16; |
2451 | <entry>-</entry> | ||
2452 | <entry>-</entry> | ||
2453 | <entry>-</entry> | ||
2454 | <entry>y<subscript>7</subscript></entry> | 2294 | <entry>y<subscript>7</subscript></entry> |
2455 | <entry>y<subscript>6</subscript></entry> | 2295 | <entry>y<subscript>6</subscript></entry> |
2456 | <entry>y<subscript>5</subscript></entry> | 2296 | <entry>y<subscript>5</subscript></entry> |
@@ -2472,7 +2312,7 @@ | |||
2472 | <entry>V4L2_MBUS_FMT_YUYV10_1X20</entry> | 2312 | <entry>V4L2_MBUS_FMT_YUYV10_1X20</entry> |
2473 | <entry>0x200d</entry> | 2313 | <entry>0x200d</entry> |
2474 | <entry></entry> | 2314 | <entry></entry> |
2475 | &dash-ent-10; | 2315 | &dash-ent-12; |
2476 | <entry>y<subscript>9</subscript></entry> | 2316 | <entry>y<subscript>9</subscript></entry> |
2477 | <entry>y<subscript>8</subscript></entry> | 2317 | <entry>y<subscript>8</subscript></entry> |
2478 | <entry>y<subscript>7</subscript></entry> | 2318 | <entry>y<subscript>7</subscript></entry> |
@@ -2498,7 +2338,7 @@ | |||
2498 | <entry></entry> | 2338 | <entry></entry> |
2499 | <entry></entry> | 2339 | <entry></entry> |
2500 | <entry></entry> | 2340 | <entry></entry> |
2501 | &dash-ent-10; | 2341 | &dash-ent-12; |
2502 | <entry>y<subscript>9</subscript></entry> | 2342 | <entry>y<subscript>9</subscript></entry> |
2503 | <entry>y<subscript>8</subscript></entry> | 2343 | <entry>y<subscript>8</subscript></entry> |
2504 | <entry>y<subscript>7</subscript></entry> | 2344 | <entry>y<subscript>7</subscript></entry> |
@@ -2524,7 +2364,7 @@ | |||
2524 | <entry>V4L2_MBUS_FMT_YVYU10_1X20</entry> | 2364 | <entry>V4L2_MBUS_FMT_YVYU10_1X20</entry> |
2525 | <entry>0x200e</entry> | 2365 | <entry>0x200e</entry> |
2526 | <entry></entry> | 2366 | <entry></entry> |
2527 | &dash-ent-10; | 2367 | &dash-ent-12; |
2528 | <entry>y<subscript>9</subscript></entry> | 2368 | <entry>y<subscript>9</subscript></entry> |
2529 | <entry>y<subscript>8</subscript></entry> | 2369 | <entry>y<subscript>8</subscript></entry> |
2530 | <entry>y<subscript>7</subscript></entry> | 2370 | <entry>y<subscript>7</subscript></entry> |
@@ -2550,7 +2390,7 @@ | |||
2550 | <entry></entry> | 2390 | <entry></entry> |
2551 | <entry></entry> | 2391 | <entry></entry> |
2552 | <entry></entry> | 2392 | <entry></entry> |
2553 | &dash-ent-10; | 2393 | &dash-ent-12; |
2554 | <entry>y<subscript>9</subscript></entry> | 2394 | <entry>y<subscript>9</subscript></entry> |
2555 | <entry>y<subscript>8</subscript></entry> | 2395 | <entry>y<subscript>8</subscript></entry> |
2556 | <entry>y<subscript>7</subscript></entry> | 2396 | <entry>y<subscript>7</subscript></entry> |
@@ -2574,8 +2414,10 @@ | |||
2574 | </row> | 2414 | </row> |
2575 | <row id="V4L2-MBUS-FMT-YUV10-1X30"> | 2415 | <row id="V4L2-MBUS-FMT-YUV10-1X30"> |
2576 | <entry>V4L2_MBUS_FMT_YUV10_1X30</entry> | 2416 | <entry>V4L2_MBUS_FMT_YUV10_1X30</entry> |
2577 | <entry>0x2014</entry> | 2417 | <entry>0x2016</entry> |
2578 | <entry></entry> | 2418 | <entry></entry> |
2419 | <entry>-</entry> | ||
2420 | <entry>-</entry> | ||
2579 | <entry>y<subscript>9</subscript></entry> | 2421 | <entry>y<subscript>9</subscript></entry> |
2580 | <entry>y<subscript>8</subscript></entry> | 2422 | <entry>y<subscript>8</subscript></entry> |
2581 | <entry>y<subscript>7</subscript></entry> | 2423 | <entry>y<subscript>7</subscript></entry> |
@@ -2607,6 +2449,43 @@ | |||
2607 | <entry>v<subscript>1</subscript></entry> | 2449 | <entry>v<subscript>1</subscript></entry> |
2608 | <entry>v<subscript>0</subscript></entry> | 2450 | <entry>v<subscript>0</subscript></entry> |
2609 | </row> | 2451 | </row> |
2452 | <row id="V4L2-MBUS-FMT-AYUV8-1X32"> | ||
2453 | <entry>V4L2_MBUS_FMT_AYUV8_1X32</entry> | ||
2454 | <entry>0x2017</entry> | ||
2455 | <entry></entry> | ||
2456 | <entry>a<subscript>7</subscript></entry> | ||
2457 | <entry>a<subscript>6</subscript></entry> | ||
2458 | <entry>a<subscript>5</subscript></entry> | ||
2459 | <entry>a<subscript>4</subscript></entry> | ||
2460 | <entry>a<subscript>3</subscript></entry> | ||
2461 | <entry>a<subscript>2</subscript></entry> | ||
2462 | <entry>a<subscript>1</subscript></entry> | ||
2463 | <entry>a<subscript>0</subscript></entry> | ||
2464 | <entry>y<subscript>7</subscript></entry> | ||
2465 | <entry>y<subscript>6</subscript></entry> | ||
2466 | <entry>y<subscript>5</subscript></entry> | ||
2467 | <entry>y<subscript>4</subscript></entry> | ||
2468 | <entry>y<subscript>3</subscript></entry> | ||
2469 | <entry>y<subscript>2</subscript></entry> | ||
2470 | <entry>y<subscript>1</subscript></entry> | ||
2471 | <entry>y<subscript>0</subscript></entry> | ||
2472 | <entry>u<subscript>7</subscript></entry> | ||
2473 | <entry>u<subscript>6</subscript></entry> | ||
2474 | <entry>u<subscript>5</subscript></entry> | ||
2475 | <entry>u<subscript>4</subscript></entry> | ||
2476 | <entry>u<subscript>3</subscript></entry> | ||
2477 | <entry>u<subscript>2</subscript></entry> | ||
2478 | <entry>u<subscript>1</subscript></entry> | ||
2479 | <entry>u<subscript>0</subscript></entry> | ||
2480 | <entry>v<subscript>7</subscript></entry> | ||
2481 | <entry>v<subscript>6</subscript></entry> | ||
2482 | <entry>v<subscript>5</subscript></entry> | ||
2483 | <entry>v<subscript>4</subscript></entry> | ||
2484 | <entry>v<subscript>3</subscript></entry> | ||
2485 | <entry>v<subscript>2</subscript></entry> | ||
2486 | <entry>v<subscript>1</subscript></entry> | ||
2487 | <entry>v<subscript>0</subscript></entry> | ||
2488 | </row> | ||
2610 | </tbody> | 2489 | </tbody> |
2611 | </tgroup> | 2490 | </tgroup> |
2612 | </table> | 2491 | </table> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml index cd9943672434..9b700a5f4df7 100644 --- a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml +++ b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml | |||
@@ -62,18 +62,29 @@ addition to the <constant>VIDIOC_REQBUFS</constant> ioctl, when a tighter | |||
62 | control over buffers is required. This ioctl can be called multiple times to | 62 | control over buffers is required. This ioctl can be called multiple times to |
63 | create buffers of different sizes.</para> | 63 | create buffers of different sizes.</para> |
64 | 64 | ||
65 | <para>To allocate device buffers applications initialize relevant fields of | 65 | <para>To allocate the device buffers applications must initialize the |
66 | the <structname>v4l2_create_buffers</structname> structure. They set the | 66 | relevant fields of the <structname>v4l2_create_buffers</structname> structure. |
67 | <structfield>type</structfield> field in the | 67 | The <structfield>count</structfield> field must be set to the number of |
68 | &v4l2-format; structure, embedded in this | 68 | requested buffers, the <structfield>memory</structfield> field specifies the |
69 | structure, to the respective stream or buffer type. | 69 | requested I/O method and the <structfield>reserved</structfield> array must be |
70 | <structfield>count</structfield> must be set to the number of required buffers. | 70 | zeroed.</para> |
71 | <structfield>memory</structfield> specifies the required I/O method. The | 71 | |
72 | <structfield>format</structfield> field shall typically be filled in using | 72 | <para>The <structfield>format</structfield> field specifies the image format |
73 | either the <constant>VIDIOC_TRY_FMT</constant> or | 73 | that the buffers must be able to handle. The application has to fill in this |
74 | <constant>VIDIOC_G_FMT</constant> ioctl(). Additionally, applications can adjust | 74 | &v4l2-format;. Usually this will be done using the |
75 | <structfield>sizeimage</structfield> fields to fit their specific needs. The | 75 | <constant>VIDIOC_TRY_FMT</constant> or <constant>VIDIOC_G_FMT</constant> ioctl() |
76 | <structfield>reserved</structfield> array must be zeroed.</para> | 76 | to ensure that the requested format is supported by the driver. Unsupported |
77 | formats will result in an error.</para> | ||
78 | |||
79 | <para>The buffers created by this ioctl will have as minimum size the size | ||
80 | defined by the <structfield>format.pix.sizeimage</structfield> field. If the | ||
81 | <structfield>format.pix.sizeimage</structfield> field is less than the minimum | ||
82 | required for the given format, then <structfield>sizeimage</structfield> will be | ||
83 | increased by the driver to that minimum to allocate the buffers. If it is | ||
84 | larger, then the value will be used as-is. The same applies to the | ||
85 | <structfield>sizeimage</structfield> field of the | ||
86 | <structname>v4l2_plane_pix_format</structname> structure in the case of | ||
87 | multiplanar formats.</para> | ||
77 | 88 | ||
78 | <para>When the ioctl is called with a pointer to this structure the driver | 89 | <para>When the ioctl is called with a pointer to this structure the driver |
79 | will attempt to allocate up to the requested number of buffers and store the | 90 | will attempt to allocate up to the requested number of buffers and store the |
@@ -144,9 +155,9 @@ mapped</link> I/O.</para> | |||
144 | <varlistentry> | 155 | <varlistentry> |
145 | <term><errorcode>EINVAL</errorcode></term> | 156 | <term><errorcode>EINVAL</errorcode></term> |
146 | <listitem> | 157 | <listitem> |
147 | <para>The buffer type (<structfield>type</structfield> field) or the | 158 | <para>The buffer type (<structfield>format.type</structfield> field), |
148 | requested I/O method (<structfield>memory</structfield>) is not | 159 | requested I/O method (<structfield>memory</structfield>) or format |
149 | supported.</para> | 160 | (<structfield>format</structfield> field) is not valid.</para> |
150 | </listitem> | 161 | </listitem> |
151 | </varlistentry> | 162 | </varlistentry> |
152 | </variablelist> | 163 | </variablelist> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml index 72369707bd77..c4336577ff06 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml | |||
@@ -156,19 +156,19 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H | |||
156 | <entry>__u32</entry> | 156 | <entry>__u32</entry> |
157 | <entry><structfield>il_vfrontporch</structfield></entry> | 157 | <entry><structfield>il_vfrontporch</structfield></entry> |
158 | <entry>Vertical front porch in lines for the even field (aka field 2) of | 158 | <entry>Vertical front porch in lines for the even field (aka field 2) of |
159 | interlaced field formats.</entry> | 159 | interlaced field formats. Must be 0 for progressive formats.</entry> |
160 | </row> | 160 | </row> |
161 | <row> | 161 | <row> |
162 | <entry>__u32</entry> | 162 | <entry>__u32</entry> |
163 | <entry><structfield>il_vsync</structfield></entry> | 163 | <entry><structfield>il_vsync</structfield></entry> |
164 | <entry>Vertical sync length in lines for the even field (aka field 2) of | 164 | <entry>Vertical sync length in lines for the even field (aka field 2) of |
165 | interlaced field formats.</entry> | 165 | interlaced field formats. Must be 0 for progressive formats.</entry> |
166 | </row> | 166 | </row> |
167 | <row> | 167 | <row> |
168 | <entry>__u32</entry> | 168 | <entry>__u32</entry> |
169 | <entry><structfield>il_vbackporch</structfield></entry> | 169 | <entry><structfield>il_vbackporch</structfield></entry> |
170 | <entry>Vertical back porch in lines for the even field (aka field 2) of | 170 | <entry>Vertical back porch in lines for the even field (aka field 2) of |
171 | interlaced field formats.</entry> | 171 | interlaced field formats. Must be 0 for progressive formats.</entry> |
172 | </row> | 172 | </row> |
173 | <row> | 173 | <row> |
174 | <entry>__u32</entry> | 174 | <entry>__u32</entry> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml index 48748499c097..098ff483802e 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml | |||
@@ -92,8 +92,8 @@ to add them.</para> | |||
92 | <entry>int</entry> | 92 | <entry>int</entry> |
93 | <entry><structfield>quality</structfield></entry> | 93 | <entry><structfield>quality</structfield></entry> |
94 | <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant> | 94 | <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant> |
95 | V4L2_CID_JPEG_IMAGE_QUALITY</constant></link> control is exposed by | 95 | V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></link> control is exposed |
96 | a driver applications should use it instead and ignore this field. | 96 | by a driver applications should use it instead and ignore this field. |
97 | </entry> | 97 | </entry> |
98 | </row> | 98 | </row> |
99 | <row> | 99 | <row> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml index 9058224d1bbf..f4e28e7d4751 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml | |||
@@ -132,7 +132,7 @@ devices.</para> | |||
132 | <row> | 132 | <row> |
133 | <entry>&v4l2-fract;</entry> | 133 | <entry>&v4l2-fract;</entry> |
134 | <entry><structfield>timeperframe</structfield></entry> | 134 | <entry><structfield>timeperframe</structfield></entry> |
135 | <entry><para>This is is the desired period between | 135 | <entry><para>This is the desired period between |
136 | successive frames captured by the driver, in seconds. The | 136 | successive frames captured by the driver, in seconds. The |
137 | field is intended to skip frames on the driver side, saving I/O | 137 | field is intended to skip frames on the driver side, saving I/O |
138 | bandwidth.</para><para>Applications store here the desired frame | 138 | bandwidth.</para><para>Applications store here the desired frame |
@@ -193,7 +193,7 @@ applications must set the array to zero.</entry> | |||
193 | <row> | 193 | <row> |
194 | <entry>&v4l2-fract;</entry> | 194 | <entry>&v4l2-fract;</entry> |
195 | <entry><structfield>timeperframe</structfield></entry> | 195 | <entry><structfield>timeperframe</structfield></entry> |
196 | <entry>This is is the desired period between | 196 | <entry>This is the desired period between |
197 | successive frames output by the driver, in seconds.</entry> | 197 | successive frames output by the driver, in seconds.</entry> |
198 | </row> | 198 | </row> |
199 | <row> | 199 | <row> |
diff --git a/Documentation/DocBook/media_api.tmpl b/Documentation/DocBook/media_api.tmpl index 9c92bb879b6d..4c8d282545a2 100644 --- a/Documentation/DocBook/media_api.tmpl +++ b/Documentation/DocBook/media_api.tmpl | |||
@@ -22,8 +22,14 @@ | |||
22 | 22 | ||
23 | <!-- LinuxTV v4l-dvb repository. --> | 23 | <!-- LinuxTV v4l-dvb repository. --> |
24 | <!ENTITY v4l-dvb "<ulink url='http://linuxtv.org/repo/'>http://linuxtv.org/repo/</ulink>"> | 24 | <!ENTITY v4l-dvb "<ulink url='http://linuxtv.org/repo/'>http://linuxtv.org/repo/</ulink>"> |
25 | <!ENTITY dash-ent-8 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | ||
25 | <!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | 26 | <!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> |
27 | <!ENTITY dash-ent-12 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | ||
28 | <!ENTITY dash-ent-14 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | ||
26 | <!ENTITY dash-ent-16 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | 29 | <!ENTITY dash-ent-16 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> |
30 | <!ENTITY dash-ent-20 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | ||
31 | <!ENTITY dash-ent-22 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | ||
32 | <!ENTITY dash-ent-24 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>"> | ||
27 | ]> | 33 | ]> |
28 | 34 | ||
29 | <book id="media_api"> | 35 | <book id="media_api"> |
diff --git a/Documentation/DocBook/mtdnand.tmpl b/Documentation/DocBook/mtdnand.tmpl index fe122d6e686f..a248f42a121e 100644 --- a/Documentation/DocBook/mtdnand.tmpl +++ b/Documentation/DocBook/mtdnand.tmpl | |||
@@ -1224,8 +1224,6 @@ in this page</entry> | |||
1224 | #define NAND_BBT_CREATE 0x00000200 | 1224 | #define NAND_BBT_CREATE 0x00000200 |
1225 | /* Search good / bad pattern through all pages of a block */ | 1225 | /* Search good / bad pattern through all pages of a block */ |
1226 | #define NAND_BBT_SCANALLPAGES 0x00000400 | 1226 | #define NAND_BBT_SCANALLPAGES 0x00000400 |
1227 | /* Scan block empty during good / bad block scan */ | ||
1228 | #define NAND_BBT_SCANEMPTY 0x00000800 | ||
1229 | /* Write bbt if neccecary */ | 1227 | /* Write bbt if neccecary */ |
1230 | #define NAND_BBT_WRITE 0x00001000 | 1228 | #define NAND_BBT_WRITE 0x00001000 |
1231 | /* Read and write back block contents when writing bbt */ | 1229 | /* Read and write back block contents when writing bbt */ |
diff --git a/Documentation/IRQ-affinity.txt b/Documentation/IRQ-affinity.txt index 7890fae18529..01a675175a36 100644 --- a/Documentation/IRQ-affinity.txt +++ b/Documentation/IRQ-affinity.txt | |||
@@ -57,8 +57,8 @@ i.e counters for the CPU0-3 did not change. | |||
57 | 57 | ||
58 | Here is an example of limiting that same irq (44) to cpus 1024 to 1031: | 58 | Here is an example of limiting that same irq (44) to cpus 1024 to 1031: |
59 | 59 | ||
60 | [root@moon 44]# echo 1024-1031 > smp_affinity | 60 | [root@moon 44]# echo 1024-1031 > smp_affinity_list |
61 | [root@moon 44]# cat smp_affinity | 61 | [root@moon 44]# cat smp_affinity_list |
62 | 1024-1031 | 62 | 1024-1031 |
63 | 63 | ||
64 | Note that to do this with a bitmask would require 32 bitmasks of zero | 64 | Note that to do this with a bitmask would require 32 bitmasks of zero |
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt index 7f40c72a9c51..273e654d7d08 100644 --- a/Documentation/RCU/RTFP.txt +++ b/Documentation/RCU/RTFP.txt | |||
@@ -39,7 +39,7 @@ in read-mostly situations. This algorithm does take pains to avoid | |||
39 | write-side contention and parallelize the other write-side overheads by | 39 | write-side contention and parallelize the other write-side overheads by |
40 | providing a fine-grained locking design, however, it would be interesting | 40 | providing a fine-grained locking design, however, it would be interesting |
41 | to see how much of the performance advantage reported in 1990 remains | 41 | to see how much of the performance advantage reported in 1990 remains |
42 | in 2004. | 42 | today. |
43 | 43 | ||
44 | At about this same time, Adams [Adams91] described ``chaotic relaxation'', | 44 | At about this same time, Adams [Adams91] described ``chaotic relaxation'', |
45 | where the normal barriers between successive iterations of convergent | 45 | where the normal barriers between successive iterations of convergent |
@@ -86,9 +86,9 @@ DYNIX/ptx kernel. The corresponding conference paper appeared in 1998 | |||
86 | [McKenney98]. | 86 | [McKenney98]. |
87 | 87 | ||
88 | In 1999, the Tornado and K42 groups described their "generations" | 88 | In 1999, the Tornado and K42 groups described their "generations" |
89 | mechanism, which quite similar to RCU [Gamsa99]. These operating systems | 89 | mechanism, which is quite similar to RCU [Gamsa99]. These operating |
90 | made pervasive use of RCU in place of "existence locks", which greatly | 90 | systems made pervasive use of RCU in place of "existence locks", which |
91 | simplifies locking hierarchies. | 91 | greatly simplifies locking hierarchies and helps avoid deadlocks. |
92 | 92 | ||
93 | 2001 saw the first RCU presentation involving Linux [McKenney01a] | 93 | 2001 saw the first RCU presentation involving Linux [McKenney01a] |
94 | at OLS. The resulting abundance of RCU patches was presented the | 94 | at OLS. The resulting abundance of RCU patches was presented the |
@@ -106,8 +106,11 @@ these techniques still impose significant read-side overhead in the | |||
106 | form of memory barriers. Researchers at Sun worked along similar lines | 106 | form of memory barriers. Researchers at Sun worked along similar lines |
107 | in the same timeframe [HerlihyLM02]. These techniques can be thought | 107 | in the same timeframe [HerlihyLM02]. These techniques can be thought |
108 | of as inside-out reference counts, where the count is represented by the | 108 | of as inside-out reference counts, where the count is represented by the |
109 | number of hazard pointers referencing a given data structure (rather than | 109 | number of hazard pointers referencing a given data structure rather than |
110 | the more conventional counter field within the data structure itself). | 110 | the more conventional counter field within the data structure itself. |
111 | The key advantage of inside-out reference counts is that they can be | ||
112 | stored in immortal variables, thus allowing races between access and | ||
113 | deletion to be avoided. | ||
111 | 114 | ||
112 | By the same token, RCU can be thought of as a "bulk reference count", | 115 | By the same token, RCU can be thought of as a "bulk reference count", |
113 | where some form of reference counter covers all reference by a given CPU | 116 | where some form of reference counter covers all reference by a given CPU |
@@ -179,7 +182,25 @@ tree using software transactional memory to protect concurrent updates | |||
179 | (strange, but true!) [PhilHoward2011RCUTMRBTree], yet another variant of | 182 | (strange, but true!) [PhilHoward2011RCUTMRBTree], yet another variant of |
180 | RCU-protected resizeable hash tables [Triplett:2011:RPHash], the 3.0 RCU | 183 | RCU-protected resizeable hash tables [Triplett:2011:RPHash], the 3.0 RCU |
181 | trainwreck [PaulEMcKenney2011RCU3.0trainwreck], and Neil Brown's "Meet the | 184 | trainwreck [PaulEMcKenney2011RCU3.0trainwreck], and Neil Brown's "Meet the |
182 | Lockers" LWN article [NeilBrown2011MeetTheLockers]. | 185 | Lockers" LWN article [NeilBrown2011MeetTheLockers]. Some academic |
186 | work looked at debugging uses of RCU [Seyster:2011:RFA:2075416.2075425]. | ||
187 | |||
188 | In 2012, Josh Triplett received his Ph.D. with his dissertation | ||
189 | covering RCU-protected resizable hash tables and the relationship | ||
190 | between memory barriers and read-side traversal order: If the updater | ||
191 | is making changes in the opposite direction from the read-side traveral | ||
192 | order, the updater need only execute a memory-barrier instruction, | ||
193 | but if in the same direction, the updater needs to wait for a grace | ||
194 | period between the individual updates [JoshTriplettPhD]. Also in 2012, | ||
195 | after seventeen years of attempts, an RCU paper made it into a top-flight | ||
196 | academic journal, IEEE Transactions on Parallel and Distributed Systems | ||
197 | [MathieuDesnoyers2012URCU]. A group of researchers in Spain applied | ||
198 | user-level RCU to crowd simulation [GuillermoVigueras2012RCUCrowd], and | ||
199 | another group of researchers in Europe produced a formal description of | ||
200 | RCU based on separation logic [AlexeyGotsman2012VerifyGraceExtended], | ||
201 | which was published in the 2013 European Symposium on Programming | ||
202 | [AlexeyGotsman2013ESOPRCU]. | ||
203 | |||
183 | 204 | ||
184 | 205 | ||
185 | Bibtex Entries | 206 | Bibtex Entries |
@@ -193,13 +214,12 @@ Bibtex Entries | |||
193 | ,volume="5" | 214 | ,volume="5" |
194 | ,number="3" | 215 | ,number="3" |
195 | ,pages="354-382" | 216 | ,pages="354-382" |
196 | ,note="Available: | ||
197 | \url{http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE,} | ||
198 | [Viewed December 3, 2007]" | ||
199 | ,annotation={ | 217 | ,annotation={ |
200 | Use garbage collector to clean up data after everyone is done with it. | 218 | Use garbage collector to clean up data after everyone is done with it. |
201 | . | 219 | . |
202 | Oldest use of something vaguely resembling RCU that I have found. | 220 | Oldest use of something vaguely resembling RCU that I have found. |
221 | http://portal.acm.org/citation.cfm?id=320619&dl=GUIDE, | ||
222 | [Viewed December 3, 2007] | ||
203 | } | 223 | } |
204 | } | 224 | } |
205 | 225 | ||
@@ -309,7 +329,7 @@ for Programming Languages and Operating Systems}" | |||
309 | ,doi = {http://doi.acm.org/10.1145/42392.42399} | 329 | ,doi = {http://doi.acm.org/10.1145/42392.42399} |
310 | ,publisher = {ACM} | 330 | ,publisher = {ACM} |
311 | ,address = {New York, NY, USA} | 331 | ,address = {New York, NY, USA} |
312 | ,annotation= { | 332 | ,annotation={ |
313 | At the top of page 307: "Conflicts with deposits and withdrawals | 333 | At the top of page 307: "Conflicts with deposits and withdrawals |
314 | are necessary if the reported total is to be up to date. They | 334 | are necessary if the reported total is to be up to date. They |
315 | could be avoided by having total return a sum that is slightly | 335 | could be avoided by having total return a sum that is slightly |
@@ -346,8 +366,9 @@ for Programming Languages and Operating Systems}" | |||
346 | } | 366 | } |
347 | } | 367 | } |
348 | 368 | ||
349 | @Book{Adams91 | 369 | # Was Adams91, see also syncrefs.bib. |
350 | ,Author="Gregory R. Adams" | 370 | @Book{Andrews91textbook |
371 | ,Author="Gregory R. Andrews" | ||
351 | ,title="Concurrent Programming, Principles, and Practices" | 372 | ,title="Concurrent Programming, Principles, and Practices" |
352 | ,Publisher="Benjamin Cummins" | 373 | ,Publisher="Benjamin Cummins" |
353 | ,Year="1991" | 374 | ,Year="1991" |
@@ -398,39 +419,39 @@ for Programming Languages and Operating Systems}" | |||
398 | } | 419 | } |
399 | } | 420 | } |
400 | 421 | ||
401 | @conference{Pu95a, | 422 | @conference{Pu95a |
402 | Author = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and | 423 | ,Author = "Calton Pu and Tito Autrey and Andrew Black and Charles Consel and |
403 | Crispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and | 424 | Crispin Cowan and Jon Inouye and Lakshmi Kethana and Jonathan Walpole and |
404 | Ke Zhang", | 425 | Ke Zhang" |
405 | Title = "Optimistic Incremental Specialization: Streamlining a Commercial | 426 | ,Title = "Optimistic Incremental Specialization: Streamlining a Commercial |
406 | Operating System", | 427 | ,Operating System" |
407 | Booktitle = "15\textsuperscript{th} ACM Symposium on | 428 | ,Booktitle = "15\textsuperscript{th} ACM Symposium on |
408 | Operating Systems Principles (SOSP'95)", | 429 | ,Operating Systems Principles (SOSP'95)" |
409 | address = "Copper Mountain, CO", | 430 | ,address = "Copper Mountain, CO" |
410 | month="December", | 431 | ,month="December" |
411 | year="1995", | 432 | ,year="1995" |
412 | pages="314-321", | 433 | ,pages="314-321" |
413 | annotation=" | 434 | ,annotation={ |
414 | Uses a replugger, but with a flag to signal when people are | 435 | Uses a replugger, but with a flag to signal when people are |
415 | using the resource at hand. Only one reader at a time. | 436 | using the resource at hand. Only one reader at a time. |
416 | " | 437 | } |
417 | } | 438 | } |
418 | 439 | ||
419 | @conference{Cowan96a, | 440 | @conference{Cowan96a |
420 | Author = "Crispin Cowan and Tito Autrey and Charles Krasic and | 441 | ,Author = "Crispin Cowan and Tito Autrey and Charles Krasic and |
421 | Calton Pu and Jonathan Walpole", | 442 | ,Calton Pu and Jonathan Walpole" |
422 | Title = "Fast Concurrent Dynamic Linking for an Adaptive Operating System", | 443 | ,Title = "Fast Concurrent Dynamic Linking for an Adaptive Operating System" |
423 | Booktitle = "International Conference on Configurable Distributed Systems | 444 | ,Booktitle = "International Conference on Configurable Distributed Systems |
424 | (ICCDS'96)", | 445 | (ICCDS'96)" |
425 | address = "Annapolis, MD", | 446 | ,address = "Annapolis, MD" |
426 | month="May", | 447 | ,month="May" |
427 | year="1996", | 448 | ,year="1996" |
428 | pages="108", | 449 | ,pages="108" |
429 | isbn="0-8186-7395-8", | 450 | ,isbn="0-8186-7395-8" |
430 | annotation=" | 451 | ,annotation={ |
431 | Uses a replugger, but with a counter to signal when people are | 452 | Uses a replugger, but with a counter to signal when people are |
432 | using the resource at hand. Allows multiple readers. | 453 | using the resource at hand. Allows multiple readers. |
433 | " | 454 | } |
434 | } | 455 | } |
435 | 456 | ||
436 | @techreport{Slingwine95 | 457 | @techreport{Slingwine95 |
@@ -493,14 +514,13 @@ Problems" | |||
493 | ,Year="1998" | 514 | ,Year="1998" |
494 | ,pages="509-518" | 515 | ,pages="509-518" |
495 | ,Address="Las Vegas, NV" | 516 | ,Address="Las Vegas, NV" |
496 | ,note="Available: | ||
497 | \url{http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf} | ||
498 | [Viewed December 3, 2007]" | ||
499 | ,annotation={ | 517 | ,annotation={ |
500 | Describes and analyzes RCU mechanism in DYNIX/ptx. Describes | 518 | Describes and analyzes RCU mechanism in DYNIX/ptx. Describes |
501 | application to linked list update and log-buffer flushing. | 519 | application to linked list update and log-buffer flushing. |
502 | Defines 'quiescent state'. Includes both measured and analytic | 520 | Defines 'quiescent state'. Includes both measured and analytic |
503 | evaluation. | 521 | evaluation. |
522 | http://www.rdrop.com/users/paulmck/RCU/rclockpdcsproof.pdf | ||
523 | [Viewed December 3, 2007] | ||
504 | } | 524 | } |
505 | } | 525 | } |
506 | 526 | ||
@@ -514,13 +534,12 @@ Operating System Design and Implementation}" | |||
514 | ,Year="1999" | 534 | ,Year="1999" |
515 | ,pages="87-100" | 535 | ,pages="87-100" |
516 | ,Address="New Orleans, LA" | 536 | ,Address="New Orleans, LA" |
517 | ,note="Available: | ||
518 | \url{http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf} | ||
519 | [Viewed August 30, 2006]" | ||
520 | ,annotation={ | 537 | ,annotation={ |
521 | Use of RCU-like facility in K42/Tornado. Another independent | 538 | Use of RCU-like facility in K42/Tornado. Another independent |
522 | invention of RCU. | 539 | invention of RCU. |
523 | See especially pages 7-9 (Section 5). | 540 | See especially pages 7-9 (Section 5). |
541 | http://www.usenix.org/events/osdi99/full_papers/gamsa/gamsa.pdf | ||
542 | [Viewed August 30, 2006] | ||
524 | } | 543 | } |
525 | } | 544 | } |
526 | 545 | ||
@@ -611,9 +630,9 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" | |||
611 | ,note="Available: | 630 | ,note="Available: |
612 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100259266316456&w=2} | 631 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100259266316456&w=2} |
613 | [Viewed June 23, 2004]" | 632 | [Viewed June 23, 2004]" |
614 | ,annotation=" | 633 | ,annotation={ |
615 | Memory-barrier and Alpha thread. 100 messages, not too bad... | 634 | Memory-barrier and Alpha thread. 100 messages, not too bad... |
616 | " | 635 | } |
617 | } | 636 | } |
618 | 637 | ||
619 | @unpublished{Spraul01 | 638 | @unpublished{Spraul01 |
@@ -624,10 +643,10 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" | |||
624 | ,note="Available: | 643 | ,note="Available: |
625 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2} | 644 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=100264675012867&w=2} |
626 | [Viewed June 23, 2004]" | 645 | [Viewed June 23, 2004]" |
627 | ,annotation=" | 646 | ,annotation={ |
628 | Suggested burying memory barriers in Linux's list-manipulation | 647 | Suggested burying memory barriers in Linux's list-manipulation |
629 | primitives. | 648 | primitives. |
630 | " | 649 | } |
631 | } | 650 | } |
632 | 651 | ||
633 | @unpublished{LinusTorvalds2001a | 652 | @unpublished{LinusTorvalds2001a |
@@ -638,6 +657,8 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" | |||
638 | ,note="Available: | 657 | ,note="Available: |
639 | \url{http://lkml.org/lkml/2001/10/13/105} | 658 | \url{http://lkml.org/lkml/2001/10/13/105} |
640 | [Viewed August 21, 2004]" | 659 | [Viewed August 21, 2004]" |
660 | ,annotation={ | ||
661 | } | ||
641 | } | 662 | } |
642 | 663 | ||
643 | @unpublished{Blanchard02a | 664 | @unpublished{Blanchard02a |
@@ -657,10 +678,10 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" | |||
657 | ,Month="June" | 678 | ,Month="June" |
658 | ,Year="2002" | 679 | ,Year="2002" |
659 | ,pages="289-300" | 680 | ,pages="289-300" |
660 | ,annotation=" | 681 | ,annotation={ |
661 | Measured scalability of Linux 2.4 kernel's directory-entry cache | 682 | Measured scalability of Linux 2.4 kernel's directory-entry cache |
662 | (dcache), and measured some scalability enhancements. | 683 | (dcache), and measured some scalability enhancements. |
663 | " | 684 | } |
664 | } | 685 | } |
665 | 686 | ||
666 | @Conference{McKenney02a | 687 | @Conference{McKenney02a |
@@ -674,10 +695,10 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
674 | ,note="Available: | 695 | ,note="Available: |
675 | \url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz} | 696 | \url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz} |
676 | [Viewed June 23, 2004]" | 697 | [Viewed June 23, 2004]" |
677 | ,annotation=" | 698 | ,annotation={ |
678 | Presented and compared a number of RCU implementations for the | 699 | Presented and compared a number of RCU implementations for the |
679 | Linux kernel. | 700 | Linux kernel. |
680 | " | 701 | } |
681 | } | 702 | } |
682 | 703 | ||
683 | @unpublished{Sarma02a | 704 | @unpublished{Sarma02a |
@@ -688,9 +709,9 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
688 | ,note="Available: | 709 | ,note="Available: |
689 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=102645767914212&w=2} | 710 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=102645767914212&w=2} |
690 | [Viewed June 23, 2004]" | 711 | [Viewed June 23, 2004]" |
691 | ,annotation=" | 712 | ,annotation={ |
692 | Compare fastwalk and RCU for dcache. RCU won. | 713 | Compare fastwalk and RCU for dcache. RCU won. |
693 | " | 714 | } |
694 | } | 715 | } |
695 | 716 | ||
696 | @unpublished{Barbieri02 | 717 | @unpublished{Barbieri02 |
@@ -701,9 +722,9 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
701 | ,note="Available: | 722 | ,note="Available: |
702 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103082050621241&w=2} | 723 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103082050621241&w=2} |
703 | [Viewed: June 23, 2004]" | 724 | [Viewed: June 23, 2004]" |
704 | ,annotation=" | 725 | ,annotation={ |
705 | Suggested RCU for vfs\_shared\_cred. | 726 | Suggested RCU for vfs\_shared\_cred. |
706 | " | 727 | } |
707 | } | 728 | } |
708 | 729 | ||
709 | @unpublished{Dickins02a | 730 | @unpublished{Dickins02a |
@@ -722,10 +743,10 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
722 | ,note="Available: | 743 | ,note="Available: |
723 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103462075416638&w=2} | 744 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=103462075416638&w=2} |
724 | [Viewed June 23, 2004]" | 745 | [Viewed June 23, 2004]" |
725 | ,annotation=" | 746 | ,annotation={ |
726 | Performance of dcache RCU on kernbench for 16x NUMA-Q and 1x, | 747 | Performance of dcache RCU on kernbench for 16x NUMA-Q and 1x, |
727 | 2x, and 4x systems. RCU does no harm, and helps on 16x. | 748 | 2x, and 4x systems. RCU does no harm, and helps on 16x. |
728 | " | 749 | } |
729 | } | 750 | } |
730 | 751 | ||
731 | @unpublished{LinusTorvalds2003a | 752 | @unpublished{LinusTorvalds2003a |
@@ -736,14 +757,14 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" | |||
736 | ,note="Available: | 757 | ,note="Available: |
737 | \url{http://lkml.org/lkml/2003/3/9/205} | 758 | \url{http://lkml.org/lkml/2003/3/9/205} |
738 | [Viewed March 13, 2006]" | 759 | [Viewed March 13, 2006]" |
739 | ,annotation=" | 760 | ,annotation={ |
740 | Linus suggests replacing brlock with RCU and/or seqlocks: | 761 | Linus suggests replacing brlock with RCU and/or seqlocks: |
741 | . | 762 | . |
742 | 'It's entirely possible that the current user could be replaced | 763 | 'It's entirely possible that the current user could be replaced |
743 | by RCU and/or seqlocks, and we could get rid of brlocks entirely.' | 764 | by RCU and/or seqlocks, and we could get rid of brlocks entirely.' |
744 | . | 765 | . |
745 | Steve Hemminger responds by replacing them with RCU. | 766 | Steve Hemminger responds by replacing them with RCU. |
746 | " | 767 | } |
747 | } | 768 | } |
748 | 769 | ||
749 | @article{Appavoo03a | 770 | @article{Appavoo03a |
@@ -758,9 +779,9 @@ B. Rosenburg and M. Stumm and J. Xenidis" | |||
758 | ,volume="42" | 779 | ,volume="42" |
759 | ,number="1" | 780 | ,number="1" |
760 | ,pages="60-76" | 781 | ,pages="60-76" |
761 | ,annotation=" | 782 | ,annotation={ |
762 | Use of RCU to enable hot-swapping for autonomic behavior in K42. | 783 | Use of RCU to enable hot-swapping for autonomic behavior in K42. |
763 | " | 784 | } |
764 | } | 785 | } |
765 | 786 | ||
766 | @unpublished{Seigh03 | 787 | @unpublished{Seigh03 |
@@ -769,9 +790,9 @@ B. Rosenburg and M. Stumm and J. Xenidis" | |||
769 | ,Year="2003" | 790 | ,Year="2003" |
770 | ,Month="March" | 791 | ,Month="March" |
771 | ,note="email correspondence" | 792 | ,note="email correspondence" |
772 | ,annotation=" | 793 | ,annotation={ |
773 | Described the relationship of the VM/XA passive serialization to RCU. | 794 | Described the relationship of the VM/XA passive serialization to RCU. |
774 | " | 795 | } |
775 | } | 796 | } |
776 | 797 | ||
777 | @Conference{Arcangeli03 | 798 | @Conference{Arcangeli03 |
@@ -785,14 +806,12 @@ Dipankar Sarma" | |||
785 | ,year="2003" | 806 | ,year="2003" |
786 | ,month="June" | 807 | ,month="June" |
787 | ,pages="297-310" | 808 | ,pages="297-310" |
788 | ,note="Available: | 809 | ,annotation={ |
789 | \url{http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf} | ||
790 | [Viewed November 21, 2007]" | ||
791 | ,annotation=" | ||
792 | Compared updated RCU implementations for the Linux kernel, and | 810 | Compared updated RCU implementations for the Linux kernel, and |
793 | described System V IPC use of RCU, including order-of-magnitude | 811 | described System V IPC use of RCU, including order-of-magnitude |
794 | performance improvements. | 812 | performance improvements. |
795 | " | 813 | http://www.rdrop.com/users/paulmck/RCU/rcu.FREENIX.2003.06.14.pdf |
814 | } | ||
796 | } | 815 | } |
797 | 816 | ||
798 | @Conference{Soules03a | 817 | @Conference{Soules03a |
@@ -820,10 +839,10 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
820 | ,note="Available: | 839 | ,note="Available: |
821 | \url{http://www.linuxjournal.com/article/6993} | 840 | \url{http://www.linuxjournal.com/article/6993} |
822 | [Viewed November 14, 2007]" | 841 | [Viewed November 14, 2007]" |
823 | ,annotation=" | 842 | ,annotation={ |
824 | Reader-friendly intro to RCU, with the infamous old-man-and-brat | 843 | Reader-friendly intro to RCU, with the infamous old-man-and-brat |
825 | cartoon. | 844 | cartoon. |
826 | " | 845 | } |
827 | } | 846 | } |
828 | 847 | ||
829 | @unpublished{Sarma03a | 848 | @unpublished{Sarma03a |
@@ -832,7 +851,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
832 | ,month="December" | 851 | ,month="December" |
833 | ,year="2003" | 852 | ,year="2003" |
834 | ,note="Message ID: 20031222180114.GA2248@in.ibm.com" | 853 | ,note="Message ID: 20031222180114.GA2248@in.ibm.com" |
835 | ,annotation="dipankar/ct.2004.03.27/RCUll.2003.12.22.patch" | 854 | ,annotation={ |
855 | dipankar/ct.2004.03.27/RCUll.2003.12.22.patch | ||
856 | } | ||
836 | } | 857 | } |
837 | 858 | ||
838 | @techreport{Friedberg03a | 859 | @techreport{Friedberg03a |
@@ -844,11 +865,11 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
844 | ,number="US Patent 6,662,184" | 865 | ,number="US Patent 6,662,184" |
845 | ,month="December" | 866 | ,month="December" |
846 | ,pages="112" | 867 | ,pages="112" |
847 | ,annotation=" | 868 | ,annotation={ |
848 | Applies RCU to a wildcard-search Patricia tree in order to permit | 869 | Applies RCU to a wildcard-search Patricia tree in order to permit |
849 | synchronization-free lookup. RCU is used to retain removed nodes | 870 | synchronization-free lookup. RCU is used to retain removed nodes |
850 | for a grace period before freeing them. | 871 | for a grace period before freeing them. |
851 | " | 872 | } |
852 | } | 873 | } |
853 | 874 | ||
854 | @article{McKenney04a | 875 | @article{McKenney04a |
@@ -860,12 +881,11 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
860 | ,volume="1" | 881 | ,volume="1" |
861 | ,number="118" | 882 | ,number="118" |
862 | ,pages="38-46" | 883 | ,pages="38-46" |
863 | ,note="Available: | 884 | ,annotation={ |
864 | \url{http://www.linuxjournal.com/node/7124} | ||
865 | [Viewed December 26, 2010]" | ||
866 | ,annotation=" | ||
867 | Reader friendly intro to dcache and RCU. | 885 | Reader friendly intro to dcache and RCU. |
868 | " | 886 | http://www.linuxjournal.com/node/7124 |
887 | [Viewed December 26, 2010] | ||
888 | } | ||
869 | } | 889 | } |
870 | 890 | ||
871 | @Conference{McKenney04b | 891 | @Conference{McKenney04b |
@@ -879,10 +899,10 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
879 | \url{http://www.linux.org.au/conf/2004/abstracts.html#90} | 899 | \url{http://www.linux.org.au/conf/2004/abstracts.html#90} |
880 | \url{http://www.rdrop.com/users/paulmck/RCU/lockperf.2004.01.17a.pdf} | 900 | \url{http://www.rdrop.com/users/paulmck/RCU/lockperf.2004.01.17a.pdf} |
881 | [Viewed June 23, 2004]" | 901 | [Viewed June 23, 2004]" |
882 | ,annotation=" | 902 | ,annotation={ |
883 | Compares performance of RCU to that of other locking primitives | 903 | Compares performance of RCU to that of other locking primitives |
884 | over a number of CPUs (x86, Opteron, Itanium, and PPC). | 904 | over a number of CPUs (x86, Opteron, Itanium, and PPC). |
885 | " | 905 | } |
886 | } | 906 | } |
887 | 907 | ||
888 | @unpublished{Sarma04a | 908 | @unpublished{Sarma04a |
@@ -891,7 +911,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
891 | ,month="March" | 911 | ,month="March" |
892 | ,year="2004" | 912 | ,year="2004" |
893 | ,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108003746402892&w=2}" | 913 | ,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108003746402892&w=2}" |
894 | ,annotation="Head of thread: dipankar/2004.03.23/rcu-low-lat.1.patch" | 914 | ,annotation={ |
915 | Head of thread: dipankar/2004.03.23/rcu-low-lat.1.patch | ||
916 | } | ||
895 | } | 917 | } |
896 | 918 | ||
897 | @unpublished{Sarma04b | 919 | @unpublished{Sarma04b |
@@ -900,7 +922,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
900 | ,month="March" | 922 | ,month="March" |
901 | ,year="2004" | 923 | ,year="2004" |
902 | ,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108016474829546&w=2}" | 924 | ,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108016474829546&w=2}" |
903 | ,annotation="dipankar/rcuth.2004.03.24/rcu-throttle.patch" | 925 | ,annotation={ |
926 | dipankar/rcuth.2004.03.24/rcu-throttle.patch | ||
927 | } | ||
904 | } | 928 | } |
905 | 929 | ||
906 | @unpublished{Spraul04a | 930 | @unpublished{Spraul04a |
@@ -911,9 +935,9 @@ Michal Ostrowski and Bryan Rosenburg and Jimi Xenidis" | |||
911 | ,note="Available: | 935 | ,note="Available: |
912 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108546407726602&w=2} | 936 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=108546407726602&w=2} |
913 | [Viewed June 23, 2004]" | 937 | [Viewed June 23, 2004]" |
914 | ,annotation=" | 938 | ,annotation={ |
915 | Hierarchical-bitmap patch for RCU infrastructure. | 939 | Hierarchical-bitmap patch for RCU infrastructure. |
916 | " | 940 | } |
917 | } | 941 | } |
918 | 942 | ||
919 | @unpublished{Steiner04a | 943 | @unpublished{Steiner04a |
@@ -950,10 +974,12 @@ Realtime Applications" | |||
950 | ,year="2004" | 974 | ,year="2004" |
951 | ,month="June" | 975 | ,month="June" |
952 | ,pages="182-191" | 976 | ,pages="182-191" |
953 | ,annotation=" | 977 | ,annotation={ |
954 | Describes and compares a number of modifications to the Linux RCU | 978 | Describes and compares a number of modifications to the Linux RCU |
955 | implementation that make it friendly to realtime applications. | 979 | implementation that make it friendly to realtime applications. |
956 | " | 980 | https://www.usenix.org/conference/2004-usenix-annual-technical-conference/making-rcu-safe-deep-sub-millisecond-response |
981 | [Viewed July 26, 2012] | ||
982 | } | ||
957 | } | 983 | } |
958 | 984 | ||
959 | @phdthesis{PaulEdwardMcKenneyPhD | 985 | @phdthesis{PaulEdwardMcKenneyPhD |
@@ -964,14 +990,13 @@ in Operating System Kernels" | |||
964 | ,school="OGI School of Science and Engineering at | 990 | ,school="OGI School of Science and Engineering at |
965 | Oregon Health and Sciences University" | 991 | Oregon Health and Sciences University" |
966 | ,year="2004" | 992 | ,year="2004" |
967 | ,note="Available: | 993 | ,annotation={ |
968 | \url{http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf} | ||
969 | [Viewed October 15, 2004]" | ||
970 | ,annotation=" | ||
971 | Describes RCU implementations and presents design patterns | 994 | Describes RCU implementations and presents design patterns |
972 | corresponding to common uses of RCU in several operating-system | 995 | corresponding to common uses of RCU in several operating-system |
973 | kernels. | 996 | kernels. |
974 | " | 997 | http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf |
998 | [Viewed October 15, 2004] | ||
999 | } | ||
975 | } | 1000 | } |
976 | 1001 | ||
977 | @unpublished{PaulEMcKenney2004rcu:dereference | 1002 | @unpublished{PaulEMcKenney2004rcu:dereference |
@@ -982,9 +1007,9 @@ Oregon Health and Sciences University" | |||
982 | ,note="Available: | 1007 | ,note="Available: |
983 | \url{http://lkml.org/lkml/2004/8/6/237} | 1008 | \url{http://lkml.org/lkml/2004/8/6/237} |
984 | [Viewed June 8, 2010]" | 1009 | [Viewed June 8, 2010]" |
985 | ,annotation=" | 1010 | ,annotation={ |
986 | Introduce rcu_dereference(). | 1011 | Introduce rcu_dereference(). |
987 | " | 1012 | } |
988 | } | 1013 | } |
989 | 1014 | ||
990 | @unpublished{JimHouston04a | 1015 | @unpublished{JimHouston04a |
@@ -995,11 +1020,11 @@ Oregon Health and Sciences University" | |||
995 | ,note="Available: | 1020 | ,note="Available: |
996 | \url{http://lkml.org/lkml/2004/8/30/87} | 1021 | \url{http://lkml.org/lkml/2004/8/30/87} |
997 | [Viewed February 17, 2005]" | 1022 | [Viewed February 17, 2005]" |
998 | ,annotation=" | 1023 | ,annotation={ |
999 | Uses active code in rcu_read_lock() and rcu_read_unlock() to | 1024 | Uses active code in rcu_read_lock() and rcu_read_unlock() to |
1000 | make RCU happen, allowing RCU to function on CPUs that do not | 1025 | make RCU happen, allowing RCU to function on CPUs that do not |
1001 | receive a scheduling-clock interrupt. | 1026 | receive a scheduling-clock interrupt. |
1002 | " | 1027 | } |
1003 | } | 1028 | } |
1004 | 1029 | ||
1005 | @unpublished{TomHart04a | 1030 | @unpublished{TomHart04a |
@@ -1010,9 +1035,9 @@ Oregon Health and Sciences University" | |||
1010 | ,note="Available: | 1035 | ,note="Available: |
1011 | \url{http://www.cs.toronto.edu/~tomhart/masters_thesis.html} | 1036 | \url{http://www.cs.toronto.edu/~tomhart/masters_thesis.html} |
1012 | [Viewed October 15, 2004]" | 1037 | [Viewed October 15, 2004]" |
1013 | ,annotation=" | 1038 | ,annotation={ |
1014 | Proposes comparing RCU to lock-free methods for the Linux kernel. | 1039 | Proposes comparing RCU to lock-free methods for the Linux kernel. |
1015 | " | 1040 | } |
1016 | } | 1041 | } |
1017 | 1042 | ||
1018 | @unpublished{Vaddagiri04a | 1043 | @unpublished{Vaddagiri04a |
@@ -1023,9 +1048,9 @@ Oregon Health and Sciences University" | |||
1023 | ,note="Available: | 1048 | ,note="Available: |
1024 | \url{http://marc.theaimsgroup.com/?t=109395731700004&r=1&w=2} | 1049 | \url{http://marc.theaimsgroup.com/?t=109395731700004&r=1&w=2} |
1025 | [Viewed October 18, 2004]" | 1050 | [Viewed October 18, 2004]" |
1026 | ,annotation=" | 1051 | ,annotation={ |
1027 | Srivatsa's RCU patch for tcp_ehash lookup. | 1052 | Srivatsa's RCU patch for tcp_ehash lookup. |
1028 | " | 1053 | } |
1029 | } | 1054 | } |
1030 | 1055 | ||
1031 | @unpublished{Thirumalai04a | 1056 | @unpublished{Thirumalai04a |
@@ -1036,9 +1061,9 @@ Oregon Health and Sciences University" | |||
1036 | ,note="Available: | 1061 | ,note="Available: |
1037 | \url{http://marc.theaimsgroup.com/?t=109144217400003&r=1&w=2} | 1062 | \url{http://marc.theaimsgroup.com/?t=109144217400003&r=1&w=2} |
1038 | [Viewed October 18, 2004]" | 1063 | [Viewed October 18, 2004]" |
1039 | ,annotation=" | 1064 | ,annotation={ |
1040 | Ravikiran's lockfree FD patch. | 1065 | Ravikiran's lockfree FD patch. |
1041 | " | 1066 | } |
1042 | } | 1067 | } |
1043 | 1068 | ||
1044 | @unpublished{Thirumalai04b | 1069 | @unpublished{Thirumalai04b |
@@ -1049,9 +1074,9 @@ Oregon Health and Sciences University" | |||
1049 | ,note="Available: | 1074 | ,note="Available: |
1050 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=109152521410459&w=2} | 1075 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=109152521410459&w=2} |
1051 | [Viewed October 18, 2004]" | 1076 | [Viewed October 18, 2004]" |
1052 | ,annotation=" | 1077 | ,annotation={ |
1053 | Ravikiran's lockfree FD patch. | 1078 | Ravikiran's lockfree FD patch. |
1054 | " | 1079 | } |
1055 | } | 1080 | } |
1056 | 1081 | ||
1057 | @unpublished{PaulEMcKenney2004rcu:assign:pointer | 1082 | @unpublished{PaulEMcKenney2004rcu:assign:pointer |
@@ -1062,9 +1087,9 @@ Oregon Health and Sciences University" | |||
1062 | ,note="Available: | 1087 | ,note="Available: |
1063 | \url{http://lkml.org/lkml/2004/10/23/241} | 1088 | \url{http://lkml.org/lkml/2004/10/23/241} |
1064 | [Viewed June 8, 2010]" | 1089 | [Viewed June 8, 2010]" |
1065 | ,annotation=" | 1090 | ,annotation={ |
1066 | Introduce rcu_assign_pointer(). | 1091 | Introduce rcu_assign_pointer(). |
1067 | " | 1092 | } |
1068 | } | 1093 | } |
1069 | 1094 | ||
1070 | @unpublished{JamesMorris04a | 1095 | @unpublished{JamesMorris04a |
@@ -1073,12 +1098,12 @@ Oregon Health and Sciences University" | |||
1073 | ,day="15" | 1098 | ,day="15" |
1074 | ,month="November" | 1099 | ,month="November" |
1075 | ,year="2004" | 1100 | ,year="2004" |
1076 | ,note="Available: | 1101 | ,note="\url{http://marc.theaimsgroup.com/?l=linux-kernel&m=110054979416004&w=2}" |
1077 | \url{http://marc.theaimsgroup.com/?l=linux-kernel&m=110054979416004&w=2} | 1102 | ,annotation={ |
1078 | [Viewed December 10, 2004]" | ||
1079 | ,annotation=" | ||
1080 | James Morris posts Kaigai Kohei's patch to LKML. | 1103 | James Morris posts Kaigai Kohei's patch to LKML. |
1081 | " | 1104 | [Viewed December 10, 2004] |
1105 | Kaigai's patch is at https://lkml.org/lkml/2004/9/27/52 | ||
1106 | } | ||
1082 | } | 1107 | } |
1083 | 1108 | ||
1084 | @unpublished{JamesMorris04b | 1109 | @unpublished{JamesMorris04b |
@@ -1089,9 +1114,9 @@ Oregon Health and Sciences University" | |||
1089 | ,note="Available: | 1114 | ,note="Available: |
1090 | \url{http://www.livejournal.com/users/james_morris/2153.html} | 1115 | \url{http://www.livejournal.com/users/james_morris/2153.html} |
1091 | [Viewed December 10, 2004]" | 1116 | [Viewed December 10, 2004]" |
1092 | ,annotation=" | 1117 | ,annotation={ |
1093 | RCU helps SELinux performance. ;-) Made LWN. | 1118 | RCU helps SELinux performance. ;-) Made LWN. |
1094 | " | 1119 | } |
1095 | } | 1120 | } |
1096 | 1121 | ||
1097 | @unpublished{PaulMcKenney2005RCUSemantics | 1122 | @unpublished{PaulMcKenney2005RCUSemantics |
@@ -1103,9 +1128,9 @@ Oregon Health and Sciences University" | |||
1103 | ,note="Available: | 1128 | ,note="Available: |
1104 | \url{http://www.rdrop.com/users/paulmck/RCU/rcu-semantics.2005.01.30a.pdf} | 1129 | \url{http://www.rdrop.com/users/paulmck/RCU/rcu-semantics.2005.01.30a.pdf} |
1105 | [Viewed December 6, 2009]" | 1130 | [Viewed December 6, 2009]" |
1106 | ,annotation=" | 1131 | ,annotation={ |
1107 | Early derivation of RCU semantics. | 1132 | Early derivation of RCU semantics. |
1108 | " | 1133 | } |
1109 | } | 1134 | } |
1110 | 1135 | ||
1111 | @unpublished{PaulMcKenney2005e | 1136 | @unpublished{PaulMcKenney2005e |
@@ -1117,10 +1142,10 @@ Oregon Health and Sciences University" | |||
1117 | ,note="Available: | 1142 | ,note="Available: |
1118 | \url{http://lkml.org/lkml/2005/3/17/199} | 1143 | \url{http://lkml.org/lkml/2005/3/17/199} |
1119 | [Viewed September 5, 2005]" | 1144 | [Viewed September 5, 2005]" |
1120 | ,annotation=" | 1145 | ,annotation={ |
1121 | First posting showing how RCU can be safely adapted for | 1146 | First posting showing how RCU can be safely adapted for |
1122 | preemptable RCU read side critical sections. | 1147 | preemptable RCU read side critical sections. |
1123 | " | 1148 | } |
1124 | } | 1149 | } |
1125 | 1150 | ||
1126 | @unpublished{EsbenNeilsen2005a | 1151 | @unpublished{EsbenNeilsen2005a |
@@ -1132,12 +1157,12 @@ Oregon Health and Sciences University" | |||
1132 | ,note="Available: | 1157 | ,note="Available: |
1133 | \url{http://lkml.org/lkml/2005/3/18/122} | 1158 | \url{http://lkml.org/lkml/2005/3/18/122} |
1134 | [Viewed March 30, 2006]" | 1159 | [Viewed March 30, 2006]" |
1135 | ,annotation=" | 1160 | ,annotation={ |
1136 | Esben Neilsen suggests read-side suppression of grace-period | 1161 | Esben Neilsen suggests read-side suppression of grace-period |
1137 | processing for crude-but-workable realtime RCU. The downside | 1162 | processing for crude-but-workable realtime RCU. The downside |
1138 | is indefinite grace periods...But this is OK for experimentation | 1163 | is indefinite grace periods... But this is OK for experimentation |
1139 | and testing. | 1164 | and testing. |
1140 | " | 1165 | } |
1141 | } | 1166 | } |
1142 | 1167 | ||
1143 | @unpublished{TomHart05a | 1168 | @unpublished{TomHart05a |
@@ -1149,10 +1174,10 @@ Data Structures" | |||
1149 | ,note="Available: | 1174 | ,note="Available: |
1150 | \url{ftp://ftp.cs.toronto.edu/csrg-technical-reports/515/} | 1175 | \url{ftp://ftp.cs.toronto.edu/csrg-technical-reports/515/} |
1151 | [Viewed March 4, 2005]" | 1176 | [Viewed March 4, 2005]" |
1152 | ,annotation=" | 1177 | ,annotation={ |
1153 | Comparison of RCU, QBSR, and EBSR. RCU wins for read-mostly | 1178 | Comparison of RCU, QBSR, and EBSR. RCU wins for read-mostly |
1154 | workloads. ;-) | 1179 | workloads. ;-) |
1155 | " | 1180 | } |
1156 | } | 1181 | } |
1157 | 1182 | ||
1158 | @unpublished{JonCorbet2005DeprecateSyncKernel | 1183 | @unpublished{JonCorbet2005DeprecateSyncKernel |
@@ -1164,10 +1189,10 @@ Data Structures" | |||
1164 | ,note="Available: | 1189 | ,note="Available: |
1165 | \url{http://lwn.net/Articles/134484/} | 1190 | \url{http://lwn.net/Articles/134484/} |
1166 | [Viewed May 3, 2005]" | 1191 | [Viewed May 3, 2005]" |
1167 | ,annotation=" | 1192 | ,annotation={ |
1168 | Jon Corbet describes deprecation of synchronize_kernel() | 1193 | Jon Corbet describes deprecation of synchronize_kernel() |
1169 | in favor of synchronize_rcu() and synchronize_sched(). | 1194 | in favor of synchronize_rcu() and synchronize_sched(). |
1170 | " | 1195 | } |
1171 | } | 1196 | } |
1172 | 1197 | ||
1173 | @unpublished{PaulMcKenney05a | 1198 | @unpublished{PaulMcKenney05a |
@@ -1178,10 +1203,10 @@ Data Structures" | |||
1178 | ,note="Available: | 1203 | ,note="Available: |
1179 | \url{http://lkml.org/lkml/2005/5/9/185} | 1204 | \url{http://lkml.org/lkml/2005/5/9/185} |
1180 | [Viewed May 13, 2005]" | 1205 | [Viewed May 13, 2005]" |
1181 | ,annotation=" | 1206 | ,annotation={ |
1182 | First publication of working lock-based deferred free patches | 1207 | First publication of working lock-based deferred free patches |
1183 | for the CONFIG_PREEMPT_RT environment. | 1208 | for the CONFIG_PREEMPT_RT environment. |
1184 | " | 1209 | } |
1185 | } | 1210 | } |
1186 | 1211 | ||
1187 | @conference{PaulMcKenney05b | 1212 | @conference{PaulMcKenney05b |
@@ -1194,10 +1219,10 @@ Data Structures" | |||
1194 | ,note="Available: | 1219 | ,note="Available: |
1195 | \url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf} | 1220 | \url{http://www.rdrop.com/users/paulmck/RCU/realtimeRCU.2005.04.23a.pdf} |
1196 | [Viewed May 13, 2005]" | 1221 | [Viewed May 13, 2005]" |
1197 | ,annotation=" | 1222 | ,annotation={ |
1198 | Realtime turns into making RCU yet more realtime friendly. | 1223 | Realtime turns into making RCU yet more realtime friendly. |
1199 | http://lca2005.linux.org.au/Papers/Paul%20McKenney/Towards%20Hard%20Realtime%20Response%20from%20the%20Linux%20Kernel/LKS.2005.04.22a.pdf | 1224 | http://lca2005.linux.org.au/Papers/Paul%20McKenney/Towards%20Hard%20Realtime%20Response%20from%20the%20Linux%20Kernel/LKS.2005.04.22a.pdf |
1200 | " | 1225 | } |
1201 | } | 1226 | } |
1202 | 1227 | ||
1203 | @unpublished{PaulEMcKenneyHomePage | 1228 | @unpublished{PaulEMcKenneyHomePage |
@@ -1208,9 +1233,9 @@ Data Structures" | |||
1208 | ,note="Available: | 1233 | ,note="Available: |
1209 | \url{http://www.rdrop.com/users/paulmck/} | 1234 | \url{http://www.rdrop.com/users/paulmck/} |
1210 | [Viewed May 25, 2005]" | 1235 | [Viewed May 25, 2005]" |
1211 | ,annotation=" | 1236 | ,annotation={ |
1212 | Paul McKenney's home page. | 1237 | Paul McKenney's home page. |
1213 | " | 1238 | } |
1214 | } | 1239 | } |
1215 | 1240 | ||
1216 | @unpublished{PaulEMcKenneyRCUPage | 1241 | @unpublished{PaulEMcKenneyRCUPage |
@@ -1221,9 +1246,9 @@ Data Structures" | |||
1221 | ,note="Available: | 1246 | ,note="Available: |
1222 | \url{http://www.rdrop.com/users/paulmck/RCU} | 1247 | \url{http://www.rdrop.com/users/paulmck/RCU} |
1223 | [Viewed May 25, 2005]" | 1248 | [Viewed May 25, 2005]" |
1224 | ,annotation=" | 1249 | ,annotation={ |
1225 | Paul McKenney's RCU page. | 1250 | Paul McKenney's RCU page. |
1226 | " | 1251 | } |
1227 | } | 1252 | } |
1228 | 1253 | ||
1229 | @unpublished{JosephSeigh2005a | 1254 | @unpublished{JosephSeigh2005a |
@@ -1232,10 +1257,10 @@ Data Structures" | |||
1232 | ,month="July" | 1257 | ,month="July" |
1233 | ,year="2005" | 1258 | ,year="2005" |
1234 | ,note="Personal communication" | 1259 | ,note="Personal communication" |
1235 | ,annotation=" | 1260 | ,annotation={ |
1236 | Joe Seigh announcing his atomic-ptr-plus project. | 1261 | Joe Seigh announcing his atomic-ptr-plus project. |
1237 | http://sourceforge.net/projects/atomic-ptr-plus/ | 1262 | http://sourceforge.net/projects/atomic-ptr-plus/ |
1238 | " | 1263 | } |
1239 | } | 1264 | } |
1240 | 1265 | ||
1241 | @unpublished{JosephSeigh2005b | 1266 | @unpublished{JosephSeigh2005b |
@@ -1247,9 +1272,9 @@ Data Structures" | |||
1247 | ,note="Available: | 1272 | ,note="Available: |
1248 | \url{http://sourceforge.net/projects/atomic-ptr-plus/} | 1273 | \url{http://sourceforge.net/projects/atomic-ptr-plus/} |
1249 | [Viewed August 8, 2005]" | 1274 | [Viewed August 8, 2005]" |
1250 | ,annotation=" | 1275 | ,annotation={ |
1251 | Joe Seigh's atomic-ptr-plus project. | 1276 | Joe Seigh's atomic-ptr-plus project. |
1252 | " | 1277 | } |
1253 | } | 1278 | } |
1254 | 1279 | ||
1255 | @unpublished{PaulMcKenney2005c | 1280 | @unpublished{PaulMcKenney2005c |
@@ -1261,9 +1286,9 @@ Data Structures" | |||
1261 | ,note="Available: | 1286 | ,note="Available: |
1262 | \url{http://lkml.org/lkml/2005/8/1/155} | 1287 | \url{http://lkml.org/lkml/2005/8/1/155} |
1263 | [Viewed March 14, 2006]" | 1288 | [Viewed March 14, 2006]" |
1264 | ,annotation=" | 1289 | ,annotation={ |
1265 | First operating counter-based realtime RCU patch posted to LKML. | 1290 | First operating counter-based realtime RCU patch posted to LKML. |
1266 | " | 1291 | } |
1267 | } | 1292 | } |
1268 | 1293 | ||
1269 | @unpublished{PaulMcKenney2005d | 1294 | @unpublished{PaulMcKenney2005d |
@@ -1275,11 +1300,11 @@ Data Structures" | |||
1275 | ,note="Available: | 1300 | ,note="Available: |
1276 | \url{http://lkml.org/lkml/2005/8/8/108} | 1301 | \url{http://lkml.org/lkml/2005/8/8/108} |
1277 | [Viewed March 14, 2006]" | 1302 | [Viewed March 14, 2006]" |
1278 | ,annotation=" | 1303 | ,annotation={ |
1279 | First operating counter-based realtime RCU patch posted to LKML, | 1304 | First operating counter-based realtime RCU patch posted to LKML, |
1280 | but fixed so that various unusual combinations of configuration | 1305 | but fixed so that various unusual combinations of configuration |
1281 | parameters all function properly. | 1306 | parameters all function properly. |
1282 | " | 1307 | } |
1283 | } | 1308 | } |
1284 | 1309 | ||
1285 | @unpublished{PaulMcKenney2005rcutorture | 1310 | @unpublished{PaulMcKenney2005rcutorture |
@@ -1291,9 +1316,25 @@ Data Structures" | |||
1291 | ,note="Available: | 1316 | ,note="Available: |
1292 | \url{http://lkml.org/lkml/2005/10/1/70} | 1317 | \url{http://lkml.org/lkml/2005/10/1/70} |
1293 | [Viewed March 14, 2006]" | 1318 | [Viewed March 14, 2006]" |
1294 | ,annotation=" | 1319 | ,annotation={ |
1295 | First rcutorture patch. | 1320 | First rcutorture patch. |
1296 | " | 1321 | } |
1322 | } | ||
1323 | |||
1324 | @unpublished{DavidSMiller2006HashedLocking | ||
1325 | ,Author="David S. Miller" | ||
1326 | ,Title="Re: [{PATCH}, {RFC}] {RCU} : {OOM} avoidance and lower latency" | ||
1327 | ,month="January" | ||
1328 | ,day="6" | ||
1329 | ,year="2006" | ||
1330 | ,note="Available: | ||
1331 | \url{https://lkml.org/lkml/2006/1/7/22} | ||
1332 | [Viewed February 29, 2012]" | ||
1333 | ,annotation={ | ||
1334 | David Miller's view on hashed arrays of locks: used to really | ||
1335 | like it, but time he saw an opportunity for this technique, | ||
1336 | something else always proved superior. Partitioning or RCU. ;-) | ||
1337 | } | ||
1297 | } | 1338 | } |
1298 | 1339 | ||
1299 | @conference{ThomasEHart2006a | 1340 | @conference{ThomasEHart2006a |
@@ -1309,10 +1350,10 @@ Distributed Processing Symposium" | |||
1309 | ,note="Available: | 1350 | ,note="Available: |
1310 | \url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf} | 1351 | \url{http://www.rdrop.com/users/paulmck/RCU/hart_ipdps06.pdf} |
1311 | [Viewed April 28, 2008]" | 1352 | [Viewed April 28, 2008]" |
1312 | ,annotation=" | 1353 | ,annotation={ |
1313 | Compares QSBR, HPBR, EBR, and lock-free reference counting. | 1354 | Compares QSBR, HPBR, EBR, and lock-free reference counting. |
1314 | http://www.cs.toronto.edu/~tomhart/perflab/ipdps06.tgz | 1355 | http://www.cs.toronto.edu/~tomhart/perflab/ipdps06.tgz |
1315 | " | 1356 | } |
1316 | } | 1357 | } |
1317 | 1358 | ||
1318 | @unpublished{NickPiggin2006radixtree | 1359 | @unpublished{NickPiggin2006radixtree |
@@ -1324,9 +1365,9 @@ Distributed Processing Symposium" | |||
1324 | ,note="Available: | 1365 | ,note="Available: |
1325 | \url{http://lkml.org/lkml/2006/6/20/238} | 1366 | \url{http://lkml.org/lkml/2006/6/20/238} |
1326 | [Viewed March 25, 2008]" | 1367 | [Viewed March 25, 2008]" |
1327 | ,annotation=" | 1368 | ,annotation={ |
1328 | RCU-protected radix tree. | 1369 | RCU-protected radix tree. |
1329 | " | 1370 | } |
1330 | } | 1371 | } |
1331 | 1372 | ||
1332 | @Conference{PaulEMcKenney2006b | 1373 | @Conference{PaulEMcKenney2006b |
@@ -1341,9 +1382,9 @@ Suparna Bhattacharya" | |||
1341 | \url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} | 1382 | \url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} |
1342 | \url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf} | 1383 | \url{http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf} |
1343 | [Viewed January 1, 2007]" | 1384 | [Viewed January 1, 2007]" |
1344 | ,annotation=" | 1385 | ,annotation={ |
1345 | Described how to improve the -rt implementation of realtime RCU. | 1386 | Described how to improve the -rt implementation of realtime RCU. |
1346 | " | 1387 | } |
1347 | } | 1388 | } |
1348 | 1389 | ||
1349 | @unpublished{WikipediaRCU | 1390 | @unpublished{WikipediaRCU |
@@ -1354,12 +1395,11 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen" | |||
1354 | ,month="July" | 1395 | ,month="July" |
1355 | ,day="8" | 1396 | ,day="8" |
1356 | ,year="2006" | 1397 | ,year="2006" |
1357 | ,note="Available: | 1398 | ,note="\url{http://en.wikipedia.org/wiki/Read-copy-update}" |
1358 | \url{http://en.wikipedia.org/wiki/Read-copy-update} | 1399 | ,annotation={ |
1359 | [Viewed August 21, 2006]" | ||
1360 | ,annotation=" | ||
1361 | Wikipedia RCU page as of July 8 2006. | 1400 | Wikipedia RCU page as of July 8 2006. |
1362 | " | 1401 | [Viewed August 21, 2006] |
1402 | } | ||
1363 | } | 1403 | } |
1364 | 1404 | ||
1365 | @Conference{NickPiggin2006LocklessPageCache | 1405 | @Conference{NickPiggin2006LocklessPageCache |
@@ -1372,9 +1412,9 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen" | |||
1372 | ,note="Available: | 1412 | ,note="Available: |
1373 | \url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} | 1413 | \url{http://www.linuxsymposium.org/2006/view_abstract.php?content_key=184} |
1374 | [Viewed January 11, 2009]" | 1414 | [Viewed January 11, 2009]" |
1375 | ,annotation=" | 1415 | ,annotation={ |
1376 | Uses RCU-protected radix tree for a lockless page cache. | 1416 | Uses RCU-protected radix tree for a lockless page cache. |
1377 | " | 1417 | } |
1378 | } | 1418 | } |
1379 | 1419 | ||
1380 | @unpublished{PaulEMcKenney2006c | 1420 | @unpublished{PaulEMcKenney2006c |
@@ -1388,9 +1428,9 @@ Canis Rufus and Zoicon5 and Anome and Hal Eisen" | |||
1388 | Revised: | 1428 | Revised: |
1389 | \url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf} | 1429 | \url{http://www.rdrop.com/users/paulmck/RCU/srcu.2007.01.14a.pdf} |
1390 | [Viewed August 21, 2006]" | 1430 | [Viewed August 21, 2006]" |
1391 | ,annotation=" | 1431 | ,annotation={ |
1392 | LWN article introducing SRCU. | 1432 | LWN article introducing SRCU. |
1393 | " | 1433 | } |
1394 | } | 1434 | } |
1395 | 1435 | ||
1396 | @unpublished{RobertOlsson2006a | 1436 | @unpublished{RobertOlsson2006a |
@@ -1399,12 +1439,11 @@ Revised: | |||
1399 | ,month="August" | 1439 | ,month="August" |
1400 | ,day="18" | 1440 | ,day="18" |
1401 | ,year="2006" | 1441 | ,year="2006" |
1402 | ,note="Available: | 1442 | ,note="\url{http://www.nada.kth.se/~snilsson/publications/TRASH/trash.pdf}" |
1403 | \url{http://www.nada.kth.se/~snilsson/publications/TRASH/trash.pdf} | 1443 | ,annotation={ |
1404 | [Viewed March 4, 2011]" | ||
1405 | ,annotation=" | ||
1406 | RCU-protected dynamic trie-hash combination. | 1444 | RCU-protected dynamic trie-hash combination. |
1407 | " | 1445 | [Viewed March 4, 2011] |
1446 | } | ||
1408 | } | 1447 | } |
1409 | 1448 | ||
1410 | @unpublished{ChristophHellwig2006RCU2SRCU | 1449 | @unpublished{ChristophHellwig2006RCU2SRCU |
@@ -1426,10 +1465,10 @@ Revised: | |||
1426 | ,note="Available: | 1465 | ,note="Available: |
1427 | \url{http://www.rdrop.com/users/paulmck/RCU/linuxusage.html} | 1466 | \url{http://www.rdrop.com/users/paulmck/RCU/linuxusage.html} |
1428 | [Viewed January 14, 2007]" | 1467 | [Viewed January 14, 2007]" |
1429 | ,annotation=" | 1468 | ,annotation={ |
1430 | Paul McKenney's RCU page showing graphs plotting Linux-kernel | 1469 | Paul McKenney's RCU page showing graphs plotting Linux-kernel |
1431 | usage of RCU. | 1470 | usage of RCU. |
1432 | " | 1471 | } |
1433 | } | 1472 | } |
1434 | 1473 | ||
1435 | @unpublished{PaulEMcKenneyRCUusageRawDataPage | 1474 | @unpublished{PaulEMcKenneyRCUusageRawDataPage |
@@ -1440,10 +1479,10 @@ Revised: | |||
1440 | ,note="Available: | 1479 | ,note="Available: |
1441 | \url{http://www.rdrop.com/users/paulmck/RCU/linuxusage/rculocktab.html} | 1480 | \url{http://www.rdrop.com/users/paulmck/RCU/linuxusage/rculocktab.html} |
1442 | [Viewed January 14, 2007]" | 1481 | [Viewed January 14, 2007]" |
1443 | ,annotation=" | 1482 | ,annotation={ |
1444 | Paul McKenney's RCU page showing Linux usage of RCU in tabular | 1483 | Paul McKenney's RCU page showing Linux usage of RCU in tabular |
1445 | form, with links to corresponding cscope databases. | 1484 | form, with links to corresponding cscope databases. |
1446 | " | 1485 | } |
1447 | } | 1486 | } |
1448 | 1487 | ||
1449 | @unpublished{GauthamShenoy2006RCUrwlock | 1488 | @unpublished{GauthamShenoy2006RCUrwlock |
@@ -1455,13 +1494,13 @@ Revised: | |||
1455 | ,note="Available: | 1494 | ,note="Available: |
1456 | \url{http://lkml.org/lkml/2006/10/26/73} | 1495 | \url{http://lkml.org/lkml/2006/10/26/73} |
1457 | [Viewed January 26, 2009]" | 1496 | [Viewed January 26, 2009]" |
1458 | ,annotation=" | 1497 | ,annotation={ |
1459 | RCU-based reader-writer lock that allows readers to proceed with | 1498 | RCU-based reader-writer lock that allows readers to proceed with |
1460 | no memory barriers or atomic instruction in absence of writers. | 1499 | no memory barriers or atomic instruction in absence of writers. |
1461 | If writer do show up, readers must of course wait as required by | 1500 | If writer do show up, readers must of course wait as required by |
1462 | the semantics of reader-writer locking. This is a recursive | 1501 | the semantics of reader-writer locking. This is a recursive |
1463 | lock. | 1502 | lock. |
1464 | " | 1503 | } |
1465 | } | 1504 | } |
1466 | 1505 | ||
1467 | @unpublished{JensAxboe2006SlowSRCU | 1506 | @unpublished{JensAxboe2006SlowSRCU |
@@ -1474,11 +1513,11 @@ Revised: | |||
1474 | ,note="Available: | 1513 | ,note="Available: |
1475 | \url{http://lkml.org/lkml/2006/11/17/56} | 1514 | \url{http://lkml.org/lkml/2006/11/17/56} |
1476 | [Viewed May 28, 2007]" | 1515 | [Viewed May 28, 2007]" |
1477 | ,annotation=" | 1516 | ,annotation={ |
1478 | SRCU's grace periods are too slow for Jens, even after a | 1517 | SRCU's grace periods are too slow for Jens, even after a |
1479 | factor-of-three speedup. | 1518 | factor-of-three speedup. |
1480 | Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359. | 1519 | Sped-up version of SRCU at http://lkml.org/lkml/2006/11/17/359. |
1481 | " | 1520 | } |
1482 | } | 1521 | } |
1483 | 1522 | ||
1484 | @unpublished{OlegNesterov2006QRCU | 1523 | @unpublished{OlegNesterov2006QRCU |
@@ -1491,10 +1530,10 @@ Revised: | |||
1491 | ,note="Available: | 1530 | ,note="Available: |
1492 | \url{http://lkml.org/lkml/2006/11/19/69} | 1531 | \url{http://lkml.org/lkml/2006/11/19/69} |
1493 | [Viewed May 28, 2007]" | 1532 | [Viewed May 28, 2007]" |
1494 | ,annotation=" | 1533 | ,annotation={ |
1495 | First cut of QRCU. Expanded/corrected versions followed. | 1534 | First cut of QRCU. Expanded/corrected versions followed. |
1496 | Used to be OlegNesterov2007QRCU, now time-corrected. | 1535 | Used to be OlegNesterov2007QRCU, now time-corrected. |
1497 | " | 1536 | } |
1498 | } | 1537 | } |
1499 | 1538 | ||
1500 | @unpublished{OlegNesterov2006aQRCU | 1539 | @unpublished{OlegNesterov2006aQRCU |
@@ -1506,10 +1545,10 @@ Revised: | |||
1506 | ,note="Available: | 1545 | ,note="Available: |
1507 | \url{http://lkml.org/lkml/2006/11/29/330} | 1546 | \url{http://lkml.org/lkml/2006/11/29/330} |
1508 | [Viewed November 26, 2008]" | 1547 | [Viewed November 26, 2008]" |
1509 | ,annotation=" | 1548 | ,annotation={ |
1510 | Expanded/corrected version of QRCU. | 1549 | Expanded/corrected version of QRCU. |
1511 | Used to be OlegNesterov2007aQRCU, now time-corrected. | 1550 | Used to be OlegNesterov2007aQRCU, now time-corrected. |
1512 | " | 1551 | } |
1513 | } | 1552 | } |
1514 | 1553 | ||
1515 | @unpublished{EvgeniyPolyakov2006RCUslowdown | 1554 | @unpublished{EvgeniyPolyakov2006RCUslowdown |
@@ -1521,10 +1560,10 @@ Revised: | |||
1521 | ,note="Available: | 1560 | ,note="Available: |
1522 | \url{http://www.ioremap.net/node/41} | 1561 | \url{http://www.ioremap.net/node/41} |
1523 | [Viewed October 28, 2008]" | 1562 | [Viewed October 28, 2008]" |
1524 | ,annotation=" | 1563 | ,annotation={ |
1525 | Using RCU as a pure delay leads to a 2.5x slowdown in skbs in | 1564 | Using RCU as a pure delay leads to a 2.5x slowdown in skbs in |
1526 | the Linux kernel. | 1565 | the Linux kernel. |
1527 | " | 1566 | } |
1528 | } | 1567 | } |
1529 | 1568 | ||
1530 | @inproceedings{ChrisMatthews2006ClusteredObjectsRCU | 1569 | @inproceedings{ChrisMatthews2006ClusteredObjectsRCU |
@@ -1541,7 +1580,8 @@ Revised: | |||
1541 | ,annotation={ | 1580 | ,annotation={ |
1542 | Uses K42's RCU-like functionality to manage clustered-object | 1581 | Uses K42's RCU-like functionality to manage clustered-object |
1543 | lifetimes. | 1582 | lifetimes. |
1544 | }} | 1583 | } |
1584 | } | ||
1545 | 1585 | ||
1546 | @article{DilmaDaSilva2006K42 | 1586 | @article{DilmaDaSilva2006K42 |
1547 | ,author = {Silva, Dilma Da and Krieger, Orran and Wisniewski, Robert W. and Waterland, Amos and Tam, David and Baumann, Andrew} | 1587 | ,author = {Silva, Dilma Da and Krieger, Orran and Wisniewski, Robert W. and Waterland, Amos and Tam, David and Baumann, Andrew} |
@@ -1557,7 +1597,8 @@ Revised: | |||
1557 | ,address = {New York, NY, USA} | 1597 | ,address = {New York, NY, USA} |
1558 | ,annotation={ | 1598 | ,annotation={ |
1559 | Describes relationship of K42 generations to RCU. | 1599 | Describes relationship of K42 generations to RCU. |
1560 | }} | 1600 | } |
1601 | } | ||
1561 | 1602 | ||
1562 | # CoreyMinyard2007list_splice_rcu | 1603 | # CoreyMinyard2007list_splice_rcu |
1563 | @unpublished{CoreyMinyard2007list:splice:rcu | 1604 | @unpublished{CoreyMinyard2007list:splice:rcu |
@@ -1569,9 +1610,9 @@ Revised: | |||
1569 | ,note="Available: | 1610 | ,note="Available: |
1570 | \url{http://lkml.org/lkml/2007/1/3/112} | 1611 | \url{http://lkml.org/lkml/2007/1/3/112} |
1571 | [Viewed May 28, 2007]" | 1612 | [Viewed May 28, 2007]" |
1572 | ,annotation=" | 1613 | ,annotation={ |
1573 | Patch for list_splice_rcu(). | 1614 | Patch for list_splice_rcu(). |
1574 | " | 1615 | } |
1575 | } | 1616 | } |
1576 | 1617 | ||
1577 | @unpublished{PaulEMcKenney2007rcubarrier | 1618 | @unpublished{PaulEMcKenney2007rcubarrier |
@@ -1583,9 +1624,9 @@ Revised: | |||
1583 | ,note="Available: | 1624 | ,note="Available: |
1584 | \url{http://lwn.net/Articles/217484/} | 1625 | \url{http://lwn.net/Articles/217484/} |
1585 | [Viewed November 22, 2007]" | 1626 | [Viewed November 22, 2007]" |
1586 | ,annotation=" | 1627 | ,annotation={ |
1587 | LWN article introducing the rcu_barrier() primitive. | 1628 | LWN article introducing the rcu_barrier() primitive. |
1588 | " | 1629 | } |
1589 | } | 1630 | } |
1590 | 1631 | ||
1591 | @unpublished{PeterZijlstra2007SyncBarrier | 1632 | @unpublished{PeterZijlstra2007SyncBarrier |
@@ -1597,10 +1638,10 @@ Revised: | |||
1597 | ,note="Available: | 1638 | ,note="Available: |
1598 | \url{http://lkml.org/lkml/2007/1/28/34} | 1639 | \url{http://lkml.org/lkml/2007/1/28/34} |
1599 | [Viewed March 27, 2008]" | 1640 | [Viewed March 27, 2008]" |
1600 | ,annotation=" | 1641 | ,annotation={ |
1601 | RCU-like implementation for frequent updaters and rare readers(!). | 1642 | RCU-like implementation for frequent updaters and rare readers(!). |
1602 | Subsumed into QRCU. Maybe... | 1643 | Subsumed into QRCU. Maybe... |
1603 | " | 1644 | } |
1604 | } | 1645 | } |
1605 | 1646 | ||
1606 | @unpublished{PaulEMcKenney2007BoostRCU | 1647 | @unpublished{PaulEMcKenney2007BoostRCU |
@@ -1609,14 +1650,13 @@ Revised: | |||
1609 | ,month="February" | 1650 | ,month="February" |
1610 | ,day="5" | 1651 | ,day="5" |
1611 | ,year="2007" | 1652 | ,year="2007" |
1612 | ,note="Available: | 1653 | ,note="\url{http://lwn.net/Articles/220677/}" |
1613 | \url{http://lwn.net/Articles/220677/} | 1654 | ,annotation={ |
1614 | Revised: | ||
1615 | \url{http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf} | ||
1616 | [Viewed September 7, 2007]" | ||
1617 | ,annotation=" | ||
1618 | LWN article introducing RCU priority boosting. | 1655 | LWN article introducing RCU priority boosting. |
1619 | " | 1656 | Revised: |
1657 | http://www.rdrop.com/users/paulmck/RCU/RCUbooststate.2007.04.16a.pdf | ||
1658 | [Viewed September 7, 2007] | ||
1659 | } | ||
1620 | } | 1660 | } |
1621 | 1661 | ||
1622 | @unpublished{PaulMcKenney2007QRCUpatch | 1662 | @unpublished{PaulMcKenney2007QRCUpatch |
@@ -1628,9 +1668,9 @@ Revised: | |||
1628 | ,note="Available: | 1668 | ,note="Available: |
1629 | \url{http://lkml.org/lkml/2007/2/25/18} | 1669 | \url{http://lkml.org/lkml/2007/2/25/18} |
1630 | [Viewed March 27, 2008]" | 1670 | [Viewed March 27, 2008]" |
1631 | ,annotation=" | 1671 | ,annotation={ |
1632 | Patch for QRCU supplying lock-free fast path. | 1672 | Patch for QRCU supplying lock-free fast path. |
1633 | " | 1673 | } |
1634 | } | 1674 | } |
1635 | 1675 | ||
1636 | @article{JonathanAppavoo2007K42RCU | 1676 | @article{JonathanAppavoo2007K42RCU |
@@ -1647,7 +1687,8 @@ Revised: | |||
1647 | ,address = {New York, NY, USA} | 1687 | ,address = {New York, NY, USA} |
1648 | ,annotation={ | 1688 | ,annotation={ |
1649 | Role of RCU in K42. | 1689 | Role of RCU in K42. |
1650 | }} | 1690 | } |
1691 | } | ||
1651 | 1692 | ||
1652 | @conference{RobertOlsson2007Trash | 1693 | @conference{RobertOlsson2007Trash |
1653 | ,Author="Robert Olsson and Stefan Nilsson" | 1694 | ,Author="Robert Olsson and Stefan Nilsson" |
@@ -1658,9 +1699,9 @@ Revised: | |||
1658 | ,note="Available: | 1699 | ,note="Available: |
1659 | \url{http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4281239} | 1700 | \url{http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4281239} |
1660 | [Viewed October 1, 2010]" | 1701 | [Viewed October 1, 2010]" |
1661 | ,annotation=" | 1702 | ,annotation={ |
1662 | RCU-protected dynamic trie-hash combination. | 1703 | RCU-protected dynamic trie-hash combination. |
1663 | " | 1704 | } |
1664 | } | 1705 | } |
1665 | 1706 | ||
1666 | @conference{PeterZijlstra2007ConcurrentPagecacheRCU | 1707 | @conference{PeterZijlstra2007ConcurrentPagecacheRCU |
@@ -1673,10 +1714,10 @@ Revised: | |||
1673 | ,note="Available: | 1714 | ,note="Available: |
1674 | \url{http://ols.108.redhat.com/2007/Reprints/zijlstra-Reprint.pdf} | 1715 | \url{http://ols.108.redhat.com/2007/Reprints/zijlstra-Reprint.pdf} |
1675 | [Viewed April 14, 2008]" | 1716 | [Viewed April 14, 2008]" |
1676 | ,annotation=" | 1717 | ,annotation={ |
1677 | Page-cache modifications permitting RCU readers and concurrent | 1718 | Page-cache modifications permitting RCU readers and concurrent |
1678 | updates. | 1719 | updates. |
1679 | " | 1720 | } |
1680 | } | 1721 | } |
1681 | 1722 | ||
1682 | @unpublished{PaulEMcKenney2007whatisRCU | 1723 | @unpublished{PaulEMcKenney2007whatisRCU |
@@ -1701,11 +1742,11 @@ Revised: | |||
1701 | ,note="Available: | 1742 | ,note="Available: |
1702 | \url{http://lwn.net/Articles/243851/} | 1743 | \url{http://lwn.net/Articles/243851/} |
1703 | [Viewed September 8, 2007]" | 1744 | [Viewed September 8, 2007]" |
1704 | ,annotation=" | 1745 | ,annotation={ |
1705 | LWN article describing Promela and spin, and also using Oleg | 1746 | LWN article describing Promela and spin, and also using Oleg |
1706 | Nesterov's QRCU as an example (with Paul McKenney's fastpath). | 1747 | Nesterov's QRCU as an example (with Paul McKenney's fastpath). |
1707 | Merged patch at: http://lkml.org/lkml/2007/2/25/18 | 1748 | Merged patch at: http://lkml.org/lkml/2007/2/25/18 |
1708 | " | 1749 | } |
1709 | } | 1750 | } |
1710 | 1751 | ||
1711 | @unpublished{PaulEMcKenney2007WG21DDOatomics | 1752 | @unpublished{PaulEMcKenney2007WG21DDOatomics |
@@ -1714,12 +1755,12 @@ Revised: | |||
1714 | ,month="August" | 1755 | ,month="August" |
1715 | ,day="3" | 1756 | ,day="3" |
1716 | ,year="2007" | 1757 | ,year="2007" |
1717 | ,note="Preprint: | 1758 | ,note="Available: |
1718 | \url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm} | 1759 | \url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm} |
1719 | [Viewed December 7, 2009]" | 1760 | [Viewed December 7, 2009]" |
1720 | ,annotation=" | 1761 | ,annotation={ |
1721 | RCU for C++, parts 1 and 2. | 1762 | RCU for C++, parts 1 and 2. |
1722 | " | 1763 | } |
1723 | } | 1764 | } |
1724 | 1765 | ||
1725 | @unpublished{PaulEMcKenney2007WG21DDOannotation | 1766 | @unpublished{PaulEMcKenney2007WG21DDOannotation |
@@ -1728,12 +1769,12 @@ Revised: | |||
1728 | ,month="September" | 1769 | ,month="September" |
1729 | ,day="18" | 1770 | ,day="18" |
1730 | ,year="2008" | 1771 | ,year="2008" |
1731 | ,note="Preprint: | 1772 | ,note="Available: |
1732 | \url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2782.htm} | 1773 | \url{http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2782.htm} |
1733 | [Viewed December 7, 2009]" | 1774 | [Viewed December 7, 2009]" |
1734 | ,annotation=" | 1775 | ,annotation={ |
1735 | RCU for C++, part 2, updated many times. | 1776 | RCU for C++, part 2, updated many times. |
1736 | " | 1777 | } |
1737 | } | 1778 | } |
1738 | 1779 | ||
1739 | @unpublished{PaulEMcKenney2007PreemptibleRCUPatch | 1780 | @unpublished{PaulEMcKenney2007PreemptibleRCUPatch |
@@ -1745,10 +1786,10 @@ Revised: | |||
1745 | ,note="Available: | 1786 | ,note="Available: |
1746 | \url{http://lkml.org/lkml/2007/9/10/213} | 1787 | \url{http://lkml.org/lkml/2007/9/10/213} |
1747 | [Viewed October 25, 2007]" | 1788 | [Viewed October 25, 2007]" |
1748 | ,annotation=" | 1789 | ,annotation={ |
1749 | Final patch for preemptable RCU to -rt. (Later patches were | 1790 | Final patch for preemptable RCU to -rt. (Later patches were |
1750 | to mainline, eventually incorporated.) | 1791 | to mainline, eventually incorporated.) |
1751 | " | 1792 | } |
1752 | } | 1793 | } |
1753 | 1794 | ||
1754 | @unpublished{PaulEMcKenney2007PreemptibleRCU | 1795 | @unpublished{PaulEMcKenney2007PreemptibleRCU |
@@ -1760,9 +1801,9 @@ Revised: | |||
1760 | ,note="Available: | 1801 | ,note="Available: |
1761 | \url{http://lwn.net/Articles/253651/} | 1802 | \url{http://lwn.net/Articles/253651/} |
1762 | [Viewed October 25, 2007]" | 1803 | [Viewed October 25, 2007]" |
1763 | ,annotation=" | 1804 | ,annotation={ |
1764 | LWN article describing the design of preemptible RCU. | 1805 | LWN article describing the design of preemptible RCU. |
1765 | " | 1806 | } |
1766 | } | 1807 | } |
1767 | 1808 | ||
1768 | @article{ThomasEHart2007a | 1809 | @article{ThomasEHart2007a |
@@ -1783,6 +1824,7 @@ Revised: | |||
1783 | } | 1824 | } |
1784 | } | 1825 | } |
1785 | 1826 | ||
1827 | # MathieuDesnoyers2007call_rcu_schedNeeded | ||
1786 | @unpublished{MathieuDesnoyers2007call:rcu:schedNeeded | 1828 | @unpublished{MathieuDesnoyers2007call:rcu:schedNeeded |
1787 | ,Author="Mathieu Desnoyers" | 1829 | ,Author="Mathieu Desnoyers" |
1788 | ,Title="Re: [patch 1/2] {Linux} Kernel Markers - Support Multiple Probes" | 1830 | ,Title="Re: [patch 1/2] {Linux} Kernel Markers - Support Multiple Probes" |
@@ -1792,9 +1834,9 @@ Revised: | |||
1792 | ,note="Available: | 1834 | ,note="Available: |
1793 | \url{http://lkml.org/lkml/2007/12/20/244} | 1835 | \url{http://lkml.org/lkml/2007/12/20/244} |
1794 | [Viewed March 27, 2008]" | 1836 | [Viewed March 27, 2008]" |
1795 | ,annotation=" | 1837 | ,annotation={ |
1796 | Request for call_rcu_sched() and rcu_barrier_sched(). | 1838 | Request for call_rcu_sched() and rcu_barrier_sched(). |
1797 | " | 1839 | } |
1798 | } | 1840 | } |
1799 | 1841 | ||
1800 | 1842 | ||
@@ -1815,11 +1857,11 @@ Revised: | |||
1815 | ,note="Available: | 1857 | ,note="Available: |
1816 | \url{http://lwn.net/Articles/262464/} | 1858 | \url{http://lwn.net/Articles/262464/} |
1817 | [Viewed December 27, 2007]" | 1859 | [Viewed December 27, 2007]" |
1818 | ,annotation=" | 1860 | ,annotation={ |
1819 | Lays out the three basic components of RCU: (1) publish-subscribe, | 1861 | Lays out the three basic components of RCU: (1) publish-subscribe, |
1820 | (2) wait for pre-existing readers to complete, and (2) maintain | 1862 | (2) wait for pre-existing readers to complete, and (2) maintain |
1821 | multiple versions. | 1863 | multiple versions. |
1822 | " | 1864 | } |
1823 | } | 1865 | } |
1824 | 1866 | ||
1825 | @unpublished{PaulEMcKenney2008WhatIsRCUUsage | 1867 | @unpublished{PaulEMcKenney2008WhatIsRCUUsage |
@@ -1831,7 +1873,7 @@ Revised: | |||
1831 | ,note="Available: | 1873 | ,note="Available: |
1832 | \url{http://lwn.net/Articles/263130/} | 1874 | \url{http://lwn.net/Articles/263130/} |
1833 | [Viewed January 4, 2008]" | 1875 | [Viewed January 4, 2008]" |
1834 | ,annotation=" | 1876 | ,annotation={ |
1835 | Lays out six uses of RCU: | 1877 | Lays out six uses of RCU: |
1836 | 1. RCU is a Reader-Writer Lock Replacement | 1878 | 1. RCU is a Reader-Writer Lock Replacement |
1837 | 2. RCU is a Restricted Reference-Counting Mechanism | 1879 | 2. RCU is a Restricted Reference-Counting Mechanism |
@@ -1839,7 +1881,7 @@ Revised: | |||
1839 | 4. RCU is a Poor Man's Garbage Collector | 1881 | 4. RCU is a Poor Man's Garbage Collector |
1840 | 5. RCU is a Way of Providing Existence Guarantees | 1882 | 5. RCU is a Way of Providing Existence Guarantees |
1841 | 6. RCU is a Way of Waiting for Things to Finish | 1883 | 6. RCU is a Way of Waiting for Things to Finish |
1842 | " | 1884 | } |
1843 | } | 1885 | } |
1844 | 1886 | ||
1845 | @unpublished{PaulEMcKenney2008WhatIsRCUAPI | 1887 | @unpublished{PaulEMcKenney2008WhatIsRCUAPI |
@@ -1851,10 +1893,10 @@ Revised: | |||
1851 | ,note="Available: | 1893 | ,note="Available: |
1852 | \url{http://lwn.net/Articles/264090/} | 1894 | \url{http://lwn.net/Articles/264090/} |
1853 | [Viewed January 10, 2008]" | 1895 | [Viewed January 10, 2008]" |
1854 | ,annotation=" | 1896 | ,annotation={ |
1855 | Gives an overview of the Linux-kernel RCU API and a brief annotated RCU | 1897 | Gives an overview of the Linux-kernel RCU API and a brief annotated RCU |
1856 | bibliography. | 1898 | bibliography. |
1857 | " | 1899 | } |
1858 | } | 1900 | } |
1859 | 1901 | ||
1860 | # | 1902 | # |
@@ -1872,10 +1914,10 @@ Revised: | |||
1872 | ,note="Available: | 1914 | ,note="Available: |
1873 | \url{http://lkml.org/lkml/2008/1/29/208} | 1915 | \url{http://lkml.org/lkml/2008/1/29/208} |
1874 | [Viewed March 27, 2008]" | 1916 | [Viewed March 27, 2008]" |
1875 | ,annotation=" | 1917 | ,annotation={ |
1876 | Patch that prevents preemptible RCU from unnecessarily waking | 1918 | Patch that prevents preemptible RCU from unnecessarily waking |
1877 | up dynticks-idle CPUs. | 1919 | up dynticks-idle CPUs. |
1878 | " | 1920 | } |
1879 | } | 1921 | } |
1880 | 1922 | ||
1881 | @unpublished{PaulEMcKenney2008LKMLDependencyOrdering | 1923 | @unpublished{PaulEMcKenney2008LKMLDependencyOrdering |
@@ -1887,9 +1929,9 @@ Revised: | |||
1887 | ,note="Available: | 1929 | ,note="Available: |
1888 | \url{http://lkml.org/lkml/2008/2/2/255} | 1930 | \url{http://lkml.org/lkml/2008/2/2/255} |
1889 | [Viewed October 18, 2008]" | 1931 | [Viewed October 18, 2008]" |
1890 | ,annotation=" | 1932 | ,annotation={ |
1891 | Explanation of compilers violating dependency ordering. | 1933 | Explanation of compilers violating dependency ordering. |
1892 | " | 1934 | } |
1893 | } | 1935 | } |
1894 | 1936 | ||
1895 | @Conference{PaulEMcKenney2008Beijing | 1937 | @Conference{PaulEMcKenney2008Beijing |
@@ -1916,24 +1958,26 @@ lot of {Linux} into your technology!!!" | |||
1916 | ,note="Available: | 1958 | ,note="Available: |
1917 | \url{http://lwn.net/Articles/279077/} | 1959 | \url{http://lwn.net/Articles/279077/} |
1918 | [Viewed April 24, 2008]" | 1960 | [Viewed April 24, 2008]" |
1919 | ,annotation=" | 1961 | ,annotation={ |
1920 | Describes use of Promela and Spin to validate (and fix!) the | 1962 | Describes use of Promela and Spin to validate (and fix!) the |
1921 | dynticks/RCU interface. | 1963 | dynticks/RCU interface. |
1922 | " | 1964 | } |
1923 | } | 1965 | } |
1924 | 1966 | ||
1925 | @article{DinakarGuniguntala2008IBMSysJ | 1967 | @article{DinakarGuniguntala2008IBMSysJ |
1926 | ,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole" | 1968 | ,author="D. Guniguntala and P. E. McKenney and J. Triplett and J. Walpole" |
1927 | ,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}" | 1969 | ,title="The read-copy-update mechanism for supporting real-time applications on shared-memory multiprocessor systems with {Linux}" |
1928 | ,Year="2008" | 1970 | ,Year="2008" |
1929 | ,Month="April-June" | 1971 | ,Month="May" |
1930 | ,journal="IBM Systems Journal" | 1972 | ,journal="IBM Systems Journal" |
1931 | ,volume="47" | 1973 | ,volume="47" |
1932 | ,number="2" | 1974 | ,number="2" |
1933 | ,pages="221-236" | 1975 | ,pages="221-236" |
1934 | ,annotation=" | 1976 | ,annotation={ |
1935 | RCU, realtime RCU, sleepable RCU, performance. | 1977 | RCU, realtime RCU, sleepable RCU, performance. |
1936 | " | 1978 | http://www.research.ibm.com/journal/sj/472/guniguntala.pdf |
1979 | [Viewed April 24, 2008] | ||
1980 | } | ||
1937 | } | 1981 | } |
1938 | 1982 | ||
1939 | @unpublished{LaiJiangshan2008NewClassicAlgorithm | 1983 | @unpublished{LaiJiangshan2008NewClassicAlgorithm |
@@ -1945,11 +1989,11 @@ lot of {Linux} into your technology!!!" | |||
1945 | ,note="Available: | 1989 | ,note="Available: |
1946 | \url{http://lkml.org/lkml/2008/6/2/539} | 1990 | \url{http://lkml.org/lkml/2008/6/2/539} |
1947 | [Viewed December 10, 2008]" | 1991 | [Viewed December 10, 2008]" |
1948 | ,annotation=" | 1992 | ,annotation={ |
1949 | Updated RCU classic algorithm. Introduced multi-tailed list | 1993 | Updated RCU classic algorithm. Introduced multi-tailed list |
1950 | for RCU callbacks and also pulling common code into | 1994 | for RCU callbacks and also pulling common code into |
1951 | __call_rcu(). | 1995 | __call_rcu(). |
1952 | " | 1996 | } |
1953 | } | 1997 | } |
1954 | 1998 | ||
1955 | @article{PaulEMcKenney2008RCUOSR | 1999 | @article{PaulEMcKenney2008RCUOSR |
@@ -1966,6 +2010,7 @@ lot of {Linux} into your technology!!!" | |||
1966 | ,address="New York, NY, USA" | 2010 | ,address="New York, NY, USA" |
1967 | ,annotation={ | 2011 | ,annotation={ |
1968 | Linux changed RCU to a far greater degree than RCU has changed Linux. | 2012 | Linux changed RCU to a far greater degree than RCU has changed Linux. |
2013 | http://portal.acm.org/citation.cfm?doid=1400097.1400099 | ||
1969 | } | 2014 | } |
1970 | } | 2015 | } |
1971 | 2016 | ||
@@ -1978,10 +2023,10 @@ lot of {Linux} into your technology!!!" | |||
1978 | ,note="Available: | 2023 | ,note="Available: |
1979 | \url{http://lkml.org/lkml/2008/8/21/336} | 2024 | \url{http://lkml.org/lkml/2008/8/21/336} |
1980 | [Viewed December 8, 2008]" | 2025 | [Viewed December 8, 2008]" |
1981 | ,annotation=" | 2026 | ,annotation={ |
1982 | State-based RCU. One key thing that this patch does is to | 2027 | State-based RCU. One key thing that this patch does is to |
1983 | separate the dynticks handling of NMIs and IRQs. | 2028 | separate the dynticks handling of NMIs and IRQs. |
1984 | " | 2029 | } |
1985 | } | 2030 | } |
1986 | 2031 | ||
1987 | @unpublished{ManfredSpraul2008dyntickIRQNMI | 2032 | @unpublished{ManfredSpraul2008dyntickIRQNMI |
@@ -1993,12 +2038,13 @@ lot of {Linux} into your technology!!!" | |||
1993 | ,note="Available: | 2038 | ,note="Available: |
1994 | \url{http://lkml.org/lkml/2008/9/6/86} | 2039 | \url{http://lkml.org/lkml/2008/9/6/86} |
1995 | [Viewed December 8, 2008]" | 2040 | [Viewed December 8, 2008]" |
1996 | ,annotation=" | 2041 | ,annotation={ |
1997 | Manfred notes a fix required to my attempt to separate irq | 2042 | Manfred notes a fix required to my attempt to separate irq |
1998 | and NMI processing for hierarchical RCU's dynticks interface. | 2043 | and NMI processing for hierarchical RCU's dynticks interface. |
1999 | " | 2044 | } |
2000 | } | 2045 | } |
2001 | 2046 | ||
2047 | # Was PaulEMcKenney2011cyclicRCU | ||
2002 | @techreport{PaulEMcKenney2008cyclicRCU | 2048 | @techreport{PaulEMcKenney2008cyclicRCU |
2003 | ,author="Paul E. McKenney" | 2049 | ,author="Paul E. McKenney" |
2004 | ,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update" | 2050 | ,title="Efficient Support of Consistent Cyclic Search With Read-Copy Update" |
@@ -2008,11 +2054,11 @@ lot of {Linux} into your technology!!!" | |||
2008 | ,number="US Patent 7,426,511" | 2054 | ,number="US Patent 7,426,511" |
2009 | ,month="September" | 2055 | ,month="September" |
2010 | ,pages="23" | 2056 | ,pages="23" |
2011 | ,annotation=" | 2057 | ,annotation={ |
2012 | Maintains an additional level of indirection to allow | 2058 | Maintains an additional level of indirection to allow |
2013 | readers to confine themselves to the desired snapshot of the | 2059 | readers to confine themselves to the desired snapshot of the |
2014 | data structure. Only permits one update at a time. | 2060 | data structure. Only permits one update at a time. |
2015 | " | 2061 | } |
2016 | } | 2062 | } |
2017 | 2063 | ||
2018 | @unpublished{PaulEMcKenney2008HierarchicalRCU | 2064 | @unpublished{PaulEMcKenney2008HierarchicalRCU |
@@ -2021,13 +2067,12 @@ lot of {Linux} into your technology!!!" | |||
2021 | ,month="November" | 2067 | ,month="November" |
2022 | ,day="3" | 2068 | ,day="3" |
2023 | ,year="2008" | 2069 | ,year="2008" |
2024 | ,note="Available: | 2070 | ,note="\url{http://lwn.net/Articles/305782/}" |
2025 | \url{http://lwn.net/Articles/305782/} | 2071 | ,annotation={ |
2026 | [Viewed November 6, 2008]" | ||
2027 | ,annotation=" | ||
2028 | RCU with combining-tree-based grace-period detection, | 2072 | RCU with combining-tree-based grace-period detection, |
2029 | permitting it to handle thousands of CPUs. | 2073 | permitting it to handle thousands of CPUs. |
2030 | " | 2074 | [Viewed November 6, 2008] |
2075 | } | ||
2031 | } | 2076 | } |
2032 | 2077 | ||
2033 | @unpublished{PaulEMcKenney2009BloatwatchRCU | 2078 | @unpublished{PaulEMcKenney2009BloatwatchRCU |
@@ -2039,10 +2084,10 @@ lot of {Linux} into your technology!!!" | |||
2039 | ,note="Available: | 2084 | ,note="Available: |
2040 | \url{http://lkml.org/lkml/2009/1/14/449} | 2085 | \url{http://lkml.org/lkml/2009/1/14/449} |
2041 | [Viewed January 15, 2009]" | 2086 | [Viewed January 15, 2009]" |
2042 | ,annotation=" | 2087 | ,annotation={ |
2043 | Small-footprint implementation of RCU for uniprocessor | 2088 | Small-footprint implementation of RCU for uniprocessor |
2044 | embedded applications -- and also for exposition purposes. | 2089 | embedded applications -- and also for exposition purposes. |
2045 | " | 2090 | } |
2046 | } | 2091 | } |
2047 | 2092 | ||
2048 | @conference{PaulEMcKenney2009MaliciousURCU | 2093 | @conference{PaulEMcKenney2009MaliciousURCU |
@@ -2055,9 +2100,9 @@ lot of {Linux} into your technology!!!" | |||
2055 | ,note="Available: | 2100 | ,note="Available: |
2056 | \url{http://www.rdrop.com/users/paulmck/RCU/urcutorture.2009.01.22a.pdf} | 2101 | \url{http://www.rdrop.com/users/paulmck/RCU/urcutorture.2009.01.22a.pdf} |
2057 | [Viewed February 2, 2009]" | 2102 | [Viewed February 2, 2009]" |
2058 | ,annotation=" | 2103 | ,annotation={ |
2059 | Realtime RCU and torture-testing RCU uses. | 2104 | Realtime RCU and torture-testing RCU uses. |
2060 | " | 2105 | } |
2061 | } | 2106 | } |
2062 | 2107 | ||
2063 | @unpublished{MathieuDesnoyers2009URCU | 2108 | @unpublished{MathieuDesnoyers2009URCU |
@@ -2066,16 +2111,14 @@ lot of {Linux} into your technology!!!" | |||
2066 | ,month="February" | 2111 | ,month="February" |
2067 | ,day="5" | 2112 | ,day="5" |
2068 | ,year="2009" | 2113 | ,year="2009" |
2069 | ,note="Available: | 2114 | ,note="\url{http://lttng.org/urcu}" |
2070 | \url{http://lkml.org/lkml/2009/2/5/572} | 2115 | ,annotation={ |
2071 | \url{http://lttng.org/urcu} | ||
2072 | [Viewed February 20, 2009]" | ||
2073 | ,annotation=" | ||
2074 | Mathieu Desnoyers's user-space RCU implementation. | 2116 | Mathieu Desnoyers's user-space RCU implementation. |
2075 | git://lttng.org/userspace-rcu.git | 2117 | git://lttng.org/userspace-rcu.git |
2076 | http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git | 2118 | http://lttng.org/cgi-bin/gitweb.cgi?p=userspace-rcu.git |
2077 | http://lttng.org/urcu | 2119 | http://lttng.org/urcu |
2078 | " | 2120 | http://lkml.org/lkml/2009/2/5/572 |
2121 | } | ||
2079 | } | 2122 | } |
2080 | 2123 | ||
2081 | @unpublished{PaulEMcKenney2009LWNBloatWatchRCU | 2124 | @unpublished{PaulEMcKenney2009LWNBloatWatchRCU |
@@ -2087,9 +2130,24 @@ lot of {Linux} into your technology!!!" | |||
2087 | ,note="Available: | 2130 | ,note="Available: |
2088 | \url{http://lwn.net/Articles/323929/} | 2131 | \url{http://lwn.net/Articles/323929/} |
2089 | [Viewed March 20, 2009]" | 2132 | [Viewed March 20, 2009]" |
2090 | ,annotation=" | 2133 | ,annotation={ |
2091 | Uniprocessor assumptions allow simplified RCU implementation. | 2134 | Uniprocessor assumptions allow simplified RCU implementation. |
2092 | " | 2135 | } |
2136 | } | ||
2137 | |||
2138 | @unpublished{EvgeniyPolyakov2009EllipticsNetwork | ||
2139 | ,Author="Evgeniy Polyakov" | ||
2140 | ,Title="The Elliptics Network" | ||
2141 | ,month="April" | ||
2142 | ,day="17" | ||
2143 | ,year="2009" | ||
2144 | ,note="Available: | ||
2145 | \url{http://www.ioremap.net/projects/elliptics} | ||
2146 | [Viewed April 30, 2009]" | ||
2147 | ,annotation={ | ||
2148 | Distributed hash table with transactions, using elliptic | ||
2149 | hash functions to distribute data. | ||
2150 | } | ||
2093 | } | 2151 | } |
2094 | 2152 | ||
2095 | @unpublished{PaulEMcKenney2009expeditedRCU | 2153 | @unpublished{PaulEMcKenney2009expeditedRCU |
@@ -2101,9 +2159,9 @@ lot of {Linux} into your technology!!!" | |||
2101 | ,note="Available: | 2159 | ,note="Available: |
2102 | \url{http://lkml.org/lkml/2009/6/25/306} | 2160 | \url{http://lkml.org/lkml/2009/6/25/306} |
2103 | [Viewed August 16, 2009]" | 2161 | [Viewed August 16, 2009]" |
2104 | ,annotation=" | 2162 | ,annotation={ |
2105 | First posting of expedited RCU to be accepted into -tip. | 2163 | First posting of expedited RCU to be accepted into -tip. |
2106 | " | 2164 | } |
2107 | } | 2165 | } |
2108 | 2166 | ||
2109 | @unpublished{PaulEMcKenney2009fastRTRCU | 2167 | @unpublished{PaulEMcKenney2009fastRTRCU |
@@ -2115,21 +2173,21 @@ lot of {Linux} into your technology!!!" | |||
2115 | ,note="Available: | 2173 | ,note="Available: |
2116 | \url{http://lkml.org/lkml/2009/7/23/294} | 2174 | \url{http://lkml.org/lkml/2009/7/23/294} |
2117 | [Viewed August 15, 2009]" | 2175 | [Viewed August 15, 2009]" |
2118 | ,annotation=" | 2176 | ,annotation={ |
2119 | First posting of simple and fast preemptable RCU. | 2177 | First posting of simple and fast preemptable RCU. |
2120 | " | 2178 | } |
2121 | } | 2179 | } |
2122 | 2180 | ||
2123 | @InProceedings{JoshTriplett2009RPHash | 2181 | @unpublished{JoshTriplett2009RPHash |
2124 | ,Author="Josh Triplett" | 2182 | ,Author="Josh Triplett" |
2125 | ,Title="Scalable concurrent hash tables via relativistic programming" | 2183 | ,Title="Scalable concurrent hash tables via relativistic programming" |
2126 | ,month="September" | 2184 | ,month="September" |
2127 | ,year="2009" | 2185 | ,year="2009" |
2128 | ,booktitle="Linux Plumbers Conference 2009" | 2186 | ,note="Linux Plumbers Conference presentation" |
2129 | ,annotation=" | 2187 | ,annotation={ |
2130 | RP fun with hash tables. | 2188 | RP fun with hash tables. |
2131 | See also JoshTriplett2010RPHash | 2189 | Superseded by JoshTriplett2010RPHash |
2132 | " | 2190 | } |
2133 | } | 2191 | } |
2134 | 2192 | ||
2135 | @phdthesis{MathieuDesnoyersPhD | 2193 | @phdthesis{MathieuDesnoyersPhD |
@@ -2154,9 +2212,9 @@ lot of {Linux} into your technology!!!" | |||
2154 | ,note="Available: | 2212 | ,note="Available: |
2155 | \url{http://wiki.cs.pdx.edu/rp/} | 2213 | \url{http://wiki.cs.pdx.edu/rp/} |
2156 | [Viewed December 9, 2009]" | 2214 | [Viewed December 9, 2009]" |
2157 | ,annotation=" | 2215 | ,annotation={ |
2158 | Main Relativistic Programming Wiki. | 2216 | Main Relativistic Programming Wiki. |
2159 | " | 2217 | } |
2160 | } | 2218 | } |
2161 | 2219 | ||
2162 | @conference{PaulEMcKenney2009DeterministicRCU | 2220 | @conference{PaulEMcKenney2009DeterministicRCU |
@@ -2180,9 +2238,9 @@ lot of {Linux} into your technology!!!" | |||
2180 | ,note="Available: | 2238 | ,note="Available: |
2181 | \url{http://paulmck.livejournal.com/14639.html} | 2239 | \url{http://paulmck.livejournal.com/14639.html} |
2182 | [Viewed June 4, 2010]" | 2240 | [Viewed June 4, 2010]" |
2183 | ,annotation=" | 2241 | ,annotation={ |
2184 | Day-one bug in Tree RCU that took forever to track down. | 2242 | Day-one bug in Tree RCU that took forever to track down. |
2185 | " | 2243 | } |
2186 | } | 2244 | } |
2187 | 2245 | ||
2188 | @unpublished{MathieuDesnoyers2009defer:rcu | 2246 | @unpublished{MathieuDesnoyers2009defer:rcu |
@@ -2193,10 +2251,10 @@ lot of {Linux} into your technology!!!" | |||
2193 | ,note="Available: | 2251 | ,note="Available: |
2194 | \url{http://lkml.org/lkml/2009/10/18/129} | 2252 | \url{http://lkml.org/lkml/2009/10/18/129} |
2195 | [Viewed December 29, 2009]" | 2253 | [Viewed December 29, 2009]" |
2196 | ,annotation=" | 2254 | ,annotation={ |
2197 | Mathieu proposed defer_rcu() with fixed-size per-thread pool | 2255 | Mathieu proposed defer_rcu() with fixed-size per-thread pool |
2198 | of RCU callbacks. | 2256 | of RCU callbacks. |
2199 | " | 2257 | } |
2200 | } | 2258 | } |
2201 | 2259 | ||
2202 | @unpublished{MathieuDesnoyers2009VerifPrePub | 2260 | @unpublished{MathieuDesnoyers2009VerifPrePub |
@@ -2205,10 +2263,10 @@ lot of {Linux} into your technology!!!" | |||
2205 | ,month="December" | 2263 | ,month="December" |
2206 | ,year="2009" | 2264 | ,year="2009" |
2207 | ,note="Submitted to IEEE TPDS" | 2265 | ,note="Submitted to IEEE TPDS" |
2208 | ,annotation=" | 2266 | ,annotation={ |
2209 | OOMem model for Mathieu's user-level RCU mechanical proof of | 2267 | OOMem model for Mathieu's user-level RCU mechanical proof of |
2210 | correctness. | 2268 | correctness. |
2211 | " | 2269 | } |
2212 | } | 2270 | } |
2213 | 2271 | ||
2214 | @unpublished{MathieuDesnoyers2009URCUPrePub | 2272 | @unpublished{MathieuDesnoyers2009URCUPrePub |
@@ -2216,15 +2274,15 @@ lot of {Linux} into your technology!!!" | |||
2216 | ,Title="User-Level Implementations of Read-Copy Update" | 2274 | ,Title="User-Level Implementations of Read-Copy Update" |
2217 | ,month="December" | 2275 | ,month="December" |
2218 | ,year="2010" | 2276 | ,year="2010" |
2219 | ,url=\url{http://www.computer.org/csdl/trans/td/2012/02/ttd2012020375-abs.html} | 2277 | ,url={\url{http://www.computer.org/csdl/trans/td/2012/02/ttd2012020375-abs.html}} |
2220 | ,annotation=" | 2278 | ,annotation={ |
2221 | RCU overview, desiderata, semi-formal semantics, user-level RCU | 2279 | RCU overview, desiderata, semi-formal semantics, user-level RCU |
2222 | usage scenarios, three classes of RCU implementation, wait-free | 2280 | usage scenarios, three classes of RCU implementation, wait-free |
2223 | RCU updates, RCU grace-period batching, update overhead, | 2281 | RCU updates, RCU grace-period batching, update overhead, |
2224 | http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf | 2282 | http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf |
2225 | http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf | 2283 | http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf |
2226 | Superseded by MathieuDesnoyers2012URCU. | 2284 | Superseded by MathieuDesnoyers2012URCU. |
2227 | " | 2285 | } |
2228 | } | 2286 | } |
2229 | 2287 | ||
2230 | @inproceedings{HariKannan2009DynamicAnalysisRCU | 2288 | @inproceedings{HariKannan2009DynamicAnalysisRCU |
@@ -2240,7 +2298,8 @@ lot of {Linux} into your technology!!!" | |||
2240 | ,address = {New York, NY, USA} | 2298 | ,address = {New York, NY, USA} |
2241 | ,annotation={ | 2299 | ,annotation={ |
2242 | Uses RCU to protect metadata used in dynamic analysis. | 2300 | Uses RCU to protect metadata used in dynamic analysis. |
2243 | }} | 2301 | } |
2302 | } | ||
2244 | 2303 | ||
2245 | @conference{PaulEMcKenney2010SimpleOptRCU | 2304 | @conference{PaulEMcKenney2010SimpleOptRCU |
2246 | ,Author="Paul E. McKenney" | 2305 | ,Author="Paul E. McKenney" |
@@ -2252,10 +2311,10 @@ lot of {Linux} into your technology!!!" | |||
2252 | ,note="Available: | 2311 | ,note="Available: |
2253 | \url{http://www.rdrop.com/users/paulmck/RCU/SimplicityThruOptimization.2010.01.21f.pdf} | 2312 | \url{http://www.rdrop.com/users/paulmck/RCU/SimplicityThruOptimization.2010.01.21f.pdf} |
2254 | [Viewed October 10, 2010]" | 2313 | [Viewed October 10, 2010]" |
2255 | ,annotation=" | 2314 | ,annotation={ |
2256 | TREE_PREEMPT_RCU optimizations greatly simplified the old | 2315 | TREE_PREEMPT_RCU optimizations greatly simplified the old |
2257 | PREEMPT_RCU implementation. | 2316 | PREEMPT_RCU implementation. |
2258 | " | 2317 | } |
2259 | } | 2318 | } |
2260 | 2319 | ||
2261 | @unpublished{PaulEMcKenney2010LockdepRCU | 2320 | @unpublished{PaulEMcKenney2010LockdepRCU |
@@ -2264,12 +2323,11 @@ lot of {Linux} into your technology!!!" | |||
2264 | ,month="February" | 2323 | ,month="February" |
2265 | ,year="2010" | 2324 | ,year="2010" |
2266 | ,day="1" | 2325 | ,day="1" |
2267 | ,note="Available: | 2326 | ,note="\url{https://lwn.net/Articles/371986/}" |
2268 | \url{https://lwn.net/Articles/371986/} | 2327 | ,annotation={ |
2269 | [Viewed June 4, 2010]" | ||
2270 | ,annotation=" | ||
2271 | CONFIG_PROVE_RCU, or at least an early version. | 2328 | CONFIG_PROVE_RCU, or at least an early version. |
2272 | " | 2329 | [Viewed June 4, 2010] |
2330 | } | ||
2273 | } | 2331 | } |
2274 | 2332 | ||
2275 | @unpublished{AviKivity2010KVM2RCU | 2333 | @unpublished{AviKivity2010KVM2RCU |
@@ -2280,10 +2338,10 @@ lot of {Linux} into your technology!!!" | |||
2280 | ,note="Available: | 2338 | ,note="Available: |
2281 | \url{http://www.mail-archive.com/kvm@vger.kernel.org/msg28640.html} | 2339 | \url{http://www.mail-archive.com/kvm@vger.kernel.org/msg28640.html} |
2282 | [Viewed March 20, 2010]" | 2340 | [Viewed March 20, 2010]" |
2283 | ,annotation=" | 2341 | ,annotation={ |
2284 | Use of RCU permits KVM to increase the size of guest OSes from | 2342 | Use of RCU permits KVM to increase the size of guest OSes from |
2285 | 16 CPUs to 64 CPUs. | 2343 | 16 CPUs to 64 CPUs. |
2286 | " | 2344 | } |
2287 | } | 2345 | } |
2288 | 2346 | ||
2289 | @unpublished{HerbertXu2010RCUResizeHash | 2347 | @unpublished{HerbertXu2010RCUResizeHash |
@@ -2297,7 +2355,19 @@ lot of {Linux} into your technology!!!" | |||
2297 | ,annotation={ | 2355 | ,annotation={ |
2298 | Use a pair of list_head structures to support RCU-protected | 2356 | Use a pair of list_head structures to support RCU-protected |
2299 | resizable hash tables. | 2357 | resizable hash tables. |
2300 | }} | 2358 | } |
2359 | } | ||
2360 | |||
2361 | @mastersthesis{AbhinavDuggal2010Masters | ||
2362 | ,author="Abhinav Duggal" | ||
2363 | ,title="Stopping Data Races Using Redflag" | ||
2364 | ,school="Stony Brook University" | ||
2365 | ,year="2010" | ||
2366 | ,annotation={ | ||
2367 | Data-race detector incorporating RCU. | ||
2368 | http://www.filesystems.org/docs/abhinav-thesis/abhinav_thesis.pdf | ||
2369 | } | ||
2370 | } | ||
2301 | 2371 | ||
2302 | @article{JoshTriplett2010RPHash | 2372 | @article{JoshTriplett2010RPHash |
2303 | ,author="Josh Triplett and Paul E. McKenney and Jonathan Walpole" | 2373 | ,author="Josh Triplett and Paul E. McKenney and Jonathan Walpole" |
@@ -2310,7 +2380,8 @@ lot of {Linux} into your technology!!!" | |||
2310 | ,annotation={ | 2380 | ,annotation={ |
2311 | RP fun with hash tables. | 2381 | RP fun with hash tables. |
2312 | http://portal.acm.org/citation.cfm?id=1842733.1842750 | 2382 | http://portal.acm.org/citation.cfm?id=1842733.1842750 |
2313 | }} | 2383 | } |
2384 | } | ||
2314 | 2385 | ||
2315 | @unpublished{PaulEMcKenney2010RCUAPI | 2386 | @unpublished{PaulEMcKenney2010RCUAPI |
2316 | ,Author="Paul E. McKenney" | 2387 | ,Author="Paul E. McKenney" |
@@ -2318,12 +2389,11 @@ lot of {Linux} into your technology!!!" | |||
2318 | ,month="December" | 2389 | ,month="December" |
2319 | ,day="8" | 2390 | ,day="8" |
2320 | ,year="2010" | 2391 | ,year="2010" |
2321 | ,note="Available: | 2392 | ,note="\url{http://lwn.net/Articles/418853/}" |
2322 | \url{http://lwn.net/Articles/418853/} | 2393 | ,annotation={ |
2323 | [Viewed December 8, 2010]" | ||
2324 | ,annotation=" | ||
2325 | Includes updated software-engineering features. | 2394 | Includes updated software-engineering features. |
2326 | " | 2395 | [Viewed December 8, 2010] |
2396 | } | ||
2327 | } | 2397 | } |
2328 | 2398 | ||
2329 | @mastersthesis{AndrejPodzimek2010masters | 2399 | @mastersthesis{AndrejPodzimek2010masters |
@@ -2338,7 +2408,8 @@ lot of {Linux} into your technology!!!" | |||
2338 | Reviews RCU implementations and creates a few for OpenSolaris. | 2408 | Reviews RCU implementations and creates a few for OpenSolaris. |
2339 | Drives quiescent-state detection from RCU read-side primitives, | 2409 | Drives quiescent-state detection from RCU read-side primitives, |
2340 | in a manner roughly similar to that of Jim Houston. | 2410 | in a manner roughly similar to that of Jim Houston. |
2341 | }} | 2411 | } |
2412 | } | ||
2342 | 2413 | ||
2343 | @unpublished{LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS | 2414 | @unpublished{LinusTorvalds2011Linux2:6:38:rc1:NPigginVFS |
2344 | ,Author="Linus Torvalds" | 2415 | ,Author="Linus Torvalds" |
@@ -2358,7 +2429,8 @@ lot of {Linux} into your technology!!!" | |||
2358 | of the most expensive parts of path component lookup, which was the | 2429 | of the most expensive parts of path component lookup, which was the |
2359 | d_lock on every component lookup. So I'm seeing improvements of 30-50% | 2430 | d_lock on every component lookup. So I'm seeing improvements of 30-50% |
2360 | on some seriously pathname-lookup intensive loads." | 2431 | on some seriously pathname-lookup intensive loads." |
2361 | }} | 2432 | } |
2433 | } | ||
2362 | 2434 | ||
2363 | @techreport{JoshTriplett2011RPScalableCorrectOrdering | 2435 | @techreport{JoshTriplett2011RPScalableCorrectOrdering |
2364 | ,author = {Josh Triplett and Philip W. Howard and Paul E. McKenney and Jonathan Walpole} | 2436 | ,author = {Josh Triplett and Philip W. Howard and Paul E. McKenney and Jonathan Walpole} |
@@ -2392,12 +2464,12 @@ lot of {Linux} into your technology!!!" | |||
2392 | ,number="US Patent 7,953,778" | 2464 | ,number="US Patent 7,953,778" |
2393 | ,month="May" | 2465 | ,month="May" |
2394 | ,pages="34" | 2466 | ,pages="34" |
2395 | ,annotation=" | 2467 | ,annotation={ |
2396 | Maintains an array of generation numbers to track in-flight | 2468 | Maintains an array of generation numbers to track in-flight |
2397 | updates and keeps an additional level of indirection to allow | 2469 | updates and keeps an additional level of indirection to allow |
2398 | readers to confine themselves to the desired snapshot of the | 2470 | readers to confine themselves to the desired snapshot of the |
2399 | data structure. | 2471 | data structure. |
2400 | " | 2472 | } |
2401 | } | 2473 | } |
2402 | 2474 | ||
2403 | @inproceedings{Triplett:2011:RPHash | 2475 | @inproceedings{Triplett:2011:RPHash |
@@ -2408,7 +2480,7 @@ lot of {Linux} into your technology!!!" | |||
2408 | ,year = {2011} | 2480 | ,year = {2011} |
2409 | ,pages = {145--158} | 2481 | ,pages = {145--158} |
2410 | ,numpages = {14} | 2482 | ,numpages = {14} |
2411 | ,url={http://www.usenix.org/event/atc11/tech/final_files/atc11_proceedings.pdf} | 2483 | ,url={http://www.usenix.org/event/atc11/tech/final_files/Triplett.pdf} |
2412 | ,publisher = {The USENIX Association} | 2484 | ,publisher = {The USENIX Association} |
2413 | ,address = {Portland, OR USA} | 2485 | ,address = {Portland, OR USA} |
2414 | } | 2486 | } |
@@ -2419,27 +2491,58 @@ lot of {Linux} into your technology!!!" | |||
2419 | ,month="July" | 2491 | ,month="July" |
2420 | ,day="27" | 2492 | ,day="27" |
2421 | ,year="2011" | 2493 | ,year="2011" |
2422 | ,note="Available: | 2494 | ,note="\url{http://lwn.net/Articles/453002/}" |
2423 | \url{http://lwn.net/Articles/453002/} | 2495 | ,annotation={ |
2424 | [Viewed July 27, 2011]" | ||
2425 | ,annotation=" | ||
2426 | Analysis of the RCU trainwreck in Linux kernel 3.0. | 2496 | Analysis of the RCU trainwreck in Linux kernel 3.0. |
2427 | " | 2497 | [Viewed July 27, 2011] |
2498 | } | ||
2428 | } | 2499 | } |
2429 | 2500 | ||
2430 | @unpublished{NeilBrown2011MeetTheLockers | 2501 | @unpublished{NeilBrown2011MeetTheLockers |
2431 | ,Author="Neil Brown" | 2502 | ,Author="Neil Brown" |
2432 | ,Title="Meet the Lockers" | 2503 | ,Title="Meet the {Lockers}" |
2433 | ,month="August" | 2504 | ,month="August" |
2434 | ,day="3" | 2505 | ,day="3" |
2435 | ,year="2011" | 2506 | ,year="2011" |
2436 | ,note="Available: | 2507 | ,note="Available: |
2437 | \url{http://lwn.net/Articles/453685/} | 2508 | \url{http://lwn.net/Articles/453685/} |
2438 | [Viewed September 2, 2011]" | 2509 | [Viewed September 2, 2011]" |
2439 | ,annotation=" | 2510 | ,annotation={ |
2440 | The Locker family as an analogy for locking, reference counting, | 2511 | The Locker family as an analogy for locking, reference counting, |
2441 | RCU, and seqlock. | 2512 | RCU, and seqlock. |
2442 | " | 2513 | } |
2514 | } | ||
2515 | |||
2516 | @inproceedings{Seyster:2011:RFA:2075416.2075425 | ||
2517 | ,author = {Seyster, Justin and Radhakrishnan, Prabakar and Katoch, Samriti and Duggal, Abhinav and Stoller, Scott D. and Zadok, Erez} | ||
2518 | ,title = {Redflag: a framework for analysis of Kernel-level concurrency} | ||
2519 | ,booktitle = {Proceedings of the 11th international conference on Algorithms and architectures for parallel processing - Volume Part I} | ||
2520 | ,series = {ICA3PP'11} | ||
2521 | ,year = {2011} | ||
2522 | ,isbn = {978-3-642-24649-4} | ||
2523 | ,location = {Melbourne, Australia} | ||
2524 | ,pages = {66--79} | ||
2525 | ,numpages = {14} | ||
2526 | ,url = {http://dl.acm.org/citation.cfm?id=2075416.2075425} | ||
2527 | ,acmid = {2075425} | ||
2528 | ,publisher = {Springer-Verlag} | ||
2529 | ,address = {Berlin, Heidelberg} | ||
2530 | } | ||
2531 | |||
2532 | @phdthesis{JoshTriplettPhD | ||
2533 | ,author="Josh Triplett" | ||
2534 | ,title="Relativistic Causal Ordering: A Memory Model for Scalable Concurrent Data Structures" | ||
2535 | ,school="Portland State University" | ||
2536 | ,year="2012" | ||
2537 | ,annotation={ | ||
2538 | RCU-protected hash tables, barriers vs. read-side traversal order. | ||
2539 | . | ||
2540 | If the updater is making changes in the opposite direction from | ||
2541 | the read-side traveral order, the updater need only execute a | ||
2542 | memory-barrier instruction, but if in the same direction, the | ||
2543 | updater needs to wait for a grace period between the individual | ||
2544 | updates. | ||
2545 | } | ||
2443 | } | 2546 | } |
2444 | 2547 | ||
2445 | @article{MathieuDesnoyers2012URCU | 2548 | @article{MathieuDesnoyers2012URCU |
@@ -2459,5 +2562,150 @@ lot of {Linux} into your technology!!!" | |||
2459 | RCU updates, RCU grace-period batching, update overhead, | 2562 | RCU updates, RCU grace-period batching, update overhead, |
2460 | http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf | 2563 | http://www.rdrop.com/users/paulmck/RCU/urcu-main-accepted.2011.08.30a.pdf |
2461 | http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf | 2564 | http://www.rdrop.com/users/paulmck/RCU/urcu-supp-accepted.2011.08.30a.pdf |
2565 | http://www.computer.org/cms/Computer.org/dl/trans/td/2012/02/extras/ttd2012020375s.pdf | ||
2566 | } | ||
2567 | } | ||
2568 | |||
2569 | @inproceedings{AustinClements2012RCULinux:mmapsem | ||
2570 | ,author = {Austin Clements and Frans Kaashoek and Nickolai Zeldovich} | ||
2571 | ,title = {Scalable Address Spaces Using {RCU} Balanced Trees} | ||
2572 | ,booktitle = {Architectural Support for Programming Languages and Operating Systems (ASPLOS 2012)} | ||
2573 | ,month = {March} | ||
2574 | ,year = {2012} | ||
2575 | ,pages = {199--210} | ||
2576 | ,numpages = {12} | ||
2577 | ,publisher = {ACM} | ||
2578 | ,address = {London, UK} | ||
2579 | ,url="http://people.csail.mit.edu/nickolai/papers/clements-bonsai.pdf" | ||
2580 | } | ||
2581 | |||
2582 | @unpublished{PaulEMcKenney2012ELCbattery | ||
2583 | ,Author="Paul E. McKenney" | ||
2584 | ,Title="Making {RCU} Safe For Battery-Powered Devices" | ||
2585 | ,month="February" | ||
2586 | ,day="15" | ||
2587 | ,year="2012" | ||
2588 | ,note="Available: | ||
2589 | \url{http://www.rdrop.com/users/paulmck/RCU/RCUdynticks.2012.02.15b.pdf} | ||
2590 | [Viewed March 1, 2012]" | ||
2591 | ,annotation={ | ||
2592 | RCU_FAST_NO_HZ, round 2. | ||
2593 | } | ||
2594 | } | ||
2595 | |||
2596 | @article{GuillermoVigueras2012RCUCrowd | ||
2597 | ,author = {Vigueras, Guillermo and Ordu\~{n}a, Juan M. and Lozano, Miguel} | ||
2598 | ,day = {25} | ||
2599 | ,doi = {10.1007/s11227-012-0766-x} | ||
2600 | ,issn = {0920-8542} | ||
2601 | ,journal = {The Journal of Supercomputing} | ||
2602 | ,keywords = {linux, simulation} | ||
2603 | ,month = apr | ||
2604 | ,posted-at = {2012-05-03 09:12:04} | ||
2605 | ,priority = {2} | ||
2606 | ,title = {{A Read-Copy Update based parallel server for distributed crowd simulations}} | ||
2607 | ,url = {http://dx.doi.org/10.1007/s11227-012-0766-x} | ||
2608 | ,year = {2012} | ||
2609 | } | ||
2610 | |||
2611 | |||
2612 | @unpublished{JonCorbet2012ACCESS:ONCE | ||
2613 | ,Author="Jon Corbet" | ||
2614 | ,Title="{ACCESS\_ONCE()}" | ||
2615 | ,month="August" | ||
2616 | ,day="1" | ||
2617 | ,year="2012" | ||
2618 | ,note="\url{http://lwn.net/Articles/508991/}" | ||
2619 | ,annotation={ | ||
2620 | A couple of simple specific compiler optimizations that motivate | ||
2621 | ACCESS_ONCE(). | ||
2622 | } | ||
2623 | } | ||
2624 | |||
2625 | @unpublished{AlexeyGotsman2012VerifyGraceExtended | ||
2626 | ,Author="Alexey Gotsman and Noam Rinetzky and Hongseok Yang" | ||
2627 | ,Title="Verifying Highly Concurrent Algorithms with Grace (extended version)" | ||
2628 | ,month="July" | ||
2629 | ,day="10" | ||
2630 | ,year="2012" | ||
2631 | ,note="\url{http://software.imdea.org/~gotsman/papers/recycling-esop13-ext.pdf}" | ||
2632 | ,annotation={ | ||
2633 | Separation-logic formulation of RCU uses. | ||
2634 | } | ||
2635 | } | ||
2636 | |||
2637 | @unpublished{PaulMcKenney2012RCUUsage | ||
2638 | ,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole" | ||
2639 | ,Title="{RCU} Usage In the Linux Kernel: One Decade Later" | ||
2640 | ,month="September" | ||
2641 | ,day="17" | ||
2642 | ,year="2012" | ||
2643 | ,url=http://rdrop.com/users/paulmck/techreports/survey.2012.09.17a.pdf | ||
2644 | ,note="Technical report paulmck.2012.09.17" | ||
2645 | ,annotation={ | ||
2646 | Overview of the first variant of no-CBs CPUs for RCU. | ||
2647 | } | ||
2648 | } | ||
2649 | |||
2650 | @unpublished{JonCorbet2012NOCB | ||
2651 | ,Author="Jon Corbet" | ||
2652 | ,Title="Relocating RCU callbacks" | ||
2653 | ,month="October" | ||
2654 | ,day="31" | ||
2655 | ,year="2012" | ||
2656 | ,note="\url{http://lwn.net/Articles/522262/}" | ||
2657 | ,annotation={ | ||
2658 | Overview of the first variant of no-CBs CPUs for RCU. | ||
2659 | } | ||
2660 | } | ||
2661 | |||
2662 | @phdthesis{JustinSeyster2012PhD | ||
2663 | ,author="Justin Seyster" | ||
2664 | ,title="Runtime Verification of Kernel-Level Concurrency Using Compiler-Based Instrumentation" | ||
2665 | ,school="Stony Brook University" | ||
2666 | ,year="2012" | ||
2667 | ,annotation={ | ||
2668 | Looking for data races, including those involving RCU. | ||
2669 | Proposal: | ||
2670 | http://www.fsl.cs.sunysb.edu/docs/jseyster-proposal/redflag.pdf | ||
2671 | Dissertation: | ||
2672 | http://www.fsl.cs.sunysb.edu/docs/jseyster-dissertation/redflag.pdf | ||
2673 | } | ||
2674 | } | ||
2675 | |||
2676 | @unpublished{PaulEMcKenney2013RCUUsage | ||
2677 | ,Author="Paul E. McKenney and Silas Boyd-Wickizer and Jonathan Walpole" | ||
2678 | ,Title="{RCU} Usage in the {Linux} Kernel: One Decade Later" | ||
2679 | ,month="February" | ||
2680 | ,day="24" | ||
2681 | ,year="2013" | ||
2682 | ,note="\url{http://rdrop.com/users/paulmck/techreports/RCUUsage.2013.02.24a.pdf}" | ||
2683 | ,annotation={ | ||
2684 | Usage of RCU within the Linux kernel. | ||
2685 | } | ||
2686 | } | ||
2687 | |||
2688 | @inproceedings{AlexeyGotsman2013ESOPRCU | ||
2689 | ,author = {Alexey Gotsman and Noam Rinetzky and Hongseok Yang} | ||
2690 | ,title = {Verifying concurrent memory reclamation algorithms with grace} | ||
2691 | ,booktitle = {ESOP'13: European Symposium on Programming} | ||
2692 | ,year = {2013} | ||
2693 | ,pages = {249--269} | ||
2694 | ,publisher = {Springer} | ||
2695 | ,address = {Rome, Italy} | ||
2696 | ,annotation={ | ||
2697 | http://software.imdea.org/~gotsman/papers/recycling-esop13.pdf | ||
2698 | } | ||
2699 | } | ||
2700 | |||
2701 | @unpublished{PaulEMcKenney2013NoTinyPreempt | ||
2702 | ,Author="Paul E. McKenney" | ||
2703 | ,Title="Simplifying RCU" | ||
2704 | ,month="March" | ||
2705 | ,day="6" | ||
2706 | ,year="2013" | ||
2707 | ,note="\url{http://lwn.net/Articles/541037/}" | ||
2708 | ,annotation={ | ||
2709 | Getting rid of TINY_PREEMPT_RCU. | ||
2462 | } | 2710 | } |
2463 | } | 2711 | } |
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt index 7703ec73a9bb..91266193b8f4 100644 --- a/Documentation/RCU/checklist.txt +++ b/Documentation/RCU/checklist.txt | |||
@@ -202,8 +202,8 @@ over a rather long period of time, but improvements are always welcome! | |||
202 | updater uses call_rcu_sched() or synchronize_sched(), then | 202 | updater uses call_rcu_sched() or synchronize_sched(), then |
203 | the corresponding readers must disable preemption, possibly | 203 | the corresponding readers must disable preemption, possibly |
204 | by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). | 204 | by calling rcu_read_lock_sched() and rcu_read_unlock_sched(). |
205 | If the updater uses synchronize_srcu() or call_srcu(), | 205 | If the updater uses synchronize_srcu() or call_srcu(), then |
206 | the the corresponding readers must use srcu_read_lock() and | 206 | the corresponding readers must use srcu_read_lock() and |
207 | srcu_read_unlock(), and with the same srcu_struct. The rules for | 207 | srcu_read_unlock(), and with the same srcu_struct. The rules for |
208 | the expedited primitives are the same as for their non-expedited | 208 | the expedited primitives are the same as for their non-expedited |
209 | counterparts. Mixing things up will result in confusion and | 209 | counterparts. Mixing things up will result in confusion and |
diff --git a/Documentation/RCU/rcubarrier.txt b/Documentation/RCU/rcubarrier.txt index 2e319d1b9ef2..b10cfe711e68 100644 --- a/Documentation/RCU/rcubarrier.txt +++ b/Documentation/RCU/rcubarrier.txt | |||
@@ -70,10 +70,14 @@ in realtime kernels in order to avoid excessive scheduling latencies. | |||
70 | 70 | ||
71 | rcu_barrier() | 71 | rcu_barrier() |
72 | 72 | ||
73 | We instead need the rcu_barrier() primitive. This primitive is similar | 73 | We instead need the rcu_barrier() primitive. Rather than waiting for |
74 | to synchronize_rcu(), but instead of waiting solely for a grace | 74 | a grace period to elapse, rcu_barrier() waits for all outstanding RCU |
75 | period to elapse, it also waits for all outstanding RCU callbacks to | 75 | callbacks to complete. Please note that rcu_barrier() does -not- imply |
76 | complete. Pseudo-code using rcu_barrier() is as follows: | 76 | synchronize_rcu(), in particular, if there are no RCU callbacks queued |
77 | anywhere, rcu_barrier() is within its rights to return immediately, | ||
78 | without waiting for a grace period to elapse. | ||
79 | |||
80 | Pseudo-code using rcu_barrier() is as follows: | ||
77 | 81 | ||
78 | 1. Prevent any new RCU callbacks from being posted. | 82 | 1. Prevent any new RCU callbacks from being posted. |
79 | 2. Execute rcu_barrier(). | 83 | 2. Execute rcu_barrier(). |
diff --git a/Documentation/RCU/stallwarn.txt b/Documentation/RCU/stallwarn.txt index 8e9359de1d28..6f3a0057548e 100644 --- a/Documentation/RCU/stallwarn.txt +++ b/Documentation/RCU/stallwarn.txt | |||
@@ -12,12 +12,12 @@ CONFIG_RCU_CPU_STALL_TIMEOUT | |||
12 | This kernel configuration parameter defines the period of time | 12 | This kernel configuration parameter defines the period of time |
13 | that RCU will wait from the beginning of a grace period until it | 13 | that RCU will wait from the beginning of a grace period until it |
14 | issues an RCU CPU stall warning. This time period is normally | 14 | issues an RCU CPU stall warning. This time period is normally |
15 | sixty seconds. | 15 | 21 seconds. |
16 | 16 | ||
17 | This configuration parameter may be changed at runtime via the | 17 | This configuration parameter may be changed at runtime via the |
18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however | 18 | /sys/module/rcutree/parameters/rcu_cpu_stall_timeout, however |
19 | this parameter is checked only at the beginning of a cycle. | 19 | this parameter is checked only at the beginning of a cycle. |
20 | So if you are 30 seconds into a 70-second stall, setting this | 20 | So if you are 10 seconds into a 40-second stall, setting this |
21 | sysfs parameter to (say) five will shorten the timeout for the | 21 | sysfs parameter to (say) five will shorten the timeout for the |
22 | -next- stall, or the following warning for the current stall | 22 | -next- stall, or the following warning for the current stall |
23 | (assuming the stall lasts long enough). It will not affect the | 23 | (assuming the stall lasts long enough). It will not affect the |
@@ -32,7 +32,7 @@ CONFIG_RCU_CPU_STALL_VERBOSE | |||
32 | also dump the stacks of any tasks that are blocking the current | 32 | also dump the stacks of any tasks that are blocking the current |
33 | RCU-preempt grace period. | 33 | RCU-preempt grace period. |
34 | 34 | ||
35 | RCU_CPU_STALL_INFO | 35 | CONFIG_RCU_CPU_STALL_INFO |
36 | 36 | ||
37 | This kernel configuration parameter causes the stall warning to | 37 | This kernel configuration parameter causes the stall warning to |
38 | print out additional per-CPU diagnostic information, including | 38 | print out additional per-CPU diagnostic information, including |
@@ -43,7 +43,8 @@ RCU_STALL_DELAY_DELTA | |||
43 | Although the lockdep facility is extremely useful, it does add | 43 | Although the lockdep facility is extremely useful, it does add |
44 | some overhead. Therefore, under CONFIG_PROVE_RCU, the | 44 | some overhead. Therefore, under CONFIG_PROVE_RCU, the |
45 | RCU_STALL_DELAY_DELTA macro allows five extra seconds before | 45 | RCU_STALL_DELAY_DELTA macro allows five extra seconds before |
46 | giving an RCU CPU stall warning message. | 46 | giving an RCU CPU stall warning message. (This is a cpp |
47 | macro, not a kernel configuration parameter.) | ||
47 | 48 | ||
48 | RCU_STALL_RAT_DELAY | 49 | RCU_STALL_RAT_DELAY |
49 | 50 | ||
@@ -52,7 +53,8 @@ RCU_STALL_RAT_DELAY | |||
52 | However, if the offending CPU does not detect its own stall in | 53 | However, if the offending CPU does not detect its own stall in |
53 | the number of jiffies specified by RCU_STALL_RAT_DELAY, then | 54 | the number of jiffies specified by RCU_STALL_RAT_DELAY, then |
54 | some other CPU will complain. This delay is normally set to | 55 | some other CPU will complain. This delay is normally set to |
55 | two jiffies. | 56 | two jiffies. (This is a cpp macro, not a kernel configuration |
57 | parameter.) | ||
56 | 58 | ||
57 | When a CPU detects that it is stalling, it will print a message similar | 59 | When a CPU detects that it is stalling, it will print a message similar |
58 | to the following: | 60 | to the following: |
@@ -86,7 +88,12 @@ printing, there will be a spurious stall-warning message: | |||
86 | 88 | ||
87 | INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) | 89 | INFO: rcu_bh_state detected stalls on CPUs/tasks: { } (detected by 4, 2502 jiffies) |
88 | 90 | ||
89 | This is rare, but does happen from time to time in real life. | 91 | This is rare, but does happen from time to time in real life. It is also |
92 | possible for a zero-jiffy stall to be flagged in this case, depending | ||
93 | on how the stall warning and the grace-period initialization happen to | ||
94 | interact. Please note that it is not possible to entirely eliminate this | ||
95 | sort of false positive without resorting to things like stop_machine(), | ||
96 | which is overkill for this sort of problem. | ||
90 | 97 | ||
91 | If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set, | 98 | If the CONFIG_RCU_CPU_STALL_INFO kernel configuration parameter is set, |
92 | more information is printed with the stall-warning message, for example: | 99 | more information is printed with the stall-warning message, for example: |
@@ -216,4 +223,5 @@ that portion of the stack which remains the same from trace to trace. | |||
216 | If you can reliably trigger the stall, ftrace can be quite helpful. | 223 | If you can reliably trigger the stall, ftrace can be quite helpful. |
217 | 224 | ||
218 | RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE | 225 | RCU bugs can often be debugged with the help of CONFIG_RCU_TRACE |
219 | and with RCU's event tracing. | 226 | and with RCU's event tracing. For information on RCU's event tracing, |
227 | see include/trace/events/rcu.h. | ||
diff --git a/Documentation/RCU/torture.txt b/Documentation/RCU/torture.txt index d8a502387397..dac02a6219b1 100644 --- a/Documentation/RCU/torture.txt +++ b/Documentation/RCU/torture.txt | |||
@@ -42,6 +42,16 @@ fqs_holdoff Holdoff time (in microseconds) between consecutive calls | |||
42 | fqs_stutter Wait time (in seconds) between consecutive bursts | 42 | fqs_stutter Wait time (in seconds) between consecutive bursts |
43 | of calls to force_quiescent_state(). | 43 | of calls to force_quiescent_state(). |
44 | 44 | ||
45 | gp_normal Make the fake writers use normal synchronous grace-period | ||
46 | primitives. | ||
47 | |||
48 | gp_exp Make the fake writers use expedited synchronous grace-period | ||
49 | primitives. If both gp_normal and gp_exp are set, or | ||
50 | if neither gp_normal nor gp_exp are set, then randomly | ||
51 | choose the primitive so that about 50% are normal and | ||
52 | 50% expedited. By default, neither are set, which | ||
53 | gives best overall test coverage. | ||
54 | |||
45 | irqreader Says to invoke RCU readers from irq level. This is currently | 55 | irqreader Says to invoke RCU readers from irq level. This is currently |
46 | done via timers. Defaults to "1" for variants of RCU that | 56 | done via timers. Defaults to "1" for variants of RCU that |
47 | permit this. (Or, more accurately, variants of RCU that do | 57 | permit this. (Or, more accurately, variants of RCU that do |
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 6e97e73d87b5..26b1e31d5a13 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
@@ -109,6 +109,16 @@ probably didn't even receive earlier versions of the patch. | |||
109 | If the patch fixes a logged bug entry, refer to that bug entry by | 109 | If the patch fixes a logged bug entry, refer to that bug entry by |
110 | number and URL. | 110 | number and URL. |
111 | 111 | ||
112 | If you want to refer to a specific commit, don't just refer to the | ||
113 | SHA-1 ID of the commit. Please also include the oneline summary of | ||
114 | the commit, to make it easier for reviewers to know what it is about. | ||
115 | Example: | ||
116 | |||
117 | Commit e21d2170f36602ae2708 ("video: remove unnecessary | ||
118 | platform_set_drvdata()") removed the unnecessary | ||
119 | platform_set_drvdata(), but left the variable "dev" unused, | ||
120 | delete it. | ||
121 | |||
112 | 122 | ||
113 | 3) Separate your changes. | 123 | 3) Separate your changes. |
114 | 124 | ||
diff --git a/Documentation/acpi/dsdt-override.txt b/Documentation/acpi/dsdt-override.txt index febbb1ba4d23..784841caa6e6 100644 --- a/Documentation/acpi/dsdt-override.txt +++ b/Documentation/acpi/dsdt-override.txt | |||
@@ -4,4 +4,4 @@ CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel. | |||
4 | 4 | ||
5 | When to use this method is described in detail on the | 5 | When to use this method is described in detail on the |
6 | Linux/ACPI home page: | 6 | Linux/ACPI home page: |
7 | http://www.lesswatts.org/projects/acpi/overridingDSDT.php | 7 | https://01.org/linux-acpi/documentation/overriding-dsdt |
diff --git a/Documentation/acpi/enumeration.txt b/Documentation/acpi/enumeration.txt index d9be7a97dff3..b994bcb32b92 100644 --- a/Documentation/acpi/enumeration.txt +++ b/Documentation/acpi/enumeration.txt | |||
@@ -207,7 +207,7 @@ passing those. One idea is to return this in _DSM method like: | |||
207 | Return (Local0) | 207 | Return (Local0) |
208 | } | 208 | } |
209 | 209 | ||
210 | Then the at25 SPI driver can get this configation by calling _DSM on its | 210 | Then the at25 SPI driver can get this configuration by calling _DSM on its |
211 | ACPI handle like: | 211 | ACPI handle like: |
212 | 212 | ||
213 | struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; | 213 | struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; |
@@ -228,19 +228,9 @@ ACPI handle like: | |||
228 | I2C serial bus support | 228 | I2C serial bus support |
229 | ~~~~~~~~~~~~~~~~~~~~~~ | 229 | ~~~~~~~~~~~~~~~~~~~~~~ |
230 | The slaves behind I2C bus controller only need to add the ACPI IDs like | 230 | The slaves behind I2C bus controller only need to add the ACPI IDs like |
231 | with the platform and SPI drivers. However the I2C bus controller driver | 231 | with the platform and SPI drivers. The I2C core automatically enumerates |
232 | needs to call acpi_i2c_register_devices() after it has added the adapter. | 232 | any slave devices behind the controller device once the adapter is |
233 | 233 | registered. | |
234 | An I2C bus (controller) driver does: | ||
235 | |||
236 | ... | ||
237 | ret = i2c_add_numbered_adapter(adapter); | ||
238 | if (ret) | ||
239 | /* handle error */ | ||
240 | |||
241 | of_i2c_register_devices(adapter); | ||
242 | /* Enumerate the slave devices behind this bus via ACPI */ | ||
243 | acpi_i2c_register_devices(adapter); | ||
244 | 234 | ||
245 | Below is an example of how to add ACPI support to the existing mpu3050 | 235 | Below is an example of how to add ACPI support to the existing mpu3050 |
246 | input driver: | 236 | input driver: |
@@ -305,10 +295,6 @@ These GPIO numbers are controller relative and path "\\_SB.PCI0.GPI0" | |||
305 | specifies the path to the controller. In order to use these GPIOs in Linux | 295 | specifies the path to the controller. In order to use these GPIOs in Linux |
306 | we need to translate them to the Linux GPIO numbers. | 296 | we need to translate them to the Linux GPIO numbers. |
307 | 297 | ||
308 | The driver can do this by including <linux/acpi_gpio.h> and then calling | ||
309 | acpi_get_gpio(path, gpio). This will return the Linux GPIO number or | ||
310 | negative errno if there was no translation found. | ||
311 | |||
312 | In a simple case of just getting the Linux GPIO number from device | 298 | In a simple case of just getting the Linux GPIO number from device |
313 | resources one can use acpi_get_gpio_by_index() helper function. It takes | 299 | resources one can use acpi_get_gpio_by_index() helper function. It takes |
314 | pointer to the device and index of the GpioIo/GpioInt descriptor in the | 300 | pointer to the device and index of the GpioIo/GpioInt descriptor in the |
@@ -332,3 +318,25 @@ suitable to the gpiolib before passing them. | |||
332 | 318 | ||
333 | In case of GpioInt resource an additional call to gpio_to_irq() must be | 319 | In case of GpioInt resource an additional call to gpio_to_irq() must be |
334 | done before calling request_irq(). | 320 | done before calling request_irq(). |
321 | |||
322 | Note that the above API is ACPI specific and not recommended for drivers | ||
323 | that need to support non-ACPI systems. The recommended way is to use | ||
324 | the descriptor based GPIO interfaces. The above example looks like this | ||
325 | when converted to the GPIO desc: | ||
326 | |||
327 | #include <linux/gpio/consumer.h> | ||
328 | ... | ||
329 | |||
330 | struct gpio_desc *irq_desc, *power_desc; | ||
331 | |||
332 | irq_desc = gpiod_get_index(dev, NULL, 1); | ||
333 | if (IS_ERR(irq_desc)) | ||
334 | /* handle error */ | ||
335 | |||
336 | power_desc = gpiod_get_index(dev, NULL, 0); | ||
337 | if (IS_ERR(power_desc)) | ||
338 | /* handle error */ | ||
339 | |||
340 | /* Now we can use the GPIO descriptors */ | ||
341 | |||
342 | See also Documentation/gpio.txt. | ||
diff --git a/Documentation/aoe/udev.txt b/Documentation/aoe/udev.txt index 8686e789542e..1f06daf03f5b 100644 --- a/Documentation/aoe/udev.txt +++ b/Documentation/aoe/udev.txt | |||
@@ -23,4 +23,4 @@ SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="02 | |||
23 | SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220" | 23 | SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220" |
24 | 24 | ||
25 | # aoe block devices | 25 | # aoe block devices |
26 | KERNEL=="etherd*", NAME="%k", GROUP="disk" | 26 | KERNEL=="etherd*", GROUP="disk" |
diff --git a/Documentation/arm/Booting b/Documentation/arm/Booting index 0c1f475fdf36..371814a36719 100644 --- a/Documentation/arm/Booting +++ b/Documentation/arm/Booting | |||
@@ -18,7 +18,8 @@ following: | |||
18 | 2. Initialise one serial port. | 18 | 2. Initialise one serial port. |
19 | 3. Detect the machine type. | 19 | 3. Detect the machine type. |
20 | 4. Setup the kernel tagged list. | 20 | 4. Setup the kernel tagged list. |
21 | 5. Call the kernel image. | 21 | 5. Load initramfs. |
22 | 6. Call the kernel image. | ||
22 | 23 | ||
23 | 24 | ||
24 | 1. Setup and initialise RAM | 25 | 1. Setup and initialise RAM |
@@ -120,12 +121,27 @@ tagged list. | |||
120 | The boot loader must pass at a minimum the size and location of the | 121 | The boot loader must pass at a minimum the size and location of the |
121 | system memory, and the root filesystem location. The dtb must be | 122 | system memory, and the root filesystem location. The dtb must be |
122 | placed in a region of memory where the kernel decompressor will not | 123 | placed in a region of memory where the kernel decompressor will not |
123 | overwrite it. The recommended placement is in the first 16KiB of RAM | 124 | overwrite it, whilst remaining within the region which will be covered |
124 | with the caveat that it may not be located at physical address 0 since | 125 | by the kernel's low-memory mapping. |
125 | the kernel interprets a value of 0 in r2 to mean neither a tagged list | ||
126 | nor a dtb were passed. | ||
127 | 126 | ||
128 | 5. Calling the kernel image | 127 | A safe location is just above the 128MiB boundary from start of RAM. |
128 | |||
129 | 5. Load initramfs. | ||
130 | ------------------ | ||
131 | |||
132 | Existing boot loaders: OPTIONAL | ||
133 | New boot loaders: OPTIONAL | ||
134 | |||
135 | If an initramfs is in use then, as with the dtb, it must be placed in | ||
136 | a region of memory where the kernel decompressor will not overwrite it | ||
137 | while also with the region which will be covered by the kernel's | ||
138 | low-memory mapping. | ||
139 | |||
140 | A safe location is just above the device tree blob which itself will | ||
141 | be loaded just above the 128MiB boundary from the start of RAM as | ||
142 | recommended above. | ||
143 | |||
144 | 6. Calling the kernel image | ||
129 | --------------------------- | 145 | --------------------------- |
130 | 146 | ||
131 | Existing boot loaders: MANDATORY | 147 | Existing boot loaders: MANDATORY |
@@ -136,11 +152,17 @@ is stored in flash, and is linked correctly to be run from flash, | |||
136 | then it is legal for the boot loader to call the zImage in flash | 152 | then it is legal for the boot loader to call the zImage in flash |
137 | directly. | 153 | directly. |
138 | 154 | ||
139 | The zImage may also be placed in system RAM (at any location) and | 155 | The zImage may also be placed in system RAM and called there. The |
140 | called there. Note that the kernel uses 16K of RAM below the image | 156 | kernel should be placed in the first 128MiB of RAM. It is recommended |
141 | to store page tables. The recommended placement is 32KiB into RAM. | 157 | that it is loaded above 32MiB in order to avoid the need to relocate |
158 | prior to decompression, which will make the boot process slightly | ||
159 | faster. | ||
160 | |||
161 | When booting a raw (non-zImage) kernel the constraints are tighter. | ||
162 | In this case the kernel must be loaded at an offset into system equal | ||
163 | to TEXT_OFFSET - PAGE_OFFSET. | ||
142 | 164 | ||
143 | In either case, the following conditions must be met: | 165 | In any case, the following conditions must be met: |
144 | 166 | ||
145 | - Quiesce all DMA capable devices so that memory does not get | 167 | - Quiesce all DMA capable devices so that memory does not get |
146 | corrupted by bogus network packets or disk data. This will save | 168 | corrupted by bogus network packets or disk data. This will save |
diff --git a/Documentation/arm/Marvell/README b/Documentation/arm/Marvell/README index 8f08a86e03b7..da0151db9964 100644 --- a/Documentation/arm/Marvell/README +++ b/Documentation/arm/Marvell/README | |||
@@ -88,6 +88,7 @@ EBU Armada family | |||
88 | MV78230 | 88 | MV78230 |
89 | MV78260 | 89 | MV78260 |
90 | MV78460 | 90 | MV78460 |
91 | NOTE: not to be confused with the non-SMP 78xx0 SoCs | ||
91 | 92 | ||
92 | Product Brief: http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf | 93 | Product Brief: http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf |
93 | No public datasheet available. | 94 | No public datasheet available. |
diff --git a/Documentation/arm/OMAP/omap_pm b/Documentation/arm/OMAP/omap_pm index 9012bb039094..4ae915a9f899 100644 --- a/Documentation/arm/OMAP/omap_pm +++ b/Documentation/arm/OMAP/omap_pm | |||
@@ -78,7 +78,7 @@ to NULL. Drivers should use the following idiom: | |||
78 | The most common usage of these functions will probably be to specify | 78 | The most common usage of these functions will probably be to specify |
79 | the maximum time from when an interrupt occurs, to when the device | 79 | the maximum time from when an interrupt occurs, to when the device |
80 | becomes accessible. To accomplish this, driver writers should use the | 80 | becomes accessible. To accomplish this, driver writers should use the |
81 | set_max_mpu_wakeup_lat() function to to constrain the MPU wakeup | 81 | set_max_mpu_wakeup_lat() function to constrain the MPU wakeup |
82 | latency, and the set_max_dev_wakeup_lat() function to constrain the | 82 | latency, and the set_max_dev_wakeup_lat() function to constrain the |
83 | device wakeup latency (from clk_enable() to accessibility). For | 83 | device wakeup latency (from clk_enable() to accessibility). For |
84 | example, | 84 | example, |
diff --git a/Documentation/arm/kernel_mode_neon.txt b/Documentation/arm/kernel_mode_neon.txt new file mode 100644 index 000000000000..525452726d31 --- /dev/null +++ b/Documentation/arm/kernel_mode_neon.txt | |||
@@ -0,0 +1,121 @@ | |||
1 | Kernel mode NEON | ||
2 | ================ | ||
3 | |||
4 | TL;DR summary | ||
5 | ------------- | ||
6 | * Use only NEON instructions, or VFP instructions that don't rely on support | ||
7 | code | ||
8 | * Isolate your NEON code in a separate compilation unit, and compile it with | ||
9 | '-mfpu=neon -mfloat-abi=softfp' | ||
10 | * Put kernel_neon_begin() and kernel_neon_end() calls around the calls into your | ||
11 | NEON code | ||
12 | * Don't sleep in your NEON code, and be aware that it will be executed with | ||
13 | preemption disabled | ||
14 | |||
15 | |||
16 | Introduction | ||
17 | ------------ | ||
18 | It is possible to use NEON instructions (and in some cases, VFP instructions) in | ||
19 | code that runs in kernel mode. However, for performance reasons, the NEON/VFP | ||
20 | register file is not preserved and restored at every context switch or taken | ||
21 | exception like the normal register file is, so some manual intervention is | ||
22 | required. Furthermore, special care is required for code that may sleep [i.e., | ||
23 | may call schedule()], as NEON or VFP instructions will be executed in a | ||
24 | non-preemptible section for reasons outlined below. | ||
25 | |||
26 | |||
27 | Lazy preserve and restore | ||
28 | ------------------------- | ||
29 | The NEON/VFP register file is managed using lazy preserve (on UP systems) and | ||
30 | lazy restore (on both SMP and UP systems). This means that the register file is | ||
31 | kept 'live', and is only preserved and restored when multiple tasks are | ||
32 | contending for the NEON/VFP unit (or, in the SMP case, when a task migrates to | ||
33 | another core). Lazy restore is implemented by disabling the NEON/VFP unit after | ||
34 | every context switch, resulting in a trap when subsequently a NEON/VFP | ||
35 | instruction is issued, allowing the kernel to step in and perform the restore if | ||
36 | necessary. | ||
37 | |||
38 | Any use of the NEON/VFP unit in kernel mode should not interfere with this, so | ||
39 | it is required to do an 'eager' preserve of the NEON/VFP register file, and | ||
40 | enable the NEON/VFP unit explicitly so no exceptions are generated on first | ||
41 | subsequent use. This is handled by the function kernel_neon_begin(), which | ||
42 | should be called before any kernel mode NEON or VFP instructions are issued. | ||
43 | Likewise, the NEON/VFP unit should be disabled again after use to make sure user | ||
44 | mode will hit the lazy restore trap upon next use. This is handled by the | ||
45 | function kernel_neon_end(). | ||
46 | |||
47 | |||
48 | Interruptions in kernel mode | ||
49 | ---------------------------- | ||
50 | For reasons of performance and simplicity, it was decided that there shall be no | ||
51 | preserve/restore mechanism for the kernel mode NEON/VFP register contents. This | ||
52 | implies that interruptions of a kernel mode NEON section can only be allowed if | ||
53 | they are guaranteed not to touch the NEON/VFP registers. For this reason, the | ||
54 | following rules and restrictions apply in the kernel: | ||
55 | * NEON/VFP code is not allowed in interrupt context; | ||
56 | * NEON/VFP code is not allowed to sleep; | ||
57 | * NEON/VFP code is executed with preemption disabled. | ||
58 | |||
59 | If latency is a concern, it is possible to put back to back calls to | ||
60 | kernel_neon_end() and kernel_neon_begin() in places in your code where none of | ||
61 | the NEON registers are live. (Additional calls to kernel_neon_begin() should be | ||
62 | reasonably cheap if no context switch occurred in the meantime) | ||
63 | |||
64 | |||
65 | VFP and support code | ||
66 | -------------------- | ||
67 | Earlier versions of VFP (prior to version 3) rely on software support for things | ||
68 | like IEEE-754 compliant underflow handling etc. When the VFP unit needs such | ||
69 | software assistance, it signals the kernel by raising an undefined instruction | ||
70 | exception. The kernel responds by inspecting the VFP control registers and the | ||
71 | current instruction and arguments, and emulates the instruction in software. | ||
72 | |||
73 | Such software assistance is currently not implemented for VFP instructions | ||
74 | executed in kernel mode. If such a condition is encountered, the kernel will | ||
75 | fail and generate an OOPS. | ||
76 | |||
77 | |||
78 | Separating NEON code from ordinary code | ||
79 | --------------------------------------- | ||
80 | The compiler is not aware of the special significance of kernel_neon_begin() and | ||
81 | kernel_neon_end(), i.e., that it is only allowed to issue NEON/VFP instructions | ||
82 | between calls to these respective functions. Furthermore, GCC may generate NEON | ||
83 | instructions of its own at -O3 level if -mfpu=neon is selected, and even if the | ||
84 | kernel is currently compiled at -O2, future changes may result in NEON/VFP | ||
85 | instructions appearing in unexpected places if no special care is taken. | ||
86 | |||
87 | Therefore, the recommended and only supported way of using NEON/VFP in the | ||
88 | kernel is by adhering to the following rules: | ||
89 | * isolate the NEON code in a separate compilation unit and compile it with | ||
90 | '-mfpu=neon -mfloat-abi=softfp'; | ||
91 | * issue the calls to kernel_neon_begin(), kernel_neon_end() as well as the calls | ||
92 | into the unit containing the NEON code from a compilation unit which is *not* | ||
93 | built with the GCC flag '-mfpu=neon' set. | ||
94 | |||
95 | As the kernel is compiled with '-msoft-float', the above will guarantee that | ||
96 | both NEON and VFP instructions will only ever appear in designated compilation | ||
97 | units at any optimization level. | ||
98 | |||
99 | |||
100 | NEON assembler | ||
101 | -------------- | ||
102 | NEON assembler is supported with no additional caveats as long as the rules | ||
103 | above are followed. | ||
104 | |||
105 | |||
106 | NEON code generated by GCC | ||
107 | -------------------------- | ||
108 | The GCC option -ftree-vectorize (implied by -O3) tries to exploit implicit | ||
109 | parallelism, and generates NEON code from ordinary C source code. This is fully | ||
110 | supported as long as the rules above are followed. | ||
111 | |||
112 | |||
113 | NEON intrinsics | ||
114 | --------------- | ||
115 | NEON intrinsics are also supported. However, as code using NEON intrinsics | ||
116 | relies on the GCC header <arm_neon.h>, (which #includes <stdint.h>), you should | ||
117 | observe the following in addition to the rules above: | ||
118 | * Compile the unit containing the NEON intrinsics with '-ffreestanding' so GCC | ||
119 | uses its builtin version of <stdint.h> (this is a C99 header which the kernel | ||
120 | does not supply); | ||
121 | * Include <arm_neon.h> last, or at least after <linux/types.h> | ||
diff --git a/Documentation/arm/sunxi/README b/Documentation/arm/sunxi/README index e3f93fb9224e..7945238453ed 100644 --- a/Documentation/arm/sunxi/README +++ b/Documentation/arm/sunxi/README | |||
@@ -10,6 +10,10 @@ SunXi family | |||
10 | Linux kernel mach directory: arch/arm/mach-sunxi | 10 | Linux kernel mach directory: arch/arm/mach-sunxi |
11 | 11 | ||
12 | Flavors: | 12 | Flavors: |
13 | * ARM926 based SoCs | ||
14 | - Allwinner F20 (sun3i) | ||
15 | + Not Supported | ||
16 | |||
13 | * ARM Cortex-A8 based SoCs | 17 | * ARM Cortex-A8 based SoCs |
14 | - Allwinner A10 (sun4i) | 18 | - Allwinner A10 (sun4i) |
15 | + Datasheet | 19 | + Datasheet |
@@ -25,4 +29,24 @@ SunXi family | |||
25 | + Datasheet | 29 | + Datasheet |
26 | http://dl.linux-sunxi.org/A13/A13%20Datasheet%20-%20v1.12%20%282012-03-29%29.pdf | 30 | http://dl.linux-sunxi.org/A13/A13%20Datasheet%20-%20v1.12%20%282012-03-29%29.pdf |
27 | + User Manual | 31 | + User Manual |
28 | http://dl.linux-sunxi.org/A13/A13%20User%20Manual%20-%20v1.2%20%282013-08-08%29.pdf | 32 | http://dl.linux-sunxi.org/A13/A13%20User%20Manual%20-%20v1.2%20%282013-01-08%29.pdf |
33 | |||
34 | * Dual ARM Cortex-A7 based SoCs | ||
35 | - Allwinner A20 (sun7i) | ||
36 | + User Manual | ||
37 | http://dl.linux-sunxi.org/A20/A20%20User%20Manual%202013-03-22.pdf | ||
38 | |||
39 | - Allwinner A23 | ||
40 | + Not Supported | ||
41 | |||
42 | * Quad ARM Cortex-A7 based SoCs | ||
43 | - Allwinner A31 (sun6i) | ||
44 | + Datasheet | ||
45 | http://dl.linux-sunxi.org/A31/A31%20Datasheet%20-%20v1.00%20(2012-12-24).pdf | ||
46 | |||
47 | - Allwinner A31s (sun6i) | ||
48 | + Not Supported | ||
49 | |||
50 | * Quad ARM Cortex-A15, Quad ARM Cortex-A7 based SoCs | ||
51 | - Allwinner A80 | ||
52 | + Not Supported \ No newline at end of file | ||
diff --git a/Documentation/arm64/booting.txt b/Documentation/arm64/booting.txt index 9c4d388daddc..a9691cc48fe3 100644 --- a/Documentation/arm64/booting.txt +++ b/Documentation/arm64/booting.txt | |||
@@ -45,9 +45,9 @@ sees fit.) | |||
45 | 45 | ||
46 | Requirement: MANDATORY | 46 | Requirement: MANDATORY |
47 | 47 | ||
48 | The device tree blob (dtb) must be no bigger than 2 megabytes in size | 48 | The device tree blob (dtb) must be placed on an 8-byte boundary within |
49 | and placed at a 2-megabyte boundary within the first 512 megabytes from | 49 | the first 512 megabytes from the start of the kernel image and must not |
50 | the start of the kernel image. This is to allow the kernel to map the | 50 | cross a 2-megabyte boundary. This is to allow the kernel to map the |
51 | blob using a single section mapping in the initial page tables. | 51 | blob using a single section mapping in the initial page tables. |
52 | 52 | ||
53 | 53 | ||
@@ -68,13 +68,23 @@ Image target is available instead. | |||
68 | 68 | ||
69 | Requirement: MANDATORY | 69 | Requirement: MANDATORY |
70 | 70 | ||
71 | The decompressed kernel image contains a 32-byte header as follows: | 71 | The decompressed kernel image contains a 64-byte header as follows: |
72 | 72 | ||
73 | u32 magic = 0x14000008; /* branch to stext, little-endian */ | 73 | u32 code0; /* Executable code */ |
74 | u32 res0 = 0; /* reserved */ | 74 | u32 code1; /* Executable code */ |
75 | u64 text_offset; /* Image load offset */ | 75 | u64 text_offset; /* Image load offset */ |
76 | u64 res0 = 0; /* reserved */ | ||
76 | u64 res1 = 0; /* reserved */ | 77 | u64 res1 = 0; /* reserved */ |
77 | u64 res2 = 0; /* reserved */ | 78 | u64 res2 = 0; /* reserved */ |
79 | u64 res3 = 0; /* reserved */ | ||
80 | u64 res4 = 0; /* reserved */ | ||
81 | u32 magic = 0x644d5241; /* Magic number, little endian, "ARM\x64" */ | ||
82 | u32 res5 = 0; /* reserved */ | ||
83 | |||
84 | |||
85 | Header notes: | ||
86 | |||
87 | - code0/code1 are responsible for branching to stext. | ||
78 | 88 | ||
79 | The image must be placed at the specified offset (currently 0x80000) | 89 | The image must be placed at the specified offset (currently 0x80000) |
80 | from the start of the system RAM and called there. The start of the | 90 | from the start of the system RAM and called there. The start of the |
@@ -105,9 +115,10 @@ Before jumping into the kernel, the following conditions must be met: | |||
105 | External caches (if present) must be configured and disabled. | 115 | External caches (if present) must be configured and disabled. |
106 | 116 | ||
107 | - Architected timers | 117 | - Architected timers |
108 | CNTFRQ must be programmed with the timer frequency. | 118 | CNTFRQ must be programmed with the timer frequency and CNTVOFF must |
109 | If entering the kernel at EL1, CNTHCTL_EL2 must have EL1PCTEN (bit 0) | 119 | be programmed with a consistent value on all CPUs. If entering the |
110 | set where available. | 120 | kernel at EL1, CNTHCTL_EL2 must have EL1PCTEN (bit 0) set where |
121 | available. | ||
111 | 122 | ||
112 | - Coherency | 123 | - Coherency |
113 | All CPUs to be booted by the kernel must be part of the same coherency | 124 | All CPUs to be booted by the kernel must be part of the same coherency |
@@ -120,30 +131,46 @@ Before jumping into the kernel, the following conditions must be met: | |||
120 | the kernel image will be entered must be initialised by software at a | 131 | the kernel image will be entered must be initialised by software at a |
121 | higher exception level to prevent execution in an UNKNOWN state. | 132 | higher exception level to prevent execution in an UNKNOWN state. |
122 | 133 | ||
134 | The requirements described above for CPU mode, caches, MMUs, architected | ||
135 | timers, coherency and system registers apply to all CPUs. All CPUs must | ||
136 | enter the kernel in the same exception level. | ||
137 | |||
123 | The boot loader is expected to enter the kernel on each CPU in the | 138 | The boot loader is expected to enter the kernel on each CPU in the |
124 | following manner: | 139 | following manner: |
125 | 140 | ||
126 | - The primary CPU must jump directly to the first instruction of the | 141 | - The primary CPU must jump directly to the first instruction of the |
127 | kernel image. The device tree blob passed by this CPU must contain | 142 | kernel image. The device tree blob passed by this CPU must contain |
128 | for each CPU node: | 143 | an 'enable-method' property for each cpu node. The supported |
129 | 144 | enable-methods are described below. | |
130 | 1. An 'enable-method' property. Currently, the only supported value | ||
131 | for this field is the string "spin-table". | ||
132 | |||
133 | 2. A 'cpu-release-addr' property identifying a 64-bit, | ||
134 | zero-initialised memory location. | ||
135 | 145 | ||
136 | It is expected that the bootloader will generate these device tree | 146 | It is expected that the bootloader will generate these device tree |
137 | properties and insert them into the blob prior to kernel entry. | 147 | properties and insert them into the blob prior to kernel entry. |
138 | 148 | ||
139 | - Any secondary CPUs must spin outside of the kernel in a reserved area | 149 | - CPUs with a "spin-table" enable-method must have a 'cpu-release-addr' |
140 | of memory (communicated to the kernel by a /memreserve/ region in the | 150 | property in their cpu node. This property identifies a |
151 | naturally-aligned 64-bit zero-initalised memory location. | ||
152 | |||
153 | These CPUs should spin outside of the kernel in a reserved area of | ||
154 | memory (communicated to the kernel by a /memreserve/ region in the | ||
141 | device tree) polling their cpu-release-addr location, which must be | 155 | device tree) polling their cpu-release-addr location, which must be |
142 | contained in the reserved region. A wfe instruction may be inserted | 156 | contained in the reserved region. A wfe instruction may be inserted |
143 | to reduce the overhead of the busy-loop and a sev will be issued by | 157 | to reduce the overhead of the busy-loop and a sev will be issued by |
144 | the primary CPU. When a read of the location pointed to by the | 158 | the primary CPU. When a read of the location pointed to by the |
145 | cpu-release-addr returns a non-zero value, the CPU must jump directly | 159 | cpu-release-addr returns a non-zero value, the CPU must jump to this |
146 | to this value. | 160 | value. The value will be written as a single 64-bit little-endian |
161 | value, so CPUs must convert the read value to their native endianness | ||
162 | before jumping to it. | ||
163 | |||
164 | - CPUs with a "psci" enable method should remain outside of | ||
165 | the kernel (i.e. outside of the regions of memory described to the | ||
166 | kernel in the memory node, or in a reserved area of memory described | ||
167 | to the kernel by a /memreserve/ region in the device tree). The | ||
168 | kernel will issue CPU_ON calls as described in ARM document number ARM | ||
169 | DEN 0022A ("Power State Coordination Interface System Software on ARM | ||
170 | processors") to bring CPUs into the kernel. | ||
171 | |||
172 | The device tree should contain a 'psci' node, as described in | ||
173 | Documentation/devicetree/bindings/arm/psci.txt. | ||
147 | 174 | ||
148 | - Secondary CPU general-purpose register settings | 175 | - Secondary CPU general-purpose register settings |
149 | x0 = 0 (reserved for future use) | 176 | x0 = 0 (reserved for future use) |
diff --git a/Documentation/arm64/memory.txt b/Documentation/arm64/memory.txt index 78a377124ef0..5e054bfe4dde 100644 --- a/Documentation/arm64/memory.txt +++ b/Documentation/arm64/memory.txt | |||
@@ -21,7 +21,7 @@ The swapper_pgd_dir address is written to TTBR1 and never written to | |||
21 | TTBR0. | 21 | TTBR0. |
22 | 22 | ||
23 | 23 | ||
24 | AArch64 Linux memory layout: | 24 | AArch64 Linux memory layout with 4KB pages: |
25 | 25 | ||
26 | Start End Size Use | 26 | Start End Size Use |
27 | ----------------------------------------------------------------------- | 27 | ----------------------------------------------------------------------- |
@@ -39,13 +39,38 @@ ffffffbffbc00000 ffffffbffbdfffff 2MB earlyprintk device | |||
39 | 39 | ||
40 | ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O space | 40 | ffffffbffbe00000 ffffffbffbe0ffff 64KB PCI I/O space |
41 | 41 | ||
42 | ffffffbbffff0000 ffffffbcffffffff ~2MB [guard] | 42 | ffffffbffbe10000 ffffffbcffffffff ~2MB [guard] |
43 | 43 | ||
44 | ffffffbffc000000 ffffffbfffffffff 64MB modules | 44 | ffffffbffc000000 ffffffbfffffffff 64MB modules |
45 | 45 | ||
46 | ffffffc000000000 ffffffffffffffff 256GB kernel logical memory map | 46 | ffffffc000000000 ffffffffffffffff 256GB kernel logical memory map |
47 | 47 | ||
48 | 48 | ||
49 | AArch64 Linux memory layout with 64KB pages: | ||
50 | |||
51 | Start End Size Use | ||
52 | ----------------------------------------------------------------------- | ||
53 | 0000000000000000 000003ffffffffff 4TB user | ||
54 | |||
55 | fffffc0000000000 fffffdfbfffeffff ~2TB vmalloc | ||
56 | |||
57 | fffffdfbffff0000 fffffdfbffffffff 64KB [guard page] | ||
58 | |||
59 | fffffdfc00000000 fffffdfdffffffff 8GB vmemmap | ||
60 | |||
61 | fffffdfe00000000 fffffdfffbbfffff ~8GB [guard, future vmmemap] | ||
62 | |||
63 | fffffdfffbc00000 fffffdfffbdfffff 2MB earlyprintk device | ||
64 | |||
65 | fffffdfffbe00000 fffffdfffbe0ffff 64KB PCI I/O space | ||
66 | |||
67 | fffffdfffbe10000 fffffdfffbffffff ~2MB [guard] | ||
68 | |||
69 | fffffdfffc000000 fffffdffffffffff 64MB modules | ||
70 | |||
71 | fffffe0000000000 ffffffffffffffff 2TB kernel logical memory map | ||
72 | |||
73 | |||
49 | Translation table lookup with 4KB pages: | 74 | Translation table lookup with 4KB pages: |
50 | 75 | ||
51 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 76 | +--------+--------+--------+--------+--------+--------+--------+--------+ |
diff --git a/Documentation/arm64/tagged-pointers.txt b/Documentation/arm64/tagged-pointers.txt new file mode 100644 index 000000000000..d9995f1f51b3 --- /dev/null +++ b/Documentation/arm64/tagged-pointers.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | Tagged virtual addresses in AArch64 Linux | ||
2 | ========================================= | ||
3 | |||
4 | Author: Will Deacon <will.deacon@arm.com> | ||
5 | Date : 12 June 2013 | ||
6 | |||
7 | This document briefly describes the provision of tagged virtual | ||
8 | addresses in the AArch64 translation system and their potential uses | ||
9 | in AArch64 Linux. | ||
10 | |||
11 | The kernel configures the translation tables so that translations made | ||
12 | via TTBR0 (i.e. userspace mappings) have the top byte (bits 63:56) of | ||
13 | the virtual address ignored by the translation hardware. This frees up | ||
14 | this byte for application use, with the following caveats: | ||
15 | |||
16 | (1) The kernel requires that all user addresses passed to EL1 | ||
17 | are tagged with tag 0x00. This means that any syscall | ||
18 | parameters containing user virtual addresses *must* have | ||
19 | their top byte cleared before trapping to the kernel. | ||
20 | |||
21 | (2) Non-zero tags are not preserved when delivering signals. | ||
22 | This means that signal handlers in applications making use | ||
23 | of tags cannot rely on the tag information for user virtual | ||
24 | addresses being maintained for fields inside siginfo_t. | ||
25 | One exception to this rule is for signals raised in response | ||
26 | to watchpoint debug exceptions, where the tag information | ||
27 | will be preserved. | ||
28 | |||
29 | (3) Special care should be taken when using tagged pointers, | ||
30 | since it is likely that C compilers will not hazard two | ||
31 | virtual addresses differing only in the upper byte. | ||
32 | |||
33 | The architecture prevents the use of a tagged PC, so the upper byte will | ||
34 | be set to a sign-extension of bit 55 on exception return. | ||
diff --git a/Documentation/block/00-INDEX b/Documentation/block/00-INDEX index d18ecd827c40..929d9904f74b 100644 --- a/Documentation/block/00-INDEX +++ b/Documentation/block/00-INDEX | |||
@@ -6,6 +6,8 @@ capability.txt | |||
6 | - Generic Block Device Capability (/sys/block/<device>/capability) | 6 | - Generic Block Device Capability (/sys/block/<device>/capability) |
7 | cfq-iosched.txt | 7 | cfq-iosched.txt |
8 | - CFQ IO scheduler tunables | 8 | - CFQ IO scheduler tunables |
9 | cmdline-partition.txt | ||
10 | - how to specify block device partitions on kernel command line | ||
9 | data-integrity.txt | 11 | data-integrity.txt |
10 | - Block data integrity | 12 | - Block data integrity |
11 | deadline-iosched.txt | 13 | deadline-iosched.txt |
diff --git a/Documentation/block/cfq-iosched.txt b/Documentation/block/cfq-iosched.txt index 9887f0414c16..f3bc72945cbd 100644 --- a/Documentation/block/cfq-iosched.txt +++ b/Documentation/block/cfq-iosched.txt | |||
@@ -69,7 +69,7 @@ one, this value should be decreased relative to fifo_expire_async. | |||
69 | group_idle | 69 | group_idle |
70 | ----------- | 70 | ----------- |
71 | This parameter forces idling at the CFQ group level instead of CFQ | 71 | This parameter forces idling at the CFQ group level instead of CFQ |
72 | queue level. This was introduced after after a bottleneck was observed | 72 | queue level. This was introduced after a bottleneck was observed |
73 | in higher end storage due to idle on sequential queue and allow dispatch | 73 | in higher end storage due to idle on sequential queue and allow dispatch |
74 | from a single queue. The idea with this parameter is that it can be run with | 74 | from a single queue. The idea with this parameter is that it can be run with |
75 | slice_idle=0 and group_idle=8, so that idling does not happen on individual | 75 | slice_idle=0 and group_idle=8, so that idling does not happen on individual |
diff --git a/Documentation/block/cmdline-partition.txt b/Documentation/block/cmdline-partition.txt new file mode 100644 index 000000000000..525b9f6d7fb4 --- /dev/null +++ b/Documentation/block/cmdline-partition.txt | |||
@@ -0,0 +1,39 @@ | |||
1 | Embedded device command line partition parsing | ||
2 | ===================================================================== | ||
3 | |||
4 | Support for reading the block device partition table from the command line. | ||
5 | It is typically used for fixed block (eMMC) embedded devices. | ||
6 | It has no MBR, so saves storage space. Bootloader can be easily accessed | ||
7 | by absolute address of data on the block device. | ||
8 | Users can easily change the partition. | ||
9 | |||
10 | The format for the command line is just like mtdparts: | ||
11 | |||
12 | blkdevparts=<blkdev-def>[;<blkdev-def>] | ||
13 | <blkdev-def> := <blkdev-id>:<partdef>[,<partdef>] | ||
14 | <partdef> := <size>[@<offset>](part-name) | ||
15 | |||
16 | <blkdev-id> | ||
17 | block device disk name, embedded device used fixed block device, | ||
18 | it's disk name also fixed. such as: mmcblk0, mmcblk1, mmcblk0boot0. | ||
19 | |||
20 | <size> | ||
21 | partition size, in bytes, such as: 512, 1m, 1G. | ||
22 | |||
23 | <offset> | ||
24 | partition start address, in bytes. | ||
25 | |||
26 | (part-name) | ||
27 | partition name, kernel send uevent with "PARTNAME". application can create | ||
28 | a link to block device partition with the name "PARTNAME". | ||
29 | user space application can access partition by partition name. | ||
30 | |||
31 | Example: | ||
32 | eMMC disk name is "mmcblk0" and "mmcblk0boot0" | ||
33 | |||
34 | bootargs: | ||
35 | 'blkdevparts=mmcblk0:1G(data0),1G(data1),-;mmcblk0boot0:1m(boot),-(kernel)' | ||
36 | |||
37 | dmesg: | ||
38 | mmcblk0: p1(data0) p2(data1) p3() | ||
39 | mmcblk0boot0: p1(boot) p2(kernel) | ||
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt index 9b728dc17535..d79b008e4a32 100644 --- a/Documentation/cachetlb.txt +++ b/Documentation/cachetlb.txt | |||
@@ -57,7 +57,7 @@ changes occur: | |||
57 | interface must make sure that any previous page table | 57 | interface must make sure that any previous page table |
58 | modifications for the address space 'vma->vm_mm' in the range | 58 | modifications for the address space 'vma->vm_mm' in the range |
59 | 'start' to 'end-1' will be visible to the cpu. That is, after | 59 | 'start' to 'end-1' will be visible to the cpu. That is, after |
60 | running, here will be no entries in the TLB for 'mm' for | 60 | running, there will be no entries in the TLB for 'mm' for |
61 | virtual addresses in the range 'start' to 'end-1'. | 61 | virtual addresses in the range 'start' to 'end-1'. |
62 | 62 | ||
63 | The "vma" is the backing store being used for the region. | 63 | The "vma" is the backing store being used for the region. |
@@ -375,8 +375,8 @@ maps this page at its virtual address. | |||
375 | 375 | ||
376 | void flush_icache_page(struct vm_area_struct *vma, struct page *page) | 376 | void flush_icache_page(struct vm_area_struct *vma, struct page *page) |
377 | All the functionality of flush_icache_page can be implemented in | 377 | All the functionality of flush_icache_page can be implemented in |
378 | flush_dcache_page and update_mmu_cache. In 2.7 the hope is to | 378 | flush_dcache_page and update_mmu_cache. In the future, the hope |
379 | remove this interface completely. | 379 | is to remove this interface completely. |
380 | 380 | ||
381 | The final category of APIs is for I/O to deliberately aliased address | 381 | The final category of APIs is for I/O to deliberately aliased address |
382 | ranges inside the kernel. Such aliases are set up by use of the | 382 | ranges inside the kernel. Such aliases are set up by use of the |
diff --git a/Documentation/cgroups/memory.txt b/Documentation/cgroups/memory.txt index 2a3330696372..8af4ad121828 100644 --- a/Documentation/cgroups/memory.txt +++ b/Documentation/cgroups/memory.txt | |||
@@ -490,6 +490,8 @@ pgpgin - # of charging events to the memory cgroup. The charging | |||
490 | pgpgout - # of uncharging events to the memory cgroup. The uncharging | 490 | pgpgout - # of uncharging events to the memory cgroup. The uncharging |
491 | event happens each time a page is unaccounted from the cgroup. | 491 | event happens each time a page is unaccounted from the cgroup. |
492 | swap - # of bytes of swap usage | 492 | swap - # of bytes of swap usage |
493 | writeback - # of bytes of file/anon cache that are queued for syncing to | ||
494 | disk. | ||
493 | inactive_anon - # of bytes of anonymous and swap cache memory on inactive | 495 | inactive_anon - # of bytes of anonymous and swap cache memory on inactive |
494 | LRU list. | 496 | LRU list. |
495 | active_anon - # of bytes of anonymous and swap cache memory on active | 497 | active_anon - # of bytes of anonymous and swap cache memory on active |
diff --git a/Documentation/clk.txt b/Documentation/clk.txt index 6f68ba0d1e01..3aeb5c440442 100644 --- a/Documentation/clk.txt +++ b/Documentation/clk.txt | |||
@@ -70,6 +70,10 @@ the operations defined in clk.h: | |||
70 | unsigned long parent_rate); | 70 | unsigned long parent_rate); |
71 | long (*round_rate)(struct clk_hw *hw, unsigned long, | 71 | long (*round_rate)(struct clk_hw *hw, unsigned long, |
72 | unsigned long *); | 72 | unsigned long *); |
73 | long (*determine_rate)(struct clk_hw *hw, | ||
74 | unsigned long rate, | ||
75 | unsigned long *best_parent_rate, | ||
76 | struct clk **best_parent_clk); | ||
73 | int (*set_parent)(struct clk_hw *hw, u8 index); | 77 | int (*set_parent)(struct clk_hw *hw, u8 index); |
74 | u8 (*get_parent)(struct clk_hw *hw); | 78 | u8 (*get_parent)(struct clk_hw *hw); |
75 | int (*set_rate)(struct clk_hw *hw, unsigned long); | 79 | int (*set_rate)(struct clk_hw *hw, unsigned long); |
@@ -179,26 +183,28 @@ mandatory, a cell marked as "n" implies that either including that | |||
179 | callback is invalid or otherwise unnecessary. Empty cells are either | 183 | callback is invalid or otherwise unnecessary. Empty cells are either |
180 | optional or must be evaluated on a case-by-case basis. | 184 | optional or must be evaluated on a case-by-case basis. |
181 | 185 | ||
182 | clock hardware characteristics | 186 | clock hardware characteristics |
183 | ----------------------------------------------------------- | 187 | ----------------------------------------------------------- |
184 | | gate | change rate | single parent | multiplexer | root | | 188 | | gate | change rate | single parent | multiplexer | root | |
185 | |------|-------------|---------------|-------------|------| | 189 | |------|-------------|---------------|-------------|------| |
186 | .prepare | | | | | | | 190 | .prepare | | | | | | |
187 | .unprepare | | | | | | | 191 | .unprepare | | | | | | |
188 | | | | | | | | 192 | | | | | | | |
189 | .enable | y | | | | | | 193 | .enable | y | | | | | |
190 | .disable | y | | | | | | 194 | .disable | y | | | | | |
191 | .is_enabled | y | | | | | | 195 | .is_enabled | y | | | | | |
192 | | | | | | | | 196 | | | | | | | |
193 | .recalc_rate | | y | | | | | 197 | .recalc_rate | | y | | | | |
194 | .round_rate | | y | | | | | 198 | .round_rate | | y [1] | | | | |
195 | .set_rate | | y | | | | | 199 | .determine_rate | | y [1] | | | | |
196 | | | | | | | | 200 | .set_rate | | y | | | | |
197 | .set_parent | | | n | y | n | | 201 | | | | | | | |
198 | .get_parent | | | n | y | n | | 202 | .set_parent | | | n | y | n | |
199 | | | | | | | | 203 | .get_parent | | | n | y | n | |
200 | .init | | | | | | | 204 | | | | | | | |
201 | ----------------------------------------------------------- | 205 | .init | | | | | | |
206 | ----------------------------------------------------------- | ||
207 | [1] either one of round_rate or determine_rate is required. | ||
202 | 208 | ||
203 | Finally, register your clock at run-time with a hardware-specific | 209 | Finally, register your clock at run-time with a hardware-specific |
204 | registration function. This function simply populates struct clk_foo's | 210 | registration function. This function simply populates struct clk_foo's |
diff --git a/Documentation/connector/ucon.c b/Documentation/connector/ucon.c index 4848db8c71ff..8a4da64e02a8 100644 --- a/Documentation/connector/ucon.c +++ b/Documentation/connector/ucon.c | |||
@@ -71,7 +71,7 @@ static int netlink_send(int s, struct cn_msg *msg) | |||
71 | nlh->nlmsg_seq = seq++; | 71 | nlh->nlmsg_seq = seq++; |
72 | nlh->nlmsg_pid = getpid(); | 72 | nlh->nlmsg_pid = getpid(); |
73 | nlh->nlmsg_type = NLMSG_DONE; | 73 | nlh->nlmsg_type = NLMSG_DONE; |
74 | nlh->nlmsg_len = NLMSG_LENGTH(size - sizeof(*nlh)); | 74 | nlh->nlmsg_len = size; |
75 | nlh->nlmsg_flags = 0; | 75 | nlh->nlmsg_flags = 0; |
76 | 76 | ||
77 | m = NLMSG_DATA(nlh); | 77 | m = NLMSG_DATA(nlh); |
diff --git a/Documentation/cpu-freq/cpu-drivers.txt b/Documentation/cpu-freq/cpu-drivers.txt index 19fa98e07bf7..40282e617913 100644 --- a/Documentation/cpu-freq/cpu-drivers.txt +++ b/Documentation/cpu-freq/cpu-drivers.txt | |||
@@ -50,8 +50,6 @@ What shall this struct cpufreq_driver contain? | |||
50 | 50 | ||
51 | cpufreq_driver.name - The name of this driver. | 51 | cpufreq_driver.name - The name of this driver. |
52 | 52 | ||
53 | cpufreq_driver.owner - THIS_MODULE; | ||
54 | |||
55 | cpufreq_driver.init - A pointer to the per-CPU initialization | 53 | cpufreq_driver.init - A pointer to the per-CPU initialization |
56 | function. | 54 | function. |
57 | 55 | ||
diff --git a/Documentation/cputopology.txt b/Documentation/cputopology.txt index 902d3151f527..0aad6deb2d96 100644 --- a/Documentation/cputopology.txt +++ b/Documentation/cputopology.txt | |||
@@ -22,7 +22,7 @@ to /proc/cpuinfo. | |||
22 | 22 | ||
23 | 4) /sys/devices/system/cpu/cpuX/topology/thread_siblings: | 23 | 4) /sys/devices/system/cpu/cpuX/topology/thread_siblings: |
24 | 24 | ||
25 | internel kernel map of cpuX's hardware threads within the same | 25 | internal kernel map of cpuX's hardware threads within the same |
26 | core as cpuX | 26 | core as cpuX |
27 | 27 | ||
28 | 5) /sys/devices/system/cpu/cpuX/topology/core_siblings: | 28 | 5) /sys/devices/system/cpu/cpuX/topology/core_siblings: |
diff --git a/Documentation/development-process/2.Process b/Documentation/development-process/2.Process index 4823577c6509..2e0617936e8f 100644 --- a/Documentation/development-process/2.Process +++ b/Documentation/development-process/2.Process | |||
@@ -276,7 +276,7 @@ mainline get there via -mm. | |||
276 | The current -mm patch is available in the "mmotm" (-mm of the moment) | 276 | The current -mm patch is available in the "mmotm" (-mm of the moment) |
277 | directory at: | 277 | directory at: |
278 | 278 | ||
279 | http://userweb.kernel.org/~akpm/mmotm/ | 279 | http://www.ozlabs.org/~akpm/mmotm/ |
280 | 280 | ||
281 | Use of the MMOTM tree is likely to be a frustrating experience, though; | 281 | Use of the MMOTM tree is likely to be a frustrating experience, though; |
282 | there is a definite chance that it will not even compile. | 282 | there is a definite chance that it will not even compile. |
@@ -287,7 +287,7 @@ the mainline is expected to look like after the next merge window closes. | |||
287 | Linux-next trees are announced on the linux-kernel and linux-next mailing | 287 | Linux-next trees are announced on the linux-kernel and linux-next mailing |
288 | lists when they are assembled; they can be downloaded from: | 288 | lists when they are assembled; they can be downloaded from: |
289 | 289 | ||
290 | http://www.kernel.org/pub/linux/kernel/people/sfr/linux-next/ | 290 | http://www.kernel.org/pub/linux/kernel/next/ |
291 | 291 | ||
292 | Some information about linux-next has been gathered at: | 292 | Some information about linux-next has been gathered at: |
293 | 293 | ||
diff --git a/Documentation/device-mapper/cache.txt b/Documentation/device-mapper/cache.txt index e8cdf7241b66..33d45ee0b737 100644 --- a/Documentation/device-mapper/cache.txt +++ b/Documentation/device-mapper/cache.txt | |||
@@ -50,14 +50,16 @@ other parameters detailed later): | |||
50 | which are dirty, and extra hints for use by the policy object. | 50 | which are dirty, and extra hints for use by the policy object. |
51 | This information could be put on the cache device, but having it | 51 | This information could be put on the cache device, but having it |
52 | separate allows the volume manager to configure it differently, | 52 | separate allows the volume manager to configure it differently, |
53 | e.g. as a mirror for extra robustness. | 53 | e.g. as a mirror for extra robustness. This metadata device may only |
54 | be used by a single cache device. | ||
54 | 55 | ||
55 | Fixed block size | 56 | Fixed block size |
56 | ---------------- | 57 | ---------------- |
57 | 58 | ||
58 | The origin is divided up into blocks of a fixed size. This block size | 59 | The origin is divided up into blocks of a fixed size. This block size |
59 | is configurable when you first create the cache. Typically we've been | 60 | is configurable when you first create the cache. Typically we've been |
60 | using block sizes of 256k - 1024k. | 61 | using block sizes of 256KB - 1024KB. The block size must be between 64 |
62 | (32KB) and 2097152 (1GB) and a multiple of 64 (32KB). | ||
61 | 63 | ||
62 | Having a fixed block size simplifies the target a lot. But it is | 64 | Having a fixed block size simplifies the target a lot. But it is |
63 | something of a compromise. For instance, a small part of a block may be | 65 | something of a compromise. For instance, a small part of a block may be |
diff --git a/Documentation/device-mapper/statistics.txt b/Documentation/device-mapper/statistics.txt new file mode 100644 index 000000000000..2a1673adc200 --- /dev/null +++ b/Documentation/device-mapper/statistics.txt | |||
@@ -0,0 +1,186 @@ | |||
1 | DM statistics | ||
2 | ============= | ||
3 | |||
4 | Device Mapper supports the collection of I/O statistics on user-defined | ||
5 | regions of a DM device. If no regions are defined no statistics are | ||
6 | collected so there isn't any performance impact. Only bio-based DM | ||
7 | devices are currently supported. | ||
8 | |||
9 | Each user-defined region specifies a starting sector, length and step. | ||
10 | Individual statistics will be collected for each step-sized area within | ||
11 | the range specified. | ||
12 | |||
13 | The I/O statistics counters for each step-sized area of a region are | ||
14 | in the same format as /sys/block/*/stat or /proc/diskstats (see: | ||
15 | Documentation/iostats.txt). But two extra counters (12 and 13) are | ||
16 | provided: total time spent reading and writing in milliseconds. All | ||
17 | these counters may be accessed by sending the @stats_print message to | ||
18 | the appropriate DM device via dmsetup. | ||
19 | |||
20 | Each region has a corresponding unique identifier, which we call a | ||
21 | region_id, that is assigned when the region is created. The region_id | ||
22 | must be supplied when querying statistics about the region, deleting the | ||
23 | region, etc. Unique region_ids enable multiple userspace programs to | ||
24 | request and process statistics for the same DM device without stepping | ||
25 | on each other's data. | ||
26 | |||
27 | The creation of DM statistics will allocate memory via kmalloc or | ||
28 | fallback to using vmalloc space. At most, 1/4 of the overall system | ||
29 | memory may be allocated by DM statistics. The admin can see how much | ||
30 | memory is used by reading | ||
31 | /sys/module/dm_mod/parameters/stats_current_allocated_bytes | ||
32 | |||
33 | Messages | ||
34 | ======== | ||
35 | |||
36 | @stats_create <range> <step> [<program_id> [<aux_data>]] | ||
37 | |||
38 | Create a new region and return the region_id. | ||
39 | |||
40 | <range> | ||
41 | "-" - whole device | ||
42 | "<start_sector>+<length>" - a range of <length> 512-byte sectors | ||
43 | starting with <start_sector>. | ||
44 | |||
45 | <step> | ||
46 | "<area_size>" - the range is subdivided into areas each containing | ||
47 | <area_size> sectors. | ||
48 | "/<number_of_areas>" - the range is subdivided into the specified | ||
49 | number of areas. | ||
50 | |||
51 | <program_id> | ||
52 | An optional parameter. A name that uniquely identifies | ||
53 | the userspace owner of the range. This groups ranges together | ||
54 | so that userspace programs can identify the ranges they | ||
55 | created and ignore those created by others. | ||
56 | The kernel returns this string back in the output of | ||
57 | @stats_list message, but it doesn't use it for anything else. | ||
58 | |||
59 | <aux_data> | ||
60 | An optional parameter. A word that provides auxiliary data | ||
61 | that is useful to the client program that created the range. | ||
62 | The kernel returns this string back in the output of | ||
63 | @stats_list message, but it doesn't use this value for anything. | ||
64 | |||
65 | @stats_delete <region_id> | ||
66 | |||
67 | Delete the region with the specified id. | ||
68 | |||
69 | <region_id> | ||
70 | region_id returned from @stats_create | ||
71 | |||
72 | @stats_clear <region_id> | ||
73 | |||
74 | Clear all the counters except the in-flight i/o counters. | ||
75 | |||
76 | <region_id> | ||
77 | region_id returned from @stats_create | ||
78 | |||
79 | @stats_list [<program_id>] | ||
80 | |||
81 | List all regions registered with @stats_create. | ||
82 | |||
83 | <program_id> | ||
84 | An optional parameter. | ||
85 | If this parameter is specified, only matching regions | ||
86 | are returned. | ||
87 | If it is not specified, all regions are returned. | ||
88 | |||
89 | Output format: | ||
90 | <region_id>: <start_sector>+<length> <step> <program_id> <aux_data> | ||
91 | |||
92 | @stats_print <region_id> [<starting_line> <number_of_lines>] | ||
93 | |||
94 | Print counters for each step-sized area of a region. | ||
95 | |||
96 | <region_id> | ||
97 | region_id returned from @stats_create | ||
98 | |||
99 | <starting_line> | ||
100 | The index of the starting line in the output. | ||
101 | If omitted, all lines are returned. | ||
102 | |||
103 | <number_of_lines> | ||
104 | The number of lines to include in the output. | ||
105 | If omitted, all lines are returned. | ||
106 | |||
107 | Output format for each step-sized area of a region: | ||
108 | |||
109 | <start_sector>+<length> counters | ||
110 | |||
111 | The first 11 counters have the same meaning as | ||
112 | /sys/block/*/stat or /proc/diskstats. | ||
113 | |||
114 | Please refer to Documentation/iostats.txt for details. | ||
115 | |||
116 | 1. the number of reads completed | ||
117 | 2. the number of reads merged | ||
118 | 3. the number of sectors read | ||
119 | 4. the number of milliseconds spent reading | ||
120 | 5. the number of writes completed | ||
121 | 6. the number of writes merged | ||
122 | 7. the number of sectors written | ||
123 | 8. the number of milliseconds spent writing | ||
124 | 9. the number of I/Os currently in progress | ||
125 | 10. the number of milliseconds spent doing I/Os | ||
126 | 11. the weighted number of milliseconds spent doing I/Os | ||
127 | |||
128 | Additional counters: | ||
129 | 12. the total time spent reading in milliseconds | ||
130 | 13. the total time spent writing in milliseconds | ||
131 | |||
132 | @stats_print_clear <region_id> [<starting_line> <number_of_lines>] | ||
133 | |||
134 | Atomically print and then clear all the counters except the | ||
135 | in-flight i/o counters. Useful when the client consuming the | ||
136 | statistics does not want to lose any statistics (those updated | ||
137 | between printing and clearing). | ||
138 | |||
139 | <region_id> | ||
140 | region_id returned from @stats_create | ||
141 | |||
142 | <starting_line> | ||
143 | The index of the starting line in the output. | ||
144 | If omitted, all lines are printed and then cleared. | ||
145 | |||
146 | <number_of_lines> | ||
147 | The number of lines to process. | ||
148 | If omitted, all lines are printed and then cleared. | ||
149 | |||
150 | @stats_set_aux <region_id> <aux_data> | ||
151 | |||
152 | Store auxiliary data aux_data for the specified region. | ||
153 | |||
154 | <region_id> | ||
155 | region_id returned from @stats_create | ||
156 | |||
157 | <aux_data> | ||
158 | The string that identifies data which is useful to the client | ||
159 | program that created the range. The kernel returns this | ||
160 | string back in the output of @stats_list message, but it | ||
161 | doesn't use this value for anything. | ||
162 | |||
163 | Examples | ||
164 | ======== | ||
165 | |||
166 | Subdivide the DM device 'vol' into 100 pieces and start collecting | ||
167 | statistics on them: | ||
168 | |||
169 | dmsetup message vol 0 @stats_create - /100 | ||
170 | |||
171 | Set the auxillary data string to "foo bar baz" (the escape for each | ||
172 | space must also be escaped, otherwise the shell will consume them): | ||
173 | |||
174 | dmsetup message vol 0 @stats_set_aux 0 foo\\ bar\\ baz | ||
175 | |||
176 | List the statistics: | ||
177 | |||
178 | dmsetup message vol 0 @stats_list | ||
179 | |||
180 | Print the statistics: | ||
181 | |||
182 | dmsetup message vol 0 @stats_print 0 | ||
183 | |||
184 | Delete the statistics: | ||
185 | |||
186 | dmsetup message vol 0 @stats_delete 0 | ||
diff --git a/Documentation/device-mapper/thin-provisioning.txt b/Documentation/device-mapper/thin-provisioning.txt index 30b8b83bd333..50c44cf79b0e 100644 --- a/Documentation/device-mapper/thin-provisioning.txt +++ b/Documentation/device-mapper/thin-provisioning.txt | |||
@@ -99,13 +99,14 @@ Using an existing pool device | |||
99 | $data_block_size $low_water_mark" | 99 | $data_block_size $low_water_mark" |
100 | 100 | ||
101 | $data_block_size gives the smallest unit of disk space that can be | 101 | $data_block_size gives the smallest unit of disk space that can be |
102 | allocated at a time expressed in units of 512-byte sectors. People | 102 | allocated at a time expressed in units of 512-byte sectors. |
103 | primarily interested in thin provisioning may want to use a value such | 103 | $data_block_size must be between 128 (64KB) and 2097152 (1GB) and a |
104 | as 1024 (512KB). People doing lots of snapshotting may want a smaller value | 104 | multiple of 128 (64KB). $data_block_size cannot be changed after the |
105 | such as 128 (64KB). If you are not zeroing newly-allocated data, | 105 | thin-pool is created. People primarily interested in thin provisioning |
106 | a larger $data_block_size in the region of 256000 (128MB) is suggested. | 106 | may want to use a value such as 1024 (512KB). People doing lots of |
107 | $data_block_size must be the same for the lifetime of the | 107 | snapshotting may want a smaller value such as 128 (64KB). If you are |
108 | metadata device. | 108 | not zeroing newly-allocated data, a larger $data_block_size in the |
109 | region of 256000 (128MB) is suggested. | ||
109 | 110 | ||
110 | $low_water_mark is expressed in blocks of size $data_block_size. If | 111 | $low_water_mark is expressed in blocks of size $data_block_size. If |
111 | free space on the data device drops below this level then a dm event | 112 | free space on the data device drops below this level then a dm event |
diff --git a/Documentation/devices.txt b/Documentation/devices.txt index 23721d3be3e6..80b72419ffd8 100644 --- a/Documentation/devices.txt +++ b/Documentation/devices.txt | |||
@@ -414,6 +414,7 @@ Your cooperation is appreciated. | |||
414 | 200 = /dev/net/tun TAP/TUN network device | 414 | 200 = /dev/net/tun TAP/TUN network device |
415 | 201 = /dev/button/gulpb Transmeta GULP-B buttons | 415 | 201 = /dev/button/gulpb Transmeta GULP-B buttons |
416 | 202 = /dev/emd/ctl Enhanced Metadisk RAID (EMD) control | 416 | 202 = /dev/emd/ctl Enhanced Metadisk RAID (EMD) control |
417 | 203 = /dev/cuse Cuse (character device in user-space) | ||
417 | 204 = /dev/video/em8300 EM8300 DVD decoder control | 418 | 204 = /dev/video/em8300 EM8300 DVD decoder control |
418 | 205 = /dev/video/em8300_mv EM8300 DVD decoder video | 419 | 205 = /dev/video/em8300_mv EM8300 DVD decoder video |
419 | 206 = /dev/video/em8300_ma EM8300 DVD decoder audio | 420 | 206 = /dev/video/em8300_ma EM8300 DVD decoder audio |
diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt index 20746e5abe6f..06fc7602593a 100644 --- a/Documentation/devicetree/bindings/arm/arch_timer.txt +++ b/Documentation/devicetree/bindings/arm/arch_timer.txt | |||
@@ -1,10 +1,14 @@ | |||
1 | * ARM architected timer | 1 | * ARM architected timer |
2 | 2 | ||
3 | ARM cores may have a per-core architected timer, which provides per-cpu timers. | 3 | ARM cores may have a per-core architected timer, which provides per-cpu timers, |
4 | or a memory mapped architected timer, which provides up to 8 frames with a | ||
5 | physical and optional virtual timer per frame. | ||
4 | 6 | ||
5 | The timer is attached to a GIC to deliver its per-processor interrupts. | 7 | The per-core architected timer is attached to a GIC to deliver its |
8 | per-processor interrupts via PPIs. The memory mapped timer is attached to a GIC | ||
9 | to deliver its interrupts via SPIs. | ||
6 | 10 | ||
7 | ** Timer node properties: | 11 | ** CP15 Timer node properties: |
8 | 12 | ||
9 | - compatible : Should at least contain one of | 13 | - compatible : Should at least contain one of |
10 | "arm,armv7-timer" | 14 | "arm,armv7-timer" |
@@ -26,3 +30,52 @@ Example: | |||
26 | <1 10 0xf08>; | 30 | <1 10 0xf08>; |
27 | clock-frequency = <100000000>; | 31 | clock-frequency = <100000000>; |
28 | }; | 32 | }; |
33 | |||
34 | ** Memory mapped timer node properties: | ||
35 | |||
36 | - compatible : Should at least contain "arm,armv7-timer-mem". | ||
37 | |||
38 | - clock-frequency : The frequency of the main counter, in Hz. Optional. | ||
39 | |||
40 | - reg : The control frame base address. | ||
41 | |||
42 | Note that #address-cells, #size-cells, and ranges shall be present to ensure | ||
43 | the CPU can address a frame's registers. | ||
44 | |||
45 | A timer node has up to 8 frame sub-nodes, each with the following properties: | ||
46 | |||
47 | - frame-number: 0 to 7. | ||
48 | |||
49 | - interrupts : Interrupt list for physical and virtual timers in that order. | ||
50 | The virtual timer interrupt is optional. | ||
51 | |||
52 | - reg : The first and second view base addresses in that order. The second view | ||
53 | base address is optional. | ||
54 | |||
55 | - status : "disabled" indicates the frame is not available for use. Optional. | ||
56 | |||
57 | Example: | ||
58 | |||
59 | timer@f0000000 { | ||
60 | compatible = "arm,armv7-timer-mem"; | ||
61 | #address-cells = <1>; | ||
62 | #size-cells = <1>; | ||
63 | ranges; | ||
64 | reg = <0xf0000000 0x1000>; | ||
65 | clock-frequency = <50000000>; | ||
66 | |||
67 | frame@f0001000 { | ||
68 | frame-number = <0> | ||
69 | interrupts = <0 13 0x8>, | ||
70 | <0 14 0x8>; | ||
71 | reg = <0xf0001000 0x1000>, | ||
72 | <0xf0002000 0x1000>; | ||
73 | }; | ||
74 | |||
75 | frame@f0003000 { | ||
76 | frame-number = <1> | ||
77 | interrupts = <0 15 0x8>; | ||
78 | reg = <0xf0003000 0x1000>; | ||
79 | status = "disabled"; | ||
80 | }; | ||
81 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards index db5858e32d3f..5fac246a9530 100644 --- a/Documentation/devicetree/bindings/arm/arm-boards +++ b/Documentation/devicetree/bindings/arm/arm-boards | |||
@@ -9,9 +9,53 @@ Required properties (in root node): | |||
9 | 9 | ||
10 | FPGA type interrupt controllers, see the versatile-fpga-irq binding doc. | 10 | FPGA type interrupt controllers, see the versatile-fpga-irq binding doc. |
11 | 11 | ||
12 | In the root node the Integrator/CP must have a /cpcon node pointing | 12 | Required nodes: |
13 | to the CP control registers, and the Integrator/AP must have a | 13 | |
14 | /syscon node pointing to the Integrator/AP system controller. | 14 | - core-module: the root node to the Integrator platforms must have |
15 | a core-module with regs and the compatible string | ||
16 | "arm,core-module-integrator" | ||
17 | |||
18 | Required properties for the core module: | ||
19 | - regs: the location and size of the core module registers, one | ||
20 | range of 0x200 bytes. | ||
21 | |||
22 | - syscon: the root node of the Integrator platforms must have a | ||
23 | system controller node pointong to the control registers, | ||
24 | with the compatible string | ||
25 | "arm,integrator-ap-syscon" | ||
26 | "arm,integrator-cp-syscon" | ||
27 | respectively. | ||
28 | |||
29 | Required properties for the system controller: | ||
30 | - regs: the location and size of the system controller registers, | ||
31 | one range of 0x100 bytes. | ||
32 | |||
33 | Required properties for the AP system controller: | ||
34 | - interrupts: the AP syscon node must include the logical module | ||
35 | interrupts, stated in order of module instance <module 0>, | ||
36 | <module 1>, <module 2> ... for the CP system controller this | ||
37 | is not required not of any use. | ||
38 | |||
39 | /dts-v1/; | ||
40 | /include/ "integrator.dtsi" | ||
41 | |||
42 | / { | ||
43 | model = "ARM Integrator/AP"; | ||
44 | compatible = "arm,integrator-ap"; | ||
45 | |||
46 | core-module@10000000 { | ||
47 | compatible = "arm,core-module-integrator"; | ||
48 | reg = <0x10000000 0x200>; | ||
49 | }; | ||
50 | |||
51 | syscon { | ||
52 | compatible = "arm,integrator-ap-syscon"; | ||
53 | reg = <0x11000000 0x100>; | ||
54 | interrupt-parent = <&pic>; | ||
55 | /* These are the logic module IRQs */ | ||
56 | interrupts = <9>, <10>, <11>, <12>; | ||
57 | }; | ||
58 | }; | ||
15 | 59 | ||
16 | 60 | ||
17 | ARM Versatile Application and Platform Baseboards | 61 | ARM Versatile Application and Platform Baseboards |
diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt index 61df564c0d23..d74091a8a3bf 100644 --- a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt +++ b/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt | |||
@@ -4,6 +4,8 @@ Marvell Armada 370 and Armada XP Interrupt Controller | |||
4 | Required properties: | 4 | Required properties: |
5 | - compatible: Should be "marvell,mpic" | 5 | - compatible: Should be "marvell,mpic" |
6 | - interrupt-controller: Identifies the node as an interrupt controller. | 6 | - interrupt-controller: Identifies the node as an interrupt controller. |
7 | - msi-controller: Identifies the node as an PCI Message Signaled | ||
8 | Interrupt controller. | ||
7 | - #interrupt-cells: The number of cells to define the interrupts. Should be 1. | 9 | - #interrupt-cells: The number of cells to define the interrupts. Should be 1. |
8 | The cell is the IRQ number | 10 | The cell is the IRQ number |
9 | 11 | ||
@@ -24,6 +26,7 @@ Example: | |||
24 | #address-cells = <1>; | 26 | #address-cells = <1>; |
25 | #size-cells = <1>; | 27 | #size-cells = <1>; |
26 | interrupt-controller; | 28 | interrupt-controller; |
29 | msi-controller; | ||
27 | reg = <0xd0020a00 0x1d0>, | 30 | reg = <0xd0020a00 0x1d0>, |
28 | <0xd0021070 0x58>; | 31 | <0xd0021070 0x58>; |
29 | }; | 32 | }; |
diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/arm/atmel-adc.txt index 16769d9cedd6..d1061469f63d 100644 --- a/Documentation/devicetree/bindings/arm/atmel-adc.txt +++ b/Documentation/devicetree/bindings/arm/atmel-adc.txt | |||
@@ -1,18 +1,14 @@ | |||
1 | * AT91's Analog to Digital Converter (ADC) | 1 | * AT91's Analog to Digital Converter (ADC) |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "atmel,at91sam9260-adc" | 4 | - compatible: Should be "atmel,<chip>-adc" |
5 | <chip> can be "at91sam9260", "at91sam9g45" or "at91sam9x5" | ||
5 | - reg: Should contain ADC registers location and length | 6 | - reg: Should contain ADC registers location and length |
6 | - interrupts: Should contain the IRQ line for the ADC | 7 | - interrupts: Should contain the IRQ line for the ADC |
7 | - atmel,adc-channel-base: Offset of the first channel data register | ||
8 | - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this | 8 | - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this |
9 | device | 9 | device |
10 | - atmel,adc-drdy-mask: Mask of the DRDY interruption in the ADC | ||
11 | - atmel,adc-num-channels: Number of channels available in the ADC | ||
12 | - atmel,adc-startup-time: Startup Time of the ADC in microseconds as | 10 | - atmel,adc-startup-time: Startup Time of the ADC in microseconds as |
13 | defined in the datasheet | 11 | defined in the datasheet |
14 | - atmel,adc-status-register: Offset of the Interrupt Status Register | ||
15 | - atmel,adc-trigger-register: Offset of the Trigger Register | ||
16 | - atmel,adc-vref: Reference voltage in millivolts for the conversions | 12 | - atmel,adc-vref: Reference voltage in millivolts for the conversions |
17 | - atmel,adc-res: List of resolution in bits supported by the ADC. List size | 13 | - atmel,adc-res: List of resolution in bits supported by the ADC. List size |
18 | must be two at least. | 14 | must be two at least. |
@@ -27,6 +23,13 @@ Optional properties: | |||
27 | resolution will be used. | 23 | resolution will be used. |
28 | - atmel,adc-sleep-mode: Boolean to enable sleep mode when no conversion | 24 | - atmel,adc-sleep-mode: Boolean to enable sleep mode when no conversion |
29 | - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds | 25 | - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds |
26 | - atmel,adc-ts-wires: Number of touch screen wires. Should be 4 or 5. If this | ||
27 | value is set, then adc driver will enable touch screen | ||
28 | support. | ||
29 | NOTE: when adc touch screen enabled, the adc hardware trigger will be | ||
30 | disabled. Since touch screen will occupied the trigger register. | ||
31 | - atmel,adc-ts-pressure-threshold: a pressure threshold for touchscreen. It | ||
32 | make touch detect more precision. | ||
30 | 33 | ||
31 | Optional trigger Nodes: | 34 | Optional trigger Nodes: |
32 | - Required properties: | 35 | - Required properties: |
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt b/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt index fb7b5cd2652f..0ff6560e6094 100644 --- a/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt +++ b/Documentation/devicetree/bindings/arm/bcm/bcm11351.txt | |||
@@ -6,4 +6,5 @@ bcm11351, bcm28145, bcm28155 SoCs) shall have the following properties: | |||
6 | 6 | ||
7 | Required root node property: | 7 | Required root node property: |
8 | 8 | ||
9 | compatible = "bcm,bcm11351"; | 9 | compatible = "brcm,bcm11351"; |
10 | DEPRECATED: compatible = "bcm,bcm11351"; | ||
diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt index 59fa6e68d4f6..17d88b233d1b 100644 --- a/Documentation/devicetree/bindings/arm/bcm/bcm,kona-timer.txt +++ b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt | |||
@@ -4,14 +4,15 @@ This timer is used in the following Broadcom SoCs: | |||
4 | BCM11130, BCM11140, BCM11351, BCM28145, BCM28155 | 4 | BCM11130, BCM11140, BCM11351, BCM28145, BCM28155 |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : "bcm,kona-timer" | 7 | - compatible : "brcm,kona-timer" |
8 | - DEPRECATED: compatible : "bcm,kona-timer" | ||
8 | - reg : Register range for the timer | 9 | - reg : Register range for the timer |
9 | - interrupts : interrupt for the timer | 10 | - interrupts : interrupt for the timer |
10 | - clock-frequency: frequency that the clock operates | 11 | - clock-frequency: frequency that the clock operates |
11 | 12 | ||
12 | Example: | 13 | Example: |
13 | timer@35006000 { | 14 | timer@35006000 { |
14 | compatible = "bcm,kona-timer"; | 15 | compatible = "brcm,kona-timer"; |
15 | reg = <0x35006000 0x1000>; | 16 | reg = <0x35006000 0x1000>; |
16 | interrupts = <0x0 7 0x4>; | 17 | interrupts = <0x0 7 0x4>; |
17 | clock-frequency = <32768>; | 18 | clock-frequency = <32768>; |
diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt b/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt new file mode 100644 index 000000000000..2b86a00e351d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | Broadcom Kona Family Watchdog Timer | ||
2 | ----------------------------------- | ||
3 | |||
4 | This watchdog timer is used in the following Broadcom SoCs: | ||
5 | BCM11130, BCM11140, BCM11351, BCM28145, BCM28155 | ||
6 | |||
7 | Required properties: | ||
8 | - compatible = "brcm,bcm11351-wdt", "brcm,kona-wdt"; | ||
9 | - reg: memory address & range | ||
10 | |||
11 | Example: | ||
12 | watchdog@35002f40 { | ||
13 | compatible = "brcm,bcm11351-wdt", "brcm,kona-wdt"; | ||
14 | reg = <0x35002f40 0x6c>; | ||
15 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/cci.txt b/Documentation/devicetree/bindings/arm/cci.txt index 92d36e2aa877..f28d82bbbc56 100644 --- a/Documentation/devicetree/bindings/arm/cci.txt +++ b/Documentation/devicetree/bindings/arm/cci.txt | |||
@@ -36,14 +36,18 @@ specific to ARM. | |||
36 | 36 | ||
37 | - reg | 37 | - reg |
38 | Usage: required | 38 | Usage: required |
39 | Value type: <prop-encoded-array> | 39 | Value type: Integer cells. A register entry, expressed as a pair |
40 | of cells, containing base and size. | ||
40 | Definition: A standard property. Specifies base physical | 41 | Definition: A standard property. Specifies base physical |
41 | address of CCI control registers common to all | 42 | address of CCI control registers common to all |
42 | interfaces. | 43 | interfaces. |
43 | 44 | ||
44 | - ranges: | 45 | - ranges: |
45 | Usage: required | 46 | Usage: required |
46 | Value type: <prop-encoded-array> | 47 | Value type: Integer cells. An array of range entries, expressed |
48 | as a tuple of cells, containing child address, | ||
49 | parent address and the size of the region in the | ||
50 | child address space. | ||
47 | Definition: A standard property. Follow rules in the ePAPR for | 51 | Definition: A standard property. Follow rules in the ePAPR for |
48 | hierarchical bus addressing. CCI interfaces | 52 | hierarchical bus addressing. CCI interfaces |
49 | addresses refer to the parent node addressing | 53 | addresses refer to the parent node addressing |
@@ -74,11 +78,49 @@ specific to ARM. | |||
74 | 78 | ||
75 | - reg: | 79 | - reg: |
76 | Usage: required | 80 | Usage: required |
77 | Value type: <prop-encoded-array> | 81 | Value type: Integer cells. A register entry, expressed |
82 | as a pair of cells, containing base and | ||
83 | size. | ||
78 | Definition: the base address and size of the | 84 | Definition: the base address and size of the |
79 | corresponding interface programming | 85 | corresponding interface programming |
80 | registers. | 86 | registers. |
81 | 87 | ||
88 | - CCI PMU node | ||
89 | |||
90 | Parent node must be CCI interconnect node. | ||
91 | |||
92 | A CCI pmu node must contain the following properties: | ||
93 | |||
94 | - compatible | ||
95 | Usage: required | ||
96 | Value type: <string> | ||
97 | Definition: must be "arm,cci-400-pmu" | ||
98 | |||
99 | - reg: | ||
100 | Usage: required | ||
101 | Value type: Integer cells. A register entry, expressed | ||
102 | as a pair of cells, containing base and | ||
103 | size. | ||
104 | Definition: the base address and size of the | ||
105 | corresponding interface programming | ||
106 | registers. | ||
107 | |||
108 | - interrupts: | ||
109 | Usage: required | ||
110 | Value type: Integer cells. Array of interrupt specifier | ||
111 | entries, as defined in | ||
112 | ../interrupt-controller/interrupts.txt. | ||
113 | Definition: list of counter overflow interrupts, one per | ||
114 | counter. The interrupts must be specified | ||
115 | starting with the cycle counter overflow | ||
116 | interrupt, followed by counter0 overflow | ||
117 | interrupt, counter1 overflow interrupt,... | ||
118 | ,counterN overflow interrupt. | ||
119 | |||
120 | The CCI PMU has an interrupt signal for each | ||
121 | counter. The number of interrupts must be | ||
122 | equal to the number of counters. | ||
123 | |||
82 | * CCI interconnect bus masters | 124 | * CCI interconnect bus masters |
83 | 125 | ||
84 | Description: masters in the device tree connected to a CCI port | 126 | Description: masters in the device tree connected to a CCI port |
@@ -144,7 +186,7 @@ Example: | |||
144 | #address-cells = <1>; | 186 | #address-cells = <1>; |
145 | #size-cells = <1>; | 187 | #size-cells = <1>; |
146 | reg = <0x0 0x2c090000 0 0x1000>; | 188 | reg = <0x0 0x2c090000 0 0x1000>; |
147 | ranges = <0x0 0x0 0x2c090000 0x6000>; | 189 | ranges = <0x0 0x0 0x2c090000 0x10000>; |
148 | 190 | ||
149 | cci_control0: slave-if@1000 { | 191 | cci_control0: slave-if@1000 { |
150 | compatible = "arm,cci-400-ctrl-if"; | 192 | compatible = "arm,cci-400-ctrl-if"; |
@@ -163,6 +205,16 @@ Example: | |||
163 | interface-type = "ace"; | 205 | interface-type = "ace"; |
164 | reg = <0x5000 0x1000>; | 206 | reg = <0x5000 0x1000>; |
165 | }; | 207 | }; |
208 | |||
209 | pmu@9000 { | ||
210 | compatible = "arm,cci-400-pmu"; | ||
211 | reg = <0x9000 0x5000>; | ||
212 | interrupts = <0 101 4>, | ||
213 | <0 102 4>, | ||
214 | <0 103 4>, | ||
215 | <0 104 4>, | ||
216 | <0 105 4>; | ||
217 | }; | ||
166 | }; | 218 | }; |
167 | 219 | ||
168 | This CCI node corresponds to a CCI component whose control registers sits | 220 | This CCI node corresponds to a CCI component whose control registers sits |
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index f32494dbfe19..91304353eea4 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt | |||
@@ -1,77 +1,384 @@ | |||
1 | * ARM CPUs binding description | 1 | ================= |
2 | ARM CPUs bindings | ||
3 | ================= | ||
2 | 4 | ||
3 | The device tree allows to describe the layout of CPUs in a system through | 5 | The device tree allows to describe the layout of CPUs in a system through |
4 | the "cpus" node, which in turn contains a number of subnodes (ie "cpu") | 6 | the "cpus" node, which in turn contains a number of subnodes (ie "cpu") |
5 | defining properties for every cpu. | 7 | defining properties for every cpu. |
6 | 8 | ||
7 | Bindings for CPU nodes follow the ePAPR standard, available from: | 9 | Bindings for CPU nodes follow the ePAPR v1.1 standard, available from: |
8 | 10 | ||
9 | http://devicetree.org | 11 | https://www.power.org/documentation/epapr-version-1-1/ |
10 | 12 | ||
11 | For the ARM architecture every CPU node must contain the following properties: | 13 | with updates for 32-bit and 64-bit ARM systems provided in this document. |
12 | 14 | ||
13 | - device_type: must be "cpu" | 15 | ================================ |
14 | - reg: property matching the CPU MPIDR[23:0] register bits | 16 | Convention used in this document |
15 | reg[31:24] bits must be set to 0 | 17 | ================================ |
16 | - compatible: should be one of: | 18 | |
17 | "arm,arm1020" | 19 | This document follows the conventions described in the ePAPR v1.1, with |
18 | "arm,arm1020e" | 20 | the addition: |
19 | "arm,arm1022" | 21 | |
20 | "arm,arm1026" | 22 | - square brackets define bitfields, eg reg[7:0] value of the bitfield in |
21 | "arm,arm720" | 23 | the reg property contained in bits 7 down to 0 |
22 | "arm,arm740" | 24 | |
23 | "arm,arm7tdmi" | 25 | ===================================== |
24 | "arm,arm920" | 26 | cpus and cpu node bindings definition |
25 | "arm,arm922" | 27 | ===================================== |
26 | "arm,arm925" | 28 | |
27 | "arm,arm926" | 29 | The ARM architecture, in accordance with the ePAPR, requires the cpus and cpu |
28 | "arm,arm940" | 30 | nodes to be present and contain the properties described below. |
29 | "arm,arm946" | 31 | |
30 | "arm,arm9tdmi" | 32 | - cpus node |
31 | "arm,cortex-a5" | 33 | |
32 | "arm,cortex-a7" | 34 | Description: Container of cpu nodes |
33 | "arm,cortex-a8" | 35 | |
34 | "arm,cortex-a9" | 36 | The node name must be "cpus". |
35 | "arm,cortex-a15" | 37 | |
36 | "arm,arm1136" | 38 | A cpus node must define the following properties: |
37 | "arm,arm1156" | 39 | |
38 | "arm,arm1176" | 40 | - #address-cells |
39 | "arm,arm11mpcore" | 41 | Usage: required |
40 | "faraday,fa526" | 42 | Value type: <u32> |
41 | "intel,sa110" | 43 | |
42 | "intel,sa1100" | 44 | Definition depends on ARM architecture version and |
43 | "marvell,feroceon" | 45 | configuration: |
44 | "marvell,mohawk" | 46 | |
45 | "marvell,xsc3" | 47 | # On uniprocessor ARM architectures previous to v7 |
46 | "marvell,xscale" | 48 | value must be 1, to enable a simple enumeration |
47 | 49 | scheme for processors that do not have a HW CPU | |
48 | Example: | 50 | identification register. |
51 | # On 32-bit ARM 11 MPcore, ARM v7 or later systems | ||
52 | value must be 1, that corresponds to CPUID/MPIDR | ||
53 | registers sizes. | ||
54 | # On ARM v8 64-bit systems value should be set to 2, | ||
55 | that corresponds to the MPIDR_EL1 register size. | ||
56 | If MPIDR_EL1[63:32] value is equal to 0 on all CPUs | ||
57 | in the system, #address-cells can be set to 1, since | ||
58 | MPIDR_EL1[63:32] bits are not used for CPUs | ||
59 | identification. | ||
60 | - #size-cells | ||
61 | Usage: required | ||
62 | Value type: <u32> | ||
63 | Definition: must be set to 0 | ||
64 | |||
65 | - cpu node | ||
66 | |||
67 | Description: Describes a CPU in an ARM based system | ||
68 | |||
69 | PROPERTIES | ||
70 | |||
71 | - device_type | ||
72 | Usage: required | ||
73 | Value type: <string> | ||
74 | Definition: must be "cpu" | ||
75 | - reg | ||
76 | Usage and definition depend on ARM architecture version and | ||
77 | configuration: | ||
78 | |||
79 | # On uniprocessor ARM architectures previous to v7 | ||
80 | this property is required and must be set to 0. | ||
81 | |||
82 | # On ARM 11 MPcore based systems this property is | ||
83 | required and matches the CPUID[11:0] register bits. | ||
84 | |||
85 | Bits [11:0] in the reg cell must be set to | ||
86 | bits [11:0] in CPU ID register. | ||
87 | |||
88 | All other bits in the reg cell must be set to 0. | ||
89 | |||
90 | # On 32-bit ARM v7 or later systems this property is | ||
91 | required and matches the CPU MPIDR[23:0] register | ||
92 | bits. | ||
93 | |||
94 | Bits [23:0] in the reg cell must be set to | ||
95 | bits [23:0] in MPIDR. | ||
96 | |||
97 | All other bits in the reg cell must be set to 0. | ||
98 | |||
99 | # On ARM v8 64-bit systems this property is required | ||
100 | and matches the MPIDR_EL1 register affinity bits. | ||
101 | |||
102 | * If cpus node's #address-cells property is set to 2 | ||
103 | |||
104 | The first reg cell bits [7:0] must be set to | ||
105 | bits [39:32] of MPIDR_EL1. | ||
106 | |||
107 | The second reg cell bits [23:0] must be set to | ||
108 | bits [23:0] of MPIDR_EL1. | ||
109 | |||
110 | * If cpus node's #address-cells property is set to 1 | ||
111 | |||
112 | The reg cell bits [23:0] must be set to bits [23:0] | ||
113 | of MPIDR_EL1. | ||
114 | |||
115 | All other bits in the reg cells must be set to 0. | ||
116 | |||
117 | - compatible: | ||
118 | Usage: required | ||
119 | Value type: <string> | ||
120 | Definition: should be one of: | ||
121 | "arm,arm710t" | ||
122 | "arm,arm720t" | ||
123 | "arm,arm740t" | ||
124 | "arm,arm7ej-s" | ||
125 | "arm,arm7tdmi" | ||
126 | "arm,arm7tdmi-s" | ||
127 | "arm,arm9es" | ||
128 | "arm,arm9ej-s" | ||
129 | "arm,arm920t" | ||
130 | "arm,arm922t" | ||
131 | "arm,arm925" | ||
132 | "arm,arm926e-s" | ||
133 | "arm,arm926ej-s" | ||
134 | "arm,arm940t" | ||
135 | "arm,arm946e-s" | ||
136 | "arm,arm966e-s" | ||
137 | "arm,arm968e-s" | ||
138 | "arm,arm9tdmi" | ||
139 | "arm,arm1020e" | ||
140 | "arm,arm1020t" | ||
141 | "arm,arm1022e" | ||
142 | "arm,arm1026ej-s" | ||
143 | "arm,arm1136j-s" | ||
144 | "arm,arm1136jf-s" | ||
145 | "arm,arm1156t2-s" | ||
146 | "arm,arm1156t2f-s" | ||
147 | "arm,arm1176jzf" | ||
148 | "arm,arm1176jz-s" | ||
149 | "arm,arm1176jzf-s" | ||
150 | "arm,arm11mpcore" | ||
151 | "arm,cortex-a5" | ||
152 | "arm,cortex-a7" | ||
153 | "arm,cortex-a8" | ||
154 | "arm,cortex-a9" | ||
155 | "arm,cortex-a15" | ||
156 | "arm,cortex-a53" | ||
157 | "arm,cortex-a57" | ||
158 | "arm,cortex-m0" | ||
159 | "arm,cortex-m0+" | ||
160 | "arm,cortex-m1" | ||
161 | "arm,cortex-m3" | ||
162 | "arm,cortex-m4" | ||
163 | "arm,cortex-r4" | ||
164 | "arm,cortex-r5" | ||
165 | "arm,cortex-r7" | ||
166 | "faraday,fa526" | ||
167 | "intel,sa110" | ||
168 | "intel,sa1100" | ||
169 | "marvell,feroceon" | ||
170 | "marvell,mohawk" | ||
171 | "marvell,pj4a" | ||
172 | "marvell,pj4b" | ||
173 | "marvell,sheeva-v5" | ||
174 | "qcom,krait" | ||
175 | "qcom,scorpion" | ||
176 | - enable-method | ||
177 | Value type: <stringlist> | ||
178 | Usage and definition depend on ARM architecture version. | ||
179 | # On ARM v8 64-bit this property is required and must | ||
180 | be one of: | ||
181 | "spin-table" | ||
182 | "psci" | ||
183 | # On ARM 32-bit systems this property is optional. | ||
184 | |||
185 | - cpu-release-addr | ||
186 | Usage: required for systems that have an "enable-method" | ||
187 | property value of "spin-table". | ||
188 | Value type: <prop-encoded-array> | ||
189 | Definition: | ||
190 | # On ARM v8 64-bit systems must be a two cell | ||
191 | property identifying a 64-bit zero-initialised | ||
192 | memory location. | ||
193 | |||
194 | Example 1 (dual-cluster big.LITTLE system 32-bit): | ||
49 | 195 | ||
50 | cpus { | 196 | cpus { |
51 | #size-cells = <0>; | 197 | #size-cells = <0>; |
52 | #address-cells = <1>; | 198 | #address-cells = <1>; |
53 | 199 | ||
54 | CPU0: cpu@0 { | 200 | cpu@0 { |
55 | device_type = "cpu"; | 201 | device_type = "cpu"; |
56 | compatible = "arm,cortex-a15"; | 202 | compatible = "arm,cortex-a15"; |
57 | reg = <0x0>; | 203 | reg = <0x0>; |
58 | }; | 204 | }; |
59 | 205 | ||
60 | CPU1: cpu@1 { | 206 | cpu@1 { |
61 | device_type = "cpu"; | 207 | device_type = "cpu"; |
62 | compatible = "arm,cortex-a15"; | 208 | compatible = "arm,cortex-a15"; |
63 | reg = <0x1>; | 209 | reg = <0x1>; |
64 | }; | 210 | }; |
65 | 211 | ||
66 | CPU2: cpu@100 { | 212 | cpu@100 { |
67 | device_type = "cpu"; | 213 | device_type = "cpu"; |
68 | compatible = "arm,cortex-a7"; | 214 | compatible = "arm,cortex-a7"; |
69 | reg = <0x100>; | 215 | reg = <0x100>; |
70 | }; | 216 | }; |
71 | 217 | ||
72 | CPU3: cpu@101 { | 218 | cpu@101 { |
73 | device_type = "cpu"; | 219 | device_type = "cpu"; |
74 | compatible = "arm,cortex-a7"; | 220 | compatible = "arm,cortex-a7"; |
75 | reg = <0x101>; | 221 | reg = <0x101>; |
76 | }; | 222 | }; |
77 | }; | 223 | }; |
224 | |||
225 | Example 2 (Cortex-A8 uniprocessor 32-bit system): | ||
226 | |||
227 | cpus { | ||
228 | #size-cells = <0>; | ||
229 | #address-cells = <1>; | ||
230 | |||
231 | cpu@0 { | ||
232 | device_type = "cpu"; | ||
233 | compatible = "arm,cortex-a8"; | ||
234 | reg = <0x0>; | ||
235 | }; | ||
236 | }; | ||
237 | |||
238 | Example 3 (ARM 926EJ-S uniprocessor 32-bit system): | ||
239 | |||
240 | cpus { | ||
241 | #size-cells = <0>; | ||
242 | #address-cells = <1>; | ||
243 | |||
244 | cpu@0 { | ||
245 | device_type = "cpu"; | ||
246 | compatible = "arm,arm926ej-s"; | ||
247 | reg = <0x0>; | ||
248 | }; | ||
249 | }; | ||
250 | |||
251 | Example 4 (ARM Cortex-A57 64-bit system): | ||
252 | |||
253 | cpus { | ||
254 | #size-cells = <0>; | ||
255 | #address-cells = <2>; | ||
256 | |||
257 | cpu@0 { | ||
258 | device_type = "cpu"; | ||
259 | compatible = "arm,cortex-a57"; | ||
260 | reg = <0x0 0x0>; | ||
261 | enable-method = "spin-table"; | ||
262 | cpu-release-addr = <0 0x20000000>; | ||
263 | }; | ||
264 | |||
265 | cpu@1 { | ||
266 | device_type = "cpu"; | ||
267 | compatible = "arm,cortex-a57"; | ||
268 | reg = <0x0 0x1>; | ||
269 | enable-method = "spin-table"; | ||
270 | cpu-release-addr = <0 0x20000000>; | ||
271 | }; | ||
272 | |||
273 | cpu@100 { | ||
274 | device_type = "cpu"; | ||
275 | compatible = "arm,cortex-a57"; | ||
276 | reg = <0x0 0x100>; | ||
277 | enable-method = "spin-table"; | ||
278 | cpu-release-addr = <0 0x20000000>; | ||
279 | }; | ||
280 | |||
281 | cpu@101 { | ||
282 | device_type = "cpu"; | ||
283 | compatible = "arm,cortex-a57"; | ||
284 | reg = <0x0 0x101>; | ||
285 | enable-method = "spin-table"; | ||
286 | cpu-release-addr = <0 0x20000000>; | ||
287 | }; | ||
288 | |||
289 | cpu@10000 { | ||
290 | device_type = "cpu"; | ||
291 | compatible = "arm,cortex-a57"; | ||
292 | reg = <0x0 0x10000>; | ||
293 | enable-method = "spin-table"; | ||
294 | cpu-release-addr = <0 0x20000000>; | ||
295 | }; | ||
296 | |||
297 | cpu@10001 { | ||
298 | device_type = "cpu"; | ||
299 | compatible = "arm,cortex-a57"; | ||
300 | reg = <0x0 0x10001>; | ||
301 | enable-method = "spin-table"; | ||
302 | cpu-release-addr = <0 0x20000000>; | ||
303 | }; | ||
304 | |||
305 | cpu@10100 { | ||
306 | device_type = "cpu"; | ||
307 | compatible = "arm,cortex-a57"; | ||
308 | reg = <0x0 0x10100>; | ||
309 | enable-method = "spin-table"; | ||
310 | cpu-release-addr = <0 0x20000000>; | ||
311 | }; | ||
312 | |||
313 | cpu@10101 { | ||
314 | device_type = "cpu"; | ||
315 | compatible = "arm,cortex-a57"; | ||
316 | reg = <0x0 0x10101>; | ||
317 | enable-method = "spin-table"; | ||
318 | cpu-release-addr = <0 0x20000000>; | ||
319 | }; | ||
320 | |||
321 | cpu@100000000 { | ||
322 | device_type = "cpu"; | ||
323 | compatible = "arm,cortex-a57"; | ||
324 | reg = <0x1 0x0>; | ||
325 | enable-method = "spin-table"; | ||
326 | cpu-release-addr = <0 0x20000000>; | ||
327 | }; | ||
328 | |||
329 | cpu@100000001 { | ||
330 | device_type = "cpu"; | ||
331 | compatible = "arm,cortex-a57"; | ||
332 | reg = <0x1 0x1>; | ||
333 | enable-method = "spin-table"; | ||
334 | cpu-release-addr = <0 0x20000000>; | ||
335 | }; | ||
336 | |||
337 | cpu@100000100 { | ||
338 | device_type = "cpu"; | ||
339 | compatible = "arm,cortex-a57"; | ||
340 | reg = <0x1 0x100>; | ||
341 | enable-method = "spin-table"; | ||
342 | cpu-release-addr = <0 0x20000000>; | ||
343 | }; | ||
344 | |||
345 | cpu@100000101 { | ||
346 | device_type = "cpu"; | ||
347 | compatible = "arm,cortex-a57"; | ||
348 | reg = <0x1 0x101>; | ||
349 | enable-method = "spin-table"; | ||
350 | cpu-release-addr = <0 0x20000000>; | ||
351 | }; | ||
352 | |||
353 | cpu@100010000 { | ||
354 | device_type = "cpu"; | ||
355 | compatible = "arm,cortex-a57"; | ||
356 | reg = <0x1 0x10000>; | ||
357 | enable-method = "spin-table"; | ||
358 | cpu-release-addr = <0 0x20000000>; | ||
359 | }; | ||
360 | |||
361 | cpu@100010001 { | ||
362 | device_type = "cpu"; | ||
363 | compatible = "arm,cortex-a57"; | ||
364 | reg = <0x1 0x10001>; | ||
365 | enable-method = "spin-table"; | ||
366 | cpu-release-addr = <0 0x20000000>; | ||
367 | }; | ||
368 | |||
369 | cpu@100010100 { | ||
370 | device_type = "cpu"; | ||
371 | compatible = "arm,cortex-a57"; | ||
372 | reg = <0x1 0x10100>; | ||
373 | enable-method = "spin-table"; | ||
374 | cpu-release-addr = <0 0x20000000>; | ||
375 | }; | ||
376 | |||
377 | cpu@100010101 { | ||
378 | device_type = "cpu"; | ||
379 | compatible = "arm,cortex-a57"; | ||
380 | reg = <0x1 0x10101>; | ||
381 | enable-method = "spin-table"; | ||
382 | cpu-release-addr = <0 0x20000000>; | ||
383 | }; | ||
384 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt index 69ddf9fad2dc..c0c7626fd0ff 100644 --- a/Documentation/devicetree/bindings/arm/l2cc.txt +++ b/Documentation/devicetree/bindings/arm/l2cc.txt | |||
@@ -16,9 +16,11 @@ Required properties: | |||
16 | performs the same operation). | 16 | performs the same operation). |
17 | "marvell,"aurora-outer-cache: Marvell Controller designed to be | 17 | "marvell,"aurora-outer-cache: Marvell Controller designed to be |
18 | compatible with the ARM one with outer cache mode. | 18 | compatible with the ARM one with outer cache mode. |
19 | "bcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an | 19 | "brcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an |
20 | offset needs to be added to the address before passing down to the L2 | 20 | offset needs to be added to the address before passing down to the L2 |
21 | cache controller | 21 | cache controller |
22 | "bcm,bcm11351-a2-pl310-cache": DEPRECATED by | ||
23 | "brcm,bcm11351-a2-pl310-cache" | ||
22 | - cache-unified : Specifies the cache is a unified cache. | 24 | - cache-unified : Specifies the cache is a unified cache. |
23 | - cache-level : Should be set to 2 for a level 2 cache. | 25 | - cache-level : Should be set to 2 for a level 2 cache. |
24 | - reg : Physical base address and size of cache controller's memory mapped | 26 | - reg : Physical base address and size of cache controller's memory mapped |
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt index 6d498c758b45..808c1543b0f8 100644 --- a/Documentation/devicetree/bindings/arm/omap/omap.txt +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt | |||
@@ -21,7 +21,8 @@ Required properties: | |||
21 | Optional properties: | 21 | Optional properties: |
22 | - ti,no_idle_on_suspend: When present, it prevents the PM to idle the module | 22 | - ti,no_idle_on_suspend: When present, it prevents the PM to idle the module |
23 | during suspend. | 23 | during suspend. |
24 | 24 | - ti,no-reset-on-init: When present, the module should not be reset at init | |
25 | - ti,no-idle-on-init: When present, the module should not be idled at init | ||
25 | 26 | ||
26 | Example: | 27 | Example: |
27 | 28 | ||
@@ -59,3 +60,6 @@ Boards: | |||
59 | 60 | ||
60 | - AM43x EPOS EVM | 61 | - AM43x EPOS EVM |
61 | compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43" | 62 | compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43" |
63 | |||
64 | - DRA7 EVM: Software Developement Board for DRA7XX | ||
65 | compatible = "ti,dra7-evm", "ti,dra7" | ||
diff --git a/Documentation/devicetree/bindings/arm/ste-u300.txt b/Documentation/devicetree/bindings/arm/ste-u300.txt index 69b5ab0b5f4b..d11d80006a19 100644 --- a/Documentation/devicetree/bindings/arm/ste-u300.txt +++ b/Documentation/devicetree/bindings/arm/ste-u300.txt | |||
@@ -22,7 +22,7 @@ This contains the board-specific information. | |||
22 | - compatible: must be "stericsson,s365". | 22 | - compatible: must be "stericsson,s365". |
23 | - vana15-supply: the regulator supplying the 1.5V to drive the | 23 | - vana15-supply: the regulator supplying the 1.5V to drive the |
24 | board. | 24 | board. |
25 | - syscon: a pointer to the syscon node so we can acccess the | 25 | - syscon: a pointer to the syscon node so we can access the |
26 | syscon registers to set the board as self-powered. | 26 | syscon registers to set the board as self-powered. |
27 | 27 | ||
28 | Example: | 28 | Example: |
diff --git a/Documentation/devicetree/bindings/arm/topology.txt b/Documentation/devicetree/bindings/arm/topology.txt new file mode 100644 index 000000000000..4aa20e7a424e --- /dev/null +++ b/Documentation/devicetree/bindings/arm/topology.txt | |||
@@ -0,0 +1,474 @@ | |||
1 | =========================================== | ||
2 | ARM topology binding description | ||
3 | =========================================== | ||
4 | |||
5 | =========================================== | ||
6 | 1 - Introduction | ||
7 | =========================================== | ||
8 | |||
9 | In an ARM system, the hierarchy of CPUs is defined through three entities that | ||
10 | are used to describe the layout of physical CPUs in the system: | ||
11 | |||
12 | - cluster | ||
13 | - core | ||
14 | - thread | ||
15 | |||
16 | The cpu nodes (bindings defined in [1]) represent the devices that | ||
17 | correspond to physical CPUs and are to be mapped to the hierarchy levels. | ||
18 | |||
19 | The bottom hierarchy level sits at core or thread level depending on whether | ||
20 | symmetric multi-threading (SMT) is supported or not. | ||
21 | |||
22 | For instance in a system where CPUs support SMT, "cpu" nodes represent all | ||
23 | threads existing in the system and map to the hierarchy level "thread" above. | ||
24 | In systems where SMT is not supported "cpu" nodes represent all cores present | ||
25 | in the system and map to the hierarchy level "core" above. | ||
26 | |||
27 | ARM topology bindings allow one to associate cpu nodes with hierarchical groups | ||
28 | corresponding to the system hierarchy; syntactically they are defined as device | ||
29 | tree nodes. | ||
30 | |||
31 | The remainder of this document provides the topology bindings for ARM, based | ||
32 | on the ePAPR standard, available from: | ||
33 | |||
34 | http://www.power.org/documentation/epapr-version-1-1/ | ||
35 | |||
36 | If not stated otherwise, whenever a reference to a cpu node phandle is made its | ||
37 | value must point to a cpu node compliant with the cpu node bindings as | ||
38 | documented in [1]. | ||
39 | A topology description containing phandles to cpu nodes that are not compliant | ||
40 | with bindings standardized in [1] is therefore considered invalid. | ||
41 | |||
42 | =========================================== | ||
43 | 2 - cpu-map node | ||
44 | =========================================== | ||
45 | |||
46 | The ARM CPU topology is defined within the cpu-map node, which is a direct | ||
47 | child of the cpus node and provides a container where the actual topology | ||
48 | nodes are listed. | ||
49 | |||
50 | - cpu-map node | ||
51 | |||
52 | Usage: Optional - On ARM SMP systems provide CPUs topology to the OS. | ||
53 | ARM uniprocessor systems do not require a topology | ||
54 | description and therefore should not define a | ||
55 | cpu-map node. | ||
56 | |||
57 | Description: The cpu-map node is just a container node where its | ||
58 | subnodes describe the CPU topology. | ||
59 | |||
60 | Node name must be "cpu-map". | ||
61 | |||
62 | The cpu-map node's parent node must be the cpus node. | ||
63 | |||
64 | The cpu-map node's child nodes can be: | ||
65 | |||
66 | - one or more cluster nodes | ||
67 | |||
68 | Any other configuration is considered invalid. | ||
69 | |||
70 | The cpu-map node can only contain three types of child nodes: | ||
71 | |||
72 | - cluster node | ||
73 | - core node | ||
74 | - thread node | ||
75 | |||
76 | whose bindings are described in paragraph 3. | ||
77 | |||
78 | The nodes describing the CPU topology (cluster/core/thread) can only be | ||
79 | defined within the cpu-map node. | ||
80 | Any other configuration is consider invalid and therefore must be ignored. | ||
81 | |||
82 | =========================================== | ||
83 | 2.1 - cpu-map child nodes naming convention | ||
84 | =========================================== | ||
85 | |||
86 | cpu-map child nodes must follow a naming convention where the node name | ||
87 | must be "clusterN", "coreN", "threadN" depending on the node type (ie | ||
88 | cluster/core/thread) (where N = {0, 1, ...} is the node number; nodes which | ||
89 | are siblings within a single common parent node must be given a unique and | ||
90 | sequential N value, starting from 0). | ||
91 | cpu-map child nodes which do not share a common parent node can have the same | ||
92 | name (ie same number N as other cpu-map child nodes at different device tree | ||
93 | levels) since name uniqueness will be guaranteed by the device tree hierarchy. | ||
94 | |||
95 | =========================================== | ||
96 | 3 - cluster/core/thread node bindings | ||
97 | =========================================== | ||
98 | |||
99 | Bindings for cluster/cpu/thread nodes are defined as follows: | ||
100 | |||
101 | - cluster node | ||
102 | |||
103 | Description: must be declared within a cpu-map node, one node | ||
104 | per cluster. A system can contain several layers of | ||
105 | clustering and cluster nodes can be contained in parent | ||
106 | cluster nodes. | ||
107 | |||
108 | The cluster node name must be "clusterN" as described in 2.1 above. | ||
109 | A cluster node can not be a leaf node. | ||
110 | |||
111 | A cluster node's child nodes must be: | ||
112 | |||
113 | - one or more cluster nodes; or | ||
114 | - one or more core nodes | ||
115 | |||
116 | Any other configuration is considered invalid. | ||
117 | |||
118 | - core node | ||
119 | |||
120 | Description: must be declared in a cluster node, one node per core in | ||
121 | the cluster. If the system does not support SMT, core | ||
122 | nodes are leaf nodes, otherwise they become containers of | ||
123 | thread nodes. | ||
124 | |||
125 | The core node name must be "coreN" as described in 2.1 above. | ||
126 | |||
127 | A core node must be a leaf node if SMT is not supported. | ||
128 | |||
129 | Properties for core nodes that are leaf nodes: | ||
130 | |||
131 | - cpu | ||
132 | Usage: required | ||
133 | Value type: <phandle> | ||
134 | Definition: a phandle to the cpu node that corresponds to the | ||
135 | core node. | ||
136 | |||
137 | If a core node is not a leaf node (CPUs supporting SMT) a core node's | ||
138 | child nodes can be: | ||
139 | |||
140 | - one or more thread nodes | ||
141 | |||
142 | Any other configuration is considered invalid. | ||
143 | |||
144 | - thread node | ||
145 | |||
146 | Description: must be declared in a core node, one node per thread | ||
147 | in the core if the system supports SMT. Thread nodes are | ||
148 | always leaf nodes in the device tree. | ||
149 | |||
150 | The thread node name must be "threadN" as described in 2.1 above. | ||
151 | |||
152 | A thread node must be a leaf node. | ||
153 | |||
154 | A thread node must contain the following property: | ||
155 | |||
156 | - cpu | ||
157 | Usage: required | ||
158 | Value type: <phandle> | ||
159 | Definition: a phandle to the cpu node that corresponds to | ||
160 | the thread node. | ||
161 | |||
162 | =========================================== | ||
163 | 4 - Example dts | ||
164 | =========================================== | ||
165 | |||
166 | Example 1 (ARM 64-bit, 16-cpu system, two clusters of clusters): | ||
167 | |||
168 | cpus { | ||
169 | #size-cells = <0>; | ||
170 | #address-cells = <2>; | ||
171 | |||
172 | cpu-map { | ||
173 | cluster0 { | ||
174 | cluster0 { | ||
175 | core0 { | ||
176 | thread0 { | ||
177 | cpu = <&CPU0>; | ||
178 | }; | ||
179 | thread1 { | ||
180 | cpu = <&CPU1>; | ||
181 | }; | ||
182 | }; | ||
183 | |||
184 | core1 { | ||
185 | thread0 { | ||
186 | cpu = <&CPU2>; | ||
187 | }; | ||
188 | thread1 { | ||
189 | cpu = <&CPU3>; | ||
190 | }; | ||
191 | }; | ||
192 | }; | ||
193 | |||
194 | cluster1 { | ||
195 | core0 { | ||
196 | thread0 { | ||
197 | cpu = <&CPU4>; | ||
198 | }; | ||
199 | thread1 { | ||
200 | cpu = <&CPU5>; | ||
201 | }; | ||
202 | }; | ||
203 | |||
204 | core1 { | ||
205 | thread0 { | ||
206 | cpu = <&CPU6>; | ||
207 | }; | ||
208 | thread1 { | ||
209 | cpu = <&CPU7>; | ||
210 | }; | ||
211 | }; | ||
212 | }; | ||
213 | }; | ||
214 | |||
215 | cluster1 { | ||
216 | cluster0 { | ||
217 | core0 { | ||
218 | thread0 { | ||
219 | cpu = <&CPU8>; | ||
220 | }; | ||
221 | thread1 { | ||
222 | cpu = <&CPU9>; | ||
223 | }; | ||
224 | }; | ||
225 | core1 { | ||
226 | thread0 { | ||
227 | cpu = <&CPU10>; | ||
228 | }; | ||
229 | thread1 { | ||
230 | cpu = <&CPU11>; | ||
231 | }; | ||
232 | }; | ||
233 | }; | ||
234 | |||
235 | cluster1 { | ||
236 | core0 { | ||
237 | thread0 { | ||
238 | cpu = <&CPU12>; | ||
239 | }; | ||
240 | thread1 { | ||
241 | cpu = <&CPU13>; | ||
242 | }; | ||
243 | }; | ||
244 | core1 { | ||
245 | thread0 { | ||
246 | cpu = <&CPU14>; | ||
247 | }; | ||
248 | thread1 { | ||
249 | cpu = <&CPU15>; | ||
250 | }; | ||
251 | }; | ||
252 | }; | ||
253 | }; | ||
254 | }; | ||
255 | |||
256 | CPU0: cpu@0 { | ||
257 | device_type = "cpu"; | ||
258 | compatible = "arm,cortex-a57"; | ||
259 | reg = <0x0 0x0>; | ||
260 | enable-method = "spin-table"; | ||
261 | cpu-release-addr = <0 0x20000000>; | ||
262 | }; | ||
263 | |||
264 | CPU1: cpu@1 { | ||
265 | device_type = "cpu"; | ||
266 | compatible = "arm,cortex-a57"; | ||
267 | reg = <0x0 0x1>; | ||
268 | enable-method = "spin-table"; | ||
269 | cpu-release-addr = <0 0x20000000>; | ||
270 | }; | ||
271 | |||
272 | CPU2: cpu@100 { | ||
273 | device_type = "cpu"; | ||
274 | compatible = "arm,cortex-a57"; | ||
275 | reg = <0x0 0x100>; | ||
276 | enable-method = "spin-table"; | ||
277 | cpu-release-addr = <0 0x20000000>; | ||
278 | }; | ||
279 | |||
280 | CPU3: cpu@101 { | ||
281 | device_type = "cpu"; | ||
282 | compatible = "arm,cortex-a57"; | ||
283 | reg = <0x0 0x101>; | ||
284 | enable-method = "spin-table"; | ||
285 | cpu-release-addr = <0 0x20000000>; | ||
286 | }; | ||
287 | |||
288 | CPU4: cpu@10000 { | ||
289 | device_type = "cpu"; | ||
290 | compatible = "arm,cortex-a57"; | ||
291 | reg = <0x0 0x10000>; | ||
292 | enable-method = "spin-table"; | ||
293 | cpu-release-addr = <0 0x20000000>; | ||
294 | }; | ||
295 | |||
296 | CPU5: cpu@10001 { | ||
297 | device_type = "cpu"; | ||
298 | compatible = "arm,cortex-a57"; | ||
299 | reg = <0x0 0x10001>; | ||
300 | enable-method = "spin-table"; | ||
301 | cpu-release-addr = <0 0x20000000>; | ||
302 | }; | ||
303 | |||
304 | CPU6: cpu@10100 { | ||
305 | device_type = "cpu"; | ||
306 | compatible = "arm,cortex-a57"; | ||
307 | reg = <0x0 0x10100>; | ||
308 | enable-method = "spin-table"; | ||
309 | cpu-release-addr = <0 0x20000000>; | ||
310 | }; | ||
311 | |||
312 | CPU7: cpu@10101 { | ||
313 | device_type = "cpu"; | ||
314 | compatible = "arm,cortex-a57"; | ||
315 | reg = <0x0 0x10101>; | ||
316 | enable-method = "spin-table"; | ||
317 | cpu-release-addr = <0 0x20000000>; | ||
318 | }; | ||
319 | |||
320 | CPU8: cpu@100000000 { | ||
321 | device_type = "cpu"; | ||
322 | compatible = "arm,cortex-a57"; | ||
323 | reg = <0x1 0x0>; | ||
324 | enable-method = "spin-table"; | ||
325 | cpu-release-addr = <0 0x20000000>; | ||
326 | }; | ||
327 | |||
328 | CPU9: cpu@100000001 { | ||
329 | device_type = "cpu"; | ||
330 | compatible = "arm,cortex-a57"; | ||
331 | reg = <0x1 0x1>; | ||
332 | enable-method = "spin-table"; | ||
333 | cpu-release-addr = <0 0x20000000>; | ||
334 | }; | ||
335 | |||
336 | CPU10: cpu@100000100 { | ||
337 | device_type = "cpu"; | ||
338 | compatible = "arm,cortex-a57"; | ||
339 | reg = <0x1 0x100>; | ||
340 | enable-method = "spin-table"; | ||
341 | cpu-release-addr = <0 0x20000000>; | ||
342 | }; | ||
343 | |||
344 | CPU11: cpu@100000101 { | ||
345 | device_type = "cpu"; | ||
346 | compatible = "arm,cortex-a57"; | ||
347 | reg = <0x1 0x101>; | ||
348 | enable-method = "spin-table"; | ||
349 | cpu-release-addr = <0 0x20000000>; | ||
350 | }; | ||
351 | |||
352 | CPU12: cpu@100010000 { | ||
353 | device_type = "cpu"; | ||
354 | compatible = "arm,cortex-a57"; | ||
355 | reg = <0x1 0x10000>; | ||
356 | enable-method = "spin-table"; | ||
357 | cpu-release-addr = <0 0x20000000>; | ||
358 | }; | ||
359 | |||
360 | CPU13: cpu@100010001 { | ||
361 | device_type = "cpu"; | ||
362 | compatible = "arm,cortex-a57"; | ||
363 | reg = <0x1 0x10001>; | ||
364 | enable-method = "spin-table"; | ||
365 | cpu-release-addr = <0 0x20000000>; | ||
366 | }; | ||
367 | |||
368 | CPU14: cpu@100010100 { | ||
369 | device_type = "cpu"; | ||
370 | compatible = "arm,cortex-a57"; | ||
371 | reg = <0x1 0x10100>; | ||
372 | enable-method = "spin-table"; | ||
373 | cpu-release-addr = <0 0x20000000>; | ||
374 | }; | ||
375 | |||
376 | CPU15: cpu@100010101 { | ||
377 | device_type = "cpu"; | ||
378 | compatible = "arm,cortex-a57"; | ||
379 | reg = <0x1 0x10101>; | ||
380 | enable-method = "spin-table"; | ||
381 | cpu-release-addr = <0 0x20000000>; | ||
382 | }; | ||
383 | }; | ||
384 | |||
385 | Example 2 (ARM 32-bit, dual-cluster, 8-cpu system, no SMT): | ||
386 | |||
387 | cpus { | ||
388 | #size-cells = <0>; | ||
389 | #address-cells = <1>; | ||
390 | |||
391 | cpu-map { | ||
392 | cluster0 { | ||
393 | core0 { | ||
394 | cpu = <&CPU0>; | ||
395 | }; | ||
396 | core1 { | ||
397 | cpu = <&CPU1>; | ||
398 | }; | ||
399 | core2 { | ||
400 | cpu = <&CPU2>; | ||
401 | }; | ||
402 | core3 { | ||
403 | cpu = <&CPU3>; | ||
404 | }; | ||
405 | }; | ||
406 | |||
407 | cluster1 { | ||
408 | core0 { | ||
409 | cpu = <&CPU4>; | ||
410 | }; | ||
411 | core1 { | ||
412 | cpu = <&CPU5>; | ||
413 | }; | ||
414 | core2 { | ||
415 | cpu = <&CPU6>; | ||
416 | }; | ||
417 | core3 { | ||
418 | cpu = <&CPU7>; | ||
419 | }; | ||
420 | }; | ||
421 | }; | ||
422 | |||
423 | CPU0: cpu@0 { | ||
424 | device_type = "cpu"; | ||
425 | compatible = "arm,cortex-a15"; | ||
426 | reg = <0x0>; | ||
427 | }; | ||
428 | |||
429 | CPU1: cpu@1 { | ||
430 | device_type = "cpu"; | ||
431 | compatible = "arm,cortex-a15"; | ||
432 | reg = <0x1>; | ||
433 | }; | ||
434 | |||
435 | CPU2: cpu@2 { | ||
436 | device_type = "cpu"; | ||
437 | compatible = "arm,cortex-a15"; | ||
438 | reg = <0x2>; | ||
439 | }; | ||
440 | |||
441 | CPU3: cpu@3 { | ||
442 | device_type = "cpu"; | ||
443 | compatible = "arm,cortex-a15"; | ||
444 | reg = <0x3>; | ||
445 | }; | ||
446 | |||
447 | CPU4: cpu@100 { | ||
448 | device_type = "cpu"; | ||
449 | compatible = "arm,cortex-a7"; | ||
450 | reg = <0x100>; | ||
451 | }; | ||
452 | |||
453 | CPU5: cpu@101 { | ||
454 | device_type = "cpu"; | ||
455 | compatible = "arm,cortex-a7"; | ||
456 | reg = <0x101>; | ||
457 | }; | ||
458 | |||
459 | CPU6: cpu@102 { | ||
460 | device_type = "cpu"; | ||
461 | compatible = "arm,cortex-a7"; | ||
462 | reg = <0x102>; | ||
463 | }; | ||
464 | |||
465 | CPU7: cpu@103 { | ||
466 | device_type = "cpu"; | ||
467 | compatible = "arm,cortex-a7"; | ||
468 | reg = <0x103>; | ||
469 | }; | ||
470 | }; | ||
471 | |||
472 | =============================================================================== | ||
473 | [1] ARM Linux kernel documentation | ||
474 | Documentation/devicetree/bindings/arm/cpus.txt | ||
diff --git a/Documentation/devicetree/bindings/arm/vexpress-scc.txt b/Documentation/devicetree/bindings/arm/vexpress-scc.txt new file mode 100644 index 000000000000..ae5043e42e5d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/vexpress-scc.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | ARM Versatile Express Serial Configuration Controller | ||
2 | ----------------------------------------------------- | ||
3 | |||
4 | Test chips for ARM Versatile Express platform implement SCC (Serial | ||
5 | Configuration Controller) interface, used to set initial conditions | ||
6 | for the test chip. | ||
7 | |||
8 | In some cases its registers are also mapped in normal address space | ||
9 | and can be used to obtain runtime information about the chip internals | ||
10 | (like silicon temperature sensors) and as interface to other subsystems | ||
11 | like platform configuration control and power management. | ||
12 | |||
13 | Required properties: | ||
14 | |||
15 | - compatible value: "arm,vexpress-scc,<model>", "arm,vexpress-scc"; | ||
16 | where <model> is the full tile model name (as used | ||
17 | in the tile's Technical Reference Manual), | ||
18 | eg. for Coretile Express A15x2 A7x3 (V2P-CA15_A7): | ||
19 | compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc"; | ||
20 | |||
21 | Optional properties: | ||
22 | |||
23 | - reg: when the SCC is memory mapped, physical address and size of the | ||
24 | registers window | ||
25 | - interrupts: when the SCC can generate a system-level interrupt | ||
26 | |||
27 | Example: | ||
28 | |||
29 | scc@7fff0000 { | ||
30 | compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc"; | ||
31 | reg = <0 0x7fff0000 0 0x1000>; | ||
32 | interrupts = <0 95 4>; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt index 9cf3f25544c7..5580e9c4bd85 100644 --- a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt +++ b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt | |||
@@ -32,8 +32,8 @@ numbers - see motherboard's TRM for more details. | |||
32 | The node describing a config device must refer to the sysreg node via | 32 | The node describing a config device must refer to the sysreg node via |
33 | "arm,vexpress,config-bridge" phandle (can be also defined in the node's | 33 | "arm,vexpress,config-bridge" phandle (can be also defined in the node's |
34 | parent) and relies on the board topology properties - see main vexpress | 34 | parent) and relies on the board topology properties - see main vexpress |
35 | node documentation for more details. It must must also define the | 35 | node documentation for more details. It must also define the following |
36 | following property: | 36 | property: |
37 | - arm,vexpress-sysreg,func : must contain two cells: | 37 | - arm,vexpress-sysreg,func : must contain two cells: |
38 | - first cell defines function number (eg. 1 for clock generator, | 38 | - first cell defines function number (eg. 1 for clock generator, |
39 | 2 for voltage regulators etc.) | 39 | 2 for voltage regulators etc.) |
diff --git a/Documentation/devicetree/bindings/arm/vic.txt b/Documentation/devicetree/bindings/arm/vic.txt index 266716b23437..dd527216c5fb 100644 --- a/Documentation/devicetree/bindings/arm/vic.txt +++ b/Documentation/devicetree/bindings/arm/vic.txt | |||
@@ -18,6 +18,15 @@ Required properties: | |||
18 | Optional properties: | 18 | Optional properties: |
19 | 19 | ||
20 | - interrupts : Interrupt source for parent controllers if the VIC is nested. | 20 | - interrupts : Interrupt source for parent controllers if the VIC is nested. |
21 | - valid-mask : A one cell big bit mask of valid interrupt sources. Each bit | ||
22 | represents single interrupt source, starting from source 0 at LSb and ending | ||
23 | at source 31 at MSb. A bit that is set means that the source is wired and | ||
24 | clear means otherwise. If unspecified, defaults to all valid. | ||
25 | - valid-wakeup-mask : A one cell big bit mask of interrupt sources that can be | ||
26 | configured as wake up source for the system. Order of bits is the same as for | ||
27 | valid-mask property. A set bit means that this interrupt source can be | ||
28 | configured as a wake up source for the system. If unspecied, defaults to all | ||
29 | interrupt sources configurable as wake up sources. | ||
21 | 30 | ||
22 | Example: | 31 | Example: |
23 | 32 | ||
@@ -26,4 +35,7 @@ Example: | |||
26 | interrupt-controller; | 35 | interrupt-controller; |
27 | #interrupt-cells = <1>; | 36 | #interrupt-cells = <1>; |
28 | reg = <0x60000 0x1000>; | 37 | reg = <0x60000 0x1000>; |
38 | |||
39 | valid-mask = <0xffffff7f>; | ||
40 | valid-wakeup-mask = <0x0000ff7f>; | ||
29 | }; | 41 | }; |
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt index 3ec0c5c4f0e9..89de1564950c 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt | |||
@@ -4,27 +4,17 @@ SATA nodes are defined to describe on-chip Serial ATA controllers. | |||
4 | Each SATA controller should have its own node. | 4 | Each SATA controller should have its own node. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : compatible list, contains "calxeda,hb-ahci" or "snps,spear-ahci" | 7 | - compatible : compatible list, contains "snps,spear-ahci" |
8 | - interrupts : <interrupt mapping for SATA IRQ> | 8 | - interrupts : <interrupt mapping for SATA IRQ> |
9 | - reg : <registers mapping> | 9 | - reg : <registers mapping> |
10 | 10 | ||
11 | Optional properties: | 11 | Optional properties: |
12 | - calxeda,port-phys: phandle-combophy and lane assignment, which maps each | ||
13 | SATA port to a combophy and a lane within that | ||
14 | combophy | ||
15 | - calxeda,sgpio-gpio: phandle-gpio bank, bit offset, and default on or off, | ||
16 | which indicates that the driver supports SGPIO | ||
17 | indicator lights using the indicated GPIOs | ||
18 | - calxeda,led-order : a u32 array that map port numbers to offsets within the | ||
19 | SGPIO bitstream. | ||
20 | - dma-coherent : Present if dma operations are coherent | 12 | - dma-coherent : Present if dma operations are coherent |
21 | 13 | ||
22 | Example: | 14 | Example: |
23 | sata@ffe08000 { | 15 | sata@ffe08000 { |
24 | compatible = "calxeda,hb-ahci"; | 16 | compatible = "snps,spear-ahci"; |
25 | reg = <0xffe08000 0x1000>; | 17 | reg = <0xffe08000 0x1000>; |
26 | interrupts = <115>; | 18 | interrupts = <115>; |
27 | calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1 | ||
28 | &combophy0 2 &combophy0 3>; | ||
29 | 19 | ||
30 | }; | 20 | }; |
diff --git a/Documentation/devicetree/bindings/ata/sata_highbank.txt b/Documentation/devicetree/bindings/ata/sata_highbank.txt new file mode 100644 index 000000000000..aa83407cb7a4 --- /dev/null +++ b/Documentation/devicetree/bindings/ata/sata_highbank.txt | |||
@@ -0,0 +1,44 @@ | |||
1 | * Calxeda AHCI SATA Controller | ||
2 | |||
3 | SATA nodes are defined to describe on-chip Serial ATA controllers. | ||
4 | The Calxeda SATA controller mostly conforms to the AHCI interface | ||
5 | with some special extensions to add functionality. | ||
6 | Each SATA controller should have its own node. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible : compatible list, contains "calxeda,hb-ahci" | ||
10 | - interrupts : <interrupt mapping for SATA IRQ> | ||
11 | - reg : <registers mapping> | ||
12 | |||
13 | Optional properties: | ||
14 | - dma-coherent : Present if dma operations are coherent | ||
15 | - calxeda,port-phys : phandle-combophy and lane assignment, which maps each | ||
16 | SATA port to a combophy and a lane within that | ||
17 | combophy | ||
18 | - calxeda,sgpio-gpio: phandle-gpio bank, bit offset, and default on or off, | ||
19 | which indicates that the driver supports SGPIO | ||
20 | indicator lights using the indicated GPIOs | ||
21 | - calxeda,led-order : a u32 array that map port numbers to offsets within the | ||
22 | SGPIO bitstream. | ||
23 | - calxeda,tx-atten : a u32 array that contains TX attenuation override | ||
24 | codes, one per port. The upper 3 bytes are always | ||
25 | 0 and thus ignored. | ||
26 | - calxeda,pre-clocks : a u32 that indicates the number of additional clock | ||
27 | cycles to transmit before sending an SGPIO pattern | ||
28 | - calxeda,post-clocks: a u32 that indicates the number of additional clock | ||
29 | cycles to transmit after sending an SGPIO pattern | ||
30 | |||
31 | Example: | ||
32 | sata@ffe08000 { | ||
33 | compatible = "calxeda,hb-ahci"; | ||
34 | reg = <0xffe08000 0x1000>; | ||
35 | interrupts = <115>; | ||
36 | dma-coherent; | ||
37 | calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1 | ||
38 | &combophy0 2 &combophy0 3>; | ||
39 | calxeda,sgpio-gpio =<&gpioh 5 1 &gpioh 6 1 &gpioh 7 1>; | ||
40 | calxeda,led-order = <4 0 1 2 3>; | ||
41 | calxeda,tx-atten = <0xff 22 0xff 0xff 23>; | ||
42 | calxeda,pre-clocks = <10>; | ||
43 | calxeda,post-clocks = <0>; | ||
44 | }; | ||
diff --git a/Documentation/devicetree/bindings/bus/imx-weim.txt b/Documentation/devicetree/bindings/bus/imx-weim.txt index cedc2a9c4785..0fd76c405208 100644 --- a/Documentation/devicetree/bindings/bus/imx-weim.txt +++ b/Documentation/devicetree/bindings/bus/imx-weim.txt | |||
@@ -8,7 +8,7 @@ The actual devices are instantiated from the child nodes of a WEIM node. | |||
8 | 8 | ||
9 | Required properties: | 9 | Required properties: |
10 | 10 | ||
11 | - compatible: Should be set to "fsl,imx6q-weim" | 11 | - compatible: Should be set to "fsl,<soc>-weim" |
12 | - reg: A resource specifier for the register space | 12 | - reg: A resource specifier for the register space |
13 | (see the example below) | 13 | (see the example below) |
14 | - clocks: the clock, see the example below. | 14 | - clocks: the clock, see the example below. |
@@ -21,11 +21,18 @@ Required properties: | |||
21 | 21 | ||
22 | Timing property for child nodes. It is mandatory, not optional. | 22 | Timing property for child nodes. It is mandatory, not optional. |
23 | 23 | ||
24 | - fsl,weim-cs-timing: The timing array, contains 6 timing values for the | 24 | - fsl,weim-cs-timing: The timing array, contains timing values for the |
25 | child node. We can get the CS index from the child | 25 | child node. We can get the CS index from the child |
26 | node's "reg" property. This property contains the values | 26 | node's "reg" property. The number of registers depends |
27 | for the registers EIM_CSnGCR1, EIM_CSnGCR2, EIM_CSnRCR1, | 27 | on the selected chip. |
28 | EIM_CSnRCR2, EIM_CSnWCR1, EIM_CSnWCR2 in this order. | 28 | For i.MX1, i.MX21 ("fsl,imx1-weim") there are two |
29 | registers: CSxU, CSxL. | ||
30 | For i.MX25, i.MX27, i.MX31 and i.MX35 ("fsl,imx27-weim") | ||
31 | there are three registers: CSCRxU, CSCRxL, CSCRxA. | ||
32 | For i.MX50, i.MX53 ("fsl,imx50-weim"), | ||
33 | i.MX51 ("fsl,imx51-weim") and i.MX6Q ("fsl,imx6q-weim") | ||
34 | there are six registers: CSxGCR1, CSxGCR2, CSxRCR1, | ||
35 | CSxRCR2, CSxWCR1, CSxWCR2. | ||
29 | 36 | ||
30 | Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM: | 37 | Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM: |
31 | 38 | ||
diff --git a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt new file mode 100644 index 000000000000..7586fb68c072 --- /dev/null +++ b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt | |||
@@ -0,0 +1,276 @@ | |||
1 | |||
2 | * Marvell MBus | ||
3 | |||
4 | Required properties: | ||
5 | |||
6 | - compatible: Should be set to one of the following: | ||
7 | marvell,armada370-mbus | ||
8 | marvell,armadaxp-mbus | ||
9 | marvell,armada370-mbus | ||
10 | marvell,armadaxp-mbus | ||
11 | marvell,kirkwood-mbus | ||
12 | marvell,dove-mbus | ||
13 | marvell,orion5x-88f5281-mbus | ||
14 | marvell,orion5x-88f5182-mbus | ||
15 | marvell,orion5x-88f5181-mbus | ||
16 | marvell,orion5x-88f6183-mbus | ||
17 | marvell,mv78xx0-mbus | ||
18 | |||
19 | - address-cells: Must be '2'. The first cell for the MBus ID encoding, | ||
20 | the second cell for the address offset within the window. | ||
21 | |||
22 | - size-cells: Must be '1'. | ||
23 | |||
24 | - ranges: Must be set up to provide a proper translation for each child. | ||
25 | See the examples below. | ||
26 | |||
27 | - controller: Contains a single phandle referring to the MBus controller | ||
28 | node. This allows to specify the node that contains the | ||
29 | registers that control the MBus, which is typically contained | ||
30 | within the internal register window (see below). | ||
31 | |||
32 | Optional properties: | ||
33 | |||
34 | - pcie-mem-aperture: This optional property contains the aperture for | ||
35 | the memory region of the PCIe driver. | ||
36 | If it's defined, it must encode the base address and | ||
37 | size for the address decoding windows allocated for | ||
38 | the PCIe memory region. | ||
39 | |||
40 | - pcie-io-aperture: Just as explained for the above property, this | ||
41 | optional property contains the aperture for the | ||
42 | I/O region of the PCIe driver. | ||
43 | |||
44 | * Marvell MBus controller | ||
45 | |||
46 | Required properties: | ||
47 | |||
48 | - compatible: Should be set to "marvell,mbus-controller". | ||
49 | |||
50 | - reg: Device's register space. | ||
51 | Two entries are expected (see the examples below): | ||
52 | the first one controls the devices decoding window and | ||
53 | the second one controls the SDRAM decoding window. | ||
54 | |||
55 | Example: | ||
56 | |||
57 | soc { | ||
58 | compatible = "marvell,armada370-mbus", "simple-bus"; | ||
59 | #address-cells = <2>; | ||
60 | #size-cells = <1>; | ||
61 | controller = <&mbusc>; | ||
62 | pcie-mem-aperture = <0xe0000000 0x8000000>; | ||
63 | pcie-io-aperture = <0xe8000000 0x100000>; | ||
64 | |||
65 | internal-regs { | ||
66 | compatible = "simple-bus"; | ||
67 | |||
68 | mbusc: mbus-controller@20000 { | ||
69 | compatible = "marvell,mbus-controller"; | ||
70 | reg = <0x20000 0x100>, <0x20180 0x20>; | ||
71 | }; | ||
72 | |||
73 | /* more children ...*/ | ||
74 | }; | ||
75 | }; | ||
76 | |||
77 | ** MBus address decoding window specification | ||
78 | |||
79 | The MBus children address space is comprised of two cells: the first one for | ||
80 | the window ID and the second one for the offset within the window. | ||
81 | In order to allow to describe valid and non-valid window entries, the | ||
82 | following encoding is used: | ||
83 | |||
84 | 0xSIAA0000 0x00oooooo | ||
85 | |||
86 | Where: | ||
87 | |||
88 | S = 0x0 for a MBus valid window | ||
89 | S = 0xf for a non-valid window (see below) | ||
90 | |||
91 | If S = 0x0, then: | ||
92 | |||
93 | I = 4-bit window target ID | ||
94 | AA = windpw attribute | ||
95 | |||
96 | If S = 0xf, then: | ||
97 | |||
98 | I = don't care | ||
99 | AA = 1 for internal register | ||
100 | |||
101 | Following the above encoding, for each ranges entry for a MBus valid window | ||
102 | (S = 0x0), an address decoding window is allocated. On the other side, | ||
103 | entries for translation that do not correspond to valid windows (S = 0xf) | ||
104 | are skipped. | ||
105 | |||
106 | soc { | ||
107 | compatible = "marvell,armada370-mbus", "simple-bus"; | ||
108 | #address-cells = <2>; | ||
109 | #size-cells = <1>; | ||
110 | controller = <&mbusc>; | ||
111 | |||
112 | ranges = <0xf0010000 0 0 0xd0000000 0x100000 | ||
113 | 0x01e00000 0 0 0xfff00000 0x100000>; | ||
114 | |||
115 | bootrom { | ||
116 | compatible = "marvell,bootrom"; | ||
117 | reg = <0x01e00000 0 0x100000>; | ||
118 | }; | ||
119 | |||
120 | /* other children */ | ||
121 | ... | ||
122 | |||
123 | internal-regs { | ||
124 | compatible = "simple-bus"; | ||
125 | ranges = <0 0xf0010000 0 0x100000>; | ||
126 | |||
127 | mbusc: mbus-controller@20000 { | ||
128 | compatible = "marvell,mbus-controller"; | ||
129 | reg = <0x20000 0x100>, <0x20180 0x20>; | ||
130 | }; | ||
131 | |||
132 | /* more children ...*/ | ||
133 | }; | ||
134 | }; | ||
135 | |||
136 | In the shown example, the translation entry in the 'ranges' property is what | ||
137 | makes the MBus driver create a static decoding window for the corresponding | ||
138 | given child device. Note that the binding does not require child nodes to be | ||
139 | present. Of course, child nodes are needed to probe the devices. | ||
140 | |||
141 | Since each window is identified by its target ID and attribute ID there's | ||
142 | a special macro that can be use to simplify the translation entries: | ||
143 | |||
144 | #define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) | ||
145 | |||
146 | Using this macro, the above example would be: | ||
147 | |||
148 | soc { | ||
149 | compatible = "marvell,armada370-mbus", "simple-bus"; | ||
150 | #address-cells = <2>; | ||
151 | #size-cells = <1>; | ||
152 | controller = <&mbusc>; | ||
153 | |||
154 | ranges = < MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000 | ||
155 | MBUS_ID(0x01, 0xe0) 0 0 0xfff00000 0x100000>; | ||
156 | |||
157 | bootrom { | ||
158 | compatible = "marvell,bootrom"; | ||
159 | reg = <MBUS_ID(0x01, 0xe0) 0 0x100000>; | ||
160 | }; | ||
161 | |||
162 | /* other children */ | ||
163 | ... | ||
164 | |||
165 | internal-regs { | ||
166 | compatible = "simple-bus"; | ||
167 | #address-cells = <1>; | ||
168 | #size-cells = <1>; | ||
169 | ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>; | ||
170 | |||
171 | mbusc: mbus-controller@20000 { | ||
172 | compatible = "marvell,mbus-controller"; | ||
173 | reg = <0x20000 0x100>, <0x20180 0x20>; | ||
174 | }; | ||
175 | |||
176 | /* other children */ | ||
177 | ... | ||
178 | }; | ||
179 | }; | ||
180 | |||
181 | |||
182 | ** About the window base address | ||
183 | |||
184 | Remember the MBus controller allows a great deal of flexibility for choosing | ||
185 | the decoding window base address. When planning the device tree layout it's | ||
186 | possible to choose any address as the base address, provided of course there's | ||
187 | a region large enough available, and with the required alignment. | ||
188 | |||
189 | Yet in other words: there's nothing preventing us from setting a base address | ||
190 | of 0xf0000000, or 0xd0000000 for the NOR device shown above, if such region is | ||
191 | unused. | ||
192 | |||
193 | ** Window allocation policy | ||
194 | |||
195 | The mbus-node ranges property defines a set of mbus windows that are expected | ||
196 | to be set by the operating system and that are guaranteed to be free of overlaps | ||
197 | with one another or with the system memory ranges. | ||
198 | |||
199 | Each entry in the property refers to exactly one window. If the operating system | ||
200 | choses to use a different set of mbus windows, it must ensure that any address | ||
201 | translations performed from downstream devices are adapted accordingly. | ||
202 | |||
203 | The operating system may insert additional mbus windows that do not conflict | ||
204 | with the ones listed in the ranges, e.g. for mapping PCIe devices. | ||
205 | As a special case, the internal register window must be set up by the boot | ||
206 | loader at the address listed in the ranges property, since access to that region | ||
207 | is needed to set up the other windows. | ||
208 | |||
209 | ** Example | ||
210 | |||
211 | See the example below, where a more complete device tree is shown: | ||
212 | |||
213 | soc { | ||
214 | compatible = "marvell,armadaxp-mbus", "simple-bus"; | ||
215 | controller = <&mbusc>; | ||
216 | |||
217 | ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000 /* internal-regs */ | ||
218 | MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000 | ||
219 | MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000>; | ||
220 | |||
221 | bootrom { | ||
222 | compatible = "marvell,bootrom"; | ||
223 | reg = <MBUS_ID(0x01, 0x1d) 0 0x100000>; | ||
224 | }; | ||
225 | |||
226 | devbus-bootcs { | ||
227 | status = "okay"; | ||
228 | ranges = <0 MBUS_ID(0x01, 0x2f) 0 0x8000000>; | ||
229 | |||
230 | /* NOR */ | ||
231 | nor { | ||
232 | compatible = "cfi-flash"; | ||
233 | reg = <0 0x8000000>; | ||
234 | bank-width = <2>; | ||
235 | }; | ||
236 | }; | ||
237 | |||
238 | pcie-controller { | ||
239 | compatible = "marvell,armada-xp-pcie"; | ||
240 | status = "okay"; | ||
241 | device_type = "pci"; | ||
242 | |||
243 | #address-cells = <3>; | ||
244 | #size-cells = <2>; | ||
245 | |||
246 | ranges = | ||
247 | <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 /* Port 0.0 registers */ | ||
248 | 0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000 /* Port 2.0 registers */ | ||
249 | 0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 /* Port 0.1 registers */ | ||
250 | 0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000 /* Port 0.2 registers */ | ||
251 | 0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000 /* Port 0.3 registers */ | ||
252 | 0x82000800 0 0xe0000000 MBUS_ID(0x04, 0xe8) 0xe0000000 0 0x08000000 /* Port 0.0 MEM */ | ||
253 | 0x81000800 0 0 MBUS_ID(0x04, 0xe0) 0xe8000000 0 0x00100000 /* Port 0.0 IO */>; | ||
254 | |||
255 | |||
256 | pcie@1,0 { | ||
257 | /* Port 0, Lane 0 */ | ||
258 | status = "okay"; | ||
259 | }; | ||
260 | }; | ||
261 | |||
262 | internal-regs { | ||
263 | compatible = "simple-bus"; | ||
264 | #address-cells = <1>; | ||
265 | #size-cells = <1>; | ||
266 | ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>; | ||
267 | |||
268 | mbusc: mbus-controller@20000 { | ||
269 | reg = <0x20000 0x100>, <0x20180 0x20>; | ||
270 | }; | ||
271 | |||
272 | interrupt-controller@20000 { | ||
273 | reg = <0x20a00 0x2d0>, <0x21070 0x58>; | ||
274 | }; | ||
275 | }; | ||
276 | }; | ||
diff --git a/Documentation/devicetree/bindings/c6x/dscr.txt b/Documentation/devicetree/bindings/c6x/dscr.txt index d847758f2b20..b0e97144cfb1 100644 --- a/Documentation/devicetree/bindings/c6x/dscr.txt +++ b/Documentation/devicetree/bindings/c6x/dscr.txt | |||
@@ -5,7 +5,7 @@ TI C6X SoCs contain a region of miscellaneous registers which provide various | |||
5 | function for SoC control or status. Details vary considerably among from SoC | 5 | function for SoC control or status. Details vary considerably among from SoC |
6 | to SoC with no two being alike. | 6 | to SoC with no two being alike. |
7 | 7 | ||
8 | In general, the Device State Configuraion Registers (DSCR) will provide one or | 8 | In general, the Device State Configuration Registers (DSCR) will provide one or |
9 | more configuration registers often protected by a lock register where one or | 9 | more configuration registers often protected by a lock register where one or |
10 | more key values must be written to a lock register in order to unlock the | 10 | more key values must be written to a lock register in order to unlock the |
11 | configuration register for writes. These configuration register may be used to | 11 | configuration register for writes. These configuration register may be used to |
diff --git a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt index a1201802f90d..75e2e1999f87 100644 --- a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt +++ b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | The Samsung Audio Subsystem clock controller generates and supplies clocks | 3 | The Samsung Audio Subsystem clock controller generates and supplies clocks |
4 | to Audio Subsystem block available in the S5PV210 and Exynos SoCs. The clock | 4 | to Audio Subsystem block available in the S5PV210 and Exynos SoCs. The clock |
5 | binding described here is applicable to all SoC's in Exynos family. | 5 | binding described here is applicable to all SoCs in Exynos family. |
6 | 6 | ||
7 | Required Properties: | 7 | Required Properties: |
8 | 8 | ||
diff --git a/Documentation/devicetree/bindings/clock/efm32-clock.txt b/Documentation/devicetree/bindings/clock/efm32-clock.txt new file mode 100644 index 000000000000..263d293f6a10 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/efm32-clock.txt | |||
@@ -0,0 +1,11 @@ | |||
1 | * Clock bindings for Energy Micro efm32 Giant Gecko's Clock Management Unit | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "efm32gg,cmu" | ||
5 | - reg: Base address and length of the register set | ||
6 | - interrupts: Interrupt used by the CMU | ||
7 | - #clock-cells: Should be <1> | ||
8 | |||
9 | The clock consumer should specify the desired clock by having the clock ID in | ||
10 | its "clocks" phandle cell. The header efm32-clk.h contains a list of available | ||
11 | IDs. | ||
diff --git a/Documentation/devicetree/bindings/clock/exynos4-clock.txt b/Documentation/devicetree/bindings/clock/exynos4-clock.txt index 14d5c2af26f4..c6bf8a6c8f52 100644 --- a/Documentation/devicetree/bindings/clock/exynos4-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos4-clock.txt | |||
@@ -236,6 +236,7 @@ Exynos4 SoC and this is specified where applicable. | |||
236 | spi0_isp_sclk 380 Exynos4x12 | 236 | spi0_isp_sclk 380 Exynos4x12 |
237 | spi1_isp_sclk 381 Exynos4x12 | 237 | spi1_isp_sclk 381 Exynos4x12 |
238 | uart_isp_sclk 382 Exynos4x12 | 238 | uart_isp_sclk 382 Exynos4x12 |
239 | tmu_apbif 383 | ||
239 | 240 | ||
240 | [Mux Clocks] | 241 | [Mux Clocks] |
241 | 242 | ||
diff --git a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt index 781a6276adf7..24765c146e31 100644 --- a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt | |||
@@ -59,6 +59,9 @@ clock which they consume. | |||
59 | sclk_spi0 154 | 59 | sclk_spi0 154 |
60 | sclk_spi1 155 | 60 | sclk_spi1 155 |
61 | sclk_spi2 156 | 61 | sclk_spi2 156 |
62 | div_i2s1 157 | ||
63 | div_i2s2 158 | ||
64 | sclk_hdmiphy 159 | ||
62 | 65 | ||
63 | 66 | ||
64 | [Peripheral Clock Gates] | 67 | [Peripheral Clock Gates] |
@@ -154,7 +157,16 @@ clock which they consume. | |||
154 | dsim0 341 | 157 | dsim0 341 |
155 | dp 342 | 158 | dp 342 |
156 | mixer 343 | 159 | mixer 343 |
157 | hdmi 345 | 160 | hdmi 344 |
161 | g2d 345 | ||
162 | |||
163 | |||
164 | [Clock Muxes] | ||
165 | |||
166 | Clock ID | ||
167 | ---------------------------- | ||
168 | mout_hdmi 1024 | ||
169 | |||
158 | 170 | ||
159 | Example 1: An example of a clock controller node is listed below. | 171 | Example 1: An example of a clock controller node is listed below. |
160 | 172 | ||
diff --git a/Documentation/devicetree/bindings/clock/exynos5420-clock.txt b/Documentation/devicetree/bindings/clock/exynos5420-clock.txt index 9bcc4b1bff51..32aa34ecad36 100644 --- a/Documentation/devicetree/bindings/clock/exynos5420-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos5420-clock.txt | |||
@@ -59,6 +59,7 @@ clock which they consume. | |||
59 | sclk_pwm 155 | 59 | sclk_pwm 155 |
60 | sclk_gscl_wa 156 | 60 | sclk_gscl_wa 156 |
61 | sclk_gscl_wb 157 | 61 | sclk_gscl_wb 157 |
62 | sclk_hdmiphy 158 | ||
62 | 63 | ||
63 | [Peripheral Clock Gates] | 64 | [Peripheral Clock Gates] |
64 | 65 | ||
@@ -179,6 +180,17 @@ clock which they consume. | |||
179 | fimc_lite3 495 | 180 | fimc_lite3 495 |
180 | aclk_g3d 500 | 181 | aclk_g3d 500 |
181 | g3d 501 | 182 | g3d 501 |
183 | smmu_mixer 502 | ||
184 | |||
185 | Mux ID | ||
186 | ---------------------------- | ||
187 | |||
188 | mout_hdmi 640 | ||
189 | |||
190 | Divider ID | ||
191 | ---------------------------- | ||
192 | |||
193 | dout_pixel 768 | ||
182 | 194 | ||
183 | Example 1: An example of a clock controller node is listed below. | 195 | Example 1: An example of a clock controller node is listed below. |
184 | 196 | ||
diff --git a/Documentation/devicetree/bindings/clock/imx5-clock.txt b/Documentation/devicetree/bindings/clock/imx5-clock.txt index f46f5625d8ad..4c029a8739d3 100644 --- a/Documentation/devicetree/bindings/clock/imx5-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx5-clock.txt | |||
@@ -197,6 +197,7 @@ clocks and IDs. | |||
197 | spdif0_gate 183 | 197 | spdif0_gate 183 |
198 | spdif1_gate 184 | 198 | spdif1_gate 184 |
199 | spdif_ipg_gate 185 | 199 | spdif_ipg_gate 185 |
200 | ocram 186 | ||
200 | 201 | ||
201 | Examples (for mx53): | 202 | Examples (for mx53): |
202 | 203 | ||
diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt index a0e104f0527e..6aab72bf67ea 100644 --- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt | |||
@@ -209,6 +209,17 @@ clocks and IDs. | |||
209 | pll5_post_div 194 | 209 | pll5_post_div 194 |
210 | pll5_video_div 195 | 210 | pll5_video_div 195 |
211 | eim_slow 196 | 211 | eim_slow 196 |
212 | spdif 197 | ||
213 | cko2_sel 198 | ||
214 | cko2_podf 199 | ||
215 | cko2 200 | ||
216 | cko 201 | ||
217 | vdoa 202 | ||
218 | pll4_audio_div 203 | ||
219 | lvds1_sel 204 | ||
220 | lvds2_sel 205 | ||
221 | lvds1_gate 206 | ||
222 | lvds2_gate 207 | ||
212 | 223 | ||
213 | Examples: | 224 | Examples: |
214 | 225 | ||
diff --git a/Documentation/devicetree/bindings/clock/keystone-gate.txt b/Documentation/devicetree/bindings/clock/keystone-gate.txt new file mode 100644 index 000000000000..c5aa187026e3 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/keystone-gate.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | Status: Unstable - ABI compatibility may be broken in the future | ||
2 | |||
3 | Binding for Keystone gate control driver which uses PSC controller IP. | ||
4 | |||
5 | This binding uses the common clock binding[1]. | ||
6 | |||
7 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
8 | |||
9 | Required properties: | ||
10 | - compatible : shall be "ti,keystone,psc-clock". | ||
11 | - #clock-cells : from common clock binding; shall be set to 0. | ||
12 | - clocks : parent clock phandle | ||
13 | - reg : psc control and domain address address space | ||
14 | - reg-names : psc control and domain registers | ||
15 | - domain-id : psc domain id needed to check the transition state register | ||
16 | |||
17 | Optional properties: | ||
18 | - clock-output-names : From common clock binding to override the | ||
19 | default output clock name | ||
20 | Example: | ||
21 | clkusb: clkusb { | ||
22 | #clock-cells = <0>; | ||
23 | compatible = "ti,keystone,psc-clock"; | ||
24 | clocks = <&chipclk16>; | ||
25 | clock-output-names = "usb"; | ||
26 | reg = <0x02350008 0xb00>, <0x02350000 0x400>; | ||
27 | reg-names = "control", "domain"; | ||
28 | domain-id = <0>; | ||
29 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/keystone-pll.txt b/Documentation/devicetree/bindings/clock/keystone-pll.txt new file mode 100644 index 000000000000..12bd72605a31 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/keystone-pll.txt | |||
@@ -0,0 +1,84 @@ | |||
1 | Status: Unstable - ABI compatibility may be broken in the future | ||
2 | |||
3 | Binding for keystone PLLs. The main PLL IP typically has a multiplier, | ||
4 | a divider and a post divider. The additional PLL IPs like ARMPLL, DDRPLL | ||
5 | and PAPLL are controlled by the memory mapped register where as the Main | ||
6 | PLL is controlled by a PLL controller registers along with memory mapped | ||
7 | registers. | ||
8 | |||
9 | This binding uses the common clock binding[1]. | ||
10 | |||
11 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
12 | |||
13 | Required properties: | ||
14 | - #clock-cells : from common clock binding; shall be set to 0. | ||
15 | - compatible : shall be "ti,keystone,main-pll-clock" or "ti,keystone,pll-clock" | ||
16 | - clocks : parent clock phandle | ||
17 | - reg - pll control0 and pll multipler registers | ||
18 | - reg-names : control and multiplier. The multiplier is applicable only for | ||
19 | main pll clock | ||
20 | - fixed-postdiv : fixed post divider value | ||
21 | |||
22 | Example: | ||
23 | mainpllclk: mainpllclk@2310110 { | ||
24 | #clock-cells = <0>; | ||
25 | compatible = "ti,keystone,main-pll-clock"; | ||
26 | clocks = <&refclkmain>; | ||
27 | reg = <0x02620350 4>, <0x02310110 4>; | ||
28 | reg-names = "control", "multiplier"; | ||
29 | fixed-postdiv = <2>; | ||
30 | }; | ||
31 | |||
32 | papllclk: papllclk@2620358 { | ||
33 | #clock-cells = <0>; | ||
34 | compatible = "ti,keystone,pll-clock"; | ||
35 | clocks = <&refclkmain>; | ||
36 | clock-output-names = "pa-pll-clk"; | ||
37 | reg = <0x02620358 4>; | ||
38 | reg-names = "control"; | ||
39 | fixed-postdiv = <6>; | ||
40 | }; | ||
41 | |||
42 | Required properties: | ||
43 | - #clock-cells : from common clock binding; shall be set to 0. | ||
44 | - compatible : shall be "ti,keystone,pll-mux-clock" | ||
45 | - clocks : link phandles of parent clocks | ||
46 | - reg - pll mux register | ||
47 | - bit-shift : number of bits to shift the bit-mask | ||
48 | - bit-mask : arbitrary bitmask for programming the mux | ||
49 | |||
50 | Optional properties: | ||
51 | - clock-output-names : From common clock binding. | ||
52 | |||
53 | Example: | ||
54 | mainmuxclk: mainmuxclk@2310108 { | ||
55 | #clock-cells = <0>; | ||
56 | compatible = "ti,keystone,pll-mux-clock"; | ||
57 | clocks = <&mainpllclk>, <&refclkmain>; | ||
58 | reg = <0x02310108 4>; | ||
59 | bit-shift = <23>; | ||
60 | bit-mask = <1>; | ||
61 | clock-output-names = "mainmuxclk"; | ||
62 | }; | ||
63 | |||
64 | Required properties: | ||
65 | - #clock-cells : from common clock binding; shall be set to 0. | ||
66 | - compatible : shall be "ti,keystone,pll-divider-clock" | ||
67 | - clocks : parent clock phandle | ||
68 | - reg - pll mux register | ||
69 | - bit-shift : number of bits to shift the bit-mask | ||
70 | - bit-mask : arbitrary bitmask for programming the divider | ||
71 | |||
72 | Optional properties: | ||
73 | - clock-output-names : From common clock binding. | ||
74 | |||
75 | Example: | ||
76 | gemtraceclk: gemtraceclk@2310120 { | ||
77 | #clock-cells = <0>; | ||
78 | compatible = "ti,keystone,pll-divider-clock"; | ||
79 | clocks = <&mainmuxclk>; | ||
80 | reg = <0x02310120 4>; | ||
81 | bit-shift = <0>; | ||
82 | bit-mask = <8>; | ||
83 | clock-output-names = "gemtraceclk"; | ||
84 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt new file mode 100644 index 000000000000..c62391fc0e39 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * Core Divider Clock bindings for Marvell MVEBU SoCs | ||
2 | |||
3 | The following is a list of provided IDs and clock names on Armada 370/XP: | ||
4 | 0 = nand (NAND clock) | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : must be "marvell,armada-370-corediv-clock" | ||
8 | - reg : must be the register address of Core Divider control register | ||
9 | - #clock-cells : from common clock binding; shall be set to 1 | ||
10 | - clocks : must be set to the parent's phandle | ||
11 | |||
12 | Example: | ||
13 | |||
14 | corediv_clk: corediv-clocks@18740 { | ||
15 | compatible = "marvell,armada-370-corediv-clock"; | ||
16 | reg = <0x18740 0xc>; | ||
17 | #clock-cells = <1>; | ||
18 | clocks = <&pll>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt index cffc93d97f54..fc2910fa7e45 100644 --- a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt +++ b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt | |||
@@ -1,10 +1,10 @@ | |||
1 | * Gated Clock bindings for Marvell Orion SoCs | 1 | * Gated Clock bindings for Marvell EBU SoCs |
2 | 2 | ||
3 | Marvell Dove and Kirkwood allow some peripheral clocks to be gated to save | 3 | Marvell Armada 370/XP, Dove and Kirkwood allow some peripheral clocks to be |
4 | some power. The clock consumer should specify the desired clock by having | 4 | gated to save some power. The clock consumer should specify the desired clock |
5 | the clock ID in its "clocks" phandle cell. The clock ID is directly mapped to | 5 | by having the clock ID in its "clocks" phandle cell. The clock ID is directly |
6 | the corresponding clock gating control bit in HW to ease manual clock lookup | 6 | mapped to the corresponding clock gating control bit in HW to ease manual clock |
7 | in datasheet. | 7 | lookup in datasheet. |
8 | 8 | ||
9 | The following is a list of provided IDs for Armada 370: | 9 | The following is a list of provided IDs for Armada 370: |
10 | ID Clock Peripheral | 10 | ID Clock Peripheral |
@@ -94,6 +94,8 @@ ID Clock Peripheral | |||
94 | 94 | ||
95 | Required properties: | 95 | Required properties: |
96 | - compatible : shall be one of the following: | 96 | - compatible : shall be one of the following: |
97 | "marvell,armada-370-gating-clock" - for Armada 370 SoC clock gating | ||
98 | "marvell,armada-xp-gating-clock" - for Armada XP SoC clock gating | ||
97 | "marvell,dove-gating-clock" - for Dove SoC clock gating | 99 | "marvell,dove-gating-clock" - for Dove SoC clock gating |
98 | "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating | 100 | "marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating |
99 | - reg : shall be the register address of the Clock Gating Control register | 101 | - reg : shall be the register address of the Clock Gating Control register |
diff --git a/Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt b/Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt new file mode 100644 index 000000000000..fa171dc4bd3c --- /dev/null +++ b/Documentation/devicetree/bindings/clock/samsung,s3c64xx-clock.txt | |||
@@ -0,0 +1,77 @@ | |||
1 | * Samsung S3C64xx Clock Controller | ||
2 | |||
3 | The S3C64xx clock controller generates and supplies clock to various controllers | ||
4 | within the SoC. The clock binding described here is applicable to all SoCs in | ||
5 | the S3C64xx family. | ||
6 | |||
7 | Required Properties: | ||
8 | |||
9 | - compatible: should be one of the following. | ||
10 | - "samsung,s3c6400-clock" - controller compatible with S3C6400 SoC. | ||
11 | - "samsung,s3c6410-clock" - controller compatible with S3C6410 SoC. | ||
12 | |||
13 | - reg: physical base address of the controller and length of memory mapped | ||
14 | region. | ||
15 | |||
16 | - #clock-cells: should be 1. | ||
17 | |||
18 | Each clock is assigned an identifier and client nodes can use this identifier | ||
19 | to specify the clock which they consume. Some of the clocks are available only | ||
20 | on a particular S3C64xx SoC and this is specified where applicable. | ||
21 | |||
22 | All available clocks are defined as preprocessor macros in | ||
23 | dt-bindings/clock/samsung,s3c64xx-clock.h header and can be used in device | ||
24 | tree sources. | ||
25 | |||
26 | External clocks: | ||
27 | |||
28 | There are several clocks that are generated outside the SoC. It is expected | ||
29 | that they are defined using standard clock bindings with following | ||
30 | clock-output-names: | ||
31 | - "fin_pll" - PLL input clock (xtal/extclk) - required, | ||
32 | - "xusbxti" - USB xtal - required, | ||
33 | - "iiscdclk0" - I2S0 codec clock - optional, | ||
34 | - "iiscdclk1" - I2S1 codec clock - optional, | ||
35 | - "iiscdclk2" - I2S2 codec clock - optional, | ||
36 | - "pcmcdclk0" - PCM0 codec clock - optional, | ||
37 | - "pcmcdclk1" - PCM1 codec clock - optional, only S3C6410. | ||
38 | |||
39 | Example: Clock controller node: | ||
40 | |||
41 | clock: clock-controller@7e00f000 { | ||
42 | compatible = "samsung,s3c6410-clock"; | ||
43 | reg = <0x7e00f000 0x1000>; | ||
44 | #clock-cells = <1>; | ||
45 | }; | ||
46 | |||
47 | Example: Required external clocks: | ||
48 | |||
49 | fin_pll: clock-fin-pll { | ||
50 | compatible = "fixed-clock"; | ||
51 | clock-output-names = "fin_pll"; | ||
52 | clock-frequency = <12000000>; | ||
53 | #clock-cells = <0>; | ||
54 | }; | ||
55 | |||
56 | xusbxti: clock-xusbxti { | ||
57 | compatible = "fixed-clock"; | ||
58 | clock-output-names = "xusbxti"; | ||
59 | clock-frequency = <48000000>; | ||
60 | #clock-cells = <0>; | ||
61 | }; | ||
62 | |||
63 | Example: UART controller node that consumes the clock generated by the clock | ||
64 | controller (refer to the standard clock bindings for information about | ||
65 | "clocks" and "clock-names" properties): | ||
66 | |||
67 | uart0: serial@7f005000 { | ||
68 | compatible = "samsung,s3c6400-uart"; | ||
69 | reg = <0x7f005000 0x100>; | ||
70 | interrupt-parent = <&vic1>; | ||
71 | interrupts = <5>; | ||
72 | clock-names = "uart", "clk_uart_baud2", | ||
73 | "clk_uart_baud3"; | ||
74 | clocks = <&clock PCLK_UART0>, <&clocks PCLK_UART0>, | ||
75 | <&clock SCLK_UART>; | ||
76 | status = "disabled"; | ||
77 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/st,nomadik.txt b/Documentation/devicetree/bindings/clock/st,nomadik.txt index 7fc09773de46..40e0cf1f7b99 100644 --- a/Documentation/devicetree/bindings/clock/st,nomadik.txt +++ b/Documentation/devicetree/bindings/clock/st,nomadik.txt | |||
@@ -17,7 +17,7 @@ Optional properties for the SRC node: | |||
17 | - disable-mxtal: if present this will disable the MXTALO, | 17 | - disable-mxtal: if present this will disable the MXTALO, |
18 | i.e. the driver output for the main (~19.2 MHz) chrystal, | 18 | i.e. the driver output for the main (~19.2 MHz) chrystal, |
19 | if the board has its own circuitry for providing this | 19 | if the board has its own circuitry for providing this |
20 | osciallator | 20 | oscillator |
21 | 21 | ||
22 | 22 | ||
23 | PLL nodes: these nodes represent the two PLLs on the system, | 23 | PLL nodes: these nodes represent the two PLLs on the system, |
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt index d495521a79d2..91a748fed13d 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt | |||
@@ -8,19 +8,31 @@ Required properties: | |||
8 | - compatible : shall be one of the following: | 8 | - compatible : shall be one of the following: |
9 | "allwinner,sun4i-osc-clk" - for a gatable oscillator | 9 | "allwinner,sun4i-osc-clk" - for a gatable oscillator |
10 | "allwinner,sun4i-pll1-clk" - for the main PLL clock | 10 | "allwinner,sun4i-pll1-clk" - for the main PLL clock |
11 | "allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31 | ||
11 | "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock | 12 | "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock |
12 | "allwinner,sun4i-axi-clk" - for the AXI clock | 13 | "allwinner,sun4i-axi-clk" - for the AXI clock |
13 | "allwinner,sun4i-axi-gates-clk" - for the AXI gates | 14 | "allwinner,sun4i-axi-gates-clk" - for the AXI gates |
14 | "allwinner,sun4i-ahb-clk" - for the AHB clock | 15 | "allwinner,sun4i-ahb-clk" - for the AHB clock |
15 | "allwinner,sun4i-ahb-gates-clk" - for the AHB gates on A10 | 16 | "allwinner,sun4i-ahb-gates-clk" - for the AHB gates on A10 |
16 | "allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13 | 17 | "allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13 |
18 | "allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s | ||
19 | "allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 | ||
20 | "allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31 | ||
21 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 | ||
17 | "allwinner,sun4i-apb0-clk" - for the APB0 clock | 22 | "allwinner,sun4i-apb0-clk" - for the APB0 clock |
18 | "allwinner,sun4i-apb0-gates-clk" - for the APB0 gates on A10 | 23 | "allwinner,sun4i-apb0-gates-clk" - for the APB0 gates on A10 |
19 | "allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13 | 24 | "allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13 |
25 | "allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s | ||
26 | "allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20 | ||
20 | "allwinner,sun4i-apb1-clk" - for the APB1 clock | 27 | "allwinner,sun4i-apb1-clk" - for the APB1 clock |
21 | "allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing | 28 | "allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing |
22 | "allwinner,sun4i-apb1-gates-clk" - for the APB1 gates on A10 | 29 | "allwinner,sun4i-apb1-gates-clk" - for the APB1 gates on A10 |
23 | "allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13 | 30 | "allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13 |
31 | "allwinner,sun5i-a10s-apb1-gates-clk" - for the APB1 gates on A10s | ||
32 | "allwinner,sun6i-a31-apb1-gates-clk" - for the APB1 gates on A31 | ||
33 | "allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20 | ||
34 | "allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31 | ||
35 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 | ||
24 | 36 | ||
25 | Required properties for all clocks: | 37 | Required properties for all clocks: |
26 | - reg : shall be the control register address for the clock. | 38 | - reg : shall be the control register address for the clock. |
@@ -33,8 +45,8 @@ Additionally, "allwinner,*-gates-clk" clocks require: | |||
33 | 45 | ||
34 | Clock consumers should specify the desired clocks they use with a | 46 | Clock consumers should specify the desired clocks they use with a |
35 | "clocks" phandle cell. Consumers that are using a gated clock should | 47 | "clocks" phandle cell. Consumers that are using a gated clock should |
36 | provide an additional ID in their clock property. The values of this | 48 | provide an additional ID in their clock property. This ID is the |
37 | ID are documented in sunxi/<soc>-gates.txt. | 49 | offset of the bit controlling this particular gate in the register. |
38 | 50 | ||
39 | For example: | 51 | For example: |
40 | 52 | ||
diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt deleted file mode 100644 index 6a03475bbfe2..000000000000 --- a/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt +++ /dev/null | |||
@@ -1,93 +0,0 @@ | |||
1 | Gate clock outputs | ||
2 | ------------------ | ||
3 | |||
4 | * AXI gates ("allwinner,sun4i-axi-gates-clk") | ||
5 | |||
6 | DRAM 0 | ||
7 | |||
8 | * AHB gates ("allwinner,sun4i-ahb-gates-clk") | ||
9 | |||
10 | USB0 0 | ||
11 | EHCI0 1 | ||
12 | OHCI0 2* | ||
13 | EHCI1 3 | ||
14 | OHCI1 4* | ||
15 | SS 5 | ||
16 | DMA 6 | ||
17 | BIST 7 | ||
18 | MMC0 8 | ||
19 | MMC1 9 | ||
20 | MMC2 10 | ||
21 | MMC3 11 | ||
22 | MS 12** | ||
23 | NAND 13 | ||
24 | SDRAM 14 | ||
25 | |||
26 | ACE 16 | ||
27 | EMAC 17 | ||
28 | TS 18 | ||
29 | |||
30 | SPI0 20 | ||
31 | SPI1 21 | ||
32 | SPI2 22 | ||
33 | SPI3 23 | ||
34 | PATA 24 | ||
35 | SATA 25** | ||
36 | GPS 26* | ||
37 | |||
38 | VE 32 | ||
39 | TVD 33 | ||
40 | TVE0 34 | ||
41 | TVE1 35 | ||
42 | LCD0 36 | ||
43 | LCD1 37 | ||
44 | |||
45 | CSI0 40 | ||
46 | CSI1 41 | ||
47 | |||
48 | HDMI 43 | ||
49 | DE_BE0 44 | ||
50 | DE_BE1 45 | ||
51 | DE_FE1 46 | ||
52 | DE_FE1 47 | ||
53 | |||
54 | MP 50 | ||
55 | |||
56 | MALI400 52 | ||
57 | |||
58 | * APB0 gates ("allwinner,sun4i-apb0-gates-clk") | ||
59 | |||
60 | CODEC 0 | ||
61 | SPDIF 1* | ||
62 | AC97 2 | ||
63 | IIS 3 | ||
64 | |||
65 | PIO 5 | ||
66 | IR0 6 | ||
67 | IR1 7 | ||
68 | |||
69 | KEYPAD 10 | ||
70 | |||
71 | * APB1 gates ("allwinner,sun4i-apb1-gates-clk") | ||
72 | |||
73 | I2C0 0 | ||
74 | I2C1 1 | ||
75 | I2C2 2 | ||
76 | |||
77 | CAN 4 | ||
78 | SCR 5 | ||
79 | PS20 6 | ||
80 | PS21 7 | ||
81 | |||
82 | UART0 16 | ||
83 | UART1 17 | ||
84 | UART2 18 | ||
85 | UART3 19 | ||
86 | UART4 20 | ||
87 | UART5 21 | ||
88 | UART6 22 | ||
89 | UART7 23 | ||
90 | |||
91 | Notation: | ||
92 | [*]: The datasheet didn't mention these, but they are present on AW code | ||
93 | [**]: The datasheet had this marked as "NC" but they are used on AW code | ||
diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt deleted file mode 100644 index 006b6dfc4703..000000000000 --- a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt +++ /dev/null | |||
@@ -1,58 +0,0 @@ | |||
1 | Gate clock outputs | ||
2 | ------------------ | ||
3 | |||
4 | * AXI gates ("allwinner,sun4i-axi-gates-clk") | ||
5 | |||
6 | DRAM 0 | ||
7 | |||
8 | * AHB gates ("allwinner,sun5i-a13-ahb-gates-clk") | ||
9 | |||
10 | USBOTG 0 | ||
11 | EHCI 1 | ||
12 | OHCI 2 | ||
13 | |||
14 | SS 5 | ||
15 | DMA 6 | ||
16 | BIST 7 | ||
17 | MMC0 8 | ||
18 | MMC1 9 | ||
19 | MMC2 10 | ||
20 | |||
21 | NAND 13 | ||
22 | SDRAM 14 | ||
23 | |||
24 | SPI0 20 | ||
25 | SPI1 21 | ||
26 | SPI2 22 | ||
27 | |||
28 | STIMER 28 | ||
29 | |||
30 | VE 32 | ||
31 | |||
32 | LCD 36 | ||
33 | |||
34 | CSI 40 | ||
35 | |||
36 | DE_BE 44 | ||
37 | |||
38 | DE_FE 46 | ||
39 | |||
40 | IEP 51 | ||
41 | MALI400 52 | ||
42 | |||
43 | * APB0 gates ("allwinner,sun5i-a13-apb0-gates-clk") | ||
44 | |||
45 | CODEC 0 | ||
46 | |||
47 | PIO 5 | ||
48 | IR 6 | ||
49 | |||
50 | * APB1 gates ("allwinner,sun5i-a13-apb1-gates-clk") | ||
51 | |||
52 | I2C0 0 | ||
53 | I2C1 1 | ||
54 | I2C2 2 | ||
55 | |||
56 | UART1 17 | ||
57 | |||
58 | UART3 19 | ||
diff --git a/Documentation/devicetree/bindings/clock/xgene.txt b/Documentation/devicetree/bindings/clock/xgene.txt new file mode 100644 index 000000000000..1c4ef773feea --- /dev/null +++ b/Documentation/devicetree/bindings/clock/xgene.txt | |||
@@ -0,0 +1,111 @@ | |||
1 | Device Tree Clock bindings for APM X-Gene | ||
2 | |||
3 | This binding uses the common clock binding[1]. | ||
4 | |||
5 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
6 | |||
7 | Required properties: | ||
8 | - compatible : shall be one of the following: | ||
9 | "apm,xgene-socpll-clock" - for a X-Gene SoC PLL clock | ||
10 | "apm,xgene-pcppll-clock" - for a X-Gene PCP PLL clock | ||
11 | "apm,xgene-device-clock" - for a X-Gene device clock | ||
12 | |||
13 | Required properties for SoC or PCP PLL clocks: | ||
14 | - reg : shall be the physical PLL register address for the pll clock. | ||
15 | - clocks : shall be the input parent clock phandle for the clock. This should | ||
16 | be the reference clock. | ||
17 | - #clock-cells : shall be set to 1. | ||
18 | - clock-output-names : shall be the name of the PLL referenced by derive | ||
19 | clock. | ||
20 | Optional properties for PLL clocks: | ||
21 | - clock-names : shall be the name of the PLL. If missing, use the device name. | ||
22 | |||
23 | Required properties for device clocks: | ||
24 | - reg : shall be a list of address and length pairs describing the CSR | ||
25 | reset and/or the divider. Either may be omitted, but at least | ||
26 | one must be present. | ||
27 | - reg-names : shall be a string list describing the reg resource. This | ||
28 | may include "csr-reg" and/or "div-reg". If this property | ||
29 | is not present, the reg property is assumed to describe | ||
30 | only "csr-reg". | ||
31 | - clocks : shall be the input parent clock phandle for the clock. | ||
32 | - #clock-cells : shall be set to 1. | ||
33 | - clock-output-names : shall be the name of the device referenced. | ||
34 | Optional properties for device clocks: | ||
35 | - clock-names : shall be the name of the device clock. If missing, use the | ||
36 | device name. | ||
37 | - csr-offset : Offset to the CSR reset register from the reset address base. | ||
38 | Default is 0. | ||
39 | - csr-mask : CSR reset mask bit. Default is 0xF. | ||
40 | - enable-offset : Offset to the enable register from the reset address base. | ||
41 | Default is 0x8. | ||
42 | - enable-mask : CSR enable mask bit. Default is 0xF. | ||
43 | - divider-offset : Offset to the divider CSR register from the divider base. | ||
44 | Default is 0x0. | ||
45 | - divider-width : Width of the divider register. Default is 0. | ||
46 | - divider-shift : Bit shift of the divider register. Default is 0. | ||
47 | |||
48 | For example: | ||
49 | |||
50 | pcppll: pcppll@17000100 { | ||
51 | compatible = "apm,xgene-pcppll-clock"; | ||
52 | #clock-cells = <1>; | ||
53 | clocks = <&refclk 0>; | ||
54 | clock-names = "pcppll"; | ||
55 | reg = <0x0 0x17000100 0x0 0x1000>; | ||
56 | clock-output-names = "pcppll"; | ||
57 | type = <0>; | ||
58 | }; | ||
59 | |||
60 | socpll: socpll@17000120 { | ||
61 | compatible = "apm,xgene-socpll-clock"; | ||
62 | #clock-cells = <1>; | ||
63 | clocks = <&refclk 0>; | ||
64 | clock-names = "socpll"; | ||
65 | reg = <0x0 0x17000120 0x0 0x1000>; | ||
66 | clock-output-names = "socpll"; | ||
67 | type = <1>; | ||
68 | }; | ||
69 | |||
70 | qmlclk: qmlclk { | ||
71 | compatible = "apm,xgene-device-clock"; | ||
72 | #clock-cells = <1>; | ||
73 | clocks = <&socplldiv2 0>; | ||
74 | clock-names = "qmlclk"; | ||
75 | reg = <0x0 0x1703C000 0x0 0x1000>; | ||
76 | reg-name = "csr-reg"; | ||
77 | clock-output-names = "qmlclk"; | ||
78 | }; | ||
79 | |||
80 | ethclk: ethclk { | ||
81 | compatible = "apm,xgene-device-clock"; | ||
82 | #clock-cells = <1>; | ||
83 | clocks = <&socplldiv2 0>; | ||
84 | clock-names = "ethclk"; | ||
85 | reg = <0x0 0x17000000 0x0 0x1000>; | ||
86 | reg-names = "div-reg"; | ||
87 | divider-offset = <0x238>; | ||
88 | divider-width = <0x9>; | ||
89 | divider-shift = <0x0>; | ||
90 | clock-output-names = "ethclk"; | ||
91 | }; | ||
92 | |||
93 | apbclk: apbclk { | ||
94 | compatible = "apm,xgene-device-clock"; | ||
95 | #clock-cells = <1>; | ||
96 | clocks = <&ahbclk 0>; | ||
97 | clock-names = "apbclk"; | ||
98 | reg = <0x0 0x1F2AC000 0x0 0x1000 | ||
99 | 0x0 0x1F2AC000 0x0 0x1000>; | ||
100 | reg-names = "csr-reg", "div-reg"; | ||
101 | csr-offset = <0x0>; | ||
102 | csr-mask = <0x200>; | ||
103 | enable-offset = <0x8>; | ||
104 | enable-mask = <0x200>; | ||
105 | divider-offset = <0x10>; | ||
106 | divider-width = <0x2>; | ||
107 | divider-shift = <0x0>; | ||
108 | flags = <0x8>; | ||
109 | clock-output-names = "apbclk"; | ||
110 | }; | ||
111 | |||
diff --git a/Documentation/devicetree/bindings/crypto/fsl-sec6.txt b/Documentation/devicetree/bindings/crypto/fsl-sec6.txt new file mode 100644 index 000000000000..c0a20cd972e3 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/fsl-sec6.txt | |||
@@ -0,0 +1,157 @@ | |||
1 | SEC 6 is as Freescale's Cryptographic Accelerator and Assurance Module (CAAM). | ||
2 | Currently Freescale powerpc chip C29X is embeded with SEC 6. | ||
3 | SEC 6 device tree binding include: | ||
4 | -SEC 6 Node | ||
5 | -Job Ring Node | ||
6 | -Full Example | ||
7 | |||
8 | ===================================================================== | ||
9 | SEC 6 Node | ||
10 | |||
11 | Description | ||
12 | |||
13 | Node defines the base address of the SEC 6 block. | ||
14 | This block specifies the address range of all global | ||
15 | configuration registers for the SEC 6 block. | ||
16 | For example, In C293, we could see three SEC 6 node. | ||
17 | |||
18 | PROPERTIES | ||
19 | |||
20 | - compatible | ||
21 | Usage: required | ||
22 | Value type: <string> | ||
23 | Definition: Must include "fsl,sec-v6.0". | ||
24 | |||
25 | - fsl,sec-era | ||
26 | Usage: optional | ||
27 | Value type: <u32> | ||
28 | Definition: A standard property. Define the 'ERA' of the SEC | ||
29 | device. | ||
30 | |||
31 | - #address-cells | ||
32 | Usage: required | ||
33 | Value type: <u32> | ||
34 | Definition: A standard property. Defines the number of cells | ||
35 | for representing physical addresses in child nodes. | ||
36 | |||
37 | - #size-cells | ||
38 | Usage: required | ||
39 | Value type: <u32> | ||
40 | Definition: A standard property. Defines the number of cells | ||
41 | for representing the size of physical addresses in | ||
42 | child nodes. | ||
43 | |||
44 | - reg | ||
45 | Usage: required | ||
46 | Value type: <prop-encoded-array> | ||
47 | Definition: A standard property. Specifies the physical | ||
48 | address and length of the SEC 6 configuration registers. | ||
49 | |||
50 | - ranges | ||
51 | Usage: required | ||
52 | Value type: <prop-encoded-array> | ||
53 | Definition: A standard property. Specifies the physical address | ||
54 | range of the SEC 6.0 register space (-SNVS not included). A | ||
55 | triplet that includes the child address, parent address, & | ||
56 | length. | ||
57 | |||
58 | Note: All other standard properties (see the ePAPR) are allowed | ||
59 | but are optional. | ||
60 | |||
61 | EXAMPLE | ||
62 | crypto@a0000 { | ||
63 | compatible = "fsl,sec-v6.0"; | ||
64 | fsl,sec-era = <6>; | ||
65 | #address-cells = <1>; | ||
66 | #size-cells = <1>; | ||
67 | reg = <0xa0000 0x20000>; | ||
68 | ranges = <0 0xa0000 0x20000>; | ||
69 | }; | ||
70 | |||
71 | ===================================================================== | ||
72 | Job Ring (JR) Node | ||
73 | |||
74 | Child of the crypto node defines data processing interface to SEC 6 | ||
75 | across the peripheral bus for purposes of processing | ||
76 | cryptographic descriptors. The specified address | ||
77 | range can be made visible to one (or more) cores. | ||
78 | The interrupt defined for this node is controlled within | ||
79 | the address range of this node. | ||
80 | |||
81 | - compatible | ||
82 | Usage: required | ||
83 | Value type: <string> | ||
84 | Definition: Must include "fsl,sec-v6.0-job-ring". | ||
85 | |||
86 | - reg | ||
87 | Usage: required | ||
88 | Value type: <prop-encoded-array> | ||
89 | Definition: Specifies a two JR parameters: an offset from | ||
90 | the parent physical address and the length the JR registers. | ||
91 | |||
92 | - interrupts | ||
93 | Usage: required | ||
94 | Value type: <prop_encoded-array> | ||
95 | Definition: Specifies the interrupts generated by this | ||
96 | device. The value of the interrupts property | ||
97 | consists of one interrupt specifier. The format | ||
98 | of the specifier is defined by the binding document | ||
99 | describing the node's interrupt parent. | ||
100 | |||
101 | EXAMPLE | ||
102 | jr@1000 { | ||
103 | compatible = "fsl,sec-v6.0-job-ring"; | ||
104 | reg = <0x1000 0x1000>; | ||
105 | interrupts = <49 2 0 0>; | ||
106 | }; | ||
107 | |||
108 | =================================================================== | ||
109 | Full Example | ||
110 | |||
111 | Since some chips may contain more than one SEC, the dtsi contains | ||
112 | only the node contents, not the node itself. A chip using the SEC | ||
113 | should include the dtsi inside each SEC node. Example: | ||
114 | |||
115 | In qoriq-sec6.0.dtsi: | ||
116 | |||
117 | compatible = "fsl,sec-v6.0"; | ||
118 | fsl,sec-era = <6>; | ||
119 | #address-cells = <1>; | ||
120 | #size-cells = <1>; | ||
121 | |||
122 | jr@1000 { | ||
123 | compatible = "fsl,sec-v6.0-job-ring", | ||
124 | "fsl,sec-v5.2-job-ring", | ||
125 | "fsl,sec-v5.0-job-ring", | ||
126 | "fsl,sec-v4.4-job-ring", | ||
127 | "fsl,sec-v4.0-job-ring"; | ||
128 | reg = <0x1000 0x1000>; | ||
129 | }; | ||
130 | |||
131 | jr@2000 { | ||
132 | compatible = "fsl,sec-v6.0-job-ring", | ||
133 | "fsl,sec-v5.2-job-ring", | ||
134 | "fsl,sec-v5.0-job-ring", | ||
135 | "fsl,sec-v4.4-job-ring", | ||
136 | "fsl,sec-v4.0-job-ring"; | ||
137 | reg = <0x2000 0x1000>; | ||
138 | }; | ||
139 | |||
140 | In the C293 device tree, we add the include of public property: | ||
141 | |||
142 | crypto@a0000 { | ||
143 | /include/ "qoriq-sec6.0.dtsi" | ||
144 | } | ||
145 | |||
146 | crypto@a0000 { | ||
147 | reg = <0xa0000 0x20000>; | ||
148 | ranges = <0 0xa0000 0x20000>; | ||
149 | |||
150 | jr@1000 { | ||
151 | interrupts = <49 2 0 0>; | ||
152 | }; | ||
153 | |||
154 | jr@2000 { | ||
155 | interrupts = <50 2 0 0>; | ||
156 | }; | ||
157 | }; | ||
diff --git a/Documentation/devicetree/bindings/crypto/omap-aes.txt b/Documentation/devicetree/bindings/crypto/omap-aes.txt new file mode 100644 index 000000000000..fd9717653cbb --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/omap-aes.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | OMAP SoC AES crypto Module | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : Should contain entries for this and backward compatible | ||
6 | AES versions: | ||
7 | - "ti,omap2-aes" for OMAP2. | ||
8 | - "ti,omap3-aes" for OMAP3. | ||
9 | - "ti,omap4-aes" for OMAP4 and AM33XX. | ||
10 | Note that the OMAP2 and 3 versions are compatible (OMAP3 supports | ||
11 | more algorithms) but they are incompatible with OMAP4. | ||
12 | - ti,hwmods: Name of the hwmod associated with the AES module | ||
13 | - reg : Offset and length of the register set for the module | ||
14 | - interrupts : the interrupt-specifier for the AES module. | ||
15 | |||
16 | Optional properties: | ||
17 | - dmas: DMA specifiers for tx and rx dma. See the DMA client binding, | ||
18 | Documentation/devicetree/bindings/dma/dma.txt | ||
19 | - dma-names: DMA request names should include "tx" and "rx" if present. | ||
20 | |||
21 | Example: | ||
22 | /* AM335x */ | ||
23 | aes: aes@53500000 { | ||
24 | compatible = "ti,omap4-aes"; | ||
25 | ti,hwmods = "aes"; | ||
26 | reg = <0x53500000 0xa0>; | ||
27 | interrupts = <102>; | ||
28 | dmas = <&edma 6>, | ||
29 | <&edma 5>; | ||
30 | dma-names = "tx", "rx"; | ||
31 | }; | ||
diff --git a/Documentation/devicetree/bindings/crypto/omap-sham.txt b/Documentation/devicetree/bindings/crypto/omap-sham.txt new file mode 100644 index 000000000000..f839acd6f0ee --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/omap-sham.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | OMAP SoC SHA crypto Module | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : Should contain entries for this and backward compatible | ||
6 | SHAM versions: | ||
7 | - "ti,omap2-sham" for OMAP2 & OMAP3. | ||
8 | - "ti,omap4-sham" for OMAP4 and AM33XX. | ||
9 | Note that these two versions are incompatible. | ||
10 | - ti,hwmods: Name of the hwmod associated with the SHAM module | ||
11 | - reg : Offset and length of the register set for the module | ||
12 | - interrupts : the interrupt-specifier for the SHAM module. | ||
13 | |||
14 | Optional properties: | ||
15 | - dmas: DMA specifiers for the rx dma. See the DMA client binding, | ||
16 | Documentation/devicetree/bindings/dma/dma.txt | ||
17 | - dma-names: DMA request name. Should be "rx" if a dma is present. | ||
18 | |||
19 | Example: | ||
20 | /* AM335x */ | ||
21 | sham: sham@53100000 { | ||
22 | compatible = "ti,omap4-sham"; | ||
23 | ti,hwmods = "sham"; | ||
24 | reg = <0x53100000 0x200>; | ||
25 | interrupts = <109>; | ||
26 | dmas = <&edma 36>; | ||
27 | dma-names = "rx"; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/atmel-dma.txt b/Documentation/devicetree/bindings/dma/atmel-dma.txt index c280a0e6f42d..e1f343c7a34b 100644 --- a/Documentation/devicetree/bindings/dma/atmel-dma.txt +++ b/Documentation/devicetree/bindings/dma/atmel-dma.txt | |||
@@ -18,14 +18,14 @@ dma0: dma@ffffec00 { | |||
18 | 18 | ||
19 | DMA clients connected to the Atmel DMA controller must use the format | 19 | DMA clients connected to the Atmel DMA controller must use the format |
20 | described in the dma.txt file, using a three-cell specifier for each channel: | 20 | described in the dma.txt file, using a three-cell specifier for each channel: |
21 | a phandle plus two interger cells. | 21 | a phandle plus two integer cells. |
22 | The three cells in order are: | 22 | The three cells in order are: |
23 | 23 | ||
24 | 1. A phandle pointing to the DMA controller. | 24 | 1. A phandle pointing to the DMA controller. |
25 | 2. The memory interface (16 most significant bits), the peripheral interface | 25 | 2. The memory interface (16 most significant bits), the peripheral interface |
26 | (16 less significant bits). | 26 | (16 less significant bits). |
27 | 3. Parameters for the at91 DMA configuration register which are device | 27 | 3. Parameters for the at91 DMA configuration register which are device |
28 | dependant: | 28 | dependent: |
29 | - bit 7-0: peripheral identifier for the hardware handshaking interface. The | 29 | - bit 7-0: peripheral identifier for the hardware handshaking interface. The |
30 | identifier can be different for tx and rx. | 30 | identifier can be different for tx and rx. |
31 | - bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP. | 31 | - bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP. |
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt index 2717ecb47db9..7bd8847d6394 100644 --- a/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt +++ b/Documentation/devicetree/bindings/dma/fsl-imx-dma.txt | |||
@@ -34,7 +34,7 @@ Clients have to specify the DMA requests with phandles in a list. | |||
34 | Required properties: | 34 | Required properties: |
35 | - dmas: List of one or more DMA request specifiers. One DMA request specifier | 35 | - dmas: List of one or more DMA request specifiers. One DMA request specifier |
36 | consists of a phandle to the DMA controller followed by the integer | 36 | consists of a phandle to the DMA controller followed by the integer |
37 | specifiying the request line. | 37 | specifying the request line. |
38 | - dma-names: List of string identifiers for the DMA requests. For the correct | 38 | - dma-names: List of string identifiers for the DMA requests. For the correct |
39 | names, have a look at the specific client driver. | 39 | names, have a look at the specific client driver. |
40 | 40 | ||
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt index 68cee4f5539f..4fa814d38321 100644 --- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | |||
@@ -1,7 +1,12 @@ | |||
1 | * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX | 1 | * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "fsl,<chip>-sdma" | 4 | - compatible : Should be "fsl,imx31-sdma", "fsl,imx31-to1-sdma", |
5 | "fsl,imx31-to2-sdma", "fsl,imx35-sdma", "fsl,imx35-to1-sdma", | ||
6 | "fsl,imx35-to2-sdma", "fsl,imx51-sdma", "fsl,imx53-sdma" or | ||
7 | "fsl,imx6q-sdma". The -to variants should be preferred since they | ||
8 | allow to determnine the correct ROM script addresses needed for | ||
9 | the driver to work without additional firmware. | ||
5 | - reg : Should contain SDMA registers location and length | 10 | - reg : Should contain SDMA registers location and length |
6 | - interrupts : Should contain SDMA interrupt | 11 | - interrupts : Should contain SDMA interrupt |
7 | - #dma-cells : Must be <3>. | 12 | - #dma-cells : Must be <3>. |
diff --git a/Documentation/devicetree/bindings/dma/k3dma.txt b/Documentation/devicetree/bindings/dma/k3dma.txt new file mode 100644 index 000000000000..23f8d712c3ce --- /dev/null +++ b/Documentation/devicetree/bindings/dma/k3dma.txt | |||
@@ -0,0 +1,46 @@ | |||
1 | * Hisilicon K3 DMA controller | ||
2 | |||
3 | See dma.txt first | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Should be "hisilicon,k3-dma-1.0" | ||
7 | - reg: Should contain DMA registers location and length. | ||
8 | - interrupts: Should contain one interrupt shared by all channel | ||
9 | - #dma-cells: see dma.txt, should be 1, para number | ||
10 | - dma-channels: physical channels supported | ||
11 | - dma-requests: virtual channels supported, each virtual channel | ||
12 | have specific request line | ||
13 | - clocks: clock required | ||
14 | |||
15 | Example: | ||
16 | |||
17 | Controller: | ||
18 | dma0: dma@fcd02000 { | ||
19 | compatible = "hisilicon,k3-dma-1.0"; | ||
20 | reg = <0xfcd02000 0x1000>; | ||
21 | #dma-cells = <1>; | ||
22 | dma-channels = <16>; | ||
23 | dma-requests = <27>; | ||
24 | interrupts = <0 12 4>; | ||
25 | clocks = <&pclk>; | ||
26 | status = "disable"; | ||
27 | }; | ||
28 | |||
29 | Client: | ||
30 | Use specific request line passing from dmax | ||
31 | For example, i2c0 read channel request line is 18, while write channel use 19 | ||
32 | |||
33 | i2c0: i2c@fcb08000 { | ||
34 | compatible = "snps,designware-i2c"; | ||
35 | dmas = <&dma0 18 /* read channel */ | ||
36 | &dma0 19>; /* write channel */ | ||
37 | dma-names = "rx", "tx"; | ||
38 | }; | ||
39 | |||
40 | i2c1: i2c@fcb09000 { | ||
41 | compatible = "snps,designware-i2c"; | ||
42 | dmas = <&dma0 20 /* read channel */ | ||
43 | &dma0 21>; /* write channel */ | ||
44 | dma-names = "rx", "tx"; | ||
45 | }; | ||
46 | |||
diff --git a/Documentation/devicetree/bindings/dma/shdma.txt b/Documentation/devicetree/bindings/dma/shdma.txt index c15994aa1939..2a3f3b8946b9 100644 --- a/Documentation/devicetree/bindings/dma/shdma.txt +++ b/Documentation/devicetree/bindings/dma/shdma.txt | |||
@@ -22,42 +22,51 @@ Optional properties (currently unused): | |||
22 | * DMA controller | 22 | * DMA controller |
23 | 23 | ||
24 | Required properties: | 24 | Required properties: |
25 | - compatible: should be "renesas,shdma" | 25 | - compatible: should be of the form "renesas,shdma-<soc>", where <soc> should |
26 | be replaced with the desired SoC model, e.g. | ||
27 | "renesas,shdma-r8a73a4" for the system DMAC on r8a73a4 SoC | ||
26 | 28 | ||
27 | Example: | 29 | Example: |
28 | dmac: dma-mux0 { | 30 | dmac: dma-multiplexer@0 { |
29 | compatible = "renesas,shdma-mux"; | 31 | compatible = "renesas,shdma-mux"; |
30 | #dma-cells = <1>; | 32 | #dma-cells = <1>; |
31 | dma-channels = <6>; | 33 | dma-channels = <20>; |
32 | dma-requests = <256>; | 34 | dma-requests = <256>; |
33 | reg = <0 0>; /* Needed for AUXDATA */ | 35 | #address-cells = <2>; |
34 | #address-cells = <1>; | 36 | #size-cells = <2>; |
35 | #size-cells = <1>; | ||
36 | ranges; | 37 | ranges; |
37 | 38 | ||
38 | dma0: shdma@fe008020 { | 39 | dma0: dma-controller@e6700020 { |
39 | compatible = "renesas,shdma"; | 40 | compatible = "renesas,shdma-r8a73a4"; |
40 | reg = <0xfe008020 0x270>, | 41 | reg = <0 0xe6700020 0 0x89e0>; |
41 | <0xfe009000 0xc>; | ||
42 | interrupt-parent = <&gic>; | 42 | interrupt-parent = <&gic>; |
43 | interrupts = <0 34 4 | 43 | interrupts = <0 220 4 |
44 | 0 28 4 | 44 | 0 200 4 |
45 | 0 29 4 | 45 | 0 201 4 |
46 | 0 30 4 | 46 | 0 202 4 |
47 | 0 31 4 | 47 | 0 203 4 |
48 | 0 32 4 | 48 | 0 204 4 |
49 | 0 33 4>; | 49 | 0 205 4 |
50 | 0 206 4 | ||
51 | 0 207 4 | ||
52 | 0 208 4 | ||
53 | 0 209 4 | ||
54 | 0 210 4 | ||
55 | 0 211 4 | ||
56 | 0 212 4 | ||
57 | 0 213 4 | ||
58 | 0 214 4 | ||
59 | 0 215 4 | ||
60 | 0 216 4 | ||
61 | 0 217 4 | ||
62 | 0 218 4 | ||
63 | 0 219 4>; | ||
50 | interrupt-names = "error", | 64 | interrupt-names = "error", |
51 | "ch0", "ch1", "ch2", "ch3", | 65 | "ch0", "ch1", "ch2", "ch3", |
52 | "ch4", "ch5"; | 66 | "ch4", "ch5", "ch6", "ch7", |
53 | }; | 67 | "ch8", "ch9", "ch10", "ch11", |
54 | 68 | "ch12", "ch13", "ch14", "ch15", | |
55 | dma1: shdma@fe018020 { | 69 | "ch16", "ch17", "ch18", "ch19"; |
56 | ... | ||
57 | }; | ||
58 | |||
59 | dma2: shdma@fe028020 { | ||
60 | ... | ||
61 | }; | 70 | }; |
62 | }; | 71 | }; |
63 | 72 | ||
diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt index bea5b73a7390..a8c21c256baa 100644 --- a/Documentation/devicetree/bindings/dma/ste-dma40.txt +++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt | |||
@@ -37,14 +37,14 @@ Each dmas request consists of 4 cells: | |||
37 | 1. A phandle pointing to the DMA controller | 37 | 1. A phandle pointing to the DMA controller |
38 | 2. Device Type | 38 | 2. Device Type |
39 | 3. The DMA request line number (only when 'use fixed channel' is set) | 39 | 3. The DMA request line number (only when 'use fixed channel' is set) |
40 | 4. A 32bit mask specifying; mode, direction and endianess [NB: This list will grow] | 40 | 4. A 32bit mask specifying; mode, direction and endianness [NB: This list will grow] |
41 | 0x00000001: Mode: | 41 | 0x00000001: Mode: |
42 | Logical channel when unset | 42 | Logical channel when unset |
43 | Physical channel when set | 43 | Physical channel when set |
44 | 0x00000002: Direction: | 44 | 0x00000002: Direction: |
45 | Memory to Device when unset | 45 | Memory to Device when unset |
46 | Device to Memory when set | 46 | Device to Memory when set |
47 | 0x00000004: Endianess: | 47 | 0x00000004: Endianness: |
48 | Little endian when unset | 48 | Little endian when unset |
49 | Big endian when set | 49 | Big endian when set |
50 | 0x00000008: Use fixed channel: | 50 | 0x00000008: Use fixed channel: |
diff --git a/Documentation/devicetree/bindings/extcon/extcon-twl.txt b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt index 58f531ab4df3..7dab6a8f4a0e 100644 --- a/Documentation/devicetree/bindings/extcon/extcon-twl.txt +++ b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt | |||
@@ -1,15 +1,15 @@ | |||
1 | EXTCON FOR TWL CHIPS | 1 | EXTCON FOR PALMAS/TWL CHIPS |
2 | 2 | ||
3 | PALMAS USB COMPARATOR | 3 | PALMAS USB COMPARATOR |
4 | Required Properties: | 4 | Required Properties: |
5 | - compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb" | 5 | - compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb" |
6 | - vbus-supply : phandle to the regulator device tree node. | ||
7 | 6 | ||
8 | Optional Properties: | 7 | Optional Properties: |
9 | - ti,wakeup : To enable the wakeup comparator in probe | 8 | - ti,wakeup : To enable the wakeup comparator in probe |
9 | - ti,enable-id-detection: Perform ID detection. | ||
10 | - ti,enable-vbus-detection: Perform VBUS detection. | ||
10 | 11 | ||
11 | palmas-usb { | 12 | palmas-usb { |
12 | compatible = "ti,twl6035-usb", "ti,palmas-usb"; | 13 | compatible = "ti,twl6035-usb", "ti,palmas-usb"; |
13 | vbus-supply = <&smps10_reg>; | ||
14 | ti,wakeup; | 14 | ti,wakeup; |
15 | }; | 15 | }; |
diff --git a/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt b/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt new file mode 100644 index 000000000000..00611aceed3e --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | * Abilis TB10x GPIO controller | ||
2 | |||
3 | Required Properties: | ||
4 | - compatible: Should be "abilis,tb10x-gpio" | ||
5 | - reg: Address and length of the register set for the device | ||
6 | - gpio-controller: Marks the device node as a gpio controller. | ||
7 | - #gpio-cells: Should be <2>. The first cell is the pin number and the | ||
8 | second cell is used to specify optional parameters: | ||
9 | - bit 0 specifies polarity (0 for normal, 1 for inverted). | ||
10 | - abilis,ngpio: the number of GPIO pins this driver controls. | ||
11 | |||
12 | Optional Properties: | ||
13 | - interrupt-controller: Marks the device node as an interrupt controller. | ||
14 | - #interrupt-cells: Should be <1>. Interrupts are triggered on both edges. | ||
15 | - interrupts: Defines the interrupt line connecting this GPIO controller to | ||
16 | its parent interrupt controller. | ||
17 | - interrupt-parent: Defines the parent interrupt controller. | ||
18 | |||
19 | GPIO ranges are specified as described in | ||
20 | Documentation/devicetree/bindings/gpio/gpio.txt | ||
21 | |||
22 | Example: | ||
23 | |||
24 | gpioa: gpio@FF140000 { | ||
25 | compatible = "abilis,tb10x-gpio"; | ||
26 | interrupt-controller; | ||
27 | #interrupt-cells = <1>; | ||
28 | interrupt-parent = <&tb10x_ictl>; | ||
29 | interrupts = <27 2>; | ||
30 | reg = <0xFF140000 0x1000>; | ||
31 | gpio-controller; | ||
32 | #gpio-cells = <2>; | ||
33 | abilis,ngpio = <3>; | ||
34 | gpio-ranges = <&iomux 0 0 0>; | ||
35 | gpio-ranges-group-names = "gpioa_pins"; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt b/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt new file mode 100644 index 000000000000..4a63bc96b687 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt | |||
@@ -0,0 +1,52 @@ | |||
1 | Broadcom Kona Family GPIO | ||
2 | ========================= | ||
3 | |||
4 | This GPIO driver is used in the following Broadcom SoCs: | ||
5 | BCM11130, BCM11140, BCM11351, BCM28145, BCM28155 | ||
6 | |||
7 | The Broadcom GPIO Controller IP can be configured prior to synthesis to | ||
8 | support up to 8 banks of 32 GPIOs where each bank has its own IRQ. The | ||
9 | GPIO controller only supports edge, not level, triggering of interrupts. | ||
10 | |||
11 | Required properties | ||
12 | ------------------- | ||
13 | |||
14 | - compatible: "brcm,bcm11351-gpio", "brcm,kona-gpio" | ||
15 | - reg: Physical base address and length of the controller's registers. | ||
16 | - interrupts: The interrupt outputs from the controller. There is one GPIO | ||
17 | interrupt per GPIO bank. The number of interrupts listed depends on the | ||
18 | number of GPIO banks on the SoC. The interrupts must be ordered by bank, | ||
19 | starting with bank 0. There is always a 1:1 mapping between banks and | ||
20 | IRQs. | ||
21 | - #gpio-cells: Should be <2>. The first cell is the pin number, the second | ||
22 | cell is used to specify optional parameters: | ||
23 | - bit 0 specifies polarity (0 for normal, 1 for inverted) | ||
24 | See also "gpio-specifier" in .../devicetree/bindings/gpio/gpio.txt. | ||
25 | - #interrupt-cells: Should be <2>. The first cell is the GPIO number. The | ||
26 | second cell is used to specify flags. The following subset of flags is | ||
27 | supported: | ||
28 | - trigger type (bits[1:0]): | ||
29 | 1 = low-to-high edge triggered. | ||
30 | 2 = high-to-low edge triggered. | ||
31 | 3 = low-to-high or high-to-low edge triggered | ||
32 | Valid values are 1, 2, 3 | ||
33 | See also .../devicetree/bindings/interrupt-controller/interrupts.txt. | ||
34 | - gpio-controller: Marks the device node as a GPIO controller. | ||
35 | - interrupt-controller: Marks the device node as an interrupt controller. | ||
36 | |||
37 | Example: | ||
38 | gpio: gpio@35003000 { | ||
39 | compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio"; | ||
40 | reg = <0x35003000 0x800>; | ||
41 | interrupts = | ||
42 | <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH | ||
43 | GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH | ||
44 | GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH | ||
45 | GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH | ||
46 | GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH | ||
47 | GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; | ||
48 | #gpio-cells = <2>; | ||
49 | #interrupt-cells = <2>; | ||
50 | gpio-controller; | ||
51 | interrupt-controller; | ||
52 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt index 629d0ef17308..daa30174bcc1 100644 --- a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt +++ b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt | |||
@@ -3,10 +3,17 @@ Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for | |||
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible : Should be | 5 | - compatible : Should be |
6 | - "mcp,mcp23s08" for 8 GPIO SPI version | 6 | - "mcp,mcp23s08" (DEPRECATED) for 8 GPIO SPI version |
7 | - "mcp,mcp23s17" for 16 GPIO SPI version | 7 | - "mcp,mcp23s17" (DEPRECATED) for 16 GPIO SPI version |
8 | - "mcp,mcp23008" for 8 GPIO I2C version or | 8 | - "mcp,mcp23008" (DEPRECATED) for 8 GPIO I2C version or |
9 | - "mcp,mcp23017" for 16 GPIO I2C version of the chip | 9 | - "mcp,mcp23017" (DEPRECATED) for 16 GPIO I2C version of the chip |
10 | |||
11 | - "microchip,mcp23s08" for 8 GPIO SPI version | ||
12 | - "microchip,mcp23s17" for 16 GPIO SPI version | ||
13 | - "microchip,mcp23008" for 8 GPIO I2C version or | ||
14 | - "microchip,mcp23017" for 16 GPIO I2C version of the chip | ||
15 | NOTE: Do not use the old mcp prefix any more. It is deprecated and will be | ||
16 | removed. | ||
10 | - #gpio-cells : Should be two. | 17 | - #gpio-cells : Should be two. |
11 | - first cell is the pin number | 18 | - first cell is the pin number |
12 | - second cell is used to specify flags. Flags are currently unused. | 19 | - second cell is used to specify flags. Flags are currently unused. |
@@ -15,10 +22,11 @@ Required properties: | |||
15 | SPI uses this to specify the chipselect line which the chip is | 22 | SPI uses this to specify the chipselect line which the chip is |
16 | connected to. The driver and the SPI variant of the chip support | 23 | connected to. The driver and the SPI variant of the chip support |
17 | multiple chips on the same chipselect. Have a look at | 24 | multiple chips on the same chipselect. Have a look at |
18 | mcp,spi-present-mask below. | 25 | microchip,spi-present-mask below. |
19 | 26 | ||
20 | Required device specific properties (only for SPI chips): | 27 | Required device specific properties (only for SPI chips): |
21 | - mcp,spi-present-mask : This is a present flag, that makes only sense for SPI | 28 | - mcp,spi-present-mask (DEPRECATED) |
29 | - microchip,spi-present-mask : This is a present flag, that makes only sense for SPI | ||
22 | chips - as the name suggests. Multiple SPI chips can share the same | 30 | chips - as the name suggests. Multiple SPI chips can share the same |
23 | SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a | 31 | SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a |
24 | chip connected with the corresponding spi address set. For example if | 32 | chip connected with the corresponding spi address set. For example if |
@@ -26,11 +34,13 @@ Required device specific properties (only for SPI chips): | |||
26 | which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not | 34 | which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not |
27 | possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at | 35 | possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at |
28 | least one bit to 1 for SPI chips. | 36 | least one bit to 1 for SPI chips. |
37 | NOTE: Do not use the old mcp prefix any more. It is deprecated and will be | ||
38 | removed. | ||
29 | - spi-max-frequency = The maximum frequency this chip is able to handle | 39 | - spi-max-frequency = The maximum frequency this chip is able to handle |
30 | 40 | ||
31 | Example I2C: | 41 | Example I2C: |
32 | gpiom1: gpio@20 { | 42 | gpiom1: gpio@20 { |
33 | compatible = "mcp,mcp23017"; | 43 | compatible = "microchip,mcp23017"; |
34 | gpio-controller; | 44 | gpio-controller; |
35 | #gpio-cells = <2>; | 45 | #gpio-cells = <2>; |
36 | reg = <0x20>; | 46 | reg = <0x20>; |
@@ -38,7 +48,7 @@ gpiom1: gpio@20 { | |||
38 | 48 | ||
39 | Example SPI: | 49 | Example SPI: |
40 | gpiom1: gpio@0 { | 50 | gpiom1: gpio@0 { |
41 | compatible = "mcp,mcp23s17"; | 51 | compatible = "microchip,mcp23s17"; |
42 | gpio-controller; | 52 | gpio-controller; |
43 | #gpio-cells = <2>; | 53 | #gpio-cells = <2>; |
44 | spi-present-mask = <0x01>; | 54 | spi-present-mask = <0x01>; |
diff --git a/Documentation/devicetree/bindings/gpio/gpio-palmas.txt b/Documentation/devicetree/bindings/gpio/gpio-palmas.txt new file mode 100644 index 000000000000..08b5b52a3ae0 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-palmas.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Palmas GPIO controller bindings | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: | ||
5 | - "ti,palams-gpio" for palma series of the GPIO controller | ||
6 | - "ti,tps80036-gpio" for Palma series device TPS80036. | ||
7 | - "ti,tps65913-gpio" for palma series device TPS65913. | ||
8 | - "ti,tps65914-gpio" for palma series device TPS65914. | ||
9 | - #gpio-cells : Should be two. | ||
10 | - first cell is the gpio pin number | ||
11 | - second cell is used to specify the gpio polarity: | ||
12 | 0 = active high | ||
13 | 1 = active low | ||
14 | - gpio-controller : Marks the device node as a GPIO controller. | ||
15 | |||
16 | Note: This gpio node will be sub node of palmas node. | ||
17 | |||
18 | Example: | ||
19 | palmas: tps65913@58 { | ||
20 | ::::::::::: | ||
21 | palmas_gpio: palmas_gpio { | ||
22 | compatible = "ti,palmas-gpio"; | ||
23 | gpio-controller; | ||
24 | #gpio-cells = <2>; | ||
25 | }; | ||
26 | ::::::::::: | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt new file mode 100644 index 000000000000..d63194a2c848 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt | |||
@@ -0,0 +1,71 @@ | |||
1 | * PCF857x-compatible I/O expanders | ||
2 | |||
3 | The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be | ||
4 | driven high by a pull-up current source or driven low to ground. This combines | ||
5 | the direction and output level into a single bit per line, which can't be read | ||
6 | back. We can't actually know at initialization time whether a line is configured | ||
7 | (a) as output and driving the signal low/high, or (b) as input and reporting a | ||
8 | low/high value, without knowing the last value written since the chip came out | ||
9 | of reset (if any). The only reliable solution for setting up line direction is | ||
10 | thus to do it explicitly. | ||
11 | |||
12 | Required Properties: | ||
13 | |||
14 | - compatible: should be one of the following. | ||
15 | - "maxim,max7328": For the Maxim MAX7378 | ||
16 | - "maxim,max7329": For the Maxim MAX7329 | ||
17 | - "nxp,pca8574": For the NXP PCA8574 | ||
18 | - "nxp,pca8575": For the NXP PCA8575 | ||
19 | - "nxp,pca9670": For the NXP PCA9670 | ||
20 | - "nxp,pca9671": For the NXP PCA9671 | ||
21 | - "nxp,pca9672": For the NXP PCA9672 | ||
22 | - "nxp,pca9673": For the NXP PCA9673 | ||
23 | - "nxp,pca9674": For the NXP PCA9674 | ||
24 | - "nxp,pca9675": For the NXP PCA9675 | ||
25 | - "nxp,pcf8574": For the NXP PCF8574 | ||
26 | - "nxp,pcf8574a": For the NXP PCF8574A | ||
27 | - "nxp,pcf8575": For the NXP PCF8575 | ||
28 | - "ti,tca9554": For the TI TCA9554 | ||
29 | |||
30 | - reg: I2C slave address. | ||
31 | |||
32 | - gpio-controller: Marks the device node as a gpio controller. | ||
33 | - #gpio-cells: Should be 2. The first cell is the GPIO number and the second | ||
34 | cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the | ||
35 | GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. | ||
36 | |||
37 | Optional Properties: | ||
38 | |||
39 | - lines-initial-states: Bitmask that specifies the initial state of each | ||
40 | line. When a bit is set to zero, the corresponding line will be initialized to | ||
41 | the input (pulled-up) state. When the bit is set to one, the line will be | ||
42 | initialized the the low-level output state. If the property is not specified | ||
43 | all lines will be initialized to the input state. | ||
44 | |||
45 | The I/O expander can detect input state changes, and thus optionally act as | ||
46 | an interrupt controller. When the expander interrupt line is connected all the | ||
47 | following properties must be set. For more information please see the | ||
48 | interrupt controller device tree bindings documentation available at | ||
49 | Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. | ||
50 | |||
51 | - interrupt-controller: Identifies the node as an interrupt controller. | ||
52 | - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2. | ||
53 | - interrupt-parent: phandle of the parent interrupt controller. | ||
54 | - interrupts: Interrupt specifier for the controllers interrupt. | ||
55 | |||
56 | |||
57 | Please refer to gpio.txt in this directory for details of the common GPIO | ||
58 | bindings used by client devices. | ||
59 | |||
60 | Example: PCF8575 I/O expander node | ||
61 | |||
62 | pcf8575: gpio@20 { | ||
63 | compatible = "nxp,pcf8575"; | ||
64 | reg = <0x20>; | ||
65 | interrupt-parent = <&irqpin2>; | ||
66 | interrupts = <3 0>; | ||
67 | gpio-controller; | ||
68 | #gpio-cells = <2>; | ||
69 | interrupt-controller; | ||
70 | #interrupt-cells = <2>; | ||
71 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt b/Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt new file mode 100644 index 000000000000..1fd98ffa8cb7 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt | |||
@@ -0,0 +1,45 @@ | |||
1 | ImgTec TZ1090 PDC GPIO Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Compatible property value should be "img,tz1090-pdc-gpio". | ||
5 | |||
6 | - reg: Physical base address of the controller and length of memory mapped | ||
7 | region. This starts at and cover the SOC_GPIO_CONTROL registers. | ||
8 | |||
9 | - gpio-controller: Specifies that the node is a gpio controller. | ||
10 | |||
11 | - #gpio-cells: Should be 2. The syntax of the gpio specifier used by client | ||
12 | nodes should have the following values. | ||
13 | <[phandle of the gpio controller node] | ||
14 | [PDC gpio number] | ||
15 | [gpio flags]> | ||
16 | |||
17 | Values for gpio specifier: | ||
18 | - GPIO number: a value in the range 0 to 6. | ||
19 | - GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>. | ||
20 | Only the following flags are supported: | ||
21 | GPIO_ACTIVE_HIGH | ||
22 | GPIO_ACTIVE_LOW | ||
23 | |||
24 | Optional properties: | ||
25 | - gpio-ranges: Mapping to pin controller pins (as described in | ||
26 | Documentation/devicetree/bindings/gpio/gpio.txt) | ||
27 | |||
28 | - interrupts: Individual syswake interrupts (other GPIOs cannot interrupt) | ||
29 | |||
30 | |||
31 | Example: | ||
32 | |||
33 | pdc_gpios: gpio-controller@02006500 { | ||
34 | gpio-controller; | ||
35 | #gpio-cells = <2>; | ||
36 | |||
37 | compatible = "img,tz1090-pdc-gpio"; | ||
38 | reg = <0x02006500 0x100>; | ||
39 | |||
40 | interrupt-parent = <&pdc>; | ||
41 | interrupts = <8 IRQ_TYPE_NONE>, /* Syswake 0 */ | ||
42 | <9 IRQ_TYPE_NONE>, /* Syswake 1 */ | ||
43 | <10 IRQ_TYPE_NONE>; /* Syswake 2 */ | ||
44 | gpio-ranges = <&pdc_pinctrl 0 0 7>; | ||
45 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-tz1090.txt b/Documentation/devicetree/bindings/gpio/gpio-tz1090.txt new file mode 100644 index 000000000000..174cdf309170 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-tz1090.txt | |||
@@ -0,0 +1,88 @@ | |||
1 | ImgTec TZ1090 GPIO Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Compatible property value should be "img,tz1090-gpio". | ||
5 | |||
6 | - reg: Physical base address of the controller and length of memory mapped | ||
7 | region. | ||
8 | |||
9 | - #address-cells: Should be 1 (for bank subnodes) | ||
10 | |||
11 | - #size-cells: Should be 0 (for bank subnodes) | ||
12 | |||
13 | - Each bank of GPIOs should have a subnode to represent it. | ||
14 | |||
15 | Bank subnode required properties: | ||
16 | - reg: Index of bank in the range 0 to 2. | ||
17 | |||
18 | - gpio-controller: Specifies that the node is a gpio controller. | ||
19 | |||
20 | - #gpio-cells: Should be 2. The syntax of the gpio specifier used by client | ||
21 | nodes should have the following values. | ||
22 | <[phandle of the gpio controller node] | ||
23 | [gpio number within the gpio bank] | ||
24 | [gpio flags]> | ||
25 | |||
26 | Values for gpio specifier: | ||
27 | - GPIO number: a value in the range 0 to 29. | ||
28 | - GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>. | ||
29 | Only the following flags are supported: | ||
30 | GPIO_ACTIVE_HIGH | ||
31 | GPIO_ACTIVE_LOW | ||
32 | |||
33 | Bank subnode optional properties: | ||
34 | - gpio-ranges: Mapping to pin controller pins (as described in | ||
35 | Documentation/devicetree/bindings/gpio/gpio.txt) | ||
36 | |||
37 | - interrupts: Interrupt for the entire bank | ||
38 | |||
39 | - interrupt-controller: Specifies that the node is an interrupt controller | ||
40 | |||
41 | - #interrupt-cells: Should be 2. The syntax of the interrupt specifier used by | ||
42 | client nodes should have the following values. | ||
43 | <[phandle of the interurupt controller] | ||
44 | [gpio number within the gpio bank] | ||
45 | [irq flags]> | ||
46 | |||
47 | Values for irq specifier: | ||
48 | - GPIO number: a value in the range 0 to 29 | ||
49 | - IRQ flags: value to describe edge and level triggering, as defined in | ||
50 | <dt-bindings/interrupt-controller/irq.h>. Only the following flags are | ||
51 | supported: | ||
52 | IRQ_TYPE_EDGE_RISING | ||
53 | IRQ_TYPE_EDGE_FALLING | ||
54 | IRQ_TYPE_EDGE_BOTH | ||
55 | IRQ_TYPE_LEVEL_HIGH | ||
56 | IRQ_TYPE_LEVEL_LOW | ||
57 | |||
58 | |||
59 | |||
60 | Example: | ||
61 | |||
62 | gpios: gpio-controller@02005800 { | ||
63 | #address-cells = <1>; | ||
64 | #size-cells = <0>; | ||
65 | compatible = "img,tz1090-gpio"; | ||
66 | reg = <0x02005800 0x90>; | ||
67 | |||
68 | /* bank 0 with an interrupt */ | ||
69 | gpios0: bank@0 { | ||
70 | #gpio-cells = <2>; | ||
71 | #interrupt-cells = <2>; | ||
72 | reg = <0>; | ||
73 | interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; | ||
74 | gpio-controller; | ||
75 | gpio-ranges = <&pinctrl 0 0 30>; | ||
76 | interrupt-controller; | ||
77 | }; | ||
78 | |||
79 | /* bank 2 without interrupt */ | ||
80 | gpios2: bank@2 { | ||
81 | #gpio-cells = <2>; | ||
82 | reg = <2>; | ||
83 | gpio-controller; | ||
84 | gpio-ranges = <&pinctrl 0 60 30>; | ||
85 | }; | ||
86 | }; | ||
87 | |||
88 | |||
diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt index d933af370697..0c85bb6e3a80 100644 --- a/Documentation/devicetree/bindings/gpio/gpio.txt +++ b/Documentation/devicetree/bindings/gpio/gpio.txt | |||
@@ -75,23 +75,51 @@ Example of two SOC GPIO banks defined as gpio-controller nodes: | |||
75 | gpio-controller; | 75 | gpio-controller; |
76 | }; | 76 | }; |
77 | 77 | ||
78 | 2.1) gpio-controller and pinctrl subsystem | 78 | 2.1) gpio- and pin-controller interaction |
79 | ------------------------------------------ | 79 | ----------------------------------------- |
80 | 80 | ||
81 | gpio-controller on a SOC might be tightly coupled with the pinctrl | 81 | Some or all of the GPIOs provided by a GPIO controller may be routed to pins |
82 | subsystem, in the sense that the pins can be used by other functions | 82 | on the package via a pin controller. This allows muxing those pins between |
83 | together with optional gpio feature. | 83 | GPIO and other functions. |
84 | 84 | ||
85 | While the pin allocation is totally managed by the pin ctrl subsystem, | 85 | It is useful to represent which GPIOs correspond to which pins on which pin |
86 | gpio (under gpiolib) is still maintained by gpio drivers. It may happen | 86 | controllers. The gpio-ranges property described below represents this, and |
87 | that different pin ranges in a SoC is managed by different gpio drivers. | 87 | contains information structures as follows: |
88 | 88 | ||
89 | This makes it logical to let gpio drivers announce their pin ranges to | 89 | gpio-range-list ::= <single-gpio-range> [gpio-range-list] |
90 | the pin ctrl subsystem and call 'pinctrl_request_gpio' in order to | 90 | single-gpio-range ::= <numeric-gpio-range> | <named-gpio-range> |
91 | request the corresponding pin before any gpio usage. | 91 | numeric-gpio-range ::= |
92 | 92 | <pinctrl-phandle> <gpio-base> <pinctrl-base> <count> | |
93 | For this, the gpio controller can use a pinctrl phandle and pins to | 93 | named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>' |
94 | announce the pinrange to the pin ctrl subsystem. For example, | 94 | gpio-phandle : phandle to pin controller node. |
95 | gpio-base : Base GPIO ID in the GPIO controller | ||
96 | pinctrl-base : Base pinctrl pin ID in the pin controller | ||
97 | count : The number of GPIOs/pins in this range | ||
98 | |||
99 | The "pin controller node" mentioned above must conform to the bindings | ||
100 | described in ../pinctrl/pinctrl-bindings.txt. | ||
101 | |||
102 | In case named gpio ranges are used (ranges with both <pinctrl-base> and | ||
103 | <count> set to 0), the property gpio-ranges-group-names contains one string | ||
104 | for every single-gpio-range in gpio-ranges: | ||
105 | gpiorange-names-list ::= <gpiorange-name> [gpiorange-names-list] | ||
106 | gpiorange-name : Name of the pingroup associated to the GPIO range in | ||
107 | the respective pin controller. | ||
108 | |||
109 | Elements of gpiorange-names-list corresponding to numeric ranges contain | ||
110 | the empty string. Elements of gpiorange-names-list corresponding to named | ||
111 | ranges contain the name of a pin group defined in the respective pin | ||
112 | controller. The number of pins/GPIOs in the range is the number of pins in | ||
113 | that pin group. | ||
114 | |||
115 | Previous versions of this binding required all pin controller nodes that | ||
116 | were referenced by any gpio-ranges property to contain a property named | ||
117 | #gpio-range-cells with value <3>. This requirement is now deprecated. | ||
118 | However, that property may still exist in older device trees for | ||
119 | compatibility reasons, and would still be required even in new device | ||
120 | trees that need to be compatible with older software. | ||
121 | |||
122 | Example 1: | ||
95 | 123 | ||
96 | qe_pio_e: gpio-controller@1460 { | 124 | qe_pio_e: gpio-controller@1460 { |
97 | #gpio-cells = <2>; | 125 | #gpio-cells = <2>; |
@@ -99,16 +127,29 @@ announce the pinrange to the pin ctrl subsystem. For example, | |||
99 | reg = <0x1460 0x18>; | 127 | reg = <0x1460 0x18>; |
100 | gpio-controller; | 128 | gpio-controller; |
101 | gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>; | 129 | gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>; |
130 | }; | ||
102 | 131 | ||
103 | } | 132 | Here, a single GPIO controller has GPIOs 0..9 routed to pin controller |
133 | pinctrl1's pins 20..29, and GPIOs 10..19 routed to pin controller pinctrl2's | ||
134 | pins 50..59. | ||
104 | 135 | ||
105 | where, | 136 | Example 2: |
106 | &pinctrl1 and &pinctrl2 is the phandle to the pinctrl DT node. | ||
107 | 137 | ||
108 | Next values specify the base pin and number of pins for the range | 138 | gpio_pio_i: gpio-controller@14B0 { |
109 | handled by 'qe_pio_e' gpio. In the given example from base pin 20 to | 139 | #gpio-cells = <2>; |
110 | pin 29 under pinctrl1 with gpio offset 0 and pin 50 to pin 69 under | 140 | compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank"; |
111 | pinctrl2 with gpio offset 10 is handled by this gpio controller. | 141 | reg = <0x1480 0x18>; |
142 | gpio-controller; | ||
143 | gpio-ranges = <&pinctrl1 0 20 10>, | ||
144 | <&pinctrl2 10 0 0>, | ||
145 | <&pinctrl1 15 0 10>, | ||
146 | <&pinctrl2 25 0 0>; | ||
147 | gpio-ranges-group-names = "", | ||
148 | "foo", | ||
149 | "", | ||
150 | "bar"; | ||
151 | }; | ||
112 | 152 | ||
113 | The pinctrl node must have "#gpio-range-cells" property to show number of | 153 | Here, three GPIO ranges are defined wrt. two pin controllers. pinctrl1 GPIO |
114 | arguments to pass with phandle from gpio controllers node. | 154 | ranges are defined using pin numbers whereas the GPIO ranges wrt. pinctrl2 |
155 | are named "foo" and "bar". | ||
diff --git a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt index 9b3f1d4a88d6..66416261e14d 100644 --- a/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt +++ b/Documentation/devicetree/bindings/gpio/mrvl-gpio.txt | |||
@@ -10,8 +10,9 @@ Required properties: | |||
10 | There're three gpio interrupts in arch-pxa, and they're gpio0, | 10 | There're three gpio interrupts in arch-pxa, and they're gpio0, |
11 | gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp, | 11 | gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp, |
12 | gpio_mux. | 12 | gpio_mux. |
13 | - interrupt-name : Should be the name of irq resource. Each interrupt | 13 | - interrupt-names : Should be the names of irq resources. Each interrupt |
14 | binds its interrupt-name. | 14 | uses its own interrupt name, so there should be as many interrupt names |
15 | as referenced interrups. | ||
15 | - interrupt-controller : Identifies the node as an interrupt controller. | 16 | - interrupt-controller : Identifies the node as an interrupt controller. |
16 | - #interrupt-cells: Specifies the number of cells needed to encode an | 17 | - #interrupt-cells: Specifies the number of cells needed to encode an |
17 | interrupt source. | 18 | interrupt source. |
@@ -24,7 +25,7 @@ Example: | |||
24 | compatible = "marvell,mmp-gpio"; | 25 | compatible = "marvell,mmp-gpio"; |
25 | reg = <0xd4019000 0x1000>; | 26 | reg = <0xd4019000 0x1000>; |
26 | interrupts = <49>; | 27 | interrupts = <49>; |
27 | interrupt-name = "gpio_mux"; | 28 | interrupt-names = "gpio_mux"; |
28 | gpio-controller; | 29 | gpio-controller; |
29 | #gpio-cells = <1>; | 30 | #gpio-cells = <1>; |
30 | interrupt-controller; | 31 | interrupt-controller; |
diff --git a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt index cb3dc7bcd8e6..8655df9440d5 100644 --- a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt +++ b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt | |||
@@ -23,6 +23,10 @@ Required Properties: | |||
23 | Please refer to gpio.txt in this directory for details of gpio-ranges property | 23 | Please refer to gpio.txt in this directory for details of gpio-ranges property |
24 | and the common GPIO bindings used by client devices. | 24 | and the common GPIO bindings used by client devices. |
25 | 25 | ||
26 | The GPIO controller also acts as an interrupt controller. It uses the default | ||
27 | two cells specifier as described in Documentation/devicetree/bindings/ | ||
28 | interrupt-controller/interrupts.txt. | ||
29 | |||
26 | Example: R8A7779 (R-Car H1) GPIO controller nodes | 30 | Example: R8A7779 (R-Car H1) GPIO controller nodes |
27 | 31 | ||
28 | gpio0: gpio@ffc40000 { | 32 | gpio0: gpio@ffc40000 { |
@@ -33,6 +37,8 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes | |||
33 | #gpio-cells = <2>; | 37 | #gpio-cells = <2>; |
34 | gpio-controller; | 38 | gpio-controller; |
35 | gpio-ranges = <&pfc 0 0 32>; | 39 | gpio-ranges = <&pfc 0 0 32>; |
40 | interrupt-controller; | ||
41 | #interrupt-cells = <2>; | ||
36 | }; | 42 | }; |
37 | ... | 43 | ... |
38 | gpio6: gpio@ffc46000 { | 44 | gpio6: gpio@ffc46000 { |
@@ -43,4 +49,6 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes | |||
43 | #gpio-cells = <2>; | 49 | #gpio-cells = <2>; |
44 | gpio-controller; | 50 | gpio-controller; |
45 | gpio-ranges = <&pfc 0 192 9>; | 51 | gpio-ranges = <&pfc 0 192 9>; |
52 | interrupt-controller; | ||
53 | #interrupt-cells = <2>; | ||
46 | }; | 54 | }; |
diff --git a/Documentation/devicetree/bindings/gpu/samsung-g2d.txt b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt index 3f454ffc654a..c4f358dafdaa 100644 --- a/Documentation/devicetree/bindings/gpu/samsung-g2d.txt +++ b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt | |||
@@ -11,8 +11,11 @@ Required properties: | |||
11 | 11 | ||
12 | - interrupts : G2D interrupt number to the CPU. | 12 | - interrupts : G2D interrupt number to the CPU. |
13 | - clocks : from common clock binding: handle to G2D clocks. | 13 | - clocks : from common clock binding: handle to G2D clocks. |
14 | - clock-names : from common clock binding: must contain "sclk_fimg2d" and | 14 | - clock-names : names of clocks listed in clocks property, in the same |
15 | "fimg2d", corresponding to entries in the clocks property. | 15 | order, depending on SoC type: |
16 | - for S5PV210 and Exynos4 based SoCs: "fimg2d" and | ||
17 | "sclk_fimg2d" | ||
18 | - for Exynos5250 SoC: "fimg2d". | ||
16 | 19 | ||
17 | Example: | 20 | Example: |
18 | g2d@12800000 { | 21 | g2d@12800000 { |
diff --git a/Documentation/devicetree/bindings/gpu/samsung-rotator.txt b/Documentation/devicetree/bindings/gpu/samsung-rotator.txt new file mode 100644 index 000000000000..82cd1ed0be93 --- /dev/null +++ b/Documentation/devicetree/bindings/gpu/samsung-rotator.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | * Samsung Image Rotator | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : value should be one of the following: | ||
5 | (a) "samsung,exynos4210-rotator" for Rotator IP in Exynos4210 | ||
6 | (b) "samsung,exynos4212-rotator" for Rotator IP in Exynos4212/4412 | ||
7 | (c) "samsung,exynos5250-rotator" for Rotator IP in Exynos5250 | ||
8 | |||
9 | - reg : Physical base address of the IP registers and length of memory | ||
10 | mapped region. | ||
11 | |||
12 | - interrupts : Interrupt specifier for rotator interrupt, according to format | ||
13 | specific to interrupt parent. | ||
14 | |||
15 | - clocks : Clock specifier for rotator clock, according to generic clock | ||
16 | bindings. (See Documentation/devicetree/bindings/clock/exynos*.txt) | ||
17 | |||
18 | - clock-names : Names of clocks. For exynos rotator, it should be "rotator". | ||
19 | |||
20 | Example: | ||
21 | rotator@12810000 { | ||
22 | compatible = "samsung,exynos4210-rotator"; | ||
23 | reg = <0x12810000 0x1000>; | ||
24 | interrupts = <0 83 0>; | ||
25 | clocks = <&clock 278>; | ||
26 | clock-names = "rotator"; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/hid/hid-over-i2c.txt b/Documentation/devicetree/bindings/hid/hid-over-i2c.txt new file mode 100644 index 000000000000..488edcb264c4 --- /dev/null +++ b/Documentation/devicetree/bindings/hid/hid-over-i2c.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | * HID over I2C Device-Tree bindings | ||
2 | |||
3 | HID over I2C provides support for various Human Interface Devices over the | ||
4 | I2C bus. These devices can be for example touchpads, keyboards, touch screens | ||
5 | or sensors. | ||
6 | |||
7 | The specification has been written by Microsoft and is currently available here: | ||
8 | http://msdn.microsoft.com/en-us/library/windows/hardware/hh852380.aspx | ||
9 | |||
10 | If this binding is used, the kernel module i2c-hid will handle the communication | ||
11 | with the device and the generic hid core layer will handle the protocol. | ||
12 | |||
13 | Required properties: | ||
14 | - compatible: must be "hid-over-i2c" | ||
15 | - reg: i2c slave address | ||
16 | - hid-descr-addr: HID descriptor address | ||
17 | - interrupt-parent: the phandle for the interrupt controller | ||
18 | - interrupts: interrupt line | ||
19 | |||
20 | Example: | ||
21 | |||
22 | i2c-hid-dev@2c { | ||
23 | compatible = "hid-over-i2c"; | ||
24 | reg = <0x2c>; | ||
25 | hid-descr-addr = <0x0020>; | ||
26 | interrupt-parent = <&gpx3>; | ||
27 | interrupts = <3 2>; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/hwrng/omap_rng.txt b/Documentation/devicetree/bindings/hwrng/omap_rng.txt new file mode 100644 index 000000000000..6a62acd86953 --- /dev/null +++ b/Documentation/devicetree/bindings/hwrng/omap_rng.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | OMAP SoC HWRNG Module | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : Should contain entries for this and backward compatible | ||
6 | RNG versions: | ||
7 | - "ti,omap2-rng" for OMAP2. | ||
8 | - "ti,omap4-rng" for OMAP4, OMAP5 and AM33XX. | ||
9 | Note that these two versions are incompatible. | ||
10 | - ti,hwmods: Name of the hwmod associated with the RNG module | ||
11 | - reg : Offset and length of the register set for the module | ||
12 | - interrupts : the interrupt number for the RNG module. | ||
13 | Only used for "ti,omap4-rng". | ||
14 | |||
15 | Example: | ||
16 | /* AM335x */ | ||
17 | rng: rng@48310000 { | ||
18 | compatible = "ti,omap4-rng"; | ||
19 | ti,hwmods = "rng"; | ||
20 | reg = <0x48310000 0x2000>; | ||
21 | interrupts = <111>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/i2c-imx.txt b/Documentation/devicetree/bindings/i2c/i2c-imx.txt index 3614242e7732..4a8513e44740 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-imx.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-imx.txt | |||
@@ -1,7 +1,10 @@ | |||
1 | * Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX | 1 | * Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "fsl,<chip>-i2c" | 4 | - compatible : |
5 | - "fsl,imx1-i2c" for I2C compatible with the one integrated on i.MX1 SoC | ||
6 | - "fsl,imx21-i2c" for I2C compatible with the one integrated on i.MX21 SoC | ||
7 | - "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC | ||
5 | - reg : Should contain I2C/HS-I2C registers location and length | 8 | - reg : Should contain I2C/HS-I2C registers location and length |
6 | - interrupts : Should contain I2C/HS-I2C interrupt | 9 | - interrupts : Should contain I2C/HS-I2C interrupt |
7 | 10 | ||
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt index 6113f9275f42..82e8f6f17179 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt | |||
@@ -5,6 +5,7 @@ Required properties : | |||
5 | 5 | ||
6 | - reg : Offset and length of the register set for the device | 6 | - reg : Offset and length of the register set for the device |
7 | - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" | 7 | - compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" |
8 | or "marvell,mv78230-i2c" | ||
8 | - interrupts : The interrupt number | 9 | - interrupts : The interrupt number |
9 | 10 | ||
10 | Optional properties : | 11 | Optional properties : |
@@ -20,3 +21,12 @@ Examples: | |||
20 | interrupts = <29>; | 21 | interrupts = <29>; |
21 | clock-frequency = <100000>; | 22 | clock-frequency = <100000>; |
22 | }; | 23 | }; |
24 | |||
25 | For the Armada XP: | ||
26 | |||
27 | i2c@11000 { | ||
28 | compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c"; | ||
29 | reg = <0x11000 0x100>; | ||
30 | interrupts = <29>; | ||
31 | clock-frequency = <100000>; | ||
32 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/accel/bma180.txt b/Documentation/devicetree/bindings/iio/accel/bma180.txt new file mode 100644 index 000000000000..c5933573e0f6 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/accel/bma180.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | * Bosch BMA180 triaxial acceleration sensor | ||
2 | |||
3 | http://omapworld.com/BMA180_111_1002839.pdf | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : should be "bosch,bma180" | ||
8 | - reg : the I2C address of the sensor | ||
9 | |||
10 | Optional properties: | ||
11 | |||
12 | - interrupt-parent : should be the phandle for the interrupt controller | ||
13 | |||
14 | - interrupts : interrupt mapping for GPIO IRQ, it should by configured with | ||
15 | flags IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING | ||
16 | |||
17 | Example: | ||
18 | |||
19 | bma180@40 { | ||
20 | compatible = "bosch,bma180"; | ||
21 | reg = <0x40>; | ||
22 | interrupt-parent = <&gpio6>; | ||
23 | interrupts = <18 (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING)>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/adc/nuvoton-nau7802.txt b/Documentation/devicetree/bindings/iio/adc/nuvoton-nau7802.txt new file mode 100644 index 000000000000..e9582e6fe350 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/nuvoton-nau7802.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | * Nuvoton NAU7802 Analog to Digital Converter (ADC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "nuvoton,nau7802" | ||
5 | - reg: Should contain the ADC I2C address | ||
6 | |||
7 | Optional properties: | ||
8 | - nuvoton,vldo: Internal reference voltage in millivolts to be | ||
9 | configured valid values are between 2400 mV and 4500 mV. | ||
10 | - interrupts: IRQ line for the ADC. If not used the driver will use | ||
11 | polling. | ||
12 | |||
13 | Example: | ||
14 | adc2: nau7802@2a { | ||
15 | compatible = "nuvoton,nau7802"; | ||
16 | reg = <0x2a>; | ||
17 | nuvoton,vldo = <3000>; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/light/apds9300.txt b/Documentation/devicetree/bindings/iio/light/apds9300.txt new file mode 100644 index 000000000000..d6f66c73ddbf --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/apds9300.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | * Avago APDS9300 ambient light sensor | ||
2 | |||
3 | http://www.avagotech.com/docs/AV02-1077EN | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : should be "avago,apds9300" | ||
8 | - reg : the I2C address of the sensor | ||
9 | |||
10 | Optional properties: | ||
11 | |||
12 | - interrupt-parent : should be the phandle for the interrupt controller | ||
13 | - interrupts : interrupt mapping for GPIO IRQ | ||
14 | |||
15 | Example: | ||
16 | |||
17 | apds9300@39 { | ||
18 | compatible = "avago,apds9300"; | ||
19 | reg = <0x39>; | ||
20 | interrupt-parent = <&gpio2>; | ||
21 | interrupts = <29 8>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/light/cm36651.txt b/Documentation/devicetree/bindings/iio/light/cm36651.txt new file mode 100644 index 000000000000..c03e19db4550 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/cm36651.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | * Capella CM36651 I2C Proximity and Color Light sensor | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "capella,cm36651" | ||
5 | - reg: the I2C address of the device | ||
6 | - interrupts: interrupt-specifier for the sole interrupt | ||
7 | generated by the device | ||
8 | - vled-supply: regulator for the IR LED. IR_LED is a part | ||
9 | of the cm36651 for proximity detection. | ||
10 | As covered in ../../regulator/regulator.txt | ||
11 | |||
12 | Example: | ||
13 | |||
14 | i2c_cm36651: i2c-gpio { | ||
15 | /* ... */ | ||
16 | |||
17 | cm36651@18 { | ||
18 | compatible = "capella,cm36651"; | ||
19 | reg = <0x18>; | ||
20 | interrupt-parent = <&gpx0>; | ||
21 | interrupts = <2 0>; | ||
22 | vled-supply = <&ps_als_reg>; | ||
23 | }; | ||
24 | |||
25 | /* ... */ | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt b/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt new file mode 100644 index 000000000000..9231c82317ad --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | * Sharp GP2AP020A00F I2C Proximity/ALS sensor | ||
2 | |||
3 | The proximity detector sensor requires power supply | ||
4 | for its built-in led. It is also defined by this binding. | ||
5 | |||
6 | Required properties: | ||
7 | |||
8 | - compatible : should be "sharp,gp2ap020a00f" | ||
9 | - reg : the I2C slave address of the light sensor | ||
10 | - interrupts : interrupt specifier for the sole interrupt generated | ||
11 | by the device | ||
12 | - vled-supply : VLED power supply, as covered in ../regulator/regulator.txt | ||
13 | |||
14 | Example: | ||
15 | |||
16 | gp2ap020a00f@39 { | ||
17 | compatible = "sharp,gp2ap020a00f"; | ||
18 | reg = <0x39>; | ||
19 | interrupts = <2 0>; | ||
20 | vled-supply = <...>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/input-reset.txt b/Documentation/devicetree/bindings/input/input-reset.txt new file mode 100644 index 000000000000..2bb2626fdb78 --- /dev/null +++ b/Documentation/devicetree/bindings/input/input-reset.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | Input: sysrq reset sequence | ||
2 | |||
3 | A simple binding to represent a set of keys as described in | ||
4 | include/uapi/linux/input.h. This is to communicate a sequence of keys to the | ||
5 | sysrq driver. Upon holding the keys for a specified amount of time (if | ||
6 | specified) the system is sync'ed and reset. | ||
7 | |||
8 | Key sequences are global to the system but all the keys in a set must be coming | ||
9 | from the same input device. | ||
10 | |||
11 | The /chosen node should contain a 'linux,sysrq-reset-seq' child node to define | ||
12 | a set of keys. | ||
13 | |||
14 | Required property: | ||
15 | sysrq-reset-seq: array of Linux keycodes, one keycode per cell. | ||
16 | |||
17 | Optional property: | ||
18 | timeout-ms: duration keys must be pressed together in milliseconds before | ||
19 | generating a sysrq. If omitted the system is rebooted immediately when a valid | ||
20 | sequence has been recognized. | ||
21 | |||
22 | Example: | ||
23 | |||
24 | chosen { | ||
25 | linux,sysrq-reset-seq { | ||
26 | keyset = <0x03 | ||
27 | 0x04 | ||
28 | 0x0a>; | ||
29 | timeout-ms = <3000>; | ||
30 | }; | ||
31 | }; | ||
32 | |||
33 | Would represent KEY_2, KEY_3 and KEY_9. | ||
diff --git a/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt b/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt index df70318a617f..49fa14ed155c 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt | |||
@@ -6,7 +6,7 @@ Required properties: | |||
6 | - interrupt-parent: the phandle for the interrupt controller | 6 | - interrupt-parent: the phandle for the interrupt controller |
7 | - interrupts: touch controller interrupt | 7 | - interrupts: touch controller interrupt |
8 | - wakeup-gpios: the gpio pin to be used for waking up the controller | 8 | - wakeup-gpios: the gpio pin to be used for waking up the controller |
9 | as well as uased as irq pin | 9 | and also used as irq pin |
10 | 10 | ||
11 | Example: | 11 | Example: |
12 | 12 | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt index 57edb30dbbca..3d3b2b91e333 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt | |||
@@ -8,9 +8,6 @@ Required properties: | |||
8 | - #interrupt-cells : Specifies the number of cells needed to encode an | 8 | - #interrupt-cells : Specifies the number of cells needed to encode an |
9 | interrupt source. The value shall be 1. | 9 | interrupt source. The value shall be 1. |
10 | 10 | ||
11 | For the valid interrupt sources for your SoC, see the documentation in | ||
12 | sunxi/<soc>.txt | ||
13 | |||
14 | Example: | 11 | Example: |
15 | 12 | ||
16 | intc: interrupt-controller { | 13 | intc: interrupt-controller { |
diff --git a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt index 72a06c0ab1db..1486497a24c1 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | |||
@@ -4,16 +4,33 @@ Specifying interrupt information for devices | |||
4 | 1) Interrupt client nodes | 4 | 1) Interrupt client nodes |
5 | ------------------------- | 5 | ------------------------- |
6 | 6 | ||
7 | Nodes that describe devices which generate interrupts must contain an | 7 | Nodes that describe devices which generate interrupts must contain an either an |
8 | "interrupts" property. This property must contain a list of interrupt | 8 | "interrupts" property or an "interrupts-extended" property. These properties |
9 | specifiers, one per output interrupt. The format of the interrupt specifier is | 9 | contain a list of interrupt specifiers, one per output interrupt. The format of |
10 | determined by the interrupt controller to which the interrupts are routed; see | 10 | the interrupt specifier is determined by the interrupt controller to which the |
11 | section 2 below for details. | 11 | interrupts are routed; see section 2 below for details. |
12 | |||
13 | Example: | ||
14 | interrupt-parent = <&intc1>; | ||
15 | interrupts = <5 0>, <6 0>; | ||
12 | 16 | ||
13 | The "interrupt-parent" property is used to specify the controller to which | 17 | The "interrupt-parent" property is used to specify the controller to which |
14 | interrupts are routed and contains a single phandle referring to the interrupt | 18 | interrupts are routed and contains a single phandle referring to the interrupt |
15 | controller node. This property is inherited, so it may be specified in an | 19 | controller node. This property is inherited, so it may be specified in an |
16 | interrupt client node or in any of its parent nodes. | 20 | interrupt client node or in any of its parent nodes. Interrupts listed in the |
21 | "interrupts" property are always in reference to the node's interrupt parent. | ||
22 | |||
23 | The "interrupts-extended" property is a special form for use when a node needs | ||
24 | to reference multiple interrupt parents. Each entry in this property contains | ||
25 | both the parent phandle and the interrupt specifier. "interrupts-extended" | ||
26 | should only be used when a device has multiple interrupt parents. | ||
27 | |||
28 | Example: | ||
29 | interrupts-extended = <&intc1 5 1>, <&intc2 1 0>; | ||
30 | |||
31 | A device node may contain either "interrupts" or "interrupts-extended", but not | ||
32 | both. If both properties are present, then the operating system should log an | ||
33 | error and use only the data in "interrupts". | ||
17 | 34 | ||
18 | 2) Interrupt controller nodes | 35 | 2) Interrupt controller nodes |
19 | ----------------------------- | 36 | ----------------------------- |
diff --git a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt b/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt deleted file mode 100644 index 76b98c834499..000000000000 --- a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | Allwinner A10 (sun4i) interrupt sources | ||
2 | --------------------------------------- | ||
3 | |||
4 | The interrupt sources available for the Allwinner A10 SoC are the | ||
5 | following one: | ||
6 | |||
7 | 0: ENMI | ||
8 | 1: UART0 | ||
9 | 2: UART1 | ||
10 | 3: UART2 | ||
11 | 4: UART3 | ||
12 | 5: IR0 | ||
13 | 6: IR1 | ||
14 | 7: I2C0 | ||
15 | 8: I2C1 | ||
16 | 9: I2C2 | ||
17 | 10: SPI0 | ||
18 | 11: SPI1 | ||
19 | 12: SPI2 | ||
20 | 13: SPDIF | ||
21 | 14: AC97 | ||
22 | 15: TS | ||
23 | 16: I2S | ||
24 | 17: UART4 | ||
25 | 18: UART5 | ||
26 | 19: UART6 | ||
27 | 20: UART7 | ||
28 | 21: KEYPAD | ||
29 | 22: TIMER0 | ||
30 | 23: TIMER1 | ||
31 | 24: TIMER2 | ||
32 | 25: TIMER3 | ||
33 | 26: CAN | ||
34 | 27: DMA | ||
35 | 28: PIO | ||
36 | 29: TOUCH_PANEL | ||
37 | 30: AUDIO_CODEC | ||
38 | 31: LRADC | ||
39 | 32: MMC0 | ||
40 | 33: MMC1 | ||
41 | 34: MMC2 | ||
42 | 35: MMC3 | ||
43 | 36: MEMSTICK | ||
44 | 37: NAND | ||
45 | 38: USB0 | ||
46 | 39: USB1 | ||
47 | 40: USB2 | ||
48 | 41: SCR | ||
49 | 42: CSI0 | ||
50 | 43: CSI1 | ||
51 | 44: LCDCTRL0 | ||
52 | 45: LCDCTRL1 | ||
53 | 46: MP | ||
54 | 47: DEFEBE0 | ||
55 | 48: DEFEBE1 | ||
56 | 49: PMU | ||
57 | 50: SPI3 | ||
58 | 51: TZASC | ||
59 | 52: PATA | ||
60 | 53: VE | ||
61 | 54: SS | ||
62 | 55: EMAC | ||
63 | 56: SATA | ||
64 | 57: GPS | ||
65 | 58: HDMI | ||
66 | 59: TVE | ||
67 | 60: ACE | ||
68 | 61: TVD | ||
69 | 62: PS2_0 | ||
70 | 63: PS2_1 | ||
71 | 64: USB3 | ||
72 | 65: USB4 | ||
73 | 66: PLE_PFM | ||
74 | 67: TIMER4 | ||
75 | 68: TIMER5 | ||
76 | 69: GPU_GP | ||
77 | 70: GPU_GPMMU | ||
78 | 71: GPU_PP0 | ||
79 | 72: GPU_PPMMU0 | ||
80 | 73: GPU_PMU | ||
81 | 74: GPU_RSV0 | ||
82 | 75: GPU_RSV1 | ||
83 | 76: GPU_RSV2 | ||
84 | 77: GPU_RSV3 | ||
85 | 78: GPU_RSV4 | ||
86 | 79: GPU_RSV5 | ||
87 | 80: GPU_RSV6 | ||
88 | 82: SYNC_TIMER0 | ||
89 | 83: SYNC_TIMER1 | ||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt b/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt deleted file mode 100644 index 2ec3b5ce1a0b..000000000000 --- a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | Allwinner A13 (sun5i) interrupt sources | ||
2 | --------------------------------------- | ||
3 | |||
4 | The interrupt sources available for the Allwinner A13 SoC are the | ||
5 | following one: | ||
6 | |||
7 | 0: ENMI | ||
8 | 2: UART1 | ||
9 | 4: UART3 | ||
10 | 5: IR | ||
11 | 7: I2C0 | ||
12 | 8: I2C1 | ||
13 | 9: I2C2 | ||
14 | 10: SPI0 | ||
15 | 11: SPI1 | ||
16 | 12: SPI2 | ||
17 | 22: TIMER0 | ||
18 | 23: TIMER1 | ||
19 | 24: TIMER2 | ||
20 | 25: TIMER3 | ||
21 | 27: DMA | ||
22 | 28: PIO | ||
23 | 29: TOUCH_PANEL | ||
24 | 30: AUDIO_CODEC | ||
25 | 31: LRADC | ||
26 | 32: MMC0 | ||
27 | 33: MMC1 | ||
28 | 34: MMC2 | ||
29 | 37: NAND | ||
30 | 38: USB OTG | ||
31 | 39: USB EHCI | ||
32 | 40: USB OHCI | ||
33 | 42: CSI | ||
34 | 44: LCDCTRL | ||
35 | 47: DEFEBE | ||
36 | 49: PMU | ||
37 | 53: VE | ||
38 | 54: SS | ||
39 | 66: PLE_PFM | ||
40 | 67: TIMER4 | ||
41 | 68: TIMER5 | ||
42 | 69: GPU_GP | ||
43 | 70: GPU_GPMMU | ||
44 | 71: GPU_PP0 | ||
45 | 72: GPU_PPMMU0 | ||
46 | 73: GPU_PMU | ||
47 | 74: GPU_RSV0 | ||
48 | 75: GPU_RSV1 | ||
49 | 76: GPU_RSV2 | ||
50 | 77: GPU_RSV3 | ||
51 | 78: GPU_RSV4 | ||
52 | 79: GPU_RSV5 | ||
53 | 80: GPU_RSV6 | ||
54 | 82: SYNC_TIMER0 | ||
55 | 83: SYNC_TIMER1 | ||
diff --git a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt index d5176882d8b9..c55b8c016a9e 100644 --- a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt +++ b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Binding for TI/National Semiconductor LP55xx Led Drivers | 1 | Binding for TI/National Semiconductor LP55xx Led Drivers |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562" | 4 | - compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562" or "ti,lp8501" |
5 | - reg: I2C slave address | 5 | - reg: I2C slave address |
6 | - clock-mode: Input clock mode, (0: automode, 1: internal, 2: external) | 6 | - clock-mode: Input clock mode, (0: automode, 1: internal, 2: external) |
7 | 7 | ||
@@ -10,14 +10,23 @@ Each child has own specific current settings | |||
10 | - max-cur: Maximun current at each led channel. | 10 | - max-cur: Maximun current at each led channel. |
11 | 11 | ||
12 | Optional properties: | 12 | Optional properties: |
13 | - enable-gpio: GPIO attached to the chip's enable pin | ||
13 | - label: Used for naming LEDs | 14 | - label: Used for naming LEDs |
15 | - pwr-sel: LP8501 specific property. Power selection for output channels. | ||
16 | 0: D1~9 are connected to VDD | ||
17 | 1: D1~6 with VDD, D7~9 with VOUT | ||
18 | 2: D1~6 with VOUT, D7~9 with VDD | ||
19 | 3: D1~9 are connected to VOUT | ||
14 | 20 | ||
15 | Alternatively, each child can have specific channel name | 21 | Alternatively, each child can have a specific channel name and trigger: |
16 | - chan-name: Name of each channel name | 22 | - chan-name (optional): name of channel |
23 | - linux,default-trigger (optional): see | ||
24 | Documentation/devicetree/bindings/leds/common.txt | ||
17 | 25 | ||
18 | example 1) LP5521 | 26 | example 1) LP5521 |
19 | 3 LED channels, external clock used. Channel names are 'lp5521_pri:channel0', | 27 | 3 LED channels, external clock used. Channel names are 'lp5521_pri:channel0', |
20 | 'lp5521_pri:channel1' and 'lp5521_pri:channel2' | 28 | 'lp5521_pri:channel1' and 'lp5521_pri:channel2', with a heartbeat trigger |
29 | on channel 0. | ||
21 | 30 | ||
22 | lp5521@32 { | 31 | lp5521@32 { |
23 | compatible = "national,lp5521"; | 32 | compatible = "national,lp5521"; |
@@ -28,6 +37,7 @@ lp5521@32 { | |||
28 | chan0 { | 37 | chan0 { |
29 | led-cur = /bits/ 8 <0x2f>; | 38 | led-cur = /bits/ 8 <0x2f>; |
30 | max-cur = /bits/ 8 <0x5f>; | 39 | max-cur = /bits/ 8 <0x5f>; |
40 | linux,default-trigger = "heartbeat"; | ||
31 | }; | 41 | }; |
32 | 42 | ||
33 | chan1 { | 43 | chan1 { |
@@ -145,3 +155,68 @@ lp5562@30 { | |||
145 | max-cur = /bits/ 8 <0x60>; | 155 | max-cur = /bits/ 8 <0x60>; |
146 | }; | 156 | }; |
147 | }; | 157 | }; |
158 | |||
159 | example 4) LP8501 | ||
160 | 9 channels are defined. The 'pwr-sel' is LP8501 specific property. | ||
161 | Others are same as LP5523. | ||
162 | |||
163 | lp8501@32 { | ||
164 | compatible = "ti,lp8501"; | ||
165 | reg = <0x32>; | ||
166 | clock-mode = /bits/ 8 <2>; | ||
167 | pwr-sel = /bits/ 8 <3>; /* D1~9 connected to VOUT */ | ||
168 | |||
169 | chan0 { | ||
170 | chan-name = "d1"; | ||
171 | led-cur = /bits/ 8 <0x14>; | ||
172 | max-cur = /bits/ 8 <0x20>; | ||
173 | }; | ||
174 | |||
175 | chan1 { | ||
176 | chan-name = "d2"; | ||
177 | led-cur = /bits/ 8 <0x14>; | ||
178 | max-cur = /bits/ 8 <0x20>; | ||
179 | }; | ||
180 | |||
181 | chan2 { | ||
182 | chan-name = "d3"; | ||
183 | led-cur = /bits/ 8 <0x14>; | ||
184 | max-cur = /bits/ 8 <0x20>; | ||
185 | }; | ||
186 | |||
187 | chan3 { | ||
188 | chan-name = "d4"; | ||
189 | led-cur = /bits/ 8 <0x14>; | ||
190 | max-cur = /bits/ 8 <0x20>; | ||
191 | }; | ||
192 | |||
193 | chan4 { | ||
194 | chan-name = "d5"; | ||
195 | led-cur = /bits/ 8 <0x14>; | ||
196 | max-cur = /bits/ 8 <0x20>; | ||
197 | }; | ||
198 | |||
199 | chan5 { | ||
200 | chan-name = "d6"; | ||
201 | led-cur = /bits/ 8 <0x14>; | ||
202 | max-cur = /bits/ 8 <0x20>; | ||
203 | }; | ||
204 | |||
205 | chan6 { | ||
206 | chan-name = "d7"; | ||
207 | led-cur = /bits/ 8 <0x14>; | ||
208 | max-cur = /bits/ 8 <0x20>; | ||
209 | }; | ||
210 | |||
211 | chan7 { | ||
212 | chan-name = "d8"; | ||
213 | led-cur = /bits/ 8 <0x14>; | ||
214 | max-cur = /bits/ 8 <0x20>; | ||
215 | }; | ||
216 | |||
217 | chan8 { | ||
218 | chan-name = "d9"; | ||
219 | led-cur = /bits/ 8 <0x14>; | ||
220 | max-cur = /bits/ 8 <0x20>; | ||
221 | }; | ||
222 | }; | ||
diff --git a/Documentation/devicetree/bindings/leds/pca963x.txt b/Documentation/devicetree/bindings/leds/pca963x.txt new file mode 100644 index 000000000000..aece3eac1b63 --- /dev/null +++ b/Documentation/devicetree/bindings/leds/pca963x.txt | |||
@@ -0,0 +1,47 @@ | |||
1 | LEDs connected to pca9632, pca9633 or pca9634 | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be : "nxp,pca9632", "nxp,pca9633" or "nxp,pca9634" | ||
5 | |||
6 | Optional properties: | ||
7 | - nxp,totem-pole : use totem pole (push-pull) instead of default open-drain | ||
8 | - nxp,hw-blink : use hardware blinking instead of software blinking | ||
9 | |||
10 | Each led is represented as a sub-node of the nxp,pca963x device. | ||
11 | |||
12 | LED sub-node properties: | ||
13 | - label : (optional) see Documentation/devicetree/bindings/leds/common.txt | ||
14 | - reg : number of LED line (could be from 0 to 3 in pca9632 or pca9633 | ||
15 | or 0 to 7 in pca9634) | ||
16 | - linux,default-trigger : (optional) | ||
17 | see Documentation/devicetree/bindings/leds/common.txt | ||
18 | |||
19 | Examples: | ||
20 | |||
21 | pca9632: pca9632 { | ||
22 | compatible = "nxp,pca9632"; | ||
23 | #address-cells = <1>; | ||
24 | #size-cells = <0>; | ||
25 | reg = <0x62>; | ||
26 | |||
27 | red@0 { | ||
28 | label = "red"; | ||
29 | reg = <0>; | ||
30 | linux,default-trigger = "none"; | ||
31 | }; | ||
32 | green@1 { | ||
33 | label = "green"; | ||
34 | reg = <1>; | ||
35 | linux,default-trigger = "none"; | ||
36 | }; | ||
37 | blue@2 { | ||
38 | label = "blue"; | ||
39 | reg = <2>; | ||
40 | linux,default-trigger = "none"; | ||
41 | }; | ||
42 | unused@3 { | ||
43 | label = "unused"; | ||
44 | reg = <3>; | ||
45 | linux,default-trigger = "none"; | ||
46 | }; | ||
47 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/i2c/adv7343.txt b/Documentation/devicetree/bindings/media/i2c/adv7343.txt new file mode 100644 index 000000000000..5653bc2428b8 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/adv7343.txt | |||
@@ -0,0 +1,48 @@ | |||
1 | * Analog Devices adv7343 video encoder | ||
2 | |||
3 | The ADV7343 are high speed, digital-to-analog video encoders in a 64-lead LQFP | ||
4 | package. Six high speed, 3.3 V, 11-bit video DACs provide support for composite | ||
5 | (CVBS), S-Video (Y-C), and component (YPrPb/RGB) analog outputs in standard | ||
6 | definition (SD), enhanced definition (ED), or high definition (HD) video | ||
7 | formats. | ||
8 | |||
9 | Required Properties : | ||
10 | - compatible: Must be "adi,adv7343" | ||
11 | |||
12 | Optional Properties : | ||
13 | - adi,power-mode-sleep-mode: on enable the current consumption is reduced to | ||
14 | micro ampere level. All DACs and the internal PLL | ||
15 | circuit are disabled. | ||
16 | - adi,power-mode-pll-ctrl: PLL and oversampling control. This control allows | ||
17 | internal PLL 1 circuit to be powered down and the | ||
18 | oversampling to be switched off. | ||
19 | - ad,adv7343-power-mode-dac: array configuring the power on/off DAC's 1..6, | ||
20 | 0 = OFF and 1 = ON, Default value when this | ||
21 | property is not specified is <0 0 0 0 0 0>. | ||
22 | - ad,adv7343-sd-config-dac-out: array configure SD DAC Output's 1 and 2, 0 = OFF | ||
23 | and 1 = ON, Default value when this property is | ||
24 | not specified is <0 0>. | ||
25 | |||
26 | Example: | ||
27 | |||
28 | i2c0@1c22000 { | ||
29 | ... | ||
30 | ... | ||
31 | |||
32 | adv7343@2a { | ||
33 | compatible = "adi,adv7343"; | ||
34 | reg = <0x2a>; | ||
35 | |||
36 | port { | ||
37 | adv7343_1: endpoint { | ||
38 | adi,power-mode-sleep-mode; | ||
39 | adi,power-mode-pll-ctrl; | ||
40 | /* Use DAC1..3, DAC6 */ | ||
41 | adi,dac-enable = <1 1 1 0 0 1>; | ||
42 | /* Use SD DAC output 1 */ | ||
43 | adi,sd-dac-enable = <1 0>; | ||
44 | }; | ||
45 | }; | ||
46 | }; | ||
47 | ... | ||
48 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/i2c/ths8200.txt b/Documentation/devicetree/bindings/media/i2c/ths8200.txt new file mode 100644 index 000000000000..285f6ae7dfa9 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/ths8200.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * Texas Instruments THS8200 video encoder | ||
2 | |||
3 | The ths8200 device is a digital to analog converter used in DVD players, video | ||
4 | recorders, set-top boxes. | ||
5 | |||
6 | Required Properties : | ||
7 | - compatible : value must be "ti,ths8200" | ||
8 | |||
9 | Example: | ||
10 | |||
11 | i2c0@1c22000 { | ||
12 | ... | ||
13 | ... | ||
14 | ths8200@5c { | ||
15 | compatible = "ti,ths8200"; | ||
16 | reg = <0x5c>; | ||
17 | }; | ||
18 | ... | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/i2c/tvp7002.txt b/Documentation/devicetree/bindings/media/i2c/tvp7002.txt new file mode 100644 index 000000000000..5f28b5d9abcc --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/tvp7002.txt | |||
@@ -0,0 +1,53 @@ | |||
1 | * Texas Instruments TV7002 video decoder | ||
2 | |||
3 | The TVP7002 device supports digitizing of video and graphics signal in RGB and | ||
4 | YPbPr color space. | ||
5 | |||
6 | Required Properties : | ||
7 | - compatible : Must be "ti,tvp7002" | ||
8 | |||
9 | Optional Properties: | ||
10 | - hsync-active: HSYNC Polarity configuration for the bus. Default value when | ||
11 | this property is not specified is <0>. | ||
12 | |||
13 | - vsync-active: VSYNC Polarity configuration for the bus. Default value when | ||
14 | this property is not specified is <0>. | ||
15 | |||
16 | - pclk-sample: Clock polarity of the bus. Default value when this property is | ||
17 | not specified is <0>. | ||
18 | |||
19 | - sync-on-green-active: Active state of Sync-on-green signal property of the | ||
20 | endpoint. | ||
21 | 0 = Normal Operation (Active Low, Default) | ||
22 | 1 = Inverted operation | ||
23 | |||
24 | - field-even-active: Active-high Field ID output polarity control of the bus. | ||
25 | Under normal operation, the field ID output is set to logic 1 for an odd field | ||
26 | (field 1) and set to logic 0 for an even field (field 0). | ||
27 | 0 = Normal Operation (Active Low, Default) | ||
28 | 1 = FID output polarity inverted | ||
29 | |||
30 | For further reading of port node refer Documentation/devicetree/bindings/media/ | ||
31 | video-interfaces.txt. | ||
32 | |||
33 | Example: | ||
34 | |||
35 | i2c0@1c22000 { | ||
36 | ... | ||
37 | ... | ||
38 | tvp7002@5c { | ||
39 | compatible = "ti,tvp7002"; | ||
40 | reg = <0x5c>; | ||
41 | |||
42 | port { | ||
43 | tvp7002_1: endpoint { | ||
44 | hsync-active = <1>; | ||
45 | vsync-active = <1>; | ||
46 | pclk-sample = <0>; | ||
47 | sync-on-green-active = <1>; | ||
48 | field-even-active = <0>; | ||
49 | }; | ||
50 | }; | ||
51 | }; | ||
52 | ... | ||
53 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt index df37b0230c75..f4181680831b 100644 --- a/Documentation/devicetree/bindings/media/s5p-mfc.txt +++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt | |||
@@ -10,14 +10,15 @@ Required properties: | |||
10 | - compatible : value should be either one among the following | 10 | - compatible : value should be either one among the following |
11 | (a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs | 11 | (a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs |
12 | (b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs | 12 | (b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs |
13 | (b) "samsung,mfc-v7" for MFC v7 present in Exynos5420 SoC | ||
13 | 14 | ||
14 | - reg : Physical base address of the IP registers and length of memory | 15 | - reg : Physical base address of the IP registers and length of memory |
15 | mapped region. | 16 | mapped region. |
16 | 17 | ||
17 | - interrupts : MFC interrupt number to the CPU. | 18 | - interrupts : MFC interrupt number to the CPU. |
18 | - clocks : from common clock binding: handle to mfc clocks. | 19 | - clocks : from common clock binding: handle to mfc clock. |
19 | - clock-names : from common clock binding: must contain "sclk_mfc" and "mfc", | 20 | - clock-names : from common clock binding: must contain "mfc", |
20 | corresponding to entries in the clocks property. | 21 | corresponding to entry in the clocks property. |
21 | 22 | ||
22 | - samsung,mfc-r : Base address of the first memory bank used by MFC | 23 | - samsung,mfc-r : Base address of the first memory bank used by MFC |
23 | for DMA contiguous memory allocation and its size. | 24 | for DMA contiguous memory allocation and its size. |
@@ -37,8 +38,8 @@ mfc: codec@13400000 { | |||
37 | reg = <0x13400000 0x10000>; | 38 | reg = <0x13400000 0x10000>; |
38 | interrupts = <0 94 0>; | 39 | interrupts = <0 94 0>; |
39 | samsung,power-domain = <&pd_mfc>; | 40 | samsung,power-domain = <&pd_mfc>; |
40 | clocks = <&clock 170>, <&clock 273>; | 41 | clocks = <&clock 273>; |
41 | clock-names = "sclk_mfc", "mfc"; | 42 | clock-names = "mfc"; |
42 | }; | 43 | }; |
43 | 44 | ||
44 | Board specific DT entry: | 45 | Board specific DT entry: |
diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt index e022d2dc4962..ce719f89dd1c 100644 --- a/Documentation/devicetree/bindings/media/video-interfaces.txt +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt | |||
@@ -88,6 +88,8 @@ Optional endpoint properties | |||
88 | - field-even-active: field signal level during the even field data transmission. | 88 | - field-even-active: field signal level during the even field data transmission. |
89 | - pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock | 89 | - pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock |
90 | signal. | 90 | signal. |
91 | - sync-on-green-active: active state of Sync-on-green (SoG) signal, 0/1 for | ||
92 | LOW/HIGH respectively. | ||
91 | - data-lanes: an array of physical data lane indexes. Position of an entry | 93 | - data-lanes: an array of physical data lane indexes. Position of an entry |
92 | determines the logical lane number, while the value of an entry indicates | 94 | determines the logical lane number, while the value of an entry indicates |
93 | physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have | 95 | physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have |
diff --git a/Documentation/devicetree/bindings/metag/pdc-intc.txt b/Documentation/devicetree/bindings/metag/pdc-intc.txt new file mode 100644 index 000000000000..a69118550344 --- /dev/null +++ b/Documentation/devicetree/bindings/metag/pdc-intc.txt | |||
@@ -0,0 +1,105 @@ | |||
1 | * ImgTec Powerdown Controller (PDC) Interrupt Controller Binding | ||
2 | |||
3 | This binding specifies what properties must be available in the device tree | ||
4 | representation of a PDC IRQ controller. This has a number of input interrupt | ||
5 | lines which can wake the system, and are passed on through output interrupt | ||
6 | lines. | ||
7 | |||
8 | Required properties: | ||
9 | |||
10 | - compatible: Specifies the compatibility list for the interrupt controller. | ||
11 | The type shall be <string> and the value shall include "img,pdc-intc". | ||
12 | |||
13 | - reg: Specifies the base PDC physical address(s) and size(s) of the | ||
14 | addressable register space. The type shall be <prop-encoded-array>. | ||
15 | |||
16 | - interrupt-controller: The presence of this property identifies the node | ||
17 | as an interrupt controller. No property value shall be defined. | ||
18 | |||
19 | - #interrupt-cells: Specifies the number of cells needed to encode an | ||
20 | interrupt source. The type shall be a <u32> and the value shall be 2. | ||
21 | |||
22 | - num-perips: Number of waking peripherals. | ||
23 | |||
24 | - num-syswakes: Number of SysWake inputs. | ||
25 | |||
26 | - interrupts: List of interrupt specifiers. The first specifier shall be the | ||
27 | shared SysWake interrupt, and remaining specifies shall be PDC peripheral | ||
28 | interrupts in order. | ||
29 | |||
30 | * Interrupt Specifier Definition | ||
31 | |||
32 | Interrupt specifiers consists of 2 cells encoded as follows: | ||
33 | |||
34 | - <1st-cell>: The interrupt-number that identifies the interrupt source. | ||
35 | 0-7: Peripheral interrupts | ||
36 | 8-15: SysWake interrupts | ||
37 | |||
38 | - <2nd-cell>: The level-sense information, encoded using the Linux interrupt | ||
39 | flags as follows (only 4 valid for peripheral interrupts): | ||
40 | 0 = none (decided by software) | ||
41 | 1 = low-to-high edge triggered | ||
42 | 2 = high-to-low edge triggered | ||
43 | 3 = both edge triggered | ||
44 | 4 = active-high level-sensitive (required for perip irqs) | ||
45 | 8 = active-low level-sensitive | ||
46 | |||
47 | * Examples | ||
48 | |||
49 | Example 1: | ||
50 | |||
51 | /* | ||
52 | * TZ1090 PDC block | ||
53 | */ | ||
54 | pdc: pdc@0x02006000 { | ||
55 | // This is an interrupt controller node. | ||
56 | interrupt-controller; | ||
57 | |||
58 | // Three cells to encode interrupt sources. | ||
59 | #interrupt-cells = <2>; | ||
60 | |||
61 | // Offset address of 0x02006000 and size of 0x1000. | ||
62 | reg = <0x02006000 0x1000>; | ||
63 | |||
64 | // Compatible with Meta hardware trigger block. | ||
65 | compatible = "img,pdc-intc"; | ||
66 | |||
67 | // Three peripherals are connected. | ||
68 | num-perips = <3>; | ||
69 | |||
70 | // Four SysWakes are connected. | ||
71 | num-syswakes = <4>; | ||
72 | |||
73 | interrupts = <18 4 /* level */>, /* Syswakes */ | ||
74 | <30 4 /* level */>, /* Peripheral 0 (RTC) */ | ||
75 | <29 4 /* level */>, /* Peripheral 1 (IR) */ | ||
76 | <31 4 /* level */>; /* Peripheral 2 (WDT) */ | ||
77 | }; | ||
78 | |||
79 | Example 2: | ||
80 | |||
81 | /* | ||
82 | * An SoC peripheral that is wired through the PDC. | ||
83 | */ | ||
84 | rtc0 { | ||
85 | // The interrupt controller that this device is wired to. | ||
86 | interrupt-parent = <&pdc>; | ||
87 | |||
88 | // Interrupt source Peripheral 0 | ||
89 | interrupts = <0 /* Peripheral 0 (RTC) */ | ||
90 | 4> /* IRQ_TYPE_LEVEL_HIGH */ | ||
91 | }; | ||
92 | |||
93 | Example 3: | ||
94 | |||
95 | /* | ||
96 | * An interrupt generating device that is wired to a SysWake pin. | ||
97 | */ | ||
98 | touchscreen0 { | ||
99 | // The interrupt controller that this device is wired to. | ||
100 | interrupt-parent = <&pdc>; | ||
101 | |||
102 | // Interrupt source SysWake 0 that is active-low level-sensitive | ||
103 | interrupts = <8 /* SysWake0 */ | ||
104 | 8 /* IRQ_TYPE_LEVEL_LOW */>; | ||
105 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/cros-ec.txt b/Documentation/devicetree/bindings/mfd/cros-ec.txt index e0e59c58a1f9..5f229c5f6da9 100644 --- a/Documentation/devicetree/bindings/mfd/cros-ec.txt +++ b/Documentation/devicetree/bindings/mfd/cros-ec.txt | |||
@@ -4,7 +4,7 @@ Google's ChromeOS EC is a Cortex-M device which talks to the AP and | |||
4 | implements various function such as keyboard and battery charging. | 4 | implements various function such as keyboard and battery charging. |
5 | 5 | ||
6 | The EC can be connect through various means (I2C, SPI, LPC) and the | 6 | The EC can be connect through various means (I2C, SPI, LPC) and the |
7 | compatible string used depends on the inteface. Each connection method has | 7 | compatible string used depends on the interface. Each connection method has |
8 | its own driver which connects to the top level interface-agnostic EC driver. | 8 | its own driver which connects to the top level interface-agnostic EC driver. |
9 | Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to | 9 | Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to |
10 | the top-level driver. | 10 | the top-level driver. |
diff --git a/Documentation/devicetree/bindings/mfd/palmas.txt b/Documentation/devicetree/bindings/mfd/palmas.txt index 892537d1a48f..e5f0f8303461 100644 --- a/Documentation/devicetree/bindings/mfd/palmas.txt +++ b/Documentation/devicetree/bindings/mfd/palmas.txt | |||
@@ -5,6 +5,7 @@ twl6035 (palmas) | |||
5 | twl6037 (palmas) | 5 | twl6037 (palmas) |
6 | tps65913 (palmas) | 6 | tps65913 (palmas) |
7 | tps65914 (palmas) | 7 | tps65914 (palmas) |
8 | tps659038 | ||
8 | 9 | ||
9 | Required properties: | 10 | Required properties: |
10 | - compatible : Should be from the list | 11 | - compatible : Should be from the list |
@@ -14,6 +15,7 @@ Required properties: | |||
14 | ti,tps65913 | 15 | ti,tps65913 |
15 | ti,tps65914 | 16 | ti,tps65914 |
16 | ti,tps80036 | 17 | ti,tps80036 |
18 | ti,tps659038 | ||
17 | and also the generic series names | 19 | and also the generic series names |
18 | ti,palmas | 20 | ti,palmas |
19 | - interrupt-controller : palmas has its own internal IRQs | 21 | - interrupt-controller : palmas has its own internal IRQs |
diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt new file mode 100644 index 000000000000..c9332c626021 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt | |||
@@ -0,0 +1,109 @@ | |||
1 | |||
2 | * Samsung S2MPS11 Voltage and Current Regulator | ||
3 | |||
4 | The Samsung S2MP211 is a multi-function device which includes voltage and | ||
5 | current regulators, RTC, charger controller and other sub-blocks. It is | ||
6 | interfaced to the host controller using a I2C interface. Each sub-block is | ||
7 | addressed by the host system using different I2C slave address. | ||
8 | |||
9 | Required properties: | ||
10 | - compatible: Should be "samsung,s2mps11-pmic". | ||
11 | - reg: Specifies the I2C slave address of the pmic block. It should be 0x66. | ||
12 | |||
13 | Optional properties: | ||
14 | - interrupt-parent: Specifies the phandle of the interrupt controller to which | ||
15 | the interrupts from s2mps11 are delivered to. | ||
16 | - interrupts: Interrupt specifiers for interrupt sources. | ||
17 | |||
18 | Optional nodes: | ||
19 | - clocks: s2mps11 provides three(AP/CP/BT) buffered 32.768 KHz outputs, so to | ||
20 | register these as clocks with common clock framework instantiate a sub-node | ||
21 | named "clocks". It uses the common clock binding documented in : | ||
22 | [Documentation/devicetree/bindings/clock/clock-bindings.txt] | ||
23 | - #clock-cells: should be 1. | ||
24 | |||
25 | - The following is the list of clocks generated by the controller. Each clock | ||
26 | is assigned an identifier and client nodes use this identifier to specify | ||
27 | the clock which they consume. | ||
28 | Clock ID | ||
29 | ---------------------- | ||
30 | 32KhzAP 0 | ||
31 | 32KhzCP 1 | ||
32 | 32KhzBT 2 | ||
33 | |||
34 | - regulators: The regulators of s2mps11 that have to be instantiated should be | ||
35 | included in a sub-node named 'regulators'. Regulator nodes included in this | ||
36 | sub-node should be of the format as listed below. | ||
37 | |||
38 | regulator_name { | ||
39 | [standard regulator constraints....]; | ||
40 | }; | ||
41 | |||
42 | regulator-ramp-delay for BUCKs = [6250/12500/25000(default)/50000] uV/us | ||
43 | |||
44 | BUCK[2/3/4/6] supports disabling ramp delay on hardware, so explictly | ||
45 | regulator-ramp-delay = <0> can be used for them to disable ramp delay. | ||
46 | In absence of regulator-ramp-delay property, default ramp delay will be used. | ||
47 | |||
48 | NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set | ||
49 | for a particular group of BUCKs. So provide same regulator-ramp-delay<value>. | ||
50 | Grouping of BUCKs sharing ramp rate setting is as follow : BUCK[1, 6], | ||
51 | BUCK[3, 4], and BUCK[7, 8, 10] | ||
52 | |||
53 | The regulator constraints inside the regulator nodes use the standard regulator | ||
54 | bindings which are documented elsewhere. | ||
55 | |||
56 | The following are the names of the regulators that the s2mps11 pmic block | ||
57 | supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number | ||
58 | as per the datasheet of s2mps11. | ||
59 | |||
60 | - LDOn | ||
61 | - valid values for n are 1 to 28 | ||
62 | - Example: LDO0, LD01, LDO28 | ||
63 | - BUCKn | ||
64 | - valid values for n are 1 to 9. | ||
65 | - Example: BUCK1, BUCK2, BUCK9 | ||
66 | |||
67 | Example: | ||
68 | |||
69 | s2mps11_pmic@66 { | ||
70 | compatible = "samsung,s2mps11-pmic"; | ||
71 | reg = <0x66>; | ||
72 | |||
73 | s2m_osc: clocks{ | ||
74 | #clock-cells = 1; | ||
75 | clock-output-names = "xx", "yy", "zz"; | ||
76 | }; | ||
77 | |||
78 | regulators { | ||
79 | ldo1_reg: LDO1 { | ||
80 | regulator-name = "VDD_ABB_3.3V"; | ||
81 | regulator-min-microvolt = <3300000>; | ||
82 | regulator-max-microvolt = <3300000>; | ||
83 | }; | ||
84 | |||
85 | ldo2_reg: LDO2 { | ||
86 | regulator-name = "VDD_ALIVE_1.1V"; | ||
87 | regulator-min-microvolt = <1100000>; | ||
88 | regulator-max-microvolt = <1100000>; | ||
89 | regulator-always-on; | ||
90 | }; | ||
91 | |||
92 | buck1_reg: BUCK1 { | ||
93 | regulator-name = "vdd_mif"; | ||
94 | regulator-min-microvolt = <950000>; | ||
95 | regulator-max-microvolt = <1350000>; | ||
96 | regulator-always-on; | ||
97 | regulator-boot-on; | ||
98 | }; | ||
99 | |||
100 | buck2_reg: BUCK2 { | ||
101 | regulator-name = "vdd_arm"; | ||
102 | regulator-min-microvolt = <950000>; | ||
103 | regulator-max-microvolt = <1350000>; | ||
104 | regulator-always-on; | ||
105 | regulator-boot-on; | ||
106 | regulator-ramp-delay = <50000>; | ||
107 | }; | ||
108 | }; | ||
109 | }; | ||
diff --git a/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt new file mode 100644 index 000000000000..68ba37295565 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | Allwinner sunxi-sid | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "allwinner,sun4i-sid" or "allwinner,sun7i-a20-sid". | ||
5 | - reg: Should contain registers location and length | ||
6 | |||
7 | Example for sun4i: | ||
8 | sid@01c23800 { | ||
9 | compatible = "allwinner,sun4i-sid"; | ||
10 | reg = <0x01c23800 0x10> | ||
11 | }; | ||
12 | |||
13 | Example for sun7i: | ||
14 | sid@01c23800 { | ||
15 | compatible = "allwinner,sun7i-a20-sid"; | ||
16 | reg = <0x01c23800 0x200> | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt index 38e51ad2e07e..a45ae08c8ed1 100644 --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt | |||
@@ -7,9 +7,30 @@ Required properties: | |||
7 | - reg: Should contain SSC registers location and length | 7 | - reg: Should contain SSC registers location and length |
8 | - interrupts: Should contain SSC interrupt | 8 | - interrupts: Should contain SSC interrupt |
9 | 9 | ||
10 | Example: | 10 | |
11 | Required properties for devices compatible with "atmel,at91sam9g45-ssc": | ||
12 | - dmas: DMA specifier, consisting of a phandle to DMA controller node, | ||
13 | the memory interface and SSC DMA channel ID (for tx and rx). | ||
14 | See Documentation/devicetree/bindings/dma/atmel-dma.txt for details. | ||
15 | - dma-names: Must be "tx", "rx". | ||
16 | |||
17 | Examples: | ||
18 | - PDC transfer: | ||
11 | ssc0: ssc@fffbc000 { | 19 | ssc0: ssc@fffbc000 { |
12 | compatible = "atmel,at91rm9200-ssc"; | 20 | compatible = "atmel,at91rm9200-ssc"; |
13 | reg = <0xfffbc000 0x4000>; | 21 | reg = <0xfffbc000 0x4000>; |
14 | interrupts = <14 4 5>; | 22 | interrupts = <14 4 5>; |
15 | }; | 23 | }; |
24 | |||
25 | - DMA transfer: | ||
26 | ssc0: ssc@f0010000 { | ||
27 | compatible = "atmel,at91sam9g45-ssc"; | ||
28 | reg = <0xf0010000 0x4000>; | ||
29 | interrupts = <28 4 5>; | ||
30 | dmas = <&dma0 1 13>, | ||
31 | <&dma0 1 14>; | ||
32 | dma-names = "tx", "rx"; | ||
33 | pinctrl-names = "default"; | ||
34 | pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>; | ||
35 | status = "disabled"; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/misc/smc.txt b/Documentation/devicetree/bindings/misc/smc.txt index 02b428136177..6c9f176f3571 100644 --- a/Documentation/devicetree/bindings/misc/smc.txt +++ b/Documentation/devicetree/bindings/misc/smc.txt | |||
@@ -4,11 +4,12 @@ This binding defines the location of the bounce buffer | |||
4 | used for non-secure to secure communications. | 4 | used for non-secure to secure communications. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : "bcm,kona-smc" | 7 | - compatible : "brcm,kona-smc" |
8 | - DEPRECATED: compatible : "bcm,kona-smc" | ||
8 | - reg : Location and size of bounce buffer | 9 | - reg : Location and size of bounce buffer |
9 | 10 | ||
10 | Example: | 11 | Example: |
11 | smc@0x3404c000 { | 12 | smc@0x3404c000 { |
12 | compatible = "bcm,bcm11351-smc", "bcm,kona-smc"; | 13 | compatible = "brcm,bcm11351-smc", "brcm,kona-smc"; |
13 | reg = <0x3404c000 0x400>; //1 KiB in SRAM | 14 | reg = <0x3404c000 0x400>; //1 KiB in SRAM |
14 | }; | 15 | }; |
diff --git a/Documentation/devicetree/bindings/misc/ti,dac7512.txt b/Documentation/devicetree/bindings/misc/ti,dac7512.txt new file mode 100644 index 000000000000..1db45939dac9 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/ti,dac7512.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | TI DAC7512 DEVICETREE BINDINGS | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - "compatible" Must be set to "ti,dac7512" | ||
6 | |||
7 | Property rules described in Documentation/devicetree/bindings/spi/spi-bus.txt | ||
8 | apply. In particular, "reg" and "spi-max-frequency" properties must be given. | ||
9 | |||
10 | |||
11 | Example: | ||
12 | |||
13 | spi_master { | ||
14 | dac7512: dac7512@0 { | ||
15 | compatible = "ti,dac7512"; | ||
16 | reg = <0>; /* CS0 */ | ||
17 | spi-max-frequency = <1000000>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
diff --git a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt index 6d1c0988cfc7..c67b975c8906 100644 --- a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt +++ b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt | |||
@@ -1,11 +1,11 @@ | |||
1 | * Samsung Exynos specific extensions to the Synopsis Designware Mobile | 1 | * Samsung Exynos specific extensions to the Synopsys Designware Mobile |
2 | Storage Host Controller | 2 | Storage Host Controller |
3 | 3 | ||
4 | The Synopsis designware mobile storage host controller is used to interface | 4 | The Synopsys designware mobile storage host controller is used to interface |
5 | a SoC with storage medium such as eMMC or SD/MMC cards. This file documents | 5 | a SoC with storage medium such as eMMC or SD/MMC cards. This file documents |
6 | differences between the core Synopsis dw mshc controller properties described | 6 | differences between the core Synopsys dw mshc controller properties described |
7 | by synopsis-dw-mshc.txt and the properties used by the Samsung Exynos specific | 7 | by synopsys-dw-mshc.txt and the properties used by the Samsung Exynos specific |
8 | extensions to the Synopsis Designware Mobile Storage Host Controller. | 8 | extensions to the Synopsys Designware Mobile Storage Host Controller. |
9 | 9 | ||
10 | Required Properties: | 10 | Required Properties: |
11 | 11 | ||
diff --git a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt index bd9be0b5bc20..b7943f3f9995 100644 --- a/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-esdhc.txt | |||
@@ -19,6 +19,9 @@ Optional properties: | |||
19 | "bus-width = <1>" property. | 19 | "bus-width = <1>" property. |
20 | - sdhci,auto-cmd12: specifies that a controller can only handle auto | 20 | - sdhci,auto-cmd12: specifies that a controller can only handle auto |
21 | CMD12. | 21 | CMD12. |
22 | - voltage-ranges : two cells are required, first cell specifies minimum | ||
23 | slot voltage (mV), second cell specifies maximum slot voltage (mV). | ||
24 | Several ranges could be specified. | ||
22 | 25 | ||
23 | Example: | 26 | Example: |
24 | 27 | ||
@@ -29,4 +32,5 @@ sdhci@2e000 { | |||
29 | interrupt-parent = <&ipic>; | 32 | interrupt-parent = <&ipic>; |
30 | /* Filled in by U-Boot */ | 33 | /* Filled in by U-Boot */ |
31 | clock-frequency = <0>; | 34 | clock-frequency = <0>; |
35 | voltage-ranges = <3300 3300>; | ||
32 | }; | 36 | }; |
diff --git a/Documentation/devicetree/bindings/mmc/bcm,kona-sdhci.txt b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt index 094ae010f2fb..789fb07a426d 100644 --- a/Documentation/devicetree/bindings/mmc/bcm,kona-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt | |||
@@ -4,12 +4,13 @@ This file documents differences between the core properties in mmc.txt | |||
4 | and the properties present in the bcm281xx SDHCI | 4 | and the properties present in the bcm281xx SDHCI |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible : Should be "bcm,kona-sdhci" | 7 | - compatible : Should be "brcm,kona-sdhci" |
8 | - DEPRECATED: compatible : Should be "bcm,kona-sdhci" | ||
8 | 9 | ||
9 | Example: | 10 | Example: |
10 | 11 | ||
11 | sdio2: sdio@0x3f1a0000 { | 12 | sdio2: sdio@0x3f1a0000 { |
12 | compatible = "bcm,kona-sdhci"; | 13 | compatible = "brcm,kona-sdhci"; |
13 | reg = <0x3f1a0000 0x10000>; | 14 | reg = <0x3f1a0000 0x10000>; |
14 | interrupts = <0x0 74 0x4>; | 15 | interrupts = <0x0 74 0x4>; |
15 | }; | 16 | }; |
diff --git a/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt index 8a3d91d47b6a..c559f3f36309 100644 --- a/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt +++ b/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt | |||
@@ -1,11 +1,11 @@ | |||
1 | * Rockchip specific extensions to the Synopsis Designware Mobile | 1 | * Rockchip specific extensions to the Synopsys Designware Mobile |
2 | Storage Host Controller | 2 | Storage Host Controller |
3 | 3 | ||
4 | The Synopsis designware mobile storage host controller is used to interface | 4 | The Synopsys designware mobile storage host controller is used to interface |
5 | a SoC with storage medium such as eMMC or SD/MMC cards. This file documents | 5 | a SoC with storage medium such as eMMC or SD/MMC cards. This file documents |
6 | differences between the core Synopsis dw mshc controller properties described | 6 | differences between the core Synopsys dw mshc controller properties described |
7 | by synopsis-dw-mshc.txt and the properties used by the Rockchip specific | 7 | by synopsys-dw-mshc.txt and the properties used by the Rockchip specific |
8 | extensions to the Synopsis Designware Mobile Storage Host Controller. | 8 | extensions to the Synopsys Designware Mobile Storage Host Controller. |
9 | 9 | ||
10 | Required Properties: | 10 | Required Properties: |
11 | 11 | ||
diff --git a/Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt index cdcebea9c6f5..066a78b034ca 100644 --- a/Documentation/devicetree/bindings/mmc/synopsis-dw-mshc.txt +++ b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt | |||
@@ -1,14 +1,14 @@ | |||
1 | * Synopsis Designware Mobile Storage Host Controller | 1 | * Synopsys Designware Mobile Storage Host Controller |
2 | 2 | ||
3 | The Synopsis designware mobile storage host controller is used to interface | 3 | The Synopsys designware mobile storage host controller is used to interface |
4 | a SoC with storage medium such as eMMC or SD/MMC cards. This file documents | 4 | a SoC with storage medium such as eMMC or SD/MMC cards. This file documents |
5 | differences between the core mmc properties described by mmc.txt and the | 5 | differences between the core mmc properties described by mmc.txt and the |
6 | properties used by the Synopsis Designware Mobile Storage Host Controller. | 6 | properties used by the Synopsys Designware Mobile Storage Host Controller. |
7 | 7 | ||
8 | Required Properties: | 8 | Required Properties: |
9 | 9 | ||
10 | * compatible: should be | 10 | * compatible: should be |
11 | - snps,dw-mshc: for controllers compliant with synopsis dw-mshc. | 11 | - snps,dw-mshc: for controllers compliant with synopsys dw-mshc. |
12 | * #address-cells: should be 1. | 12 | * #address-cells: should be 1. |
13 | * #size-cells: should be 0. | 13 | * #size-cells: should be 0. |
14 | 14 | ||
diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt index ed271fc255b2..8c8908ab84ba 100644 --- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt +++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt | |||
@@ -20,8 +20,29 @@ ti,dual-volt: boolean, supports dual voltage cards | |||
20 | ti,non-removable: non-removable slot (like eMMC) | 20 | ti,non-removable: non-removable slot (like eMMC) |
21 | ti,needs-special-reset: Requires a special softreset sequence | 21 | ti,needs-special-reset: Requires a special softreset sequence |
22 | ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed | 22 | ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed |
23 | dmas: List of DMA specifiers with the controller specific format | ||
24 | as described in the generic DMA client binding. A tx and rx | ||
25 | specifier is required. | ||
26 | dma-names: List of DMA request names. These strings correspond | ||
27 | 1:1 with the DMA specifiers listed in dmas. The string naming is | ||
28 | to be "rx" and "tx" for RX and TX DMA requests, respectively. | ||
29 | |||
30 | Examples: | ||
31 | |||
32 | [hwmod populated DMA resources] | ||
33 | |||
34 | mmc1: mmc@0x4809c000 { | ||
35 | compatible = "ti,omap4-hsmmc"; | ||
36 | reg = <0x4809c000 0x400>; | ||
37 | ti,hwmods = "mmc1"; | ||
38 | ti,dual-volt; | ||
39 | bus-width = <4>; | ||
40 | vmmc-supply = <&vmmc>; /* phandle to regulator node */ | ||
41 | ti,non-removable; | ||
42 | }; | ||
43 | |||
44 | [generic DMA request binding] | ||
23 | 45 | ||
24 | Example: | ||
25 | mmc1: mmc@0x4809c000 { | 46 | mmc1: mmc@0x4809c000 { |
26 | compatible = "ti,omap4-hsmmc"; | 47 | compatible = "ti,omap4-hsmmc"; |
27 | reg = <0x4809c000 0x400>; | 48 | reg = <0x4809c000 0x400>; |
@@ -30,4 +51,7 @@ Example: | |||
30 | bus-width = <4>; | 51 | bus-width = <4>; |
31 | vmmc-supply = <&vmmc>; /* phandle to regulator node */ | 52 | vmmc-supply = <&vmmc>; /* phandle to regulator node */ |
32 | ti,non-removable; | 53 | ti,non-removable; |
54 | dmas = <&edma 24 | ||
55 | &edma 25>; | ||
56 | dma-names = "tx", "rx"; | ||
33 | }; | 57 | }; |
diff --git a/Documentation/devicetree/bindings/mmc/tmio_mmc.txt b/Documentation/devicetree/bindings/mmc/tmio_mmc.txt index df204e18e030..6a2a1160a70d 100644 --- a/Documentation/devicetree/bindings/mmc/tmio_mmc.txt +++ b/Documentation/devicetree/bindings/mmc/tmio_mmc.txt | |||
@@ -9,12 +9,15 @@ compulsory and any optional properties, common to all SD/MMC drivers, as | |||
9 | described in mmc.txt, can be used. Additionally the following tmio_mmc-specific | 9 | described in mmc.txt, can be used. Additionally the following tmio_mmc-specific |
10 | optional bindings can be used. | 10 | optional bindings can be used. |
11 | 11 | ||
12 | Required properties: | ||
13 | - compatible: "renesas,sdhi-shmobile" - a generic sh-mobile SDHI unit | ||
14 | "renesas,sdhi-sh7372" - SDHI IP on SH7372 SoC | ||
15 | "renesas,sdhi-sh73a0" - SDHI IP on SH73A0 SoC | ||
16 | "renesas,sdhi-r8a73a4" - SDHI IP on R8A73A4 SoC | ||
17 | "renesas,sdhi-r8a7740" - SDHI IP on R8A7740 SoC | ||
18 | "renesas,sdhi-r8a7778" - SDHI IP on R8A7778 SoC | ||
19 | "renesas,sdhi-r8a7779" - SDHI IP on R8A7779 SoC | ||
20 | "renesas,sdhi-r8a7790" - SDHI IP on R8A7790 SoC | ||
21 | |||
12 | Optional properties: | 22 | Optional properties: |
13 | - toshiba,mmc-wrprotect-disable: write-protect detection is unavailable | 23 | - toshiba,mmc-wrprotect-disable: write-protect detection is unavailable |
14 | |||
15 | When used with Renesas SDHI hardware, the following compatibility strings | ||
16 | configure various model-specific properties: | ||
17 | |||
18 | "renesas,sh7372-sdhi": (default) compatible with SH7372 | ||
19 | "renesas,r8a7740-sdhi": compatible with R8A7740: certain MMC/SD commands have to | ||
20 | wait for the interface to become idle. | ||
diff --git a/Documentation/devicetree/bindings/mtd/atmel-nand.txt b/Documentation/devicetree/bindings/mtd/atmel-nand.txt index d555421ea49f..c4728839d0c1 100644 --- a/Documentation/devicetree/bindings/mtd/atmel-nand.txt +++ b/Documentation/devicetree/bindings/mtd/atmel-nand.txt | |||
@@ -15,6 +15,7 @@ Required properties: | |||
15 | optional gpio and may be set to 0 if not present. | 15 | optional gpio and may be set to 0 if not present. |
16 | 16 | ||
17 | Optional properties: | 17 | Optional properties: |
18 | - atmel,nand-has-dma : boolean to support dma transfer for nand read/write. | ||
18 | - nand-ecc-mode : String, operation mode of the NAND ecc mode, soft by default. | 19 | - nand-ecc-mode : String, operation mode of the NAND ecc mode, soft by default. |
19 | Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first", | 20 | Supported values are: "none", "soft", "hw", "hw_syndrome", "hw_oob_first", |
20 | "soft_bch". | 21 | "soft_bch". |
@@ -29,6 +30,14 @@ Optional properties: | |||
29 | sector size 1024. | 30 | sector size 1024. |
30 | - nand-bus-width : 8 or 16 bus width if not present 8 | 31 | - nand-bus-width : 8 or 16 bus width if not present 8 |
31 | - nand-on-flash-bbt: boolean to enable on flash bbt option if not present false | 32 | - nand-on-flash-bbt: boolean to enable on flash bbt option if not present false |
33 | - Nand Flash Controller(NFC) is a slave driver under Atmel nand flash | ||
34 | - Required properties: | ||
35 | - compatible : "atmel,sama5d3-nfc". | ||
36 | - reg : should specify the address and size used for NFC command registers, | ||
37 | NFC registers and NFC Sram. NFC Sram address and size can be absent | ||
38 | if don't want to use it. | ||
39 | - Optional properties: | ||
40 | - atmel,write-by-sram: boolean to enable NFC write by sram. | ||
32 | 41 | ||
33 | Examples: | 42 | Examples: |
34 | nand0: nand@40000000,0 { | 43 | nand0: nand@40000000,0 { |
@@ -77,3 +86,22 @@ nand0: nand@40000000 { | |||
77 | ... | 86 | ... |
78 | }; | 87 | }; |
79 | }; | 88 | }; |
89 | |||
90 | /* for NFC supported chips */ | ||
91 | nand0: nand@40000000 { | ||
92 | compatible = "atmel,at91rm9200-nand"; | ||
93 | #address-cells = <1>; | ||
94 | #size-cells = <1>; | ||
95 | ranges; | ||
96 | ... | ||
97 | nfc@70000000 { | ||
98 | compatible = "atmel,sama5d3-nfc"; | ||
99 | #address-cells = <1>; | ||
100 | #size-cells = <1>; | ||
101 | reg = < | ||
102 | 0x70000000 0x10000000 /* NFC Command Registers */ | ||
103 | 0xffffc000 0x00000070 /* NFC HSMC regs */ | ||
104 | 0x00200000 0x00100000 /* NFC SRAM banks */ | ||
105 | >; | ||
106 | }; | ||
107 | }; | ||
diff --git a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt index 2240ac09f6ba..ec42935f3908 100644 --- a/Documentation/devicetree/bindings/mtd/fsmc-nand.txt +++ b/Documentation/devicetree/bindings/mtd/fsmc-nand.txt | |||
@@ -1,4 +1,5 @@ | |||
1 | * FSMC NAND | 1 | ST Microelectronics Flexible Static Memory Controller (FSMC) |
2 | NAND Interface | ||
2 | 3 | ||
3 | Required properties: | 4 | Required properties: |
4 | - compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand" | 5 | - compatible : "st,spear600-fsmc-nand", "stericsson,fsmc-nand" |
@@ -9,6 +10,26 @@ Optional properties: | |||
9 | - bank-width : Width (in bytes) of the device. If not present, the width | 10 | - bank-width : Width (in bytes) of the device. If not present, the width |
10 | defaults to 1 byte | 11 | defaults to 1 byte |
11 | - nand-skip-bbtscan: Indicates the the BBT scanning should be skipped | 12 | - nand-skip-bbtscan: Indicates the the BBT scanning should be skipped |
13 | - timings: array of 6 bytes for NAND timings. The meanings of these bytes | ||
14 | are: | ||
15 | byte 0 TCLR : CLE to RE delay in number of AHB clock cycles, only 4 bits | ||
16 | are valid. Zero means one clockcycle, 15 means 16 clock | ||
17 | cycles. | ||
18 | byte 1 TAR : ALE to RE delay, 4 bits are valid. Same format as TCLR. | ||
19 | byte 2 THIZ : number of HCLK clock cycles during which the data bus is | ||
20 | kept in Hi-Z (tristate) after the start of a write access. | ||
21 | Only valid for write transactions. Zero means zero cycles, | ||
22 | 255 means 255 cycles. | ||
23 | byte 3 THOLD : number of HCLK clock cycles to hold the address (and data | ||
24 | when writing) after the command deassertation. Zero means | ||
25 | one cycle, 255 means 256 cycles. | ||
26 | byte 4 TWAIT : number of HCLK clock cycles to assert the command to the | ||
27 | NAND flash in response to SMWAITn. Zero means 1 cycle, | ||
28 | 255 means 256 cycles. | ||
29 | byte 5 TSET : number of HCLK clock cycles to assert the address before the | ||
30 | command is asserted. Zero means one cycle, 255 means 256 | ||
31 | cycles. | ||
32 | - bank: default NAND bank to use (0-3 are valid, 0 is the default). | ||
12 | 33 | ||
13 | Example: | 34 | Example: |
14 | 35 | ||
@@ -24,6 +45,8 @@ Example: | |||
24 | 45 | ||
25 | bank-width = <1>; | 46 | bank-width = <1>; |
26 | nand-skip-bbtscan; | 47 | nand-skip-bbtscan; |
48 | timings = /bits/ 8 <0 0 0 2 3 0>; | ||
49 | bank = <1>; | ||
27 | 50 | ||
28 | partition@0 { | 51 | partition@0 { |
29 | ... | 52 | ... |
diff --git a/Documentation/devicetree/bindings/mtd/partition.txt b/Documentation/devicetree/bindings/mtd/partition.txt index 9315ac96b49b..8e5557da1955 100644 --- a/Documentation/devicetree/bindings/mtd/partition.txt +++ b/Documentation/devicetree/bindings/mtd/partition.txt | |||
@@ -4,6 +4,7 @@ Partitions can be represented by sub-nodes of an mtd device. This can be used | |||
4 | on platforms which have strong conventions about which portions of a flash are | 4 | on platforms which have strong conventions about which portions of a flash are |
5 | used for what purposes, but which don't use an on-flash partition table such | 5 | used for what purposes, but which don't use an on-flash partition table such |
6 | as RedBoot. | 6 | as RedBoot. |
7 | NOTE: if the sub-node has a compatible string, then it is not a partition. | ||
7 | 8 | ||
8 | #address-cells & #size-cells must both be present in the mtd device. There are | 9 | #address-cells & #size-cells must both be present in the mtd device. There are |
9 | two valid values for both: | 10 | two valid values for both: |
diff --git a/Documentation/devicetree/bindings/net/can/atmel-can.txt b/Documentation/devicetree/bindings/net/can/atmel-can.txt index 72cf0c5daff4..14e52a0d86ec 100644 --- a/Documentation/devicetree/bindings/net/can/atmel-can.txt +++ b/Documentation/devicetree/bindings/net/can/atmel-can.txt | |||
@@ -8,7 +8,7 @@ Required properties: | |||
8 | Example: | 8 | Example: |
9 | 9 | ||
10 | can0: can@f000c000 { | 10 | can0: can@f000c000 { |
11 | compatbile = "atmel,at91sam9x5-can"; | 11 | compatible = "atmel,at91sam9x5-can"; |
12 | reg = <0xf000c000 0x300>; | 12 | reg = <0xf000c000 0x300>; |
13 | interrupts = <40 4 5> | 13 | interrupts = <40 4 5> |
14 | }; | 14 | }; |
diff --git a/Documentation/devicetree/bindings/net/can/sja1000.txt b/Documentation/devicetree/bindings/net/can/sja1000.txt index c2dbcec0ee31..f2105a47ec87 100644 --- a/Documentation/devicetree/bindings/net/can/sja1000.txt +++ b/Documentation/devicetree/bindings/net/can/sja1000.txt | |||
@@ -37,7 +37,7 @@ Optional properties: | |||
37 | If not specified or if the specified value is 0, the CLKOUT pin | 37 | If not specified or if the specified value is 0, the CLKOUT pin |
38 | will be disabled. | 38 | will be disabled. |
39 | 39 | ||
40 | - nxp,no-comparator-bypass : Allows to disable the CAN input comperator. | 40 | - nxp,no-comparator-bypass : Allows to disable the CAN input comparator. |
41 | 41 | ||
42 | For further information, please have a look to the SJA1000 data sheet. | 42 | For further information, please have a look to the SJA1000 data sheet. |
43 | 43 | ||
diff --git a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt index 2c6be0377f55..d2ea4605d078 100644 --- a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt +++ b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt | |||
@@ -86,6 +86,7 @@ General Properties: | |||
86 | 86 | ||
87 | Clock Properties: | 87 | Clock Properties: |
88 | 88 | ||
89 | - fsl,cksel Timer reference clock source. | ||
89 | - fsl,tclk-period Timer reference clock period in nanoseconds. | 90 | - fsl,tclk-period Timer reference clock period in nanoseconds. |
90 | - fsl,tmr-prsc Prescaler, divides the output clock. | 91 | - fsl,tmr-prsc Prescaler, divides the output clock. |
91 | - fsl,tmr-add Frequency compensation value. | 92 | - fsl,tmr-add Frequency compensation value. |
@@ -97,7 +98,7 @@ Clock Properties: | |||
97 | clock. You must choose these carefully for the clock to work right. | 98 | clock. You must choose these carefully for the clock to work right. |
98 | Here is how to figure good values: | 99 | Here is how to figure good values: |
99 | 100 | ||
100 | TimerOsc = system clock MHz | 101 | TimerOsc = selected reference clock MHz |
101 | tclk_period = desired clock period nanoseconds | 102 | tclk_period = desired clock period nanoseconds |
102 | NominalFreq = 1000 / tclk_period MHz | 103 | NominalFreq = 1000 / tclk_period MHz |
103 | FreqDivRatio = TimerOsc / NominalFreq (must be greater that 1.0) | 104 | FreqDivRatio = TimerOsc / NominalFreq (must be greater that 1.0) |
@@ -114,6 +115,20 @@ Clock Properties: | |||
114 | Pulse Per Second (PPS) signal, since this will be offered to the PPS | 115 | Pulse Per Second (PPS) signal, since this will be offered to the PPS |
115 | subsystem to synchronize the Linux clock. | 116 | subsystem to synchronize the Linux clock. |
116 | 117 | ||
118 | Reference clock source is determined by the value, which is holded | ||
119 | in CKSEL bits in TMR_CTRL register. "fsl,cksel" property keeps the | ||
120 | value, which will be directly written in those bits, that is why, | ||
121 | according to reference manual, the next clock sources can be used: | ||
122 | |||
123 | <0> - external high precision timer reference clock (TSEC_TMR_CLK | ||
124 | input is used for this purpose); | ||
125 | <1> - eTSEC system clock; | ||
126 | <2> - eTSEC1 transmit clock; | ||
127 | <3> - RTC clock input. | ||
128 | |||
129 | When this attribute is not used, eTSEC system clock will serve as | ||
130 | IEEE 1588 timer reference clock. | ||
131 | |||
117 | Example: | 132 | Example: |
118 | 133 | ||
119 | ptp_clock@24E00 { | 134 | ptp_clock@24E00 { |
@@ -121,6 +136,7 @@ Example: | |||
121 | reg = <0x24E00 0xB0>; | 136 | reg = <0x24E00 0xB0>; |
122 | interrupts = <12 0x8 13 0x8>; | 137 | interrupts = <12 0x8 13 0x8>; |
123 | interrupt-parent = < &ipic >; | 138 | interrupt-parent = < &ipic >; |
139 | fsl,cksel = <1>; | ||
124 | fsl,tclk-period = <10>; | 140 | fsl,tclk-period = <10>; |
125 | fsl,tmr-prsc = <100>; | 141 | fsl,tmr-prsc = <100>; |
126 | fsl,tmr-add = <0x999999A4>; | 142 | fsl,tmr-add = <0x999999A4>; |
diff --git a/Documentation/devicetree/bindings/net/micrel-ksz9021.txt b/Documentation/devicetree/bindings/net/micrel-ksz9021.txt new file mode 100644 index 000000000000..997a63f1aea1 --- /dev/null +++ b/Documentation/devicetree/bindings/net/micrel-ksz9021.txt | |||
@@ -0,0 +1,49 @@ | |||
1 | Micrel KSZ9021 Gigabit Ethernet PHY | ||
2 | |||
3 | Some boards require special tuning values, particularly when it comes to | ||
4 | clock delays. You can specify clock delay values by adding | ||
5 | micrel-specific properties to an Ethernet OF device node. | ||
6 | |||
7 | All skew control options are specified in picoseconds. The minimum | ||
8 | value is 0, and the maximum value is 3000. | ||
9 | |||
10 | Optional properties: | ||
11 | - rxc-skew-ps : Skew control of RXC pad | ||
12 | - rxdv-skew-ps : Skew control of RX CTL pad | ||
13 | - txc-skew-ps : Skew control of TXC pad | ||
14 | - txen-skew-ps : Skew control of TX_CTL pad | ||
15 | - rxd0-skew-ps : Skew control of RX data 0 pad | ||
16 | - rxd1-skew-ps : Skew control of RX data 1 pad | ||
17 | - rxd2-skew-ps : Skew control of RX data 2 pad | ||
18 | - rxd3-skew-ps : Skew control of RX data 3 pad | ||
19 | - txd0-skew-ps : Skew control of TX data 0 pad | ||
20 | - txd1-skew-ps : Skew control of TX data 1 pad | ||
21 | - txd2-skew-ps : Skew control of TX data 2 pad | ||
22 | - txd3-skew-ps : Skew control of TX data 3 pad | ||
23 | |||
24 | Examples: | ||
25 | |||
26 | /* Attach to an Ethernet device with autodetected PHY */ | ||
27 | &enet { | ||
28 | rxc-skew-ps = <3000>; | ||
29 | rxdv-skew-ps = <0>; | ||
30 | txc-skew-ps = <3000>; | ||
31 | txen-skew-ps = <0>; | ||
32 | status = "okay"; | ||
33 | }; | ||
34 | |||
35 | /* Attach to an explicitly-specified PHY */ | ||
36 | mdio { | ||
37 | phy0: ethernet-phy@0 { | ||
38 | rxc-skew-ps = <3000>; | ||
39 | rxdv-skew-ps = <0>; | ||
40 | txc-skew-ps = <3000>; | ||
41 | txen-skew-ps = <0>; | ||
42 | reg = <0>; | ||
43 | }; | ||
44 | }; | ||
45 | ethernet@70000 { | ||
46 | status = "okay"; | ||
47 | phy = <&phy0>; | ||
48 | phy-mode = "rgmii-id"; | ||
49 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/moxa,moxart-mac.txt b/Documentation/devicetree/bindings/net/moxa,moxart-mac.txt new file mode 100644 index 000000000000..583418b2c127 --- /dev/null +++ b/Documentation/devicetree/bindings/net/moxa,moxart-mac.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | MOXA ART Ethernet Controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : Must be "moxa,moxart-mac" | ||
6 | - reg : Should contain register location and length | ||
7 | - interrupts : Should contain the mac interrupt number | ||
8 | |||
9 | Example: | ||
10 | |||
11 | mac0: mac@90900000 { | ||
12 | compatible = "moxa,moxart-mac"; | ||
13 | reg = <0x90900000 0x100>; | ||
14 | interrupts = <25 0>; | ||
15 | }; | ||
16 | |||
17 | mac1: mac@92000000 { | ||
18 | compatible = "moxa,moxart-mac"; | ||
19 | reg = <0x92000000 0x100>; | ||
20 | interrupts = <27 0>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt index 261c563b5f06..eba0e5e59ebe 100644 --- a/Documentation/devicetree/bindings/net/stmmac.txt +++ b/Documentation/devicetree/bindings/net/stmmac.txt | |||
@@ -22,6 +22,11 @@ Required properties: | |||
22 | - snps,pbl Programmable Burst Length | 22 | - snps,pbl Programmable Burst Length |
23 | - snps,fixed-burst Program the DMA to use the fixed burst mode | 23 | - snps,fixed-burst Program the DMA to use the fixed burst mode |
24 | - snps,mixed-burst Program the DMA to use the mixed burst mode | 24 | - snps,mixed-burst Program the DMA to use the mixed burst mode |
25 | - snps,force_thresh_dma_mode Force DMA to use the threshold mode for | ||
26 | both tx and rx | ||
27 | - snps,force_sf_dma_mode Force DMA to use the Store and Forward | ||
28 | mode for both tx and rx. This flag is | ||
29 | ignored if force_thresh_dma_mode is set. | ||
25 | 30 | ||
26 | Optional properties: | 31 | Optional properties: |
27 | - mac-address: 6 bytes, mac address | 32 | - mac-address: 6 bytes, mac address |
diff --git a/Documentation/devicetree/bindings/pci/designware-pcie.txt b/Documentation/devicetree/bindings/pci/designware-pcie.txt index e2371f5cdebe..e216af356847 100644 --- a/Documentation/devicetree/bindings/pci/designware-pcie.txt +++ b/Documentation/devicetree/bindings/pci/designware-pcie.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | * Synopsis Designware PCIe interface | 1 | * Synopsys Designware PCIe interface |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should contain "snps,dw-pcie" to identify the | 4 | - compatible: should contain "snps,dw-pcie" to identify the |
@@ -18,6 +18,7 @@ Required properties: | |||
18 | - interrupt-map-mask and interrupt-map: standard PCI properties | 18 | - interrupt-map-mask and interrupt-map: standard PCI properties |
19 | to define the mapping of the PCIe interface to interrupt | 19 | to define the mapping of the PCIe interface to interrupt |
20 | numbers. | 20 | numbers. |
21 | - num-lanes: number of lanes to use | ||
21 | - reset-gpio: gpio pin number of power good signal | 22 | - reset-gpio: gpio pin number of power good signal |
22 | 23 | ||
23 | Example: | 24 | Example: |
@@ -41,6 +42,7 @@ SoC specific DT Entry: | |||
41 | #interrupt-cells = <1>; | 42 | #interrupt-cells = <1>; |
42 | interrupt-map-mask = <0 0 0 0>; | 43 | interrupt-map-mask = <0 0 0 0>; |
43 | interrupt-map = <0x0 0 &gic 53>; | 44 | interrupt-map = <0x0 0 &gic 53>; |
45 | num-lanes = <4>; | ||
44 | }; | 46 | }; |
45 | 47 | ||
46 | pcie@2a0000 { | 48 | pcie@2a0000 { |
@@ -60,6 +62,7 @@ SoC specific DT Entry: | |||
60 | #interrupt-cells = <1>; | 62 | #interrupt-cells = <1>; |
61 | interrupt-map-mask = <0 0 0 0>; | 63 | interrupt-map-mask = <0 0 0 0>; |
62 | interrupt-map = <0x0 0 &gic 56>; | 64 | interrupt-map = <0x0 0 &gic 56>; |
65 | num-lanes = <4>; | ||
63 | }; | 66 | }; |
64 | 67 | ||
65 | Board specific DT Entry: | 68 | Board specific DT Entry: |
diff --git a/Documentation/devicetree/bindings/pci/mvebu-pci.txt b/Documentation/devicetree/bindings/pci/mvebu-pci.txt index f8d405897a94..08c716b2c6b6 100644 --- a/Documentation/devicetree/bindings/pci/mvebu-pci.txt +++ b/Documentation/devicetree/bindings/pci/mvebu-pci.txt | |||
@@ -1,20 +1,62 @@ | |||
1 | * Marvell EBU PCIe interfaces | 1 | * Marvell EBU PCIe interfaces |
2 | 2 | ||
3 | Mandatory properties: | 3 | Mandatory properties: |
4 | |||
4 | - compatible: one of the following values: | 5 | - compatible: one of the following values: |
5 | marvell,armada-370-pcie | 6 | marvell,armada-370-pcie |
6 | marvell,armada-xp-pcie | 7 | marvell,armada-xp-pcie |
8 | marvell,dove-pcie | ||
7 | marvell,kirkwood-pcie | 9 | marvell,kirkwood-pcie |
8 | - #address-cells, set to <3> | 10 | - #address-cells, set to <3> |
9 | - #size-cells, set to <2> | 11 | - #size-cells, set to <2> |
10 | - #interrupt-cells, set to <1> | 12 | - #interrupt-cells, set to <1> |
11 | - bus-range: PCI bus numbers covered | 13 | - bus-range: PCI bus numbers covered |
12 | - device_type, set to "pci" | 14 | - device_type, set to "pci" |
13 | - ranges: ranges for the PCI memory and I/O regions, as well as the | 15 | - ranges: ranges describing the MMIO registers to control the PCIe |
14 | MMIO registers to control the PCIe interfaces. | 16 | interfaces, and ranges describing the MBus windows needed to access |
17 | the memory and I/O regions of each PCIe interface. | ||
18 | - msi-parent: Link to the hardware entity that serves as the Message | ||
19 | Signaled Interrupt controller for this PCI controller. | ||
20 | |||
21 | The ranges describing the MMIO registers have the following layout: | ||
22 | |||
23 | 0x82000000 0 r MBUS_ID(0xf0, 0x01) r 0 s | ||
24 | |||
25 | where: | ||
26 | |||
27 | * r is a 32-bits value that gives the offset of the MMIO | ||
28 | registers of this PCIe interface, from the base of the internal | ||
29 | registers. | ||
30 | |||
31 | * s is a 32-bits value that give the size of this MMIO | ||
32 | registers area. This range entry translates the '0x82000000 0 r' PCI | ||
33 | address into the 'MBUS_ID(0xf0, 0x01) r' CPU address, which is part | ||
34 | of the internal register window (as identified by MBUS_ID(0xf0, | ||
35 | 0x01)). | ||
36 | |||
37 | The ranges describing the MBus windows have the following layout: | ||
38 | |||
39 | 0x8t000000 s 0 MBUS_ID(w, a) 0 1 0 | ||
40 | |||
41 | where: | ||
42 | |||
43 | * t is the type of the MBus window (as defined by the standard PCI DT | ||
44 | bindings), 1 for I/O and 2 for memory. | ||
15 | 45 | ||
16 | In addition, the Device Tree node must have sub-nodes describing each | 46 | * s is the PCI slot that corresponds to this PCIe interface |
47 | |||
48 | * w is the 'target ID' value for the MBus window | ||
49 | |||
50 | * a the 'attribute' value for the MBus window. | ||
51 | |||
52 | Since the location and size of the different MBus windows is not fixed in | ||
53 | hardware, and only determined in runtime, those ranges cover the full first | ||
54 | 4 GB of the physical address space, and do not translate into a valid CPU | ||
55 | address. | ||
56 | |||
57 | In addition, the device tree node must have sub-nodes describing each | ||
17 | PCIe interface, having the following mandatory properties: | 58 | PCIe interface, having the following mandatory properties: |
59 | |||
18 | - reg: used only for interrupt mapping, so only the first four bytes | 60 | - reg: used only for interrupt mapping, so only the first four bytes |
19 | are used to refer to the correct bus number and device number. | 61 | are used to refer to the correct bus number and device number. |
20 | - assigned-addresses: reference to the MMIO registers used to control | 62 | - assigned-addresses: reference to the MMIO registers used to control |
@@ -26,7 +68,8 @@ PCIe interface, having the following mandatory properties: | |||
26 | - #address-cells, set to <3> | 68 | - #address-cells, set to <3> |
27 | - #size-cells, set to <2> | 69 | - #size-cells, set to <2> |
28 | - #interrupt-cells, set to <1> | 70 | - #interrupt-cells, set to <1> |
29 | - ranges, empty property. | 71 | - ranges, translating the MBus windows ranges of the parent node into |
72 | standard PCI addresses. | ||
30 | - interrupt-map-mask and interrupt-map, standard PCI properties to | 73 | - interrupt-map-mask and interrupt-map, standard PCI properties to |
31 | define the mapping of the PCIe interface to interrupt numbers. | 74 | define the mapping of the PCIe interface to interrupt numbers. |
32 | 75 | ||
@@ -34,6 +77,8 @@ and the following optional properties: | |||
34 | - marvell,pcie-lane: the physical PCIe lane number, for ports having | 77 | - marvell,pcie-lane: the physical PCIe lane number, for ports having |
35 | multiple lanes. If this property is not found, we assume that the | 78 | multiple lanes. If this property is not found, we assume that the |
36 | value is 0. | 79 | value is 0. |
80 | - reset-gpios: optional gpio to PERST# | ||
81 | - reset-delay-us: delay in us to wait after reset de-assertion | ||
37 | 82 | ||
38 | Example: | 83 | Example: |
39 | 84 | ||
@@ -46,44 +91,73 @@ pcie-controller { | |||
46 | #size-cells = <2>; | 91 | #size-cells = <2>; |
47 | 92 | ||
48 | bus-range = <0x00 0xff>; | 93 | bus-range = <0x00 0xff>; |
94 | msi-parent = <&mpic>; | ||
49 | 95 | ||
50 | ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ | 96 | ranges = |
51 | 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */ | 97 | <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 /* Port 0.0 registers */ |
52 | 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */ | 98 | 0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000 /* Port 2.0 registers */ |
53 | 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */ | 99 | 0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 /* Port 0.1 registers */ |
54 | 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */ | 100 | 0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000 /* Port 0.2 registers */ |
55 | 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */ | 101 | 0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000 /* Port 0.3 registers */ |
56 | 0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */ | 102 | 0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000 /* Port 1.0 registers */ |
57 | 0x82000000 0 0xd0084000 0xd0084000 0 0x00002000 /* Port 1.1 registers */ | 103 | 0x82000000 0 0x82000 MBUS_ID(0xf0, 0x01) 0x82000 0 0x00002000 /* Port 3.0 registers */ |
58 | 0x82000000 0 0xd0088000 0xd0088000 0 0x00002000 /* Port 1.2 registers */ | 104 | 0x82000000 0 0x84000 MBUS_ID(0xf0, 0x01) 0x84000 0 0x00002000 /* Port 1.1 registers */ |
59 | 0x82000000 0 0xd008c000 0xd008c000 0 0x00002000 /* Port 1.3 registers */ | 105 | 0x82000000 0 0x88000 MBUS_ID(0xf0, 0x01) 0x88000 0 0x00002000 /* Port 1.2 registers */ |
60 | 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ | 106 | 0x82000000 0 0x8c000 MBUS_ID(0xf0, 0x01) 0x8c000 0 0x00002000 /* Port 1.3 registers */ |
61 | 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ | 107 | 0x82000000 0x1 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */ |
108 | 0x81000000 0x1 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO */ | ||
109 | 0x82000000 0x2 0 MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 0.1 MEM */ | ||
110 | 0x81000000 0x2 0 MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 0.1 IO */ | ||
111 | 0x82000000 0x3 0 MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 0.2 MEM */ | ||
112 | 0x81000000 0x3 0 MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 0.2 IO */ | ||
113 | 0x82000000 0x4 0 MBUS_ID(0x04, 0x78) 0 1 0 /* Port 0.3 MEM */ | ||
114 | 0x81000000 0x4 0 MBUS_ID(0x04, 0x70) 0 1 0 /* Port 0.3 IO */ | ||
115 | |||
116 | 0x82000000 0x5 0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 MEM */ | ||
117 | 0x81000000 0x5 0 MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 1.0 IO */ | ||
118 | 0x82000000 0x6 0 MBUS_ID(0x08, 0xd8) 0 1 0 /* Port 1.1 MEM */ | ||
119 | 0x81000000 0x6 0 MBUS_ID(0x08, 0xd0) 0 1 0 /* Port 1.1 IO */ | ||
120 | 0x82000000 0x7 0 MBUS_ID(0x08, 0xb8) 0 1 0 /* Port 1.2 MEM */ | ||
121 | 0x81000000 0x7 0 MBUS_ID(0x08, 0xb0) 0 1 0 /* Port 1.2 IO */ | ||
122 | 0x82000000 0x8 0 MBUS_ID(0x08, 0x78) 0 1 0 /* Port 1.3 MEM */ | ||
123 | 0x81000000 0x8 0 MBUS_ID(0x08, 0x70) 0 1 0 /* Port 1.3 IO */ | ||
124 | |||
125 | 0x82000000 0x9 0 MBUS_ID(0x04, 0xf8) 0 1 0 /* Port 2.0 MEM */ | ||
126 | 0x81000000 0x9 0 MBUS_ID(0x04, 0xf0) 0 1 0 /* Port 2.0 IO */ | ||
127 | |||
128 | 0x82000000 0xa 0 MBUS_ID(0x08, 0xf8) 0 1 0 /* Port 3.0 MEM */ | ||
129 | 0x81000000 0xa 0 MBUS_ID(0x08, 0xf0) 0 1 0 /* Port 3.0 IO */>; | ||
62 | 130 | ||
63 | pcie@1,0 { | 131 | pcie@1,0 { |
64 | device_type = "pci"; | 132 | device_type = "pci"; |
65 | assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; | 133 | assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; |
66 | reg = <0x0800 0 0 0 0>; | 134 | reg = <0x0800 0 0 0 0>; |
67 | #address-cells = <3>; | 135 | #address-cells = <3>; |
68 | #size-cells = <2>; | 136 | #size-cells = <2>; |
69 | #interrupt-cells = <1>; | 137 | #interrupt-cells = <1>; |
70 | ranges; | 138 | ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0 |
139 | 0x81000000 0 0 0x81000000 0x1 0 1 0>; | ||
71 | interrupt-map-mask = <0 0 0 0>; | 140 | interrupt-map-mask = <0 0 0 0>; |
72 | interrupt-map = <0 0 0 0 &mpic 58>; | 141 | interrupt-map = <0 0 0 0 &mpic 58>; |
73 | marvell,pcie-port = <0>; | 142 | marvell,pcie-port = <0>; |
74 | marvell,pcie-lane = <0>; | 143 | marvell,pcie-lane = <0>; |
144 | /* low-active PERST# reset on GPIO 25 */ | ||
145 | reset-gpios = <&gpio0 25 1>; | ||
146 | /* wait 20ms for device settle after reset deassertion */ | ||
147 | reset-delay-us = <20000>; | ||
75 | clocks = <&gateclk 5>; | 148 | clocks = <&gateclk 5>; |
76 | status = "disabled"; | 149 | status = "disabled"; |
77 | }; | 150 | }; |
78 | 151 | ||
79 | pcie@2,0 { | 152 | pcie@2,0 { |
80 | device_type = "pci"; | 153 | device_type = "pci"; |
81 | assigned-addresses = <0x82001000 0 0xd0044000 0 0x2000>; | 154 | assigned-addresses = <0x82001000 0 0x44000 0 0x2000>; |
82 | reg = <0x1000 0 0 0 0>; | 155 | reg = <0x1000 0 0 0 0>; |
83 | #address-cells = <3>; | 156 | #address-cells = <3>; |
84 | #size-cells = <2>; | 157 | #size-cells = <2>; |
85 | #interrupt-cells = <1>; | 158 | #interrupt-cells = <1>; |
86 | ranges; | 159 | ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0 |
160 | 0x81000000 0 0 0x81000000 0x2 0 1 0>; | ||
87 | interrupt-map-mask = <0 0 0 0>; | 161 | interrupt-map-mask = <0 0 0 0>; |
88 | interrupt-map = <0 0 0 0 &mpic 59>; | 162 | interrupt-map = <0 0 0 0 &mpic 59>; |
89 | marvell,pcie-port = <0>; | 163 | marvell,pcie-port = <0>; |
@@ -94,12 +168,13 @@ pcie-controller { | |||
94 | 168 | ||
95 | pcie@3,0 { | 169 | pcie@3,0 { |
96 | device_type = "pci"; | 170 | device_type = "pci"; |
97 | assigned-addresses = <0x82001800 0 0xd0048000 0 0x2000>; | 171 | assigned-addresses = <0x82001800 0 0x48000 0 0x2000>; |
98 | reg = <0x1800 0 0 0 0>; | 172 | reg = <0x1800 0 0 0 0>; |
99 | #address-cells = <3>; | 173 | #address-cells = <3>; |
100 | #size-cells = <2>; | 174 | #size-cells = <2>; |
101 | #interrupt-cells = <1>; | 175 | #interrupt-cells = <1>; |
102 | ranges; | 176 | ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0 |
177 | 0x81000000 0 0 0x81000000 0x3 0 1 0>; | ||
103 | interrupt-map-mask = <0 0 0 0>; | 178 | interrupt-map-mask = <0 0 0 0>; |
104 | interrupt-map = <0 0 0 0 &mpic 60>; | 179 | interrupt-map = <0 0 0 0 &mpic 60>; |
105 | marvell,pcie-port = <0>; | 180 | marvell,pcie-port = <0>; |
@@ -110,12 +185,13 @@ pcie-controller { | |||
110 | 185 | ||
111 | pcie@4,0 { | 186 | pcie@4,0 { |
112 | device_type = "pci"; | 187 | device_type = "pci"; |
113 | assigned-addresses = <0x82002000 0 0xd004c000 0 0x2000>; | 188 | assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>; |
114 | reg = <0x2000 0 0 0 0>; | 189 | reg = <0x2000 0 0 0 0>; |
115 | #address-cells = <3>; | 190 | #address-cells = <3>; |
116 | #size-cells = <2>; | 191 | #size-cells = <2>; |
117 | #interrupt-cells = <1>; | 192 | #interrupt-cells = <1>; |
118 | ranges; | 193 | ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0 |
194 | 0x81000000 0 0 0x81000000 0x4 0 1 0>; | ||
119 | interrupt-map-mask = <0 0 0 0>; | 195 | interrupt-map-mask = <0 0 0 0>; |
120 | interrupt-map = <0 0 0 0 &mpic 61>; | 196 | interrupt-map = <0 0 0 0 &mpic 61>; |
121 | marvell,pcie-port = <0>; | 197 | marvell,pcie-port = <0>; |
@@ -126,12 +202,13 @@ pcie-controller { | |||
126 | 202 | ||
127 | pcie@5,0 { | 203 | pcie@5,0 { |
128 | device_type = "pci"; | 204 | device_type = "pci"; |
129 | assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>; | 205 | assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; |
130 | reg = <0x2800 0 0 0 0>; | 206 | reg = <0x2800 0 0 0 0>; |
131 | #address-cells = <3>; | 207 | #address-cells = <3>; |
132 | #size-cells = <2>; | 208 | #size-cells = <2>; |
133 | #interrupt-cells = <1>; | 209 | #interrupt-cells = <1>; |
134 | ranges; | 210 | ranges = <0x82000000 0 0 0x82000000 0x5 0 1 0 |
211 | 0x81000000 0 0 0x81000000 0x5 0 1 0>; | ||
135 | interrupt-map-mask = <0 0 0 0>; | 212 | interrupt-map-mask = <0 0 0 0>; |
136 | interrupt-map = <0 0 0 0 &mpic 62>; | 213 | interrupt-map = <0 0 0 0 &mpic 62>; |
137 | marvell,pcie-port = <1>; | 214 | marvell,pcie-port = <1>; |
@@ -142,12 +219,13 @@ pcie-controller { | |||
142 | 219 | ||
143 | pcie@6,0 { | 220 | pcie@6,0 { |
144 | device_type = "pci"; | 221 | device_type = "pci"; |
145 | assigned-addresses = <0x82003000 0 0xd0084000 0 0x2000>; | 222 | assigned-addresses = <0x82003000 0 0x84000 0 0x2000>; |
146 | reg = <0x3000 0 0 0 0>; | 223 | reg = <0x3000 0 0 0 0>; |
147 | #address-cells = <3>; | 224 | #address-cells = <3>; |
148 | #size-cells = <2>; | 225 | #size-cells = <2>; |
149 | #interrupt-cells = <1>; | 226 | #interrupt-cells = <1>; |
150 | ranges; | 227 | ranges = <0x82000000 0 0 0x82000000 0x6 0 1 0 |
228 | 0x81000000 0 0 0x81000000 0x6 0 1 0>; | ||
151 | interrupt-map-mask = <0 0 0 0>; | 229 | interrupt-map-mask = <0 0 0 0>; |
152 | interrupt-map = <0 0 0 0 &mpic 63>; | 230 | interrupt-map = <0 0 0 0 &mpic 63>; |
153 | marvell,pcie-port = <1>; | 231 | marvell,pcie-port = <1>; |
@@ -158,12 +236,13 @@ pcie-controller { | |||
158 | 236 | ||
159 | pcie@7,0 { | 237 | pcie@7,0 { |
160 | device_type = "pci"; | 238 | device_type = "pci"; |
161 | assigned-addresses = <0x82003800 0 0xd0088000 0 0x2000>; | 239 | assigned-addresses = <0x82003800 0 0x88000 0 0x2000>; |
162 | reg = <0x3800 0 0 0 0>; | 240 | reg = <0x3800 0 0 0 0>; |
163 | #address-cells = <3>; | 241 | #address-cells = <3>; |
164 | #size-cells = <2>; | 242 | #size-cells = <2>; |
165 | #interrupt-cells = <1>; | 243 | #interrupt-cells = <1>; |
166 | ranges; | 244 | ranges = <0x82000000 0 0 0x82000000 0x7 0 1 0 |
245 | 0x81000000 0 0 0x81000000 0x7 0 1 0>; | ||
167 | interrupt-map-mask = <0 0 0 0>; | 246 | interrupt-map-mask = <0 0 0 0>; |
168 | interrupt-map = <0 0 0 0 &mpic 64>; | 247 | interrupt-map = <0 0 0 0 &mpic 64>; |
169 | marvell,pcie-port = <1>; | 248 | marvell,pcie-port = <1>; |
@@ -174,12 +253,13 @@ pcie-controller { | |||
174 | 253 | ||
175 | pcie@8,0 { | 254 | pcie@8,0 { |
176 | device_type = "pci"; | 255 | device_type = "pci"; |
177 | assigned-addresses = <0x82004000 0 0xd008c000 0 0x2000>; | 256 | assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>; |
178 | reg = <0x4000 0 0 0 0>; | 257 | reg = <0x4000 0 0 0 0>; |
179 | #address-cells = <3>; | 258 | #address-cells = <3>; |
180 | #size-cells = <2>; | 259 | #size-cells = <2>; |
181 | #interrupt-cells = <1>; | 260 | #interrupt-cells = <1>; |
182 | ranges; | 261 | ranges = <0x82000000 0 0 0x82000000 0x8 0 1 0 |
262 | 0x81000000 0 0 0x81000000 0x8 0 1 0>; | ||
183 | interrupt-map-mask = <0 0 0 0>; | 263 | interrupt-map-mask = <0 0 0 0>; |
184 | interrupt-map = <0 0 0 0 &mpic 65>; | 264 | interrupt-map = <0 0 0 0 &mpic 65>; |
185 | marvell,pcie-port = <1>; | 265 | marvell,pcie-port = <1>; |
@@ -187,14 +267,16 @@ pcie-controller { | |||
187 | clocks = <&gateclk 12>; | 267 | clocks = <&gateclk 12>; |
188 | status = "disabled"; | 268 | status = "disabled"; |
189 | }; | 269 | }; |
270 | |||
190 | pcie@9,0 { | 271 | pcie@9,0 { |
191 | device_type = "pci"; | 272 | device_type = "pci"; |
192 | assigned-addresses = <0x82004800 0 0xd0042000 0 0x2000>; | 273 | assigned-addresses = <0x82004800 0 0x42000 0 0x2000>; |
193 | reg = <0x4800 0 0 0 0>; | 274 | reg = <0x4800 0 0 0 0>; |
194 | #address-cells = <3>; | 275 | #address-cells = <3>; |
195 | #size-cells = <2>; | 276 | #size-cells = <2>; |
196 | #interrupt-cells = <1>; | 277 | #interrupt-cells = <1>; |
197 | ranges; | 278 | ranges = <0x82000000 0 0 0x82000000 0x9 0 1 0 |
279 | 0x81000000 0 0 0x81000000 0x9 0 1 0>; | ||
198 | interrupt-map-mask = <0 0 0 0>; | 280 | interrupt-map-mask = <0 0 0 0>; |
199 | interrupt-map = <0 0 0 0 &mpic 99>; | 281 | interrupt-map = <0 0 0 0 &mpic 99>; |
200 | marvell,pcie-port = <2>; | 282 | marvell,pcie-port = <2>; |
@@ -205,12 +287,13 @@ pcie-controller { | |||
205 | 287 | ||
206 | pcie@10,0 { | 288 | pcie@10,0 { |
207 | device_type = "pci"; | 289 | device_type = "pci"; |
208 | assigned-addresses = <0x82005000 0 0xd0082000 0 0x2000>; | 290 | assigned-addresses = <0x82005000 0 0x82000 0 0x2000>; |
209 | reg = <0x5000 0 0 0 0>; | 291 | reg = <0x5000 0 0 0 0>; |
210 | #address-cells = <3>; | 292 | #address-cells = <3>; |
211 | #size-cells = <2>; | 293 | #size-cells = <2>; |
212 | #interrupt-cells = <1>; | 294 | #interrupt-cells = <1>; |
213 | ranges; | 295 | ranges = <0x82000000 0 0 0x82000000 0xa 0 1 0 |
296 | 0x81000000 0 0 0x81000000 0xa 0 1 0>; | ||
214 | interrupt-map-mask = <0 0 0 0>; | 297 | interrupt-map-mask = <0 0 0 0>; |
215 | interrupt-map = <0 0 0 0 &mpic 103>; | 298 | interrupt-map = <0 0 0 0 &mpic 103>; |
216 | marvell,pcie-port = <3>; | 299 | marvell,pcie-port = <3>; |
diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt new file mode 100644 index 000000000000..6b7510775c50 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt | |||
@@ -0,0 +1,163 @@ | |||
1 | NVIDIA Tegra PCIe controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "nvidia,tegra20-pcie" or "nvidia,tegra30-pcie" | ||
5 | - device_type: Must be "pci" | ||
6 | - reg: A list of physical base address and length for each set of controller | ||
7 | registers. Must contain an entry for each entry in the reg-names property. | ||
8 | - reg-names: Must include the following entries: | ||
9 | "pads": PADS registers | ||
10 | "afi": AFI registers | ||
11 | "cs": configuration space region | ||
12 | - interrupts: A list of interrupt outputs of the controller. Must contain an | ||
13 | entry for each entry in the interrupt-names property. | ||
14 | - interrupt-names: Must include the following entries: | ||
15 | "intr": The Tegra interrupt that is asserted for controller interrupts | ||
16 | "msi": The Tegra interrupt that is asserted when an MSI is received | ||
17 | - pex-clk-supply: Supply voltage for internal reference clock | ||
18 | - vdd-supply: Power supply for controller (1.05V) | ||
19 | - avdd-supply: Power supply for controller (1.05V) (not required for Tegra20) | ||
20 | - bus-range: Range of bus numbers associated with this controller | ||
21 | - #address-cells: Address representation for root ports (must be 3) | ||
22 | - cell 0 specifies the bus and device numbers of the root port: | ||
23 | [23:16]: bus number | ||
24 | [15:11]: device number | ||
25 | - cell 1 denotes the upper 32 address bits and should be 0 | ||
26 | - cell 2 contains the lower 32 address bits and is used to translate to the | ||
27 | CPU address space | ||
28 | - #size-cells: Size representation for root ports (must be 2) | ||
29 | - ranges: Describes the translation of addresses for root ports and standard | ||
30 | PCI regions. The entries must be 6 cells each, where the first three cells | ||
31 | correspond to the address as described for the #address-cells property | ||
32 | above, the fourth cell is the physical CPU address to translate to and the | ||
33 | fifth and six cells are as described for the #size-cells property above. | ||
34 | - The first two entries are expected to translate the addresses for the root | ||
35 | port registers, which are referenced by the assigned-addresses property of | ||
36 | the root port nodes (see below). | ||
37 | - The remaining entries setup the mapping for the standard I/O, memory and | ||
38 | prefetchable PCI regions. The first cell determines the type of region | ||
39 | that is setup: | ||
40 | - 0x81000000: I/O memory region | ||
41 | - 0x82000000: non-prefetchable memory region | ||
42 | - 0xc2000000: prefetchable memory region | ||
43 | Please refer to the standard PCI bus binding document for a more detailed | ||
44 | explanation. | ||
45 | - clocks: List of clock inputs of the controller. Must contain an entry for | ||
46 | each entry in the clock-names property. | ||
47 | - clock-names: Must include the following entries: | ||
48 | "pex": The Tegra clock of that name | ||
49 | "afi": The Tegra clock of that name | ||
50 | "pcie_xclk": The Tegra clock of that name | ||
51 | "pll_e": The Tegra clock of that name | ||
52 | "cml": The Tegra clock of that name (not required for Tegra20) | ||
53 | |||
54 | Root ports are defined as subnodes of the PCIe controller node. | ||
55 | |||
56 | Required properties: | ||
57 | - device_type: Must be "pci" | ||
58 | - assigned-addresses: Address and size of the port configuration registers | ||
59 | - reg: PCI bus address of the root port | ||
60 | - #address-cells: Must be 3 | ||
61 | - #size-cells: Must be 2 | ||
62 | - ranges: Sub-ranges distributed from the PCIe controller node. An empty | ||
63 | property is sufficient. | ||
64 | - nvidia,num-lanes: Number of lanes to use for this port. Valid combinations | ||
65 | are: | ||
66 | - Root port 0 uses 4 lanes, root port 1 is unused. | ||
67 | - Both root ports use 2 lanes. | ||
68 | |||
69 | Example: | ||
70 | |||
71 | SoC DTSI: | ||
72 | |||
73 | pcie-controller { | ||
74 | compatible = "nvidia,tegra20-pcie"; | ||
75 | device_type = "pci"; | ||
76 | reg = <0x80003000 0x00000800 /* PADS registers */ | ||
77 | 0x80003800 0x00000200 /* AFI registers */ | ||
78 | 0x90000000 0x10000000>; /* configuration space */ | ||
79 | reg-names = "pads", "afi", "cs"; | ||
80 | interrupts = <0 98 0x04 /* controller interrupt */ | ||
81 | 0 99 0x04>; /* MSI interrupt */ | ||
82 | interrupt-names = "intr", "msi"; | ||
83 | |||
84 | bus-range = <0x00 0xff>; | ||
85 | #address-cells = <3>; | ||
86 | #size-cells = <2>; | ||
87 | |||
88 | ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000 /* port 0 registers */ | ||
89 | 0x82000000 0 0x80001000 0x80001000 0 0x00001000 /* port 1 registers */ | ||
90 | 0x81000000 0 0 0x82000000 0 0x00010000 /* downstream I/O */ | ||
91 | 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */ | ||
92 | 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ | ||
93 | |||
94 | clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>, | ||
95 | <&tegra_car 118>; | ||
96 | clock-names = "pex", "afi", "pcie_xclk", "pll_e"; | ||
97 | status = "disabled"; | ||
98 | |||
99 | pci@1,0 { | ||
100 | device_type = "pci"; | ||
101 | assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>; | ||
102 | reg = <0x000800 0 0 0 0>; | ||
103 | status = "disabled"; | ||
104 | |||
105 | #address-cells = <3>; | ||
106 | #size-cells = <2>; | ||
107 | |||
108 | ranges; | ||
109 | |||
110 | nvidia,num-lanes = <2>; | ||
111 | }; | ||
112 | |||
113 | pci@2,0 { | ||
114 | device_type = "pci"; | ||
115 | assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>; | ||
116 | reg = <0x001000 0 0 0 0>; | ||
117 | status = "disabled"; | ||
118 | |||
119 | #address-cells = <3>; | ||
120 | #size-cells = <2>; | ||
121 | |||
122 | ranges; | ||
123 | |||
124 | nvidia,num-lanes = <2>; | ||
125 | }; | ||
126 | }; | ||
127 | |||
128 | |||
129 | Board DTS: | ||
130 | |||
131 | pcie-controller { | ||
132 | status = "okay"; | ||
133 | |||
134 | vdd-supply = <&pci_vdd_reg>; | ||
135 | pex-clk-supply = <&pci_clk_reg>; | ||
136 | |||
137 | /* root port 00:01.0 */ | ||
138 | pci@1,0 { | ||
139 | status = "okay"; | ||
140 | |||
141 | /* bridge 01:00.0 (optional) */ | ||
142 | pci@0,0 { | ||
143 | reg = <0x010000 0 0 0 0>; | ||
144 | |||
145 | #address-cells = <3>; | ||
146 | #size-cells = <2>; | ||
147 | |||
148 | device_type = "pci"; | ||
149 | |||
150 | /* endpoint 02:00.0 */ | ||
151 | pci@0,0 { | ||
152 | reg = <0x020000 0 0 0 0>; | ||
153 | }; | ||
154 | }; | ||
155 | }; | ||
156 | }; | ||
157 | |||
158 | Note that devices on the PCI bus are dynamically discovered using PCI's bus | ||
159 | enumeration and therefore don't need corresponding device nodes in DT. However | ||
160 | if a device on the PCI bus provides a non-probeable bus such as I2C or SPI, | ||
161 | device nodes need to be added in order to allow the bus' children to be | ||
162 | instantiated at the proper location in the operating system's device tree (as | ||
163 | illustrated by the optional nodes in the example above). | ||
diff --git a/Documentation/devicetree/bindings/pci/ralink,rt3883-pci.txt b/Documentation/devicetree/bindings/pci/ralink,rt3883-pci.txt new file mode 100644 index 000000000000..8e0a1eb0acbb --- /dev/null +++ b/Documentation/devicetree/bindings/pci/ralink,rt3883-pci.txt | |||
@@ -0,0 +1,190 @@ | |||
1 | * Mediatek/Ralink RT3883 PCI controller | ||
2 | |||
3 | 1) Main node | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible: must be "ralink,rt3883-pci" | ||
8 | |||
9 | - reg: specifies the physical base address of the controller and | ||
10 | the length of the memory mapped region. | ||
11 | |||
12 | - #address-cells: specifies the number of cells needed to encode an | ||
13 | address. The value must be 1. | ||
14 | |||
15 | - #size-cells: specifies the number of cells used to represent the size | ||
16 | of an address. The value must be 1. | ||
17 | |||
18 | - ranges: specifies the translation between child address space and parent | ||
19 | address space | ||
20 | |||
21 | Optional properties: | ||
22 | |||
23 | - status: indicates the operational status of the device. | ||
24 | Value must be either "disabled" or "okay". | ||
25 | |||
26 | 2) Child nodes | ||
27 | |||
28 | The main node must have two child nodes which describes the built-in | ||
29 | interrupt controller and the PCI host bridge. | ||
30 | |||
31 | a) Interrupt controller: | ||
32 | |||
33 | Required properties: | ||
34 | |||
35 | - interrupt-controller: identifies the node as an interrupt controller | ||
36 | |||
37 | - #address-cells: specifies the number of cells needed to encode an | ||
38 | address. The value must be 0. As such, 'interrupt-map' nodes do not | ||
39 | have to specify a parent unit address. | ||
40 | |||
41 | - #interrupt-cells: specifies the number of cells needed to encode an | ||
42 | interrupt source. The value must be 1. | ||
43 | |||
44 | - interrupt-parent: the phandle for the interrupt controller that | ||
45 | services interrupts for this device. | ||
46 | |||
47 | - interrupts: specifies the interrupt source of the parent interrupt | ||
48 | controller. The format of the interrupt specifier depends on the | ||
49 | parent interrupt controller. | ||
50 | |||
51 | b) PCI host bridge: | ||
52 | |||
53 | Required properties: | ||
54 | |||
55 | - #address-cells: specifies the number of cells needed to encode an | ||
56 | address. The value must be 0. | ||
57 | |||
58 | - #size-cells: specifies the number of cells used to represent the size | ||
59 | of an address. The value must be 2. | ||
60 | |||
61 | - #interrupt-cells: specifies the number of cells needed to encode an | ||
62 | interrupt source. The value must be 1. | ||
63 | |||
64 | - device_type: must be "pci" | ||
65 | |||
66 | - bus-range: PCI bus numbers covered | ||
67 | |||
68 | - ranges: specifies the ranges for the PCI memory and I/O regions | ||
69 | |||
70 | - interrupt-map-mask, | ||
71 | - interrupt-map: standard PCI properties to define the mapping of the | ||
72 | PCI interface to interrupt numbers. | ||
73 | |||
74 | The PCI host bridge node migh have additional sub-nodes representing | ||
75 | the onboard PCI devices/PCI slots. Each such sub-node must have the | ||
76 | following mandatory properties: | ||
77 | |||
78 | - reg: used only for interrupt mapping, so only the first four bytes | ||
79 | are used to refer to the correct bus number and device number. | ||
80 | |||
81 | - device_type: must be "pci" | ||
82 | |||
83 | If a given sub-node represents a PCI bridge it must have following | ||
84 | mandatory properties as well: | ||
85 | |||
86 | - #address-cells: must be set to <3> | ||
87 | |||
88 | - #size-cells: must set to <2> | ||
89 | |||
90 | - #interrupt-cells: must be set to <1> | ||
91 | |||
92 | - interrupt-map-mask, | ||
93 | - interrupt-map: standard PCI properties to define the mapping of the | ||
94 | PCI interface to interrupt numbers. | ||
95 | |||
96 | Besides the required properties the sub-nodes may have these optional | ||
97 | properties: | ||
98 | |||
99 | - status: indicates the operational status of the sub-node. | ||
100 | Value must be either "disabled" or "okay". | ||
101 | |||
102 | 3) Example: | ||
103 | |||
104 | a) SoC specific dtsi file: | ||
105 | |||
106 | pci@10140000 { | ||
107 | compatible = "ralink,rt3883-pci"; | ||
108 | reg = <0x10140000 0x20000>; | ||
109 | #address-cells = <1>; | ||
110 | #size-cells = <1>; | ||
111 | ranges; /* direct mapping */ | ||
112 | |||
113 | status = "disabled"; | ||
114 | |||
115 | pciintc: interrupt-controller { | ||
116 | interrupt-controller; | ||
117 | #address-cells = <0>; | ||
118 | #interrupt-cells = <1>; | ||
119 | |||
120 | interrupt-parent = <&cpuintc>; | ||
121 | interrupts = <4>; | ||
122 | }; | ||
123 | |||
124 | host-bridge { | ||
125 | #address-cells = <3>; | ||
126 | #size-cells = <2>; | ||
127 | #interrupt-cells = <1>; | ||
128 | |||
129 | device_type = "pci"; | ||
130 | |||
131 | bus-range = <0 255>; | ||
132 | ranges = < | ||
133 | 0x02000000 0 0x00000000 0x20000000 0 0x10000000 /* pci memory */ | ||
134 | 0x01000000 0 0x00000000 0x10160000 0 0x00010000 /* io space */ | ||
135 | >; | ||
136 | |||
137 | interrupt-map-mask = <0xf800 0 0 7>; | ||
138 | interrupt-map = < | ||
139 | /* IDSEL 17 */ | ||
140 | 0x8800 0 0 1 &pciintc 18 | ||
141 | 0x8800 0 0 2 &pciintc 18 | ||
142 | 0x8800 0 0 3 &pciintc 18 | ||
143 | 0x8800 0 0 4 &pciintc 18 | ||
144 | /* IDSEL 18 */ | ||
145 | 0x9000 0 0 1 &pciintc 19 | ||
146 | 0x9000 0 0 2 &pciintc 19 | ||
147 | 0x9000 0 0 3 &pciintc 19 | ||
148 | 0x9000 0 0 4 &pciintc 19 | ||
149 | >; | ||
150 | |||
151 | pci-bridge@1 { | ||
152 | reg = <0x0800 0 0 0 0>; | ||
153 | device_type = "pci"; | ||
154 | #interrupt-cells = <1>; | ||
155 | #address-cells = <3>; | ||
156 | #size-cells = <2>; | ||
157 | |||
158 | interrupt-map-mask = <0x0 0 0 0>; | ||
159 | interrupt-map = <0x0 0 0 0 &pciintc 20>; | ||
160 | |||
161 | status = "disabled"; | ||
162 | }; | ||
163 | |||
164 | pci-slot@17 { | ||
165 | reg = <0x8800 0 0 0 0>; | ||
166 | device_type = "pci"; | ||
167 | |||
168 | status = "disabled"; | ||
169 | }; | ||
170 | |||
171 | pci-slot@18 { | ||
172 | reg = <0x9000 0 0 0 0>; | ||
173 | device_type = "pci"; | ||
174 | |||
175 | status = "disabled"; | ||
176 | }; | ||
177 | }; | ||
178 | }; | ||
179 | |||
180 | b) Board specific dts file: | ||
181 | |||
182 | pci@10140000 { | ||
183 | status = "okay"; | ||
184 | |||
185 | host-bridge { | ||
186 | pci-bridge@1 { | ||
187 | status = "okay"; | ||
188 | }; | ||
189 | }; | ||
190 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/phy-bindings.txt b/Documentation/devicetree/bindings/phy/phy-bindings.txt new file mode 100644 index 000000000000..8ae844fc0c60 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/phy-bindings.txt | |||
@@ -0,0 +1,66 @@ | |||
1 | This document explains only the device tree data binding. For general | ||
2 | information about PHY subsystem refer to Documentation/phy.txt | ||
3 | |||
4 | PHY device node | ||
5 | =============== | ||
6 | |||
7 | Required Properties: | ||
8 | #phy-cells: Number of cells in a PHY specifier; The meaning of all those | ||
9 | cells is defined by the binding for the phy node. The PHY | ||
10 | provider can use the values in cells to find the appropriate | ||
11 | PHY. | ||
12 | |||
13 | For example: | ||
14 | |||
15 | phys: phy { | ||
16 | compatible = "xxx"; | ||
17 | reg = <...>; | ||
18 | . | ||
19 | . | ||
20 | #phy-cells = <1>; | ||
21 | . | ||
22 | . | ||
23 | }; | ||
24 | |||
25 | That node describes an IP block (PHY provider) that implements 2 different PHYs. | ||
26 | In order to differentiate between these 2 PHYs, an additonal specifier should be | ||
27 | given while trying to get a reference to it. | ||
28 | |||
29 | PHY user node | ||
30 | ============= | ||
31 | |||
32 | Required Properties: | ||
33 | phys : the phandle for the PHY device (used by the PHY subsystem) | ||
34 | phy-names : the names of the PHY corresponding to the PHYs present in the | ||
35 | *phys* phandle | ||
36 | |||
37 | Example 1: | ||
38 | usb1: usb_otg_ss@xxx { | ||
39 | compatible = "xxx"; | ||
40 | reg = <xxx>; | ||
41 | . | ||
42 | . | ||
43 | phys = <&usb2_phy>, <&usb3_phy>; | ||
44 | phy-names = "usb2phy", "usb3phy"; | ||
45 | . | ||
46 | . | ||
47 | }; | ||
48 | |||
49 | This node represents a controller that uses two PHYs, one for usb2 and one for | ||
50 | usb3. | ||
51 | |||
52 | Example 2: | ||
53 | usb2: usb_otg_ss@xxx { | ||
54 | compatible = "xxx"; | ||
55 | reg = <xxx>; | ||
56 | . | ||
57 | . | ||
58 | phys = <&phys 1>; | ||
59 | phy-names = "usbphy"; | ||
60 | . | ||
61 | . | ||
62 | }; | ||
63 | |||
64 | This node represents a controller that uses one of the PHYs of the PHY provider | ||
65 | device defined previously. Note that the phy handle has an additional specifier | ||
66 | "1" to differentiate between the two PHYs. | ||
diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt new file mode 100644 index 000000000000..c0fccaa1671e --- /dev/null +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY | ||
2 | ------------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible : should be "samsung,s5pv210-mipi-video-phy"; | ||
6 | - reg : offset and length of the MIPI DPHY register set; | ||
7 | - #phy-cells : from the generic phy bindings, must be 1; | ||
8 | |||
9 | For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in | ||
10 | the PHY specifier identifies the PHY and its meaning is as follows: | ||
11 | 0 - MIPI CSIS 0, | ||
12 | 1 - MIPI DSIM 0, | ||
13 | 2 - MIPI CSIS 1, | ||
14 | 3 - MIPI DSIM 1. | ||
15 | |||
16 | Samsung EXYNOS SoC series Display Port PHY | ||
17 | ------------------------------------------------- | ||
18 | |||
19 | Required properties: | ||
20 | - compatible : should be "samsung,exynos5250-dp-video-phy"; | ||
21 | - reg : offset and length of the Display Port PHY register set; | ||
22 | - #phy-cells : from the generic PHY bindings, must be 0; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt b/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt new file mode 100644 index 000000000000..2c11866221c2 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt | |||
@@ -0,0 +1,80 @@ | |||
1 | Abilis Systems TB10x pin controller | ||
2 | =================================== | ||
3 | |||
4 | Required properties | ||
5 | ------------------- | ||
6 | |||
7 | - compatible: should be "abilis,tb10x-iomux"; | ||
8 | - reg: should contain the physical address and size of the pin controller's | ||
9 | register range. | ||
10 | |||
11 | |||
12 | Function definitions | ||
13 | -------------------- | ||
14 | |||
15 | Functions are defined (and referenced) by sub-nodes of the pin controller. | ||
16 | Every sub-node defines exactly one function (implying a set of pins). | ||
17 | Every function is associated to one named pin group inside the pin controller | ||
18 | driver and these names are used to associate pin group predefinitions to pin | ||
19 | controller sub-nodes. | ||
20 | |||
21 | Required function definition subnode properties: | ||
22 | - abilis,function: should be set to the name of the function's pin group. | ||
23 | |||
24 | The following pin groups are available: | ||
25 | - GPIO ports: gpioa, gpiob, gpioc, gpiod, gpioe, gpiof, gpiog, | ||
26 | gpioh, gpioi, gpioj, gpiok, gpiol, gpiom, gpion | ||
27 | - Serial TS input ports: mis0, mis1, mis2, mis3, mis4, mis5, mis6, mis7 | ||
28 | - Parallel TS input ports: mip1, mip3, mip5, mip7 | ||
29 | - Serial TS output ports: mos0, mos1, mos2, mos3 | ||
30 | - Parallel TS output port: mop | ||
31 | - CI+ port: ciplus | ||
32 | - CableCard (Mcard) port: mcard | ||
33 | - Smart card ports: stc0, stc1 | ||
34 | - UART ports: uart0, uart1 | ||
35 | - SPI ports: spi1, spi3 | ||
36 | - JTAG: jtag | ||
37 | |||
38 | All other ports of the chip are not multiplexed and thus not managed by this | ||
39 | driver. | ||
40 | |||
41 | |||
42 | GPIO ranges definition | ||
43 | ---------------------- | ||
44 | |||
45 | The named pin groups of GPIO ports can be used to define GPIO ranges as | ||
46 | explained in Documentation/devicetree/bindings/gpio/gpio.txt. | ||
47 | |||
48 | |||
49 | Example | ||
50 | ------- | ||
51 | |||
52 | iomux: iomux@FF10601c { | ||
53 | compatible = "abilis,tb10x-iomux"; | ||
54 | reg = <0xFF10601c 0x4>; | ||
55 | pctl_gpio_a: pctl-gpio-a { | ||
56 | abilis,function = "gpioa"; | ||
57 | }; | ||
58 | pctl_uart0: pctl-uart0 { | ||
59 | abilis,function = "uart0"; | ||
60 | }; | ||
61 | }; | ||
62 | uart@FF100000 { | ||
63 | compatible = "snps,dw-apb-uart"; | ||
64 | reg = <0xFF100000 0x100>; | ||
65 | clock-frequency = <166666666>; | ||
66 | interrupts = <25 1>; | ||
67 | reg-shift = <2>; | ||
68 | reg-io-width = <4>; | ||
69 | pinctrl-names = "default"; | ||
70 | pinctrl-0 = <&pctl_uart0>; | ||
71 | }; | ||
72 | gpioa: gpio@FF140000 { | ||
73 | compatible = "abilis,tb10x-gpio"; | ||
74 | reg = <0xFF140000 0x1000>; | ||
75 | gpio-controller; | ||
76 | #gpio-cells = <2>; | ||
77 | ngpio = <3>; | ||
78 | gpio-ranges = <&iomux 0 0>; | ||
79 | gpio-ranges-group-names = "gpioa"; | ||
80 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt index 648d60eb9fd8..02ab5ab198a4 100644 --- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt | |||
@@ -18,7 +18,7 @@ mode) this pin can work on and the 'config' configures various pad settings | |||
18 | such as pull-up, multi drive, etc. | 18 | such as pull-up, multi drive, etc. |
19 | 19 | ||
20 | Required properties for iomux controller: | 20 | Required properties for iomux controller: |
21 | - compatible: "atmel,at91rm9200-pinctrl" | 21 | - compatible: "atmel,at91rm9200-pinctrl" or "atmel,at91sam9x5-pinctrl" |
22 | - atmel,mux-mask: array of mask (periph per bank) to describe if a pin can be | 22 | - atmel,mux-mask: array of mask (periph per bank) to describe if a pin can be |
23 | configured in this periph mode. All the periph and bank need to be describe. | 23 | configured in this periph mode. All the periph and bank need to be describe. |
24 | 24 | ||
@@ -37,7 +37,7 @@ Bank: 3 (A, B and C) | |||
37 | 0xffffffff 0x7fff3ccf /* pioB */ | 37 | 0xffffffff 0x7fff3ccf /* pioB */ |
38 | 0xffffffff 0x007fffff /* pioC */ | 38 | 0xffffffff 0x007fffff /* pioC */ |
39 | 39 | ||
40 | For each peripheral/bank we will descibe in a u32 if a pin can can be | 40 | For each peripheral/bank we will descibe in a u32 if a pin can be |
41 | configured in it by putting 1 to the pin bit (1 << pin) | 41 | configured in it by putting 1 to the pin bit (1 << pin) |
42 | 42 | ||
43 | Let's take the pioA on peripheral B | 43 | Let's take the pioA on peripheral B |
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt index 3a7caf7a744a..9fde25f1401a 100644 --- a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt | |||
@@ -22,11 +22,12 @@ Required properties for iomux controller: | |||
22 | Please refer to each fsl,<soc>-pinctrl.txt binding doc for supported SoCs. | 22 | Please refer to each fsl,<soc>-pinctrl.txt binding doc for supported SoCs. |
23 | 23 | ||
24 | Required properties for pin configuration node: | 24 | Required properties for pin configuration node: |
25 | - fsl,pins: two integers array, represents a group of pins mux and config | 25 | - fsl,pins: each entry consists of 6 integers and represents the mux and config |
26 | setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a | 26 | setting for one pin. The first 5 integers <mux_reg conf_reg input_reg mux_val |
27 | pin working on a specific function, which consists of a tuple of | 27 | input_val> are specified using a PIN_FUNC_ID macro, which can be found in |
28 | <mux_reg conf_reg input_reg mux_val input_val>. CONFIG is the pad setting | 28 | imx*-pinfunc.h under device tree source folder. The last integer CONFIG is |
29 | value like pull-up on this pin. | 29 | the pad setting value like pull-up on this pin. And that's why fsl,pins entry |
30 | looks like <PIN_FUNC_ID CONFIG> in the example below. | ||
30 | 31 | ||
31 | Bits used for CONFIG: | 32 | Bits used for CONFIG: |
32 | NO_PAD_CTL(1 << 31): indicate this pin does not need config. | 33 | NO_PAD_CTL(1 << 31): indicate this pin does not need config. |
@@ -72,17 +73,18 @@ iomuxc@020e0000 { | |||
72 | /* shared pinctrl settings */ | 73 | /* shared pinctrl settings */ |
73 | usdhc4 { | 74 | usdhc4 { |
74 | pinctrl_usdhc4_1: usdhc4grp-1 { | 75 | pinctrl_usdhc4_1: usdhc4grp-1 { |
75 | fsl,pins = <1386 0x17059 /* MX6Q_PAD_SD4_CMD__USDHC4_CMD */ | 76 | fsl,pins = < |
76 | 1392 0x10059 /* MX6Q_PAD_SD4_CLK__USDHC4_CLK */ | 77 | MX6QDL_PAD_SD4_CMD__SD4_CMD 0x17059 |
77 | 1462 0x17059 /* MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 */ | 78 | MX6QDL_PAD_SD4_CLK__SD4_CLK 0x10059 |
78 | 1470 0x17059 /* MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 */ | 79 | MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059 |
79 | 1478 0x17059 /* MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 */ | 80 | MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059 |
80 | 1486 0x17059 /* MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 */ | 81 | MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059 |
81 | 1493 0x17059 /* MX6Q_PAD_SD4_DAT4__USDHC4_DAT4 */ | 82 | MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059 |
82 | 1501 0x17059 /* MX6Q_PAD_SD4_DAT5__USDHC4_DAT5 */ | 83 | MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17059 |
83 | 1509 0x17059 /* MX6Q_PAD_SD4_DAT6__USDHC4_DAT6 */ | 84 | MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17059 |
84 | 1517 0x17059>; /* MX6Q_PAD_SD4_DAT7__USDHC4_DAT7 */ | 85 | MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17059 |
85 | }; | 86 | MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17059 |
87 | >; | ||
86 | }; | 88 | }; |
87 | .... | 89 | .... |
88 | }; | 90 | }; |
@@ -90,6 +92,3 @@ Refer to the IOMUXC controller chapter in imx6q datasheet, | |||
90 | 0x17059 means enable hysteresis, 47KOhm Pull Up, 50Mhz speed, | 92 | 0x17059 means enable hysteresis, 47KOhm Pull Up, 50Mhz speed, |
91 | 80Ohm driver strength and Fast Slew Rate. | 93 | 80Ohm driver strength and Fast Slew Rate. |
92 | User should refer to each SoC spec to set the correct value. | 94 | User should refer to each SoC spec to set the correct value. |
93 | |||
94 | TODO: when dtc macro support is available, we can change above raw data | ||
95 | to dt macro which can get better readability in dts file. | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt new file mode 100644 index 000000000000..353eca0efbf8 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt | |||
@@ -0,0 +1,99 @@ | |||
1 | * Freescale IMX27 IOMUX Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "fsl,imx27-iomuxc" | ||
5 | |||
6 | The iomuxc driver node should define subnodes containing of pinctrl configuration subnodes. | ||
7 | |||
8 | Required properties for pin configuration node: | ||
9 | - fsl,pins: three integers array, represents a group of pins mux and config | ||
10 | setting. The format is fsl,pins = <PIN MUX_ID CONFIG>. | ||
11 | |||
12 | PIN is an integer between 0 and 0xbf. imx27 has 6 ports with 32 configurable | ||
13 | configurable pins each. PIN is PORT * 32 + PORT_PIN, PORT_PIN is the pin | ||
14 | number on the specific port (between 0 and 31). | ||
15 | |||
16 | MUX_ID is | ||
17 | function + (direction << 2) + (gpio_oconf << 4) + (gpio_iconfa << 8) + (gpio_iconfb << 10) | ||
18 | |||
19 | function value is used to select the pin function. | ||
20 | Possible values: | ||
21 | 0 - Primary function | ||
22 | 1 - Alternate function | ||
23 | 2 - GPIO | ||
24 | Registers: GIUS (GPIO In Use), GPR (General Purpose Register) | ||
25 | |||
26 | direction defines the data direction of the pin. | ||
27 | Possible values: | ||
28 | 0 - Input | ||
29 | 1 - Output | ||
30 | Register: DDIR | ||
31 | |||
32 | gpio_oconf configures the gpio submodule output signal. This does not | ||
33 | have any effect unless GPIO function is selected. A/B/C_IN are output | ||
34 | signals of function blocks A,B and C. Specific function blocks are | ||
35 | described in the reference manual. | ||
36 | Possible values: | ||
37 | 0 - A_IN | ||
38 | 1 - B_IN | ||
39 | 2 - C_IN | ||
40 | 3 - Data Register | ||
41 | Registers: OCR1, OCR2 | ||
42 | |||
43 | gpio_iconfa/b configures the gpio submodule input to functionblocks A and | ||
44 | B. GPIO function should be selected if this is configured. | ||
45 | Possible values: | ||
46 | 0 - GPIO_IN | ||
47 | 1 - Interrupt Status Register | ||
48 | 2 - Pulldown | ||
49 | 3 - Pullup | ||
50 | Registers ICONFA1, ICONFA2, ICONFB1 and ICONFB2 | ||
51 | |||
52 | CONFIG can be 0 or 1, meaning Pullup disable/enable. | ||
53 | |||
54 | |||
55 | |||
56 | Example: | ||
57 | |||
58 | iomuxc: iomuxc@10015000 { | ||
59 | compatible = "fsl,imx27-iomuxc"; | ||
60 | reg = <0x10015000 0x600>; | ||
61 | |||
62 | uart { | ||
63 | pinctrl_uart1: uart-1 { | ||
64 | fsl,pins = < | ||
65 | 0x8c 0x004 0x0 /* UART1_TXD__UART1_TXD */ | ||
66 | 0x8d 0x000 0x0 /* UART1_RXD__UART1_RXD */ | ||
67 | 0x8e 0x004 0x0 /* UART1_CTS__UART1_CTS */ | ||
68 | 0x8f 0x000 0x0 /* UART1_RTS__UART1_RTS */ | ||
69 | >; | ||
70 | }; | ||
71 | |||
72 | ... | ||
73 | }; | ||
74 | }; | ||
75 | |||
76 | |||
77 | For convenience there are macros defined in imx27-pinfunc.h which provide PIN | ||
78 | and MUX_ID. They are structured as MX27_PAD_<Pad name>__<Signal name>. The names | ||
79 | are defined in the i.MX27 reference manual. | ||
80 | |||
81 | The above example using macros: | ||
82 | |||
83 | iomuxc: iomuxc@10015000 { | ||
84 | compatible = "fsl,imx27-iomuxc"; | ||
85 | reg = <0x10015000 0x600>; | ||
86 | |||
87 | uart { | ||
88 | pinctrl_uart1: uart-1 { | ||
89 | fsl,pins = < | ||
90 | MX27_PAD_UART1_TXD__UART1_TXD 0x0 | ||
91 | MX27_PAD_UART1_RXD__UART1_RXD 0x0 | ||
92 | MX27_PAD_UART1_CTS__UART1_CTS 0x0 | ||
93 | MX27_PAD_UART1_RTS__UART1_RTS 0x0 | ||
94 | >; | ||
95 | }; | ||
96 | |||
97 | ... | ||
98 | }; | ||
99 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt index 3077370c89af..1e70a8aff260 100644 --- a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt | |||
@@ -59,16 +59,16 @@ Required subnode-properties: | |||
59 | 59 | ||
60 | Optional subnode-properties: | 60 | Optional subnode-properties: |
61 | - fsl,drive-strength: Integer. | 61 | - fsl,drive-strength: Integer. |
62 | 0: 4 mA | 62 | 0: MXS_DRIVE_4mA |
63 | 1: 8 mA | 63 | 1: MXS_DRIVE_8mA |
64 | 2: 12 mA | 64 | 2: MXS_DRIVE_12mA |
65 | 3: 16 mA | 65 | 3: MXS_DRIVE_16mA |
66 | - fsl,voltage: Integer. | 66 | - fsl,voltage: Integer. |
67 | 0: 1.8 V | 67 | 0: MXS_VOLTAGE_LOW - 1.8 V |
68 | 1: 3.3 V | 68 | 1: MXS_VOLTAGE_HIGH - 3.3 V |
69 | - fsl,pull-up: Integer. | 69 | - fsl,pull-up: Integer. |
70 | 0: Disable the internal pull-up | 70 | 0: MXS_PULL_DISABLE - Disable the internal pull-up |
71 | 1: Enable the internal pull-up | 71 | 1: MXS_PULL_ENABLE - Enable the internal pull-up |
72 | 72 | ||
73 | Note that when enabling the pull-up, the internal pad keeper gets disabled. | 73 | Note that when enabling the pull-up, the internal pad keeper gets disabled. |
74 | Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up | 74 | Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up |
@@ -85,23 +85,32 @@ pinctrl@80018000 { | |||
85 | mmc0_8bit_pins_a: mmc0-8bit@0 { | 85 | mmc0_8bit_pins_a: mmc0-8bit@0 { |
86 | reg = <0>; | 86 | reg = <0>; |
87 | fsl,pinmux-ids = < | 87 | fsl,pinmux-ids = < |
88 | 0x2000 0x2010 0x2020 0x2030 | 88 | MX28_PAD_SSP0_DATA0__SSP0_D0 |
89 | 0x2040 0x2050 0x2060 0x2070 | 89 | MX28_PAD_SSP0_DATA1__SSP0_D1 |
90 | 0x2080 0x2090 0x20a0>; | 90 | MX28_PAD_SSP0_DATA2__SSP0_D2 |
91 | fsl,drive-strength = <1>; | 91 | MX28_PAD_SSP0_DATA3__SSP0_D3 |
92 | fsl,voltage = <1>; | 92 | MX28_PAD_SSP0_DATA4__SSP0_D4 |
93 | fsl,pull-up = <1>; | 93 | MX28_PAD_SSP0_DATA5__SSP0_D5 |
94 | MX28_PAD_SSP0_DATA6__SSP0_D6 | ||
95 | MX28_PAD_SSP0_DATA7__SSP0_D7 | ||
96 | MX28_PAD_SSP0_CMD__SSP0_CMD | ||
97 | MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT | ||
98 | MX28_PAD_SSP0_SCK__SSP0_SCK | ||
99 | >; | ||
100 | fsl,drive-strength = <MXS_DRIVE_4mA>; | ||
101 | fsl,voltage = <MXS_VOLTAGE_HIGH>; | ||
102 | fsl,pull-up = <MXS_PULL_ENABLE>; | ||
94 | }; | 103 | }; |
95 | 104 | ||
96 | mmc_cd_cfg: mmc-cd-cfg { | 105 | mmc_cd_cfg: mmc-cd-cfg { |
97 | fsl,pinmux-ids = <0x2090>; | 106 | fsl,pinmux-ids = <MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT>; |
98 | fsl,pull-up = <0>; | 107 | fsl,pull-up = <MXS_PULL_DISABLE>; |
99 | }; | 108 | }; |
100 | 109 | ||
101 | mmc_sck_cfg: mmc-sck-cfg { | 110 | mmc_sck_cfg: mmc-sck-cfg { |
102 | fsl,pinmux-ids = <0x20a0>; | 111 | fsl,pinmux-ids = <MX28_PAD_SSP0_SCK__SSP0_SCK>; |
103 | fsl,drive-strength = <2>; | 112 | fsl,drive-strength = <MXS_DRIVE_12mA>; |
104 | fsl,pull-up = <0>; | 113 | fsl,pull-up = <MXS_PULL_DISABLE>; |
105 | }; | 114 | }; |
106 | }; | 115 | }; |
107 | 116 | ||
@@ -112,811 +121,7 @@ adjusting the configuration for pins card-detection and clock from what group | |||
112 | node mmc0-8bit defines. Only the configuration properties to be adjusted need | 121 | node mmc0-8bit defines. Only the configuration properties to be adjusted need |
113 | to be listed in the config nodes. | 122 | to be listed in the config nodes. |
114 | 123 | ||
115 | Valid values for i.MX28 pinmux-id: | 124 | Valid values for i.MX28/i.MX23 pinmux-id are defined in |
116 | 125 | arch/arm/boot/dts/imx28-pinfunc.h and arch/arm/boot/dts/imx23-pinfunc.h. | |
117 | pinmux id | 126 | The definitions for the padconfig properties can be found in |
118 | ------ -- | 127 | arch/arm/boot/dts/mxs-pinfunc.h. |
119 | MX28_PAD_GPMI_D00__GPMI_D0 0x0000 | ||
120 | MX28_PAD_GPMI_D01__GPMI_D1 0x0010 | ||
121 | MX28_PAD_GPMI_D02__GPMI_D2 0x0020 | ||
122 | MX28_PAD_GPMI_D03__GPMI_D3 0x0030 | ||
123 | MX28_PAD_GPMI_D04__GPMI_D4 0x0040 | ||
124 | MX28_PAD_GPMI_D05__GPMI_D5 0x0050 | ||
125 | MX28_PAD_GPMI_D06__GPMI_D6 0x0060 | ||
126 | MX28_PAD_GPMI_D07__GPMI_D7 0x0070 | ||
127 | MX28_PAD_GPMI_CE0N__GPMI_CE0N 0x0100 | ||
128 | MX28_PAD_GPMI_CE1N__GPMI_CE1N 0x0110 | ||
129 | MX28_PAD_GPMI_CE2N__GPMI_CE2N 0x0120 | ||
130 | MX28_PAD_GPMI_CE3N__GPMI_CE3N 0x0130 | ||
131 | MX28_PAD_GPMI_RDY0__GPMI_READY0 0x0140 | ||
132 | MX28_PAD_GPMI_RDY1__GPMI_READY1 0x0150 | ||
133 | MX28_PAD_GPMI_RDY2__GPMI_READY2 0x0160 | ||
134 | MX28_PAD_GPMI_RDY3__GPMI_READY3 0x0170 | ||
135 | MX28_PAD_GPMI_RDN__GPMI_RDN 0x0180 | ||
136 | MX28_PAD_GPMI_WRN__GPMI_WRN 0x0190 | ||
137 | MX28_PAD_GPMI_ALE__GPMI_ALE 0x01a0 | ||
138 | MX28_PAD_GPMI_CLE__GPMI_CLE 0x01b0 | ||
139 | MX28_PAD_GPMI_RESETN__GPMI_RESETN 0x01c0 | ||
140 | MX28_PAD_LCD_D00__LCD_D0 0x1000 | ||
141 | MX28_PAD_LCD_D01__LCD_D1 0x1010 | ||
142 | MX28_PAD_LCD_D02__LCD_D2 0x1020 | ||
143 | MX28_PAD_LCD_D03__LCD_D3 0x1030 | ||
144 | MX28_PAD_LCD_D04__LCD_D4 0x1040 | ||
145 | MX28_PAD_LCD_D05__LCD_D5 0x1050 | ||
146 | MX28_PAD_LCD_D06__LCD_D6 0x1060 | ||
147 | MX28_PAD_LCD_D07__LCD_D7 0x1070 | ||
148 | MX28_PAD_LCD_D08__LCD_D8 0x1080 | ||
149 | MX28_PAD_LCD_D09__LCD_D9 0x1090 | ||
150 | MX28_PAD_LCD_D10__LCD_D10 0x10a0 | ||
151 | MX28_PAD_LCD_D11__LCD_D11 0x10b0 | ||
152 | MX28_PAD_LCD_D12__LCD_D12 0x10c0 | ||
153 | MX28_PAD_LCD_D13__LCD_D13 0x10d0 | ||
154 | MX28_PAD_LCD_D14__LCD_D14 0x10e0 | ||
155 | MX28_PAD_LCD_D15__LCD_D15 0x10f0 | ||
156 | MX28_PAD_LCD_D16__LCD_D16 0x1100 | ||
157 | MX28_PAD_LCD_D17__LCD_D17 0x1110 | ||
158 | MX28_PAD_LCD_D18__LCD_D18 0x1120 | ||
159 | MX28_PAD_LCD_D19__LCD_D19 0x1130 | ||
160 | MX28_PAD_LCD_D20__LCD_D20 0x1140 | ||
161 | MX28_PAD_LCD_D21__LCD_D21 0x1150 | ||
162 | MX28_PAD_LCD_D22__LCD_D22 0x1160 | ||
163 | MX28_PAD_LCD_D23__LCD_D23 0x1170 | ||
164 | MX28_PAD_LCD_RD_E__LCD_RD_E 0x1180 | ||
165 | MX28_PAD_LCD_WR_RWN__LCD_WR_RWN 0x1190 | ||
166 | MX28_PAD_LCD_RS__LCD_RS 0x11a0 | ||
167 | MX28_PAD_LCD_CS__LCD_CS 0x11b0 | ||
168 | MX28_PAD_LCD_VSYNC__LCD_VSYNC 0x11c0 | ||
169 | MX28_PAD_LCD_HSYNC__LCD_HSYNC 0x11d0 | ||
170 | MX28_PAD_LCD_DOTCLK__LCD_DOTCLK 0x11e0 | ||
171 | MX28_PAD_LCD_ENABLE__LCD_ENABLE 0x11f0 | ||
172 | MX28_PAD_SSP0_DATA0__SSP0_D0 0x2000 | ||
173 | MX28_PAD_SSP0_DATA1__SSP0_D1 0x2010 | ||
174 | MX28_PAD_SSP0_DATA2__SSP0_D2 0x2020 | ||
175 | MX28_PAD_SSP0_DATA3__SSP0_D3 0x2030 | ||
176 | MX28_PAD_SSP0_DATA4__SSP0_D4 0x2040 | ||
177 | MX28_PAD_SSP0_DATA5__SSP0_D5 0x2050 | ||
178 | MX28_PAD_SSP0_DATA6__SSP0_D6 0x2060 | ||
179 | MX28_PAD_SSP0_DATA7__SSP0_D7 0x2070 | ||
180 | MX28_PAD_SSP0_CMD__SSP0_CMD 0x2080 | ||
181 | MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT 0x2090 | ||
182 | MX28_PAD_SSP0_SCK__SSP0_SCK 0x20a0 | ||
183 | MX28_PAD_SSP1_SCK__SSP1_SCK 0x20c0 | ||
184 | MX28_PAD_SSP1_CMD__SSP1_CMD 0x20d0 | ||
185 | MX28_PAD_SSP1_DATA0__SSP1_D0 0x20e0 | ||
186 | MX28_PAD_SSP1_DATA3__SSP1_D3 0x20f0 | ||
187 | MX28_PAD_SSP2_SCK__SSP2_SCK 0x2100 | ||
188 | MX28_PAD_SSP2_MOSI__SSP2_CMD 0x2110 | ||
189 | MX28_PAD_SSP2_MISO__SSP2_D0 0x2120 | ||
190 | MX28_PAD_SSP2_SS0__SSP2_D3 0x2130 | ||
191 | MX28_PAD_SSP2_SS1__SSP2_D4 0x2140 | ||
192 | MX28_PAD_SSP2_SS2__SSP2_D5 0x2150 | ||
193 | MX28_PAD_SSP3_SCK__SSP3_SCK 0x2180 | ||
194 | MX28_PAD_SSP3_MOSI__SSP3_CMD 0x2190 | ||
195 | MX28_PAD_SSP3_MISO__SSP3_D0 0x21a0 | ||
196 | MX28_PAD_SSP3_SS0__SSP3_D3 0x21b0 | ||
197 | MX28_PAD_AUART0_RX__AUART0_RX 0x3000 | ||
198 | MX28_PAD_AUART0_TX__AUART0_TX 0x3010 | ||
199 | MX28_PAD_AUART0_CTS__AUART0_CTS 0x3020 | ||
200 | MX28_PAD_AUART0_RTS__AUART0_RTS 0x3030 | ||
201 | MX28_PAD_AUART1_RX__AUART1_RX 0x3040 | ||
202 | MX28_PAD_AUART1_TX__AUART1_TX 0x3050 | ||
203 | MX28_PAD_AUART1_CTS__AUART1_CTS 0x3060 | ||
204 | MX28_PAD_AUART1_RTS__AUART1_RTS 0x3070 | ||
205 | MX28_PAD_AUART2_RX__AUART2_RX 0x3080 | ||
206 | MX28_PAD_AUART2_TX__AUART2_TX 0x3090 | ||
207 | MX28_PAD_AUART2_CTS__AUART2_CTS 0x30a0 | ||
208 | MX28_PAD_AUART2_RTS__AUART2_RTS 0x30b0 | ||
209 | MX28_PAD_AUART3_RX__AUART3_RX 0x30c0 | ||
210 | MX28_PAD_AUART3_TX__AUART3_TX 0x30d0 | ||
211 | MX28_PAD_AUART3_CTS__AUART3_CTS 0x30e0 | ||
212 | MX28_PAD_AUART3_RTS__AUART3_RTS 0x30f0 | ||
213 | MX28_PAD_PWM0__PWM_0 0x3100 | ||
214 | MX28_PAD_PWM1__PWM_1 0x3110 | ||
215 | MX28_PAD_PWM2__PWM_2 0x3120 | ||
216 | MX28_PAD_SAIF0_MCLK__SAIF0_MCLK 0x3140 | ||
217 | MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK 0x3150 | ||
218 | MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK 0x3160 | ||
219 | MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 0x3170 | ||
220 | MX28_PAD_I2C0_SCL__I2C0_SCL 0x3180 | ||
221 | MX28_PAD_I2C0_SDA__I2C0_SDA 0x3190 | ||
222 | MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 0x31a0 | ||
223 | MX28_PAD_SPDIF__SPDIF_TX 0x31b0 | ||
224 | MX28_PAD_PWM3__PWM_3 0x31c0 | ||
225 | MX28_PAD_PWM4__PWM_4 0x31d0 | ||
226 | MX28_PAD_LCD_RESET__LCD_RESET 0x31e0 | ||
227 | MX28_PAD_ENET0_MDC__ENET0_MDC 0x4000 | ||
228 | MX28_PAD_ENET0_MDIO__ENET0_MDIO 0x4010 | ||
229 | MX28_PAD_ENET0_RX_EN__ENET0_RX_EN 0x4020 | ||
230 | MX28_PAD_ENET0_RXD0__ENET0_RXD0 0x4030 | ||
231 | MX28_PAD_ENET0_RXD1__ENET0_RXD1 0x4040 | ||
232 | MX28_PAD_ENET0_TX_CLK__ENET0_TX_CLK 0x4050 | ||
233 | MX28_PAD_ENET0_TX_EN__ENET0_TX_EN 0x4060 | ||
234 | MX28_PAD_ENET0_TXD0__ENET0_TXD0 0x4070 | ||
235 | MX28_PAD_ENET0_TXD1__ENET0_TXD1 0x4080 | ||
236 | MX28_PAD_ENET0_RXD2__ENET0_RXD2 0x4090 | ||
237 | MX28_PAD_ENET0_RXD3__ENET0_RXD3 0x40a0 | ||
238 | MX28_PAD_ENET0_TXD2__ENET0_TXD2 0x40b0 | ||
239 | MX28_PAD_ENET0_TXD3__ENET0_TXD3 0x40c0 | ||
240 | MX28_PAD_ENET0_RX_CLK__ENET0_RX_CLK 0x40d0 | ||
241 | MX28_PAD_ENET0_COL__ENET0_COL 0x40e0 | ||
242 | MX28_PAD_ENET0_CRS__ENET0_CRS 0x40f0 | ||
243 | MX28_PAD_ENET_CLK__CLKCTRL_ENET 0x4100 | ||
244 | MX28_PAD_JTAG_RTCK__JTAG_RTCK 0x4140 | ||
245 | MX28_PAD_EMI_D00__EMI_DATA0 0x5000 | ||
246 | MX28_PAD_EMI_D01__EMI_DATA1 0x5010 | ||
247 | MX28_PAD_EMI_D02__EMI_DATA2 0x5020 | ||
248 | MX28_PAD_EMI_D03__EMI_DATA3 0x5030 | ||
249 | MX28_PAD_EMI_D04__EMI_DATA4 0x5040 | ||
250 | MX28_PAD_EMI_D05__EMI_DATA5 0x5050 | ||
251 | MX28_PAD_EMI_D06__EMI_DATA6 0x5060 | ||
252 | MX28_PAD_EMI_D07__EMI_DATA7 0x5070 | ||
253 | MX28_PAD_EMI_D08__EMI_DATA8 0x5080 | ||
254 | MX28_PAD_EMI_D09__EMI_DATA9 0x5090 | ||
255 | MX28_PAD_EMI_D10__EMI_DATA10 0x50a0 | ||
256 | MX28_PAD_EMI_D11__EMI_DATA11 0x50b0 | ||
257 | MX28_PAD_EMI_D12__EMI_DATA12 0x50c0 | ||
258 | MX28_PAD_EMI_D13__EMI_DATA13 0x50d0 | ||
259 | MX28_PAD_EMI_D14__EMI_DATA14 0x50e0 | ||
260 | MX28_PAD_EMI_D15__EMI_DATA15 0x50f0 | ||
261 | MX28_PAD_EMI_ODT0__EMI_ODT0 0x5100 | ||
262 | MX28_PAD_EMI_DQM0__EMI_DQM0 0x5110 | ||
263 | MX28_PAD_EMI_ODT1__EMI_ODT1 0x5120 | ||
264 | MX28_PAD_EMI_DQM1__EMI_DQM1 0x5130 | ||
265 | MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK 0x5140 | ||
266 | MX28_PAD_EMI_CLK__EMI_CLK 0x5150 | ||
267 | MX28_PAD_EMI_DQS0__EMI_DQS0 0x5160 | ||
268 | MX28_PAD_EMI_DQS1__EMI_DQS1 0x5170 | ||
269 | MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN 0x51a0 | ||
270 | MX28_PAD_EMI_A00__EMI_ADDR0 0x6000 | ||
271 | MX28_PAD_EMI_A01__EMI_ADDR1 0x6010 | ||
272 | MX28_PAD_EMI_A02__EMI_ADDR2 0x6020 | ||
273 | MX28_PAD_EMI_A03__EMI_ADDR3 0x6030 | ||
274 | MX28_PAD_EMI_A04__EMI_ADDR4 0x6040 | ||
275 | MX28_PAD_EMI_A05__EMI_ADDR5 0x6050 | ||
276 | MX28_PAD_EMI_A06__EMI_ADDR6 0x6060 | ||
277 | MX28_PAD_EMI_A07__EMI_ADDR7 0x6070 | ||
278 | MX28_PAD_EMI_A08__EMI_ADDR8 0x6080 | ||
279 | MX28_PAD_EMI_A09__EMI_ADDR9 0x6090 | ||
280 | MX28_PAD_EMI_A10__EMI_ADDR10 0x60a0 | ||
281 | MX28_PAD_EMI_A11__EMI_ADDR11 0x60b0 | ||
282 | MX28_PAD_EMI_A12__EMI_ADDR12 0x60c0 | ||
283 | MX28_PAD_EMI_A13__EMI_ADDR13 0x60d0 | ||
284 | MX28_PAD_EMI_A14__EMI_ADDR14 0x60e0 | ||
285 | MX28_PAD_EMI_BA0__EMI_BA0 0x6100 | ||
286 | MX28_PAD_EMI_BA1__EMI_BA1 0x6110 | ||
287 | MX28_PAD_EMI_BA2__EMI_BA2 0x6120 | ||
288 | MX28_PAD_EMI_CASN__EMI_CASN 0x6130 | ||
289 | MX28_PAD_EMI_RASN__EMI_RASN 0x6140 | ||
290 | MX28_PAD_EMI_WEN__EMI_WEN 0x6150 | ||
291 | MX28_PAD_EMI_CE0N__EMI_CE0N 0x6160 | ||
292 | MX28_PAD_EMI_CE1N__EMI_CE1N 0x6170 | ||
293 | MX28_PAD_EMI_CKE__EMI_CKE 0x6180 | ||
294 | MX28_PAD_GPMI_D00__SSP1_D0 0x0001 | ||
295 | MX28_PAD_GPMI_D01__SSP1_D1 0x0011 | ||
296 | MX28_PAD_GPMI_D02__SSP1_D2 0x0021 | ||
297 | MX28_PAD_GPMI_D03__SSP1_D3 0x0031 | ||
298 | MX28_PAD_GPMI_D04__SSP1_D4 0x0041 | ||
299 | MX28_PAD_GPMI_D05__SSP1_D5 0x0051 | ||
300 | MX28_PAD_GPMI_D06__SSP1_D6 0x0061 | ||
301 | MX28_PAD_GPMI_D07__SSP1_D7 0x0071 | ||
302 | MX28_PAD_GPMI_CE0N__SSP3_D0 0x0101 | ||
303 | MX28_PAD_GPMI_CE1N__SSP3_D3 0x0111 | ||
304 | MX28_PAD_GPMI_CE2N__CAN1_TX 0x0121 | ||
305 | MX28_PAD_GPMI_CE3N__CAN1_RX 0x0131 | ||
306 | MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT 0x0141 | ||
307 | MX28_PAD_GPMI_RDY1__SSP1_CMD 0x0151 | ||
308 | MX28_PAD_GPMI_RDY2__CAN0_TX 0x0161 | ||
309 | MX28_PAD_GPMI_RDY3__CAN0_RX 0x0171 | ||
310 | MX28_PAD_GPMI_RDN__SSP3_SCK 0x0181 | ||
311 | MX28_PAD_GPMI_WRN__SSP1_SCK 0x0191 | ||
312 | MX28_PAD_GPMI_ALE__SSP3_D1 0x01a1 | ||
313 | MX28_PAD_GPMI_CLE__SSP3_D2 0x01b1 | ||
314 | MX28_PAD_GPMI_RESETN__SSP3_CMD 0x01c1 | ||
315 | MX28_PAD_LCD_D03__ETM_DA8 0x1031 | ||
316 | MX28_PAD_LCD_D04__ETM_DA9 0x1041 | ||
317 | MX28_PAD_LCD_D08__ETM_DA3 0x1081 | ||
318 | MX28_PAD_LCD_D09__ETM_DA4 0x1091 | ||
319 | MX28_PAD_LCD_D20__ENET1_1588_EVENT2_OUT 0x1141 | ||
320 | MX28_PAD_LCD_D21__ENET1_1588_EVENT2_IN 0x1151 | ||
321 | MX28_PAD_LCD_D22__ENET1_1588_EVENT3_OUT 0x1161 | ||
322 | MX28_PAD_LCD_D23__ENET1_1588_EVENT3_IN 0x1171 | ||
323 | MX28_PAD_LCD_RD_E__LCD_VSYNC 0x1181 | ||
324 | MX28_PAD_LCD_WR_RWN__LCD_HSYNC 0x1191 | ||
325 | MX28_PAD_LCD_RS__LCD_DOTCLK 0x11a1 | ||
326 | MX28_PAD_LCD_CS__LCD_ENABLE 0x11b1 | ||
327 | MX28_PAD_LCD_VSYNC__SAIF1_SDATA0 0x11c1 | ||
328 | MX28_PAD_LCD_HSYNC__SAIF1_SDATA1 0x11d1 | ||
329 | MX28_PAD_LCD_DOTCLK__SAIF1_MCLK 0x11e1 | ||
330 | MX28_PAD_SSP0_DATA4__SSP2_D0 0x2041 | ||
331 | MX28_PAD_SSP0_DATA5__SSP2_D3 0x2051 | ||
332 | MX28_PAD_SSP0_DATA6__SSP2_CMD 0x2061 | ||
333 | MX28_PAD_SSP0_DATA7__SSP2_SCK 0x2071 | ||
334 | MX28_PAD_SSP1_SCK__SSP2_D1 0x20c1 | ||
335 | MX28_PAD_SSP1_CMD__SSP2_D2 0x20d1 | ||
336 | MX28_PAD_SSP1_DATA0__SSP2_D6 0x20e1 | ||
337 | MX28_PAD_SSP1_DATA3__SSP2_D7 0x20f1 | ||
338 | MX28_PAD_SSP2_SCK__AUART2_RX 0x2101 | ||
339 | MX28_PAD_SSP2_MOSI__AUART2_TX 0x2111 | ||
340 | MX28_PAD_SSP2_MISO__AUART3_RX 0x2121 | ||
341 | MX28_PAD_SSP2_SS0__AUART3_TX 0x2131 | ||
342 | MX28_PAD_SSP2_SS1__SSP2_D1 0x2141 | ||
343 | MX28_PAD_SSP2_SS2__SSP2_D2 0x2151 | ||
344 | MX28_PAD_SSP3_SCK__AUART4_TX 0x2181 | ||
345 | MX28_PAD_SSP3_MOSI__AUART4_RX 0x2191 | ||
346 | MX28_PAD_SSP3_MISO__AUART4_RTS 0x21a1 | ||
347 | MX28_PAD_SSP3_SS0__AUART4_CTS 0x21b1 | ||
348 | MX28_PAD_AUART0_RX__I2C0_SCL 0x3001 | ||
349 | MX28_PAD_AUART0_TX__I2C0_SDA 0x3011 | ||
350 | MX28_PAD_AUART0_CTS__AUART4_RX 0x3021 | ||
351 | MX28_PAD_AUART0_RTS__AUART4_TX 0x3031 | ||
352 | MX28_PAD_AUART1_RX__SSP2_CARD_DETECT 0x3041 | ||
353 | MX28_PAD_AUART1_TX__SSP3_CARD_DETECT 0x3051 | ||
354 | MX28_PAD_AUART1_CTS__USB0_OVERCURRENT 0x3061 | ||
355 | MX28_PAD_AUART1_RTS__USB0_ID 0x3071 | ||
356 | MX28_PAD_AUART2_RX__SSP3_D1 0x3081 | ||
357 | MX28_PAD_AUART2_TX__SSP3_D2 0x3091 | ||
358 | MX28_PAD_AUART2_CTS__I2C1_SCL 0x30a1 | ||
359 | MX28_PAD_AUART2_RTS__I2C1_SDA 0x30b1 | ||
360 | MX28_PAD_AUART3_RX__CAN0_TX 0x30c1 | ||
361 | MX28_PAD_AUART3_TX__CAN0_RX 0x30d1 | ||
362 | MX28_PAD_AUART3_CTS__CAN1_TX 0x30e1 | ||
363 | MX28_PAD_AUART3_RTS__CAN1_RX 0x30f1 | ||
364 | MX28_PAD_PWM0__I2C1_SCL 0x3101 | ||
365 | MX28_PAD_PWM1__I2C1_SDA 0x3111 | ||
366 | MX28_PAD_PWM2__USB0_ID 0x3121 | ||
367 | MX28_PAD_SAIF0_MCLK__PWM_3 0x3141 | ||
368 | MX28_PAD_SAIF0_LRCLK__PWM_4 0x3151 | ||
369 | MX28_PAD_SAIF0_BITCLK__PWM_5 0x3161 | ||
370 | MX28_PAD_SAIF0_SDATA0__PWM_6 0x3171 | ||
371 | MX28_PAD_I2C0_SCL__TIMROT_ROTARYA 0x3181 | ||
372 | MX28_PAD_I2C0_SDA__TIMROT_ROTARYB 0x3191 | ||
373 | MX28_PAD_SAIF1_SDATA0__PWM_7 0x31a1 | ||
374 | MX28_PAD_LCD_RESET__LCD_VSYNC 0x31e1 | ||
375 | MX28_PAD_ENET0_MDC__GPMI_CE4N 0x4001 | ||
376 | MX28_PAD_ENET0_MDIO__GPMI_CE5N 0x4011 | ||
377 | MX28_PAD_ENET0_RX_EN__GPMI_CE6N 0x4021 | ||
378 | MX28_PAD_ENET0_RXD0__GPMI_CE7N 0x4031 | ||
379 | MX28_PAD_ENET0_RXD1__GPMI_READY4 0x4041 | ||
380 | MX28_PAD_ENET0_TX_CLK__HSADC_TRIGGER 0x4051 | ||
381 | MX28_PAD_ENET0_TX_EN__GPMI_READY5 0x4061 | ||
382 | MX28_PAD_ENET0_TXD0__GPMI_READY6 0x4071 | ||
383 | MX28_PAD_ENET0_TXD1__GPMI_READY7 0x4081 | ||
384 | MX28_PAD_ENET0_RXD2__ENET1_RXD0 0x4091 | ||
385 | MX28_PAD_ENET0_RXD3__ENET1_RXD1 0x40a1 | ||
386 | MX28_PAD_ENET0_TXD2__ENET1_TXD0 0x40b1 | ||
387 | MX28_PAD_ENET0_TXD3__ENET1_TXD1 0x40c1 | ||
388 | MX28_PAD_ENET0_RX_CLK__ENET0_RX_ER 0x40d1 | ||
389 | MX28_PAD_ENET0_COL__ENET1_TX_EN 0x40e1 | ||
390 | MX28_PAD_ENET0_CRS__ENET1_RX_EN 0x40f1 | ||
391 | MX28_PAD_GPMI_CE2N__ENET0_RX_ER 0x0122 | ||
392 | MX28_PAD_GPMI_CE3N__SAIF1_MCLK 0x0132 | ||
393 | MX28_PAD_GPMI_RDY0__USB0_ID 0x0142 | ||
394 | MX28_PAD_GPMI_RDY2__ENET0_TX_ER 0x0162 | ||
395 | MX28_PAD_GPMI_RDY3__HSADC_TRIGGER 0x0172 | ||
396 | MX28_PAD_GPMI_ALE__SSP3_D4 0x01a2 | ||
397 | MX28_PAD_GPMI_CLE__SSP3_D5 0x01b2 | ||
398 | MX28_PAD_LCD_D00__ETM_DA0 0x1002 | ||
399 | MX28_PAD_LCD_D01__ETM_DA1 0x1012 | ||
400 | MX28_PAD_LCD_D02__ETM_DA2 0x1022 | ||
401 | MX28_PAD_LCD_D03__ETM_DA3 0x1032 | ||
402 | MX28_PAD_LCD_D04__ETM_DA4 0x1042 | ||
403 | MX28_PAD_LCD_D05__ETM_DA5 0x1052 | ||
404 | MX28_PAD_LCD_D06__ETM_DA6 0x1062 | ||
405 | MX28_PAD_LCD_D07__ETM_DA7 0x1072 | ||
406 | MX28_PAD_LCD_D08__ETM_DA8 0x1082 | ||
407 | MX28_PAD_LCD_D09__ETM_DA9 0x1092 | ||
408 | MX28_PAD_LCD_D10__ETM_DA10 0x10a2 | ||
409 | MX28_PAD_LCD_D11__ETM_DA11 0x10b2 | ||
410 | MX28_PAD_LCD_D12__ETM_DA12 0x10c2 | ||
411 | MX28_PAD_LCD_D13__ETM_DA13 0x10d2 | ||
412 | MX28_PAD_LCD_D14__ETM_DA14 0x10e2 | ||
413 | MX28_PAD_LCD_D15__ETM_DA15 0x10f2 | ||
414 | MX28_PAD_LCD_D16__ETM_DA7 0x1102 | ||
415 | MX28_PAD_LCD_D17__ETM_DA6 0x1112 | ||
416 | MX28_PAD_LCD_D18__ETM_DA5 0x1122 | ||
417 | MX28_PAD_LCD_D19__ETM_DA4 0x1132 | ||
418 | MX28_PAD_LCD_D20__ETM_DA3 0x1142 | ||
419 | MX28_PAD_LCD_D21__ETM_DA2 0x1152 | ||
420 | MX28_PAD_LCD_D22__ETM_DA1 0x1162 | ||
421 | MX28_PAD_LCD_D23__ETM_DA0 0x1172 | ||
422 | MX28_PAD_LCD_RD_E__ETM_TCTL 0x1182 | ||
423 | MX28_PAD_LCD_WR_RWN__ETM_TCLK 0x1192 | ||
424 | MX28_PAD_LCD_HSYNC__ETM_TCTL 0x11d2 | ||
425 | MX28_PAD_LCD_DOTCLK__ETM_TCLK 0x11e2 | ||
426 | MX28_PAD_SSP1_SCK__ENET0_1588_EVENT2_OUT 0x20c2 | ||
427 | MX28_PAD_SSP1_CMD__ENET0_1588_EVENT2_IN 0x20d2 | ||
428 | MX28_PAD_SSP1_DATA0__ENET0_1588_EVENT3_OUT 0x20e2 | ||
429 | MX28_PAD_SSP1_DATA3__ENET0_1588_EVENT3_IN 0x20f2 | ||
430 | MX28_PAD_SSP2_SCK__SAIF0_SDATA1 0x2102 | ||
431 | MX28_PAD_SSP2_MOSI__SAIF0_SDATA2 0x2112 | ||
432 | MX28_PAD_SSP2_MISO__SAIF1_SDATA1 0x2122 | ||
433 | MX28_PAD_SSP2_SS0__SAIF1_SDATA2 0x2132 | ||
434 | MX28_PAD_SSP2_SS1__USB1_OVERCURRENT 0x2142 | ||
435 | MX28_PAD_SSP2_SS2__USB0_OVERCURRENT 0x2152 | ||
436 | MX28_PAD_SSP3_SCK__ENET1_1588_EVENT0_OUT 0x2182 | ||
437 | MX28_PAD_SSP3_MOSI__ENET1_1588_EVENT0_IN 0x2192 | ||
438 | MX28_PAD_SSP3_MISO__ENET1_1588_EVENT1_OUT 0x21a2 | ||
439 | MX28_PAD_SSP3_SS0__ENET1_1588_EVENT1_IN 0x21b2 | ||
440 | MX28_PAD_AUART0_RX__DUART_CTS 0x3002 | ||
441 | MX28_PAD_AUART0_TX__DUART_RTS 0x3012 | ||
442 | MX28_PAD_AUART0_CTS__DUART_RX 0x3022 | ||
443 | MX28_PAD_AUART0_RTS__DUART_TX 0x3032 | ||
444 | MX28_PAD_AUART1_RX__PWM_0 0x3042 | ||
445 | MX28_PAD_AUART1_TX__PWM_1 0x3052 | ||
446 | MX28_PAD_AUART1_CTS__TIMROT_ROTARYA 0x3062 | ||
447 | MX28_PAD_AUART1_RTS__TIMROT_ROTARYB 0x3072 | ||
448 | MX28_PAD_AUART2_RX__SSP3_D4 0x3082 | ||
449 | MX28_PAD_AUART2_TX__SSP3_D5 0x3092 | ||
450 | MX28_PAD_AUART2_CTS__SAIF1_BITCLK 0x30a2 | ||
451 | MX28_PAD_AUART2_RTS__SAIF1_LRCLK 0x30b2 | ||
452 | MX28_PAD_AUART3_RX__ENET0_1588_EVENT0_OUT 0x30c2 | ||
453 | MX28_PAD_AUART3_TX__ENET0_1588_EVENT0_IN 0x30d2 | ||
454 | MX28_PAD_AUART3_CTS__ENET0_1588_EVENT1_OUT 0x30e2 | ||
455 | MX28_PAD_AUART3_RTS__ENET0_1588_EVENT1_IN 0x30f2 | ||
456 | MX28_PAD_PWM0__DUART_RX 0x3102 | ||
457 | MX28_PAD_PWM1__DUART_TX 0x3112 | ||
458 | MX28_PAD_PWM2__USB1_OVERCURRENT 0x3122 | ||
459 | MX28_PAD_SAIF0_MCLK__AUART4_CTS 0x3142 | ||
460 | MX28_PAD_SAIF0_LRCLK__AUART4_RTS 0x3152 | ||
461 | MX28_PAD_SAIF0_BITCLK__AUART4_RX 0x3162 | ||
462 | MX28_PAD_SAIF0_SDATA0__AUART4_TX 0x3172 | ||
463 | MX28_PAD_I2C0_SCL__DUART_RX 0x3182 | ||
464 | MX28_PAD_I2C0_SDA__DUART_TX 0x3192 | ||
465 | MX28_PAD_SAIF1_SDATA0__SAIF0_SDATA1 0x31a2 | ||
466 | MX28_PAD_SPDIF__ENET1_RX_ER 0x31b2 | ||
467 | MX28_PAD_ENET0_MDC__SAIF0_SDATA1 0x4002 | ||
468 | MX28_PAD_ENET0_MDIO__SAIF0_SDATA2 0x4012 | ||
469 | MX28_PAD_ENET0_RX_EN__SAIF1_SDATA1 0x4022 | ||
470 | MX28_PAD_ENET0_RXD0__SAIF1_SDATA2 0x4032 | ||
471 | MX28_PAD_ENET0_TX_CLK__ENET0_1588_EVENT2_OUT 0x4052 | ||
472 | MX28_PAD_ENET0_RXD2__ENET0_1588_EVENT0_OUT 0x4092 | ||
473 | MX28_PAD_ENET0_RXD3__ENET0_1588_EVENT0_IN 0x40a2 | ||
474 | MX28_PAD_ENET0_TXD2__ENET0_1588_EVENT1_OUT 0x40b2 | ||
475 | MX28_PAD_ENET0_TXD3__ENET0_1588_EVENT1_IN 0x40c2 | ||
476 | MX28_PAD_ENET0_RX_CLK__ENET0_1588_EVENT2_IN 0x40d2 | ||
477 | MX28_PAD_ENET0_COL__ENET0_1588_EVENT3_OUT 0x40e2 | ||
478 | MX28_PAD_ENET0_CRS__ENET0_1588_EVENT3_IN 0x40f2 | ||
479 | MX28_PAD_GPMI_D00__GPIO_0_0 0x0003 | ||
480 | MX28_PAD_GPMI_D01__GPIO_0_1 0x0013 | ||
481 | MX28_PAD_GPMI_D02__GPIO_0_2 0x0023 | ||
482 | MX28_PAD_GPMI_D03__GPIO_0_3 0x0033 | ||
483 | MX28_PAD_GPMI_D04__GPIO_0_4 0x0043 | ||
484 | MX28_PAD_GPMI_D05__GPIO_0_5 0x0053 | ||
485 | MX28_PAD_GPMI_D06__GPIO_0_6 0x0063 | ||
486 | MX28_PAD_GPMI_D07__GPIO_0_7 0x0073 | ||
487 | MX28_PAD_GPMI_CE0N__GPIO_0_16 0x0103 | ||
488 | MX28_PAD_GPMI_CE1N__GPIO_0_17 0x0113 | ||
489 | MX28_PAD_GPMI_CE2N__GPIO_0_18 0x0123 | ||
490 | MX28_PAD_GPMI_CE3N__GPIO_0_19 0x0133 | ||
491 | MX28_PAD_GPMI_RDY0__GPIO_0_20 0x0143 | ||
492 | MX28_PAD_GPMI_RDY1__GPIO_0_21 0x0153 | ||
493 | MX28_PAD_GPMI_RDY2__GPIO_0_22 0x0163 | ||
494 | MX28_PAD_GPMI_RDY3__GPIO_0_23 0x0173 | ||
495 | MX28_PAD_GPMI_RDN__GPIO_0_24 0x0183 | ||
496 | MX28_PAD_GPMI_WRN__GPIO_0_25 0x0193 | ||
497 | MX28_PAD_GPMI_ALE__GPIO_0_26 0x01a3 | ||
498 | MX28_PAD_GPMI_CLE__GPIO_0_27 0x01b3 | ||
499 | MX28_PAD_GPMI_RESETN__GPIO_0_28 0x01c3 | ||
500 | MX28_PAD_LCD_D00__GPIO_1_0 0x1003 | ||
501 | MX28_PAD_LCD_D01__GPIO_1_1 0x1013 | ||
502 | MX28_PAD_LCD_D02__GPIO_1_2 0x1023 | ||
503 | MX28_PAD_LCD_D03__GPIO_1_3 0x1033 | ||
504 | MX28_PAD_LCD_D04__GPIO_1_4 0x1043 | ||
505 | MX28_PAD_LCD_D05__GPIO_1_5 0x1053 | ||
506 | MX28_PAD_LCD_D06__GPIO_1_6 0x1063 | ||
507 | MX28_PAD_LCD_D07__GPIO_1_7 0x1073 | ||
508 | MX28_PAD_LCD_D08__GPIO_1_8 0x1083 | ||
509 | MX28_PAD_LCD_D09__GPIO_1_9 0x1093 | ||
510 | MX28_PAD_LCD_D10__GPIO_1_10 0x10a3 | ||
511 | MX28_PAD_LCD_D11__GPIO_1_11 0x10b3 | ||
512 | MX28_PAD_LCD_D12__GPIO_1_12 0x10c3 | ||
513 | MX28_PAD_LCD_D13__GPIO_1_13 0x10d3 | ||
514 | MX28_PAD_LCD_D14__GPIO_1_14 0x10e3 | ||
515 | MX28_PAD_LCD_D15__GPIO_1_15 0x10f3 | ||
516 | MX28_PAD_LCD_D16__GPIO_1_16 0x1103 | ||
517 | MX28_PAD_LCD_D17__GPIO_1_17 0x1113 | ||
518 | MX28_PAD_LCD_D18__GPIO_1_18 0x1123 | ||
519 | MX28_PAD_LCD_D19__GPIO_1_19 0x1133 | ||
520 | MX28_PAD_LCD_D20__GPIO_1_20 0x1143 | ||
521 | MX28_PAD_LCD_D21__GPIO_1_21 0x1153 | ||
522 | MX28_PAD_LCD_D22__GPIO_1_22 0x1163 | ||
523 | MX28_PAD_LCD_D23__GPIO_1_23 0x1173 | ||
524 | MX28_PAD_LCD_RD_E__GPIO_1_24 0x1183 | ||
525 | MX28_PAD_LCD_WR_RWN__GPIO_1_25 0x1193 | ||
526 | MX28_PAD_LCD_RS__GPIO_1_26 0x11a3 | ||
527 | MX28_PAD_LCD_CS__GPIO_1_27 0x11b3 | ||
528 | MX28_PAD_LCD_VSYNC__GPIO_1_28 0x11c3 | ||
529 | MX28_PAD_LCD_HSYNC__GPIO_1_29 0x11d3 | ||
530 | MX28_PAD_LCD_DOTCLK__GPIO_1_30 0x11e3 | ||
531 | MX28_PAD_LCD_ENABLE__GPIO_1_31 0x11f3 | ||
532 | MX28_PAD_SSP0_DATA0__GPIO_2_0 0x2003 | ||
533 | MX28_PAD_SSP0_DATA1__GPIO_2_1 0x2013 | ||
534 | MX28_PAD_SSP0_DATA2__GPIO_2_2 0x2023 | ||
535 | MX28_PAD_SSP0_DATA3__GPIO_2_3 0x2033 | ||
536 | MX28_PAD_SSP0_DATA4__GPIO_2_4 0x2043 | ||
537 | MX28_PAD_SSP0_DATA5__GPIO_2_5 0x2053 | ||
538 | MX28_PAD_SSP0_DATA6__GPIO_2_6 0x2063 | ||
539 | MX28_PAD_SSP0_DATA7__GPIO_2_7 0x2073 | ||
540 | MX28_PAD_SSP0_CMD__GPIO_2_8 0x2083 | ||
541 | MX28_PAD_SSP0_DETECT__GPIO_2_9 0x2093 | ||
542 | MX28_PAD_SSP0_SCK__GPIO_2_10 0x20a3 | ||
543 | MX28_PAD_SSP1_SCK__GPIO_2_12 0x20c3 | ||
544 | MX28_PAD_SSP1_CMD__GPIO_2_13 0x20d3 | ||
545 | MX28_PAD_SSP1_DATA0__GPIO_2_14 0x20e3 | ||
546 | MX28_PAD_SSP1_DATA3__GPIO_2_15 0x20f3 | ||
547 | MX28_PAD_SSP2_SCK__GPIO_2_16 0x2103 | ||
548 | MX28_PAD_SSP2_MOSI__GPIO_2_17 0x2113 | ||
549 | MX28_PAD_SSP2_MISO__GPIO_2_18 0x2123 | ||
550 | MX28_PAD_SSP2_SS0__GPIO_2_19 0x2133 | ||
551 | MX28_PAD_SSP2_SS1__GPIO_2_20 0x2143 | ||
552 | MX28_PAD_SSP2_SS2__GPIO_2_21 0x2153 | ||
553 | MX28_PAD_SSP3_SCK__GPIO_2_24 0x2183 | ||
554 | MX28_PAD_SSP3_MOSI__GPIO_2_25 0x2193 | ||
555 | MX28_PAD_SSP3_MISO__GPIO_2_26 0x21a3 | ||
556 | MX28_PAD_SSP3_SS0__GPIO_2_27 0x21b3 | ||
557 | MX28_PAD_AUART0_RX__GPIO_3_0 0x3003 | ||
558 | MX28_PAD_AUART0_TX__GPIO_3_1 0x3013 | ||
559 | MX28_PAD_AUART0_CTS__GPIO_3_2 0x3023 | ||
560 | MX28_PAD_AUART0_RTS__GPIO_3_3 0x3033 | ||
561 | MX28_PAD_AUART1_RX__GPIO_3_4 0x3043 | ||
562 | MX28_PAD_AUART1_TX__GPIO_3_5 0x3053 | ||
563 | MX28_PAD_AUART1_CTS__GPIO_3_6 0x3063 | ||
564 | MX28_PAD_AUART1_RTS__GPIO_3_7 0x3073 | ||
565 | MX28_PAD_AUART2_RX__GPIO_3_8 0x3083 | ||
566 | MX28_PAD_AUART2_TX__GPIO_3_9 0x3093 | ||
567 | MX28_PAD_AUART2_CTS__GPIO_3_10 0x30a3 | ||
568 | MX28_PAD_AUART2_RTS__GPIO_3_11 0x30b3 | ||
569 | MX28_PAD_AUART3_RX__GPIO_3_12 0x30c3 | ||
570 | MX28_PAD_AUART3_TX__GPIO_3_13 0x30d3 | ||
571 | MX28_PAD_AUART3_CTS__GPIO_3_14 0x30e3 | ||
572 | MX28_PAD_AUART3_RTS__GPIO_3_15 0x30f3 | ||
573 | MX28_PAD_PWM0__GPIO_3_16 0x3103 | ||
574 | MX28_PAD_PWM1__GPIO_3_17 0x3113 | ||
575 | MX28_PAD_PWM2__GPIO_3_18 0x3123 | ||
576 | MX28_PAD_SAIF0_MCLK__GPIO_3_20 0x3143 | ||
577 | MX28_PAD_SAIF0_LRCLK__GPIO_3_21 0x3153 | ||
578 | MX28_PAD_SAIF0_BITCLK__GPIO_3_22 0x3163 | ||
579 | MX28_PAD_SAIF0_SDATA0__GPIO_3_23 0x3173 | ||
580 | MX28_PAD_I2C0_SCL__GPIO_3_24 0x3183 | ||
581 | MX28_PAD_I2C0_SDA__GPIO_3_25 0x3193 | ||
582 | MX28_PAD_SAIF1_SDATA0__GPIO_3_26 0x31a3 | ||
583 | MX28_PAD_SPDIF__GPIO_3_27 0x31b3 | ||
584 | MX28_PAD_PWM3__GPIO_3_28 0x31c3 | ||
585 | MX28_PAD_PWM4__GPIO_3_29 0x31d3 | ||
586 | MX28_PAD_LCD_RESET__GPIO_3_30 0x31e3 | ||
587 | MX28_PAD_ENET0_MDC__GPIO_4_0 0x4003 | ||
588 | MX28_PAD_ENET0_MDIO__GPIO_4_1 0x4013 | ||
589 | MX28_PAD_ENET0_RX_EN__GPIO_4_2 0x4023 | ||
590 | MX28_PAD_ENET0_RXD0__GPIO_4_3 0x4033 | ||
591 | MX28_PAD_ENET0_RXD1__GPIO_4_4 0x4043 | ||
592 | MX28_PAD_ENET0_TX_CLK__GPIO_4_5 0x4053 | ||
593 | MX28_PAD_ENET0_TX_EN__GPIO_4_6 0x4063 | ||
594 | MX28_PAD_ENET0_TXD0__GPIO_4_7 0x4073 | ||
595 | MX28_PAD_ENET0_TXD1__GPIO_4_8 0x4083 | ||
596 | MX28_PAD_ENET0_RXD2__GPIO_4_9 0x4093 | ||
597 | MX28_PAD_ENET0_RXD3__GPIO_4_10 0x40a3 | ||
598 | MX28_PAD_ENET0_TXD2__GPIO_4_11 0x40b3 | ||
599 | MX28_PAD_ENET0_TXD3__GPIO_4_12 0x40c3 | ||
600 | MX28_PAD_ENET0_RX_CLK__GPIO_4_13 0x40d3 | ||
601 | MX28_PAD_ENET0_COL__GPIO_4_14 0x40e3 | ||
602 | MX28_PAD_ENET0_CRS__GPIO_4_15 0x40f3 | ||
603 | MX28_PAD_ENET_CLK__GPIO_4_16 0x4103 | ||
604 | MX28_PAD_JTAG_RTCK__GPIO_4_20 0x4143 | ||
605 | |||
606 | Valid values for i.MX23 pinmux-id: | ||
607 | |||
608 | pinmux id | ||
609 | ------ -- | ||
610 | MX23_PAD_GPMI_D00__GPMI_D00 0x0000 | ||
611 | MX23_PAD_GPMI_D01__GPMI_D01 0x0010 | ||
612 | MX23_PAD_GPMI_D02__GPMI_D02 0x0020 | ||
613 | MX23_PAD_GPMI_D03__GPMI_D03 0x0030 | ||
614 | MX23_PAD_GPMI_D04__GPMI_D04 0x0040 | ||
615 | MX23_PAD_GPMI_D05__GPMI_D05 0x0050 | ||
616 | MX23_PAD_GPMI_D06__GPMI_D06 0x0060 | ||
617 | MX23_PAD_GPMI_D07__GPMI_D07 0x0070 | ||
618 | MX23_PAD_GPMI_D08__GPMI_D08 0x0080 | ||
619 | MX23_PAD_GPMI_D09__GPMI_D09 0x0090 | ||
620 | MX23_PAD_GPMI_D10__GPMI_D10 0x00a0 | ||
621 | MX23_PAD_GPMI_D11__GPMI_D11 0x00b0 | ||
622 | MX23_PAD_GPMI_D12__GPMI_D12 0x00c0 | ||
623 | MX23_PAD_GPMI_D13__GPMI_D13 0x00d0 | ||
624 | MX23_PAD_GPMI_D14__GPMI_D14 0x00e0 | ||
625 | MX23_PAD_GPMI_D15__GPMI_D15 0x00f0 | ||
626 | MX23_PAD_GPMI_CLE__GPMI_CLE 0x0100 | ||
627 | MX23_PAD_GPMI_ALE__GPMI_ALE 0x0110 | ||
628 | MX23_PAD_GPMI_CE2N__GPMI_CE2N 0x0120 | ||
629 | MX23_PAD_GPMI_RDY0__GPMI_RDY0 0x0130 | ||
630 | MX23_PAD_GPMI_RDY1__GPMI_RDY1 0x0140 | ||
631 | MX23_PAD_GPMI_RDY2__GPMI_RDY2 0x0150 | ||
632 | MX23_PAD_GPMI_RDY3__GPMI_RDY3 0x0160 | ||
633 | MX23_PAD_GPMI_WPN__GPMI_WPN 0x0170 | ||
634 | MX23_PAD_GPMI_WRN__GPMI_WRN 0x0180 | ||
635 | MX23_PAD_GPMI_RDN__GPMI_RDN 0x0190 | ||
636 | MX23_PAD_AUART1_CTS__AUART1_CTS 0x01a0 | ||
637 | MX23_PAD_AUART1_RTS__AUART1_RTS 0x01b0 | ||
638 | MX23_PAD_AUART1_RX__AUART1_RX 0x01c0 | ||
639 | MX23_PAD_AUART1_TX__AUART1_TX 0x01d0 | ||
640 | MX23_PAD_I2C_SCL__I2C_SCL 0x01e0 | ||
641 | MX23_PAD_I2C_SDA__I2C_SDA 0x01f0 | ||
642 | MX23_PAD_LCD_D00__LCD_D00 0x1000 | ||
643 | MX23_PAD_LCD_D01__LCD_D01 0x1010 | ||
644 | MX23_PAD_LCD_D02__LCD_D02 0x1020 | ||
645 | MX23_PAD_LCD_D03__LCD_D03 0x1030 | ||
646 | MX23_PAD_LCD_D04__LCD_D04 0x1040 | ||
647 | MX23_PAD_LCD_D05__LCD_D05 0x1050 | ||
648 | MX23_PAD_LCD_D06__LCD_D06 0x1060 | ||
649 | MX23_PAD_LCD_D07__LCD_D07 0x1070 | ||
650 | MX23_PAD_LCD_D08__LCD_D08 0x1080 | ||
651 | MX23_PAD_LCD_D09__LCD_D09 0x1090 | ||
652 | MX23_PAD_LCD_D10__LCD_D10 0x10a0 | ||
653 | MX23_PAD_LCD_D11__LCD_D11 0x10b0 | ||
654 | MX23_PAD_LCD_D12__LCD_D12 0x10c0 | ||
655 | MX23_PAD_LCD_D13__LCD_D13 0x10d0 | ||
656 | MX23_PAD_LCD_D14__LCD_D14 0x10e0 | ||
657 | MX23_PAD_LCD_D15__LCD_D15 0x10f0 | ||
658 | MX23_PAD_LCD_D16__LCD_D16 0x1100 | ||
659 | MX23_PAD_LCD_D17__LCD_D17 0x1110 | ||
660 | MX23_PAD_LCD_RESET__LCD_RESET 0x1120 | ||
661 | MX23_PAD_LCD_RS__LCD_RS 0x1130 | ||
662 | MX23_PAD_LCD_WR__LCD_WR 0x1140 | ||
663 | MX23_PAD_LCD_CS__LCD_CS 0x1150 | ||
664 | MX23_PAD_LCD_DOTCK__LCD_DOTCK 0x1160 | ||
665 | MX23_PAD_LCD_ENABLE__LCD_ENABLE 0x1170 | ||
666 | MX23_PAD_LCD_HSYNC__LCD_HSYNC 0x1180 | ||
667 | MX23_PAD_LCD_VSYNC__LCD_VSYNC 0x1190 | ||
668 | MX23_PAD_PWM0__PWM0 0x11a0 | ||
669 | MX23_PAD_PWM1__PWM1 0x11b0 | ||
670 | MX23_PAD_PWM2__PWM2 0x11c0 | ||
671 | MX23_PAD_PWM3__PWM3 0x11d0 | ||
672 | MX23_PAD_PWM4__PWM4 0x11e0 | ||
673 | MX23_PAD_SSP1_CMD__SSP1_CMD 0x2000 | ||
674 | MX23_PAD_SSP1_DETECT__SSP1_DETECT 0x2010 | ||
675 | MX23_PAD_SSP1_DATA0__SSP1_DATA0 0x2020 | ||
676 | MX23_PAD_SSP1_DATA1__SSP1_DATA1 0x2030 | ||
677 | MX23_PAD_SSP1_DATA2__SSP1_DATA2 0x2040 | ||
678 | MX23_PAD_SSP1_DATA3__SSP1_DATA3 0x2050 | ||
679 | MX23_PAD_SSP1_SCK__SSP1_SCK 0x2060 | ||
680 | MX23_PAD_ROTARYA__ROTARYA 0x2070 | ||
681 | MX23_PAD_ROTARYB__ROTARYB 0x2080 | ||
682 | MX23_PAD_EMI_A00__EMI_A00 0x2090 | ||
683 | MX23_PAD_EMI_A01__EMI_A01 0x20a0 | ||
684 | MX23_PAD_EMI_A02__EMI_A02 0x20b0 | ||
685 | MX23_PAD_EMI_A03__EMI_A03 0x20c0 | ||
686 | MX23_PAD_EMI_A04__EMI_A04 0x20d0 | ||
687 | MX23_PAD_EMI_A05__EMI_A05 0x20e0 | ||
688 | MX23_PAD_EMI_A06__EMI_A06 0x20f0 | ||
689 | MX23_PAD_EMI_A07__EMI_A07 0x2100 | ||
690 | MX23_PAD_EMI_A08__EMI_A08 0x2110 | ||
691 | MX23_PAD_EMI_A09__EMI_A09 0x2120 | ||
692 | MX23_PAD_EMI_A10__EMI_A10 0x2130 | ||
693 | MX23_PAD_EMI_A11__EMI_A11 0x2140 | ||
694 | MX23_PAD_EMI_A12__EMI_A12 0x2150 | ||
695 | MX23_PAD_EMI_BA0__EMI_BA0 0x2160 | ||
696 | MX23_PAD_EMI_BA1__EMI_BA1 0x2170 | ||
697 | MX23_PAD_EMI_CASN__EMI_CASN 0x2180 | ||
698 | MX23_PAD_EMI_CE0N__EMI_CE0N 0x2190 | ||
699 | MX23_PAD_EMI_CE1N__EMI_CE1N 0x21a0 | ||
700 | MX23_PAD_GPMI_CE1N__GPMI_CE1N 0x21b0 | ||
701 | MX23_PAD_GPMI_CE0N__GPMI_CE0N 0x21c0 | ||
702 | MX23_PAD_EMI_CKE__EMI_CKE 0x21d0 | ||
703 | MX23_PAD_EMI_RASN__EMI_RASN 0x21e0 | ||
704 | MX23_PAD_EMI_WEN__EMI_WEN 0x21f0 | ||
705 | MX23_PAD_EMI_D00__EMI_D00 0x3000 | ||
706 | MX23_PAD_EMI_D01__EMI_D01 0x3010 | ||
707 | MX23_PAD_EMI_D02__EMI_D02 0x3020 | ||
708 | MX23_PAD_EMI_D03__EMI_D03 0x3030 | ||
709 | MX23_PAD_EMI_D04__EMI_D04 0x3040 | ||
710 | MX23_PAD_EMI_D05__EMI_D05 0x3050 | ||
711 | MX23_PAD_EMI_D06__EMI_D06 0x3060 | ||
712 | MX23_PAD_EMI_D07__EMI_D07 0x3070 | ||
713 | MX23_PAD_EMI_D08__EMI_D08 0x3080 | ||
714 | MX23_PAD_EMI_D09__EMI_D09 0x3090 | ||
715 | MX23_PAD_EMI_D10__EMI_D10 0x30a0 | ||
716 | MX23_PAD_EMI_D11__EMI_D11 0x30b0 | ||
717 | MX23_PAD_EMI_D12__EMI_D12 0x30c0 | ||
718 | MX23_PAD_EMI_D13__EMI_D13 0x30d0 | ||
719 | MX23_PAD_EMI_D14__EMI_D14 0x30e0 | ||
720 | MX23_PAD_EMI_D15__EMI_D15 0x30f0 | ||
721 | MX23_PAD_EMI_DQM0__EMI_DQM0 0x3100 | ||
722 | MX23_PAD_EMI_DQM1__EMI_DQM1 0x3110 | ||
723 | MX23_PAD_EMI_DQS0__EMI_DQS0 0x3120 | ||
724 | MX23_PAD_EMI_DQS1__EMI_DQS1 0x3130 | ||
725 | MX23_PAD_EMI_CLK__EMI_CLK 0x3140 | ||
726 | MX23_PAD_EMI_CLKN__EMI_CLKN 0x3150 | ||
727 | MX23_PAD_GPMI_D00__LCD_D8 0x0001 | ||
728 | MX23_PAD_GPMI_D01__LCD_D9 0x0011 | ||
729 | MX23_PAD_GPMI_D02__LCD_D10 0x0021 | ||
730 | MX23_PAD_GPMI_D03__LCD_D11 0x0031 | ||
731 | MX23_PAD_GPMI_D04__LCD_D12 0x0041 | ||
732 | MX23_PAD_GPMI_D05__LCD_D13 0x0051 | ||
733 | MX23_PAD_GPMI_D06__LCD_D14 0x0061 | ||
734 | MX23_PAD_GPMI_D07__LCD_D15 0x0071 | ||
735 | MX23_PAD_GPMI_D08__LCD_D18 0x0081 | ||
736 | MX23_PAD_GPMI_D09__LCD_D19 0x0091 | ||
737 | MX23_PAD_GPMI_D10__LCD_D20 0x00a1 | ||
738 | MX23_PAD_GPMI_D11__LCD_D21 0x00b1 | ||
739 | MX23_PAD_GPMI_D12__LCD_D22 0x00c1 | ||
740 | MX23_PAD_GPMI_D13__LCD_D23 0x00d1 | ||
741 | MX23_PAD_GPMI_D14__AUART2_RX 0x00e1 | ||
742 | MX23_PAD_GPMI_D15__AUART2_TX 0x00f1 | ||
743 | MX23_PAD_GPMI_CLE__LCD_D16 0x0101 | ||
744 | MX23_PAD_GPMI_ALE__LCD_D17 0x0111 | ||
745 | MX23_PAD_GPMI_CE2N__ATA_A2 0x0121 | ||
746 | MX23_PAD_AUART1_RTS__IR_CLK 0x01b1 | ||
747 | MX23_PAD_AUART1_RX__IR_RX 0x01c1 | ||
748 | MX23_PAD_AUART1_TX__IR_TX 0x01d1 | ||
749 | MX23_PAD_I2C_SCL__GPMI_RDY2 0x01e1 | ||
750 | MX23_PAD_I2C_SDA__GPMI_CE2N 0x01f1 | ||
751 | MX23_PAD_LCD_D00__ETM_DA8 0x1001 | ||
752 | MX23_PAD_LCD_D01__ETM_DA9 0x1011 | ||
753 | MX23_PAD_LCD_D02__ETM_DA10 0x1021 | ||
754 | MX23_PAD_LCD_D03__ETM_DA11 0x1031 | ||
755 | MX23_PAD_LCD_D04__ETM_DA12 0x1041 | ||
756 | MX23_PAD_LCD_D05__ETM_DA13 0x1051 | ||
757 | MX23_PAD_LCD_D06__ETM_DA14 0x1061 | ||
758 | MX23_PAD_LCD_D07__ETM_DA15 0x1071 | ||
759 | MX23_PAD_LCD_D08__ETM_DA0 0x1081 | ||
760 | MX23_PAD_LCD_D09__ETM_DA1 0x1091 | ||
761 | MX23_PAD_LCD_D10__ETM_DA2 0x10a1 | ||
762 | MX23_PAD_LCD_D11__ETM_DA3 0x10b1 | ||
763 | MX23_PAD_LCD_D12__ETM_DA4 0x10c1 | ||
764 | MX23_PAD_LCD_D13__ETM_DA5 0x10d1 | ||
765 | MX23_PAD_LCD_D14__ETM_DA6 0x10e1 | ||
766 | MX23_PAD_LCD_D15__ETM_DA7 0x10f1 | ||
767 | MX23_PAD_LCD_RESET__ETM_TCTL 0x1121 | ||
768 | MX23_PAD_LCD_RS__ETM_TCLK 0x1131 | ||
769 | MX23_PAD_LCD_DOTCK__GPMI_RDY3 0x1161 | ||
770 | MX23_PAD_LCD_ENABLE__I2C_SCL 0x1171 | ||
771 | MX23_PAD_LCD_HSYNC__I2C_SDA 0x1181 | ||
772 | MX23_PAD_LCD_VSYNC__LCD_BUSY 0x1191 | ||
773 | MX23_PAD_PWM0__ROTARYA 0x11a1 | ||
774 | MX23_PAD_PWM1__ROTARYB 0x11b1 | ||
775 | MX23_PAD_PWM2__GPMI_RDY3 0x11c1 | ||
776 | MX23_PAD_PWM3__ETM_TCTL 0x11d1 | ||
777 | MX23_PAD_PWM4__ETM_TCLK 0x11e1 | ||
778 | MX23_PAD_SSP1_DETECT__GPMI_CE3N 0x2011 | ||
779 | MX23_PAD_SSP1_DATA1__I2C_SCL 0x2031 | ||
780 | MX23_PAD_SSP1_DATA2__I2C_SDA 0x2041 | ||
781 | MX23_PAD_ROTARYA__AUART2_RTS 0x2071 | ||
782 | MX23_PAD_ROTARYB__AUART2_CTS 0x2081 | ||
783 | MX23_PAD_GPMI_D00__SSP2_DATA0 0x0002 | ||
784 | MX23_PAD_GPMI_D01__SSP2_DATA1 0x0012 | ||
785 | MX23_PAD_GPMI_D02__SSP2_DATA2 0x0022 | ||
786 | MX23_PAD_GPMI_D03__SSP2_DATA3 0x0032 | ||
787 | MX23_PAD_GPMI_D04__SSP2_DATA4 0x0042 | ||
788 | MX23_PAD_GPMI_D05__SSP2_DATA5 0x0052 | ||
789 | MX23_PAD_GPMI_D06__SSP2_DATA6 0x0062 | ||
790 | MX23_PAD_GPMI_D07__SSP2_DATA7 0x0072 | ||
791 | MX23_PAD_GPMI_D08__SSP1_DATA4 0x0082 | ||
792 | MX23_PAD_GPMI_D09__SSP1_DATA5 0x0092 | ||
793 | MX23_PAD_GPMI_D10__SSP1_DATA6 0x00a2 | ||
794 | MX23_PAD_GPMI_D11__SSP1_DATA7 0x00b2 | ||
795 | MX23_PAD_GPMI_D15__GPMI_CE3N 0x00f2 | ||
796 | MX23_PAD_GPMI_RDY0__SSP2_DETECT 0x0132 | ||
797 | MX23_PAD_GPMI_RDY1__SSP2_CMD 0x0142 | ||
798 | MX23_PAD_GPMI_WRN__SSP2_SCK 0x0182 | ||
799 | MX23_PAD_AUART1_CTS__SSP1_DATA4 0x01a2 | ||
800 | MX23_PAD_AUART1_RTS__SSP1_DATA5 0x01b2 | ||
801 | MX23_PAD_AUART1_RX__SSP1_DATA6 0x01c2 | ||
802 | MX23_PAD_AUART1_TX__SSP1_DATA7 0x01d2 | ||
803 | MX23_PAD_I2C_SCL__AUART1_TX 0x01e2 | ||
804 | MX23_PAD_I2C_SDA__AUART1_RX 0x01f2 | ||
805 | MX23_PAD_LCD_D08__SAIF2_SDATA0 0x1082 | ||
806 | MX23_PAD_LCD_D09__SAIF1_SDATA0 0x1092 | ||
807 | MX23_PAD_LCD_D10__SAIF_MCLK_BITCLK 0x10a2 | ||
808 | MX23_PAD_LCD_D11__SAIF_LRCLK 0x10b2 | ||
809 | MX23_PAD_LCD_D12__SAIF2_SDATA1 0x10c2 | ||
810 | MX23_PAD_LCD_D13__SAIF2_SDATA2 0x10d2 | ||
811 | MX23_PAD_LCD_D14__SAIF1_SDATA2 0x10e2 | ||
812 | MX23_PAD_LCD_D15__SAIF1_SDATA1 0x10f2 | ||
813 | MX23_PAD_LCD_D16__SAIF_ALT_BITCLK 0x1102 | ||
814 | MX23_PAD_LCD_RESET__GPMI_CE3N 0x1122 | ||
815 | MX23_PAD_PWM0__DUART_RX 0x11a2 | ||
816 | MX23_PAD_PWM1__DUART_TX 0x11b2 | ||
817 | MX23_PAD_PWM3__AUART1_CTS 0x11d2 | ||
818 | MX23_PAD_PWM4__AUART1_RTS 0x11e2 | ||
819 | MX23_PAD_SSP1_CMD__JTAG_TDO 0x2002 | ||
820 | MX23_PAD_SSP1_DETECT__USB_OTG_ID 0x2012 | ||
821 | MX23_PAD_SSP1_DATA0__JTAG_TDI 0x2022 | ||
822 | MX23_PAD_SSP1_DATA1__JTAG_TCLK 0x2032 | ||
823 | MX23_PAD_SSP1_DATA2__JTAG_RTCK 0x2042 | ||
824 | MX23_PAD_SSP1_DATA3__JTAG_TMS 0x2052 | ||
825 | MX23_PAD_SSP1_SCK__JTAG_TRST 0x2062 | ||
826 | MX23_PAD_ROTARYA__SPDIF 0x2072 | ||
827 | MX23_PAD_ROTARYB__GPMI_CE3N 0x2082 | ||
828 | MX23_PAD_GPMI_D00__GPIO_0_0 0x0003 | ||
829 | MX23_PAD_GPMI_D01__GPIO_0_1 0x0013 | ||
830 | MX23_PAD_GPMI_D02__GPIO_0_2 0x0023 | ||
831 | MX23_PAD_GPMI_D03__GPIO_0_3 0x0033 | ||
832 | MX23_PAD_GPMI_D04__GPIO_0_4 0x0043 | ||
833 | MX23_PAD_GPMI_D05__GPIO_0_5 0x0053 | ||
834 | MX23_PAD_GPMI_D06__GPIO_0_6 0x0063 | ||
835 | MX23_PAD_GPMI_D07__GPIO_0_7 0x0073 | ||
836 | MX23_PAD_GPMI_D08__GPIO_0_8 0x0083 | ||
837 | MX23_PAD_GPMI_D09__GPIO_0_9 0x0093 | ||
838 | MX23_PAD_GPMI_D10__GPIO_0_10 0x00a3 | ||
839 | MX23_PAD_GPMI_D11__GPIO_0_11 0x00b3 | ||
840 | MX23_PAD_GPMI_D12__GPIO_0_12 0x00c3 | ||
841 | MX23_PAD_GPMI_D13__GPIO_0_13 0x00d3 | ||
842 | MX23_PAD_GPMI_D14__GPIO_0_14 0x00e3 | ||
843 | MX23_PAD_GPMI_D15__GPIO_0_15 0x00f3 | ||
844 | MX23_PAD_GPMI_CLE__GPIO_0_16 0x0103 | ||
845 | MX23_PAD_GPMI_ALE__GPIO_0_17 0x0113 | ||
846 | MX23_PAD_GPMI_CE2N__GPIO_0_18 0x0123 | ||
847 | MX23_PAD_GPMI_RDY0__GPIO_0_19 0x0133 | ||
848 | MX23_PAD_GPMI_RDY1__GPIO_0_20 0x0143 | ||
849 | MX23_PAD_GPMI_RDY2__GPIO_0_21 0x0153 | ||
850 | MX23_PAD_GPMI_RDY3__GPIO_0_22 0x0163 | ||
851 | MX23_PAD_GPMI_WPN__GPIO_0_23 0x0173 | ||
852 | MX23_PAD_GPMI_WRN__GPIO_0_24 0x0183 | ||
853 | MX23_PAD_GPMI_RDN__GPIO_0_25 0x0193 | ||
854 | MX23_PAD_AUART1_CTS__GPIO_0_26 0x01a3 | ||
855 | MX23_PAD_AUART1_RTS__GPIO_0_27 0x01b3 | ||
856 | MX23_PAD_AUART1_RX__GPIO_0_28 0x01c3 | ||
857 | MX23_PAD_AUART1_TX__GPIO_0_29 0x01d3 | ||
858 | MX23_PAD_I2C_SCL__GPIO_0_30 0x01e3 | ||
859 | MX23_PAD_I2C_SDA__GPIO_0_31 0x01f3 | ||
860 | MX23_PAD_LCD_D00__GPIO_1_0 0x1003 | ||
861 | MX23_PAD_LCD_D01__GPIO_1_1 0x1013 | ||
862 | MX23_PAD_LCD_D02__GPIO_1_2 0x1023 | ||
863 | MX23_PAD_LCD_D03__GPIO_1_3 0x1033 | ||
864 | MX23_PAD_LCD_D04__GPIO_1_4 0x1043 | ||
865 | MX23_PAD_LCD_D05__GPIO_1_5 0x1053 | ||
866 | MX23_PAD_LCD_D06__GPIO_1_6 0x1063 | ||
867 | MX23_PAD_LCD_D07__GPIO_1_7 0x1073 | ||
868 | MX23_PAD_LCD_D08__GPIO_1_8 0x1083 | ||
869 | MX23_PAD_LCD_D09__GPIO_1_9 0x1093 | ||
870 | MX23_PAD_LCD_D10__GPIO_1_10 0x10a3 | ||
871 | MX23_PAD_LCD_D11__GPIO_1_11 0x10b3 | ||
872 | MX23_PAD_LCD_D12__GPIO_1_12 0x10c3 | ||
873 | MX23_PAD_LCD_D13__GPIO_1_13 0x10d3 | ||
874 | MX23_PAD_LCD_D14__GPIO_1_14 0x10e3 | ||
875 | MX23_PAD_LCD_D15__GPIO_1_15 0x10f3 | ||
876 | MX23_PAD_LCD_D16__GPIO_1_16 0x1103 | ||
877 | MX23_PAD_LCD_D17__GPIO_1_17 0x1113 | ||
878 | MX23_PAD_LCD_RESET__GPIO_1_18 0x1123 | ||
879 | MX23_PAD_LCD_RS__GPIO_1_19 0x1133 | ||
880 | MX23_PAD_LCD_WR__GPIO_1_20 0x1143 | ||
881 | MX23_PAD_LCD_CS__GPIO_1_21 0x1153 | ||
882 | MX23_PAD_LCD_DOTCK__GPIO_1_22 0x1163 | ||
883 | MX23_PAD_LCD_ENABLE__GPIO_1_23 0x1173 | ||
884 | MX23_PAD_LCD_HSYNC__GPIO_1_24 0x1183 | ||
885 | MX23_PAD_LCD_VSYNC__GPIO_1_25 0x1193 | ||
886 | MX23_PAD_PWM0__GPIO_1_26 0x11a3 | ||
887 | MX23_PAD_PWM1__GPIO_1_27 0x11b3 | ||
888 | MX23_PAD_PWM2__GPIO_1_28 0x11c3 | ||
889 | MX23_PAD_PWM3__GPIO_1_29 0x11d3 | ||
890 | MX23_PAD_PWM4__GPIO_1_30 0x11e3 | ||
891 | MX23_PAD_SSP1_CMD__GPIO_2_0 0x2003 | ||
892 | MX23_PAD_SSP1_DETECT__GPIO_2_1 0x2013 | ||
893 | MX23_PAD_SSP1_DATA0__GPIO_2_2 0x2023 | ||
894 | MX23_PAD_SSP1_DATA1__GPIO_2_3 0x2033 | ||
895 | MX23_PAD_SSP1_DATA2__GPIO_2_4 0x2043 | ||
896 | MX23_PAD_SSP1_DATA3__GPIO_2_5 0x2053 | ||
897 | MX23_PAD_SSP1_SCK__GPIO_2_6 0x2063 | ||
898 | MX23_PAD_ROTARYA__GPIO_2_7 0x2073 | ||
899 | MX23_PAD_ROTARYB__GPIO_2_8 0x2083 | ||
900 | MX23_PAD_EMI_A00__GPIO_2_9 0x2093 | ||
901 | MX23_PAD_EMI_A01__GPIO_2_10 0x20a3 | ||
902 | MX23_PAD_EMI_A02__GPIO_2_11 0x20b3 | ||
903 | MX23_PAD_EMI_A03__GPIO_2_12 0x20c3 | ||
904 | MX23_PAD_EMI_A04__GPIO_2_13 0x20d3 | ||
905 | MX23_PAD_EMI_A05__GPIO_2_14 0x20e3 | ||
906 | MX23_PAD_EMI_A06__GPIO_2_15 0x20f3 | ||
907 | MX23_PAD_EMI_A07__GPIO_2_16 0x2103 | ||
908 | MX23_PAD_EMI_A08__GPIO_2_17 0x2113 | ||
909 | MX23_PAD_EMI_A09__GPIO_2_18 0x2123 | ||
910 | MX23_PAD_EMI_A10__GPIO_2_19 0x2133 | ||
911 | MX23_PAD_EMI_A11__GPIO_2_20 0x2143 | ||
912 | MX23_PAD_EMI_A12__GPIO_2_21 0x2153 | ||
913 | MX23_PAD_EMI_BA0__GPIO_2_22 0x2163 | ||
914 | MX23_PAD_EMI_BA1__GPIO_2_23 0x2173 | ||
915 | MX23_PAD_EMI_CASN__GPIO_2_24 0x2183 | ||
916 | MX23_PAD_EMI_CE0N__GPIO_2_25 0x2193 | ||
917 | MX23_PAD_EMI_CE1N__GPIO_2_26 0x21a3 | ||
918 | MX23_PAD_GPMI_CE1N__GPIO_2_27 0x21b3 | ||
919 | MX23_PAD_GPMI_CE0N__GPIO_2_28 0x21c3 | ||
920 | MX23_PAD_EMI_CKE__GPIO_2_29 0x21d3 | ||
921 | MX23_PAD_EMI_RASN__GPIO_2_30 0x21e3 | ||
922 | MX23_PAD_EMI_WEN__GPIO_2_31 0x21f3 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt index e204d009f16c..fb70856c5b51 100644 --- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra114-pinmux.txt | |||
@@ -80,6 +80,17 @@ Valid values for pin and group names are: | |||
80 | dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg, | 80 | dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg, |
81 | gmh, owr, uda. | 81 | gmh, owr, uda. |
82 | 82 | ||
83 | Valid values for nvidia,functions are: | ||
84 | |||
85 | blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3, displaya, | ||
86 | displaya_alt, displayb, dtv, emc_dll, extperiph1, extperiph2, | ||
87 | extperiph3, gmi, gmi_alt, hda, hsi, i2c1, i2c2, i2c3, i2c4, i2cpwr, | ||
88 | i2s0, i2s1, i2s2, i2s3, i2s4, irda, kbc, nand, nand_alt, owr, pmi, | ||
89 | pwm0, pwm1, pwm2, pwm3, pwron, reset_out_n, rsvd1, rsvd2, rsvd3, | ||
90 | rsvd4, sdmmc1, sdmmc2, sdmmc3, sdmmc4, soc, spdif, spi1, spi2, spi3, | ||
91 | spi4, spi5, spi6, sysclk, trace, uarta, uartb, uartc, uartd, ulpi, | ||
92 | usb, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6, vi, vi_alt1, vi_alt3 | ||
93 | |||
83 | Example: | 94 | Example: |
84 | 95 | ||
85 | pinmux: pinmux { | 96 | pinmux: pinmux { |
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt index 683fde93c4fb..61e73cde9ae9 100644 --- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt | |||
@@ -103,6 +103,17 @@ Valid values for pin and group names are: | |||
103 | drive_gma, drive_gmb, drive_gmc, drive_gmd, drive_gme, drive_owr, | 103 | drive_gma, drive_gmb, drive_gmc, drive_gmd, drive_gme, drive_owr, |
104 | drive_uda. | 104 | drive_uda. |
105 | 105 | ||
106 | Valid values for nvidia,functions are: | ||
107 | |||
108 | ahb_clk, apb_clk, audio_sync, crt, dap1, dap2, dap3, dap4, dap5, | ||
109 | displaya, displayb, emc_test0_dll, emc_test1_dll, gmi, gmi_int, | ||
110 | hdmi, i2cp, i2c1, i2c2, i2c3, ide, irda, kbc, mio, mipi_hs, nand, | ||
111 | osc, owr, pcie, plla_out, pllc_out1, pllm_out1, pllp_out2, pllp_out3, | ||
112 | pllp_out4, pwm, pwr_intr, pwr_on, rsvd1, rsvd2, rsvd3, rsvd4, rtck, | ||
113 | sdio1, sdio2, sdio3, sdio4, sflash, spdif, spi1, spi2, spi2_alt, | ||
114 | spi3, spi4, trace, twc, uarta, uartb, uartc, uartd, uarte, ulpi, | ||
115 | vi, vi_sensor_clk, xio | ||
116 | |||
106 | Example: | 117 | Example: |
107 | 118 | ||
108 | pinctrl@70000000 { | 119 | pinctrl@70000000 { |
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt index 6f426ed7009e..0e6354c11e6d 100644 --- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt | |||
@@ -91,6 +91,18 @@ Valid values for pin and group names are: | |||
91 | gmh, gpv, lcd1, lcd2, owr, sdio1, sdio2, sdio3, spi, uaa, uab, uart2, | 91 | gmh, gpv, lcd1, lcd2, owr, sdio1, sdio2, sdio3, spi, uaa, uab, uart2, |
92 | uart3, uda, vi1. | 92 | uart3, uda, vi1. |
93 | 93 | ||
94 | Valid values for nvidia,functions are: | ||
95 | |||
96 | blink, cec, clk_12m_out, clk_32k_in, core_pwr_req, cpu_pwr_req, crt, | ||
97 | dap, ddr, dev3, displaya, displayb, dtv, extperiph1, extperiph2, | ||
98 | extperiph3, gmi, gmi_alt, hda, hdcp, hdmi, hsi, i2c1, i2c2, i2c3, | ||
99 | i2c4, i2cpwr, i2s0, i2s1, i2s2, i2s3, i2s4, invalid, kbc, mio, nand, | ||
100 | nand_alt, owr, pcie, pwm0, pwm1, pwm2, pwm3, pwr_int_n, rsvd1, rsvd2, | ||
101 | rsvd3, rsvd4, rtck, sata, sdmmc1, sdmmc2, sdmmc3, sdmmc4, spdif, spi1, | ||
102 | spi2, spi2_alt, spi3, spi4, spi5, spi6, sysclk, test, trace, uarta, | ||
103 | uartb, uartc, uartd, uarte, ulpi, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6, | ||
104 | vi, vi_alt1, vi_alt2, vi_alt3 | ||
105 | |||
94 | Example: | 106 | Example: |
95 | 107 | ||
96 | pinctrl@70000000 { | 108 | pinctrl@70000000 { |
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt index aeb3c995cc04..1958ca9f9e5c 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt | |||
@@ -127,21 +127,20 @@ whether there is any interaction between the child and intermediate parent | |||
127 | nodes, is again defined entirely by the binding for the individual pin | 127 | nodes, is again defined entirely by the binding for the individual pin |
128 | controller device. | 128 | controller device. |
129 | 129 | ||
130 | == Using generic pinconfig options == | 130 | == Generic pin configuration node content == |
131 | 131 | ||
132 | Generic pinconfig parameters can be used by defining a separate node containing | 132 | Many data items that are represented in a pin configuration node are common |
133 | the applicable parameters (and optional values), like: | 133 | and generic. Pin control bindings should use the properties defined below |
134 | where they are applicable; not all of these properties are relevant or useful | ||
135 | for all hardware or binding structures. Each individual binding document | ||
136 | should state which of these generic properties, if any, are used, and the | ||
137 | structure of the DT nodes that contain these properties. | ||
134 | 138 | ||
135 | pcfg_pull_up: pcfg_pull_up { | 139 | Supported generic properties are: |
136 | bias-pull-up; | ||
137 | drive-strength = <20>; | ||
138 | }; | ||
139 | |||
140 | This node should then be referenced in the appropriate pinctrl node as a phandle | ||
141 | and parsed in the driver using the pinconf_generic_parse_dt_config function. | ||
142 | |||
143 | Supported configuration parameters are: | ||
144 | 140 | ||
141 | pins - the list of pins that properties in the node | ||
142 | apply to | ||
143 | function - the mux function to select | ||
145 | bias-disable - disable any pin bias | 144 | bias-disable - disable any pin bias |
146 | bias-high-impedance - high impedance mode ("third-state", "floating") | 145 | bias-high-impedance - high impedance mode ("third-state", "floating") |
147 | bias-bus-hold - latch weakly | 146 | bias-bus-hold - latch weakly |
@@ -160,7 +159,21 @@ low-power-disable - disable low power mode | |||
160 | output-low - set the pin to output mode with low level | 159 | output-low - set the pin to output mode with low level |
161 | output-high - set the pin to output mode with high level | 160 | output-high - set the pin to output mode with high level |
162 | 161 | ||
163 | Arguments for parameters: | 162 | Some of the generic properties take arguments. For those that do, the |
163 | arguments are described below. | ||
164 | |||
165 | - pins takes a list of pin names or IDs as a required argument. The specific | ||
166 | binding for the hardware defines: | ||
167 | - Whether the entries are integers or strings, and their meaning. | ||
168 | |||
169 | - function takes a list of function names/IDs as a required argument. The | ||
170 | specific binding for the hardware defines: | ||
171 | - Whether the entries are integers or strings, and their meaning. | ||
172 | - Whether only a single entry is allowed (which is applied to all entries | ||
173 | in the pins property), or whether there may alternatively be one entry per | ||
174 | entry in the pins property, in which case the list lengths must match, and | ||
175 | for each list index i, the function at list index i is applied to the pin | ||
176 | at list index i. | ||
164 | 177 | ||
165 | - bias-pull-up, -down and -pin-default take as optional argument on hardware | 178 | - bias-pull-up, -down and -pin-default take as optional argument on hardware |
166 | supporting it the pull strength in Ohm. bias-disable will disable the pull. | 179 | supporting it the pull strength in Ohm. bias-disable will disable the pull. |
@@ -170,7 +183,5 @@ Arguments for parameters: | |||
170 | - input-debounce takes the debounce time in usec as argument | 183 | - input-debounce takes the debounce time in usec as argument |
171 | or 0 to disable debouncing | 184 | or 0 to disable debouncing |
172 | 185 | ||
173 | All parameters not listed here, do not take an argument. | ||
174 | |||
175 | More in-depth documentation on these parameters can be found in | 186 | More in-depth documentation on these parameters can be found in |
176 | <include/linux/pinctrl/pinconfig-generic.h> | 187 | <include/linux/pinctrl/pinconfig-generic.h> |
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt new file mode 100644 index 000000000000..caf297bee1fb --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt | |||
@@ -0,0 +1,96 @@ | |||
1 | Palmas Pincontrol bindings | ||
2 | |||
3 | The pins of Palmas device can be set on different option and provides | ||
4 | the configuration for Pull UP/DOWN, open drain etc. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible: It must be one of following: | ||
8 | - "ti,palmas-pinctrl" for Palma series of the pincontrol. | ||
9 | - "ti,tps65913-pinctrl" for Palma series device TPS65913. | ||
10 | - "ti,tps80036-pinctrl" for Palma series device TPS80036. | ||
11 | |||
12 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
13 | common pinctrl bindings used by client devices, including the meaning of the | ||
14 | phrase "pin configuration node". | ||
15 | |||
16 | Palmas's pin configuration nodes act as a container for an arbitrary number of | ||
17 | subnodes. Each of these subnodes represents some desired configuration for a | ||
18 | list of pins. This configuration can include the mux function to select on | ||
19 | those pin(s), and various pin configuration parameters, such as pull-up, | ||
20 | open drain. | ||
21 | |||
22 | The name of each subnode is not important; all subnodes should be enumerated | ||
23 | and processed purely based on their content. | ||
24 | |||
25 | Each subnode only affects those parameters that are explicitly listed. In | ||
26 | other words, a subnode that lists a mux function but no pin configuration | ||
27 | parameters implies no information about any pin configuration parameters. | ||
28 | Similarly, a pin subnode that describes a pullup parameter implies no | ||
29 | information about e.g. the mux function. | ||
30 | |||
31 | Optional properties: | ||
32 | - ti,palmas-enable-dvfs1: Enable DVFS1. Configure pins for DVFS1 mode. | ||
33 | Selection primary or secondary function associated to I2C2_SCL_SCE, | ||
34 | I2C2_SDA_SDO pin/pad for DVFS1 interface | ||
35 | - ti,palmas-enable-dvfs2: Enable DVFS2. Configure pins for DVFS2 mode. | ||
36 | Selection primary or secondary function associated to GPADC_START | ||
37 | and SYSEN2 pin/pad for DVFS2 interface | ||
38 | |||
39 | This binding uses the following generic properties as defined in | ||
40 | pinctrl-bindings.txt: | ||
41 | |||
42 | Required: pins | ||
43 | Options: function, bias-disable, bias-pull-up, bias-pull-down, | ||
44 | drive-open-drain. | ||
45 | |||
46 | Note that many of these properties are only valid for certain specific pins. | ||
47 | See the Palmas device datasheet for complete details regarding which pins | ||
48 | support which functionality. | ||
49 | |||
50 | Valid values for pin names are: | ||
51 | gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8, gpio9, | ||
52 | gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, vac, powergood, | ||
53 | nreswarm, pwrdown, gpadc_start, reset_in, nsleep, enable1, enable2, | ||
54 | int. | ||
55 | |||
56 | Valid value of function names are: | ||
57 | gpio, led, pwm, regen, sysen, clk32kgaudio, id, vbus_det, chrg_det, | ||
58 | vac, vacok, powergood, usb_psel, msecure, pwrhold, int, nreswarm, | ||
59 | simrsto, simrsti, low_vbat, wireless_chrg1, rcm, pwrdown, gpadc_start, | ||
60 | reset_in, nsleep, enable. | ||
61 | |||
62 | There are 4 special functions: opt0, opt1, opt2 and opt3. If any of these | ||
63 | functions is selected then directly pins register will be written with 0, 1, 2 | ||
64 | or 3 respectively if it is valid for that pins or list of pins. | ||
65 | |||
66 | Example: | ||
67 | palmas: tps65913 { | ||
68 | .... | ||
69 | pinctrl { | ||
70 | compatible = "ti,tps65913-pinctrl"; | ||
71 | ti,palmas-enable-dvfs1; | ||
72 | pinctrl-names = "default"; | ||
73 | pinctrl-0 = <&palmas_pins_state>; | ||
74 | |||
75 | palmas_pins_state: pinmux { | ||
76 | gpio0 { | ||
77 | pins = "gpio0"; | ||
78 | function = "id"; | ||
79 | bias-pull-up; | ||
80 | }; | ||
81 | |||
82 | vac { | ||
83 | pins = "vac"; | ||
84 | function = "vacok"; | ||
85 | bias-pull-down; | ||
86 | }; | ||
87 | |||
88 | gpio5 { | ||
89 | pins = "gpio5"; | ||
90 | function = "opt0"; | ||
91 | drive-open-drain = <1>; | ||
92 | }; | ||
93 | }; | ||
94 | }; | ||
95 | .... | ||
96 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt index 5a02e30dd262..7069a0b84e3a 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt | |||
@@ -72,6 +72,13 @@ Optional properties: | |||
72 | /* pin base, nr pins & gpio function */ | 72 | /* pin base, nr pins & gpio function */ |
73 | pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>; | 73 | pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>; |
74 | 74 | ||
75 | - interrupt-controller : standard interrupt controller binding if using | ||
76 | interrupts for wake-up events for example. In this case pinctrl-single | ||
77 | is set up as a chained interrupt controller and the wake-up interrupts | ||
78 | can be requested by the drivers using request_irq(). | ||
79 | |||
80 | - #interrupt-cells : standard interrupt binding if using interrupts | ||
81 | |||
75 | This driver assumes that there is only one register for each pin (unless the | 82 | This driver assumes that there is only one register for each pin (unless the |
76 | pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as | 83 | pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as |
77 | specified in the pinctrl-bindings.txt document in this directory. | 84 | specified in the pinctrl-bindings.txt document in this directory. |
@@ -121,6 +128,8 @@ pmx_core: pinmux@4a100040 { | |||
121 | reg = <0x4a100040 0x0196>; | 128 | reg = <0x4a100040 0x0196>; |
122 | #address-cells = <1>; | 129 | #address-cells = <1>; |
123 | #size-cells = <0>; | 130 | #size-cells = <0>; |
131 | #interrupt-cells = <1>; | ||
132 | interrupt-controller; | ||
124 | pinctrl-single,register-width = <16>; | 133 | pinctrl-single,register-width = <16>; |
125 | pinctrl-single,function-mask = <0xffff>; | 134 | pinctrl-single,function-mask = <0xffff>; |
126 | }; | 135 | }; |
@@ -131,6 +140,8 @@ pmx_wkup: pinmux@4a31e040 { | |||
131 | reg = <0x4a31e040 0x0038>; | 140 | reg = <0x4a31e040 0x0038>; |
132 | #address-cells = <1>; | 141 | #address-cells = <1>; |
133 | #size-cells = <0>; | 142 | #size-cells = <0>; |
143 | #interrupt-cells = <1>; | ||
144 | interrupt-controller; | ||
134 | pinctrl-single,register-width = <16>; | 145 | pinctrl-single,register-width = <16>; |
135 | pinctrl-single,function-mask = <0xffff>; | 146 | pinctrl-single,function-mask = <0xffff>; |
136 | }; | 147 | }; |
diff --git a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt index b0fb1018d7ad..f378d342aae4 100644 --- a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt | |||
@@ -21,10 +21,13 @@ defined as gpio sub-nodes of the pinmux controller. | |||
21 | Required properties for iomux controller: | 21 | Required properties for iomux controller: |
22 | - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl" | 22 | - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl" |
23 | "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl" | 23 | "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl" |
24 | - reg: first element is the general register space of the iomux controller | ||
25 | second element is the separate pull register space of the rk3188 | ||
24 | 26 | ||
25 | Required properties for gpio sub nodes: | 27 | Required properties for gpio sub nodes: |
26 | - compatible: "rockchip,gpio-bank" | 28 | - compatible: "rockchip,gpio-bank", "rockchip,rk3188-gpio-bank0" |
27 | - reg: register of the gpio bank (different than the iomux registerset) | 29 | - reg: register of the gpio bank (different than the iomux registerset) |
30 | second element: separate pull register for rk3188 bank0 | ||
28 | - interrupts: base interrupt of the gpio bank in the interrupt controller | 31 | - interrupts: base interrupt of the gpio bank in the interrupt controller |
29 | - clocks: clock that drives this bank | 32 | - clocks: clock that drives this bank |
30 | - gpio-controller: identifies the node as a gpio controller and pin bank. | 33 | - gpio-controller: identifies the node as a gpio controller and pin bank. |
@@ -95,3 +98,44 @@ uart2: serial@20064000 { | |||
95 | pinctrl-names = "default"; | 98 | pinctrl-names = "default"; |
96 | pinctrl-0 = <&uart2_xfer>; | 99 | pinctrl-0 = <&uart2_xfer>; |
97 | }; | 100 | }; |
101 | |||
102 | Example for rk3188: | ||
103 | |||
104 | pinctrl@20008000 { | ||
105 | compatible = "rockchip,rk3188-pinctrl"; | ||
106 | reg = <0x20008000 0xa0>, | ||
107 | <0x20008164 0x1a0>; | ||
108 | #address-cells = <1>; | ||
109 | #size-cells = <1>; | ||
110 | ranges; | ||
111 | |||
112 | gpio0: gpio0@0x2000a000 { | ||
113 | compatible = "rockchip,rk3188-gpio-bank0"; | ||
114 | reg = <0x2000a000 0x100>, | ||
115 | <0x20004064 0x8>; | ||
116 | interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; | ||
117 | clocks = <&clk_gates8 9>; | ||
118 | |||
119 | gpio-controller; | ||
120 | #gpio-cells = <2>; | ||
121 | |||
122 | interrupt-controller; | ||
123 | #interrupt-cells = <2>; | ||
124 | }; | ||
125 | |||
126 | gpio1: gpio1@0x2003c000 { | ||
127 | compatible = "rockchip,gpio-bank"; | ||
128 | reg = <0x2003c000 0x100>; | ||
129 | interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; | ||
130 | clocks = <&clk_gates8 10>; | ||
131 | |||
132 | gpio-controller; | ||
133 | #gpio-cells = <2>; | ||
134 | |||
135 | interrupt-controller; | ||
136 | #interrupt-cells = <2>; | ||
137 | }; | ||
138 | |||
139 | ... | ||
140 | |||
141 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt index 36281e7a2a46..257677de3e6b 100644 --- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt | |||
@@ -12,6 +12,7 @@ Required Properties: | |||
12 | - "samsung,s3c2440-pinctrl": for S3C2440-compatible pin-controller, | 12 | - "samsung,s3c2440-pinctrl": for S3C2440-compatible pin-controller, |
13 | - "samsung,s3c2450-pinctrl": for S3C2450-compatible pin-controller, | 13 | - "samsung,s3c2450-pinctrl": for S3C2450-compatible pin-controller, |
14 | - "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller, | 14 | - "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller, |
15 | - "samsung,s5pv210-pinctrl": for S5PV210-compatible pin-controller, | ||
15 | - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. | 16 | - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. |
16 | - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. | 17 | - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. |
17 | - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. | 18 | - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. |
@@ -128,7 +129,7 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a | |||
128 | - samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller | 129 | - samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller |
129 | found on Samsung S3C64xx SoCs, | 130 | found on Samsung S3C64xx SoCs, |
130 | - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller | 131 | - samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller |
131 | found on Samsung Exynos4210 SoC. | 132 | found on Samsung Exynos4210 and S5PC110/S5PV210 SoCs. |
132 | - interrupt-parent: phandle of the interrupt parent to which the external | 133 | - interrupt-parent: phandle of the interrupt parent to which the external |
133 | wakeup interrupts are forwarded to. | 134 | wakeup interrupts are forwarded to. |
134 | - interrupts: interrupt used by multiplexed wakeup interrupts. | 135 | - interrupts: interrupt used by multiplexed wakeup interrupts. |
diff --git a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt index 9a2f3f420526..6b33b9f18e88 100644 --- a/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt +++ b/Documentation/devicetree/bindings/pinctrl/ste,nomadik.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | ST Ericsson Nomadik pinmux controller | 1 | ST Ericsson Nomadik pinmux controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "stericsson,nmk-pinctrl", "stericsson,nmk-pinctrl-db8540", | 4 | - compatible: "stericsson,db8500-pinctrl", "stericsson,db8540-pinctrl", |
5 | "stericsson,nmk-pinctrl-stn8815" | 5 | "stericsson,stn8815-pinctrl" |
6 | - reg: Should contain the register physical address and length of the PRCMU. | 6 | - reg: Should contain the register physical address and length of the PRCMU. |
7 | 7 | ||
8 | Please refer to pinctrl-bindings.txt in this directory for details of the | 8 | Please refer to pinctrl-bindings.txt in this directory for details of the |
@@ -68,7 +68,7 @@ Optional subnode-properties: | |||
68 | Example board file extract: | 68 | Example board file extract: |
69 | 69 | ||
70 | pinctrl@80157000 { | 70 | pinctrl@80157000 { |
71 | compatible = "stericsson,nmk-pinctrl"; | 71 | compatible = "stericsson,db8500-pinctrl"; |
72 | reg = <0x80157000 0x2000>; | 72 | reg = <0x80157000 0x2000>; |
73 | 73 | ||
74 | pinctrl-names = "default"; | 74 | pinctrl-names = "default"; |
diff --git a/Documentation/devicetree/bindings/power_supply/msm-poweroff.txt b/Documentation/devicetree/bindings/power_supply/msm-poweroff.txt new file mode 100644 index 000000000000..ce44ad357565 --- /dev/null +++ b/Documentation/devicetree/bindings/power_supply/msm-poweroff.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | MSM Restart Driver | ||
2 | |||
3 | A power supply hold (ps-hold) bit is set to power the msm chipsets. | ||
4 | Clearing that bit allows us to restart/poweroff. The difference | ||
5 | between poweroff and restart is determined by unique power manager IC | ||
6 | settings. | ||
7 | |||
8 | Required Properties: | ||
9 | -compatible: "qcom,pshold" | ||
10 | -reg: Specifies the physical address of the ps-hold register | ||
11 | |||
12 | Example: | ||
13 | |||
14 | restart@fc4ab000 { | ||
15 | compatible = "qcom,pshold"; | ||
16 | reg = <0xfc4ab000 0x4>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt index 5693877ab377..82dd5b65cf48 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/msi-pic.txt | |||
@@ -1,21 +1,20 @@ | |||
1 | * Freescale MSI interrupt controller | 1 | * Freescale MSI interrupt controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : compatible list, contains 2 entries, | 4 | - compatible : compatible list, may contain one or two entries |
5 | first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, | 5 | The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572, |
6 | etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on | 6 | etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or |
7 | the parent type. | 7 | "fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic |
8 | version is 4.3, the number of MSI registers is increased to 16, MSIIR1 is | ||
9 | provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3" | ||
10 | should be used. The first entry is optional; the second entry is | ||
11 | required. | ||
8 | 12 | ||
9 | - reg : It may contain one or two regions. The first region should contain | 13 | - reg : It may contain one or two regions. The first region should contain |
10 | the address and the length of the shared message interrupt register set. | 14 | the address and the length of the shared message interrupt register set. |
11 | The second region should contain the address of aliased MSIIR register for | 15 | The second region should contain the address of aliased MSIIR or MSIIR1 |
12 | platforms that have such an alias. | 16 | register for platforms that have such an alias, if using MSIIR1, the second |
13 | 17 | region must be added because different MSI group has different MSIIR1 offset. | |
14 | - msi-available-ranges: use <start count> style section to define which | ||
15 | msi interrupt can be used in the 256 msi interrupts. This property is | ||
16 | optional, without this, all the 256 MSI interrupts can be used. | ||
17 | Each available range must begin and end on a multiple of 32 (i.e. | ||
18 | no splitting an individual MSI register or the associated PIC interrupt). | ||
19 | 18 | ||
20 | - interrupts : each one of the interrupts here is one entry per 32 MSIs, | 19 | - interrupts : each one of the interrupts here is one entry per 32 MSIs, |
21 | and routed to the host interrupt controller. the interrupts should | 20 | and routed to the host interrupt controller. the interrupts should |
@@ -28,6 +27,14 @@ Required properties: | |||
28 | to MPIC. | 27 | to MPIC. |
29 | 28 | ||
30 | Optional properties: | 29 | Optional properties: |
30 | - msi-available-ranges: use <start count> style section to define which | ||
31 | msi interrupt can be used in the 256 msi interrupts. This property is | ||
32 | optional, without this, all the MSI interrupts can be used. | ||
33 | Each available range must begin and end on a multiple of 32 (i.e. | ||
34 | no splitting an individual MSI register or the associated PIC interrupt). | ||
35 | MPIC v4.3 does not support this property because the 32 interrupts of an | ||
36 | individual register are not continuous when using MSIIR1. | ||
37 | |||
31 | - msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register | 38 | - msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register |
32 | is used for MSI messaging. The address of MSIIR in PCI address space is | 39 | is used for MSI messaging. The address of MSIIR in PCI address space is |
33 | the MSI message address. | 40 | the MSI message address. |
@@ -54,6 +61,28 @@ Example: | |||
54 | interrupt-parent = <&mpic>; | 61 | interrupt-parent = <&mpic>; |
55 | }; | 62 | }; |
56 | 63 | ||
64 | msi@41600 { | ||
65 | compatible = "fsl,mpic-msi-v4.3"; | ||
66 | reg = <0x41600 0x200 0x44148 4>; | ||
67 | interrupts = < | ||
68 | 0xe0 0 0 0 | ||
69 | 0xe1 0 0 0 | ||
70 | 0xe2 0 0 0 | ||
71 | 0xe3 0 0 0 | ||
72 | 0xe4 0 0 0 | ||
73 | 0xe5 0 0 0 | ||
74 | 0xe6 0 0 0 | ||
75 | 0xe7 0 0 0 | ||
76 | 0x100 0 0 0 | ||
77 | 0x101 0 0 0 | ||
78 | 0x102 0 0 0 | ||
79 | 0x103 0 0 0 | ||
80 | 0x104 0 0 0 | ||
81 | 0x105 0 0 0 | ||
82 | 0x106 0 0 0 | ||
83 | 0x107 0 0 0>; | ||
84 | }; | ||
85 | |||
57 | The Freescale hypervisor and msi-address-64 | 86 | The Freescale hypervisor and msi-address-64 |
58 | ------------------------------------------- | 87 | ------------------------------------------- |
59 | Normally, PCI devices have access to all of CCSR via an ATMU mapping. The | 88 | Normally, PCI devices have access to all of CCSR via an ATMU mapping. The |
diff --git a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt index de0eaed86651..8031148bcf85 100644 --- a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt | |||
@@ -2,11 +2,9 @@ Atmel TCB PWM controller | |||
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be "atmel,tcb-pwm" | 4 | - compatible: should be "atmel,tcb-pwm" |
5 | - #pwm-cells: Should be 3. The first cell specifies the per-chip index | 5 | - #pwm-cells: should be 3. See pwm.txt in this directory for a description of |
6 | of the PWM to use, the second cell is the period in nanoseconds and | 6 | the cells format. The only third cell flag supported by this binding is |
7 | bit 0 in the third cell is used to encode the polarity of PWM output. | 7 | PWM_POLARITY_INVERTED. |
8 | Set bit 0 of the third cell in PWM specifier to 1 for inverse polarity & | ||
9 | set to 0 for normal polarity. | ||
10 | - tc-block: The Timer Counter block to use as a PWM chip. | 8 | - tc-block: The Timer Counter block to use as a PWM chip. |
11 | 9 | ||
12 | Example: | 10 | Example: |
diff --git a/Documentation/devicetree/bindings/pwm/imx-pwm.txt b/Documentation/devicetree/bindings/pwm/imx-pwm.txt index 8522bfbccfd7..b50d7a6d9d7f 100644 --- a/Documentation/devicetree/bindings/pwm/imx-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/imx-pwm.txt | |||
@@ -3,8 +3,8 @@ Freescale i.MX PWM controller | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be "fsl,<soc>-pwm" | 4 | - compatible: should be "fsl,<soc>-pwm" |
5 | - reg: physical base address and length of the controller's registers | 5 | - reg: physical base address and length of the controller's registers |
6 | - #pwm-cells: should be 2. The first cell specifies the per-chip index | 6 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
7 | of the PWM to use and the second cell is the period in nanoseconds. | 7 | the cells format. |
8 | - interrupts: The interrupt for the pwm controller | 8 | - interrupts: The interrupt for the pwm controller |
9 | 9 | ||
10 | Example: | 10 | Example: |
diff --git a/Documentation/devicetree/bindings/pwm/mxs-pwm.txt b/Documentation/devicetree/bindings/pwm/mxs-pwm.txt index 9e3f8f1d46a2..96cdde5f6208 100644 --- a/Documentation/devicetree/bindings/pwm/mxs-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/mxs-pwm.txt | |||
@@ -3,8 +3,8 @@ Freescale MXS PWM controller | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be "fsl,imx23-pwm" | 4 | - compatible: should be "fsl,imx23-pwm" |
5 | - reg: physical base address and length of the controller's registers | 5 | - reg: physical base address and length of the controller's registers |
6 | - #pwm-cells: should be 2. The first cell specifies the per-chip index | 6 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
7 | of the PWM to use and the second cell is the period in nanoseconds. | 7 | the cells format. |
8 | - fsl,pwm-number: the number of PWM devices | 8 | - fsl,pwm-number: the number of PWM devices |
9 | 9 | ||
10 | Example: | 10 | Example: |
diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt index 01438ecd6628..c3fc57af8772 100644 --- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt | |||
@@ -5,9 +5,8 @@ Required properties: | |||
5 | - "nvidia,tegra20-pwm" | 5 | - "nvidia,tegra20-pwm" |
6 | - "nvidia,tegra30-pwm" | 6 | - "nvidia,tegra30-pwm" |
7 | - reg: physical base address and length of the controller's registers | 7 | - reg: physical base address and length of the controller's registers |
8 | - #pwm-cells: On Tegra the number of cells used to specify a PWM is 2. The | 8 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
9 | first cell specifies the per-chip index of the PWM to use and the second | 9 | the cells format. |
10 | cell is the period in nanoseconds. | ||
11 | 10 | ||
12 | Example: | 11 | Example: |
13 | 12 | ||
diff --git a/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt b/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt index 1e3dfe7a4894..f84ec9d291ea 100644 --- a/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/nxp,pca9685-pwm.txt | |||
@@ -3,8 +3,8 @@ NXP PCA9685 16-channel 12-bit PWM LED controller | |||
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible: "nxp,pca9685-pwm" | 5 | - compatible: "nxp,pca9685-pwm" |
6 | - #pwm-cells: should be 2. The first cell specifies the per-chip index | 6 | - #pwm-cells: Should be 2. See pwm.txt in this directory for a description of |
7 | of the PWM to use and the second cell is the period in nanoseconds. | 7 | the cells format. |
8 | The index 16 is the ALLCALL channel, that sets all PWM channels at the same | 8 | The index 16 is the ALLCALL channel, that sets all PWM channels at the same |
9 | time. | 9 | time. |
10 | 10 | ||
diff --git a/Documentation/devicetree/bindings/pwm/pwm-samsung.txt b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt index ac67c687a327..d61fccd40bad 100644 --- a/Documentation/devicetree/bindings/pwm/pwm-samsung.txt +++ b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt | |||
@@ -19,13 +19,19 @@ Required properties: | |||
19 | - reg: base address and size of register area | 19 | - reg: base address and size of register area |
20 | - interrupts: list of timer interrupts (one interrupt per timer, starting at | 20 | - interrupts: list of timer interrupts (one interrupt per timer, starting at |
21 | timer 0) | 21 | timer 0) |
22 | - #pwm-cells: number of cells used for PWM specifier - must be 3 | 22 | - clock-names: should contain all following required clock names: |
23 | the specifier format is as follows: | 23 | - "timers" - PWM base clock used to generate PWM signals, |
24 | - phandle to PWM controller node | 24 | and any subset of following optional clock names: |
25 | - index of PWM channel (from 0 to 4) | 25 | - "pwm-tclk0" - first external PWM clock source, |
26 | - PWM signal period in nanoseconds | 26 | - "pwm-tclk1" - second external PWM clock source. |
27 | - bitmask of optional PWM flags: | 27 | Note that not all IP variants allow using all external clock sources. |
28 | 0x1 - invert PWM signal | 28 | Refer to SoC documentation to learn which clock source configurations |
29 | are available. | ||
30 | - clocks: should contain clock specifiers of all clocks, which input names | ||
31 | have been specified in clock-names property, in same order. | ||
32 | - #pwm-cells: should be 3. See pwm.txt in this directory for a description of | ||
33 | the cells format. The only third cell flag supported by this binding is | ||
34 | PWM_POLARITY_INVERTED. | ||
29 | 35 | ||
30 | Optional properties: | 36 | Optional properties: |
31 | - samsung,pwm-outputs: list of PWM channels used as PWM outputs on particular | 37 | - samsung,pwm-outputs: list of PWM channels used as PWM outputs on particular |
@@ -38,6 +44,8 @@ Example: | |||
38 | reg = <0x7f006000 0x1000>; | 44 | reg = <0x7f006000 0x1000>; |
39 | interrupt-parent = <&vic0>; | 45 | interrupt-parent = <&vic0>; |
40 | interrupts = <23>, <24>, <25>, <27>, <28>; | 46 | interrupts = <23>, <24>, <25>, <27>, <28>; |
47 | clocks = <&clock 67>; | ||
48 | clock-names = "timers"; | ||
41 | samsung,pwm-outputs = <0>, <1>; | 49 | samsung,pwm-outputs = <0>, <1>; |
42 | #pwm-cells = <3>; | 50 | #pwm-cells = <3>; |
43 | } | 51 | } |
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt b/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt index 681afad73778..fb81179dce37 100644 --- a/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt +++ b/Documentation/devicetree/bindings/pwm/pwm-tiecap.txt | |||
@@ -4,11 +4,9 @@ Required properties: | |||
4 | - compatible: Must be "ti,<soc>-ecap". | 4 | - compatible: Must be "ti,<soc>-ecap". |
5 | for am33xx - compatible = "ti,am33xx-ecap"; | 5 | for am33xx - compatible = "ti,am33xx-ecap"; |
6 | for da850 - compatible = "ti,da850-ecap", "ti,am33xx-ecap"; | 6 | for da850 - compatible = "ti,da850-ecap", "ti,am33xx-ecap"; |
7 | - #pwm-cells: Should be 3. Number of cells being used to specify PWM property. | 7 | - #pwm-cells: should be 3. See pwm.txt in this directory for a description of |
8 | First cell specifies the per-chip index of the PWM to use, the second | 8 | the cells format. The PWM channel index ranges from 0 to 4. The only third |
9 | cell is the period in nanoseconds and bit 0 in the third cell is used to | 9 | cell flag supported by this binding is PWM_POLARITY_INVERTED. |
10 | encode the polarity of PWM output. Set bit 0 of the third in PWM specifier | ||
11 | to 1 for inverse polarity & set to 0 for normal polarity. | ||
12 | - reg: physical base address and size of the registers map. | 10 | - reg: physical base address and size of the registers map. |
13 | 11 | ||
14 | Optional properties: | 12 | Optional properties: |
diff --git a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt index 337c6fc65d3f..9c100b2c5b23 100644 --- a/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt +++ b/Documentation/devicetree/bindings/pwm/pwm-tiehrpwm.txt | |||
@@ -4,11 +4,9 @@ Required properties: | |||
4 | - compatible: Must be "ti,<soc>-ehrpwm". | 4 | - compatible: Must be "ti,<soc>-ehrpwm". |
5 | for am33xx - compatible = "ti,am33xx-ehrpwm"; | 5 | for am33xx - compatible = "ti,am33xx-ehrpwm"; |
6 | for da850 - compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm"; | 6 | for da850 - compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm"; |
7 | - #pwm-cells: Should be 3. Number of cells being used to specify PWM property. | 7 | - #pwm-cells: should be 3. See pwm.txt in this directory for a description of |
8 | First cell specifies the per-chip index of the PWM to use, the second | 8 | the cells format. The only third cell flag supported by this binding is |
9 | cell is the period in nanoseconds and bit 0 in the third cell is used to | 9 | PWM_POLARITY_INVERTED. |
10 | encode the polarity of PWM output. Set bit 0 of the third in PWM specifier | ||
11 | to 1 for inverse polarity & set to 0 for normal polarity. | ||
12 | - reg: physical base address and size of the registers map. | 10 | - reg: physical base address and size of the registers map. |
13 | 11 | ||
14 | Optional properties: | 12 | Optional properties: |
diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt index 06e67247859a..8556263b8502 100644 --- a/Documentation/devicetree/bindings/pwm/pwm.txt +++ b/Documentation/devicetree/bindings/pwm/pwm.txt | |||
@@ -43,13 +43,14 @@ because the name "backlight" would be used as fallback anyway. | |||
43 | pwm-specifier typically encodes the chip-relative PWM number and the PWM | 43 | pwm-specifier typically encodes the chip-relative PWM number and the PWM |
44 | period in nanoseconds. | 44 | period in nanoseconds. |
45 | 45 | ||
46 | Optionally, the pwm-specifier can encode a number of flags in a third cell: | 46 | Optionally, the pwm-specifier can encode a number of flags (defined in |
47 | - bit 0: PWM signal polarity (0: normal polarity, 1: inverse polarity) | 47 | <dt-bindings/pwm/pwm.h>) in a third cell: |
48 | - PWM_POLARITY_INVERTED: invert the PWM signal polarity | ||
48 | 49 | ||
49 | Example with optional PWM specifier for inverse polarity | 50 | Example with optional PWM specifier for inverse polarity |
50 | 51 | ||
51 | bl: backlight { | 52 | bl: backlight { |
52 | pwms = <&pwm 0 5000000 1>; | 53 | pwms = <&pwm 0 5000000 PWM_POLARITY_INVERTED>; |
53 | pwm-names = "backlight"; | 54 | pwm-names = "backlight"; |
54 | }; | 55 | }; |
55 | 56 | ||
diff --git a/Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.txt b/Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.txt new file mode 100644 index 000000000000..b067e84a94b5 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | * Renesas R-Car Timer Pulse Unit PWM Controller | ||
2 | |||
3 | Required Properties: | ||
4 | |||
5 | - compatible: should be one of the following. | ||
6 | - "renesas,tpu-r8a73a4": for R8A77A4 (R-Mobile APE6) compatible PWM controller. | ||
7 | - "renesas,tpu-r8a7740": for R8A7740 (R-Mobile A1) compatible PWM controller. | ||
8 | - "renesas,tpu-r8a7790": for R8A7790 (R-Car H2) compatible PWM controller. | ||
9 | - "renesas,tpu-sh7372": for SH7372 (SH-Mobile AP4) compatible PWM controller. | ||
10 | - "renesas,tpu": for generic R-Car TPU PWM controller. | ||
11 | |||
12 | - reg: Base address and length of each memory resource used by the PWM | ||
13 | controller hardware module. | ||
14 | |||
15 | - #pwm-cells: should be 3. See pwm.txt in this directory for a description of | ||
16 | the cells format. The only third cell flag supported by this binding is | ||
17 | PWM_POLARITY_INVERTED. | ||
18 | |||
19 | Please refer to pwm.txt in this directory for details of the common PWM bindings | ||
20 | used by client devices. | ||
21 | |||
22 | Example: R8A7740 (R-Car A1) TPU controller node | ||
23 | |||
24 | tpu: pwm@e6600000 { | ||
25 | compatible = "renesas,tpu-r8a7740", "renesas,tpu"; | ||
26 | reg = <0xe6600000 0x100>; | ||
27 | #pwm-cells = <3>; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/pwm/spear-pwm.txt b/Documentation/devicetree/bindings/pwm/spear-pwm.txt index 3ac779d83386..b486de2c3fe3 100644 --- a/Documentation/devicetree/bindings/pwm/spear-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/spear-pwm.txt | |||
@@ -5,9 +5,8 @@ Required properties: | |||
5 | - "st,spear320-pwm" | 5 | - "st,spear320-pwm" |
6 | - "st,spear1340-pwm" | 6 | - "st,spear1340-pwm" |
7 | - reg: physical base address and length of the controller's registers | 7 | - reg: physical base address and length of the controller's registers |
8 | - #pwm-cells: number of cells used to specify PWM which is fixed to 2 on | 8 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
9 | SPEAr. The first cell specifies the per-chip index of the PWM to use and | 9 | the cells format. |
10 | the second cell is the period in nanoseconds. | ||
11 | 10 | ||
12 | Example: | 11 | Example: |
13 | 12 | ||
diff --git a/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt b/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt index 2943ee5fce00..4e32bee11201 100644 --- a/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt | |||
@@ -6,8 +6,8 @@ On TWL6030 series: PWM0 and PWM1 | |||
6 | 6 | ||
7 | Required properties: | 7 | Required properties: |
8 | - compatible: "ti,twl4030-pwm" or "ti,twl6030-pwm" | 8 | - compatible: "ti,twl4030-pwm" or "ti,twl6030-pwm" |
9 | - #pwm-cells: should be 2. The first cell specifies the per-chip index | 9 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
10 | of the PWM to use and the second cell is the period in nanoseconds. | 10 | the cells format. |
11 | 11 | ||
12 | Example: | 12 | Example: |
13 | 13 | ||
diff --git a/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt b/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt index cb64f3acc10f..9f4b46090782 100644 --- a/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt +++ b/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt | |||
@@ -6,8 +6,8 @@ On TWL6030 series: LED PWM (mainly used as charging indicator LED) | |||
6 | 6 | ||
7 | Required properties: | 7 | Required properties: |
8 | - compatible: "ti,twl4030-pwmled" or "ti,twl6030-pwmled" | 8 | - compatible: "ti,twl4030-pwmled" or "ti,twl6030-pwmled" |
9 | - #pwm-cells: should be 2. The first cell specifies the per-chip index | 9 | - #pwm-cells: should be 2. See pwm.txt in this directory for a description of |
10 | of the PWM to use and the second cell is the period in nanoseconds. | 10 | the cells format. |
11 | 11 | ||
12 | Example: | 12 | Example: |
13 | 13 | ||
diff --git a/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt b/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt index d21d82d29855..a76390e6df2e 100644 --- a/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/vt8500-pwm.txt | |||
@@ -3,11 +3,9 @@ VIA/Wondermedia VT8500/WM8xxx series SoC PWM controller | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: should be "via,vt8500-pwm" | 4 | - compatible: should be "via,vt8500-pwm" |
5 | - reg: physical base address and length of the controller's registers | 5 | - reg: physical base address and length of the controller's registers |
6 | - #pwm-cells: Should be 3. Number of cells being used to specify PWM property. | 6 | - #pwm-cells: should be 3. See pwm.txt in this directory for a description of |
7 | First cell specifies the per-chip index of the PWM to use, the second | 7 | the cells format. The only third cell flag supported by this binding is |
8 | cell is the period in nanoseconds and bit 0 in the third cell is used to | 8 | PWM_POLARITY_INVERTED. |
9 | encode the polarity of PWM output. Set bit 0 of the third in PWM specifier | ||
10 | to 1 for inverse polarity & set to 0 for normal polarity. | ||
11 | - clocks: phandle to the PWM source clock | 9 | - clocks: phandle to the PWM source clock |
12 | 10 | ||
13 | Example: | 11 | Example: |
diff --git a/Documentation/devicetree/bindings/regulator/88pm800.txt b/Documentation/devicetree/bindings/regulator/88pm800.txt new file mode 100644 index 000000000000..e8a54c2a5821 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/88pm800.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | Marvell 88PM800 regulator | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "marvell,88pm800" | ||
5 | - reg: I2C slave address | ||
6 | - regulators: A node that houses a sub-node for each regulator within the | ||
7 | device. Each sub-node is identified using the node's name (or the deprecated | ||
8 | regulator-compatible property if present), with valid values listed below. | ||
9 | The content of each sub-node is defined by the standard binding for | ||
10 | regulators; see regulator.txt. | ||
11 | |||
12 | The valid names for regulators are: | ||
13 | |||
14 | buck1, buck2, buck3, buck4, buck5, ldo1, ldo2, ldo3, ldo4, ldo5, ldo6, ldo7, | ||
15 | ldo8, ldo9, ldo10, ldo11, ldo12, ldo13, ldo14, ldo15, ldo16, ldo17, ldo18, ldo19 | ||
16 | |||
17 | Example: | ||
18 | |||
19 | pmic: 88pm800@31 { | ||
20 | compatible = "marvell,88pm800"; | ||
21 | reg = <0x31>; | ||
22 | |||
23 | regulators { | ||
24 | buck1 { | ||
25 | regulator-min-microvolt = <600000>; | ||
26 | regulator-max-microvolt = <3950000>; | ||
27 | regulator-boot-on; | ||
28 | regulator-always-on; | ||
29 | }; | ||
30 | ldo1 { | ||
31 | regulator-min-microvolt = <600000>; | ||
32 | regulator-max-microvolt = <15000000>; | ||
33 | regulator-boot-on; | ||
34 | regulator-always-on; | ||
35 | }; | ||
36 | ... | ||
37 | }; | ||
38 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/as3722-regulator.txt b/Documentation/devicetree/bindings/regulator/as3722-regulator.txt new file mode 100644 index 000000000000..caad0c8a258d --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/as3722-regulator.txt | |||
@@ -0,0 +1,91 @@ | |||
1 | Regulator of AMS AS3722 PMIC. | ||
2 | Name of the regulator subnode must be "regulators". | ||
3 | |||
4 | Optional properties: | ||
5 | -------------------- | ||
6 | The input supply of regulators are the optional properties on the | ||
7 | regulator node. The AS3722 is having 7 DCDC step-down regulators as | ||
8 | sd[0-6], 10 LDOs as ldo[0-7], ldo[9-11]. The input supply of these | ||
9 | regulators are provided through following properties: | ||
10 | vsup-sd2-supply: Input supply for SD2. | ||
11 | vsup-sd3-supply: Input supply for SD3. | ||
12 | vsup-sd4-supply: Input supply for SD4. | ||
13 | vsup-sd5-supply: Input supply for SD5. | ||
14 | vin-ldo0-supply: Input supply for LDO0. | ||
15 | vin-ldo1-6-supply: Input supply for LDO1 and LDO6. | ||
16 | vin-ldo2-5-7-supply: Input supply for LDO2, LDO5 and LDO7. | ||
17 | vin-ldo3-4-supply: Input supply for LDO3 and LDO4. | ||
18 | vin-ldo9-10-supply: Input supply for LDO9 and LDO10. | ||
19 | vin-ldo11-supply: Input supply for LDO11. | ||
20 | |||
21 | Optional nodes: | ||
22 | -------------- | ||
23 | - regulators : Must contain a sub-node per regulator from the list below. | ||
24 | Each sub-node should contain the constraints and initialization | ||
25 | information for that regulator. See regulator.txt for a | ||
26 | description of standard properties for these sub-nodes. | ||
27 | Additional custom properties are listed below. | ||
28 | sd[0-6], ldo[0-7], ldo[9-11]. | ||
29 | |||
30 | Optional sub-node properties: | ||
31 | ---------------------------- | ||
32 | ams,ext-control: External control of the rail. The option of | ||
33 | this properties will tell which external input is | ||
34 | controlling this rail. Valid values are 0, 1, 2 ad 3. | ||
35 | 0: There is no external control of this rail. | ||
36 | 1: Rail is controlled by ENABLE1 input pin. | ||
37 | 2: Rail is controlled by ENABLE2 input pin. | ||
38 | 3: Rail is controlled by ENABLE3 input pin. | ||
39 | ams,enable-tracking: Enable tracking with SD1, only supported | ||
40 | by LDO3. | ||
41 | |||
42 | Example: | ||
43 | ------- | ||
44 | ams3722: ams3722 { | ||
45 | compatible = "ams,as3722"; | ||
46 | reg = <0x40>; | ||
47 | ... | ||
48 | |||
49 | regulators { | ||
50 | vsup-sd2-supply = <...>; | ||
51 | ... | ||
52 | |||
53 | sd0 { | ||
54 | regulator-name = "vdd_cpu"; | ||
55 | regulator-min-microvolt = <700000>; | ||
56 | regulator-max-microvolt = <1400000>; | ||
57 | regulator-always-on; | ||
58 | ams,ext-control = <2>; | ||
59 | }; | ||
60 | |||
61 | sd1 { | ||
62 | regulator-name = "vdd_core"; | ||
63 | regulator-min-microvolt = <700000>; | ||
64 | regulator-max-microvolt = <1400000>; | ||
65 | regulator-always-on; | ||
66 | ams,ext-control = <1>; | ||
67 | }; | ||
68 | |||
69 | sd2 { | ||
70 | regulator-name = "vddio_ddr"; | ||
71 | regulator-min-microvolt = <1350000>; | ||
72 | regulator-max-microvolt = <1350000>; | ||
73 | regulator-always-on; | ||
74 | }; | ||
75 | |||
76 | sd4 { | ||
77 | regulator-name = "avdd-hdmi-pex"; | ||
78 | regulator-min-microvolt = <1050000>; | ||
79 | regulator-max-microvolt = <1050000>; | ||
80 | regulator-always-on; | ||
81 | }; | ||
82 | |||
83 | sd5 { | ||
84 | regulator-name = "vdd-1v8"; | ||
85 | regulator-min-microvolt = <1800000>; | ||
86 | regulator-max-microvolt = <1800000>; | ||
87 | regulator-always-on; | ||
88 | }; | ||
89 | .... | ||
90 | }; | ||
91 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/da9210.txt b/Documentation/devicetree/bindings/regulator/da9210.txt new file mode 100644 index 000000000000..f120f229d67d --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/da9210.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | * Dialog Semiconductor DA9210 Voltage Regulator | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: must be "diasemi,da9210" | ||
6 | - reg: the i2c slave address of the regulator. It should be 0x68. | ||
7 | |||
8 | Any standard regulator properties can be used to configure the single da9210 | ||
9 | DCDC. | ||
10 | |||
11 | Example: | ||
12 | |||
13 | da9210@68 { | ||
14 | compatible = "diasemi,da9210"; | ||
15 | reg = <0x68>; | ||
16 | |||
17 | regulator-min-microvolt = <900000>; | ||
18 | regulator-max-microvolt = <1000000>; | ||
19 | regulator-boot-on; | ||
20 | regulator-always-on; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/max8660.txt b/Documentation/devicetree/bindings/regulator/max8660.txt new file mode 100644 index 000000000000..8ba994d8a142 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/max8660.txt | |||
@@ -0,0 +1,47 @@ | |||
1 | Maxim MAX8660 voltage regulator | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be one of "maxim,max8660", "maxim,max8661" | ||
5 | - reg: I2C slave address, usually 0x34 | ||
6 | - any required generic properties defined in regulator.txt | ||
7 | |||
8 | Example: | ||
9 | |||
10 | i2c_master { | ||
11 | max8660@34 { | ||
12 | compatible = "maxim,max8660"; | ||
13 | reg = <0x34>; | ||
14 | |||
15 | regulators { | ||
16 | regulator@0 { | ||
17 | regulator-compatible= "V3(DCDC)"; | ||
18 | regulator-min-microvolt = <725000>; | ||
19 | regulator-max-microvolt = <1800000>; | ||
20 | }; | ||
21 | |||
22 | regulator@1 { | ||
23 | regulator-compatible= "V4(DCDC)"; | ||
24 | regulator-min-microvolt = <725000>; | ||
25 | regulator-max-microvolt = <1800000>; | ||
26 | }; | ||
27 | |||
28 | regulator@2 { | ||
29 | regulator-compatible= "V5(LDO)"; | ||
30 | regulator-min-microvolt = <1700000>; | ||
31 | regulator-max-microvolt = <2000000>; | ||
32 | }; | ||
33 | |||
34 | regulator@3 { | ||
35 | regulator-compatible= "V6(LDO)"; | ||
36 | regulator-min-microvolt = <1800000>; | ||
37 | regulator-max-microvolt = <3300000>; | ||
38 | }; | ||
39 | |||
40 | regulator@4 { | ||
41 | regulator-compatible= "V7(LDO)"; | ||
42 | regulator-min-microvolt = <1800000>; | ||
43 | regulator-max-microvolt = <3300000>; | ||
44 | }; | ||
45 | }; | ||
46 | }; | ||
47 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt index 30b0581bb1ce..42e6b6bc48ff 100644 --- a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt +++ b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt | |||
@@ -25,17 +25,26 @@ Optional nodes: | |||
25 | Additional custom properties are listed below. | 25 | Additional custom properties are listed below. |
26 | 26 | ||
27 | For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP, | 27 | For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP, |
28 | smps45, smps457, smps7 depending on variant, smps6, smps[8-10], | 28 | smps45, smps457, smps7 depending on variant, smps6, smps[8-9], |
29 | ldo[1-9], ldoln, ldousb. | 29 | smps10_out2, smps10_out1, ldo[1-9], ldoln, ldousb. |
30 | 30 | ||
31 | Optional sub-node properties: | 31 | Optional sub-node properties: |
32 | ti,warm-reset - maintain voltage during warm reset(boolean) | 32 | ti,warm-reset - maintain voltage during warm reset(boolean) |
33 | ti,roof-floor - control voltage selection by pin(boolean) | 33 | ti,roof-floor - This takes as optional argument on platform supporting |
34 | the rail from desired external control. If there is no argument then | ||
35 | it will be assume that it is controlled by NSLEEP pin. | ||
36 | The valid value for external pins are: | ||
37 | ENABLE1 then 1, | ||
38 | ENABLE2 then 2 or | ||
39 | NSLEEP then 3. | ||
34 | ti,mode-sleep - mode to adopt in pmic sleep 0 - off, 1 - auto, | 40 | ti,mode-sleep - mode to adopt in pmic sleep 0 - off, 1 - auto, |
35 | 2 - eco, 3 - forced pwm | 41 | 2 - eco, 3 - forced pwm |
36 | ti,smps-range - OTP has the wrong range set for the hardware so override | 42 | ti,smps-range - OTP has the wrong range set for the hardware so override |
37 | 0 - low range, 1 - high range. | 43 | 0 - low range, 1 - high range. |
38 | 44 | ||
45 | - ti,system-power-controller: Telling whether or not this pmic is controlling | ||
46 | the system power. | ||
47 | |||
39 | Example: | 48 | Example: |
40 | 49 | ||
41 | #include <dt-bindings/interrupt-controller/irq.h> | 50 | #include <dt-bindings/interrupt-controller/irq.h> |
@@ -48,6 +57,8 @@ pmic { | |||
48 | 57 | ||
49 | ti,ldo6-vibrator; | 58 | ti,ldo6-vibrator; |
50 | 59 | ||
60 | ti,system-power-controller; | ||
61 | |||
51 | regulators { | 62 | regulators { |
52 | smps12_reg : smps12 { | 63 | smps12_reg : smps12 { |
53 | regulator-name = "smps12"; | 64 | regulator-name = "smps12"; |
@@ -56,7 +67,7 @@ pmic { | |||
56 | regulator-always-on; | 67 | regulator-always-on; |
57 | regulator-boot-on; | 68 | regulator-boot-on; |
58 | ti,warm-reset; | 69 | ti,warm-reset; |
59 | ti,roof-floor; | 70 | ti,roof-floor = <1>; /* ENABLE1 control */ |
60 | ti,mode-sleep = <0>; | 71 | ti,mode-sleep = <0>; |
61 | ti,smps-range = <1>; | 72 | ti,smps-range = <1>; |
62 | }; | 73 | }; |
diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt new file mode 100644 index 000000000000..fc989b2e8057 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt | |||
@@ -0,0 +1,115 @@ | |||
1 | PFUZE100 family of regulators | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "fsl,pfuze100" | ||
5 | - reg: I2C slave address | ||
6 | |||
7 | Required child node: | ||
8 | - regulators: This is the list of child nodes that specify the regulator | ||
9 | initialization data for defined regulators. Please refer to below doc | ||
10 | Documentation/devicetree/bindings/regulator/regulator.txt. | ||
11 | |||
12 | The valid names for regulators are: | ||
13 | sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 | ||
14 | |||
15 | Each regulator is defined using the standard binding for regulators. | ||
16 | |||
17 | Example: | ||
18 | |||
19 | pmic: pfuze100@08 { | ||
20 | compatible = "fsl,pfuze100"; | ||
21 | reg = <0x08>; | ||
22 | |||
23 | regulators { | ||
24 | sw1a_reg: sw1ab { | ||
25 | regulator-min-microvolt = <300000>; | ||
26 | regulator-max-microvolt = <1875000>; | ||
27 | regulator-boot-on; | ||
28 | regulator-always-on; | ||
29 | regulator-ramp-delay = <6250>; | ||
30 | }; | ||
31 | |||
32 | sw1c_reg: sw1c { | ||
33 | regulator-min-microvolt = <300000>; | ||
34 | regulator-max-microvolt = <1875000>; | ||
35 | regulator-boot-on; | ||
36 | regulator-always-on; | ||
37 | }; | ||
38 | |||
39 | sw2_reg: sw2 { | ||
40 | regulator-min-microvolt = <800000>; | ||
41 | regulator-max-microvolt = <3300000>; | ||
42 | regulator-boot-on; | ||
43 | regulator-always-on; | ||
44 | }; | ||
45 | |||
46 | sw3a_reg: sw3a { | ||
47 | regulator-min-microvolt = <400000>; | ||
48 | regulator-max-microvolt = <1975000>; | ||
49 | regulator-boot-on; | ||
50 | regulator-always-on; | ||
51 | }; | ||
52 | |||
53 | sw3b_reg: sw3b { | ||
54 | regulator-min-microvolt = <400000>; | ||
55 | regulator-max-microvolt = <1975000>; | ||
56 | regulator-boot-on; | ||
57 | regulator-always-on; | ||
58 | }; | ||
59 | |||
60 | sw4_reg: sw4 { | ||
61 | regulator-min-microvolt = <800000>; | ||
62 | regulator-max-microvolt = <3300000>; | ||
63 | }; | ||
64 | |||
65 | swbst_reg: swbst { | ||
66 | regulator-min-microvolt = <5000000>; | ||
67 | regulator-max-microvolt = <5150000>; | ||
68 | }; | ||
69 | |||
70 | snvs_reg: vsnvs { | ||
71 | regulator-min-microvolt = <1000000>; | ||
72 | regulator-max-microvolt = <3000000>; | ||
73 | regulator-boot-on; | ||
74 | regulator-always-on; | ||
75 | }; | ||
76 | |||
77 | vref_reg: vrefddr { | ||
78 | regulator-boot-on; | ||
79 | regulator-always-on; | ||
80 | }; | ||
81 | |||
82 | vgen1_reg: vgen1 { | ||
83 | regulator-min-microvolt = <800000>; | ||
84 | regulator-max-microvolt = <1550000>; | ||
85 | }; | ||
86 | |||
87 | vgen2_reg: vgen2 { | ||
88 | regulator-min-microvolt = <800000>; | ||
89 | regulator-max-microvolt = <1550000>; | ||
90 | }; | ||
91 | |||
92 | vgen3_reg: vgen3 { | ||
93 | regulator-min-microvolt = <1800000>; | ||
94 | regulator-max-microvolt = <3300000>; | ||
95 | }; | ||
96 | |||
97 | vgen4_reg: vgen4 { | ||
98 | regulator-min-microvolt = <1800000>; | ||
99 | regulator-max-microvolt = <3300000>; | ||
100 | regulator-always-on; | ||
101 | }; | ||
102 | |||
103 | vgen5_reg: vgen5 { | ||
104 | regulator-min-microvolt = <1800000>; | ||
105 | regulator-max-microvolt = <3300000>; | ||
106 | regulator-always-on; | ||
107 | }; | ||
108 | |||
109 | vgen6_reg: vgen6 { | ||
110 | regulator-min-microvolt = <1800000>; | ||
111 | regulator-max-microvolt = <3300000>; | ||
112 | regulator-always-on; | ||
113 | }; | ||
114 | }; | ||
115 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/regulator.txt b/Documentation/devicetree/bindings/regulator/regulator.txt index 48a3b8e5d6bd..e2c7f1e7251a 100644 --- a/Documentation/devicetree/bindings/regulator/regulator.txt +++ b/Documentation/devicetree/bindings/regulator/regulator.txt | |||
@@ -12,6 +12,13 @@ Optional properties: | |||
12 | - regulator-allow-bypass: allow the regulator to go into bypass mode | 12 | - regulator-allow-bypass: allow the regulator to go into bypass mode |
13 | - <name>-supply: phandle to the parent supply/regulator node | 13 | - <name>-supply: phandle to the parent supply/regulator node |
14 | - regulator-ramp-delay: ramp delay for regulator(in uV/uS) | 14 | - regulator-ramp-delay: ramp delay for regulator(in uV/uS) |
15 | For hardwares which support disabling ramp rate, it should be explicitly | ||
16 | intialised to zero (regulator-ramp-delay = <0>) for disabling ramp delay. | ||
17 | - regulator-enable-ramp-delay: The time taken, in microseconds, for the supply | ||
18 | rail to reach the target voltage, plus/minus whatever tolerance the board | ||
19 | design requires. This property describes the total system ramp time | ||
20 | required due to the combination of internal ramping of the regulator itself, | ||
21 | and board design issues such as trace capacitance and load on the supply. | ||
15 | 22 | ||
16 | Deprecated properties: | 23 | Deprecated properties: |
17 | - regulator-compatible: If a regulator chip contains multiple | 24 | - regulator-compatible: If a regulator chip contains multiple |
diff --git a/Documentation/devicetree/bindings/rtc/dw-apb.txt b/Documentation/devicetree/bindings/rtc/dw-apb.txt index eb2327b2bdb3..c703d51abb6c 100644 --- a/Documentation/devicetree/bindings/rtc/dw-apb.txt +++ b/Documentation/devicetree/bindings/rtc/dw-apb.txt | |||
@@ -1,7 +1,10 @@ | |||
1 | * Designware APB timer | 1 | * Designware APB timer |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "snps,dw-apb-timer-sp" or "snps,dw-apb-timer-osc" | 4 | - compatible: One of: |
5 | "snps,dw-apb-timer" | ||
6 | "snps,dw-apb-timer-sp" <DEPRECATED> | ||
7 | "snps,dw-apb-timer-osc" <DEPRECATED> | ||
5 | - reg: physical base address of the controller and length of memory mapped | 8 | - reg: physical base address of the controller and length of memory mapped |
6 | region. | 9 | region. |
7 | - interrupts: IRQ line for the timer. | 10 | - interrupts: IRQ line for the timer. |
@@ -20,25 +23,10 @@ systems may use one. | |||
20 | 23 | ||
21 | 24 | ||
22 | Example: | 25 | Example: |
23 | 26 | timer@ffe00000 { | |
24 | timer1: timer@ffc09000 { | 27 | compatible = "snps,dw-apb-timer"; |
25 | compatible = "snps,dw-apb-timer-sp"; | 28 | interrupts = <0 170 4>; |
26 | interrupts = <0 168 4>; | 29 | reg = <0xffe00000 0x1000>; |
27 | clock-frequency = <200000000>; | 30 | clocks = <&timer_clk>, <&timer_pclk>; |
28 | reg = <0xffc09000 0x1000>; | 31 | clock-names = "timer", "pclk"; |
29 | }; | 32 | }; |
30 | |||
31 | timer2: timer@ffd00000 { | ||
32 | compatible = "snps,dw-apb-timer-osc"; | ||
33 | interrupts = <0 169 4>; | ||
34 | clock-frequency = <200000000>; | ||
35 | reg = <0xffd00000 0x1000>; | ||
36 | }; | ||
37 | |||
38 | timer3: timer@ffe00000 { | ||
39 | compatible = "snps,dw-apb-timer-osc"; | ||
40 | interrupts = <0 170 4>; | ||
41 | reg = <0xffe00000 0x1000>; | ||
42 | clocks = <&timer_clk>, <&timer_pclk>; | ||
43 | clock-names = "timer", "pclk"; | ||
44 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/moxa,moxart-rtc.txt b/Documentation/devicetree/bindings/rtc/moxa,moxart-rtc.txt new file mode 100644 index 000000000000..c9d3ac1477fe --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/moxa,moxart-rtc.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | MOXA ART real-time clock | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : Should be "moxa,moxart-rtc" | ||
6 | - gpio-rtc-sclk : RTC sclk gpio, with zero flags | ||
7 | - gpio-rtc-data : RTC data gpio, with zero flags | ||
8 | - gpio-rtc-reset : RTC reset gpio, with zero flags | ||
9 | |||
10 | Example: | ||
11 | |||
12 | rtc: rtc { | ||
13 | compatible = "moxa,moxart-rtc"; | ||
14 | gpio-rtc-sclk = <&gpio 5 0>; | ||
15 | gpio-rtc-data = <&gpio 6 0>; | ||
16 | gpio-rtc-reset = <&gpio 7 0>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/rtc/rtc-omap.txt b/Documentation/devicetree/bindings/rtc/rtc-omap.txt index b47aa415c820..5a0f02d34d95 100644 --- a/Documentation/devicetree/bindings/rtc/rtc-omap.txt +++ b/Documentation/devicetree/bindings/rtc/rtc-omap.txt | |||
@@ -1,7 +1,11 @@ | |||
1 | TI Real Time Clock | 1 | TI Real Time Clock |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "ti,da830-rtc" | 4 | - compatible: |
5 | - "ti,da830-rtc" - for RTC IP used similar to that on DA8xx SoC family. | ||
6 | - "ti,am3352-rtc" - for RTC IP used similar to that on AM335x SoC family. | ||
7 | This RTC IP has special WAKE-EN Register to enable | ||
8 | Wakeup generation for event Alarm. | ||
5 | - reg: Address range of rtc register set | 9 | - reg: Address range of rtc register set |
6 | - interrupts: rtc timer, alarm interrupts in order | 10 | - interrupts: rtc timer, alarm interrupts in order |
7 | - interrupt-parent: phandle for the interrupt controller | 11 | - interrupt-parent: phandle for the interrupt controller |
diff --git a/Documentation/devicetree/bindings/rtc/rtc-palmas.txt b/Documentation/devicetree/bindings/rtc/rtc-palmas.txt new file mode 100644 index 000000000000..adbccc0a51e1 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/rtc-palmas.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | Palmas RTC controller bindings | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: | ||
5 | - "ti,palmas-rtc" for palma series of the RTC controller | ||
6 | - interrupt-parent: Parent interrupt device, must be handle of palmas node. | ||
7 | - interrupts: Interrupt number of RTC submodule on device. | ||
8 | |||
9 | Optional properties: | ||
10 | |||
11 | - ti,backup-battery-chargeable: The Palmas series device like TPS65913 or | ||
12 | TPS80036 supports the backup battery for powering the RTC when main | ||
13 | battery is removed or in very low power state. The backup battery | ||
14 | can be chargeable or non-chargeable. This flag will tells whether | ||
15 | battery is chargeable or not. If charging battery then driver can | ||
16 | enable the charging. | ||
17 | - ti,backup-battery-charge-high-current: Enable high current charging in | ||
18 | backup battery. Device supports the < 100mA and > 100mA charging. | ||
19 | The high current will be > 100mA. Absence of this property will | ||
20 | charge battery to lower current i.e. < 100mA. | ||
21 | |||
22 | Example: | ||
23 | palmas: tps65913@58 { | ||
24 | ... | ||
25 | palmas_rtc: rtc { | ||
26 | compatible = "ti,palmas-rtc"; | ||
27 | interrupt-parent = <&palmas>; | ||
28 | interrupts = <8 0>; | ||
29 | ti,backup-battery-chargeable; | ||
30 | ti,backup-battery-charge-high-current; | ||
31 | }; | ||
32 | ... | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/altera_jtaguart.txt b/Documentation/devicetree/bindings/serial/altera_jtaguart.txt index c152f65f9a28..55a901051e8f 100644 --- a/Documentation/devicetree/bindings/serial/altera_jtaguart.txt +++ b/Documentation/devicetree/bindings/serial/altera_jtaguart.txt | |||
@@ -1,4 +1,5 @@ | |||
1 | Altera JTAG UART | 1 | Altera JTAG UART |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "ALTR,juart-1.0" | 4 | - compatible : should be "ALTR,juart-1.0" <DEPRECATED> |
5 | - compatible : should be "altr,juart-1.0" | ||
diff --git a/Documentation/devicetree/bindings/serial/altera_uart.txt b/Documentation/devicetree/bindings/serial/altera_uart.txt index 71cae3f70100..81bf7ffb1a81 100644 --- a/Documentation/devicetree/bindings/serial/altera_uart.txt +++ b/Documentation/devicetree/bindings/serial/altera_uart.txt | |||
@@ -1,7 +1,8 @@ | |||
1 | Altera UART | 1 | Altera UART |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "ALTR,uart-1.0" | 4 | - compatible : should be "ALTR,uart-1.0" <DEPRECATED> |
5 | - compatible : should be "altr,uart-1.0" | ||
5 | 6 | ||
6 | Optional properties: | 7 | Optional properties: |
7 | - clock-frequency : frequency of the clock input to the UART | 8 | - clock-frequency : frequency of the clock input to the UART |
diff --git a/Documentation/devicetree/bindings/tty/serial/arc-uart.txt b/Documentation/devicetree/bindings/serial/arc-uart.txt index 5cae2eb686f8..5cae2eb686f8 100644 --- a/Documentation/devicetree/bindings/tty/serial/arc-uart.txt +++ b/Documentation/devicetree/bindings/serial/arc-uart.txt | |||
diff --git a/Documentation/devicetree/bindings/tty/serial/atmel-usart.txt b/Documentation/devicetree/bindings/serial/atmel-usart.txt index a49d9a1d4ccf..2191dcb9f1da 100644 --- a/Documentation/devicetree/bindings/tty/serial/atmel-usart.txt +++ b/Documentation/devicetree/bindings/serial/atmel-usart.txt | |||
@@ -10,13 +10,18 @@ Required properties: | |||
10 | Optional properties: | 10 | Optional properties: |
11 | - atmel,use-dma-rx: use of PDC or DMA for receiving data | 11 | - atmel,use-dma-rx: use of PDC or DMA for receiving data |
12 | - atmel,use-dma-tx: use of PDC or DMA for transmitting data | 12 | - atmel,use-dma-tx: use of PDC or DMA for transmitting data |
13 | - add dma bindings for dma transfer: | ||
14 | - dmas: DMA specifier, consisting of a phandle to DMA controller node, | ||
15 | memory peripheral interface and USART DMA channel ID, FIFO configuration. | ||
16 | Refer to dma.txt and atmel-dma.txt for details. | ||
17 | - dma-names: "rx" for RX channel, "tx" for TX channel. | ||
13 | 18 | ||
14 | <chip> compatible description: | 19 | <chip> compatible description: |
15 | - at91rm9200: legacy USART support | 20 | - at91rm9200: legacy USART support |
16 | - at91sam9260: generic USART implementation for SAM9 SoCs | 21 | - at91sam9260: generic USART implementation for SAM9 SoCs |
17 | 22 | ||
18 | Example: | 23 | Example: |
19 | 24 | - use PDC: | |
20 | usart0: serial@fff8c000 { | 25 | usart0: serial@fff8c000 { |
21 | compatible = "atmel,at91sam9260-usart"; | 26 | compatible = "atmel,at91sam9260-usart"; |
22 | reg = <0xfff8c000 0x4000>; | 27 | reg = <0xfff8c000 0x4000>; |
@@ -25,3 +30,14 @@ Example: | |||
25 | atmel,use-dma-tx; | 30 | atmel,use-dma-tx; |
26 | }; | 31 | }; |
27 | 32 | ||
33 | - use DMA: | ||
34 | usart0: serial@f001c000 { | ||
35 | compatible = "atmel,at91sam9260-usart"; | ||
36 | reg = <0xf001c000 0x100>; | ||
37 | interrupts = <12 4 5>; | ||
38 | atmel,use-dma-rx; | ||
39 | atmel,use-dma-tx; | ||
40 | dmas = <&dma0 2 0x3>, | ||
41 | <&dma0 2 0x204>; | ||
42 | dma-names = "tx", "rx"; | ||
43 | }; | ||
diff --git a/Documentation/devicetree/bindings/tty/serial/efm32-uart.txt b/Documentation/devicetree/bindings/serial/efm32-uart.txt index 8e080b893b49..8e080b893b49 100644 --- a/Documentation/devicetree/bindings/tty/serial/efm32-uart.txt +++ b/Documentation/devicetree/bindings/serial/efm32-uart.txt | |||
diff --git a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt index c58573b5b1a4..35ae1fb3537f 100644 --- a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt +++ b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt | |||
@@ -1,35 +1,29 @@ | |||
1 | * Freescale i.MX UART controller | 1 | * Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART) |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "fsl,imx21-uart" | 4 | - compatible : Should be "fsl,<soc>-uart" |
5 | - reg : Address and length of the register set for the device | 5 | - reg : Address and length of the register set for the device |
6 | - interrupts : Should contain UART interrupt number | 6 | - interrupts : Should contain uart interrupt |
7 | 7 | ||
8 | Optional properties: | 8 | Optional properties: |
9 | - fsl,uart-has-rtscts: indicate that RTS/CTS signals are used | 9 | - fsl,uart-has-rtscts : Indicate the uart has rts and cts |
10 | - fsl,irda-mode : Indicate the uart supports irda mode | ||
11 | - fsl,dte-mode : Indicate the uart works in DTE mode. The uart works | ||
12 | is DCE mode by default. | ||
10 | 13 | ||
11 | Note: Each uart controller should have an alias correctly numbered | 14 | Note: Each uart controller should have an alias correctly numbered |
12 | in "aliases" node. | 15 | in "aliases" node. |
13 | 16 | ||
14 | Example: | 17 | Example: |
15 | 18 | ||
16 | - From imx51.dtsi: | ||
17 | aliases { | 19 | aliases { |
18 | serial0 = &uart1; | 20 | serial0 = &uart1; |
19 | serial1 = &uart2; | ||
20 | serial2 = &uart3; | ||
21 | }; | 21 | }; |
22 | 22 | ||
23 | uart1: serial@73fbc000 { | 23 | uart1: serial@73fbc000 { |
24 | compatible = "fsl,imx51-uart", "fsl,imx21-uart"; | 24 | compatible = "fsl,imx51-uart", "fsl,imx21-uart"; |
25 | reg = <0x73fbc000 0x4000>; | 25 | reg = <0x73fbc000 0x4000>; |
26 | interrupts = <31>; | 26 | interrupts = <31>; |
27 | status = "disabled"; | ||
28 | } | ||
29 | |||
30 | - From imx51-babbage.dts: | ||
31 | uart1: serial@73fbc000 { | ||
32 | fsl,uart-has-rtscts; | 27 | fsl,uart-has-rtscts; |
33 | status = "okay"; | 28 | fsl,dte-mode; |
34 | }; | 29 | }; |
35 | |||
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-lpuart.txt b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt index 6fd1dd1638dd..6fd1dd1638dd 100644 --- a/Documentation/devicetree/bindings/tty/serial/fsl-lpuart.txt +++ b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt | |||
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt index 2c00ec64628e..59a40f18d551 100644 --- a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt +++ b/Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt | |||
@@ -10,6 +10,10 @@ Required properties: | |||
10 | Refer to dma.txt and fsl-mxs-dma.txt for details. | 10 | Refer to dma.txt and fsl-mxs-dma.txt for details. |
11 | - dma-names: "rx" for RX channel, "tx" for TX channel. | 11 | - dma-names: "rx" for RX channel, "tx" for TX channel. |
12 | 12 | ||
13 | Optional properties: | ||
14 | - fsl,uart-has-rtscts : Indicate the UART has RTS and CTS lines, | ||
15 | it also means you enable the DMA support for this UART. | ||
16 | |||
13 | Example: | 17 | Example: |
14 | auart0: serial@8006a000 { | 18 | auart0: serial@8006a000 { |
15 | compatible = "fsl,imx28-auart", "fsl,imx23-auart"; | 19 | compatible = "fsl,imx28-auart", "fsl,imx23-auart"; |
diff --git a/Documentation/devicetree/bindings/serial/mrvl,pxa-ssp.txt b/Documentation/devicetree/bindings/serial/mrvl,pxa-ssp.txt new file mode 100644 index 000000000000..669b8140dd79 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/mrvl,pxa-ssp.txt | |||
@@ -0,0 +1,65 @@ | |||
1 | Device tree bindings for Marvell PXA SSP ports | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: Must be one of | ||
6 | mrvl,pxa25x-ssp | ||
7 | mvrl,pxa25x-nssp | ||
8 | mrvl,pxa27x-ssp | ||
9 | mrvl,pxa3xx-ssp | ||
10 | mvrl,pxa168-ssp | ||
11 | mrvl,pxa910-ssp | ||
12 | mrvl,ce4100-ssp | ||
13 | mrvl,lpss-ssp | ||
14 | |||
15 | - reg: The memory base | ||
16 | - dmas: Two dma phandles, one for rx, one for tx | ||
17 | - dma-names: Must be "rx", "tx" | ||
18 | |||
19 | |||
20 | Example for PXA3xx: | ||
21 | |||
22 | ssp0: ssp@41000000 { | ||
23 | compatible = "mrvl,pxa3xx-ssp"; | ||
24 | reg = <0x41000000 0x40>; | ||
25 | ssp-id = <1>; | ||
26 | interrupts = <24>; | ||
27 | clock-names = "pxa27x-ssp.0"; | ||
28 | dmas = <&dma 13 | ||
29 | &dma 14>; | ||
30 | dma-names = "rx", "tx"; | ||
31 | }; | ||
32 | |||
33 | ssp1: ssp@41700000 { | ||
34 | compatible = "mrvl,pxa3xx-ssp"; | ||
35 | reg = <0x41700000 0x40>; | ||
36 | ssp-id = <2>; | ||
37 | interrupts = <16>; | ||
38 | clock-names = "pxa27x-ssp.1"; | ||
39 | dmas = <&dma 15 | ||
40 | &dma 16>; | ||
41 | dma-names = "rx", "tx"; | ||
42 | }; | ||
43 | |||
44 | ssp2: ssp@41900000 { | ||
45 | compatibl3 = "mrvl,pxa3xx-ssp"; | ||
46 | reg = <0x41900000 0x40>; | ||
47 | ssp-id = <3>; | ||
48 | interrupts = <0>; | ||
49 | clock-names = "pxa27x-ssp.2"; | ||
50 | dmas = <&dma 66 | ||
51 | &dma 67>; | ||
52 | dma-names = "rx", "tx"; | ||
53 | }; | ||
54 | |||
55 | ssp3: ssp@41a00000 { | ||
56 | compatible = "mrvl,pxa3xx-ssp"; | ||
57 | reg = <0x41a00000 0x40>; | ||
58 | ssp-id = <4>; | ||
59 | interrupts = <13>; | ||
60 | clock-names = "pxa27x-ssp.3"; | ||
61 | dmas = <&dma 2 | ||
62 | &dma 3>; | ||
63 | dma-names = "rx", "tx"; | ||
64 | }; | ||
65 | |||
diff --git a/Documentation/devicetree/bindings/tty/serial/nxp-lpc32xx-hsuart.txt b/Documentation/devicetree/bindings/serial/nxp-lpc32xx-hsuart.txt index 0d439dfc1aa5..0d439dfc1aa5 100644 --- a/Documentation/devicetree/bindings/tty/serial/nxp-lpc32xx-hsuart.txt +++ b/Documentation/devicetree/bindings/serial/nxp-lpc32xx-hsuart.txt | |||
diff --git a/Documentation/devicetree/bindings/tty/serial/of-serial.txt b/Documentation/devicetree/bindings/serial/of-serial.txt index 1928a3e83cd0..1928a3e83cd0 100644 --- a/Documentation/devicetree/bindings/tty/serial/of-serial.txt +++ b/Documentation/devicetree/bindings/serial/of-serial.txt | |||
diff --git a/Documentation/devicetree/bindings/serial/qca,ar9330-uart.txt b/Documentation/devicetree/bindings/serial/qca,ar9330-uart.txt new file mode 100644 index 000000000000..c5e032c85bf9 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/qca,ar9330-uart.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | * Qualcomm Atheros AR9330 High-Speed UART | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: Must be "qca,ar9330-uart" | ||
6 | |||
7 | - reg: Specifies the physical base address of the controller and | ||
8 | the length of the memory mapped region. | ||
9 | |||
10 | - interrupt-parent: The phandle for the interrupt controller that | ||
11 | services interrupts for this device. | ||
12 | |||
13 | - interrupts: Specifies the interrupt source of the parent interrupt | ||
14 | controller. The format of the interrupt specifier depends on the | ||
15 | parent interrupt controller. | ||
16 | |||
17 | Additional requirements: | ||
18 | |||
19 | Each UART port must have an alias correctly numbered in "aliases" | ||
20 | node. | ||
21 | |||
22 | Example: | ||
23 | |||
24 | aliases { | ||
25 | serial0 = &uart0; | ||
26 | }; | ||
27 | |||
28 | uart0: uart@18020000 { | ||
29 | compatible = "qca,ar9330-uart"; | ||
30 | reg = <0x18020000 0x14>; | ||
31 | |||
32 | interrupt-parent = <&intc>; | ||
33 | interrupts = <3>; | ||
34 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/qcom,msm-uart.txt b/Documentation/devicetree/bindings/serial/qcom,msm-uart.txt new file mode 100644 index 000000000000..ce8c90161959 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/qcom,msm-uart.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | * MSM Serial UART | ||
2 | |||
3 | The MSM serial UART hardware is designed for low-speed use cases where a | ||
4 | dma-engine isn't needed. From a software perspective it's mostly compatible | ||
5 | with the MSM serial UARTDM except that it only supports reading and writing one | ||
6 | character at a time. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible: Should contain "qcom,msm-uart" | ||
10 | - reg: Should contain UART register location and length. | ||
11 | - interrupts: Should contain UART interrupt. | ||
12 | - clocks: Should contain the core clock. | ||
13 | - clock-names: Should be "core". | ||
14 | |||
15 | Example: | ||
16 | |||
17 | A uart device at 0xa9c00000 with interrupt 11. | ||
18 | |||
19 | serial@a9c00000 { | ||
20 | compatible = "qcom,msm-uart"; | ||
21 | reg = <0xa9c00000 0x1000>; | ||
22 | interrupts = <11>; | ||
23 | clocks = <&uart_cxc>; | ||
24 | clock-names = "core"; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt b/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt new file mode 100644 index 000000000000..ffa5b784c66e --- /dev/null +++ b/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt | |||
@@ -0,0 +1,53 @@ | |||
1 | * MSM Serial UARTDM | ||
2 | |||
3 | The MSM serial UARTDM hardware is designed for high-speed use cases where the | ||
4 | transmit and/or receive channels can be offloaded to a dma-engine. From a | ||
5 | software perspective it's mostly compatible with the MSM serial UART except | ||
6 | that it supports reading and writing multiple characters at a time. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible: Should contain at least "qcom,msm-uartdm". | ||
10 | A more specific property should be specified as follows depending | ||
11 | on the version: | ||
12 | "qcom,msm-uartdm-v1.1" | ||
13 | "qcom,msm-uartdm-v1.2" | ||
14 | "qcom,msm-uartdm-v1.3" | ||
15 | "qcom,msm-uartdm-v1.4" | ||
16 | - reg: Should contain UART register locations and lengths. The first | ||
17 | register shall specify the main control registers. An optional second | ||
18 | register location shall specify the GSBI control region. | ||
19 | "qcom,msm-uartdm-v1.3" is the only compatible value that might | ||
20 | need the GSBI control region. | ||
21 | - interrupts: Should contain UART interrupt. | ||
22 | - clocks: Should contain the core clock and the AHB clock. | ||
23 | - clock-names: Should be "core" for the core clock and "iface" for the | ||
24 | AHB clock. | ||
25 | |||
26 | Optional properties: | ||
27 | - dmas: Should contain dma specifiers for transmit and receive channels | ||
28 | - dma-names: Should contain "tx" for transmit and "rx" for receive channels | ||
29 | |||
30 | Examples: | ||
31 | |||
32 | A uartdm v1.4 device with dma capabilities. | ||
33 | |||
34 | serial@f991e000 { | ||
35 | compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; | ||
36 | reg = <0xf991e000 0x1000>; | ||
37 | interrupts = <0 108 0x0>; | ||
38 | clocks = <&blsp1_uart2_apps_cxc>, <&blsp1_ahb_cxc>; | ||
39 | clock-names = "core", "iface"; | ||
40 | dmas = <&dma0 0>, <&dma0 1>; | ||
41 | dma-names = "tx", "rx"; | ||
42 | }; | ||
43 | |||
44 | A uartdm v1.3 device without dma capabilities and part of a GSBI complex. | ||
45 | |||
46 | serial@19c40000 { | ||
47 | compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; | ||
48 | reg = <0x19c40000 0x1000>, | ||
49 | <0x19c00000 0x1000>; | ||
50 | interrupts = <0 195 0x0>; | ||
51 | clocks = <&gsbi5_uart_cxc>, <&gsbi5_ahb_cxc>; | ||
52 | clock-names = "core", "iface"; | ||
53 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/rs485.txt b/Documentation/devicetree/bindings/serial/rs485.txt index 1e753c69fc83..32b1fa1f2a5b 100644 --- a/Documentation/devicetree/bindings/serial/rs485.txt +++ b/Documentation/devicetree/bindings/serial/rs485.txt | |||
@@ -7,7 +7,7 @@ UART node. | |||
7 | 7 | ||
8 | Required properties: | 8 | Required properties: |
9 | - rs485-rts-delay: prop-encoded-array <a b> where: | 9 | - rs485-rts-delay: prop-encoded-array <a b> where: |
10 | * a is the delay beteween rts signal and beginning of data sent in milliseconds. | 10 | * a is the delay between rts signal and beginning of data sent in milliseconds. |
11 | it corresponds to the delay before sending data. | 11 | it corresponds to the delay before sending data. |
12 | * b is the delay between end of data sent and rts signal in milliseconds | 12 | * b is the delay between end of data sent and rts signal in milliseconds |
13 | it corresponds to the delay after sending data and actual release of the line. | 13 | it corresponds to the delay after sending data and actual release of the line. |
diff --git a/Documentation/devicetree/bindings/serial/sirf-uart.txt b/Documentation/devicetree/bindings/serial/sirf-uart.txt new file mode 100644 index 000000000000..a2dfc6522a91 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/sirf-uart.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | * CSR SiRFprimaII/atlasVI Universal Synchronous Asynchronous Receiver/Transmitter * | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "sirf,prima2-uart" or "sirf, prima2-usp-uart" | ||
5 | - reg : Offset and length of the register set for the device | ||
6 | - interrupts : Should contain uart interrupt | ||
7 | - fifosize : Should define hardware rx/tx fifo size | ||
8 | - clocks : Should contain uart clock number | ||
9 | |||
10 | Optional properties: | ||
11 | - sirf,uart-has-rtscts: we have hardware flow controller pins in hardware | ||
12 | - rts-gpios: RTS pin for USP-based UART if sirf,uart-has-rtscts is true | ||
13 | - cts-gpios: CTS pin for USP-based UART if sirf,uart-has-rtscts is true | ||
14 | |||
15 | Example: | ||
16 | |||
17 | uart0: uart@b0050000 { | ||
18 | cell-index = <0>; | ||
19 | compatible = "sirf,prima2-uart"; | ||
20 | reg = <0xb0050000 0x1000>; | ||
21 | interrupts = <17>; | ||
22 | fifosize = <128>; | ||
23 | clocks = <&clks 13>; | ||
24 | }; | ||
25 | |||
26 | On the board-specific dts, we can put rts-gpios and cts-gpios like | ||
27 | |||
28 | usp@b0090000 { | ||
29 | compatible = "sirf,prima2-usp-uart"; | ||
30 | sirf,uart-has-rtscts; | ||
31 | rts-gpios = <&gpio 15 0>; | ||
32 | cts-gpios = <&gpio 46 0>; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/tty/serial/snps-dw-apb-uart.txt b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt index f13f1c5be91c..f13f1c5be91c 100644 --- a/Documentation/devicetree/bindings/tty/serial/snps-dw-apb-uart.txt +++ b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt | |||
diff --git a/Documentation/devicetree/bindings/serial/st-asc.txt b/Documentation/devicetree/bindings/serial/st-asc.txt new file mode 100644 index 000000000000..75d877f5968f --- /dev/null +++ b/Documentation/devicetree/bindings/serial/st-asc.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | *st-asc(Serial Port) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "st,asc". | ||
5 | - reg, reg-names, interrupts, interrupt-names : Standard way to define device | ||
6 | resources with names. look in | ||
7 | Documentation/devicetree/bindings/resource-names.txt | ||
8 | |||
9 | Optional properties: | ||
10 | - st,hw-flow-ctrl bool flag to enable hardware flow control. | ||
11 | - st,force-m1 bool flat to force asc to be in Mode-1 recommeded | ||
12 | for high bit rates (above 19.2K) | ||
13 | Example: | ||
14 | serial@fe440000{ | ||
15 | compatible = "st,asc"; | ||
16 | reg = <0xfe440000 0x2c>; | ||
17 | interrupts = <0 209 0>; | ||
18 | }; | ||
diff --git a/Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt b/Documentation/devicetree/bindings/serial/via,vt8500-uart.txt index 5feef1ef167d..5feef1ef167d 100644 --- a/Documentation/devicetree/bindings/tty/serial/via,vt8500-uart.txt +++ b/Documentation/devicetree/bindings/serial/via,vt8500-uart.txt | |||
diff --git a/Documentation/devicetree/bindings/serio/altera_ps2.txt b/Documentation/devicetree/bindings/serio/altera_ps2.txt index 4d9eecc2ef7d..520199e2e347 100644 --- a/Documentation/devicetree/bindings/serio/altera_ps2.txt +++ b/Documentation/devicetree/bindings/serio/altera_ps2.txt | |||
@@ -1,4 +1,5 @@ | |||
1 | Altera UP PS/2 controller | 1 | Altera UP PS/2 controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "ALTR,ps2-1.0". | 4 | - compatible : should be "ALTR,ps2-1.0". <DEPRECATED> |
5 | - compatible : should be "altr,ps2-1.0". | ||
diff --git a/Documentation/devicetree/bindings/sound/ak4554.c b/Documentation/devicetree/bindings/sound/ak4554.c new file mode 100644 index 000000000000..934fa02754b3 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/ak4554.c | |||
@@ -0,0 +1,11 @@ | |||
1 | AK4554 ADC/DAC | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : "asahi-kasei,ak4554" | ||
6 | |||
7 | Example: | ||
8 | |||
9 | ak4554-adc-dac { | ||
10 | compatible = "asahi-kasei,ak4554"; | ||
11 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/alc5632.txt b/Documentation/devicetree/bindings/sound/alc5632.txt index 8608f747dcfe..ffd886d110bd 100644 --- a/Documentation/devicetree/bindings/sound/alc5632.txt +++ b/Documentation/devicetree/bindings/sound/alc5632.txt | |||
@@ -13,6 +13,25 @@ Required properties: | |||
13 | - #gpio-cells : Should be two. The first cell is the pin number and the | 13 | - #gpio-cells : Should be two. The first cell is the pin number and the |
14 | second cell is used to specify optional parameters (currently unused). | 14 | second cell is used to specify optional parameters (currently unused). |
15 | 15 | ||
16 | Pins on the device (for linking into audio routes): | ||
17 | |||
18 | * SPK_OUTP | ||
19 | * SPK_OUTN | ||
20 | * HP_OUT_L | ||
21 | * HP_OUT_R | ||
22 | * AUX_OUT_P | ||
23 | * AUX_OUT_N | ||
24 | * LINE_IN_L | ||
25 | * LINE_IN_R | ||
26 | * PHONE_P | ||
27 | * PHONE_N | ||
28 | * MIC1_P | ||
29 | * MIC1_N | ||
30 | * MIC2_P | ||
31 | * MIC2_N | ||
32 | * MICBIAS1 | ||
33 | * DMICDAT | ||
34 | |||
16 | Example: | 35 | Example: |
17 | 36 | ||
18 | alc5632: alc5632@1e { | 37 | alc5632: alc5632@1e { |
diff --git a/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt new file mode 100644 index 000000000000..0720857089a7 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/atmel-sam9x5-wm8731-audio.txt | |||
@@ -0,0 +1,35 @@ | |||
1 | * Atmel at91sam9x5ek wm8731 audio complex | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "atmel,sam9x5-wm8731-audio" | ||
5 | - atmel,model: The user-visible name of this sound complex. | ||
6 | - atmel,ssc-controller: The phandle of the SSC controller | ||
7 | - atmel,audio-codec: The phandle of the WM8731 audio codec | ||
8 | - atmel,audio-routing: A list of the connections between audio components. | ||
9 | Each entry is a pair of strings, the first being the connection's sink, | ||
10 | the second being the connection's source. | ||
11 | |||
12 | Available audio endpoints for the audio-routing table: | ||
13 | |||
14 | Board connectors: | ||
15 | * Headphone Jack | ||
16 | * Line In Jack | ||
17 | |||
18 | wm8731 pins: | ||
19 | cf Documentation/devicetree/bindings/sound/wm8731.txt | ||
20 | |||
21 | Example: | ||
22 | sound { | ||
23 | compatible = "atmel,sam9x5-wm8731-audio"; | ||
24 | |||
25 | atmel,model = "wm8731 @ AT91SAM9X5EK"; | ||
26 | |||
27 | atmel,audio-routing = | ||
28 | "Headphone Jack", "RHPOUT", | ||
29 | "Headphone Jack", "LHPOUT", | ||
30 | "LLINEIN", "Line In Jack", | ||
31 | "RLINEIN", "Line In Jack"; | ||
32 | |||
33 | atmel,ssc-controller = <&ssc0>; | ||
34 | atmel,audio-codec = <&wm8731>; | ||
35 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/atmel-wm8904.txt b/Documentation/devicetree/bindings/sound/atmel-wm8904.txt new file mode 100644 index 000000000000..8bbe50c884b6 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/atmel-wm8904.txt | |||
@@ -0,0 +1,55 @@ | |||
1 | Atmel ASoC driver with wm8904 audio codec complex | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "atmel,asoc-wm8904" | ||
5 | - atmel,model: The user-visible name of this sound complex. | ||
6 | - atmel,audio-routing: A list of the connections between audio components. | ||
7 | Each entry is a pair of strings, the first being the connection's sink, | ||
8 | the second being the connection's source. Valid names for sources and | ||
9 | sinks are the WM8904's pins, and the jacks on the board: | ||
10 | |||
11 | WM8904 pins: | ||
12 | |||
13 | * IN1L | ||
14 | * IN1R | ||
15 | * IN2L | ||
16 | * IN2R | ||
17 | * IN3L | ||
18 | * IN3R | ||
19 | * HPOUTL | ||
20 | * HPOUTR | ||
21 | * LINEOUTL | ||
22 | * LINEOUTR | ||
23 | * MICBIAS | ||
24 | |||
25 | Board connectors: | ||
26 | |||
27 | * Headphone Jack | ||
28 | * Line In Jack | ||
29 | * Mic | ||
30 | |||
31 | - atmel,ssc-controller: The phandle of the SSC controller | ||
32 | - atmel,audio-codec: The phandle of the WM8904 audio codec | ||
33 | |||
34 | Optional properties: | ||
35 | - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt | ||
36 | |||
37 | Example: | ||
38 | sound { | ||
39 | compatible = "atmel,asoc-wm8904"; | ||
40 | pinctrl-names = "default"; | ||
41 | pinctrl-0 = <&pinctrl_pck0_as_mck>; | ||
42 | |||
43 | atmel,model = "wm8904 @ AT91SAM9N12EK"; | ||
44 | |||
45 | atmel,audio-routing = | ||
46 | "Headphone Jack", "HPOUTL", | ||
47 | "Headphone Jack", "HPOUTR", | ||
48 | "IN2L", "Line In Jack", | ||
49 | "IN2R", "Line In Jack", | ||
50 | "Mic", "MICBIAS", | ||
51 | "IN1L", "Mic"; | ||
52 | |||
53 | atmel,ssc-controller = <&ssc0>; | ||
54 | atmel,audio-codec = <&wm8904>; | ||
55 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/cs42l73.txt b/Documentation/devicetree/bindings/sound/cs42l73.txt new file mode 100644 index 000000000000..80ae910dbf6c --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs42l73.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | CS42L73 audio CODEC | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : "cirrus,cs42l73" | ||
6 | |||
7 | - reg : the I2C address of the device for I2C | ||
8 | |||
9 | Optional properties: | ||
10 | |||
11 | - reset_gpio : a GPIO spec for the reset pin. | ||
12 | - chgfreq : Charge Pump Frequency values 0x00-0x0F | ||
13 | |||
14 | |||
15 | Example: | ||
16 | |||
17 | codec: cs42l73@4a { | ||
18 | compatible = "cirrus,cs42l73"; | ||
19 | reg = <0x4a>; | ||
20 | reset_gpio = <&gpio 10 0>; | ||
21 | chgfreq = <0x05>; | ||
22 | }; \ No newline at end of file | ||
diff --git a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt new file mode 100644 index 000000000000..865178d5cdf3 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt | |||
@@ -0,0 +1,42 @@ | |||
1 | * Texas Instruments SoC audio setups with TLV320AIC3X Codec | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "ti,da830-evm-audio" : forDM365/DA8xx/OMAPL1x/AM33xx | ||
5 | - ti,model : The user-visible name of this sound complex. | ||
6 | - ti,audio-codec : The phandle of the TLV320AIC3x audio codec | ||
7 | - ti,mcasp-controller : The phandle of the McASP controller | ||
8 | - ti,codec-clock-rate : The Codec Clock rate (in Hz) applied to the Codec | ||
9 | - ti,audio-routing : A list of the connections between audio components. | ||
10 | Each entry is a pair of strings, the first being the connection's sink, | ||
11 | the second being the connection's source. Valid names for sources and | ||
12 | sinks are the codec's pins, and the jacks on the board: | ||
13 | |||
14 | Board connectors: | ||
15 | |||
16 | * Headphone Jack | ||
17 | * Line Out | ||
18 | * Mic Jack | ||
19 | * Line In | ||
20 | |||
21 | |||
22 | Example: | ||
23 | |||
24 | sound { | ||
25 | compatible = "ti,da830-evm-audio"; | ||
26 | ti,model = "DA830 EVM"; | ||
27 | ti,audio-codec = <&tlv320aic3x>; | ||
28 | ti,mcasp-controller = <&mcasp1>; | ||
29 | ti,codec-clock-rate = <12000000>; | ||
30 | ti,audio-routing = | ||
31 | "Headphone Jack", "HPLOUT", | ||
32 | "Headphone Jack", "HPROUT", | ||
33 | "Line Out", "LLOUT", | ||
34 | "Line Out", "RLOUT", | ||
35 | "MIC3L", "Mic Bias 2V", | ||
36 | "MIC3R", "Mic Bias 2V", | ||
37 | "Mic Bias 2V", "Mic Jack", | ||
38 | "LINE1L", "Line In", | ||
39 | "LINE2L", "Line In", | ||
40 | "LINE1R", "Line In", | ||
41 | "LINE2R", "Line In"; | ||
42 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt index 374e145c2ef1..ed785b3f67be 100644 --- a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt +++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt | |||
@@ -4,17 +4,25 @@ Required properties: | |||
4 | - compatible : | 4 | - compatible : |
5 | "ti,dm646x-mcasp-audio" : for DM646x platforms | 5 | "ti,dm646x-mcasp-audio" : for DM646x platforms |
6 | "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms | 6 | "ti,da830-mcasp-audio" : for both DA830 & DA850 platforms |
7 | "ti,omap2-mcasp-audio" : for OMAP2 platforms (TI81xx, AM33xx) | 7 | "ti,am33xx-mcasp-audio" : for AM33xx platforms (AM33xx, TI81xx) |
8 | |||
9 | - reg : Should contain McASP registers offset and length | ||
10 | - interrupts : Interrupt number for McASP | ||
11 | - op-mode : I2S/DIT ops mode. | ||
12 | - tdm-slots : Slots for TDM operation. | ||
13 | - num-serializer : Serializers used by McASP. | ||
14 | - serial-dir : A list of serializer pin mode. The list number should be equal | ||
15 | to "num-serializer" parameter. Each entry is a number indication | ||
16 | serializer pin direction. (0 - INACTIVE, 1 - TX, 2 - RX) | ||
17 | 8 | ||
9 | - reg : Should contain reg specifiers for the entries in the reg-names property. | ||
10 | - reg-names : Should contain: | ||
11 | * "mpu" for the main registers (required). For compatibility with | ||
12 | existing software, it is recommended this is the first entry. | ||
13 | * "dat" for separate data port register access (optional). | ||
14 | - op-mode : I2S/DIT ops mode. 0 for I2S mode. 1 for DIT mode used for S/PDIF, | ||
15 | IEC60958-1, and AES-3 formats. | ||
16 | - tdm-slots : Slots for TDM operation. Indicates number of channels transmitted | ||
17 | or received over one serializer. | ||
18 | - serial-dir : A list of serializer configuration. Each entry is a number | ||
19 | indication for serializer pin direction. | ||
20 | (0 - INACTIVE, 1 - TX, 2 - RX) | ||
21 | - dmas: two element list of DMA controller phandles and DMA request line | ||
22 | ordered pairs. | ||
23 | - dma-names: identifier string for each DMA request line in the dmas property. | ||
24 | These strings correspond 1:1 with the ordered pairs in dmas. The dma | ||
25 | identifiers must be "rx" and "tx". | ||
18 | 26 | ||
19 | Optional properties: | 27 | Optional properties: |
20 | 28 | ||
@@ -23,18 +31,23 @@ Optional properties: | |||
23 | - rx-num-evt : FIFO levels. | 31 | - rx-num-evt : FIFO levels. |
24 | - sram-size-playback : size of sram to be allocated during playback | 32 | - sram-size-playback : size of sram to be allocated during playback |
25 | - sram-size-capture : size of sram to be allocated during capture | 33 | - sram-size-capture : size of sram to be allocated during capture |
34 | - interrupts : Interrupt numbers for McASP, currently not used by the driver | ||
35 | - interrupt-names : Known interrupt names are "tx" and "rx" | ||
36 | - pinctrl-0: Should specify pin control group used for this controller. | ||
37 | - pinctrl-names: Should contain only one value - "default", for more details | ||
38 | please refer to pinctrl-bindings.txt | ||
39 | |||
26 | 40 | ||
27 | Example: | 41 | Example: |
28 | 42 | ||
29 | mcasp0: mcasp0@1d00000 { | 43 | mcasp0: mcasp0@1d00000 { |
30 | compatible = "ti,da830-mcasp-audio"; | 44 | compatible = "ti,da830-mcasp-audio"; |
31 | #address-cells = <1>; | ||
32 | #size-cells = <0>; | ||
33 | reg = <0x100000 0x3000>; | 45 | reg = <0x100000 0x3000>; |
34 | interrupts = <82 83>; | 46 | reg-names "mpu"; |
47 | interrupts = <82>, <83>; | ||
48 | interrupts-names = "tx", "rx"; | ||
35 | op-mode = <0>; /* MCASP_IIS_MODE */ | 49 | op-mode = <0>; /* MCASP_IIS_MODE */ |
36 | tdm-slots = <2>; | 50 | tdm-slots = <2>; |
37 | num-serializer = <16>; | ||
38 | serial-dir = < | 51 | serial-dir = < |
39 | 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */ | 52 | 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */ |
40 | 0 0 0 0 | 53 | 0 0 0 0 |
diff --git a/Documentation/devicetree/bindings/sound/fsl,spdif.txt b/Documentation/devicetree/bindings/sound/fsl,spdif.txt new file mode 100644 index 000000000000..f2ae335670f5 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/fsl,spdif.txt | |||
@@ -0,0 +1,54 @@ | |||
1 | Freescale Sony/Philips Digital Interface Format (S/PDIF) Controller | ||
2 | |||
3 | The Freescale S/PDIF audio block is a stereo transceiver that allows the | ||
4 | processor to receive and transmit digital audio via an coaxial cable or | ||
5 | a fibre cable. | ||
6 | |||
7 | Required properties: | ||
8 | |||
9 | - compatible : Compatible list, must contain "fsl,imx35-spdif". | ||
10 | |||
11 | - reg : Offset and length of the register set for the device. | ||
12 | |||
13 | - interrupts : Contains the spdif interrupt. | ||
14 | |||
15 | - dmas : Generic dma devicetree binding as described in | ||
16 | Documentation/devicetree/bindings/dma/dma.txt. | ||
17 | |||
18 | - dma-names : Two dmas have to be defined, "tx" and "rx". | ||
19 | |||
20 | - clocks : Contains an entry for each entry in clock-names. | ||
21 | |||
22 | - clock-names : Includes the following entries: | ||
23 | "core" The core clock of spdif controller | ||
24 | "rxtx<0-7>" Clock source list for tx and rx clock. | ||
25 | This clock list should be identical to | ||
26 | the source list connecting to the spdif | ||
27 | clock mux in "SPDIF Transceiver Clock | ||
28 | Diagram" of SoC reference manual. It | ||
29 | can also be referred to TxClk_Source | ||
30 | bit of register SPDIF_STC. | ||
31 | |||
32 | Example: | ||
33 | |||
34 | spdif: spdif@02004000 { | ||
35 | compatible = "fsl,imx35-spdif"; | ||
36 | reg = <0x02004000 0x4000>; | ||
37 | interrupts = <0 52 0x04>; | ||
38 | dmas = <&sdma 14 18 0>, | ||
39 | <&sdma 15 18 0>; | ||
40 | dma-names = "rx", "tx"; | ||
41 | |||
42 | clocks = <&clks 197>, <&clks 3>, | ||
43 | <&clks 197>, <&clks 107>, | ||
44 | <&clks 0>, <&clks 118>, | ||
45 | <&clks 62>, <&clks 139>, | ||
46 | <&clks 0>; | ||
47 | clock-names = "core", "rxtx0", | ||
48 | "rxtx1", "rxtx2", | ||
49 | "rxtx3", "rxtx4", | ||
50 | "rxtx5", "rxtx6", | ||
51 | "rxtx7"; | ||
52 | |||
53 | status = "okay"; | ||
54 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/ssi.txt b/Documentation/devicetree/bindings/sound/fsl,ssi.txt index 5ff76c9c57d2..4303b6ab6208 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/ssi.txt +++ b/Documentation/devicetree/bindings/sound/fsl,ssi.txt | |||
@@ -43,10 +43,22 @@ Required properties: | |||
43 | together. This would still allow different sample sizes, | 43 | together. This would still allow different sample sizes, |
44 | but not different sample rates. | 44 | but not different sample rates. |
45 | 45 | ||
46 | Required are also ac97 link bindings if ac97 is used. See | ||
47 | Documentation/devicetree/bindings/sound/soc-ac97link.txt for the necessary | ||
48 | bindings. | ||
49 | |||
46 | Optional properties: | 50 | Optional properties: |
47 | - codec-handle: Phandle to a 'codec' node that defines an audio | 51 | - codec-handle: Phandle to a 'codec' node that defines an audio |
48 | codec connected to this SSI. This node is typically | 52 | codec connected to this SSI. This node is typically |
49 | a child of an I2C or other control node. | 53 | a child of an I2C or other control node. |
54 | - fsl,fiq-stream-filter: Bool property. Disabled DMA and use FIQ instead to | ||
55 | filter the codec stream. This is necessary for some boards | ||
56 | where an incompatible codec is connected to this SSI, e.g. | ||
57 | on pca100 and pcm043. | ||
58 | - dmas: Generic dma devicetree binding as described in | ||
59 | Documentation/devicetree/bindings/dma/dma.txt. | ||
60 | - dma-names: Two dmas have to be defined, "tx" and "rx", if fsl,imx-fiq | ||
61 | is not defined. | ||
50 | 62 | ||
51 | Child 'codec' node required properties: | 63 | Child 'codec' node required properties: |
52 | - compatible: Compatible list, contains the name of the codec | 64 | - compatible: Compatible list, contains the name of the codec |
diff --git a/Documentation/devicetree/bindings/sound/imx-audio-spdif.txt b/Documentation/devicetree/bindings/sound/imx-audio-spdif.txt new file mode 100644 index 000000000000..7d13479f9c3c --- /dev/null +++ b/Documentation/devicetree/bindings/sound/imx-audio-spdif.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | Freescale i.MX audio complex with S/PDIF transceiver | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : "fsl,imx-audio-spdif" | ||
6 | |||
7 | - model : The user-visible name of this sound complex | ||
8 | |||
9 | - spdif-controller : The phandle of the i.MX S/PDIF controller | ||
10 | |||
11 | |||
12 | Optional properties: | ||
13 | |||
14 | - spdif-out : This is a boolean property. If present, the transmitting | ||
15 | function of S/PDIF will be enabled, indicating there's a physical | ||
16 | S/PDIF out connector/jack on the board or it's connecting to some | ||
17 | other IP block, such as an HDMI encoder/display-controller. | ||
18 | |||
19 | - spdif-in : This is a boolean property. If present, the receiving | ||
20 | function of S/PDIF will be enabled, indicating there's a physical | ||
21 | S/PDIF in connector/jack on the board. | ||
22 | |||
23 | * Note: At least one of these two properties should be set in the DT binding. | ||
24 | |||
25 | |||
26 | Example: | ||
27 | |||
28 | sound-spdif { | ||
29 | compatible = "fsl,imx-audio-spdif"; | ||
30 | model = "imx-spdif"; | ||
31 | spdif-controller = <&spdif>; | ||
32 | spdif-out; | ||
33 | spdif-in; | ||
34 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/imx-audmux.txt b/Documentation/devicetree/bindings/sound/imx-audmux.txt index 215aa9817213..f88a00e54c63 100644 --- a/Documentation/devicetree/bindings/sound/imx-audmux.txt +++ b/Documentation/devicetree/bindings/sound/imx-audmux.txt | |||
@@ -5,6 +5,15 @@ Required properties: | |||
5 | or "fsl,imx31-audmux" for the version firstly used on i.MX31. | 5 | or "fsl,imx31-audmux" for the version firstly used on i.MX31. |
6 | - reg : Should contain AUDMUX registers location and length | 6 | - reg : Should contain AUDMUX registers location and length |
7 | 7 | ||
8 | An initial configuration can be setup using child nodes. | ||
9 | |||
10 | Required properties of optional child nodes: | ||
11 | - fsl,audmux-port : Integer of the audmux port that is configured by this | ||
12 | child node. | ||
13 | - fsl,port-config : List of configuration options for the specific port. For | ||
14 | imx31-audmux and above, it is a list of tuples <ptcr pdcr>. For | ||
15 | imx21-audmux it is a list of pcr values. | ||
16 | |||
8 | Example: | 17 | Example: |
9 | 18 | ||
10 | audmux@021d8000 { | 19 | audmux@021d8000 { |
diff --git a/Documentation/devicetree/bindings/sound/mrvl,pxa-ssp.txt b/Documentation/devicetree/bindings/sound/mrvl,pxa-ssp.txt new file mode 100644 index 000000000000..74c9ba6c2823 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/mrvl,pxa-ssp.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | Marvell PXA SSP CPU DAI bindings | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | compatible Must be "mrvl,pxa-ssp-dai" | ||
6 | port A phandle reference to a PXA ssp upstream device | ||
7 | |||
8 | Example: | ||
9 | |||
10 | /* upstream device */ | ||
11 | |||
12 | ssp0: ssp@41000000 { | ||
13 | compatible = "mrvl,pxa3xx-ssp"; | ||
14 | reg = <0x41000000 0x40>; | ||
15 | interrupts = <24>; | ||
16 | clock-names = "pxa27x-ssp.0"; | ||
17 | dmas = <&dma 13 | ||
18 | &dma 14>; | ||
19 | dma-names = "rx", "tx"; | ||
20 | }; | ||
21 | |||
22 | /* DAI as user */ | ||
23 | |||
24 | ssp_dai0: ssp_dai@0 { | ||
25 | compatible = "mrvl,pxa-ssp-dai"; | ||
26 | port = <&ssp0>; | ||
27 | }; | ||
28 | |||
diff --git a/Documentation/devicetree/bindings/sound/mrvl,pxa2xx-pcm.txt b/Documentation/devicetree/bindings/sound/mrvl,pxa2xx-pcm.txt new file mode 100644 index 000000000000..551fbb8348c2 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/mrvl,pxa2xx-pcm.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | DT bindings for ARM PXA2xx PCM platform driver | ||
2 | |||
3 | This is just a dummy driver that registers the PXA ASoC platform driver. | ||
4 | It does not have any resources assigned. | ||
5 | |||
6 | Required properties: | ||
7 | |||
8 | - compatible 'mrvl,pxa-pcm-audio' | ||
9 | |||
10 | Example: | ||
11 | |||
12 | pxa_pcm_audio: snd_soc_pxa_audio { | ||
13 | compatible = "mrvl,pxa-pcm-audio"; | ||
14 | }; | ||
15 | |||
diff --git a/Documentation/devicetree/bindings/sound/mvebu-audio.txt b/Documentation/devicetree/bindings/sound/mvebu-audio.txt new file mode 100644 index 000000000000..f0062c5871b4 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/mvebu-audio.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | * mvebu (Kirkwood, Dove, Armada 370) audio controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: | ||
6 | "marvell,kirkwood-audio" for Kirkwood platforms | ||
7 | "marvell,dove-audio" for Dove platforms | ||
8 | |||
9 | - reg: physical base address of the controller and length of memory mapped | ||
10 | region. | ||
11 | |||
12 | - interrupts: | ||
13 | with "marvell,kirkwood-audio", the audio interrupt | ||
14 | with "marvell,dove-audio", a list of two interrupts, the first for | ||
15 | the data flow, and the second for errors. | ||
16 | |||
17 | - clocks: one or two phandles. | ||
18 | The first one is mandatory and defines the internal clock. | ||
19 | The second one is optional and defines an external clock. | ||
20 | |||
21 | - clock-names: names associated to the clocks: | ||
22 | "internal" for the internal clock | ||
23 | "extclk" for the external clock | ||
24 | |||
25 | Example: | ||
26 | |||
27 | i2s1: audio-controller@b4000 { | ||
28 | compatible = "marvell,dove-audio"; | ||
29 | reg = <0xb4000 0x2210>; | ||
30 | interrupts = <21>, <22>; | ||
31 | clocks = <&gate_clk 13>; | ||
32 | clock-names = "internal"; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt index 05ffecb57103..8b8903ef0800 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt | |||
@@ -11,28 +11,8 @@ Required properties: | |||
11 | - nvidia,audio-routing : A list of the connections between audio components. | 11 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 12 | Each entry is a pair of strings, the first being the connection's sink, |
13 | the second being the connection's source. Valid names for sources and | 13 | the second being the connection's source. Valid names for sources and |
14 | sinks are the ALC5632's pins: | 14 | sinks are the ALC5632's pins as documented in the binding for the device |
15 | 15 | and: | |
16 | ALC5632 pins: | ||
17 | |||
18 | * SPK_OUTP | ||
19 | * SPK_OUTN | ||
20 | * HP_OUT_L | ||
21 | * HP_OUT_R | ||
22 | * AUX_OUT_P | ||
23 | * AUX_OUT_N | ||
24 | * LINE_IN_L | ||
25 | * LINE_IN_R | ||
26 | * PHONE_P | ||
27 | * PHONE_N | ||
28 | * MIC1_P | ||
29 | * MIC1_N | ||
30 | * MIC2_P | ||
31 | * MIC2_N | ||
32 | * MICBIAS1 | ||
33 | * DMICDAT | ||
34 | |||
35 | Board connectors: | ||
36 | 16 | ||
37 | * Headset Stereophone | 17 | * Headset Stereophone |
38 | * Int Spk | 18 | * Int Spk |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt index d130818700b2..dc6224994d69 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt | |||
@@ -11,32 +11,12 @@ Required properties: | |||
11 | - nvidia,audio-routing : A list of the connections between audio components. | 11 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 12 | Each entry is a pair of strings, the first being the connection's sink, |
13 | the second being the connection's source. Valid names for sources and | 13 | the second being the connection's source. Valid names for sources and |
14 | sinks are the RT5640's pins, and the jacks on the board: | 14 | sinks are the RT5640's pins (as documented in its binding), and the jacks |
15 | 15 | on the board: | |
16 | RT5640 pins: | ||
17 | |||
18 | * DMIC1 | ||
19 | * DMIC2 | ||
20 | * MICBIAS1 | ||
21 | * IN1P | ||
22 | * IN1R | ||
23 | * IN2P | ||
24 | * IN2R | ||
25 | * HPOL | ||
26 | * HPOR | ||
27 | * LOUTL | ||
28 | * LOUTR | ||
29 | * MONOP | ||
30 | * MONON | ||
31 | * SPOLP | ||
32 | * SPOLN | ||
33 | * SPORP | ||
34 | * SPORN | ||
35 | |||
36 | Board connectors: | ||
37 | 16 | ||
38 | * Headphones | 17 | * Headphones |
39 | * Speakers | 18 | * Speakers |
19 | * Mic Jack | ||
40 | 20 | ||
41 | - nvidia,i2s-controller : The phandle of the Tegra I2S controller that's | 21 | - nvidia,i2s-controller : The phandle of the Tegra I2S controller that's |
42 | connected to the CODEC. | 22 | connected to the CODEC. |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt index d14510613a7f..aab6ce0ad2fc 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt | |||
@@ -11,31 +11,8 @@ Required properties: | |||
11 | - nvidia,audio-routing : A list of the connections between audio components. | 11 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 12 | Each entry is a pair of strings, the first being the connection's sink, |
13 | the second being the connection's source. Valid names for sources and | 13 | the second being the connection's source. Valid names for sources and |
14 | sinks are the WM8753's pins, and the jacks on the board: | 14 | sinks are the WM8753's pins as documented in the binding for the WM8753, |
15 | 15 | and the jacks on the board: | |
16 | WM8753 pins: | ||
17 | |||
18 | * LOUT1 | ||
19 | * LOUT2 | ||
20 | * ROUT1 | ||
21 | * ROUT2 | ||
22 | * MONO1 | ||
23 | * MONO2 | ||
24 | * OUT3 | ||
25 | * OUT4 | ||
26 | * LINE1 | ||
27 | * LINE2 | ||
28 | * RXP | ||
29 | * RXN | ||
30 | * ACIN | ||
31 | * ACOP | ||
32 | * MIC1N | ||
33 | * MIC1 | ||
34 | * MIC2N | ||
35 | * MIC2 | ||
36 | * Mic Bias | ||
37 | |||
38 | Board connectors: | ||
39 | 16 | ||
40 | * Headphone Jack | 17 | * Headphone Jack |
41 | * Mic Jack | 18 | * Mic Jack |
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt index 3bf722deb722..4b44dfb6ca0d 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt | |||
@@ -11,28 +11,8 @@ Required properties: | |||
11 | - nvidia,audio-routing : A list of the connections between audio components. | 11 | - nvidia,audio-routing : A list of the connections between audio components. |
12 | Each entry is a pair of strings, the first being the connection's sink, | 12 | Each entry is a pair of strings, the first being the connection's sink, |
13 | the second being the connection's source. Valid names for sources and | 13 | the second being the connection's source. Valid names for sources and |
14 | sinks are the WM8903's pins, and the jacks on the board: | 14 | sinks are the WM8903's pins (documented in the WM8903 binding document), |
15 | 15 | and the jacks on the board: | |
16 | WM8903 pins: | ||
17 | |||
18 | * IN1L | ||
19 | * IN1R | ||
20 | * IN2L | ||
21 | * IN2R | ||
22 | * IN3L | ||
23 | * IN3R | ||
24 | * DMICDAT | ||
25 | * HPOUTL | ||
26 | * HPOUTR | ||
27 | * LINEOUTL | ||
28 | * LINEOUTR | ||
29 | * LOP | ||
30 | * LON | ||
31 | * ROP | ||
32 | * RON | ||
33 | * MICBIAS | ||
34 | |||
35 | Board connectors: | ||
36 | 16 | ||
37 | * Headphone Jack | 17 | * Headphone Jack |
38 | * Int Spk | 18 | * Int Spk |
diff --git a/Documentation/devicetree/bindings/sound/pcm1792a.txt b/Documentation/devicetree/bindings/sound/pcm1792a.txt new file mode 100644 index 000000000000..970ba1ed576f --- /dev/null +++ b/Documentation/devicetree/bindings/sound/pcm1792a.txt | |||
@@ -0,0 +1,18 @@ | |||
1 | Texas Instruments pcm1792a DT bindings | ||
2 | |||
3 | This driver supports the SPI bus. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible: "ti,pcm1792a" | ||
8 | |||
9 | For required properties on SPI, please consult | ||
10 | Documentation/devicetree/bindings/spi/spi-bus.txt | ||
11 | |||
12 | Examples: | ||
13 | |||
14 | codec_spi: 1792a@0 { | ||
15 | compatible = "ti,pcm1792a"; | ||
16 | spi-max-frequency = <600000>; | ||
17 | }; | ||
18 | |||
diff --git a/Documentation/devicetree/bindings/sound/rt5640.txt b/Documentation/devicetree/bindings/sound/rt5640.txt index 005bcb24d72d..068a1141b06f 100644 --- a/Documentation/devicetree/bindings/sound/rt5640.txt +++ b/Documentation/devicetree/bindings/sound/rt5640.txt | |||
@@ -18,6 +18,26 @@ Optional properties: | |||
18 | 18 | ||
19 | - realtek,ldo1-en-gpios : The GPIO that controls the CODEC's LDO1_EN pin. | 19 | - realtek,ldo1-en-gpios : The GPIO that controls the CODEC's LDO1_EN pin. |
20 | 20 | ||
21 | Pins on the device (for linking into audio routes): | ||
22 | |||
23 | * DMIC1 | ||
24 | * DMIC2 | ||
25 | * MICBIAS1 | ||
26 | * IN1P | ||
27 | * IN1R | ||
28 | * IN2P | ||
29 | * IN2R | ||
30 | * HPOL | ||
31 | * HPOR | ||
32 | * LOUTL | ||
33 | * LOUTR | ||
34 | * MONOP | ||
35 | * MONON | ||
36 | * SPOLP | ||
37 | * SPOLN | ||
38 | * SPORP | ||
39 | * SPORN | ||
40 | |||
21 | Example: | 41 | Example: |
22 | 42 | ||
23 | rt5640 { | 43 | rt5640 { |
diff --git a/Documentation/devicetree/bindings/sound/samsung-i2s.txt b/Documentation/devicetree/bindings/sound/samsung-i2s.txt index 025e66b85a43..7386d444ada1 100644 --- a/Documentation/devicetree/bindings/sound/samsung-i2s.txt +++ b/Documentation/devicetree/bindings/sound/samsung-i2s.txt | |||
@@ -2,7 +2,15 @@ | |||
2 | 2 | ||
3 | Required SoC Specific Properties: | 3 | Required SoC Specific Properties: |
4 | 4 | ||
5 | - compatible : "samsung,i2s-v5" | 5 | - compatible : should be one of the following. |
6 | - samsung,s3c6410-i2s: for 8/16/24bit stereo I2S. | ||
7 | - samsung,s5pv210-i2s: for 8/16/24bit multichannel(5.1) I2S with | ||
8 | secondary fifo, s/w reset control and internal mux for root clk src. | ||
9 | - samsung,exynos5420-i2s: for 8/16/24bit multichannel(7.1) I2S with | ||
10 | secondary fifo, s/w reset control, internal mux for root clk src and | ||
11 | TDM support. TDM (Time division multiplexing) is to allow transfer of | ||
12 | multiple channel audio data on single data line. | ||
13 | |||
6 | - reg: physical base address of the controller and length of memory mapped | 14 | - reg: physical base address of the controller and length of memory mapped |
7 | region. | 15 | region. |
8 | - dmas: list of DMA controller phandle and DMA request line ordered pairs. | 16 | - dmas: list of DMA controller phandle and DMA request line ordered pairs. |
@@ -21,13 +29,6 @@ Required SoC Specific Properties: | |||
21 | 29 | ||
22 | Optional SoC Specific Properties: | 30 | Optional SoC Specific Properties: |
23 | 31 | ||
24 | - samsung,supports-6ch: If the I2S Primary sound source has 5.1 Channel | ||
25 | support, this flag is enabled. | ||
26 | - samsung,supports-rstclr: This flag should be set if I2S software reset bit | ||
27 | control is required. When this flag is set I2S software reset bit will be | ||
28 | enabled or disabled based on need. | ||
29 | - samsung,supports-secdai:If I2S block has a secondary FIFO and internal DMA, | ||
30 | then this flag is enabled. | ||
31 | - samsung,idma-addr: Internal DMA register base address of the audio | 32 | - samsung,idma-addr: Internal DMA register base address of the audio |
32 | sub system(used in secondary sound source). | 33 | sub system(used in secondary sound source). |
33 | - pinctrl-0: Should specify pin control groups used for this controller. | 34 | - pinctrl-0: Should specify pin control groups used for this controller. |
@@ -36,7 +37,7 @@ Optional SoC Specific Properties: | |||
36 | Example: | 37 | Example: |
37 | 38 | ||
38 | i2s0: i2s@03830000 { | 39 | i2s0: i2s@03830000 { |
39 | compatible = "samsung,i2s-v5"; | 40 | compatible = "samsung,s5pv210-i2s"; |
40 | reg = <0x03830000 0x100>; | 41 | reg = <0x03830000 0x100>; |
41 | dmas = <&pdma0 10 | 42 | dmas = <&pdma0 10 |
42 | &pdma0 9 | 43 | &pdma0 9 |
@@ -46,9 +47,6 @@ i2s0: i2s@03830000 { | |||
46 | <&clock_audss EXYNOS_I2S_BUS>, | 47 | <&clock_audss EXYNOS_I2S_BUS>, |
47 | <&clock_audss EXYNOS_SCLK_I2S>; | 48 | <&clock_audss EXYNOS_SCLK_I2S>; |
48 | clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; | 49 | clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; |
49 | samsung,supports-6ch; | ||
50 | samsung,supports-rstclr; | ||
51 | samsung,supports-secdai; | ||
52 | samsung,idma-addr = <0x03000000>; | 50 | samsung,idma-addr = <0x03000000>; |
53 | pinctrl-names = "default"; | 51 | pinctrl-names = "default"; |
54 | pinctrl-0 = <&i2s0_bus>; | 52 | pinctrl-0 = <&i2s0_bus>; |
diff --git a/Documentation/devicetree/bindings/sound/soc-ac97link.txt b/Documentation/devicetree/bindings/sound/soc-ac97link.txt new file mode 100644 index 000000000000..80152a87f239 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/soc-ac97link.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | AC97 link bindings | ||
2 | |||
3 | These bindings can be included within any other device node. | ||
4 | |||
5 | Required properties: | ||
6 | - pinctrl-names: Has to contain following states to setup the correct | ||
7 | pinmuxing for the used gpios: | ||
8 | "ac97-running": AC97-link is active | ||
9 | "ac97-reset": AC97-link reset state | ||
10 | "ac97-warm-reset": AC97-link warm reset state | ||
11 | - ac97-gpios: List of gpio phandles with args in the order ac97-sync, | ||
12 | ac97-sdata, ac97-reset | ||
13 | |||
14 | |||
15 | Example: | ||
16 | |||
17 | ssi { | ||
18 | ... | ||
19 | |||
20 | pinctrl-names = "default", "ac97-running", "ac97-reset", "ac97-warm-reset"; | ||
21 | pinctrl-0 = <&ac97link_running>; | ||
22 | pinctrl-1 = <&ac97link_running>; | ||
23 | pinctrl-2 = <&ac97link_reset>; | ||
24 | pinctrl-3 = <&ac97link_warm_reset>; | ||
25 | ac97-gpios = <&gpio3 20 0 &gpio3 22 0 &gpio3 28 0>; | ||
26 | |||
27 | ... | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/ti,pcm1681.txt b/Documentation/devicetree/bindings/sound/ti,pcm1681.txt new file mode 100644 index 000000000000..4df17185ab80 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/ti,pcm1681.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | Texas Instruments PCM1681 8-channel PWM Processor | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: Should contain "ti,pcm1681". | ||
6 | - reg: The i2c address. Should contain <0x4c>. | ||
7 | |||
8 | Examples: | ||
9 | |||
10 | i2c_bus { | ||
11 | pcm1681@4c { | ||
12 | compatible = "ti,pcm1681"; | ||
13 | reg = <0x4c>; | ||
14 | }; | ||
15 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt index f47c3f589fd0..5e6040c2c2e9 100644 --- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt +++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt | |||
@@ -3,7 +3,14 @@ Texas Instruments - tlv320aic3x Codec module | |||
3 | The tlv320aic3x serial control bus communicates through I2C protocols | 3 | The tlv320aic3x serial control bus communicates through I2C protocols |
4 | 4 | ||
5 | Required properties: | 5 | Required properties: |
6 | - compatible - "string" - "ti,tlv320aic3x" | 6 | |
7 | - compatible - "string" - One of: | ||
8 | "ti,tlv320aic3x" - Generic TLV320AIC3x device | ||
9 | "ti,tlv320aic33" - TLV320AIC33 | ||
10 | "ti,tlv320aic3007" - TLV320AIC3007 | ||
11 | "ti,tlv320aic3106" - TLV320AIC3106 | ||
12 | |||
13 | |||
7 | - reg - <int> - I2C slave address | 14 | - reg - <int> - I2C slave address |
8 | 15 | ||
9 | 16 | ||
@@ -17,10 +24,36 @@ Optional properties: | |||
17 | 3 - MICBIAS output is connected to AVDD, | 24 | 3 - MICBIAS output is connected to AVDD, |
18 | If this node is not mentioned or if the value is incorrect, then MicBias | 25 | If this node is not mentioned or if the value is incorrect, then MicBias |
19 | is powered down. | 26 | is powered down. |
27 | - AVDD-supply, IOVDD-supply, DRVDD-supply, DVDD-supply : power supplies for the | ||
28 | device as covered in Documentation/devicetree/bindings/regulator/regulator.txt | ||
29 | |||
30 | CODEC output pins: | ||
31 | * LLOUT | ||
32 | * RLOUT | ||
33 | * MONO_LOUT | ||
34 | * HPLOUT | ||
35 | * HPROUT | ||
36 | * HPLCOM | ||
37 | * HPRCOM | ||
38 | |||
39 | CODEC input pins: | ||
40 | * MIC3L | ||
41 | * MIC3R | ||
42 | * LINE1L | ||
43 | * LINE2L | ||
44 | * LINE1R | ||
45 | * LINE2R | ||
46 | |||
47 | The pins can be used in referring sound node's audio-routing property. | ||
20 | 48 | ||
21 | Example: | 49 | Example: |
22 | 50 | ||
23 | tlv320aic3x: tlv320aic3x@1b { | 51 | tlv320aic3x: tlv320aic3x@1b { |
24 | compatible = "ti,tlv320aic3x"; | 52 | compatible = "ti,tlv320aic3x"; |
25 | reg = <0x1b>; | 53 | reg = <0x1b>; |
54 | |||
55 | AVDD-supply = <®ulator>; | ||
56 | IOVDD-supply = <®ulator>; | ||
57 | DRVDD-supply = <®ulator>; | ||
58 | DVDD-supply = <®ulator>; | ||
26 | }; | 59 | }; |
diff --git a/Documentation/devicetree/bindings/sound/tpa6130a2.txt b/Documentation/devicetree/bindings/sound/tpa6130a2.txt new file mode 100644 index 000000000000..6dfa740e4b2d --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tpa6130a2.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | Texas Instruments - tpa6130a2 Codec module | ||
2 | |||
3 | The tpa6130a2 serial control bus communicates through I2C protocols | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible - "string" - One of: | ||
8 | "ti,tpa6130a2" - TPA6130A2 | ||
9 | "ti,tpa6140a2" - TPA6140A2 | ||
10 | |||
11 | |||
12 | - reg - <int> - I2C slave address | ||
13 | |||
14 | - Vdd-supply - <phandle> - power supply regulator | ||
15 | |||
16 | Optional properties: | ||
17 | |||
18 | - power-gpio - gpio pin to power the device | ||
19 | |||
20 | Example: | ||
21 | |||
22 | tpa6130a2: tpa6130a2@60 { | ||
23 | compatible = "ti,tpa6130a2"; | ||
24 | reg = <0x60>; | ||
25 | Vdd-supply = <&vmmc2>; | ||
26 | power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/wm8731.txt b/Documentation/devicetree/bindings/sound/wm8731.txt index 15f70048469b..236690e99b87 100644 --- a/Documentation/devicetree/bindings/sound/wm8731.txt +++ b/Documentation/devicetree/bindings/sound/wm8731.txt | |||
@@ -16,3 +16,12 @@ codec: wm8731@1a { | |||
16 | compatible = "wlf,wm8731"; | 16 | compatible = "wlf,wm8731"; |
17 | reg = <0x1a>; | 17 | reg = <0x1a>; |
18 | }; | 18 | }; |
19 | |||
20 | Available audio endpoints for an audio-routing table: | ||
21 | * LOUT: Left Channel Line Output | ||
22 | * ROUT: Right Channel Line Output | ||
23 | * LHPOUT: Left Channel Headphone Output | ||
24 | * RHPOUT: Right Channel Headphone Output | ||
25 | * LLINEIN: Left Channel Line Input | ||
26 | * RLINEIN: Right Channel Line Input | ||
27 | * MICIN: Microphone Input | ||
diff --git a/Documentation/devicetree/bindings/sound/wm8753.txt b/Documentation/devicetree/bindings/sound/wm8753.txt index e65277a0fb60..8eee61282105 100644 --- a/Documentation/devicetree/bindings/sound/wm8753.txt +++ b/Documentation/devicetree/bindings/sound/wm8753.txt | |||
@@ -10,9 +10,31 @@ Required properties: | |||
10 | - reg : the I2C address of the device for I2C, the chip select | 10 | - reg : the I2C address of the device for I2C, the chip select |
11 | number for SPI. | 11 | number for SPI. |
12 | 12 | ||
13 | Pins on the device (for linking into audio routes): | ||
14 | |||
15 | * LOUT1 | ||
16 | * LOUT2 | ||
17 | * ROUT1 | ||
18 | * ROUT2 | ||
19 | * MONO1 | ||
20 | * MONO2 | ||
21 | * OUT3 | ||
22 | * OUT4 | ||
23 | * LINE1 | ||
24 | * LINE2 | ||
25 | * RXP | ||
26 | * RXN | ||
27 | * ACIN | ||
28 | * ACOP | ||
29 | * MIC1N | ||
30 | * MIC1 | ||
31 | * MIC2N | ||
32 | * MIC2 | ||
33 | * Mic Bias | ||
34 | |||
13 | Example: | 35 | Example: |
14 | 36 | ||
15 | codec: wm8737@1a { | 37 | codec: wm8753@1a { |
16 | compatible = "wlf,wm8753"; | 38 | compatible = "wlf,wm8753"; |
17 | reg = <0x1a>; | 39 | reg = <0x1a>; |
18 | }; | 40 | }; |
diff --git a/Documentation/devicetree/bindings/sound/wm8903.txt b/Documentation/devicetree/bindings/sound/wm8903.txt index f102cbc42694..94ec32c194bb 100644 --- a/Documentation/devicetree/bindings/sound/wm8903.txt +++ b/Documentation/devicetree/bindings/sound/wm8903.txt | |||
@@ -28,6 +28,25 @@ Optional properties: | |||
28 | performed. If any entry has the value 0xffffffff, that GPIO's | 28 | performed. If any entry has the value 0xffffffff, that GPIO's |
29 | configuration will not be modified. | 29 | configuration will not be modified. |
30 | 30 | ||
31 | Pins on the device (for linking into audio routes): | ||
32 | |||
33 | * IN1L | ||
34 | * IN1R | ||
35 | * IN2L | ||
36 | * IN2R | ||
37 | * IN3L | ||
38 | * IN3R | ||
39 | * DMICDAT | ||
40 | * HPOUTL | ||
41 | * HPOUTR | ||
42 | * LINEOUTL | ||
43 | * LINEOUTR | ||
44 | * LOP | ||
45 | * LON | ||
46 | * ROP | ||
47 | * RON | ||
48 | * MICBIAS | ||
49 | |||
31 | Example: | 50 | Example: |
32 | 51 | ||
33 | codec: wm8903@1a { | 52 | codec: wm8903@1a { |
diff --git a/Documentation/devicetree/bindings/sound/wm8994.txt b/Documentation/devicetree/bindings/sound/wm8994.txt index f2f3e80934d2..e045e90a0924 100644 --- a/Documentation/devicetree/bindings/sound/wm8994.txt +++ b/Documentation/devicetree/bindings/sound/wm8994.txt | |||
@@ -32,6 +32,10 @@ Optional properties: | |||
32 | The second cell is the flags, encoded as the trigger masks from | 32 | The second cell is the flags, encoded as the trigger masks from |
33 | Documentation/devicetree/bindings/interrupts.txt | 33 | Documentation/devicetree/bindings/interrupts.txt |
34 | 34 | ||
35 | - clocks : A list of up to two phandle and clock specifier pairs | ||
36 | - clock-names : A list of clock names sorted in the same order as clocks. | ||
37 | Valid clock names are "MCLK1" and "MCLK2". | ||
38 | |||
35 | - wlf,gpio-cfg : A list of GPIO configuration register values. If absent, | 39 | - wlf,gpio-cfg : A list of GPIO configuration register values. If absent, |
36 | no configuration of these registers is performed. If any value is | 40 | no configuration of these registers is performed. If any value is |
37 | over 0xffff then the register will be left as default. If present 11 | 41 | over 0xffff then the register will be left as default. If present 11 |
diff --git a/Documentation/devicetree/bindings/spi/efm32-spi.txt b/Documentation/devicetree/bindings/spi/efm32-spi.txt new file mode 100644 index 000000000000..a590ca51be75 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/efm32-spi.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | * Energy Micro EFM32 SPI | ||
2 | |||
3 | Required properties: | ||
4 | - #address-cells: see spi-bus.txt | ||
5 | - #size-cells: see spi-bus.txt | ||
6 | - compatible: should be "efm32,spi" | ||
7 | - reg: Offset and length of the register set for the controller | ||
8 | - interrupts: pair specifying rx and tx irq | ||
9 | - clocks: phandle to the spi clock | ||
10 | - cs-gpios: see spi-bus.txt | ||
11 | - location: Value to write to the ROUTE register's LOCATION bitfield to configure the pinmux for the device, see datasheet for values. | ||
12 | |||
13 | Example: | ||
14 | |||
15 | spi1: spi@0x4000c400 { /* USART1 */ | ||
16 | #address-cells = <1>; | ||
17 | #size-cells = <0>; | ||
18 | compatible = "efm32,spi"; | ||
19 | reg = <0x4000c400 0x400>; | ||
20 | interrupts = <15 16>; | ||
21 | clocks = <&cmu 20>; | ||
22 | cs-gpios = <&gpio 51 1>; // D3 | ||
23 | location = <1>; | ||
24 | status = "ok"; | ||
25 | |||
26 | ks8851@0 { | ||
27 | compatible = "ks8851"; | ||
28 | spi-max-frequency = <6000000>; | ||
29 | reg = <0>; | ||
30 | interrupt-parent = <&boardfpga>; | ||
31 | interrupts = <4>; | ||
32 | status = "ok"; | ||
33 | }; | ||
34 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/sh-hspi.txt b/Documentation/devicetree/bindings/spi/sh-hspi.txt new file mode 100644 index 000000000000..30b57b1c8a13 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/sh-hspi.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Renesas HSPI. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "renesas,hspi" | ||
5 | - reg : Offset and length of the register set for the device | ||
6 | - interrupts : interrupt line used by HSPI | ||
7 | |||
diff --git a/Documentation/devicetree/bindings/spi/spi-bus.txt b/Documentation/devicetree/bindings/spi/spi-bus.txt index 296015e3c632..800dafe5b01b 100644 --- a/Documentation/devicetree/bindings/spi/spi-bus.txt +++ b/Documentation/devicetree/bindings/spi/spi-bus.txt | |||
@@ -55,6 +55,16 @@ contain the following properties. | |||
55 | chip select active high | 55 | chip select active high |
56 | - spi-3wire - (optional) Empty property indicating device requires | 56 | - spi-3wire - (optional) Empty property indicating device requires |
57 | 3-wire mode. | 57 | 3-wire mode. |
58 | - spi-tx-bus-width - (optional) The bus width(number of data wires) that | ||
59 | used for MOSI. Defaults to 1 if not present. | ||
60 | - spi-rx-bus-width - (optional) The bus width(number of data wires) that | ||
61 | used for MISO. Defaults to 1 if not present. | ||
62 | |||
63 | Some SPI controllers and devices support Dual and Quad SPI transfer mode. | ||
64 | It allows data in SPI system transfered in 2 wires(DUAL) or 4 wires(QUAD). | ||
65 | Now the value that spi-tx-bus-width and spi-rx-bus-width can receive is | ||
66 | only 1(SINGLE), 2(DUAL) and 4(QUAD). | ||
67 | Dual/Quad mode is not allowed when 3-wire mode is used. | ||
58 | 68 | ||
59 | If a gpio chipselect is used for the SPI slave the gpio number will be passed | 69 | If a gpio chipselect is used for the SPI slave the gpio number will be passed |
60 | via the cs_gpio | 70 | via the cs_gpio |
diff --git a/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt new file mode 100644 index 000000000000..a1fb3035a42b --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt | |||
@@ -0,0 +1,42 @@ | |||
1 | ARM Freescale DSPI controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "fsl,vf610-dspi" | ||
5 | - reg : Offset and length of the register set for the device | ||
6 | - interrupts : Should contain SPI controller interrupt | ||
7 | - clocks: from common clock binding: handle to dspi clock. | ||
8 | - clock-names: from common clock binding: Shall be "dspi". | ||
9 | - pinctrl-0: pin control group to be used for this controller. | ||
10 | - pinctrl-names: must contain a "default" entry. | ||
11 | - spi-num-chipselects : the number of the chipselect signals. | ||
12 | - bus-num : the slave chip chipselect signal number. | ||
13 | Example: | ||
14 | |||
15 | dspi0@4002c000 { | ||
16 | #address-cells = <1>; | ||
17 | #size-cells = <0>; | ||
18 | compatible = "fsl,vf610-dspi"; | ||
19 | reg = <0x4002c000 0x1000>; | ||
20 | interrupts = <0 67 0x04>; | ||
21 | clocks = <&clks VF610_CLK_DSPI0>; | ||
22 | clock-names = "dspi"; | ||
23 | spi-num-chipselects = <5>; | ||
24 | bus-num = <0>; | ||
25 | pinctrl-names = "default"; | ||
26 | pinctrl-0 = <&pinctrl_dspi0_1>; | ||
27 | status = "okay"; | ||
28 | |||
29 | sflash: at26df081a@0 { | ||
30 | #address-cells = <1>; | ||
31 | #size-cells = <1>; | ||
32 | compatible = "atmel,at26df081a"; | ||
33 | spi-max-frequency = <16000000>; | ||
34 | spi-cpol; | ||
35 | spi-cpha; | ||
36 | reg = <0>; | ||
37 | linux,modalias = "m25p80"; | ||
38 | modal = "at26df081a"; | ||
39 | }; | ||
40 | }; | ||
41 | |||
42 | |||
diff --git a/Documentation/devicetree/bindings/spi/spi_altera.txt b/Documentation/devicetree/bindings/spi/spi_altera.txt index dda375943506..31319dcf30ab 100644 --- a/Documentation/devicetree/bindings/spi/spi_altera.txt +++ b/Documentation/devicetree/bindings/spi/spi_altera.txt | |||
@@ -1,4 +1,5 @@ | |||
1 | Altera SPI | 1 | Altera SPI |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be "ALTR,spi-1.0". | 4 | - compatible : should be "ALTR,spi-1.0". <DEPRECATED> |
5 | - compatible : should be "altr,spi-1.0". | ||
diff --git a/Documentation/devicetree/bindings/spi/ti_qspi.txt b/Documentation/devicetree/bindings/spi/ti_qspi.txt new file mode 100644 index 000000000000..1f9641ade0b5 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/ti_qspi.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | TI QSPI controller. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "ti,dra7xxx-qspi" or "ti,am4372-qspi". | ||
5 | - reg: Should contain QSPI registers location and length. | ||
6 | - #address-cells, #size-cells : Must be present if the device has sub-nodes | ||
7 | - ti,hwmods: Name of the hwmod associated to the QSPI | ||
8 | |||
9 | Recommended properties: | ||
10 | - spi-max-frequency: Definition as per | ||
11 | Documentation/devicetree/bindings/spi/spi-bus.txt | ||
12 | |||
13 | Example: | ||
14 | |||
15 | qspi: qspi@4b300000 { | ||
16 | compatible = "ti,dra7xxx-qspi"; | ||
17 | reg = <0x4b300000 0x100>; | ||
18 | #address-cells = <1>; | ||
19 | #size-cells = <0>; | ||
20 | spi-max-frequency = <25000000>; | ||
21 | ti,hwmods = "qspi"; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt index 46882058b59b..ee05dc390694 100644 --- a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt +++ b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt | |||
@@ -1,7 +1,8 @@ | |||
1 | * Freescale i.MX28 LRADC device driver | 1 | * Freescale i.MX28 LRADC device driver |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "fsl,imx28-lradc" | 4 | - compatible: Should be "fsl,imx23-lradc" for i.MX23 SoC and "fsl,imx28-lradc" |
5 | for i.MX28 SoC | ||
5 | - reg: Address and length of the register set for the device | 6 | - reg: Address and length of the register set for the device |
6 | - interrupts: Should contain the LRADC interrupts | 7 | - interrupts: Should contain the LRADC interrupts |
7 | 8 | ||
@@ -9,13 +10,38 @@ Optional properties: | |||
9 | - fsl,lradc-touchscreen-wires: Number of wires used to connect the touchscreen | 10 | - fsl,lradc-touchscreen-wires: Number of wires used to connect the touchscreen |
10 | to LRADC. Valid value is either 4 or 5. If this | 11 | to LRADC. Valid value is either 4 or 5. If this |
11 | property is not present, then the touchscreen is | 12 | property is not present, then the touchscreen is |
12 | disabled. | 13 | disabled. 5 wires is valid for i.MX28 SoC only. |
14 | - fsl,ave-ctrl: number of samples per direction to calculate an average value. | ||
15 | Allowed value is 1 ... 31, default is 4 | ||
16 | - fsl,ave-delay: delay between consecutive samples. Allowed value is | ||
17 | 1 ... 2047. It is used if 'fsl,ave-ctrl' > 1, counts at | ||
18 | 2 kHz and its default is 2 (= 1 ms) | ||
19 | - fsl,settling: delay between plate switch to next sample. Allowed value is | ||
20 | 1 ... 2047. It counts at 2 kHz and its default is | ||
21 | 10 (= 5 ms) | ||
13 | 22 | ||
14 | Examples: | 23 | Example for i.MX23 SoC: |
24 | |||
25 | lradc@80050000 { | ||
26 | compatible = "fsl,imx23-lradc"; | ||
27 | reg = <0x80050000 0x2000>; | ||
28 | interrupts = <36 37 38 39 40 41 42 43 44>; | ||
29 | status = "okay"; | ||
30 | fsl,lradc-touchscreen-wires = <4>; | ||
31 | fsl,ave-ctrl = <4>; | ||
32 | fsl,ave-delay = <2>; | ||
33 | fsl,settling = <10>; | ||
34 | }; | ||
35 | |||
36 | Example for i.MX28 SoC: | ||
15 | 37 | ||
16 | lradc@80050000 { | 38 | lradc@80050000 { |
17 | compatible = "fsl,imx28-lradc"; | 39 | compatible = "fsl,imx28-lradc"; |
18 | reg = <0x80050000 0x2000>; | 40 | reg = <0x80050000 0x2000>; |
19 | interrupts = <10 14 15 16 17 18 19 | 41 | interrupts = <10 14 15 16 17 18 19 20 21 22 23 24 25>; |
20 | 20 21 22 23 24 25>; | 42 | status = "okay"; |
43 | fsl,lradc-touchscreen-wires = <5>; | ||
44 | fsl,ave-ctrl = <4>; | ||
45 | fsl,ave-delay = <2>; | ||
46 | fsl,settling = <10>; | ||
21 | }; | 47 | }; |
diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt new file mode 100644 index 000000000000..284f5300fd8b --- /dev/null +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt | |||
@@ -0,0 +1,55 @@ | |||
1 | * Exynos Thermal Management Unit (TMU) | ||
2 | |||
3 | ** Required properties: | ||
4 | |||
5 | - compatible : One of the following: | ||
6 | "samsung,exynos4412-tmu" | ||
7 | "samsung,exynos4210-tmu" | ||
8 | "samsung,exynos5250-tmu" | ||
9 | "samsung,exynos5440-tmu" | ||
10 | - interrupt-parent : The phandle for the interrupt controller | ||
11 | - reg : Address range of the thermal registers. For soc's which has multiple | ||
12 | instances of TMU and some registers are shared across all TMU's like | ||
13 | interrupt related then 2 set of register has to supplied. First set | ||
14 | belongs to each instance of TMU and second set belongs to common TMU | ||
15 | registers. | ||
16 | - interrupts : Should contain interrupt for thermal system | ||
17 | - clocks : The main clock for TMU device | ||
18 | - clock-names : Thermal system clock name | ||
19 | - vtmu-supply: This entry is optional and provides the regulator node supplying | ||
20 | voltage to TMU. If needed this entry can be placed inside | ||
21 | board/platform specific dts file. | ||
22 | |||
23 | Example 1): | ||
24 | |||
25 | tmu@100C0000 { | ||
26 | compatible = "samsung,exynos4412-tmu"; | ||
27 | interrupt-parent = <&combiner>; | ||
28 | reg = <0x100C0000 0x100>; | ||
29 | interrupts = <2 4>; | ||
30 | clocks = <&clock 383>; | ||
31 | clock-names = "tmu_apbif"; | ||
32 | status = "disabled"; | ||
33 | vtmu-supply = <&tmu_regulator_node>; | ||
34 | }; | ||
35 | |||
36 | Example 2): | ||
37 | |||
38 | tmuctrl_0: tmuctrl@160118 { | ||
39 | compatible = "samsung,exynos5440-tmu"; | ||
40 | reg = <0x160118 0x230>, <0x160368 0x10>; | ||
41 | interrupts = <0 58 0>; | ||
42 | clocks = <&clock 21>; | ||
43 | clock-names = "tmu_apbif"; | ||
44 | }; | ||
45 | |||
46 | Note: For multi-instance tmu each instance should have an alias correctly | ||
47 | numbered in "aliases" node. | ||
48 | |||
49 | Example: | ||
50 | |||
51 | aliases { | ||
52 | tmuctrl0 = &tmuctrl_0; | ||
53 | tmuctrl1 = &tmuctrl_1; | ||
54 | tmuctrl2 = &tmuctrl_2; | ||
55 | }; | ||
diff --git a/Documentation/devicetree/bindings/thermal/imx-thermal.txt b/Documentation/devicetree/bindings/thermal/imx-thermal.txt new file mode 100644 index 000000000000..541c25e49abf --- /dev/null +++ b/Documentation/devicetree/bindings/thermal/imx-thermal.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | * Temperature Monitor (TEMPMON) on Freescale i.MX SoCs | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "fsl,imx6q-thermal" | ||
5 | - fsl,tempmon : phandle pointer to system controller that contains TEMPMON | ||
6 | control registers, e.g. ANATOP on imx6q. | ||
7 | - fsl,tempmon-data : phandle pointer to fuse controller that contains TEMPMON | ||
8 | calibration data, e.g. OCOTP on imx6q. The details about calibration data | ||
9 | can be found in SoC Reference Manual. | ||
10 | |||
11 | Example: | ||
12 | |||
13 | tempmon { | ||
14 | compatible = "fsl,imx6q-tempmon"; | ||
15 | fsl,tempmon = <&anatop>; | ||
16 | fsl,tempmon-data = <&ocotp>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/timer/efm32,timer.txt b/Documentation/devicetree/bindings/timer/efm32,timer.txt new file mode 100644 index 000000000000..97a568f696c9 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/efm32,timer.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | * EFM32 timer hardware | ||
2 | |||
3 | The efm32 Giant Gecko SoCs come with four 16 bit timers. Two counters can be | ||
4 | connected to form a 32 bit counter. Each timer has three Compare/Capture | ||
5 | channels and can be used as PWM or Quadrature Decoder. Available clock sources | ||
6 | are the cpu's HFPERCLK (with a 10-bit prescaler) or an external pin. | ||
7 | |||
8 | Required properties: | ||
9 | - compatible : Should be efm32,timer | ||
10 | - reg : Address and length of the register set | ||
11 | - clocks : Should contain a reference to the HFPERCLK | ||
12 | |||
13 | Optional properties: | ||
14 | - interrupts : Reference to the timer interrupt | ||
15 | |||
16 | Example: | ||
17 | |||
18 | timer@40010c00 { | ||
19 | compatible = "efm32,timer"; | ||
20 | reg = <0x40010c00 0x400>; | ||
21 | interrupts = <14>; | ||
22 | clocks = <&cmu clk_HFPERCLKTIMER3>; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt b/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt index 36381129d141..f455182b1086 100644 --- a/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt +++ b/Documentation/devicetree/bindings/timer/marvell,armada-370-xp-timer.txt | |||
@@ -2,14 +2,40 @@ Marvell Armada 370 and Armada XP Timers | |||
2 | --------------------------------------- | 2 | --------------------------------------- |
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible: Should be "marvell,armada-370-xp-timer" | 5 | - compatible: Should be either "marvell,armada-370-timer" or |
6 | "marvell,armada-xp-timer" as appropriate. | ||
6 | - interrupts: Should contain the list of Global Timer interrupts and | 7 | - interrupts: Should contain the list of Global Timer interrupts and |
7 | then local timer interrupts | 8 | then local timer interrupts |
8 | - reg: Should contain location and length for timers register. First | 9 | - reg: Should contain location and length for timers register. First |
9 | pair for the Global Timer registers, second pair for the | 10 | pair for the Global Timer registers, second pair for the |
10 | local/private timers. | 11 | local/private timers. |
11 | - clocks: clock driving the timer hardware | ||
12 | 12 | ||
13 | Optional properties: | 13 | Clocks required for compatible = "marvell,armada-370-timer": |
14 | - marvell,timer-25Mhz: Tells whether the Global timer supports the 25 | 14 | - clocks : Must contain a single entry describing the clock input |
15 | Mhz fixed mode (available on Armada XP and not on Armada 370) | 15 | |
16 | Clocks required for compatible = "marvell,armada-xp-timer": | ||
17 | - clocks : Must contain an entry for each entry in clock-names. | ||
18 | - clock-names : Must include the following entries: | ||
19 | "nbclk" (L2/coherency fabric clock), | ||
20 | "fixed" (Reference 25 MHz fixed-clock). | ||
21 | |||
22 | Examples: | ||
23 | |||
24 | - Armada 370: | ||
25 | |||
26 | timer { | ||
27 | compatible = "marvell,armada-370-timer"; | ||
28 | reg = <0x20300 0x30>, <0x21040 0x30>; | ||
29 | interrupts = <37>, <38>, <39>, <40>, <5>, <6>; | ||
30 | clocks = <&coreclk 2>; | ||
31 | }; | ||
32 | |||
33 | - Armada XP: | ||
34 | |||
35 | timer { | ||
36 | compatible = "marvell,armada-xp-timer"; | ||
37 | reg = <0x20300 0x30>, <0x21040 0x30>; | ||
38 | interrupts = <37>, <38>, <39>, <40>, <5>, <6>; | ||
39 | clocks = <&coreclk 2>, <&refclk>; | ||
40 | clock-names = "nbclk", "fixed"; | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt new file mode 100644 index 000000000000..da2d510cae47 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/moxa,moxart-timer.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | MOXA ART timer | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : Must be "moxa,moxart-timer" | ||
6 | - reg : Should contain registers location and length | ||
7 | - interrupts : Should contain the timer interrupt number | ||
8 | - clocks : Should contain phandle for the clock that drives the counter | ||
9 | |||
10 | Example: | ||
11 | |||
12 | timer: timer@98400000 { | ||
13 | compatible = "moxa,moxart-timer"; | ||
14 | reg = <0x98400000 0x42>; | ||
15 | interrupts = <19 1>; | ||
16 | clocks = <&coreclk>; | ||
17 | }; | ||
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt deleted file mode 100644 index c662eb36be29..000000000000 --- a/Documentation/devicetree/bindings/tty/serial/fsl-imx-uart.txt +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | * Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,<soc>-uart" | ||
5 | - reg : Address and length of the register set for the device | ||
6 | - interrupts : Should contain uart interrupt | ||
7 | |||
8 | Optional properties: | ||
9 | - fsl,uart-has-rtscts : Indicate the uart has rts and cts | ||
10 | - fsl,irda-mode : Indicate the uart supports irda mode | ||
11 | - fsl,dte-mode : Indicate the uart works in DTE mode. The uart works | ||
12 | is DCE mode by default. | ||
13 | |||
14 | Example: | ||
15 | |||
16 | serial@73fbc000 { | ||
17 | compatible = "fsl,imx51-uart", "fsl,imx21-uart"; | ||
18 | reg = <0x73fbc000 0x4000>; | ||
19 | interrupts = <31>; | ||
20 | fsl,uart-has-rtscts; | ||
21 | fsl,dte-mode; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/tty/serial/msm_serial.txt b/Documentation/devicetree/bindings/tty/serial/msm_serial.txt deleted file mode 100644 index aef383eb8876..000000000000 --- a/Documentation/devicetree/bindings/tty/serial/msm_serial.txt +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | * Qualcomm MSM UART | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : | ||
5 | - "qcom,msm-uart", and one of "qcom,msm-hsuart" or | ||
6 | "qcom,msm-lsuart". | ||
7 | - reg : offset and length of the register set for the device | ||
8 | for the hsuart operating in compatible mode, there should be a | ||
9 | second pair describing the gsbi registers. | ||
10 | - interrupts : should contain the uart interrupt. | ||
11 | |||
12 | There are two different UART blocks used in MSM devices, | ||
13 | "qcom,msm-hsuart" and "qcom,msm-lsuart". The msm-serial driver is | ||
14 | able to handle both of these, and matches against the "qcom,msm-uart" | ||
15 | as the compatibility. | ||
16 | |||
17 | The registers for the "qcom,msm-hsuart" device need to specify both | ||
18 | register blocks, even for the common driver. | ||
19 | |||
20 | Example: | ||
21 | |||
22 | uart@19c400000 { | ||
23 | compatible = "qcom,msm-hsuart", "qcom,msm-uart"; | ||
24 | reg = <0x19c40000 0x1000>, | ||
25 | <0x19c00000 0x1000>; | ||
26 | interrupts = <195>; | ||
27 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/am33xx-usb.txt b/Documentation/devicetree/bindings/usb/am33xx-usb.txt index dc9dc8c87f15..20c2ff2ba07e 100644 --- a/Documentation/devicetree/bindings/usb/am33xx-usb.txt +++ b/Documentation/devicetree/bindings/usb/am33xx-usb.txt | |||
@@ -1,35 +1,197 @@ | |||
1 | AM33XX MUSB GLUE | 1 | AM33xx MUSB |
2 | - compatible : Should be "ti,musb-am33xx" | 2 | ~~~~~~~~~~~~~~~ |
3 | - reg : offset and length of register sets, first usbss, then for musb instances | 3 | - compatible: ti,am33xx-usb |
4 | - interrupts : usbss, musb instance interrupts in order | 4 | - reg: offset and length of the usbss register sets |
5 | - ti,hwmods : must be "usb_otg_hs" | 5 | - ti,hwmods : must be "usb_otg_hs" |
6 | - multipoint : Should be "1" indicating the musb controller supports | 6 | |
7 | multipoint. This is a MUSB configuration-specific setting. | 7 | The glue layer contains multiple child nodes. It is required the have |
8 | - num-eps : Specifies the number of endpoints. This is also a | 8 | at least a control module node, USB node and a PHY node. The second USB |
9 | MUSB configuration-specific setting. Should be set to "16" | 9 | node and its PHY node is optional. The DMA node is also optional. |
10 | - ram-bits : Specifies the ram address size. Should be set to "12" | 10 | |
11 | - port0-mode : Should be "3" to represent OTG. "1" signifies HOST and "2" | 11 | Reset module |
12 | represents PERIPHERAL. | 12 | ~~~~~~~~~~~~ |
13 | - port1-mode : Should be "1" to represent HOST. "3" signifies OTG and "2" | 13 | - compatible: ti,am335x-usb-ctrl-module |
14 | represents PERIPHERAL. | 14 | - reg: offset and length of the "USB control registers" in the "Control |
15 | - power : Should be "250". This signifies the controller can supply up to | 15 | Module" block. A second offset and length for the USB wake up control |
16 | 500mA when operating in host mode. | 16 | in the same memory block. |
17 | - reg-names: "phy_ctrl" for the "USB control registers" and "wakeup" for | ||
18 | the USB wake up control register. | ||
19 | |||
20 | USB PHY | ||
21 | ~~~~~~~ | ||
22 | compatible: ti,am335x-usb-phy | ||
23 | reg: offset and length of the "USB PHY" register space | ||
24 | ti,ctrl_mod: reference to the "reset module" node | ||
25 | reg-names: phy | ||
26 | The PHY should have a "phy" alias numbered properly in the alias | ||
27 | node. | ||
28 | |||
29 | USB | ||
30 | ~~~ | ||
31 | - compatible: ti,musb-am33xx | ||
32 | - reg: offset and length of "USB Controller Registers", and offset and | ||
33 | length of "USB Core" register space. | ||
34 | - reg-names: control for the ""USB Controller Registers" and "mc" for | ||
35 | "USB Core" register space | ||
36 | - interrupts: USB interrupt number | ||
37 | - interrupt-names: mc | ||
38 | - dr_mode: Should be one of "host", "peripheral" or "otg". | ||
39 | - mentor,multipoint: Should be "1" indicating the musb controller supports | ||
40 | multipoint. This is a MUSB configuration-specific setting. | ||
41 | - mentor,num-eps: Specifies the number of endpoints. This is also a | ||
42 | MUSB configuration-specific setting. Should be set to "16" | ||
43 | - mentor,ram-bits: Specifies the ram address size. Should be set to "12" | ||
44 | - mentor,power: Should be "500". This signifies the controller can supply up to | ||
45 | 500mA when operating in host mode. | ||
46 | - phys: reference to the USB phy | ||
47 | - dmas: specifies the dma channels | ||
48 | - dma-names: specifies the names of the channels. Use "rxN" for receive | ||
49 | and "txN" for transmit endpoints. N specifies the endpoint number. | ||
50 | |||
51 | The controller should have an "usb" alias numbered properly in the alias | ||
52 | node. | ||
53 | |||
54 | DMA | ||
55 | ~~~ | ||
56 | - compatible: ti,am3359-cppi41 | ||
57 | - reg: offset and length of the following register spaces: USBSS, USB | ||
58 | CPPI DMA Controller, USB CPPI DMA Scheduler, USB Queue Manager | ||
59 | - reg-names: glue, controller, scheduler, queuemgr | ||
60 | - #dma-cells: should be set to 2. The first number represents the | ||
61 | endpoint number (0 … 14 for endpoints 1 … 15 on instance 0 and 15 … 29 | ||
62 | for endpoints 1 … 15 on instance 1). The second number is 0 for RX and | ||
63 | 1 for TX transfers. | ||
64 | - #dma-channels: should be set to 30 representing the 15 endpoints for | ||
65 | each USB instance. | ||
17 | 66 | ||
18 | Example: | 67 | Example: |
68 | ~~~~~~~~ | ||
69 | The following example contains all the nodes as used on am335x-evm: | ||
70 | |||
71 | aliases { | ||
72 | usb0 = &usb0; | ||
73 | usb1 = &usb1; | ||
74 | phy0 = &usb0_phy; | ||
75 | phy1 = &usb1_phy; | ||
76 | }; | ||
19 | 77 | ||
20 | usb@47400000 { | 78 | usb: usb@47400000 { |
21 | compatible = "ti,musb-am33xx"; | 79 | compatible = "ti,am33xx-usb"; |
22 | reg = <0x47400000 0x1000 /* usbss */ | 80 | reg = <0x47400000 0x1000>; |
23 | 0x47401000 0x800 /* musb instance 0 */ | 81 | ranges; |
24 | 0x47401800 0x800>; /* musb instance 1 */ | 82 | #address-cells = <1>; |
25 | interrupts = <17 /* usbss */ | 83 | #size-cells = <1>; |
26 | 18 /* musb instance 0 */ | ||
27 | 19>; /* musb instance 1 */ | ||
28 | multipoint = <1>; | ||
29 | num-eps = <16>; | ||
30 | ram-bits = <12>; | ||
31 | port0-mode = <3>; | ||
32 | port1-mode = <3>; | ||
33 | power = <250>; | ||
34 | ti,hwmods = "usb_otg_hs"; | 84 | ti,hwmods = "usb_otg_hs"; |
85 | |||
86 | ctrl_mod: control@44e10000 { | ||
87 | compatible = "ti,am335x-usb-ctrl-module"; | ||
88 | reg = <0x44e10620 0x10 | ||
89 | 0x44e10648 0x4>; | ||
90 | reg-names = "phy_ctrl", "wakeup"; | ||
91 | }; | ||
92 | |||
93 | usb0_phy: usb-phy@47401300 { | ||
94 | compatible = "ti,am335x-usb-phy"; | ||
95 | reg = <0x47401300 0x100>; | ||
96 | reg-names = "phy"; | ||
97 | ti,ctrl_mod = <&ctrl_mod>; | ||
98 | }; | ||
99 | |||
100 | usb0: usb@47401000 { | ||
101 | compatible = "ti,musb-am33xx"; | ||
102 | reg = <0x47401400 0x400 | ||
103 | 0x47401000 0x200>; | ||
104 | reg-names = "mc", "control"; | ||
105 | |||
106 | interrupts = <18>; | ||
107 | interrupt-names = "mc"; | ||
108 | dr_mode = "otg" | ||
109 | mentor,multipoint = <1>; | ||
110 | mentor,num-eps = <16>; | ||
111 | mentor,ram-bits = <12>; | ||
112 | mentor,power = <500>; | ||
113 | phys = <&usb0_phy>; | ||
114 | |||
115 | dmas = <&cppi41dma 0 0 &cppi41dma 1 0 | ||
116 | &cppi41dma 2 0 &cppi41dma 3 0 | ||
117 | &cppi41dma 4 0 &cppi41dma 5 0 | ||
118 | &cppi41dma 6 0 &cppi41dma 7 0 | ||
119 | &cppi41dma 8 0 &cppi41dma 9 0 | ||
120 | &cppi41dma 10 0 &cppi41dma 11 0 | ||
121 | &cppi41dma 12 0 &cppi41dma 13 0 | ||
122 | &cppi41dma 14 0 &cppi41dma 0 1 | ||
123 | &cppi41dma 1 1 &cppi41dma 2 1 | ||
124 | &cppi41dma 3 1 &cppi41dma 4 1 | ||
125 | &cppi41dma 5 1 &cppi41dma 6 1 | ||
126 | &cppi41dma 7 1 &cppi41dma 8 1 | ||
127 | &cppi41dma 9 1 &cppi41dma 10 1 | ||
128 | &cppi41dma 11 1 &cppi41dma 12 1 | ||
129 | &cppi41dma 13 1 &cppi41dma 14 1>; | ||
130 | dma-names = | ||
131 | "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", | ||
132 | "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", | ||
133 | "rx14", "rx15", | ||
134 | "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", | ||
135 | "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", | ||
136 | "tx14", "tx15"; | ||
137 | }; | ||
138 | |||
139 | usb1_phy: usb-phy@47401b00 { | ||
140 | compatible = "ti,am335x-usb-phy"; | ||
141 | reg = <0x47401b00 0x100>; | ||
142 | reg-names = "phy"; | ||
143 | ti,ctrl_mod = <&ctrl_mod>; | ||
144 | }; | ||
145 | |||
146 | usb1: usb@47401800 { | ||
147 | compatible = "ti,musb-am33xx"; | ||
148 | reg = <0x47401c00 0x400 | ||
149 | 0x47401800 0x200>; | ||
150 | reg-names = "mc", "control"; | ||
151 | interrupts = <19>; | ||
152 | interrupt-names = "mc"; | ||
153 | dr_mode = "host" | ||
154 | mentor,multipoint = <1>; | ||
155 | mentor,num-eps = <16>; | ||
156 | mentor,ram-bits = <12>; | ||
157 | mentor,power = <500>; | ||
158 | phys = <&usb1_phy>; | ||
159 | |||
160 | dmas = <&cppi41dma 15 0 &cppi41dma 16 0 | ||
161 | &cppi41dma 17 0 &cppi41dma 18 0 | ||
162 | &cppi41dma 19 0 &cppi41dma 20 0 | ||
163 | &cppi41dma 21 0 &cppi41dma 22 0 | ||
164 | &cppi41dma 23 0 &cppi41dma 24 0 | ||
165 | &cppi41dma 25 0 &cppi41dma 26 0 | ||
166 | &cppi41dma 27 0 &cppi41dma 28 0 | ||
167 | &cppi41dma 29 0 &cppi41dma 15 1 | ||
168 | &cppi41dma 16 1 &cppi41dma 17 1 | ||
169 | &cppi41dma 18 1 &cppi41dma 19 1 | ||
170 | &cppi41dma 20 1 &cppi41dma 21 1 | ||
171 | &cppi41dma 22 1 &cppi41dma 23 1 | ||
172 | &cppi41dma 24 1 &cppi41dma 25 1 | ||
173 | &cppi41dma 26 1 &cppi41dma 27 1 | ||
174 | &cppi41dma 28 1 &cppi41dma 29 1>; | ||
175 | dma-names = | ||
176 | "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", | ||
177 | "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", | ||
178 | "rx14", "rx15", | ||
179 | "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", | ||
180 | "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", | ||
181 | "tx14", "tx15"; | ||
182 | }; | ||
183 | |||
184 | cppi41dma: dma-controller@07402000 { | ||
185 | compatible = "ti,am3359-cppi41"; | ||
186 | reg = <0x47400000 0x1000 | ||
187 | 0x47402000 0x1000 | ||
188 | 0x47403000 0x1000 | ||
189 | 0x47404000 0x4000>; | ||
190 | reg-names = "glue", "controller", "scheduler", "queuemgr"; | ||
191 | interrupts = <17>; | ||
192 | interrupt-names = "glue"; | ||
193 | #dma-cells = <2>; | ||
194 | #dma-channels = <30>; | ||
195 | #dma-requests = <256>; | ||
196 | }; | ||
35 | }; | 197 | }; |
diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt index 7a95c651ceb3..e807635f9e1c 100644 --- a/Documentation/devicetree/bindings/usb/dwc3.txt +++ b/Documentation/devicetree/bindings/usb/dwc3.txt | |||
@@ -3,10 +3,12 @@ synopsys DWC3 CORE | |||
3 | DWC3- USB3 CONTROLLER | 3 | DWC3- USB3 CONTROLLER |
4 | 4 | ||
5 | Required properties: | 5 | Required properties: |
6 | - compatible: must be "synopsys,dwc3" | 6 | - compatible: must be "snps,dwc3" |
7 | - reg : Address and length of the register set for the device | 7 | - reg : Address and length of the register set for the device |
8 | - interrupts: Interrupts used by the dwc3 controller. | 8 | - interrupts: Interrupts used by the dwc3 controller. |
9 | - usb-phy : array of phandle for the PHY device | 9 | - usb-phy : array of phandle for the PHY device. The first element |
10 | in the array is expected to be a handle to the USB2/HS PHY and | ||
11 | the second element is expected to be a handle to the USB3/SS PHY | ||
10 | 12 | ||
11 | Optional properties: | 13 | Optional properties: |
12 | - tx-fifo-resize: determines if the FIFO *has* to be reallocated. | 14 | - tx-fifo-resize: determines if the FIFO *has* to be reallocated. |
@@ -14,7 +16,7 @@ Optional properties: | |||
14 | This is usually a subnode to DWC3 glue to which it is connected. | 16 | This is usually a subnode to DWC3 glue to which it is connected. |
15 | 17 | ||
16 | dwc3@4a030000 { | 18 | dwc3@4a030000 { |
17 | compatible = "synopsys,dwc3"; | 19 | compatible = "snps,dwc3"; |
18 | reg = <0x4a030000 0xcfff>; | 20 | reg = <0x4a030000 0xcfff>; |
19 | interrupts = <0 92 4> | 21 | interrupts = <0 92 4> |
20 | usb-phy = <&usb2_phy>, <&usb3,phy>; | 22 | usb-phy = <&usb2_phy>, <&usb3,phy>; |
diff --git a/Documentation/devicetree/bindings/usb/generic.txt b/Documentation/devicetree/bindings/usb/generic.txt new file mode 100644 index 000000000000..477d5bb5e51c --- /dev/null +++ b/Documentation/devicetree/bindings/usb/generic.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | Generic USB Properties | ||
2 | |||
3 | Optional properties: | ||
4 | - maximum-speed: tells USB controllers we want to work up to a certain | ||
5 | speed. Valid arguments are "super-speed", "high-speed", | ||
6 | "full-speed" and "low-speed". In case this isn't passed | ||
7 | via DT, USB controllers should default to their maximum | ||
8 | HW capability. | ||
9 | - dr_mode: tells Dual-Role USB controllers that we want to work on a | ||
10 | particular mode. Valid arguments are "host", | ||
11 | "peripheral" and "otg". In case this attribute isn't | ||
12 | passed via DT, USB DRD controllers should default to | ||
13 | OTG. | ||
14 | |||
15 | This is an attribute to a USB controller such as: | ||
16 | |||
17 | dwc3@4a030000 { | ||
18 | compatible = "synopsys,dwc3"; | ||
19 | reg = <0x4a030000 0xcfff>; | ||
20 | interrupts = <0 92 4> | ||
21 | usb-phy = <&usb2_phy>, <&usb3,phy>; | ||
22 | maximum-speed = "super-speed"; | ||
23 | dr_mode = "otg"; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt b/Documentation/devicetree/bindings/usb/msm-hsusb.txt new file mode 100644 index 000000000000..5ea26c631e3a --- /dev/null +++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt | |||
@@ -0,0 +1,17 @@ | |||
1 | MSM SoC HSUSB controllers | ||
2 | |||
3 | EHCI | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Should contain "qcom,ehci-host" | ||
7 | - regs: offset and length of the register set in the memory map | ||
8 | - usb-phy: phandle for the PHY device | ||
9 | |||
10 | Example EHCI controller device node: | ||
11 | |||
12 | ehci: ehci@f9a55000 { | ||
13 | compatible = "qcom,ehci-host"; | ||
14 | reg = <0xf9a55000 0x400>; | ||
15 | usb-phy = <&usb_otg>; | ||
16 | }; | ||
17 | |||
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt index c4c9e9e664aa..ba797d3e6326 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt | |||
@@ -3,7 +3,7 @@ Tegra SOC USB PHY | |||
3 | The device node for Tegra SOC USB PHY: | 3 | The device node for Tegra SOC USB PHY: |
4 | 4 | ||
5 | Required properties : | 5 | Required properties : |
6 | - compatible : Should be "nvidia,tegra20-usb-phy". | 6 | - compatible : Should be "nvidia,tegra<chip>-usb-phy". |
7 | - reg : Defines the following set of registers, in the order listed: | 7 | - reg : Defines the following set of registers, in the order listed: |
8 | - The PHY's own register set. | 8 | - The PHY's own register set. |
9 | Always present. | 9 | Always present. |
@@ -24,17 +24,26 @@ Required properties : | |||
24 | Required properties for phy_type == ulpi: | 24 | Required properties for phy_type == ulpi: |
25 | - nvidia,phy-reset-gpio : The GPIO used to reset the PHY. | 25 | - nvidia,phy-reset-gpio : The GPIO used to reset the PHY. |
26 | 26 | ||
27 | Required PHY timing params for utmi phy: | 27 | Required PHY timing params for utmi phy, for all chips: |
28 | - nvidia,hssync-start-delay : Number of 480 Mhz clock cycles to wait before | 28 | - nvidia,hssync-start-delay : Number of 480 Mhz clock cycles to wait before |
29 | start of sync launches RxActive | 29 | start of sync launches RxActive |
30 | - nvidia,elastic-limit : Variable FIFO Depth of elastic input store | 30 | - nvidia,elastic-limit : Variable FIFO Depth of elastic input store |
31 | - nvidia,idle-wait-delay : Number of 480 Mhz clock cycles of idle to wait | 31 | - nvidia,idle-wait-delay : Number of 480 Mhz clock cycles of idle to wait |
32 | before declare IDLE. | 32 | before declare IDLE. |
33 | - nvidia,term-range-adj : Range adjusment on terminations | 33 | - nvidia,term-range-adj : Range adjusment on terminations |
34 | - nvidia,xcvr-setup : HS driver output control | 34 | - Either one of the following for HS driver output control: |
35 | - nvidia,xcvr-setup : integer, uses the provided value. | ||
36 | - nvidia,xcvr-setup-use-fuses : boolean, indicates that the value is read | ||
37 | from the on-chip fuses | ||
38 | If both are provided, nvidia,xcvr-setup-use-fuses takes precedence. | ||
35 | - nvidia,xcvr-lsfslew : LS falling slew rate control. | 39 | - nvidia,xcvr-lsfslew : LS falling slew rate control. |
36 | - nvidia,xcvr-lsrslew : LS rising slew rate control. | 40 | - nvidia,xcvr-lsrslew : LS rising slew rate control. |
37 | 41 | ||
42 | Required PHY timing params for utmi phy, only on Tegra30 and above: | ||
43 | - nvidia,xcvr-hsslew : HS slew rate control. | ||
44 | - nvidia,hssquelch-level : HS squelch detector level. | ||
45 | - nvidia,hsdiscon-level : HS disconnect detector level. | ||
46 | |||
38 | Optional properties: | 47 | Optional properties: |
39 | - nvidia,has-legacy-mode : boolean indicates whether this controller can | 48 | - nvidia,has-legacy-mode : boolean indicates whether this controller can |
40 | operate in legacy mode (as APX 2500 / 2600). In legacy mode some | 49 | operate in legacy mode (as APX 2500 / 2600). In legacy mode some |
@@ -48,5 +57,5 @@ Optional properties: | |||
48 | peripheral means it is device controller | 57 | peripheral means it is device controller |
49 | otg means it can operate as either ("on the go") | 58 | otg means it can operate as either ("on the go") |
50 | 59 | ||
51 | Required properties for dr_mode == otg: | 60 | VBUS control (required for dr_mode == otg, optional for dr_mode == host): |
52 | - vbus-supply: regulator for VBUS | 61 | - vbus-supply: regulator for VBUS |
diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt index 57e71f6817d0..090e5e22bd2b 100644 --- a/Documentation/devicetree/bindings/usb/omap-usb.txt +++ b/Documentation/devicetree/bindings/usb/omap-usb.txt | |||
@@ -3,9 +3,6 @@ OMAP GLUE AND OTHER OMAP SPECIFIC COMPONENTS | |||
3 | OMAP MUSB GLUE | 3 | OMAP MUSB GLUE |
4 | - compatible : Should be "ti,omap4-musb" or "ti,omap3-musb" | 4 | - compatible : Should be "ti,omap4-musb" or "ti,omap3-musb" |
5 | - ti,hwmods : must be "usb_otg_hs" | 5 | - ti,hwmods : must be "usb_otg_hs" |
6 | - ti,has-mailbox : to specify that omap uses an external mailbox | ||
7 | (in control module) to communicate with the musb core during device connect | ||
8 | and disconnect. | ||
9 | - multipoint : Should be "1" indicating the musb controller supports | 6 | - multipoint : Should be "1" indicating the musb controller supports |
10 | multipoint. This is a MUSB configuration-specific setting. | 7 | multipoint. This is a MUSB configuration-specific setting. |
11 | - num-eps : Specifies the number of endpoints. This is also a | 8 | - num-eps : Specifies the number of endpoints. This is also a |
@@ -19,6 +16,9 @@ OMAP MUSB GLUE | |||
19 | - power : Should be "50". This signifies the controller can supply up to | 16 | - power : Should be "50". This signifies the controller can supply up to |
20 | 100mA when operating in host mode. | 17 | 100mA when operating in host mode. |
21 | - usb-phy : the phandle for the PHY device | 18 | - usb-phy : the phandle for the PHY device |
19 | - phys : the phandle for the PHY device (used by generic PHY framework) | ||
20 | - phy-names : the names of the PHY corresponding to the PHYs present in the | ||
21 | *phy* phandle. | ||
22 | 22 | ||
23 | Optional properties: | 23 | Optional properties: |
24 | - ctrl-module : phandle of the control module this glue uses to write to | 24 | - ctrl-module : phandle of the control module this glue uses to write to |
@@ -28,11 +28,12 @@ SOC specific device node entry | |||
28 | usb_otg_hs: usb_otg_hs@4a0ab000 { | 28 | usb_otg_hs: usb_otg_hs@4a0ab000 { |
29 | compatible = "ti,omap4-musb"; | 29 | compatible = "ti,omap4-musb"; |
30 | ti,hwmods = "usb_otg_hs"; | 30 | ti,hwmods = "usb_otg_hs"; |
31 | ti,has-mailbox; | ||
32 | multipoint = <1>; | 31 | multipoint = <1>; |
33 | num-eps = <16>; | 32 | num-eps = <16>; |
34 | ram-bits = <12>; | 33 | ram-bits = <12>; |
35 | ctrl-module = <&omap_control_usb>; | 34 | ctrl-module = <&omap_control_usb>; |
35 | phys = <&usb2_phy>; | ||
36 | phy-names = "usb2-phy"; | ||
36 | }; | 37 | }; |
37 | 38 | ||
38 | Board specific device node entry | 39 | Board specific device node entry |
@@ -53,6 +54,11 @@ OMAP DWC3 GLUE | |||
53 | It should be set to "1" for HW mode and "2" for SW mode. | 54 | It should be set to "1" for HW mode and "2" for SW mode. |
54 | - ranges: the child address space are mapped 1:1 onto the parent address space | 55 | - ranges: the child address space are mapped 1:1 onto the parent address space |
55 | 56 | ||
57 | Optional Properties: | ||
58 | - extcon : phandle for the extcon device omap dwc3 uses to detect | ||
59 | connect/disconnect events. | ||
60 | - vbus-supply : phandle to the regulator device tree node if needed. | ||
61 | |||
56 | Sub-nodes: | 62 | Sub-nodes: |
57 | The dwc3 core should be added as subnode to omap dwc3 glue. | 63 | The dwc3 core should be added as subnode to omap dwc3 glue. |
58 | - dwc3 : | 64 | - dwc3 : |
@@ -73,22 +79,22 @@ omap_dwc3 { | |||
73 | OMAP CONTROL USB | 79 | OMAP CONTROL USB |
74 | 80 | ||
75 | Required properties: | 81 | Required properties: |
76 | - compatible: Should be "ti,omap-control-usb" | 82 | - compatible: Should be one of |
83 | "ti,control-phy-otghs" - if it has otghs_control mailbox register as on OMAP4. | ||
84 | "ti,control-phy-usb2" - if it has Power down bit in control_dev_conf register | ||
85 | e.g. USB2_PHY on OMAP5. | ||
86 | "ti,control-phy-pipe3" - if it has DPLL and individual Rx & Tx power control | ||
87 | e.g. USB3 PHY and SATA PHY on OMAP5. | ||
88 | "ti,control-phy-dra7usb2" - if it has power down register like USB2 PHY on | ||
89 | DRA7 platform. | ||
77 | - reg : Address and length of the register set for the device. It contains | 90 | - reg : Address and length of the register set for the device. It contains |
78 | the address of "control_dev_conf" and "otghs_control" or "phy_power_usb" | 91 | the address of "otghs_control" for control-phy-otghs or "power" register |
79 | depending upon omap4 or omap5. | 92 | for other types. |
80 | - reg-names: The names of the register addresses corresponding to the registers | 93 | - reg-names: should be "otghs_control" control-phy-otghs and "power" for |
81 | filled in "reg". | 94 | other types. |
82 | - ti,type: This is used to differentiate whether the control module has | ||
83 | usb mailbox or usb3 phy power. omap4 has usb mailbox in control module to | ||
84 | notify events to the musb core and omap5 has usb3 phy power register to | ||
85 | power on usb3 phy. Should be "1" if it has mailbox and "2" if it has usb3 | ||
86 | phy power. | ||
87 | 95 | ||
88 | omap_control_usb: omap-control-usb@4a002300 { | 96 | omap_control_usb: omap-control-usb@4a002300 { |
89 | compatible = "ti,omap-control-usb"; | 97 | compatible = "ti,control-phy-otghs"; |
90 | reg = <0x4a002300 0x4>, | 98 | reg = <0x4a00233c 0x4>; |
91 | <0x4a00233c 0x4>; | 99 | reg-names = "otghs_control"; |
92 | reg-names = "control_dev_conf", "otghs_control"; | ||
93 | ti,type = <1>; | ||
94 | }; | 100 | }; |
diff --git a/Documentation/devicetree/bindings/usb/samsung-hsotg.txt b/Documentation/devicetree/bindings/usb/samsung-hsotg.txt new file mode 100644 index 000000000000..b83d428a265e --- /dev/null +++ b/Documentation/devicetree/bindings/usb/samsung-hsotg.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | Samsung High Speed USB OTG controller | ||
2 | ----------------------------- | ||
3 | |||
4 | The Samsung HSOTG IP can be found on Samsung SoCs, from S3C6400 onwards. | ||
5 | It gives functionality of OTG-compliant USB 2.0 host and device with | ||
6 | support for USB 2.0 high-speed (480Mbps) and full-speed (12 Mbps) | ||
7 | operation. | ||
8 | |||
9 | Currently only device mode is supported. | ||
10 | |||
11 | Binding details | ||
12 | ----- | ||
13 | |||
14 | Required properties: | ||
15 | - compatible: "samsung,s3c6400-hsotg" should be used for all currently | ||
16 | supported SoC, | ||
17 | - interrupt-parent: phandle for the interrupt controller to which the | ||
18 | interrupt signal of the HSOTG block is routed, | ||
19 | - interrupts: specifier of interrupt signal of interrupt controller, | ||
20 | according to bindings of interrupt controller, | ||
21 | - clocks: contains an array of clock specifiers: | ||
22 | - first entry: OTG clock | ||
23 | - clock-names: contains array of clock names: | ||
24 | - first entry: must be "otg" | ||
25 | - vusb_d-supply: phandle to voltage regulator of digital section, | ||
26 | - vusb_a-supply: phandle to voltage regulator of analog section. | ||
27 | |||
28 | Example | ||
29 | ----- | ||
30 | |||
31 | hsotg@12480000 { | ||
32 | compatible = "samsung,s3c6400-hsotg"; | ||
33 | reg = <0x12480000 0x20000>; | ||
34 | interrupts = <0 71 0>; | ||
35 | clocks = <&clock 305>; | ||
36 | clock-names = "otg"; | ||
37 | vusb_d-supply = <&vusb_reg>; | ||
38 | vusb_a-supply = <&vusbdac_reg>; | ||
39 | }; | ||
40 | |||
diff --git a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt index d7e272671c7e..1bd37faba05b 100644 --- a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt +++ b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt | |||
@@ -15,7 +15,7 @@ Optional properties: | |||
15 | 15 | ||
16 | - vcc-supply: phandle to the regulator that provides RESET to the PHY. | 16 | - vcc-supply: phandle to the regulator that provides RESET to the PHY. |
17 | 17 | ||
18 | - reset-supply: phandle to the regulator that provides power to the PHY. | 18 | - reset-gpios: Should specify the GPIO for reset. |
19 | 19 | ||
20 | Example: | 20 | Example: |
21 | 21 | ||
@@ -25,10 +25,9 @@ Example: | |||
25 | clocks = <&osc 0>; | 25 | clocks = <&osc 0>; |
26 | clock-names = "main_clk"; | 26 | clock-names = "main_clk"; |
27 | vcc-supply = <&hsusb1_vcc_regulator>; | 27 | vcc-supply = <&hsusb1_vcc_regulator>; |
28 | reset-supply = <&hsusb1_reset_regulator>; | 28 | reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>; |
29 | }; | 29 | }; |
30 | 30 | ||
31 | hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator | 31 | hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator |
32 | and expects that clock to be configured to 19.2MHz by the NOP PHY driver. | 32 | and expects that clock to be configured to 19.2MHz by the NOP PHY driver. |
33 | hsusb1_vcc_regulator provides power to the PHY and hsusb1_reset_regulator | 33 | hsusb1_vcc_regulator provides power to the PHY and GPIO 7 controls RESET. |
34 | controls RESET. | ||
diff --git a/Documentation/devicetree/bindings/usb/usb-phy.txt b/Documentation/devicetree/bindings/usb/usb-phy.txt index 61496f5cb095..c0245c888982 100644 --- a/Documentation/devicetree/bindings/usb/usb-phy.txt +++ b/Documentation/devicetree/bindings/usb/usb-phy.txt | |||
@@ -5,6 +5,8 @@ OMAP USB2 PHY | |||
5 | Required properties: | 5 | Required properties: |
6 | - compatible: Should be "ti,omap-usb2" | 6 | - compatible: Should be "ti,omap-usb2" |
7 | - reg : Address and length of the register set for the device. | 7 | - reg : Address and length of the register set for the device. |
8 | - #phy-cells: determine the number of cells that should be given in the | ||
9 | phandle while referencing this phy. | ||
8 | 10 | ||
9 | Optional properties: | 11 | Optional properties: |
10 | - ctrl-module : phandle of the control module used by PHY driver to power on | 12 | - ctrl-module : phandle of the control module used by PHY driver to power on |
@@ -16,6 +18,7 @@ usb2phy@4a0ad080 { | |||
16 | compatible = "ti,omap-usb2"; | 18 | compatible = "ti,omap-usb2"; |
17 | reg = <0x4a0ad080 0x58>; | 19 | reg = <0x4a0ad080 0x58>; |
18 | ctrl-module = <&omap_control_usb>; | 20 | ctrl-module = <&omap_control_usb>; |
21 | #phy-cells = <0>; | ||
19 | }; | 22 | }; |
20 | 23 | ||
21 | OMAP USB3 PHY | 24 | OMAP USB3 PHY |
@@ -25,6 +28,8 @@ Required properties: | |||
25 | - reg : Address and length of the register set for the device. | 28 | - reg : Address and length of the register set for the device. |
26 | - reg-names: The names of the register addresses corresponding to the registers | 29 | - reg-names: The names of the register addresses corresponding to the registers |
27 | filled in "reg". | 30 | filled in "reg". |
31 | - #phy-cells: determine the number of cells that should be given in the | ||
32 | phandle while referencing this phy. | ||
28 | 33 | ||
29 | Optional properties: | 34 | Optional properties: |
30 | - ctrl-module : phandle of the control module used by PHY driver to power on | 35 | - ctrl-module : phandle of the control module used by PHY driver to power on |
@@ -39,4 +44,5 @@ usb3phy@4a084400 { | |||
39 | <0x4a084c00 0x40>; | 44 | <0x4a084c00 0x40>; |
40 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | 45 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; |
41 | ctrl-module = <&omap_control_usb>; | 46 | ctrl-module = <&omap_control_usb>; |
47 | #phy-cells = <0>; | ||
42 | }; | 48 | }; |
diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt new file mode 100644 index 000000000000..5752df0e17a2 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | USB xHCI controllers | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "xhci-platform". | ||
5 | - reg: should contain address and length of the standard XHCI | ||
6 | register set for the device. | ||
7 | - interrupts: one XHCI interrupt should be described here. | ||
8 | |||
9 | Example: | ||
10 | usb@f0931000 { | ||
11 | compatible = "xhci-platform"; | ||
12 | reg = <0xf0931000 0x8c8>; | ||
13 | interrupts = <0x0 0x4e 0x0>; | ||
14 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/usb3503.txt b/Documentation/devicetree/bindings/usb/usb3503.txt index 8c5be48b43c8..a018da4a7ad7 100644 --- a/Documentation/devicetree/bindings/usb/usb3503.txt +++ b/Documentation/devicetree/bindings/usb/usb3503.txt | |||
@@ -1,8 +1,11 @@ | |||
1 | SMSC USB3503 High-Speed Hub Controller | 1 | SMSC USB3503 High-Speed Hub Controller |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "smsc,usb3503". | 4 | - compatible: Should be "smsc,usb3503" or "smsc,usb3503a". |
5 | - reg: Specifies the i2c slave address, it should be 0x08. | 5 | |
6 | Optional properties: | ||
7 | - reg: Specifies the i2c slave address, it is required and should be 0x08 | ||
8 | if I2C is used. | ||
6 | - connect-gpios: Should specify GPIO for connect. | 9 | - connect-gpios: Should specify GPIO for connect. |
7 | - disabled-ports: Should specify the ports unused. | 10 | - disabled-ports: Should specify the ports unused. |
8 | '1' or '2' or '3' are availe for this property to describe the port | 11 | '1' or '2' or '3' are availe for this property to describe the port |
diff --git a/Documentation/devicetree/bindings/usb/ux500-usb.txt b/Documentation/devicetree/bindings/usb/ux500-usb.txt index 330d6ec15401..439a41c79afa 100644 --- a/Documentation/devicetree/bindings/usb/ux500-usb.txt +++ b/Documentation/devicetree/bindings/usb/ux500-usb.txt | |||
@@ -15,7 +15,7 @@ Optional properties: | |||
15 | Example: | 15 | Example: |
16 | 16 | ||
17 | usb_per5@a03e0000 { | 17 | usb_per5@a03e0000 { |
18 | compatible = "stericsson,db8500-musb", "mentor,musb"; | 18 | compatible = "stericsson,db8500-musb"; |
19 | reg = <0xa03e0000 0x10000>; | 19 | reg = <0xa03e0000 0x10000>; |
20 | interrupts = <0 23 0x4>; | 20 | interrupts = <0 23 0x4>; |
21 | interrupt-names = "mc"; | 21 | interrupt-names = "mc"; |
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index 366ce9b87240..ce95ed1c6d3e 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -7,14 +7,20 @@ ad Avionic Design GmbH | |||
7 | adi Analog Devices, Inc. | 7 | adi Analog Devices, Inc. |
8 | aeroflexgaisler Aeroflex Gaisler AB | 8 | aeroflexgaisler Aeroflex Gaisler AB |
9 | ak Asahi Kasei Corp. | 9 | ak Asahi Kasei Corp. |
10 | altr Altera Corp. | ||
10 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) | 11 | amcc Applied Micro Circuits Corporation (APM, formally AMCC) |
11 | apm Applied Micro Circuits Corporation (APM) | 12 | apm Applied Micro Circuits Corporation (APM) |
12 | arm ARM Ltd. | 13 | arm ARM Ltd. |
13 | atmel Atmel Corporation | 14 | atmel Atmel Corporation |
15 | auo AU Optronics Corporation | ||
16 | avago Avago Technologies | ||
14 | bosch Bosch Sensortec GmbH | 17 | bosch Bosch Sensortec GmbH |
15 | brcm Broadcom Corporation | 18 | brcm Broadcom Corporation |
19 | capella Capella Microsystems, Inc | ||
16 | cavium Cavium, Inc. | 20 | cavium Cavium, Inc. |
21 | cdns Cadence Design Systems Inc. | ||
17 | chrp Common Hardware Reference Platform | 22 | chrp Common Hardware Reference Platform |
23 | chunghwa Chunghwa Picture Tubes Ltd. | ||
18 | cirrus Cirrus Logic, Inc. | 24 | cirrus Cirrus Logic, Inc. |
19 | cortina Cortina Systems, Inc. | 25 | cortina Cortina Systems, Inc. |
20 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) | 26 | dallas Maxim Integrated Products (formerly Dallas Semiconductor) |
@@ -36,12 +42,15 @@ linux Linux-specific binding | |||
36 | lsi LSI Corp. (LSI Logic) | 42 | lsi LSI Corp. (LSI Logic) |
37 | marvell Marvell Technology Group Ltd. | 43 | marvell Marvell Technology Group Ltd. |
38 | maxim Maxim Integrated Products | 44 | maxim Maxim Integrated Products |
45 | microchip Microchip Technology Inc. | ||
39 | mosaixtech Mosaix Technologies, Inc. | 46 | mosaixtech Mosaix Technologies, Inc. |
40 | national National Semiconductor | 47 | national National Semiconductor |
41 | nintendo Nintendo | 48 | nintendo Nintendo |
42 | nvidia NVIDIA | 49 | nvidia NVIDIA |
43 | nxp NXP Semiconductors | 50 | nxp NXP Semiconductors |
44 | onnn ON Semiconductor Corp. | 51 | onnn ON Semiconductor Corp. |
52 | panasonic Panasonic Corporation | ||
53 | phytec PHYTEC Messtechnik GmbH | ||
45 | picochip Picochip Ltd | 54 | picochip Picochip Ltd |
46 | powervr PowerVR (deprecated, use img) | 55 | powervr PowerVR (deprecated, use img) |
47 | qca Qualcomm Atheros, Inc. | 56 | qca Qualcomm Atheros, Inc. |
@@ -61,12 +70,12 @@ snps Synopsys, Inc. | |||
61 | st STMicroelectronics | 70 | st STMicroelectronics |
62 | ste ST-Ericsson | 71 | ste ST-Ericsson |
63 | stericsson ST-Ericsson | 72 | stericsson ST-Ericsson |
64 | toumaz Toumaz | ||
65 | ti Texas Instruments | 73 | ti Texas Instruments |
66 | toshiba Toshiba Corporation | 74 | toshiba Toshiba Corporation |
75 | toumaz Toumaz | ||
67 | v3 V3 Semiconductor | 76 | v3 V3 Semiconductor |
68 | via VIA Technologies, Inc. | 77 | via VIA Technologies, Inc. |
78 | winbond Winbond Electronics corp. | ||
69 | wlf Wolfson Microelectronics | 79 | wlf Wolfson Microelectronics |
70 | wm Wondermedia Technologies, Inc. | 80 | wm Wondermedia Technologies, Inc. |
71 | winbond Winbond Electronics corp. | ||
72 | xlnx Xilinx | 81 | xlnx Xilinx |
diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt b/Documentation/devicetree/bindings/video/exynos_dp.txt index 84f10c16cb38..3289d76a21d0 100644 --- a/Documentation/devicetree/bindings/video/exynos_dp.txt +++ b/Documentation/devicetree/bindings/video/exynos_dp.txt | |||
@@ -6,10 +6,10 @@ We use two nodes: | |||
6 | -dptx-phy node(defined inside dp-controller node) | 6 | -dptx-phy node(defined inside dp-controller node) |
7 | 7 | ||
8 | For the DP-PHY initialization, we use the dptx-phy node. | 8 | For the DP-PHY initialization, we use the dptx-phy node. |
9 | Required properties for dptx-phy: | 9 | Required properties for dptx-phy: deprecated, use phys and phy-names |
10 | -reg: | 10 | -reg: deprecated |
11 | Base address of DP PHY register. | 11 | Base address of DP PHY register. |
12 | -samsung,enable-mask: | 12 | -samsung,enable-mask: deprecated |
13 | The bit-mask used to enable/disable DP PHY. | 13 | The bit-mask used to enable/disable DP PHY. |
14 | 14 | ||
15 | For the Panel initialization, we read data from dp-controller node. | 15 | For the Panel initialization, we read data from dp-controller node. |
@@ -27,6 +27,10 @@ Required properties for dp-controller: | |||
27 | from common clock binding: Shall be "dp". | 27 | from common clock binding: Shall be "dp". |
28 | -interrupt-parent: | 28 | -interrupt-parent: |
29 | phandle to Interrupt combiner node. | 29 | phandle to Interrupt combiner node. |
30 | -phys: | ||
31 | from general PHY binding: the phandle for the PHY device. | ||
32 | -phy-names: | ||
33 | from general PHY binding: Should be "dp". | ||
30 | -samsung,color-space: | 34 | -samsung,color-space: |
31 | input video data format. | 35 | input video data format. |
32 | COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2 | 36 | COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2 |
@@ -68,11 +72,8 @@ SOC specific portion: | |||
68 | clocks = <&clock 342>; | 72 | clocks = <&clock 342>; |
69 | clock-names = "dp"; | 73 | clock-names = "dp"; |
70 | 74 | ||
71 | dptx-phy { | 75 | phys = <&dp_phy>; |
72 | reg = <0x10040720>; | 76 | phy-names = "dp"; |
73 | samsung,enable-mask = <1>; | ||
74 | }; | ||
75 | |||
76 | }; | 77 | }; |
77 | 78 | ||
78 | Board Specific portion: | 79 | Board Specific portion: |
diff --git a/Documentation/devicetree/bindings/video/exynos_hdmi.txt b/Documentation/devicetree/bindings/video/exynos_hdmi.txt index 323983be3c30..50decf8e1b90 100644 --- a/Documentation/devicetree/bindings/video/exynos_hdmi.txt +++ b/Documentation/devicetree/bindings/video/exynos_hdmi.txt | |||
@@ -12,7 +12,19 @@ Required properties: | |||
12 | a) phandle of the gpio controller node. | 12 | a) phandle of the gpio controller node. |
13 | b) pin number within the gpio controller. | 13 | b) pin number within the gpio controller. |
14 | c) optional flags and pull up/down. | 14 | c) optional flags and pull up/down. |
15 | 15 | - clocks: list of clock IDs from SoC clock driver. | |
16 | a) hdmi: Gate of HDMI IP bus clock. | ||
17 | b) sclk_hdmi: Gate of HDMI special clock. | ||
18 | c) sclk_pixel: Pixel special clock, one of the two possible inputs of | ||
19 | HDMI clock mux. | ||
20 | d) sclk_hdmiphy: HDMI PHY clock output, one of two possible inputs of | ||
21 | HDMI clock mux. | ||
22 | e) mout_hdmi: It is required by the driver to switch between the 2 | ||
23 | parents i.e. sclk_pixel and sclk_hdmiphy. If hdmiphy is stable | ||
24 | after configuration, parent is set to sclk_hdmiphy else | ||
25 | sclk_pixel. | ||
26 | - clock-names: aliases as per driver requirements for above clock IDs: | ||
27 | "hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy" and "mout_hdmi". | ||
16 | Example: | 28 | Example: |
17 | 29 | ||
18 | hdmi { | 30 | hdmi { |
diff --git a/Documentation/devicetree/bindings/video/exynos_mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt index 3334b0a8e343..7bfde9c9d658 100644 --- a/Documentation/devicetree/bindings/video/exynos_mixer.txt +++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt | |||
@@ -10,6 +10,10 @@ Required properties: | |||
10 | - reg: physical base address of the mixer and length of memory mapped | 10 | - reg: physical base address of the mixer and length of memory mapped |
11 | region. | 11 | region. |
12 | - interrupts: interrupt number to the cpu. | 12 | - interrupts: interrupt number to the cpu. |
13 | - clocks: list of clock IDs from SoC clock driver. | ||
14 | a) mixer: Gate of Mixer IP bus clock. | ||
15 | b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of | ||
16 | mixer mux. | ||
13 | 17 | ||
14 | Example: | 18 | Example: |
15 | 19 | ||
diff --git a/Documentation/devicetree/bindings/video/simple-framebuffer.txt b/Documentation/devicetree/bindings/video/simple-framebuffer.txt index 3ea460583111..70c26f3a5b9a 100644 --- a/Documentation/devicetree/bindings/video/simple-framebuffer.txt +++ b/Documentation/devicetree/bindings/video/simple-framebuffer.txt | |||
@@ -12,6 +12,7 @@ Required properties: | |||
12 | - stride: The number of bytes in each line of the framebuffer. | 12 | - stride: The number of bytes in each line of the framebuffer. |
13 | - format: The format of the framebuffer surface. Valid values are: | 13 | - format: The format of the framebuffer surface. Valid values are: |
14 | - r5g6b5 (16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b). | 14 | - r5g6b5 (16-bit pixels, d[15:11]=r, d[10:5]=g, d[4:0]=b). |
15 | - a8b8g8r8 (32-bit pixels, d[31:24]=a, d[23:16]=b, d[15:8]=g, d[7:0]=r). | ||
15 | 16 | ||
16 | Example: | 17 | Example: |
17 | 18 | ||
diff --git a/Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt index ecd650adff31..e39cb266c8f4 100644 --- a/Documentation/devicetree/bindings/watchdog/sun4i-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt | |||
@@ -1,8 +1,9 @@ | |||
1 | Allwinner sun4i Watchdog timer | 1 | Allwinner SoCs Watchdog timer |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible : should be "allwinner,sun4i-wdt" | 5 | - compatible : should be "allwinner,<soc-family>-wdt", the currently supported |
6 | SoC families being sun4i and sun6i | ||
6 | - reg : Specifies base physical address and size of the registers. | 7 | - reg : Specifies base physical address and size of the registers. |
7 | 8 | ||
8 | Example: | 9 | Example: |
diff --git a/Documentation/dma-buf-sharing.txt b/Documentation/dma-buf-sharing.txt index 0b23261561d2..505e71172ae7 100644 --- a/Documentation/dma-buf-sharing.txt +++ b/Documentation/dma-buf-sharing.txt | |||
@@ -321,7 +321,7 @@ Access to a dma_buf from the kernel context involves three steps: | |||
321 | 321 | ||
322 | When the importer is done accessing the range specified in begin_cpu_access, | 322 | When the importer is done accessing the range specified in begin_cpu_access, |
323 | it needs to announce this to the exporter (to facilitate cache flushing and | 323 | it needs to announce this to the exporter (to facilitate cache flushing and |
324 | unpinning of any pinned resources). The result of of any dma_buf kmap calls | 324 | unpinning of any pinned resources). The result of any dma_buf kmap calls |
325 | after end_cpu_access is undefined. | 325 | after end_cpu_access is undefined. |
326 | 326 | ||
327 | Interface: | 327 | Interface: |
@@ -407,6 +407,18 @@ Being able to mmap an export dma-buf buffer object has 2 main use-cases: | |||
407 | interesting ways depending upong the exporter (if userspace starts depending | 407 | interesting ways depending upong the exporter (if userspace starts depending |
408 | upon this implicit synchronization). | 408 | upon this implicit synchronization). |
409 | 409 | ||
410 | Other Interfaces Exposed to Userspace on the dma-buf FD | ||
411 | ------------------------------------------------------ | ||
412 | |||
413 | - Since kernel 3.12 the dma-buf FD supports the llseek system call, but only | ||
414 | with offset=0 and whence=SEEK_END|SEEK_SET. SEEK_SET is supported to allow | ||
415 | the usual size discover pattern size = SEEK_END(0); SEEK_SET(0). Every other | ||
416 | llseek operation will report -EINVAL. | ||
417 | |||
418 | If llseek on dma-buf FDs isn't support the kernel will report -ESPIPE for all | ||
419 | cases. Userspace can use this to detect support for discovering the dma-buf | ||
420 | size using llseek. | ||
421 | |||
410 | Miscellaneous notes | 422 | Miscellaneous notes |
411 | ------------------- | 423 | ------------------- |
412 | 424 | ||
diff --git a/Documentation/dmatest.txt b/Documentation/dmatest.txt index 132a094c7bc3..a2b5663eae26 100644 --- a/Documentation/dmatest.txt +++ b/Documentation/dmatest.txt | |||
@@ -16,15 +16,16 @@ be built as module or inside kernel. Let's consider those cases. | |||
16 | Part 2 - When dmatest is built as a module... | 16 | Part 2 - When dmatest is built as a module... |
17 | 17 | ||
18 | After mounting debugfs and loading the module, the /sys/kernel/debug/dmatest | 18 | After mounting debugfs and loading the module, the /sys/kernel/debug/dmatest |
19 | folder with nodes will be created. They are the same as module parameters with | 19 | folder with nodes will be created. There are two important files located. First |
20 | addition of the 'run' node that controls run and stop phases of the test. | 20 | is the 'run' node that controls run and stop phases of the test, and the second |
21 | one, 'results', is used to get the test case results. | ||
21 | 22 | ||
22 | Note that in this case test will not run on load automatically. | 23 | Note that in this case test will not run on load automatically. |
23 | 24 | ||
24 | Example of usage: | 25 | Example of usage: |
25 | % echo dma0chan0 > /sys/kernel/debug/dmatest/channel | 26 | % echo dma0chan0 > /sys/module/dmatest/parameters/channel |
26 | % echo 2000 > /sys/kernel/debug/dmatest/timeout | 27 | % echo 2000 > /sys/module/dmatest/parameters/timeout |
27 | % echo 1 > /sys/kernel/debug/dmatest/iterations | 28 | % echo 1 > /sys/module/dmatest/parameters/iterations |
28 | % echo 1 > /sys/kernel/debug/dmatest/run | 29 | % echo 1 > /sys/kernel/debug/dmatest/run |
29 | 30 | ||
30 | Hint: available channel list could be extracted by running the following | 31 | Hint: available channel list could be extracted by running the following |
@@ -55,8 +56,8 @@ for the first performed test. After user gets a control, the test could be | |||
55 | re-run with the same or different parameters. For the details see the above | 56 | re-run with the same or different parameters. For the details see the above |
56 | section "Part 2 - When dmatest is built as a module..." | 57 | section "Part 2 - When dmatest is built as a module..." |
57 | 58 | ||
58 | In both cases the module parameters are used as initial values for the test case. | 59 | In both cases the module parameters are used as the actual values for the test |
59 | You always could check them at run-time by running | 60 | case. You always could check them at run-time by running |
60 | % grep -H . /sys/module/dmatest/parameters/* | 61 | % grep -H . /sys/module/dmatest/parameters/* |
61 | 62 | ||
62 | Part 4 - Gathering the test results | 63 | Part 4 - Gathering the test results |
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt index b4671459857f..5bdc8cb5fc28 100644 --- a/Documentation/driver-model/devres.txt +++ b/Documentation/driver-model/devres.txt | |||
@@ -237,6 +237,12 @@ MEM | |||
237 | devm_kzalloc() | 237 | devm_kzalloc() |
238 | devm_kfree() | 238 | devm_kfree() |
239 | 239 | ||
240 | IIO | ||
241 | devm_iio_device_alloc() | ||
242 | devm_iio_device_free() | ||
243 | devm_iio_trigger_alloc() | ||
244 | devm_iio_trigger_free() | ||
245 | |||
240 | IO region | 246 | IO region |
241 | devm_request_region() | 247 | devm_request_region() |
242 | devm_request_mem_region() | 248 | devm_request_mem_region() |
@@ -277,6 +283,7 @@ REGULATOR | |||
277 | devm_regulator_get() | 283 | devm_regulator_get() |
278 | devm_regulator_put() | 284 | devm_regulator_put() |
279 | devm_regulator_bulk_get() | 285 | devm_regulator_bulk_get() |
286 | devm_regulator_register() | ||
280 | 287 | ||
281 | CLOCK | 288 | CLOCK |
282 | devm_clk_get() | 289 | devm_clk_get() |
@@ -293,3 +300,9 @@ PWM | |||
293 | PHY | 300 | PHY |
294 | devm_usb_get_phy() | 301 | devm_usb_get_phy() |
295 | devm_usb_put_phy() | 302 | devm_usb_put_phy() |
303 | |||
304 | SLAVE DMA ENGINE | ||
305 | devm_acpi_dma_controller_register() | ||
306 | |||
307 | SPI | ||
308 | devm_spi_register_master() | ||
diff --git a/Documentation/early-userspace/README b/Documentation/early-userspace/README index 661a73fad399..93e63a9af30b 100644 --- a/Documentation/early-userspace/README +++ b/Documentation/early-userspace/README | |||
@@ -83,8 +83,7 @@ Where's this all leading? | |||
83 | 83 | ||
84 | The klibc distribution contains some of the necessary software to make | 84 | The klibc distribution contains some of the necessary software to make |
85 | early userspace useful. The klibc distribution is currently | 85 | early userspace useful. The klibc distribution is currently |
86 | maintained separately from the kernel, but this may change early in | 86 | maintained separately from the kernel. |
87 | the 2.7 era (it missed the boat for 2.5). | ||
88 | 87 | ||
89 | You can obtain somewhat infrequent snapshots of klibc from | 88 | You can obtain somewhat infrequent snapshots of klibc from |
90 | ftp://ftp.kernel.org/pub/linux/libs/klibc/ | 89 | ftp://ftp.kernel.org/pub/linux/libs/klibc/ |
diff --git a/Documentation/x86/efi-stub.txt b/Documentation/efi-stub.txt index 44e6bb6ead10..44e6bb6ead10 100644 --- a/Documentation/x86/efi-stub.txt +++ b/Documentation/efi-stub.txt | |||
diff --git a/Documentation/extcon/porting-android-switch-class b/Documentation/extcon/porting-android-switch-class index eb0fa5f4fe88..5377f6317961 100644 --- a/Documentation/extcon/porting-android-switch-class +++ b/Documentation/extcon/porting-android-switch-class | |||
@@ -25,8 +25,10 @@ MyungJoo Ham <myungjoo.ham@samsung.com> | |||
25 | @print_state: no change but type change (switch_dev->extcon_dev) | 25 | @print_state: no change but type change (switch_dev->extcon_dev) |
26 | 26 | ||
27 | - switch_dev_register(sdev, dev) | 27 | - switch_dev_register(sdev, dev) |
28 | => extcon_dev_register(edev, dev) | 28 | => extcon_dev_register(edev) |
29 | : no change but type change (sdev->edev) | 29 | : type change (sdev->edev) |
30 | : remove second param('dev'). if edev has parent device, should store | ||
31 | 'dev' to 'edev.dev.parent' before registering extcon device | ||
30 | - switch_dev_unregister(sdev) | 32 | - switch_dev_unregister(sdev) |
31 | => extcon_dev_unregister(edev) | 33 | => extcon_dev_unregister(edev) |
32 | : no change but type change (sdev->edev) | 34 | : no change but type change (sdev->edev) |
diff --git a/Documentation/fb/fbcon.txt b/Documentation/fb/fbcon.txt index 99ea58e65eff..4a9739abc860 100644 --- a/Documentation/fb/fbcon.txt +++ b/Documentation/fb/fbcon.txt | |||
@@ -150,7 +150,7 @@ C. Boot options | |||
150 | 150 | ||
151 | C. Attaching, Detaching and Unloading | 151 | C. Attaching, Detaching and Unloading |
152 | 152 | ||
153 | Before going on on how to attach, detach and unload the framebuffer console, an | 153 | Before going on how to attach, detach and unload the framebuffer console, an |
154 | illustration of the dependencies may help. | 154 | illustration of the dependencies may help. |
155 | 155 | ||
156 | The console layer, as with most subsystems, needs a driver that interfaces with | 156 | The console layer, as with most subsystems, needs a driver that interfaces with |
diff --git a/Documentation/fb/viafb.modes b/Documentation/fb/viafb.modes index 02e5b487f00e..2a547da2e5cc 100644 --- a/Documentation/fb/viafb.modes +++ b/Documentation/fb/viafb.modes | |||
@@ -571,7 +571,7 @@ mode "640x480-60" | |||
571 | # 160 chars 800 lines | 571 | # 160 chars 800 lines |
572 | # Blank Time 4.798 us 0.564 ms | 572 | # Blank Time 4.798 us 0.564 ms |
573 | # 50 chars 28 lines | 573 | # 50 chars 28 lines |
574 | # Polarity negtive positive | 574 | # Polarity negative positive |
575 | # | 575 | # |
576 | mode "1280x800-60" | 576 | mode "1280x800-60" |
577 | # D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz | 577 | # D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz |
diff --git a/Documentation/fb/viafb.txt b/Documentation/fb/viafb.txt index 444e34b52ae1..1cb2462a71ce 100644 --- a/Documentation/fb/viafb.txt +++ b/Documentation/fb/viafb.txt | |||
@@ -32,7 +32,7 @@ | |||
32 | Start viafb with default settings: | 32 | Start viafb with default settings: |
33 | #modprobe viafb | 33 | #modprobe viafb |
34 | 34 | ||
35 | Start viafb with with user options: | 35 | Start viafb with user options: |
36 | #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60 | 36 | #modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60 |
37 | viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1 | 37 | viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1 |
38 | viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60 | 38 | viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60 |
diff --git a/Documentation/filesystems/btrfs.txt b/Documentation/filesystems/btrfs.txt index b349d57b76ea..9dae59407437 100644 --- a/Documentation/filesystems/btrfs.txt +++ b/Documentation/filesystems/btrfs.txt | |||
@@ -87,7 +87,7 @@ Unless otherwise specified, all options default to off. | |||
87 | 87 | ||
88 | device=<devicepath> | 88 | device=<devicepath> |
89 | Specify a device during mount so that ioctls on the control device | 89 | Specify a device during mount so that ioctls on the control device |
90 | can be avoided. Especialy useful when trying to mount a multi-device | 90 | can be avoided. Especially useful when trying to mount a multi-device |
91 | setup as root. May be specified multiple times for multiple devices. | 91 | setup as root. May be specified multiple times for multiple devices. |
92 | 92 | ||
93 | discard | 93 | discard |
diff --git a/Documentation/filesystems/caching/backend-api.txt b/Documentation/filesystems/caching/backend-api.txt index d78bab9622c6..277d1e810670 100644 --- a/Documentation/filesystems/caching/backend-api.txt +++ b/Documentation/filesystems/caching/backend-api.txt | |||
@@ -299,6 +299,15 @@ performed on the denizens of the cache. These are held in a structure of type: | |||
299 | enough space in the cache to permit this. | 299 | enough space in the cache to permit this. |
300 | 300 | ||
301 | 301 | ||
302 | (*) Check coherency state of an object [mandatory]: | ||
303 | |||
304 | int (*check_consistency)(struct fscache_object *object) | ||
305 | |||
306 | This method is called to have the cache check the saved auxiliary data of | ||
307 | the object against the netfs's idea of the state. 0 should be returned | ||
308 | if they're consistent and -ESTALE otherwise. -ENOMEM and -ERESTARTSYS | ||
309 | may also be returned. | ||
310 | |||
302 | (*) Update object [mandatory]: | 311 | (*) Update object [mandatory]: |
303 | 312 | ||
304 | int (*update_object)(struct fscache_object *object) | 313 | int (*update_object)(struct fscache_object *object) |
diff --git a/Documentation/filesystems/caching/netfs-api.txt b/Documentation/filesystems/caching/netfs-api.txt index 97e6c0ecc5ef..aed6b94160b1 100644 --- a/Documentation/filesystems/caching/netfs-api.txt +++ b/Documentation/filesystems/caching/netfs-api.txt | |||
@@ -29,15 +29,16 @@ This document contains the following sections: | |||
29 | (6) Index registration | 29 | (6) Index registration |
30 | (7) Data file registration | 30 | (7) Data file registration |
31 | (8) Miscellaneous object registration | 31 | (8) Miscellaneous object registration |
32 | (9) Setting the data file size | 32 | (9) Setting the data file size |
33 | (10) Page alloc/read/write | 33 | (10) Page alloc/read/write |
34 | (11) Page uncaching | 34 | (11) Page uncaching |
35 | (12) Index and data file update | 35 | (12) Index and data file consistency |
36 | (13) Miscellaneous cookie operations | 36 | (13) Cookie enablement |
37 | (14) Cookie unregistration | 37 | (14) Miscellaneous cookie operations |
38 | (15) Index invalidation | 38 | (15) Cookie unregistration |
39 | (16) Data file invalidation | 39 | (16) Index invalidation |
40 | (17) FS-Cache specific page flags. | 40 | (17) Data file invalidation |
41 | (18) FS-Cache specific page flags. | ||
41 | 42 | ||
42 | 43 | ||
43 | ============================= | 44 | ============================= |
@@ -334,7 +335,8 @@ the path to the file: | |||
334 | struct fscache_cookie * | 335 | struct fscache_cookie * |
335 | fscache_acquire_cookie(struct fscache_cookie *parent, | 336 | fscache_acquire_cookie(struct fscache_cookie *parent, |
336 | const struct fscache_object_def *def, | 337 | const struct fscache_object_def *def, |
337 | void *netfs_data); | 338 | void *netfs_data, |
339 | bool enable); | ||
338 | 340 | ||
339 | This function creates an index entry in the index represented by parent, | 341 | This function creates an index entry in the index represented by parent, |
340 | filling in the index entry by calling the operations pointed to by def. | 342 | filling in the index entry by calling the operations pointed to by def. |
@@ -350,6 +352,10 @@ object needs to be created somewhere down the hierarchy. Furthermore, an index | |||
350 | may be created in several different caches independently at different times. | 352 | may be created in several different caches independently at different times. |
351 | This is all handled transparently, and the netfs doesn't see any of it. | 353 | This is all handled transparently, and the netfs doesn't see any of it. |
352 | 354 | ||
355 | A cookie will be created in the disabled state if enabled is false. A cookie | ||
356 | must be enabled to do anything with it. A disabled cookie can be enabled by | ||
357 | calling fscache_enable_cookie() (see below). | ||
358 | |||
353 | For example, with AFS, a cell would be added to the primary index. This index | 359 | For example, with AFS, a cell would be added to the primary index. This index |
354 | entry would have a dependent inode containing a volume location index for the | 360 | entry would have a dependent inode containing a volume location index for the |
355 | volume mappings within this cell: | 361 | volume mappings within this cell: |
@@ -357,7 +363,7 @@ volume mappings within this cell: | |||
357 | cell->cache = | 363 | cell->cache = |
358 | fscache_acquire_cookie(afs_cache_netfs.primary_index, | 364 | fscache_acquire_cookie(afs_cache_netfs.primary_index, |
359 | &afs_cell_cache_index_def, | 365 | &afs_cell_cache_index_def, |
360 | cell); | 366 | cell, true); |
361 | 367 | ||
362 | Then when a volume location was accessed, it would be entered into the cell's | 368 | Then when a volume location was accessed, it would be entered into the cell's |
363 | index and an inode would be allocated that acts as a volume type and hash chain | 369 | index and an inode would be allocated that acts as a volume type and hash chain |
@@ -366,7 +372,7 @@ combination: | |||
366 | vlocation->cache = | 372 | vlocation->cache = |
367 | fscache_acquire_cookie(cell->cache, | 373 | fscache_acquire_cookie(cell->cache, |
368 | &afs_vlocation_cache_index_def, | 374 | &afs_vlocation_cache_index_def, |
369 | vlocation); | 375 | vlocation, true); |
370 | 376 | ||
371 | And then a particular flavour of volume (R/O for example) could be added to | 377 | And then a particular flavour of volume (R/O for example) could be added to |
372 | that index, creating another index for vnodes (AFS inode equivalents): | 378 | that index, creating another index for vnodes (AFS inode equivalents): |
@@ -374,7 +380,7 @@ that index, creating another index for vnodes (AFS inode equivalents): | |||
374 | volume->cache = | 380 | volume->cache = |
375 | fscache_acquire_cookie(vlocation->cache, | 381 | fscache_acquire_cookie(vlocation->cache, |
376 | &afs_volume_cache_index_def, | 382 | &afs_volume_cache_index_def, |
377 | volume); | 383 | volume, true); |
378 | 384 | ||
379 | 385 | ||
380 | ====================== | 386 | ====================== |
@@ -388,7 +394,7 @@ the object definition should be something other than index type. | |||
388 | vnode->cache = | 394 | vnode->cache = |
389 | fscache_acquire_cookie(volume->cache, | 395 | fscache_acquire_cookie(volume->cache, |
390 | &afs_vnode_cache_object_def, | 396 | &afs_vnode_cache_object_def, |
391 | vnode); | 397 | vnode, true); |
392 | 398 | ||
393 | 399 | ||
394 | ================================= | 400 | ================================= |
@@ -404,7 +410,7 @@ it would be some other type of object such as a data file. | |||
404 | xattr->cache = | 410 | xattr->cache = |
405 | fscache_acquire_cookie(vnode->cache, | 411 | fscache_acquire_cookie(vnode->cache, |
406 | &afs_xattr_cache_object_def, | 412 | &afs_xattr_cache_object_def, |
407 | xattr); | 413 | xattr, true); |
408 | 414 | ||
409 | Miscellaneous objects might be used to store extended attributes or directory | 415 | Miscellaneous objects might be used to store extended attributes or directory |
410 | entries for example. | 416 | entries for example. |
@@ -433,7 +439,7 @@ to the caller. The attribute adjustment excludes read and write operations. | |||
433 | 439 | ||
434 | 440 | ||
435 | ===================== | 441 | ===================== |
436 | PAGE READ/ALLOC/WRITE | 442 | PAGE ALLOC/READ/WRITE |
437 | ===================== | 443 | ===================== |
438 | 444 | ||
439 | And the sixth step is to store and retrieve pages in the cache. There are | 445 | And the sixth step is to store and retrieve pages in the cache. There are |
@@ -499,7 +505,7 @@ Else if there's a copy of the page resident in the cache: | |||
499 | (*) An argument that's 0 on success or negative for an error code. | 505 | (*) An argument that's 0 on success or negative for an error code. |
500 | 506 | ||
501 | If an error occurs, it should be assumed that the page contains no usable | 507 | If an error occurs, it should be assumed that the page contains no usable |
502 | data. | 508 | data. fscache_readpages_cancel() may need to be called. |
503 | 509 | ||
504 | end_io_func() will be called in process context if the read is results in | 510 | end_io_func() will be called in process context if the read is results in |
505 | an error, but it might be called in interrupt context if the read is | 511 | an error, but it might be called in interrupt context if the read is |
@@ -623,6 +629,22 @@ some of the pages being read and some being allocated. Those pages will have | |||
623 | been marked appropriately and will need uncaching. | 629 | been marked appropriately and will need uncaching. |
624 | 630 | ||
625 | 631 | ||
632 | CANCELLATION OF UNREAD PAGES | ||
633 | ---------------------------- | ||
634 | |||
635 | If one or more pages are passed to fscache_read_or_alloc_pages() but not then | ||
636 | read from the cache and also not read from the underlying filesystem then | ||
637 | those pages will need to have any marks and reservations removed. This can be | ||
638 | done by calling: | ||
639 | |||
640 | void fscache_readpages_cancel(struct fscache_cookie *cookie, | ||
641 | struct list_head *pages); | ||
642 | |||
643 | prior to returning to the caller. The cookie argument should be as passed to | ||
644 | fscache_read_or_alloc_pages(). Every page in the pages list will be examined | ||
645 | and any that have PG_fscache set will be uncached. | ||
646 | |||
647 | |||
626 | ============== | 648 | ============== |
627 | PAGE UNCACHING | 649 | PAGE UNCACHING |
628 | ============== | 650 | ============== |
@@ -690,9 +712,18 @@ written to the cache and for the cache to finish with the page generally. No | |||
690 | error is returned. | 712 | error is returned. |
691 | 713 | ||
692 | 714 | ||
693 | ========================== | 715 | =============================== |
694 | INDEX AND DATA FILE UPDATE | 716 | INDEX AND DATA FILE CONSISTENCY |
695 | ========================== | 717 | =============================== |
718 | |||
719 | To find out whether auxiliary data for an object is up to data within the | ||
720 | cache, the following function can be called: | ||
721 | |||
722 | int fscache_check_consistency(struct fscache_cookie *cookie) | ||
723 | |||
724 | This will call back to the netfs to check whether the auxiliary data associated | ||
725 | with a cookie is correct. It returns 0 if it is and -ESTALE if it isn't; it | ||
726 | may also return -ENOMEM and -ERESTARTSYS. | ||
696 | 727 | ||
697 | To request an update of the index data for an index or other object, the | 728 | To request an update of the index data for an index or other object, the |
698 | following function should be called: | 729 | following function should be called: |
@@ -708,6 +739,47 @@ Note that partial updates may happen automatically at other times, such as when | |||
708 | data blocks are added to a data file object. | 739 | data blocks are added to a data file object. |
709 | 740 | ||
710 | 741 | ||
742 | ================= | ||
743 | COOKIE ENABLEMENT | ||
744 | ================= | ||
745 | |||
746 | Cookies exist in one of two states: enabled and disabled. If a cookie is | ||
747 | disabled, it ignores all attempts to acquire child cookies; check, update or | ||
748 | invalidate its state; allocate, read or write backing pages - though it is | ||
749 | still possible to uncache pages and relinquish the cookie. | ||
750 | |||
751 | The initial enablement state is set by fscache_acquire_cookie(), but the cookie | ||
752 | can be enabled or disabled later. To disable a cookie, call: | ||
753 | |||
754 | void fscache_disable_cookie(struct fscache_cookie *cookie, | ||
755 | bool invalidate); | ||
756 | |||
757 | If the cookie is not already disabled, this locks the cookie against other | ||
758 | enable and disable ops, marks the cookie as being disabled, discards or | ||
759 | invalidates any backing objects and waits for cessation of activity on any | ||
760 | associated object before unlocking the cookie. | ||
761 | |||
762 | All possible failures are handled internally. The caller should consider | ||
763 | calling fscache_uncache_all_inode_pages() afterwards to make sure all page | ||
764 | markings are cleared up. | ||
765 | |||
766 | Cookies can be enabled or reenabled with: | ||
767 | |||
768 | void fscache_enable_cookie(struct fscache_cookie *cookie, | ||
769 | bool (*can_enable)(void *data), | ||
770 | void *data) | ||
771 | |||
772 | If the cookie is not already enabled, this locks the cookie against other | ||
773 | enable and disable ops, invokes can_enable() and, if the cookie is not an index | ||
774 | cookie, will begin the procedure of acquiring backing objects. | ||
775 | |||
776 | The optional can_enable() function is passed the data argument and returns a | ||
777 | ruling as to whether or not enablement should actually be permitted to begin. | ||
778 | |||
779 | All possible failures are handled internally. The cookie will only be marked | ||
780 | as enabled if provisional backing objects are allocated. | ||
781 | |||
782 | |||
711 | =============================== | 783 | =============================== |
712 | MISCELLANEOUS COOKIE OPERATIONS | 784 | MISCELLANEOUS COOKIE OPERATIONS |
713 | =============================== | 785 | =============================== |
@@ -753,7 +825,7 @@ COOKIE UNREGISTRATION | |||
753 | To get rid of a cookie, this function should be called. | 825 | To get rid of a cookie, this function should be called. |
754 | 826 | ||
755 | void fscache_relinquish_cookie(struct fscache_cookie *cookie, | 827 | void fscache_relinquish_cookie(struct fscache_cookie *cookie, |
756 | int retire); | 828 | bool retire); |
757 | 829 | ||
758 | If retire is non-zero, then the object will be marked for recycling, and all | 830 | If retire is non-zero, then the object will be marked for recycling, and all |
759 | copies of it will be removed from all active caches in which it is present. | 831 | copies of it will be removed from all active caches in which it is present. |
diff --git a/Documentation/filesystems/cifs.txt b/Documentation/filesystems/cifs.txt deleted file mode 100644 index 49cc923a93e3..000000000000 --- a/Documentation/filesystems/cifs.txt +++ /dev/null | |||
@@ -1,51 +0,0 @@ | |||
1 | This is the client VFS module for the Common Internet File System | ||
2 | (CIFS) protocol which is the successor to the Server Message Block | ||
3 | (SMB) protocol, the native file sharing mechanism for most early | ||
4 | PC operating systems. CIFS is fully supported by current network | ||
5 | file servers such as Windows 2000, Windows 2003 (including | ||
6 | Windows XP) as well by Samba (which provides excellent CIFS | ||
7 | server support for Linux and many other operating systems), so | ||
8 | this network filesystem client can mount to a wide variety of | ||
9 | servers. The smbfs module should be used instead of this cifs module | ||
10 | for mounting to older SMB servers such as OS/2. The smbfs and cifs | ||
11 | modules can coexist and do not conflict. The CIFS VFS filesystem | ||
12 | module is designed to work well with servers that implement the | ||
13 | newer versions (dialects) of the SMB/CIFS protocol such as Samba, | ||
14 | the program written by Andrew Tridgell that turns any Unix host | ||
15 | into a SMB/CIFS file server. | ||
16 | |||
17 | The intent of this module is to provide the most advanced network | ||
18 | file system function for CIFS compliant servers, including better | ||
19 | POSIX compliance, secure per-user session establishment, high | ||
20 | performance safe distributed caching (oplock), optional packet | ||
21 | signing, large files, Unicode support and other internationalization | ||
22 | improvements. Since both Samba server and this filesystem client support | ||
23 | the CIFS Unix extensions, the combination can provide a reasonable | ||
24 | alternative to NFSv4 for fileserving in some Linux to Linux environments, | ||
25 | not just in Linux to Windows environments. | ||
26 | |||
27 | This filesystem has an optional mount utility (mount.cifs) that can | ||
28 | be obtained from the project page and installed in the path in the same | ||
29 | directory with the other mount helpers (such as mount.smbfs). | ||
30 | Mounting using the cifs filesystem without installing the mount helper | ||
31 | requires specifying the server's ip address. | ||
32 | |||
33 | For Linux 2.4: | ||
34 | mount //anything/here /mnt_target -o | ||
35 | user=username,pass=password,unc=//ip_address_of_server/sharename | ||
36 | |||
37 | For Linux 2.5: | ||
38 | mount //ip_address_of_server/sharename /mnt_target -o user=username, pass=password | ||
39 | |||
40 | |||
41 | For more information on the module see the project page at | ||
42 | |||
43 | http://us1.samba.org/samba/Linux_CIFS_client.html | ||
44 | |||
45 | For more information on CIFS see: | ||
46 | |||
47 | http://www.snia.org/tech_activities/CIFS | ||
48 | |||
49 | or the Samba site: | ||
50 | |||
51 | http://www.samba.org | ||
diff --git a/Documentation/filesystems/cifs/AUTHORS b/Documentation/filesystems/cifs/AUTHORS new file mode 100644 index 000000000000..ca4a67a0bb1e --- /dev/null +++ b/Documentation/filesystems/cifs/AUTHORS | |||
@@ -0,0 +1,56 @@ | |||
1 | Original Author | ||
2 | =============== | ||
3 | Steve French (sfrench@samba.org) | ||
4 | |||
5 | The author wishes to express his appreciation and thanks to: | ||
6 | Andrew Tridgell (Samba team) for his early suggestions about smb/cifs VFS | ||
7 | improvements. Thanks to IBM for allowing me time and test resources to pursue | ||
8 | this project, to Jim McDonough from IBM (and the Samba Team) for his help, to | ||
9 | the IBM Linux JFS team for explaining many esoteric Linux filesystem features. | ||
10 | Jeremy Allison of the Samba team has done invaluable work in adding the server | ||
11 | side of the original CIFS Unix extensions and reviewing and implementing | ||
12 | portions of the newer CIFS POSIX extensions into the Samba 3 file server. Thank | ||
13 | Dave Boutcher of IBM Rochester (author of the OS/400 smb/cifs filesystem client) | ||
14 | for proving years ago that very good smb/cifs clients could be done on Unix-like | ||
15 | operating systems. Volker Lendecke, Andrew Tridgell, Urban Widmark, John | ||
16 | Newbigin and others for their work on the Linux smbfs module. Thanks to | ||
17 | the other members of the Storage Network Industry Association CIFS Technical | ||
18 | Workgroup for their work specifying this highly complex protocol and finally | ||
19 | thanks to the Samba team for their technical advice and encouragement. | ||
20 | |||
21 | Patch Contributors | ||
22 | ------------------ | ||
23 | Zwane Mwaikambo | ||
24 | Andi Kleen | ||
25 | Amrut Joshi | ||
26 | Shobhit Dayal | ||
27 | Sergey Vlasov | ||
28 | Richard Hughes | ||
29 | Yury Umanets | ||
30 | Mark Hamzy (for some of the early cifs IPv6 work) | ||
31 | Domen Puncer | ||
32 | Jesper Juhl (in particular for lots of whitespace/formatting cleanup) | ||
33 | Vince Negri and Dave Stahl (for finding an important caching bug) | ||
34 | Adrian Bunk (kcalloc cleanups) | ||
35 | Miklos Szeredi | ||
36 | Kazeon team for various fixes especially for 2.4 version. | ||
37 | Asser Ferno (Change Notify support) | ||
38 | Shaggy (Dave Kleikamp) for innumerable small fs suggestions and some good cleanup | ||
39 | Gunter Kukkukk (testing and suggestions for support of old servers) | ||
40 | Igor Mammedov (DFS support) | ||
41 | Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code) | ||
42 | Scott Lovenberg | ||
43 | |||
44 | Test case and Bug Report contributors | ||
45 | ------------------------------------- | ||
46 | Thanks to those in the community who have submitted detailed bug reports | ||
47 | and debug of problems they have found: Jochen Dolze, David Blaine, | ||
48 | Rene Scharfe, Martin Josefsson, Alexander Wild, Anthony Liguori, | ||
49 | Lars Muller, Urban Widmark, Massimiliano Ferrero, Howard Owen, | ||
50 | Olaf Kirch, Kieron Briggs, Nick Millington and others. Also special | ||
51 | mention to the Stanford Checker (SWAT) which pointed out many minor | ||
52 | bugs in error paths. Valuable suggestions also have come from Al Viro | ||
53 | and Dave Miller. | ||
54 | |||
55 | And thanks to the IBM LTC and Power test teams and SuSE testers for | ||
56 | finding multiple bugs during excellent stress test runs. | ||
diff --git a/Documentation/filesystems/cifs/CHANGES b/Documentation/filesystems/cifs/CHANGES new file mode 100644 index 000000000000..bc0025cdd1c9 --- /dev/null +++ b/Documentation/filesystems/cifs/CHANGES | |||
@@ -0,0 +1,1065 @@ | |||
1 | Version 1.62 | ||
2 | ------------ | ||
3 | Add sockopt=TCP_NODELAY mount option. EA (xattr) routines hardened | ||
4 | to more strictly handle corrupt frames. | ||
5 | |||
6 | Version 1.61 | ||
7 | ------------ | ||
8 | Fix append problem to Samba servers (files opened with O_APPEND could | ||
9 | have duplicated data). Fix oops in cifs_lookup. Workaround problem | ||
10 | mounting to OS/400 Netserve. Fix oops in cifs_get_tcp_session. | ||
11 | Disable use of server inode numbers when server only | ||
12 | partially supports them (e.g. for one server querying inode numbers on | ||
13 | FindFirst fails but QPathInfo queries works). Fix oops with dfs in | ||
14 | cifs_put_smb_ses. Fix mmap to work on directio mounts (needed | ||
15 | for OpenOffice when on forcedirectio mount e.g.) | ||
16 | |||
17 | Version 1.60 | ||
18 | ------------- | ||
19 | Fix memory leak in reconnect. Fix oops in DFS mount error path. | ||
20 | Set s_maxbytes to smaller (the max that vfs can handle) so that | ||
21 | sendfile will now work over cifs mounts again. Add noforcegid | ||
22 | and noforceuid mount parameters. Fix small mem leak when using | ||
23 | ntlmv2. Fix 2nd mount to same server but with different port to | ||
24 | be allowed (rather than reusing the 1st port) - only when the | ||
25 | user explicitly overrides the port on the 2nd mount. | ||
26 | |||
27 | Version 1.59 | ||
28 | ------------ | ||
29 | Client uses server inode numbers (which are persistent) rather than | ||
30 | client generated ones by default (mount option "serverino" turned | ||
31 | on by default if server supports it). Add forceuid and forcegid | ||
32 | mount options (so that when negotiating unix extensions specifying | ||
33 | which uid mounted does not immediately force the server's reported | ||
34 | uids to be overridden). Add support for scope mount parm. Improve | ||
35 | hard link detection to use same inode for both. Do not set | ||
36 | read-only dos attribute on directories (for chmod) since Windows | ||
37 | explorer special cases this attribute bit for directories for | ||
38 | a different purpose. | ||
39 | |||
40 | Version 1.58 | ||
41 | ------------ | ||
42 | Guard against buffer overruns in various UCS-2 to UTF-8 string conversions | ||
43 | when the UTF-8 string is composed of unusually long (more than 4 byte) converted | ||
44 | characters. Add support for mounting root of a share which redirects immediately | ||
45 | to DFS target. Convert string conversion functions from Unicode to more | ||
46 | accurately mark string length before allocating memory (which may help the | ||
47 | rare cases where a UTF-8 string is much larger than the UCS2 string that | ||
48 | we converted from). Fix endianness of the vcnum field used during | ||
49 | session setup to distinguish multiple mounts to same server from different | ||
50 | userids. Raw NTLMSSP fixed (it requires /proc/fs/cifs/experimental | ||
51 | flag to be set to 2, and mount must enable krb5 to turn on extended security). | ||
52 | Performance of file create to Samba improved (posix create on lookup | ||
53 | removes 1 of 2 network requests sent on file create) | ||
54 | |||
55 | Version 1.57 | ||
56 | ------------ | ||
57 | Improve support for multiple security contexts to the same server. We | ||
58 | used to use the same "vcnumber" for all connections which could cause | ||
59 | the server to treat subsequent connections, especially those that | ||
60 | are authenticated as guest, as reconnections, invalidating the earlier | ||
61 | user's smb session. This fix allows cifs to mount multiple times to the | ||
62 | same server with different userids without risking invalidating earlier | ||
63 | established security contexts. fsync now sends SMB Flush operation | ||
64 | to better ensure that we wait for server to write all of the data to | ||
65 | server disk (not just write it over the network). Add new mount | ||
66 | parameter to allow user to disable sending the (slow) SMB flush on | ||
67 | fsync if desired (fsync still flushes all cached write data to the server). | ||
68 | Posix file open support added (turned off after one attempt if server | ||
69 | fails to support it properly, as with Samba server versions prior to 3.3.2) | ||
70 | Fix "redzone overwritten" bug in cifs_put_tcon (CIFSTcon may allocate too | ||
71 | little memory for the "nativeFileSystem" field returned by the server | ||
72 | during mount). Endian convert inode numbers if necessary (makes it easier | ||
73 | to compare inode numbers on network files from big endian systems). | ||
74 | |||
75 | Version 1.56 | ||
76 | ------------ | ||
77 | Add "forcemandatorylock" mount option to allow user to use mandatory | ||
78 | rather than posix (advisory) byte range locks, even though server would | ||
79 | support posix byte range locks. Fix query of root inode when prefixpath | ||
80 | specified and user does not have access to query information about the | ||
81 | top of the share. Fix problem in 2.6.28 resolving DFS paths to | ||
82 | Samba servers (worked to Windows). Fix rmdir so that pending search | ||
83 | (readdir) requests do not get invalid results which include the now | ||
84 | removed directory. Fix oops in cifs_dfs_ref.c when prefixpath is not reachable | ||
85 | when using DFS. Add better file create support to servers which support | ||
86 | the CIFS POSIX protocol extensions (this adds support for new flags | ||
87 | on create, and improves semantics for write of locked ranges). | ||
88 | |||
89 | Version 1.55 | ||
90 | ------------ | ||
91 | Various fixes to make delete of open files behavior more predictable | ||
92 | (when delete of an open file fails we mark the file as "delete-on-close" | ||
93 | in a way that more servers accept, but only if we can first rename the | ||
94 | file to a temporary name). Add experimental support for more safely | ||
95 | handling fcntl(F_SETLEASE). Convert cifs to using blocking tcp | ||
96 | sends, and also let tcp autotune the socket send and receive buffers. | ||
97 | This reduces the number of EAGAIN errors returned by TCP/IP in | ||
98 | high stress workloads (and the number of retries on socket writes | ||
99 | when sending large SMBWriteX requests). Fix case in which a portion of | ||
100 | data can in some cases not get written to the file on the server before the | ||
101 | file is closed. Fix DFS parsing to properly handle path consumed field, | ||
102 | and to handle certain codepage conversions better. Fix mount and | ||
103 | umount race that can cause oops in mount or umount or reconnect. | ||
104 | |||
105 | Version 1.54 | ||
106 | ------------ | ||
107 | Fix premature write failure on congested networks (we would give up | ||
108 | on EAGAIN from the socket too quickly on large writes). | ||
109 | Cifs_mkdir and cifs_create now respect the setgid bit on parent dir. | ||
110 | Fix endian problems in acl (mode from/to cifs acl) on bigendian | ||
111 | architectures. Fix problems with preserving timestamps on copying open | ||
112 | files (e.g. "cp -a") to Windows servers. For mkdir and create honor setgid bit | ||
113 | on parent directory when server supports Unix Extensions but not POSIX | ||
114 | create. Update cifs.upcall version to handle new Kerberos sec flags | ||
115 | (this requires update of cifs.upcall program from Samba). Fix memory leak | ||
116 | on dns_upcall (resolving DFS referralls). Fix plain text password | ||
117 | authentication (requires setting SecurityFlags to 0x30030 to enable | ||
118 | lanman and plain text though). Fix writes to be at correct offset when | ||
119 | file is open with O_APPEND and file is on a directio (forcediretio) mount. | ||
120 | Fix bug in rewinding readdir directory searches. Add nodfs mount option. | ||
121 | |||
122 | Version 1.53 | ||
123 | ------------ | ||
124 | DFS support added (Microsoft Distributed File System client support needed | ||
125 | for referrals which enable a hierarchical name space among servers). | ||
126 | Disable temporary caching of mode bits to servers which do not support | ||
127 | storing of mode (e.g. Windows servers, when client mounts without cifsacl | ||
128 | mount option) and add new "dynperm" mount option to enable temporary caching | ||
129 | of mode (enable old behavior). Fix hang on mount caused when server crashes | ||
130 | tcp session during negotiate protocol. | ||
131 | |||
132 | Version 1.52 | ||
133 | ------------ | ||
134 | Fix oops on second mount to server when null auth is used. | ||
135 | Enable experimental Kerberos support. Return writebehind errors on flush | ||
136 | and sync so that events like out of disk space get reported properly on | ||
137 | cached files. Fix setxattr failure to certain Samba versions. Fix mount | ||
138 | of second share to disconnected server session (autoreconnect on this). | ||
139 | Add ability to modify cifs acls for handling chmod (when mounted with | ||
140 | cifsacl flag). Fix prefixpath path separator so we can handle mounts | ||
141 | with prefixpaths longer than one directory (one path component) when | ||
142 | mounted to Windows servers. Fix slow file open when cifsacl | ||
143 | enabled. Fix memory leak in FindNext when the SMB call returns -EBADF. | ||
144 | |||
145 | |||
146 | Version 1.51 | ||
147 | ------------ | ||
148 | Fix memory leak in statfs when mounted to very old servers (e.g. | ||
149 | Windows 9x). Add new feature "POSIX open" which allows servers | ||
150 | which support the current POSIX Extensions to provide better semantics | ||
151 | (e.g. delete for open files opened with posix open). Take into | ||
152 | account umask on posix mkdir not just older style mkdir. Add | ||
153 | ability to mount to IPC$ share (which allows CIFS named pipes to be | ||
154 | opened, read and written as if they were files). When 1st tree | ||
155 | connect fails (e.g. due to signing negotiation failure) fix | ||
156 | leak that causes cifsd not to stop and rmmod to fail to cleanup | ||
157 | cifs_request_buffers pool. Fix problem with POSIX Open/Mkdir on | ||
158 | bigendian architectures. Fix possible memory corruption when | ||
159 | EAGAIN returned on kern_recvmsg. Return better error if server | ||
160 | requires packet signing but client has disabled it. When mounted | ||
161 | with cifsacl mount option - mode bits are approximated based | ||
162 | on the contents of the ACL of the file or directory. When cifs | ||
163 | mount helper is missing convert make sure that UNC name | ||
164 | has backslash (not forward slash) between ip address of server | ||
165 | and the share name. | ||
166 | |||
167 | Version 1.50 | ||
168 | ------------ | ||
169 | Fix NTLMv2 signing. NFS server mounted over cifs works (if cifs mount is | ||
170 | done with "serverino" mount option). Add support for POSIX Unlink | ||
171 | (helps with certain sharing violation cases when server such as | ||
172 | Samba supports newer POSIX CIFS Protocol Extensions). Add "nounix" | ||
173 | mount option to allow disabling the CIFS Unix Extensions for just | ||
174 | that mount. Fix hang on spinlock in find_writable_file (race when | ||
175 | reopening file after session crash). Byte range unlock request to | ||
176 | windows server could unlock more bytes (on server copy of file) | ||
177 | than intended if start of unlock request is well before start of | ||
178 | a previous byte range lock that we issued. | ||
179 | |||
180 | Version 1.49 | ||
181 | ------------ | ||
182 | IPv6 support. Enable ipv6 addresses to be passed on mount (put the ipv6 | ||
183 | address after the "ip=" mount option, at least until mount.cifs is fixed to | ||
184 | handle DNS host to ipv6 name translation). Accept override of uid or gid | ||
185 | on mount even when Unix Extensions are negotiated (it used to be ignored | ||
186 | when Unix Extensions were ignored). This allows users to override the | ||
187 | default uid and gid for files when they are certain that the uids or | ||
188 | gids on the server do not match those of the client. Make "sec=none" | ||
189 | mount override username (so that null user connection is attempted) | ||
190 | to match what documentation said. Support for very large reads, over 127K, | ||
191 | available to some newer servers (such as Samba 3.0.26 and later but | ||
192 | note that it also requires setting CIFSMaxBufSize at module install | ||
193 | time to a larger value which may hurt performance in some cases). | ||
194 | Make sign option force signing (or fail if server does not support it). | ||
195 | |||
196 | Version 1.48 | ||
197 | ------------ | ||
198 | Fix mtime bouncing around from local idea of last write times to remote time. | ||
199 | Fix hang (in i_size_read) when simultaneous size update of same remote file | ||
200 | on smp system corrupts sequence number. Do not reread unnecessarily partial page | ||
201 | (which we are about to overwrite anyway) when writing out file opened rw. | ||
202 | When DOS attribute of file on non-Unix server's file changes on the server side | ||
203 | from read-only back to read-write, reflect this change in default file mode | ||
204 | (we had been leaving a file's mode read-only until the inode were reloaded). | ||
205 | Allow setting of attribute back to ATTR_NORMAL (removing readonly dos attribute | ||
206 | when archive dos attribute not set and we are changing mode back to writeable | ||
207 | on server which does not support the Unix Extensions). Remove read only dos | ||
208 | attribute on chmod when adding any write permission (ie on any of | ||
209 | user/group/other (not all of user/group/other ie 0222) when | ||
210 | mounted to windows. Add support for POSIX MkDir (slight performance | ||
211 | enhancement and eliminates the network race between the mkdir and set | ||
212 | path info of the mode). | ||
213 | |||
214 | |||
215 | Version 1.47 | ||
216 | ------------ | ||
217 | Fix oops in list_del during mount caused by unaligned string. | ||
218 | Fix file corruption which could occur on some large file | ||
219 | copies caused by writepages page i/o completion bug. | ||
220 | Seek to SEEK_END forces check for update of file size for non-cached | ||
221 | files. Allow file size to be updated on remote extend of locally open, | ||
222 | non-cached file. Fix reconnect to newer Samba servers (or other servers | ||
223 | which support the CIFS Unix/POSIX extensions) so that we again tell the | ||
224 | server the Unix/POSIX cifs capabilities which we support (SetFSInfo). | ||
225 | Add experimental support for new POSIX Open/Mkdir (which returns | ||
226 | stat information on the open, and allows setting the mode). | ||
227 | |||
228 | Version 1.46 | ||
229 | ------------ | ||
230 | Support deep tree mounts. Better support OS/2, Win9x (DOS) time stamps. | ||
231 | Allow null user to be specified on mount ("username="). Do not return | ||
232 | EINVAL on readdir when filldir fails due to overwritten blocksize | ||
233 | (fixes FC problem). Return error in rename 2nd attempt retry (ie report | ||
234 | if rename by handle also fails, after rename by path fails, we were | ||
235 | not reporting whether the retry worked or not). Fix NTLMv2 to | ||
236 | work to Windows servers (mount with option "sec=ntlmv2"). | ||
237 | |||
238 | Version 1.45 | ||
239 | ------------ | ||
240 | Do not time out lockw calls when using posix extensions. Do not | ||
241 | time out requests if server still responding reasonably fast | ||
242 | on requests on other threads. Improve POSIX locking emulation, | ||
243 | (lock cancel now works, and unlock of merged range works even | ||
244 | to Windows servers now). Fix oops on mount to lanman servers | ||
245 | (win9x, os/2 etc.) when null password. Do not send listxattr | ||
246 | (SMB to query all EAs) if nouser_xattr specified. Fix SE Linux | ||
247 | problem (instantiate inodes/dentries in right order for readdir). | ||
248 | |||
249 | Version 1.44 | ||
250 | ------------ | ||
251 | Rewritten sessionsetup support, including support for legacy SMB | ||
252 | session setup needed for OS/2 and older servers such as Windows 95 and 98. | ||
253 | Fix oops on ls to OS/2 servers. Add support for level 1 FindFirst | ||
254 | so we can do search (ls etc.) to OS/2. Do not send NTCreateX | ||
255 | or recent levels of FindFirst unless server says it supports NT SMBs | ||
256 | (instead use legacy equivalents from LANMAN dialect). Fix to allow | ||
257 | NTLMv2 authentication support (now can use stronger password hashing | ||
258 | on mount if corresponding /proc/fs/cifs/SecurityFlags is set (0x4004). | ||
259 | Allow override of global cifs security flags on mount via "sec=" option(s). | ||
260 | |||
261 | Version 1.43 | ||
262 | ------------ | ||
263 | POSIX locking to servers which support CIFS POSIX Extensions | ||
264 | (disabled by default controlled by proc/fs/cifs/Experimental). | ||
265 | Handle conversion of long share names (especially Asian languages) | ||
266 | to Unicode during mount. Fix memory leak in sess struct on reconnect. | ||
267 | Fix rare oops after acpi suspend. Fix O_TRUNC opens to overwrite on | ||
268 | cifs open which helps rare case when setpathinfo fails or server does | ||
269 | not support it. | ||
270 | |||
271 | Version 1.42 | ||
272 | ------------ | ||
273 | Fix slow oplock break when mounted to different servers at the same time and | ||
274 | the tids match and we try to find matching fid on wrong server. Fix read | ||
275 | looping when signing required by server (2.6.16 kernel only). Fix readdir | ||
276 | vs. rename race which could cause each to hang. Return . and .. even | ||
277 | if server does not. Allow searches to skip first three entries and | ||
278 | begin at any location. Fix oops in find_writeable_file. | ||
279 | |||
280 | Version 1.41 | ||
281 | ------------ | ||
282 | Fix NTLMv2 security (can be enabled in /proc/fs/cifs) so customers can | ||
283 | configure stronger authentication. Fix sfu symlinks so they can | ||
284 | be followed (not just recognized). Fix wraparound of bcc on | ||
285 | read responses when buffer size over 64K and also fix wrap of | ||
286 | max smb buffer size when CIFSMaxBufSize over 64K. Fix oops in | ||
287 | cifs_user_read and cifs_readpages (when EAGAIN on send of smb | ||
288 | on socket is returned over and over). Add POSIX (advisory) byte range | ||
289 | locking support (requires server with newest CIFS UNIX Extensions | ||
290 | to the protocol implemented). Slow down negprot slightly in port 139 | ||
291 | RFC1001 case to give session_init time on buggy servers. | ||
292 | |||
293 | Version 1.40 | ||
294 | ------------ | ||
295 | Use fsuid (fsgid) more consistently instead of uid (gid). Improve performance | ||
296 | of readpages by eliminating one extra memcpy. Allow update of file size | ||
297 | from remote server even if file is open for write as long as mount is | ||
298 | directio. Recognize share mode security and send NTLM encrypted password | ||
299 | on tree connect if share mode negotiated. | ||
300 | |||
301 | Version 1.39 | ||
302 | ------------ | ||
303 | Defer close of a file handle slightly if pending writes depend on that handle | ||
304 | (this reduces the EBADF bad file handle errors that can be logged under heavy | ||
305 | stress on writes). Modify cifs Kconfig options to expose CONFIG_CIFS_STATS2 | ||
306 | Fix SFU style symlinks and mknod needed for servers which do not support the | ||
307 | CIFS Unix Extensions. Fix setfacl/getfacl on bigendian. Timeout negative | ||
308 | dentries so files that the client sees as deleted but that later get created | ||
309 | on the server will be recognized. Add client side permission check on setattr. | ||
310 | Timeout stuck requests better (where server has never responded or sent corrupt | ||
311 | responses) | ||
312 | |||
313 | Version 1.38 | ||
314 | ------------ | ||
315 | Fix tcp socket retransmission timeouts (e.g. on ENOSPACE from the socket) | ||
316 | to be smaller at first (but increasing) so large write performance performance | ||
317 | over GigE is better. Do not hang thread on illegal byte range lock response | ||
318 | from Windows (Windows can send an RFC1001 size which does not match smb size) by | ||
319 | allowing an SMBs TCP length to be up to a few bytes longer than it should be. | ||
320 | wsize and rsize can now be larger than negotiated buffer size if server | ||
321 | supports large readx/writex, even when directio mount flag not specified. | ||
322 | Write size will in many cases now be 16K instead of 4K which greatly helps | ||
323 | file copy performance on lightly loaded networks. Fix oops in dnotify | ||
324 | when experimental config flag enabled. Make cifsFYI more granular. | ||
325 | |||
326 | Version 1.37 | ||
327 | ------------ | ||
328 | Fix readdir caching when unlink removes file in current search buffer, | ||
329 | and this is followed by a rewind search to just before the deleted entry. | ||
330 | Do not attempt to set ctime unless atime and/or mtime change requested | ||
331 | (most servers throw it away anyway). Fix length check of received smbs | ||
332 | to be more accurate. Fix big endian problem with mapchars mount option, | ||
333 | and with a field returned by statfs. | ||
334 | |||
335 | Version 1.36 | ||
336 | ------------ | ||
337 | Add support for mounting to older pre-CIFS servers such as Windows9x and ME. | ||
338 | For these older servers, add option for passing netbios name of server in | ||
339 | on mount (servernetbiosname). Add suspend support for power management, to | ||
340 | avoid cifsd thread preventing software suspend from working. | ||
341 | Add mount option for disabling the default behavior of sending byte range lock | ||
342 | requests to the server (necessary for certain applications which break with | ||
343 | mandatory lock behavior such as Evolution), and also mount option for | ||
344 | requesting case insensitive matching for path based requests (requesting | ||
345 | case sensitive is the default). | ||
346 | |||
347 | Version 1.35 | ||
348 | ------------ | ||
349 | Add writepage performance improvements. Fix path name conversions | ||
350 | for long filenames on mounts which were done with "mapchars" mount option | ||
351 | specified. Ensure multiplex ids do not collide. Fix case in which | ||
352 | rmmod can oops if done soon after last unmount. Fix truncated | ||
353 | search (readdir) output when resume filename was a long filename. | ||
354 | Fix filename conversion when mapchars mount option was specified and | ||
355 | filename was a long filename. | ||
356 | |||
357 | Version 1.34 | ||
358 | ------------ | ||
359 | Fix error mapping of the TOO_MANY_LINKS (hardlinks) case. | ||
360 | Do not oops if root user kills cifs oplock kernel thread or | ||
361 | kills the cifsd thread (NB: killing the cifs kernel threads is not | ||
362 | recommended, unmount and rmmod cifs will kill them when they are | ||
363 | no longer needed). Fix readdir to ASCII servers (ie older servers | ||
364 | which do not support Unicode) and also require asterisk. | ||
365 | Fix out of memory case in which data could be written one page | ||
366 | off in the page cache. | ||
367 | |||
368 | Version 1.33 | ||
369 | ------------ | ||
370 | Fix caching problem, in which readdir of directory containing a file | ||
371 | which was cached could cause the file's time stamp to be updated | ||
372 | without invalidating the readahead data (so we could get stale | ||
373 | file data on the client for that file even as the server copy changed). | ||
374 | Cleanup response processing so cifsd can not loop when abnormally | ||
375 | terminated. | ||
376 | |||
377 | |||
378 | Version 1.32 | ||
379 | ------------ | ||
380 | Fix oops in ls when Transact2 FindFirst (or FindNext) returns more than one | ||
381 | transact response for an SMB request and search entry split across two frames. | ||
382 | Add support for lsattr (getting ext2/ext3/reiserfs attr flags from the server) | ||
383 | as new protocol extensions. Do not send Get/Set calls for POSIX ACLs | ||
384 | unless server explicitly claims to support them in CIFS Unix extensions | ||
385 | POSIX ACL capability bit. Fix packet signing when multiuser mounting with | ||
386 | different users from the same client to the same server. Fix oops in | ||
387 | cifs_close. Add mount option for remapping reserved characters in | ||
388 | filenames (also allow recognizing files with created by SFU which have any | ||
389 | of these seven reserved characters, except backslash, to be recognized). | ||
390 | Fix invalid transact2 message (we were sometimes trying to interpret | ||
391 | oplock breaks as SMB responses). Add ioctl for checking that the | ||
392 | current uid matches the uid of the mounter (needed by umount.cifs). | ||
393 | Reduce the number of large buffer allocations in cifs response processing | ||
394 | (significantly reduces memory pressure under heavy stress with multiple | ||
395 | processes accessing the same server at the same time). | ||
396 | |||
397 | Version 1.31 | ||
398 | ------------ | ||
399 | Fix updates of DOS attributes and time fields so that files on NT4 servers | ||
400 | do not get marked delete on close. Display sizes of cifs buffer pools in | ||
401 | cifs stats. Fix oops in unmount when cifsd thread being killed by | ||
402 | shutdown. Add generic readv/writev and aio support. Report inode numbers | ||
403 | consistently in readdir and lookup (when serverino mount option is | ||
404 | specified use the inode number that the server reports - for both lookup | ||
405 | and readdir, otherwise by default the locally generated inode number is used | ||
406 | for inodes created in either path since servers are not always able to | ||
407 | provide unique inode numbers when exporting multiple volumes from under one | ||
408 | sharename). | ||
409 | |||
410 | Version 1.30 | ||
411 | ------------ | ||
412 | Allow new nouser_xattr mount parm to disable xattr support for user namespace. | ||
413 | Do not flag user_xattr mount parm in dmesg. Retry failures setting file time | ||
414 | (mostly affects NT4 servers) by retry with handle based network operation. | ||
415 | Add new POSIX Query FS Info for returning statfs info more accurately. | ||
416 | Handle passwords with multiple commas in them. | ||
417 | |||
418 | Version 1.29 | ||
419 | ------------ | ||
420 | Fix default mode in sysfs of cifs module parms. Remove old readdir routine. | ||
421 | Fix capabilities flags for large readx so as to allow reads larger than 64K. | ||
422 | |||
423 | Version 1.28 | ||
424 | ------------ | ||
425 | Add module init parm for large SMB buffer size (to allow it to be changed | ||
426 | from its default of 16K) which is especially useful for large file copy | ||
427 | when mounting with the directio mount option. Fix oops after | ||
428 | returning from mount when experimental ExtendedSecurity enabled and | ||
429 | SpnegoNegotiated returning invalid error. Fix case to retry better when | ||
430 | peek returns from 1 to 3 bytes on socket which should have more data. | ||
431 | Fixed path based calls (such as cifs lookup) to handle path names | ||
432 | longer than 530 (now can handle PATH_MAX). Fix pass through authentication | ||
433 | from Samba server to DC (Samba required dummy LM password). | ||
434 | |||
435 | Version 1.27 | ||
436 | ------------ | ||
437 | Turn off DNOTIFY (directory change notification support) by default | ||
438 | (unless built with the experimental flag) to fix hang with KDE | ||
439 | file browser. Fix DNOTIFY flag mappings. Fix hang (in wait_event | ||
440 | waiting on an SMB response) in SendReceive when session dies but | ||
441 | reconnects quickly from another task. Add module init parms for | ||
442 | minimum number of large and small network buffers in the buffer pools, | ||
443 | and for the maximum number of simultaneous requests. | ||
444 | |||
445 | Version 1.26 | ||
446 | ------------ | ||
447 | Add setfacl support to allow setting of ACLs remotely to Samba 3.10 and later | ||
448 | and other POSIX CIFS compliant servers. Fix error mapping for getfacl | ||
449 | to EOPNOTSUPP when server does not support posix acls on the wire. Fix | ||
450 | improperly zeroed buffer in CIFS Unix extensions set times call. | ||
451 | |||
452 | Version 1.25 | ||
453 | ------------ | ||
454 | Fix internationalization problem in cifs readdir with filenames that map to | ||
455 | longer UTF-8 strings than the string on the wire was in Unicode. Add workaround | ||
456 | for readdir to netapp servers. Fix search rewind (seek into readdir to return | ||
457 | non-consecutive entries). Do not do readdir when server negotiates | ||
458 | buffer size to small to fit filename. Add support for reading POSIX ACLs from | ||
459 | the server (add also acl and noacl mount options). | ||
460 | |||
461 | Version 1.24 | ||
462 | ------------ | ||
463 | Optionally allow using server side inode numbers, rather than client generated | ||
464 | ones by specifying mount option "serverino" - this is required for some apps | ||
465 | to work which double check hardlinked files and have persistent inode numbers. | ||
466 | |||
467 | Version 1.23 | ||
468 | ------------ | ||
469 | Multiple bigendian fixes. On little endian systems (for reconnect after | ||
470 | network failure) fix tcp session reconnect code so we do not try first | ||
471 | to reconnect on reverse of port 445. Treat reparse points (NTFS junctions) | ||
472 | as directories rather than symlinks because we can do follow link on them. | ||
473 | |||
474 | Version 1.22 | ||
475 | ------------ | ||
476 | Add config option to enable XATTR (extended attribute) support, mapping | ||
477 | xattr names in the "user." namespace space to SMB/CIFS EAs. Lots of | ||
478 | minor fixes pointed out by the Stanford SWAT checker (mostly missing | ||
479 | or out of order NULL pointer checks in little used error paths). | ||
480 | |||
481 | Version 1.21 | ||
482 | ------------ | ||
483 | Add new mount parm to control whether mode check (generic_permission) is done | ||
484 | on the client. If Unix extensions are enabled and the uids on the client | ||
485 | and server do not match, client permission checks are meaningless on | ||
486 | server uids that do not exist on the client (this does not affect the | ||
487 | normal ACL check which occurs on the server). Fix default uid | ||
488 | on mknod to match create and mkdir. Add optional mount parm to allow | ||
489 | override of the default uid behavior (in which the server sets the uid | ||
490 | and gid of newly created files). Normally for network filesystem mounts | ||
491 | user want the server to set the uid/gid on newly created files (rather than | ||
492 | using uid of the client processes you would in a local filesystem). | ||
493 | |||
494 | Version 1.20 | ||
495 | ------------ | ||
496 | Make transaction counts more consistent. Merge /proc/fs/cifs/SimultaneousOps | ||
497 | info into /proc/fs/cifs/DebugData. Fix oops in rare oops in readdir | ||
498 | (in build_wildcard_path_from_dentry). Fix mknod to pass type field | ||
499 | (block/char/fifo) properly. Remove spurious mount warning log entry when | ||
500 | credentials passed as mount argument. Set major/minor device number in | ||
501 | inode for block and char devices when unix extensions enabled. | ||
502 | |||
503 | Version 1.19 | ||
504 | ------------ | ||
505 | Fix /proc/fs/cifs/Stats and DebugData display to handle larger | ||
506 | amounts of return data. Properly limit requests to MAX_REQ (50 | ||
507 | is the usual maximum active multiplex SMB/CIFS requests per server). | ||
508 | Do not kill cifsd (and thus hurt the other SMB session) when more than one | ||
509 | session to the same server (but with different userids) exists and one | ||
510 | of the two user's smb sessions is being removed while leaving the other. | ||
511 | Do not loop reconnecting in cifsd demultiplex thread when admin | ||
512 | kills the thread without going through unmount. | ||
513 | |||
514 | Version 1.18 | ||
515 | ------------ | ||
516 | Do not rename hardlinked files (since that should be a noop). Flush | ||
517 | cached write behind data when reopening a file after session abend, | ||
518 | except when already in write. Grab per socket sem during reconnect | ||
519 | to avoid oops in sendmsg if overlapping with reconnect. Do not | ||
520 | reset cached inode file size on readdir for files open for write on | ||
521 | client. | ||
522 | |||
523 | |||
524 | Version 1.17 | ||
525 | ------------ | ||
526 | Update number of blocks in file so du command is happier (in Linux a fake | ||
527 | blocksize of 512 is required for calculating number of blocks in inode). | ||
528 | Fix prepare write of partial pages to read in data from server if possible. | ||
529 | Fix race on tcpStatus field between unmount and reconnection code, causing | ||
530 | cifsd process sometimes to hang around forever. Improve out of memory | ||
531 | checks in cifs_filldir | ||
532 | |||
533 | Version 1.16 | ||
534 | ------------ | ||
535 | Fix incorrect file size in file handle based setattr on big endian hardware. | ||
536 | Fix oops in build_path_from_dentry when out of memory. Add checks for invalid | ||
537 | and closing file structs in writepage/partialpagewrite. Add statistics | ||
538 | for each mounted share (new menuconfig option). Fix endianness problem in | ||
539 | volume information displayed in /proc/fs/cifs/DebugData (only affects | ||
540 | affects big endian architectures). Prevent renames while constructing | ||
541 | path names for open, mkdir and rmdir. | ||
542 | |||
543 | Version 1.15 | ||
544 | ------------ | ||
545 | Change to mempools for alloc smb request buffers and multiplex structs | ||
546 | to better handle low memory problems (and potential deadlocks). | ||
547 | |||
548 | Version 1.14 | ||
549 | ------------ | ||
550 | Fix incomplete listings of large directories on Samba servers when Unix | ||
551 | extensions enabled. Fix oops when smb_buffer can not be allocated. Fix | ||
552 | rename deadlock when writing out dirty pages at same time. | ||
553 | |||
554 | Version 1.13 | ||
555 | ------------ | ||
556 | Fix open of files in which O_CREATE can cause the mode to change in | ||
557 | some cases. Fix case in which retry of write overlaps file close. | ||
558 | Fix PPC64 build error. Reduce excessive stack usage in smb password | ||
559 | hashing. Fix overwrite of Linux user's view of file mode to Windows servers. | ||
560 | |||
561 | Version 1.12 | ||
562 | ------------ | ||
563 | Fixes for large file copy, signal handling, socket retry, buffer | ||
564 | allocation and low memory situations. | ||
565 | |||
566 | Version 1.11 | ||
567 | ------------ | ||
568 | Better port 139 support to Windows servers (RFC1001/RFC1002 Session_Initialize) | ||
569 | also now allowing support for specifying client netbiosname. NT4 support added. | ||
570 | |||
571 | Version 1.10 | ||
572 | ------------ | ||
573 | Fix reconnection (and certain failed mounts) to properly wake up the | ||
574 | blocked users thread so it does not seem hung (in some cases was blocked | ||
575 | until the cifs receive timeout expired). Fix spurious error logging | ||
576 | to kernel log when application with open network files killed. | ||
577 | |||
578 | Version 1.09 | ||
579 | ------------ | ||
580 | Fix /proc/fs module unload warning message (that could be logged | ||
581 | to the kernel log). Fix intermittent failure in connectathon | ||
582 | test7 (hardlink count not immediately refreshed in case in which | ||
583 | inode metadata can be incorrectly kept cached when time near zero) | ||
584 | |||
585 | Version 1.08 | ||
586 | ------------ | ||
587 | Allow file_mode and dir_mode (specified at mount time) to be enforced | ||
588 | locally (the server already enforced its own ACLs too) for servers | ||
589 | that do not report the correct mode (do not support the | ||
590 | CIFS Unix Extensions). | ||
591 | |||
592 | Version 1.07 | ||
593 | ------------ | ||
594 | Fix some small memory leaks in some unmount error paths. Fix major leak | ||
595 | of cache pages in readpages causing multiple read oriented stress | ||
596 | testcases (including fsx, and even large file copy) to fail over time. | ||
597 | |||
598 | Version 1.06 | ||
599 | ------------ | ||
600 | Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated with server. | ||
601 | This allows files that differ only in case and improves performance of file | ||
602 | creation and file open to such servers. Fix semaphore conflict which causes | ||
603 | slow delete of open file to Samba (which unfortunately can cause an oplock | ||
604 | break to self while vfs_unlink held i_sem) which can hang for 20 seconds. | ||
605 | |||
606 | Version 1.05 | ||
607 | ------------ | ||
608 | fixes to cifs_readpages for fsx test case | ||
609 | |||
610 | Version 1.04 | ||
611 | ------------ | ||
612 | Fix caching data integrity bug when extending file size especially when no | ||
613 | oplock on file. Fix spurious logging of valid already parsed mount options | ||
614 | that are parsed outside of the cifs vfs such as nosuid. | ||
615 | |||
616 | |||
617 | Version 1.03 | ||
618 | ------------ | ||
619 | Connect to server when port number override not specified, and tcp port | ||
620 | unitialized. Reset search to restart at correct file when kernel routine | ||
621 | filldir returns error during large directory searches (readdir). | ||
622 | |||
623 | Version 1.02 | ||
624 | ------------ | ||
625 | Fix caching problem when files opened by multiple clients in which | ||
626 | page cache could contain stale data, and write through did | ||
627 | not occur often enough while file was still open when read ahead | ||
628 | (read oplock) not allowed. Treat "sep=" when first mount option | ||
629 | as an override of comma as the default separator between mount | ||
630 | options. | ||
631 | |||
632 | Version 1.01 | ||
633 | ------------ | ||
634 | Allow passwords longer than 16 bytes. Allow null password string. | ||
635 | |||
636 | Version 1.00 | ||
637 | ------------ | ||
638 | Gracefully clean up failed mounts when attempting to mount to servers such as | ||
639 | Windows 98 that terminate tcp sessions during protocol negotiation. Handle | ||
640 | embedded commas in mount parsing of passwords. | ||
641 | |||
642 | Version 0.99 | ||
643 | ------------ | ||
644 | Invalidate local inode cached pages on oplock break and when last file | ||
645 | instance is closed so that the client does not continue using stale local | ||
646 | copy rather than later modified server copy of file. Do not reconnect | ||
647 | when server drops the tcp session prematurely before negotiate | ||
648 | protocol response. Fix oops in reopen_file when dentry freed. Allow | ||
649 | the support for CIFS Unix Extensions to be disabled via proc interface. | ||
650 | |||
651 | Version 0.98 | ||
652 | ------------ | ||
653 | Fix hang in commit_write during reconnection of open files under heavy load. | ||
654 | Fix unload_nls oops in a mount failure path. Serialize writes to same socket | ||
655 | which also fixes any possible races when cifs signatures are enabled in SMBs | ||
656 | being sent out of signature sequence number order. | ||
657 | |||
658 | Version 0.97 | ||
659 | ------------ | ||
660 | Fix byte range locking bug (endian problem) causing bad offset and | ||
661 | length. | ||
662 | |||
663 | Version 0.96 | ||
664 | ------------ | ||
665 | Fix oops (in send_sig) caused by CIFS unmount code trying to | ||
666 | wake up the demultiplex thread after it had exited. Do not log | ||
667 | error on harmless oplock release of closed handle. | ||
668 | |||
669 | Version 0.95 | ||
670 | ------------ | ||
671 | Fix unsafe global variable usage and password hash failure on gcc 3.3.1 | ||
672 | Fix problem reconnecting secondary mounts to same server after session | ||
673 | failure. Fix invalid dentry - race in mkdir when directory gets created | ||
674 | by another client between the lookup and mkdir. | ||
675 | |||
676 | Version 0.94 | ||
677 | ------------ | ||
678 | Fix to list processing in reopen_files. Fix reconnection when server hung | ||
679 | but tcpip session still alive. Set proper timeout on socket read. | ||
680 | |||
681 | Version 0.93 | ||
682 | ------------ | ||
683 | Add missing mount options including iocharset. SMP fixes in write and open. | ||
684 | Fix errors in reconnecting after TCP session failure. Fix module unloading | ||
685 | of default nls codepage | ||
686 | |||
687 | Version 0.92 | ||
688 | ------------ | ||
689 | Active smb transactions should never go negative (fix double FreeXid). Fix | ||
690 | list processing in file routines. Check return code on kmalloc in open. | ||
691 | Fix spinlock usage for SMP. | ||
692 | |||
693 | Version 0.91 | ||
694 | ------------ | ||
695 | Fix oops in reopen_files when invalid dentry. drop dentry on server rename | ||
696 | and on revalidate errors. Fix cases where pid is now tgid. Fix return code | ||
697 | on create hard link when server does not support them. | ||
698 | |||
699 | Version 0.90 | ||
700 | ------------ | ||
701 | Fix scheduling while atomic error in getting inode info on newly created file. | ||
702 | Fix truncate of existing files opened with O_CREAT but not O_TRUNC set. | ||
703 | |||
704 | Version 0.89 | ||
705 | ------------ | ||
706 | Fix oops on write to dead tcp session. Remove error log write for case when file open | ||
707 | O_CREAT but not O_EXCL | ||
708 | |||
709 | Version 0.88 | ||
710 | ------------ | ||
711 | Fix non-POSIX behavior on rename of open file and delete of open file by taking | ||
712 | advantage of trans2 SetFileInfo rename facility if available on target server. | ||
713 | Retry on ENOSPC and EAGAIN socket errors. | ||
714 | |||
715 | Version 0.87 | ||
716 | ------------ | ||
717 | Fix oops on big endian readdir. Set blksize to be even power of two (2**blkbits) to fix | ||
718 | allocation size miscalculation. After oplock token lost do not read through | ||
719 | cache. | ||
720 | |||
721 | Version 0.86 | ||
722 | ------------ | ||
723 | Fix oops on empty file readahead. Fix for file size handling for locally cached files. | ||
724 | |||
725 | Version 0.85 | ||
726 | ------------ | ||
727 | Fix oops in mkdir when server fails to return inode info. Fix oops in reopen_files | ||
728 | during auto reconnection to server after server recovered from failure. | ||
729 | |||
730 | Version 0.84 | ||
731 | ------------ | ||
732 | Finish support for Linux 2.5 open/create changes, which removes the | ||
733 | redundant NTCreate/QPathInfo/close that was sent during file create. | ||
734 | Enable oplock by default. Enable packet signing by default (needed to | ||
735 | access many recent Windows servers) | ||
736 | |||
737 | Version 0.83 | ||
738 | ------------ | ||
739 | Fix oops when mounting to long server names caused by inverted parms to kmalloc. | ||
740 | Fix MultiuserMount (/proc/fs/cifs configuration setting) so that when enabled | ||
741 | we will choose a cifs user session (smb uid) that better matches the local | ||
742 | uid if a) the mount uid does not match the current uid and b) we have another | ||
743 | session to the same server (ip address) for a different mount which | ||
744 | matches the current local uid. | ||
745 | |||
746 | Version 0.82 | ||
747 | ------------ | ||
748 | Add support for mknod of block or character devices. Fix oplock | ||
749 | code (distributed caching) to properly send response to oplock | ||
750 | break from server. | ||
751 | |||
752 | Version 0.81 | ||
753 | ------------ | ||
754 | Finish up CIFS packet digital signing for the default | ||
755 | NTLM security case. This should help Windows 2003 | ||
756 | network interoperability since it is common for | ||
757 | packet signing to be required now. Fix statfs (stat -f) | ||
758 | which recently started returning errors due to | ||
759 | invalid value (-1 instead of 0) being set in the | ||
760 | struct kstatfs f_ffiles field. | ||
761 | |||
762 | Version 0.80 | ||
763 | ----------- | ||
764 | Fix oops on stopping oplock thread when removing cifs when | ||
765 | built as module. | ||
766 | |||
767 | Version 0.79 | ||
768 | ------------ | ||
769 | Fix mount options for ro (readonly), uid, gid and file and directory mode. | ||
770 | |||
771 | Version 0.78 | ||
772 | ------------ | ||
773 | Fix errors displayed on failed mounts to be more understandable. | ||
774 | Fixed various incorrect or misleading smb to posix error code mappings. | ||
775 | |||
776 | Version 0.77 | ||
777 | ------------ | ||
778 | Fix display of NTFS DFS junctions to display as symlinks. | ||
779 | They are the network equivalent. Fix oops in | ||
780 | cifs_partialpagewrite caused by missing spinlock protection | ||
781 | of openfile linked list. Allow writebehind caching errors to | ||
782 | be returned to the application at file close. | ||
783 | |||
784 | Version 0.76 | ||
785 | ------------ | ||
786 | Clean up options displayed in /proc/mounts by show_options to | ||
787 | be more consistent with other filesystems. | ||
788 | |||
789 | Version 0.75 | ||
790 | ------------ | ||
791 | Fix delete of readonly file to Windows servers. Reflect | ||
792 | presence or absence of read only dos attribute in mode | ||
793 | bits for servers that do not support CIFS Unix extensions. | ||
794 | Fix shortened results on readdir of large directories to | ||
795 | servers supporting CIFS Unix extensions (caused by | ||
796 | incorrect resume key). | ||
797 | |||
798 | Version 0.74 | ||
799 | ------------ | ||
800 | Fix truncate bug (set file size) that could cause hangs e.g. running fsx | ||
801 | |||
802 | Version 0.73 | ||
803 | ------------ | ||
804 | unload nls if mount fails. | ||
805 | |||
806 | Version 0.72 | ||
807 | ------------ | ||
808 | Add resume key support to search (readdir) code to workaround | ||
809 | Windows bug. Add /proc/fs/cifs/LookupCacheEnable which | ||
810 | allows disabling caching of attribute information for | ||
811 | lookups. | ||
812 | |||
813 | Version 0.71 | ||
814 | ------------ | ||
815 | Add more oplock handling (distributed caching code). Remove | ||
816 | dead code. Remove excessive stack space utilization from | ||
817 | symlink routines. | ||
818 | |||
819 | Version 0.70 | ||
820 | ------------ | ||
821 | Fix oops in get dfs referral (triggered when null path sent in to | ||
822 | mount). Add support for overriding rsize at mount time. | ||
823 | |||
824 | Version 0.69 | ||
825 | ------------ | ||
826 | Fix buffer overrun in readdir which caused intermittent kernel oopses. | ||
827 | Fix writepage code to release kmap on write data. Allow "-ip=" new | ||
828 | mount option to be passed in on parameter distinct from the first part | ||
829 | (server name portion of) the UNC name. Allow override of the | ||
830 | tcp port of the target server via new mount option "-port=" | ||
831 | |||
832 | Version 0.68 | ||
833 | ------------ | ||
834 | Fix search handle leak on rewind. Fix setuid and gid so that they are | ||
835 | reflected in the local inode immediately. Cleanup of whitespace | ||
836 | to make 2.4 and 2.5 versions more consistent. | ||
837 | |||
838 | |||
839 | Version 0.67 | ||
840 | ------------ | ||
841 | Fix signal sending so that captive thread (cifsd) exits on umount | ||
842 | (which was causing the warning in kmem_cache_free of the request buffers | ||
843 | at rmmod time). This had broken as a sideeffect of the recent global | ||
844 | kernel change to daemonize. Fix memory leak in readdir code which | ||
845 | showed up in "ls -R" (and applications that did search rewinding). | ||
846 | |||
847 | Version 0.66 | ||
848 | ------------ | ||
849 | Reconnect tids and fids after session reconnection (still do not | ||
850 | reconnect byte range locks though). Fix problem caching | ||
851 | lookup information for directory inodes, improving performance, | ||
852 | especially in deep directory trees. Fix various build warnings. | ||
853 | |||
854 | Version 0.65 | ||
855 | ------------ | ||
856 | Finish fixes to commit write for caching/readahead consistency. fsx | ||
857 | now works to Samba servers. Fix oops caused when readahead | ||
858 | was interrupted by a signal. | ||
859 | |||
860 | Version 0.64 | ||
861 | ------------ | ||
862 | Fix data corruption (in partial page after truncate) that caused fsx to | ||
863 | fail to Windows servers. Cleaned up some extraneous error logging in | ||
864 | common error paths. Add generic sendfile support. | ||
865 | |||
866 | Version 0.63 | ||
867 | ------------ | ||
868 | Fix memory leak in AllocMidQEntry. | ||
869 | Finish reconnection logic, so connection with server can be dropped | ||
870 | (or server rebooted) and the cifs client will reconnect. | ||
871 | |||
872 | Version 0.62 | ||
873 | ------------ | ||
874 | Fix temporary socket leak when bad userid or password specified | ||
875 | (or other SMBSessSetup failure). Increase maximum buffer size to slightly | ||
876 | over 16K to allow negotiation of up to Samba and Windows server default read | ||
877 | sizes. Add support for readpages | ||
878 | |||
879 | Version 0.61 | ||
880 | ------------ | ||
881 | Fix oops when username not passed in on mount. Extensive fixes and improvements | ||
882 | to error logging (strip redundant newlines, change debug macros to ensure newline | ||
883 | passed in and to be more consistent). Fix writepage wrong file handle problem, | ||
884 | a readonly file handle could be incorrectly used to attempt to write out | ||
885 | file updates through the page cache to multiply open files. This could cause | ||
886 | the iozone benchmark to fail on the fwrite test. Fix bug mounting two different | ||
887 | shares to the same Windows server when using different usernames | ||
888 | (doing this to Samba servers worked but Windows was rejecting it) - now it is | ||
889 | possible to use different userids when connecting to the same server from a | ||
890 | Linux client. Fix oops when treeDisconnect called during unmount on | ||
891 | previously freed socket. | ||
892 | |||
893 | Version 0.60 | ||
894 | ------------ | ||
895 | Fix oops in readpages caused by not setting address space operations in inode in | ||
896 | rare code path. | ||
897 | |||
898 | Version 0.59 | ||
899 | ------------ | ||
900 | Includes support for deleting of open files and renaming over existing files (per POSIX | ||
901 | requirement). Add readlink support for Windows junction points (directory symlinks). | ||
902 | |||
903 | Version 0.58 | ||
904 | ------------ | ||
905 | Changed read and write to go through pagecache. Added additional address space operations. | ||
906 | Memory mapped operations now working. | ||
907 | |||
908 | Version 0.57 | ||
909 | ------------ | ||
910 | Added writepage code for additional memory mapping support. Fixed leak in xids causing | ||
911 | the simultaneous operations counter (/proc/fs/cifs/SimultaneousOps) to increase on | ||
912 | every stat call. Additional formatting cleanup. | ||
913 | |||
914 | Version 0.56 | ||
915 | ------------ | ||
916 | Fix bigendian bug in order of time conversion. Merge 2.5 to 2.4 version. Formatting cleanup. | ||
917 | |||
918 | Version 0.55 | ||
919 | ------------ | ||
920 | Fixes from Zwane Mwaikambo for adding missing return code checking in a few places. | ||
921 | Also included a modified version of his fix to protect global list manipulation of | ||
922 | the smb session and tree connection and mid related global variables. | ||
923 | |||
924 | Version 0.54 | ||
925 | ------------ | ||
926 | Fix problem with captive thread hanging around at unmount time. Adjust to 2.5.42-pre | ||
927 | changes to superblock layout. Remove wasteful allocation of smb buffers (now the send | ||
928 | buffer is reused for responses). Add more oplock handling. Additional minor cleanup. | ||
929 | |||
930 | Version 0.53 | ||
931 | ------------ | ||
932 | More stylistic updates to better match kernel style. Add additional statistics | ||
933 | for filesystem which can be viewed via /proc/fs/cifs. Add more pieces of NTLMv2 | ||
934 | and CIFS Packet Signing enablement. | ||
935 | |||
936 | Version 0.52 | ||
937 | ------------ | ||
938 | Replace call to sleep_on with safer wait_on_event. | ||
939 | Make stylistic changes to better match kernel style recommendations. | ||
940 | Remove most typedef usage (except for the PDUs themselves). | ||
941 | |||
942 | Version 0.51 | ||
943 | ------------ | ||
944 | Update mount so the -unc mount option is no longer required (the ip address can be specified | ||
945 | in a UNC style device name. Implementation of readpage/writepage started. | ||
946 | |||
947 | Version 0.50 | ||
948 | ------------ | ||
949 | Fix intermittent problem with incorrect smb header checking on badly | ||
950 | fragmented tcp responses | ||
951 | |||
952 | Version 0.49 | ||
953 | ------------ | ||
954 | Fixes to setting of allocation size and file size. | ||
955 | |||
956 | Version 0.48 | ||
957 | ------------ | ||
958 | Various 2.5.38 fixes. Now works on 2.5.38 | ||
959 | |||
960 | Version 0.47 | ||
961 | ------------ | ||
962 | Prepare for 2.5 kernel merge. Remove ifdefs. | ||
963 | |||
964 | Version 0.46 | ||
965 | ------------ | ||
966 | Socket buffer management fixes. Fix dual free. | ||
967 | |||
968 | Version 0.45 | ||
969 | ------------ | ||
970 | Various big endian fixes for hardlinks and symlinks and also for dfs. | ||
971 | |||
972 | Version 0.44 | ||
973 | ------------ | ||
974 | Various big endian fixes for servers with Unix extensions such as Samba | ||
975 | |||
976 | Version 0.43 | ||
977 | ------------ | ||
978 | Various FindNext fixes for incorrect filenames on large directory searches on big endian | ||
979 | clients. basic posix file i/o tests now work on big endian machines, not just le | ||
980 | |||
981 | Version 0.42 | ||
982 | ------------ | ||
983 | SessionSetup and NegotiateProtocol now work from Big Endian machines. | ||
984 | Various Big Endian fixes found during testing on the Linux on 390. Various fixes for compatibility with older | ||
985 | versions of 2.4 kernel (now builds and works again on kernels at least as early as 2.4.7). | ||
986 | |||
987 | Version 0.41 | ||
988 | ------------ | ||
989 | Various minor fixes for Connectathon Posix "basic" file i/o test suite. Directory caching fixed so hardlinked | ||
990 | files now return the correct number of links on fstat as they are repeatedly linked and unlinked. | ||
991 | |||
992 | Version 0.40 | ||
993 | ------------ | ||
994 | Implemented "Raw" (i.e. not encapsulated in SPNEGO) NTLMSSP (i.e. the Security Provider Interface used to negotiate | ||
995 | session advanced session authentication). Raw NTLMSSP is preferred by Windows 2000 Professional and Windows XP. | ||
996 | Began implementing support for SPNEGO encapsulation of NTLMSSP based session authentication blobs | ||
997 | (which is the mechanism preferred by Windows 2000 server in the absence of Kerberos). | ||
998 | |||
999 | Version 0.38 | ||
1000 | ------------ | ||
1001 | Introduced optional mount helper utility mount.cifs and made coreq changes to cifs vfs to enable | ||
1002 | it. Fixed a few bugs in the DFS code (e.g. bcc two bytes too short and incorrect uid in PDU). | ||
1003 | |||
1004 | Version 0.37 | ||
1005 | ------------ | ||
1006 | Rewrote much of connection and mount/unmount logic to handle bugs with | ||
1007 | multiple uses to same share, multiple users to same server etc. | ||
1008 | |||
1009 | Version 0.36 | ||
1010 | ------------ | ||
1011 | Fixed major problem with dentry corruption (missing call to dput) | ||
1012 | |||
1013 | Version 0.35 | ||
1014 | ------------ | ||
1015 | Rewrite of readdir code to fix bug. Various fixes for bigendian machines. | ||
1016 | Begin adding oplock support. Multiusermount and oplockEnabled flags added to /proc/fs/cifs | ||
1017 | although corresponding function not fully implemented in the vfs yet | ||
1018 | |||
1019 | Version 0.34 | ||
1020 | ------------ | ||
1021 | Fixed dentry caching bug, misc. cleanup | ||
1022 | |||
1023 | Version 0.33 | ||
1024 | ------------ | ||
1025 | Fixed 2.5 support to handle build and configure changes as well as misc. 2.5 changes. Now can build | ||
1026 | on current 2.5 beta version (2.5.24) of the Linux kernel as well as on 2.4 Linux kernels. | ||
1027 | Support for STATUS codes (newer 32 bit NT error codes) added. DFS support begun to be added. | ||
1028 | |||
1029 | Version 0.32 | ||
1030 | ------------ | ||
1031 | Unix extensions (symlink, readlink, hardlink, chmod and some chgrp and chown) implemented | ||
1032 | and tested against Samba 2.2.5 | ||
1033 | |||
1034 | |||
1035 | Version 0.31 | ||
1036 | ------------ | ||
1037 | 1) Fixed lockrange to be correct (it was one byte too short) | ||
1038 | |||
1039 | 2) Fixed GETLK (i.e. the fcntl call to test a range of bytes in a file to see if locked) to correctly | ||
1040 | show range as locked when there is a conflict with an existing lock. | ||
1041 | |||
1042 | 3) default file perms are now 2767 (indicating support for mandatory locks) instead of 777 for directories | ||
1043 | in most cases. Eventually will offer optional ability to query server for the correct perms. | ||
1044 | |||
1045 | 3) Fixed eventual trap when mounting twice to different shares on the same server when the first succeeded | ||
1046 | but the second one was invalid and failed (the second one was incorrectly disconnecting the tcp and smb | ||
1047 | session) | ||
1048 | |||
1049 | 4) Fixed error logging of valid mount options | ||
1050 | |||
1051 | 5) Removed logging of password field. | ||
1052 | |||
1053 | 6) Moved negotiate, treeDisconnect and uloggoffX (only tConx and SessSetup remain in connect.c) to cifssmb.c | ||
1054 | and cleaned them up and made them more consistent with other cifs functions. | ||
1055 | |||
1056 | 7) Server support for Unix extensions is now fully detected and FindFirst is implemented both ways | ||
1057 | (with or without Unix extensions) but FindNext and QueryPathInfo with the Unix extensions are not completed, | ||
1058 | nor is the symlink support using the Unix extensions | ||
1059 | |||
1060 | 8) Started adding the readlink and follow_link code | ||
1061 | |||
1062 | Version 0.3 | ||
1063 | ----------- | ||
1064 | Initial drop | ||
1065 | |||
diff --git a/Documentation/filesystems/cifs/README b/Documentation/filesystems/cifs/README new file mode 100644 index 000000000000..2d5622f60e11 --- /dev/null +++ b/Documentation/filesystems/cifs/README | |||
@@ -0,0 +1,753 @@ | |||
1 | The CIFS VFS support for Linux supports many advanced network filesystem | ||
2 | features such as hierarchical dfs like namespace, hardlinks, locking and more. | ||
3 | It was designed to comply with the SNIA CIFS Technical Reference (which | ||
4 | supersedes the 1992 X/Open SMB Standard) as well as to perform best practice | ||
5 | practical interoperability with Windows 2000, Windows XP, Samba and equivalent | ||
6 | servers. This code was developed in participation with the Protocol Freedom | ||
7 | Information Foundation. | ||
8 | |||
9 | Please see | ||
10 | http://protocolfreedom.org/ and | ||
11 | http://samba.org/samba/PFIF/ | ||
12 | for more details. | ||
13 | |||
14 | |||
15 | For questions or bug reports please contact: | ||
16 | sfrench@samba.org (sfrench@us.ibm.com) | ||
17 | |||
18 | Build instructions: | ||
19 | ================== | ||
20 | For Linux 2.4: | ||
21 | 1) Get the kernel source (e.g.from http://www.kernel.org) | ||
22 | and download the cifs vfs source (see the project page | ||
23 | at http://us1.samba.org/samba/Linux_CIFS_client.html) | ||
24 | and change directory into the top of the kernel directory | ||
25 | then patch the kernel (e.g. "patch -p1 < cifs_24.patch") | ||
26 | to add the cifs vfs to your kernel configure options if | ||
27 | it has not already been added (e.g. current SuSE and UL | ||
28 | users do not need to apply the cifs_24.patch since the cifs vfs is | ||
29 | already in the kernel configure menu) and then | ||
30 | mkdir linux/fs/cifs and then copy the current cifs vfs files from | ||
31 | the cifs download to your kernel build directory e.g. | ||
32 | |||
33 | cp <cifs_download_dir>/fs/cifs/* to <kernel_download_dir>/fs/cifs | ||
34 | |||
35 | 2) make menuconfig (or make xconfig) | ||
36 | 3) select cifs from within the network filesystem choices | ||
37 | 4) save and exit | ||
38 | 5) make dep | ||
39 | 6) make modules (or "make" if CIFS VFS not to be built as a module) | ||
40 | |||
41 | For Linux 2.6: | ||
42 | 1) Download the kernel (e.g. from http://www.kernel.org) | ||
43 | and change directory into the top of the kernel directory tree | ||
44 | (e.g. /usr/src/linux-2.5.73) | ||
45 | 2) make menuconfig (or make xconfig) | ||
46 | 3) select cifs from within the network filesystem choices | ||
47 | 4) save and exit | ||
48 | 5) make | ||
49 | |||
50 | |||
51 | Installation instructions: | ||
52 | ========================= | ||
53 | If you have built the CIFS vfs as module (successfully) simply | ||
54 | type "make modules_install" (or if you prefer, manually copy the file to | ||
55 | the modules directory e.g. /lib/modules/2.4.10-4GB/kernel/fs/cifs/cifs.o). | ||
56 | |||
57 | If you have built the CIFS vfs into the kernel itself, follow the instructions | ||
58 | for your distribution on how to install a new kernel (usually you | ||
59 | would simply type "make install"). | ||
60 | |||
61 | If you do not have the utility mount.cifs (in the Samba 3.0 source tree and on | ||
62 | the CIFS VFS web site) copy it to the same directory in which mount.smbfs and | ||
63 | similar files reside (usually /sbin). Although the helper software is not | ||
64 | required, mount.cifs is recommended. Eventually the Samba 3.0 utility program | ||
65 | "net" may also be helpful since it may someday provide easier mount syntax for | ||
66 | users who are used to Windows e.g. | ||
67 | net use <mount point> <UNC name or cifs URL> | ||
68 | Note that running the Winbind pam/nss module (logon service) on all of your | ||
69 | Linux clients is useful in mapping Uids and Gids consistently across the | ||
70 | domain to the proper network user. The mount.cifs mount helper can be | ||
71 | trivially built from Samba 3.0 or later source e.g. by executing: | ||
72 | |||
73 | gcc samba/source/client/mount.cifs.c -o mount.cifs | ||
74 | |||
75 | If cifs is built as a module, then the size and number of network buffers | ||
76 | and maximum number of simultaneous requests to one server can be configured. | ||
77 | Changing these from their defaults is not recommended. By executing modinfo | ||
78 | modinfo kernel/fs/cifs/cifs.ko | ||
79 | on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made | ||
80 | at module initialization time (by running insmod cifs.ko) can be seen. | ||
81 | |||
82 | Allowing User Mounts | ||
83 | ==================== | ||
84 | To permit users to mount and unmount over directories they own is possible | ||
85 | with the cifs vfs. A way to enable such mounting is to mark the mount.cifs | ||
86 | utility as suid (e.g. "chmod +s /sbin/mount.cifs). To enable users to | ||
87 | umount shares they mount requires | ||
88 | 1) mount.cifs version 1.4 or later | ||
89 | 2) an entry for the share in /etc/fstab indicating that a user may | ||
90 | unmount it e.g. | ||
91 | //server/usersharename /mnt/username cifs user 0 0 | ||
92 | |||
93 | Note that when the mount.cifs utility is run suid (allowing user mounts), | ||
94 | in order to reduce risks, the "nosuid" mount flag is passed in on mount to | ||
95 | disallow execution of an suid program mounted on the remote target. | ||
96 | When mount is executed as root, nosuid is not passed in by default, | ||
97 | and execution of suid programs on the remote target would be enabled | ||
98 | by default. This can be changed, as with nfs and other filesystems, | ||
99 | by simply specifying "nosuid" among the mount options. For user mounts | ||
100 | though to be able to pass the suid flag to mount requires rebuilding | ||
101 | mount.cifs with the following flag: | ||
102 | |||
103 | gcc samba/source/client/mount.cifs.c -DCIFS_ALLOW_USR_SUID -o mount.cifs | ||
104 | |||
105 | There is a corresponding manual page for cifs mounting in the Samba 3.0 and | ||
106 | later source tree in docs/manpages/mount.cifs.8 | ||
107 | |||
108 | Allowing User Unmounts | ||
109 | ====================== | ||
110 | To permit users to ummount directories that they have user mounted (see above), | ||
111 | the utility umount.cifs may be used. It may be invoked directly, or if | ||
112 | umount.cifs is placed in /sbin, umount can invoke the cifs umount helper | ||
113 | (at least for most versions of the umount utility) for umount of cifs | ||
114 | mounts, unless umount is invoked with -i (which will avoid invoking a umount | ||
115 | helper). As with mount.cifs, to enable user unmounts umount.cifs must be marked | ||
116 | as suid (e.g. "chmod +s /sbin/umount.cifs") or equivalent (some distributions | ||
117 | allow adding entries to a file to the /etc/permissions file to achieve the | ||
118 | equivalent suid effect). For this utility to succeed the target path | ||
119 | must be a cifs mount, and the uid of the current user must match the uid | ||
120 | of the user who mounted the resource. | ||
121 | |||
122 | Also note that the customary way of allowing user mounts and unmounts is | ||
123 | (instead of using mount.cifs and unmount.cifs as suid) to add a line | ||
124 | to the file /etc/fstab for each //server/share you wish to mount, but | ||
125 | this can become unwieldy when potential mount targets include many | ||
126 | or unpredictable UNC names. | ||
127 | |||
128 | Samba Considerations | ||
129 | ==================== | ||
130 | To get the maximum benefit from the CIFS VFS, we recommend using a server that | ||
131 | supports the SNIA CIFS Unix Extensions standard (e.g. Samba 2.2.5 or later or | ||
132 | Samba 3.0) but the CIFS vfs works fine with a wide variety of CIFS servers. | ||
133 | Note that uid, gid and file permissions will display default values if you do | ||
134 | not have a server that supports the Unix extensions for CIFS (such as Samba | ||
135 | 2.2.5 or later). To enable the Unix CIFS Extensions in the Samba server, add | ||
136 | the line: | ||
137 | |||
138 | unix extensions = yes | ||
139 | |||
140 | to your smb.conf file on the server. Note that the following smb.conf settings | ||
141 | are also useful (on the Samba server) when the majority of clients are Unix or | ||
142 | Linux: | ||
143 | |||
144 | case sensitive = yes | ||
145 | delete readonly = yes | ||
146 | ea support = yes | ||
147 | |||
148 | Note that server ea support is required for supporting xattrs from the Linux | ||
149 | cifs client, and that EA support is present in later versions of Samba (e.g. | ||
150 | 3.0.6 and later (also EA support works in all versions of Windows, at least to | ||
151 | shares on NTFS filesystems). Extended Attribute (xattr) support is an optional | ||
152 | feature of most Linux filesystems which may require enabling via | ||
153 | make menuconfig. Client support for extended attributes (user xattr) can be | ||
154 | disabled on a per-mount basis by specifying "nouser_xattr" on mount. | ||
155 | |||
156 | The CIFS client can get and set POSIX ACLs (getfacl, setfacl) to Samba servers | ||
157 | version 3.10 and later. Setting POSIX ACLs requires enabling both XATTR and | ||
158 | then POSIX support in the CIFS configuration options when building the cifs | ||
159 | module. POSIX ACL support can be disabled on a per mount basic by specifying | ||
160 | "noacl" on mount. | ||
161 | |||
162 | Some administrators may want to change Samba's smb.conf "map archive" and | ||
163 | "create mask" parameters from the default. Unless the create mask is changed | ||
164 | newly created files can end up with an unnecessarily restrictive default mode, | ||
165 | which may not be what you want, although if the CIFS Unix extensions are | ||
166 | enabled on the server and client, subsequent setattr calls (e.g. chmod) can | ||
167 | fix the mode. Note that creating special devices (mknod) remotely | ||
168 | may require specifying a mkdev function to Samba if you are not using | ||
169 | Samba 3.0.6 or later. For more information on these see the manual pages | ||
170 | ("man smb.conf") on the Samba server system. Note that the cifs vfs, | ||
171 | unlike the smbfs vfs, does not read the smb.conf on the client system | ||
172 | (the few optional settings are passed in on mount via -o parameters instead). | ||
173 | Note that Samba 2.2.7 or later includes a fix that allows the CIFS VFS to delete | ||
174 | open files (required for strict POSIX compliance). Windows Servers already | ||
175 | supported this feature. Samba server does not allow symlinks that refer to files | ||
176 | outside of the share, so in Samba versions prior to 3.0.6, most symlinks to | ||
177 | files with absolute paths (ie beginning with slash) such as: | ||
178 | ln -s /mnt/foo bar | ||
179 | would be forbidden. Samba 3.0.6 server or later includes the ability to create | ||
180 | such symlinks safely by converting unsafe symlinks (ie symlinks to server | ||
181 | files that are outside of the share) to a samba specific format on the server | ||
182 | that is ignored by local server applications and non-cifs clients and that will | ||
183 | not be traversed by the Samba server). This is opaque to the Linux client | ||
184 | application using the cifs vfs. Absolute symlinks will work to Samba 3.0.5 or | ||
185 | later, but only for remote clients using the CIFS Unix extensions, and will | ||
186 | be invisbile to Windows clients and typically will not affect local | ||
187 | applications running on the same server as Samba. | ||
188 | |||
189 | Use instructions: | ||
190 | ================ | ||
191 | Once the CIFS VFS support is built into the kernel or installed as a module | ||
192 | (cifs.o), you can use mount syntax like the following to access Samba or Windows | ||
193 | servers: | ||
194 | |||
195 | mount -t cifs //9.53.216.11/e$ /mnt -o user=myname,pass=mypassword | ||
196 | |||
197 | Before -o the option -v may be specified to make the mount.cifs | ||
198 | mount helper display the mount steps more verbosely. | ||
199 | After -o the following commonly used cifs vfs specific options | ||
200 | are supported: | ||
201 | |||
202 | user=<username> | ||
203 | pass=<password> | ||
204 | domain=<domain name> | ||
205 | |||
206 | Other cifs mount options are described below. Use of TCP names (in addition to | ||
207 | ip addresses) is available if the mount helper (mount.cifs) is installed. If | ||
208 | you do not trust the server to which are mounted, or if you do not have | ||
209 | cifs signing enabled (and the physical network is insecure), consider use | ||
210 | of the standard mount options "noexec" and "nosuid" to reduce the risk of | ||
211 | running an altered binary on your local system (downloaded from a hostile server | ||
212 | or altered by a hostile router). | ||
213 | |||
214 | Although mounting using format corresponding to the CIFS URL specification is | ||
215 | not possible in mount.cifs yet, it is possible to use an alternate format | ||
216 | for the server and sharename (which is somewhat similar to NFS style mount | ||
217 | syntax) instead of the more widely used UNC format (i.e. \\server\share): | ||
218 | mount -t cifs tcp_name_of_server:share_name /mnt -o user=myname,pass=mypasswd | ||
219 | |||
220 | When using the mount helper mount.cifs, passwords may be specified via alternate | ||
221 | mechanisms, instead of specifying it after -o using the normal "pass=" syntax | ||
222 | on the command line: | ||
223 | 1) By including it in a credential file. Specify credentials=filename as one | ||
224 | of the mount options. Credential files contain two lines | ||
225 | username=someuser | ||
226 | password=your_password | ||
227 | 2) By specifying the password in the PASSWD environment variable (similarly | ||
228 | the user name can be taken from the USER environment variable). | ||
229 | 3) By specifying the password in a file by name via PASSWD_FILE | ||
230 | 4) By specifying the password in a file by file descriptor via PASSWD_FD | ||
231 | |||
232 | If no password is provided, mount.cifs will prompt for password entry | ||
233 | |||
234 | Restrictions | ||
235 | ============ | ||
236 | Servers must support either "pure-TCP" (port 445 TCP/IP CIFS connections) or RFC | ||
237 | 1001/1002 support for "Netbios-Over-TCP/IP." This is not likely to be a | ||
238 | problem as most servers support this. | ||
239 | |||
240 | Valid filenames differ between Windows and Linux. Windows typically restricts | ||
241 | filenames which contain certain reserved characters (e.g.the character : | ||
242 | which is used to delimit the beginning of a stream name by Windows), while | ||
243 | Linux allows a slightly wider set of valid characters in filenames. Windows | ||
244 | servers can remap such characters when an explicit mapping is specified in | ||
245 | the Server's registry. Samba starting with version 3.10 will allow such | ||
246 | filenames (ie those which contain valid Linux characters, which normally | ||
247 | would be forbidden for Windows/CIFS semantics) as long as the server is | ||
248 | configured for Unix Extensions (and the client has not disabled | ||
249 | /proc/fs/cifs/LinuxExtensionsEnabled). | ||
250 | |||
251 | |||
252 | CIFS VFS Mount Options | ||
253 | ====================== | ||
254 | A partial list of the supported mount options follows: | ||
255 | user The user name to use when trying to establish | ||
256 | the CIFS session. | ||
257 | password The user password. If the mount helper is | ||
258 | installed, the user will be prompted for password | ||
259 | if not supplied. | ||
260 | ip The ip address of the target server | ||
261 | unc The target server Universal Network Name (export) to | ||
262 | mount. | ||
263 | domain Set the SMB/CIFS workgroup name prepended to the | ||
264 | username during CIFS session establishment | ||
265 | forceuid Set the default uid for inodes to the uid | ||
266 | passed in on mount. For mounts to servers | ||
267 | which do support the CIFS Unix extensions, such as a | ||
268 | properly configured Samba server, the server provides | ||
269 | the uid, gid and mode so this parameter should not be | ||
270 | specified unless the server and clients uid and gid | ||
271 | numbering differ. If the server and client are in the | ||
272 | same domain (e.g. running winbind or nss_ldap) and | ||
273 | the server supports the Unix Extensions then the uid | ||
274 | and gid can be retrieved from the server (and uid | ||
275 | and gid would not have to be specifed on the mount. | ||
276 | For servers which do not support the CIFS Unix | ||
277 | extensions, the default uid (and gid) returned on lookup | ||
278 | of existing files will be the uid (gid) of the person | ||
279 | who executed the mount (root, except when mount.cifs | ||
280 | is configured setuid for user mounts) unless the "uid=" | ||
281 | (gid) mount option is specified. Also note that permission | ||
282 | checks (authorization checks) on accesses to a file occur | ||
283 | at the server, but there are cases in which an administrator | ||
284 | may want to restrict at the client as well. For those | ||
285 | servers which do not report a uid/gid owner | ||
286 | (such as Windows), permissions can also be checked at the | ||
287 | client, and a crude form of client side permission checking | ||
288 | can be enabled by specifying file_mode and dir_mode on | ||
289 | the client. (default) | ||
290 | forcegid (similar to above but for the groupid instead of uid) (default) | ||
291 | noforceuid Fill in file owner information (uid) by requesting it from | ||
292 | the server if possible. With this option, the value given in | ||
293 | the uid= option (on mount) will only be used if the server | ||
294 | can not support returning uids on inodes. | ||
295 | noforcegid (similar to above but for the group owner, gid, instead of uid) | ||
296 | uid Set the default uid for inodes, and indicate to the | ||
297 | cifs kernel driver which local user mounted. If the server | ||
298 | supports the unix extensions the default uid is | ||
299 | not used to fill in the owner fields of inodes (files) | ||
300 | unless the "forceuid" parameter is specified. | ||
301 | gid Set the default gid for inodes (similar to above). | ||
302 | file_mode If CIFS Unix extensions are not supported by the server | ||
303 | this overrides the default mode for file inodes. | ||
304 | fsc Enable local disk caching using FS-Cache (off by default). This | ||
305 | option could be useful to improve performance on a slow link, | ||
306 | heavily loaded server and/or network where reading from the | ||
307 | disk is faster than reading from the server (over the network). | ||
308 | This could also impact scalability positively as the | ||
309 | number of calls to the server are reduced. However, local | ||
310 | caching is not suitable for all workloads for e.g. read-once | ||
311 | type workloads. So, you need to consider carefully your | ||
312 | workload/scenario before using this option. Currently, local | ||
313 | disk caching is functional for CIFS files opened as read-only. | ||
314 | dir_mode If CIFS Unix extensions are not supported by the server | ||
315 | this overrides the default mode for directory inodes. | ||
316 | port attempt to contact the server on this tcp port, before | ||
317 | trying the usual ports (port 445, then 139). | ||
318 | iocharset Codepage used to convert local path names to and from | ||
319 | Unicode. Unicode is used by default for network path | ||
320 | names if the server supports it. If iocharset is | ||
321 | not specified then the nls_default specified | ||
322 | during the local client kernel build will be used. | ||
323 | If server does not support Unicode, this parameter is | ||
324 | unused. | ||
325 | rsize default read size (usually 16K). The client currently | ||
326 | can not use rsize larger than CIFSMaxBufSize. CIFSMaxBufSize | ||
327 | defaults to 16K and may be changed (from 8K to the maximum | ||
328 | kmalloc size allowed by your kernel) at module install time | ||
329 | for cifs.ko. Setting CIFSMaxBufSize to a very large value | ||
330 | will cause cifs to use more memory and may reduce performance | ||
331 | in some cases. To use rsize greater than 127K (the original | ||
332 | cifs protocol maximum) also requires that the server support | ||
333 | a new Unix Capability flag (for very large read) which some | ||
334 | newer servers (e.g. Samba 3.0.26 or later) do. rsize can be | ||
335 | set from a minimum of 2048 to a maximum of 130048 (127K or | ||
336 | CIFSMaxBufSize, whichever is smaller) | ||
337 | wsize default write size (default 57344) | ||
338 | maximum wsize currently allowed by CIFS is 57344 (fourteen | ||
339 | 4096 byte pages) | ||
340 | actimeo=n attribute cache timeout in seconds (default 1 second). | ||
341 | After this timeout, the cifs client requests fresh attribute | ||
342 | information from the server. This option allows to tune the | ||
343 | attribute cache timeout to suit the workload needs. Shorter | ||
344 | timeouts mean better the cache coherency, but increased number | ||
345 | of calls to the server. Longer timeouts mean reduced number | ||
346 | of calls to the server at the expense of less stricter cache | ||
347 | coherency checks (i.e. incorrect attribute cache for a short | ||
348 | period of time). | ||
349 | rw mount the network share read-write (note that the | ||
350 | server may still consider the share read-only) | ||
351 | ro mount network share read-only | ||
352 | version used to distinguish different versions of the | ||
353 | mount helper utility (not typically needed) | ||
354 | sep if first mount option (after the -o), overrides | ||
355 | the comma as the separator between the mount | ||
356 | parms. e.g. | ||
357 | -o user=myname,password=mypassword,domain=mydom | ||
358 | could be passed instead with period as the separator by | ||
359 | -o sep=.user=myname.password=mypassword.domain=mydom | ||
360 | this might be useful when comma is contained within username | ||
361 | or password or domain. This option is less important | ||
362 | when the cifs mount helper cifs.mount (version 1.1 or later) | ||
363 | is used. | ||
364 | nosuid Do not allow remote executables with the suid bit | ||
365 | program to be executed. This is only meaningful for mounts | ||
366 | to servers such as Samba which support the CIFS Unix Extensions. | ||
367 | If you do not trust the servers in your network (your mount | ||
368 | targets) it is recommended that you specify this option for | ||
369 | greater security. | ||
370 | exec Permit execution of binaries on the mount. | ||
371 | noexec Do not permit execution of binaries on the mount. | ||
372 | dev Recognize block devices on the remote mount. | ||
373 | nodev Do not recognize devices on the remote mount. | ||
374 | suid Allow remote files on this mountpoint with suid enabled to | ||
375 | be executed (default for mounts when executed as root, | ||
376 | nosuid is default for user mounts). | ||
377 | credentials Although ignored by the cifs kernel component, it is used by | ||
378 | the mount helper, mount.cifs. When mount.cifs is installed it | ||
379 | opens and reads the credential file specified in order | ||
380 | to obtain the userid and password arguments which are passed to | ||
381 | the cifs vfs. | ||
382 | guest Although ignored by the kernel component, the mount.cifs | ||
383 | mount helper will not prompt the user for a password | ||
384 | if guest is specified on the mount options. If no | ||
385 | password is specified a null password will be used. | ||
386 | perm Client does permission checks (vfs_permission check of uid | ||
387 | and gid of the file against the mode and desired operation), | ||
388 | Note that this is in addition to the normal ACL check on the | ||
389 | target machine done by the server software. | ||
390 | Client permission checking is enabled by default. | ||
391 | noperm Client does not do permission checks. This can expose | ||
392 | files on this mount to access by other users on the local | ||
393 | client system. It is typically only needed when the server | ||
394 | supports the CIFS Unix Extensions but the UIDs/GIDs on the | ||
395 | client and server system do not match closely enough to allow | ||
396 | access by the user doing the mount, but it may be useful with | ||
397 | non CIFS Unix Extension mounts for cases in which the default | ||
398 | mode is specified on the mount but is not to be enforced on the | ||
399 | client (e.g. perhaps when MultiUserMount is enabled) | ||
400 | Note that this does not affect the normal ACL check on the | ||
401 | target machine done by the server software (of the server | ||
402 | ACL against the user name provided at mount time). | ||
403 | serverino Use server's inode numbers instead of generating automatically | ||
404 | incrementing inode numbers on the client. Although this will | ||
405 | make it easier to spot hardlinked files (as they will have | ||
406 | the same inode numbers) and inode numbers may be persistent, | ||
407 | note that the server does not guarantee that the inode numbers | ||
408 | are unique if multiple server side mounts are exported under a | ||
409 | single share (since inode numbers on the servers might not | ||
410 | be unique if multiple filesystems are mounted under the same | ||
411 | shared higher level directory). Note that some older | ||
412 | (e.g. pre-Windows 2000) do not support returning UniqueIDs | ||
413 | or the CIFS Unix Extensions equivalent and for those | ||
414 | this mount option will have no effect. Exporting cifs mounts | ||
415 | under nfsd requires this mount option on the cifs mount. | ||
416 | This is now the default if server supports the | ||
417 | required network operation. | ||
418 | noserverino Client generates inode numbers (rather than using the actual one | ||
419 | from the server). These inode numbers will vary after | ||
420 | unmount or reboot which can confuse some applications, | ||
421 | but not all server filesystems support unique inode | ||
422 | numbers. | ||
423 | setuids If the CIFS Unix extensions are negotiated with the server | ||
424 | the client will attempt to set the effective uid and gid of | ||
425 | the local process on newly created files, directories, and | ||
426 | devices (create, mkdir, mknod). If the CIFS Unix Extensions | ||
427 | are not negotiated, for newly created files and directories | ||
428 | instead of using the default uid and gid specified on | ||
429 | the mount, cache the new file's uid and gid locally which means | ||
430 | that the uid for the file can change when the inode is | ||
431 | reloaded (or the user remounts the share). | ||
432 | nosetuids The client will not attempt to set the uid and gid on | ||
433 | on newly created files, directories, and devices (create, | ||
434 | mkdir, mknod) which will result in the server setting the | ||
435 | uid and gid to the default (usually the server uid of the | ||
436 | user who mounted the share). Letting the server (rather than | ||
437 | the client) set the uid and gid is the default. If the CIFS | ||
438 | Unix Extensions are not negotiated then the uid and gid for | ||
439 | new files will appear to be the uid (gid) of the mounter or the | ||
440 | uid (gid) parameter specified on the mount. | ||
441 | netbiosname When mounting to servers via port 139, specifies the RFC1001 | ||
442 | source name to use to represent the client netbios machine | ||
443 | name when doing the RFC1001 netbios session initialize. | ||
444 | direct Do not do inode data caching on files opened on this mount. | ||
445 | This precludes mmapping files on this mount. In some cases | ||
446 | with fast networks and little or no caching benefits on the | ||
447 | client (e.g. when the application is doing large sequential | ||
448 | reads bigger than page size without rereading the same data) | ||
449 | this can provide better performance than the default | ||
450 | behavior which caches reads (readahead) and writes | ||
451 | (writebehind) through the local Linux client pagecache | ||
452 | if oplock (caching token) is granted and held. Note that | ||
453 | direct allows write operations larger than page size | ||
454 | to be sent to the server. | ||
455 | strictcache Use for switching on strict cache mode. In this mode the | ||
456 | client read from the cache all the time it has Oplock Level II, | ||
457 | otherwise - read from the server. All written data are stored | ||
458 | in the cache, but if the client doesn't have Exclusive Oplock, | ||
459 | it writes the data to the server. | ||
460 | rwpidforward Forward pid of a process who opened a file to any read or write | ||
461 | operation on that file. This prevent applications like WINE | ||
462 | from failing on read and write if we use mandatory brlock style. | ||
463 | acl Allow setfacl and getfacl to manage posix ACLs if server | ||
464 | supports them. (default) | ||
465 | noacl Do not allow setfacl and getfacl calls on this mount | ||
466 | user_xattr Allow getting and setting user xattrs (those attributes whose | ||
467 | name begins with "user." or "os2.") as OS/2 EAs (extended | ||
468 | attributes) to the server. This allows support of the | ||
469 | setfattr and getfattr utilities. (default) | ||
470 | nouser_xattr Do not allow getfattr/setfattr to get/set/list xattrs | ||
471 | mapchars Translate six of the seven reserved characters (not backslash) | ||
472 | *?<>|: | ||
473 | to the remap range (above 0xF000), which also | ||
474 | allows the CIFS client to recognize files created with | ||
475 | such characters by Windows's POSIX emulation. This can | ||
476 | also be useful when mounting to most versions of Samba | ||
477 | (which also forbids creating and opening files | ||
478 | whose names contain any of these seven characters). | ||
479 | This has no effect if the server does not support | ||
480 | Unicode on the wire. | ||
481 | nomapchars Do not translate any of these seven characters (default). | ||
482 | nocase Request case insensitive path name matching (case | ||
483 | sensitive is the default if the server supports it). | ||
484 | (mount option "ignorecase" is identical to "nocase") | ||
485 | posixpaths If CIFS Unix extensions are supported, attempt to | ||
486 | negotiate posix path name support which allows certain | ||
487 | characters forbidden in typical CIFS filenames, without | ||
488 | requiring remapping. (default) | ||
489 | noposixpaths If CIFS Unix extensions are supported, do not request | ||
490 | posix path name support (this may cause servers to | ||
491 | reject creatingfile with certain reserved characters). | ||
492 | nounix Disable the CIFS Unix Extensions for this mount (tree | ||
493 | connection). This is rarely needed, but it may be useful | ||
494 | in order to turn off multiple settings all at once (ie | ||
495 | posix acls, posix locks, posix paths, symlink support | ||
496 | and retrieving uids/gids/mode from the server) or to | ||
497 | work around a bug in server which implement the Unix | ||
498 | Extensions. | ||
499 | nobrl Do not send byte range lock requests to the server. | ||
500 | This is necessary for certain applications that break | ||
501 | with cifs style mandatory byte range locks (and most | ||
502 | cifs servers do not yet support requesting advisory | ||
503 | byte range locks). | ||
504 | forcemandatorylock Even if the server supports posix (advisory) byte range | ||
505 | locking, send only mandatory lock requests. For some | ||
506 | (presumably rare) applications, originally coded for | ||
507 | DOS/Windows, which require Windows style mandatory byte range | ||
508 | locking, they may be able to take advantage of this option, | ||
509 | forcing the cifs client to only send mandatory locks | ||
510 | even if the cifs server would support posix advisory locks. | ||
511 | "forcemand" is accepted as a shorter form of this mount | ||
512 | option. | ||
513 | nostrictsync If this mount option is set, when an application does an | ||
514 | fsync call then the cifs client does not send an SMB Flush | ||
515 | to the server (to force the server to write all dirty data | ||
516 | for this file immediately to disk), although cifs still sends | ||
517 | all dirty (cached) file data to the server and waits for the | ||
518 | server to respond to the write. Since SMB Flush can be | ||
519 | very slow, and some servers may be reliable enough (to risk | ||
520 | delaying slightly flushing the data to disk on the server), | ||
521 | turning on this option may be useful to improve performance for | ||
522 | applications that fsync too much, at a small risk of server | ||
523 | crash. If this mount option is not set, by default cifs will | ||
524 | send an SMB flush request (and wait for a response) on every | ||
525 | fsync call. | ||
526 | nodfs Disable DFS (global name space support) even if the | ||
527 | server claims to support it. This can help work around | ||
528 | a problem with parsing of DFS paths with Samba server | ||
529 | versions 3.0.24 and 3.0.25. | ||
530 | remount remount the share (often used to change from ro to rw mounts | ||
531 | or vice versa) | ||
532 | cifsacl Report mode bits (e.g. on stat) based on the Windows ACL for | ||
533 | the file. (EXPERIMENTAL) | ||
534 | servern Specify the server 's netbios name (RFC1001 name) to use | ||
535 | when attempting to setup a session to the server. | ||
536 | This is needed for mounting to some older servers (such | ||
537 | as OS/2 or Windows 98 and Windows ME) since they do not | ||
538 | support a default server name. A server name can be up | ||
539 | to 15 characters long and is usually uppercased. | ||
540 | sfu When the CIFS Unix Extensions are not negotiated, attempt to | ||
541 | create device files and fifos in a format compatible with | ||
542 | Services for Unix (SFU). In addition retrieve bits 10-12 | ||
543 | of the mode via the SETFILEBITS extended attribute (as | ||
544 | SFU does). In the future the bottom 9 bits of the | ||
545 | mode also will be emulated using queries of the security | ||
546 | descriptor (ACL). | ||
547 | mfsymlinks Enable support for Minshall+French symlinks | ||
548 | (see http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks) | ||
549 | This option is ignored when specified together with the | ||
550 | 'sfu' option. Minshall+French symlinks are used even if | ||
551 | the server supports the CIFS Unix Extensions. | ||
552 | sign Must use packet signing (helps avoid unwanted data modification | ||
553 | by intermediate systems in the route). Note that signing | ||
554 | does not work with lanman or plaintext authentication. | ||
555 | seal Must seal (encrypt) all data on this mounted share before | ||
556 | sending on the network. Requires support for Unix Extensions. | ||
557 | Note that this differs from the sign mount option in that it | ||
558 | causes encryption of data sent over this mounted share but other | ||
559 | shares mounted to the same server are unaffected. | ||
560 | locallease This option is rarely needed. Fcntl F_SETLEASE is | ||
561 | used by some applications such as Samba and NFSv4 server to | ||
562 | check to see whether a file is cacheable. CIFS has no way | ||
563 | to explicitly request a lease, but can check whether a file | ||
564 | is cacheable (oplocked). Unfortunately, even if a file | ||
565 | is not oplocked, it could still be cacheable (ie cifs client | ||
566 | could grant fcntl leases if no other local processes are using | ||
567 | the file) for cases for example such as when the server does not | ||
568 | support oplocks and the user is sure that the only updates to | ||
569 | the file will be from this client. Specifying this mount option | ||
570 | will allow the cifs client to check for leases (only) locally | ||
571 | for files which are not oplocked instead of denying leases | ||
572 | in that case. (EXPERIMENTAL) | ||
573 | sec Security mode. Allowed values are: | ||
574 | none attempt to connection as a null user (no name) | ||
575 | krb5 Use Kerberos version 5 authentication | ||
576 | krb5i Use Kerberos authentication and packet signing | ||
577 | ntlm Use NTLM password hashing (default) | ||
578 | ntlmi Use NTLM password hashing with signing (if | ||
579 | /proc/fs/cifs/PacketSigningEnabled on or if | ||
580 | server requires signing also can be the default) | ||
581 | ntlmv2 Use NTLMv2 password hashing | ||
582 | ntlmv2i Use NTLMv2 password hashing with packet signing | ||
583 | lanman (if configured in kernel config) use older | ||
584 | lanman hash | ||
585 | hard Retry file operations if server is not responding | ||
586 | soft Limit retries to unresponsive servers (usually only | ||
587 | one retry) before returning an error. (default) | ||
588 | |||
589 | The mount.cifs mount helper also accepts a few mount options before -o | ||
590 | including: | ||
591 | |||
592 | -S take password from stdin (equivalent to setting the environment | ||
593 | variable "PASSWD_FD=0" | ||
594 | -V print mount.cifs version | ||
595 | -? display simple usage information | ||
596 | |||
597 | With most 2.6 kernel versions of modutils, the version of the cifs kernel | ||
598 | module can be displayed via modinfo. | ||
599 | |||
600 | Misc /proc/fs/cifs Flags and Debug Info | ||
601 | ======================================= | ||
602 | Informational pseudo-files: | ||
603 | DebugData Displays information about active CIFS sessions and | ||
604 | shares, features enabled as well as the cifs.ko | ||
605 | version. | ||
606 | Stats Lists summary resource usage information as well as per | ||
607 | share statistics, if CONFIG_CIFS_STATS in enabled | ||
608 | in the kernel configuration. | ||
609 | |||
610 | Configuration pseudo-files: | ||
611 | PacketSigningEnabled If set to one, cifs packet signing is enabled | ||
612 | and will be used if the server requires | ||
613 | it. If set to two, cifs packet signing is | ||
614 | required even if the server considers packet | ||
615 | signing optional. (default 1) | ||
616 | SecurityFlags Flags which control security negotiation and | ||
617 | also packet signing. Authentication (may/must) | ||
618 | flags (e.g. for NTLM and/or NTLMv2) may be combined with | ||
619 | the signing flags. Specifying two different password | ||
620 | hashing mechanisms (as "must use") on the other hand | ||
621 | does not make much sense. Default flags are | ||
622 | 0x07007 | ||
623 | (NTLM, NTLMv2 and packet signing allowed). The maximum | ||
624 | allowable flags if you want to allow mounts to servers | ||
625 | using weaker password hashes is 0x37037 (lanman, | ||
626 | plaintext, ntlm, ntlmv2, signing allowed). Some | ||
627 | SecurityFlags require the corresponding menuconfig | ||
628 | options to be enabled (lanman and plaintext require | ||
629 | CONFIG_CIFS_WEAK_PW_HASH for example). Enabling | ||
630 | plaintext authentication currently requires also | ||
631 | enabling lanman authentication in the security flags | ||
632 | because the cifs module only supports sending | ||
633 | laintext passwords using the older lanman dialect | ||
634 | form of the session setup SMB. (e.g. for authentication | ||
635 | using plain text passwords, set the SecurityFlags | ||
636 | to 0x30030): | ||
637 | |||
638 | may use packet signing 0x00001 | ||
639 | must use packet signing 0x01001 | ||
640 | may use NTLM (most common password hash) 0x00002 | ||
641 | must use NTLM 0x02002 | ||
642 | may use NTLMv2 0x00004 | ||
643 | must use NTLMv2 0x04004 | ||
644 | may use Kerberos security 0x00008 | ||
645 | must use Kerberos 0x08008 | ||
646 | may use lanman (weak) password hash 0x00010 | ||
647 | must use lanman password hash 0x10010 | ||
648 | may use plaintext passwords 0x00020 | ||
649 | must use plaintext passwords 0x20020 | ||
650 | (reserved for future packet encryption) 0x00040 | ||
651 | |||
652 | cifsFYI If set to non-zero value, additional debug information | ||
653 | will be logged to the system error log. This field | ||
654 | contains three flags controlling different classes of | ||
655 | debugging entries. The maximum value it can be set | ||
656 | to is 7 which enables all debugging points (default 0). | ||
657 | Some debugging statements are not compiled into the | ||
658 | cifs kernel unless CONFIG_CIFS_DEBUG2 is enabled in the | ||
659 | kernel configuration. cifsFYI may be set to one or | ||
660 | nore of the following flags (7 sets them all): | ||
661 | |||
662 | log cifs informational messages 0x01 | ||
663 | log return codes from cifs entry points 0x02 | ||
664 | log slow responses (ie which take longer than 1 second) | ||
665 | CONFIG_CIFS_STATS2 must be enabled in .config 0x04 | ||
666 | |||
667 | |||
668 | traceSMB If set to one, debug information is logged to the | ||
669 | system error log with the start of smb requests | ||
670 | and responses (default 0) | ||
671 | LookupCacheEnable If set to one, inode information is kept cached | ||
672 | for one second improving performance of lookups | ||
673 | (default 1) | ||
674 | OplockEnabled If set to one, safe distributed caching enabled. | ||
675 | (default 1) | ||
676 | LinuxExtensionsEnabled If set to one then the client will attempt to | ||
677 | use the CIFS "UNIX" extensions which are optional | ||
678 | protocol enhancements that allow CIFS servers | ||
679 | to return accurate UID/GID information as well | ||
680 | as support symbolic links. If you use servers | ||
681 | such as Samba that support the CIFS Unix | ||
682 | extensions but do not want to use symbolic link | ||
683 | support and want to map the uid and gid fields | ||
684 | to values supplied at mount (rather than the | ||
685 | actual values, then set this to zero. (default 1) | ||
686 | |||
687 | These experimental features and tracing can be enabled by changing flags in | ||
688 | /proc/fs/cifs (after the cifs module has been installed or built into the | ||
689 | kernel, e.g. insmod cifs). To enable a feature set it to 1 e.g. to enable | ||
690 | tracing to the kernel message log type: | ||
691 | |||
692 | echo 7 > /proc/fs/cifs/cifsFYI | ||
693 | |||
694 | cifsFYI functions as a bit mask. Setting it to 1 enables additional kernel | ||
695 | logging of various informational messages. 2 enables logging of non-zero | ||
696 | SMB return codes while 4 enables logging of requests that take longer | ||
697 | than one second to complete (except for byte range lock requests). | ||
698 | Setting it to 4 requires defining CONFIG_CIFS_STATS2 manually in the | ||
699 | source code (typically by setting it in the beginning of cifsglob.h), | ||
700 | and setting it to seven enables all three. Finally, tracing | ||
701 | the start of smb requests and responses can be enabled via: | ||
702 | |||
703 | echo 1 > /proc/fs/cifs/traceSMB | ||
704 | |||
705 | Per share (per client mount) statistics are available in /proc/fs/cifs/Stats | ||
706 | if the kernel was configured with cifs statistics enabled. The statistics | ||
707 | represent the number of successful (ie non-zero return code from the server) | ||
708 | SMB responses to some of the more common commands (open, delete, mkdir etc.). | ||
709 | Also recorded is the total bytes read and bytes written to the server for | ||
710 | that share. Note that due to client caching effects this can be less than the | ||
711 | number of bytes read and written by the application running on the client. | ||
712 | The statistics for the number of total SMBs and oplock breaks are different in | ||
713 | that they represent all for that share, not just those for which the server | ||
714 | returned success. | ||
715 | |||
716 | Also note that "cat /proc/fs/cifs/DebugData" will display information about | ||
717 | the active sessions and the shares that are mounted. | ||
718 | |||
719 | Enabling Kerberos (extended security) works but requires version 1.2 or later | ||
720 | of the helper program cifs.upcall to be present and to be configured in the | ||
721 | /etc/request-key.conf file. The cifs.upcall helper program is from the Samba | ||
722 | project(http://www.samba.org). NTLM and NTLMv2 and LANMAN support do not | ||
723 | require this helper. Note that NTLMv2 security (which does not require the | ||
724 | cifs.upcall helper program), instead of using Kerberos, is sufficient for | ||
725 | some use cases. | ||
726 | |||
727 | DFS support allows transparent redirection to shares in an MS-DFS name space. | ||
728 | In addition, DFS support for target shares which are specified as UNC | ||
729 | names which begin with host names (rather than IP addresses) requires | ||
730 | a user space helper (such as cifs.upcall) to be present in order to | ||
731 | translate host names to ip address, and the user space helper must also | ||
732 | be configured in the file /etc/request-key.conf. Samba, Windows servers and | ||
733 | many NAS appliances support DFS as a way of constructing a global name | ||
734 | space to ease network configuration and improve reliability. | ||
735 | |||
736 | To use cifs Kerberos and DFS support, the Linux keyutils package should be | ||
737 | installed and something like the following lines should be added to the | ||
738 | /etc/request-key.conf file: | ||
739 | |||
740 | create cifs.spnego * * /usr/local/sbin/cifs.upcall %k | ||
741 | create dns_resolver * * /usr/local/sbin/cifs.upcall %k | ||
742 | |||
743 | CIFS kernel module parameters | ||
744 | ============================= | ||
745 | These module parameters can be specified or modified either during the time of | ||
746 | module loading or during the runtime by using the interface | ||
747 | /proc/module/cifs/parameters/<param> | ||
748 | |||
749 | i.e. echo "value" > /sys/module/cifs/parameters/<param> | ||
750 | |||
751 | 1. enable_oplocks - Enable or disable oplocks. Oplocks are enabled by default. | ||
752 | [Y/y/1]. To disable use any of [N/n/0]. | ||
753 | |||
diff --git a/Documentation/filesystems/cifs/TODO b/Documentation/filesystems/cifs/TODO new file mode 100644 index 000000000000..355abcdcda98 --- /dev/null +++ b/Documentation/filesystems/cifs/TODO | |||
@@ -0,0 +1,129 @@ | |||
1 | Version 1.53 May 20, 2008 | ||
2 | |||
3 | A Partial List of Missing Features | ||
4 | ================================== | ||
5 | |||
6 | Contributions are welcome. There are plenty of opportunities | ||
7 | for visible, important contributions to this module. Here | ||
8 | is a partial list of the known problems and missing features: | ||
9 | |||
10 | a) Support for SecurityDescriptors(Windows/CIFS ACLs) for chmod/chgrp/chown | ||
11 | so that these operations can be supported to Windows servers | ||
12 | |||
13 | b) Mapping POSIX ACLs (and eventually NFSv4 ACLs) to CIFS | ||
14 | SecurityDescriptors | ||
15 | |||
16 | c) Better pam/winbind integration (e.g. to handle uid mapping | ||
17 | better) | ||
18 | |||
19 | d) Cleanup now unneeded SessSetup code in | ||
20 | fs/cifs/connect.c and add back in NTLMSSP code if any servers | ||
21 | need it | ||
22 | |||
23 | e) fix NTLMv2 signing when two mounts with different users to same | ||
24 | server. | ||
25 | |||
26 | f) Directory entry caching relies on a 1 second timer, rather than | ||
27 | using FindNotify or equivalent. - (started) | ||
28 | |||
29 | g) quota support (needs minor kernel change since quota calls | ||
30 | to make it to network filesystems or deviceless filesystems) | ||
31 | |||
32 | h) investigate sync behavior (including syncpage) and check | ||
33 | for proper behavior of intr/nointr | ||
34 | |||
35 | i) improve support for very old servers (OS/2 and Win9x for example) | ||
36 | Including support for changing the time remotely (utimes command). | ||
37 | |||
38 | j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the | ||
39 | extra copy in/out of the socket buffers in some cases. | ||
40 | |||
41 | k) Better optimize open (and pathbased setfilesize) to reduce the | ||
42 | oplock breaks coming from windows srv. Piggyback identical file | ||
43 | opens on top of each other by incrementing reference count rather | ||
44 | than resending (helps reduce server resource utilization and avoid | ||
45 | spurious oplock breaks). | ||
46 | |||
47 | l) Improve performance of readpages by sending more than one read | ||
48 | at a time when 8 pages or more are requested. In conjuntion | ||
49 | add support for async_cifs_readpages. | ||
50 | |||
51 | m) Add support for storing symlink info to Windows servers | ||
52 | in the Extended Attribute format their SFU clients would recognize. | ||
53 | |||
54 | n) Finish fcntl D_NOTIFY support so kde and gnome file list windows | ||
55 | will autorefresh (partially complete by Asser). Needs minor kernel | ||
56 | vfs change to support removing D_NOTIFY on a file. | ||
57 | |||
58 | o) Add GUI tool to configure /proc/fs/cifs settings and for display of | ||
59 | the CIFS statistics (started) | ||
60 | |||
61 | p) implement support for security and trusted categories of xattrs | ||
62 | (requires minor protocol extension) to enable better support for SELINUX | ||
63 | |||
64 | q) Implement O_DIRECT flag on open (already supported on mount) | ||
65 | |||
66 | r) Create UID mapping facility so server UIDs can be mapped on a per | ||
67 | mount or a per server basis to client UIDs or nobody if no mapping | ||
68 | exists. This is helpful when Unix extensions are negotiated to | ||
69 | allow better permission checking when UIDs differ on the server | ||
70 | and client. Add new protocol request to the CIFS protocol | ||
71 | standard for asking the server for the corresponding name of a | ||
72 | particular uid. | ||
73 | |||
74 | s) Add support for CIFS Unix and also the newer POSIX extensions to the | ||
75 | server side for Samba 4. | ||
76 | |||
77 | t) In support for OS/2 (LANMAN 1.2 and LANMAN2.1 based SMB servers) | ||
78 | need to add ability to set time to server (utimes command) | ||
79 | |||
80 | u) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for this too) | ||
81 | |||
82 | v) mount check for unmatched uids | ||
83 | |||
84 | w) Add support for new vfs entry point for fallocate | ||
85 | |||
86 | x) Fix Samba 3 server to handle Linux kernel aio so dbench with lots of | ||
87 | processes can proceed better in parallel (on the server) | ||
88 | |||
89 | y) Fix Samba 3 to handle reads/writes over 127K (and remove the cifs mount | ||
90 | restriction of wsize max being 127K) | ||
91 | |||
92 | KNOWN BUGS (updated April 24, 2007) | ||
93 | ==================================== | ||
94 | See http://bugzilla.samba.org - search on product "CifsVFS" for | ||
95 | current bug list. | ||
96 | |||
97 | 1) existing symbolic links (Windows reparse points) are recognized but | ||
98 | can not be created remotely. They are implemented for Samba and those that | ||
99 | support the CIFS Unix extensions, although earlier versions of Samba | ||
100 | overly restrict the pathnames. | ||
101 | 2) follow_link and readdir code does not follow dfs junctions | ||
102 | but recognizes them | ||
103 | 3) create of new files to FAT partitions on Windows servers can | ||
104 | succeed but still return access denied (appears to be Windows | ||
105 | server not cifs client problem) and has not been reproduced recently. | ||
106 | NTFS partitions do not have this problem. | ||
107 | 4) Unix/POSIX capabilities are reset after reconnection, and affect | ||
108 | a few fields in the tree connection but we do do not know which | ||
109 | superblocks to apply these changes to. We should probably walk | ||
110 | the list of superblocks to set these. Also need to check the | ||
111 | flags on the second mount to the same share, and see if we | ||
112 | can do the same trick that NFS does to remount duplicate shares. | ||
113 | |||
114 | Misc testing to do | ||
115 | ================== | ||
116 | 1) check out max path names and max path name components against various server | ||
117 | types. Try nested symlinks (8 deep). Return max path name in stat -f information | ||
118 | |||
119 | 2) Modify file portion of ltp so it can run against a mounted network | ||
120 | share and run it against cifs vfs in automated fashion. | ||
121 | |||
122 | 3) Additional performance testing and optimization using iozone and similar - | ||
123 | there are some easy changes that can be done to parallelize sequential writes, | ||
124 | and when signing is disabled to request larger read sizes (larger than | ||
125 | negotiated size) and send larger write sizes to modern servers. | ||
126 | |||
127 | 4) More exhaustively test against less common servers. More testing | ||
128 | against Windows 9x, Windows ME servers. | ||
129 | |||
diff --git a/Documentation/filesystems/cifs/cifs.txt b/Documentation/filesystems/cifs/cifs.txt new file mode 100644 index 000000000000..2fac91ac96cf --- /dev/null +++ b/Documentation/filesystems/cifs/cifs.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | This is the client VFS module for the Common Internet File System | ||
2 | (CIFS) protocol which is the successor to the Server Message Block | ||
3 | (SMB) protocol, the native file sharing mechanism for most early | ||
4 | PC operating systems. New and improved versions of CIFS are now | ||
5 | called SMB2 and SMB3. These dialects are also supported by the | ||
6 | CIFS VFS module. CIFS is fully supported by network | ||
7 | file servers such as Windows 2000, 2003, 2008 and 2012 | ||
8 | as well by Samba (which provides excellent CIFS | ||
9 | server support for Linux and many other operating systems), so | ||
10 | this network filesystem client can mount to a wide variety of | ||
11 | servers. | ||
12 | |||
13 | The intent of this module is to provide the most advanced network | ||
14 | file system function for CIFS compliant servers, including better | ||
15 | POSIX compliance, secure per-user session establishment, high | ||
16 | performance safe distributed caching (oplock), optional packet | ||
17 | signing, large files, Unicode support and other internationalization | ||
18 | improvements. Since both Samba server and this filesystem client support | ||
19 | the CIFS Unix extensions, the combination can provide a reasonable | ||
20 | alternative to NFSv4 for fileserving in some Linux to Linux environments, | ||
21 | not just in Linux to Windows environments. | ||
22 | |||
23 | This filesystem has an mount utility (mount.cifs) that can be obtained from | ||
24 | |||
25 | https://ftp.samba.org/pub/linux-cifs/cifs-utils/ | ||
26 | |||
27 | It must be installed in the directory with the other mount helpers. | ||
28 | |||
29 | For more information on the module see the project wiki page at | ||
30 | |||
31 | https://wiki.samba.org/index.php/LinuxCIFS_utils | ||
diff --git a/Documentation/filesystems/cifs/winucase_convert.pl b/Documentation/filesystems/cifs/winucase_convert.pl new file mode 100755 index 000000000000..322a9c833f23 --- /dev/null +++ b/Documentation/filesystems/cifs/winucase_convert.pl | |||
@@ -0,0 +1,62 @@ | |||
1 | #!/usr/bin/perl -w | ||
2 | # | ||
3 | # winucase_convert.pl -- convert "Windows 8 Upper Case Mapping Table.txt" to | ||
4 | # a two-level set of C arrays. | ||
5 | # | ||
6 | # Copyright 2013: Jeff Layton <jlayton@redhat.com> | ||
7 | # | ||
8 | # This program is free software: you can redistribute it and/or modify | ||
9 | # it under the terms of the GNU General Public License as published by | ||
10 | # the Free Software Foundation, either version 3 of the License, or | ||
11 | # (at your option) any later version. | ||
12 | # | ||
13 | # This program is distributed in the hope that it will be useful, | ||
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | # GNU General Public License for more details. | ||
17 | # | ||
18 | # You should have received a copy of the GNU General Public License | ||
19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
20 | # | ||
21 | |||
22 | while(<>) { | ||
23 | next if (!/^0x(..)(..)\t0x(....)\t/); | ||
24 | $firstchar = hex($1); | ||
25 | $secondchar = hex($2); | ||
26 | $uppercase = hex($3); | ||
27 | |||
28 | $top[$firstchar][$secondchar] = $uppercase; | ||
29 | } | ||
30 | |||
31 | for ($i = 0; $i < 256; $i++) { | ||
32 | next if (!$top[$i]); | ||
33 | |||
34 | printf("static const wchar_t t2_%2.2x[256] = {", $i); | ||
35 | for ($j = 0; $j < 256; $j++) { | ||
36 | if (($j % 8) == 0) { | ||
37 | print "\n\t"; | ||
38 | } else { | ||
39 | print " "; | ||
40 | } | ||
41 | printf("0x%4.4x,", $top[$i][$j] ? $top[$i][$j] : 0); | ||
42 | } | ||
43 | print "\n};\n\n"; | ||
44 | } | ||
45 | |||
46 | printf("static const wchar_t *const toplevel[256] = {", $i); | ||
47 | for ($i = 0; $i < 256; $i++) { | ||
48 | if (($i % 8) == 0) { | ||
49 | print "\n\t"; | ||
50 | } elsif ($top[$i]) { | ||
51 | print " "; | ||
52 | } else { | ||
53 | print " "; | ||
54 | } | ||
55 | |||
56 | if ($top[$i]) { | ||
57 | printf("t2_%2.2x,", $i); | ||
58 | } else { | ||
59 | print "NULL,"; | ||
60 | } | ||
61 | } | ||
62 | print "\n};\n\n"; | ||
diff --git a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt index 293855e95000..7ed0d17d6721 100644 --- a/Documentation/filesystems/ext3.txt +++ b/Documentation/filesystems/ext3.txt | |||
@@ -26,11 +26,12 @@ journal=inum When a journal already exists, this option is ignored. | |||
26 | Otherwise, it specifies the number of the inode which | 26 | Otherwise, it specifies the number of the inode which |
27 | will represent the ext3 file system's journal file. | 27 | will represent the ext3 file system's journal file. |
28 | 28 | ||
29 | journal_path=path | ||
29 | journal_dev=devnum When the external journal device's major/minor numbers | 30 | journal_dev=devnum When the external journal device's major/minor numbers |
30 | have changed, this option allows the user to specify | 31 | have changed, these options allow the user to specify |
31 | the new journal location. The journal device is | 32 | the new journal location. The journal device is |
32 | identified through its new major/minor numbers encoded | 33 | identified through either its new major/minor numbers |
33 | in devnum. | 34 | encoded in devnum, or via a path to the device. |
34 | 35 | ||
35 | norecovery Don't load the journal on mounting. Note that this forces | 36 | norecovery Don't load the journal on mounting. Note that this forces |
36 | noload mount of inconsistent filesystem, which can lead to | 37 | noload mount of inconsistent filesystem, which can lead to |
diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt index f7cbf574a875..919a3293aaa4 100644 --- a/Documentation/filesystems/ext4.txt +++ b/Documentation/filesystems/ext4.txt | |||
@@ -2,7 +2,7 @@ | |||
2 | Ext4 Filesystem | 2 | Ext4 Filesystem |
3 | =============== | 3 | =============== |
4 | 4 | ||
5 | Ext4 is an an advanced level of the ext3 filesystem which incorporates | 5 | Ext4 is an advanced level of the ext3 filesystem which incorporates |
6 | scalability and reliability enhancements for supporting large filesystems | 6 | scalability and reliability enhancements for supporting large filesystems |
7 | (64 bit) in keeping with increasing disk capacities and state-of-the-art | 7 | (64 bit) in keeping with increasing disk capacities and state-of-the-art |
8 | feature requirements. | 8 | feature requirements. |
@@ -144,11 +144,12 @@ journal_async_commit Commit block can be written to disk without waiting | |||
144 | mount the device. This will enable 'journal_checksum' | 144 | mount the device. This will enable 'journal_checksum' |
145 | internally. | 145 | internally. |
146 | 146 | ||
147 | journal_path=path | ||
147 | journal_dev=devnum When the external journal device's major/minor numbers | 148 | journal_dev=devnum When the external journal device's major/minor numbers |
148 | have changed, this option allows the user to specify | 149 | have changed, these options allow the user to specify |
149 | the new journal location. The journal device is | 150 | the new journal location. The journal device is |
150 | identified through its new major/minor numbers encoded | 151 | identified through either its new major/minor numbers |
151 | in devnum. | 152 | encoded in devnum, or via a path to the device. |
152 | 153 | ||
153 | norecovery Don't load the journal on mounting. Note that | 154 | norecovery Don't load the journal on mounting. Note that |
154 | noload if the filesystem was not unmounted cleanly, | 155 | noload if the filesystem was not unmounted cleanly, |
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt index b91e2f26b672..a3fe811bbdbc 100644 --- a/Documentation/filesystems/f2fs.txt +++ b/Documentation/filesystems/f2fs.txt | |||
@@ -18,8 +18,8 @@ according to its internal geometry or flash memory management scheme, namely FTL | |||
18 | F2FS and its tools support various parameters not only for configuring on-disk | 18 | F2FS and its tools support various parameters not only for configuring on-disk |
19 | layout, but also for selecting allocation and cleaning algorithms. | 19 | layout, but also for selecting allocation and cleaning algorithms. |
20 | 20 | ||
21 | The file system formatting tool, "mkfs.f2fs", is available from the following | 21 | The following git tree provides the file system formatting tool (mkfs.f2fs), |
22 | git tree: | 22 | a consistency checking tool (fsck.f2fs), and a debugging tool (dump.f2fs). |
23 | >> git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git | 23 | >> git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git |
24 | 24 | ||
25 | For reporting bugs and sending patches, please use the following mailing list: | 25 | For reporting bugs and sending patches, please use the following mailing list: |
@@ -119,6 +119,7 @@ active_logs=%u Support configuring the number of active logs. In the | |||
119 | Default number is 6. | 119 | Default number is 6. |
120 | disable_ext_identify Disable the extension list configured by mkfs, so f2fs | 120 | disable_ext_identify Disable the extension list configured by mkfs, so f2fs |
121 | does not aware of cold files such as media files. | 121 | does not aware of cold files such as media files. |
122 | inline_xattr Enable the inline xattrs feature. | ||
122 | 123 | ||
123 | ================================================================================ | 124 | ================================================================================ |
124 | DEBUGFS ENTRIES | 125 | DEBUGFS ENTRIES |
@@ -133,6 +134,44 @@ f2fs. Each file shows the whole f2fs information. | |||
133 | - current memory footprint consumed by f2fs. | 134 | - current memory footprint consumed by f2fs. |
134 | 135 | ||
135 | ================================================================================ | 136 | ================================================================================ |
137 | SYSFS ENTRIES | ||
138 | ================================================================================ | ||
139 | |||
140 | Information about mounted f2f2 file systems can be found in | ||
141 | /sys/fs/f2fs. Each mounted filesystem will have a directory in | ||
142 | /sys/fs/f2fs based on its device name (i.e., /sys/fs/f2fs/sda). | ||
143 | The files in each per-device directory are shown in table below. | ||
144 | |||
145 | Files in /sys/fs/f2fs/<devname> | ||
146 | (see also Documentation/ABI/testing/sysfs-fs-f2fs) | ||
147 | .............................................................................. | ||
148 | File Content | ||
149 | |||
150 | gc_max_sleep_time This tuning parameter controls the maximum sleep | ||
151 | time for the garbage collection thread. Time is | ||
152 | in milliseconds. | ||
153 | |||
154 | gc_min_sleep_time This tuning parameter controls the minimum sleep | ||
155 | time for the garbage collection thread. Time is | ||
156 | in milliseconds. | ||
157 | |||
158 | gc_no_gc_sleep_time This tuning parameter controls the default sleep | ||
159 | time for the garbage collection thread. Time is | ||
160 | in milliseconds. | ||
161 | |||
162 | gc_idle This parameter controls the selection of victim | ||
163 | policy for garbage collection. Setting gc_idle = 0 | ||
164 | (default) will disable this option. Setting | ||
165 | gc_idle = 1 will select the Cost Benefit approach | ||
166 | & setting gc_idle = 2 will select the greedy aproach. | ||
167 | |||
168 | reclaim_segments This parameter controls the number of prefree | ||
169 | segments to be reclaimed. If the number of prefree | ||
170 | segments is larger than this number, f2fs tries to | ||
171 | conduct checkpoint to reclaim the prefree segments | ||
172 | to free segments. By default, 100 segments, 200MB. | ||
173 | |||
174 | ================================================================================ | ||
136 | USAGE | 175 | USAGE |
137 | ================================================================================ | 176 | ================================================================================ |
138 | 177 | ||
@@ -149,8 +188,12 @@ USAGE | |||
149 | # mkfs.f2fs -l label /dev/block_device | 188 | # mkfs.f2fs -l label /dev/block_device |
150 | # mount -t f2fs /dev/block_device /mnt/f2fs | 189 | # mount -t f2fs /dev/block_device /mnt/f2fs |
151 | 190 | ||
152 | Format options | 191 | mkfs.f2fs |
153 | -------------- | 192 | --------- |
193 | The mkfs.f2fs is for the use of formatting a partition as the f2fs filesystem, | ||
194 | which builds a basic on-disk layout. | ||
195 | |||
196 | The options consist of: | ||
154 | -l [label] : Give a volume label, up to 512 unicode name. | 197 | -l [label] : Give a volume label, up to 512 unicode name. |
155 | -a [0 or 1] : Split start location of each area for heap-based allocation. | 198 | -a [0 or 1] : Split start location of each area for heap-based allocation. |
156 | 1 is set by default, which performs this. | 199 | 1 is set by default, which performs this. |
@@ -164,6 +207,37 @@ Format options | |||
164 | -t [0 or 1] : Disable discard command or not. | 207 | -t [0 or 1] : Disable discard command or not. |
165 | 1 is set by default, which conducts discard. | 208 | 1 is set by default, which conducts discard. |
166 | 209 | ||
210 | fsck.f2fs | ||
211 | --------- | ||
212 | The fsck.f2fs is a tool to check the consistency of an f2fs-formatted | ||
213 | partition, which examines whether the filesystem metadata and user-made data | ||
214 | are cross-referenced correctly or not. | ||
215 | Note that, initial version of the tool does not fix any inconsistency. | ||
216 | |||
217 | The options consist of: | ||
218 | -d debug level [default:0] | ||
219 | |||
220 | dump.f2fs | ||
221 | --------- | ||
222 | The dump.f2fs shows the information of specific inode and dumps SSA and SIT to | ||
223 | file. Each file is dump_ssa and dump_sit. | ||
224 | |||
225 | The dump.f2fs is used to debug on-disk data structures of the f2fs filesystem. | ||
226 | It shows on-disk inode information reconized by a given inode number, and is | ||
227 | able to dump all the SSA and SIT entries into predefined files, ./dump_ssa and | ||
228 | ./dump_sit respectively. | ||
229 | |||
230 | The options consist of: | ||
231 | -d debug level [default:0] | ||
232 | -i inode no (hex) | ||
233 | -s [SIT dump segno from #1~#2 (decimal), for all 0~-1] | ||
234 | -a [SSA dump segno from #1~#2 (decimal), for all 0~-1] | ||
235 | |||
236 | Examples: | ||
237 | # dump.f2fs -i [ino] /dev/sdx | ||
238 | # dump.f2fs -s 0~-1 /dev/sdx (SIT dump) | ||
239 | # dump.f2fs -a 0~-1 /dev/sdx (SSA dump) | ||
240 | |||
167 | ================================================================================ | 241 | ================================================================================ |
168 | DESIGN | 242 | DESIGN |
169 | ================================================================================ | 243 | ================================================================================ |
diff --git a/Documentation/filesystems/nfs/Exporting b/Documentation/filesystems/nfs/Exporting index 09994c247289..e543b1a619cc 100644 --- a/Documentation/filesystems/nfs/Exporting +++ b/Documentation/filesystems/nfs/Exporting | |||
@@ -93,7 +93,7 @@ For a filesystem to be exportable it must: | |||
93 | 2/ make sure that d_splice_alias is used rather than d_add | 93 | 2/ make sure that d_splice_alias is used rather than d_add |
94 | when ->lookup finds an inode for a given parent and name. | 94 | when ->lookup finds an inode for a given parent and name. |
95 | 95 | ||
96 | If inode is NULL, d_splice_alias(inode, dentry) is eqivalent to | 96 | If inode is NULL, d_splice_alias(inode, dentry) is equivalent to |
97 | 97 | ||
98 | d_add(dentry, inode), NULL | 98 | d_add(dentry, inode), NULL |
99 | 99 | ||
diff --git a/Documentation/filesystems/nfs/pnfs.txt b/Documentation/filesystems/nfs/pnfs.txt index 52ae07f5f578..adc81a35fe2d 100644 --- a/Documentation/filesystems/nfs/pnfs.txt +++ b/Documentation/filesystems/nfs/pnfs.txt | |||
@@ -12,7 +12,7 @@ struct pnfs_layout_hdr | |||
12 | ---------------------- | 12 | ---------------------- |
13 | The on-the-wire command LAYOUTGET corresponds to struct | 13 | The on-the-wire command LAYOUTGET corresponds to struct |
14 | pnfs_layout_segment, usually referred to by the variable name lseg. | 14 | pnfs_layout_segment, usually referred to by the variable name lseg. |
15 | Each nfs_inode may hold a pointer to a cache of of these layout | 15 | Each nfs_inode may hold a pointer to a cache of these layout |
16 | segments in nfsi->layout, of type struct pnfs_layout_hdr. | 16 | segments in nfsi->layout, of type struct pnfs_layout_hdr. |
17 | 17 | ||
18 | We reference the header for the inode pointing to it, across each | 18 | We reference the header for the inode pointing to it, across each |
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 206a1bdc7321..f0890581f7f6 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -451,3 +451,7 @@ in your dentry operations instead. | |||
451 | -- | 451 | -- |
452 | [mandatory] | 452 | [mandatory] |
453 | ->readdir() is gone now; switch to ->iterate() | 453 | ->readdir() is gone now; switch to ->iterate() |
454 | [mandatory] | ||
455 | vfs_follow_link has been removed. Filesystems must use nd_set_link | ||
456 | from ->follow_link for normal symlinks, or nd_jump_link for magic | ||
457 | /proc/<pid> style links. | ||
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index fcc22c982a25..823c95faebd2 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -854,16 +854,15 @@ Committed_AS: The amount of memory presently allocated on the system. | |||
854 | The committed memory is a sum of all of the memory which | 854 | The committed memory is a sum of all of the memory which |
855 | has been allocated by processes, even if it has not been | 855 | has been allocated by processes, even if it has not been |
856 | "used" by them as of yet. A process which malloc()'s 1G | 856 | "used" by them as of yet. A process which malloc()'s 1G |
857 | of memory, but only touches 300M of it will only show up | 857 | of memory, but only touches 300M of it will show up as |
858 | as using 300M of memory even if it has the address space | 858 | using 1G. This 1G is memory which has been "committed" to |
859 | allocated for the entire 1G. This 1G is memory which has | 859 | by the VM and can be used at any time by the allocating |
860 | been "committed" to by the VM and can be used at any time | 860 | application. With strict overcommit enabled on the system |
861 | by the allocating application. With strict overcommit | 861 | (mode 2 in 'vm.overcommit_memory'),allocations which would |
862 | enabled on the system (mode 2 in 'vm.overcommit_memory'), | 862 | exceed the CommitLimit (detailed above) will not be permitted. |
863 | allocations which would exceed the CommitLimit (detailed | 863 | This is useful if one needs to guarantee that processes will |
864 | above) will not be permitted. This is useful if one needs | 864 | not fail due to lack of memory once that memory has been |
865 | to guarantee that processes will not fail due to lack of | 865 | successfully allocated. |
866 | memory once that memory has been successfully allocated. | ||
867 | VmallocTotal: total size of vmalloc memory area | 866 | VmallocTotal: total size of vmalloc memory area |
868 | VmallocUsed: amount of vmalloc area which is used | 867 | VmallocUsed: amount of vmalloc area which is used |
869 | VmallocChunk: largest contiguous block of vmalloc area which is free | 868 | VmallocChunk: largest contiguous block of vmalloc area which is free |
diff --git a/Documentation/filesystems/qnx6.txt b/Documentation/filesystems/qnx6.txt index 99e90184a72f..408679789136 100644 --- a/Documentation/filesystems/qnx6.txt +++ b/Documentation/filesystems/qnx6.txt | |||
@@ -149,7 +149,7 @@ Bitmap system area | |||
149 | ------------------ | 149 | ------------------ |
150 | 150 | ||
151 | The bitmap itself is divided into three parts. | 151 | The bitmap itself is divided into three parts. |
152 | First the system area, that is split into two halfs. | 152 | First the system area, that is split into two halves. |
153 | Then userspace. | 153 | Then userspace. |
154 | 154 | ||
155 | The requirement for a static, fixed preallocated system area comes from how | 155 | The requirement for a static, fixed preallocated system area comes from how |
diff --git a/Documentation/filesystems/ramfs-rootfs-initramfs.txt b/Documentation/filesystems/ramfs-rootfs-initramfs.txt index 59b4a0962e0f..b176928e6963 100644 --- a/Documentation/filesystems/ramfs-rootfs-initramfs.txt +++ b/Documentation/filesystems/ramfs-rootfs-initramfs.txt | |||
@@ -79,6 +79,10 @@ to just make sure certain lists can't become empty. | |||
79 | Most systems just mount another filesystem over rootfs and ignore it. The | 79 | Most systems just mount another filesystem over rootfs and ignore it. The |
80 | amount of space an empty instance of ramfs takes up is tiny. | 80 | amount of space an empty instance of ramfs takes up is tiny. |
81 | 81 | ||
82 | If CONFIG_TMPFS is enabled, rootfs will use tmpfs instead of ramfs by | ||
83 | default. To force ramfs, add "rootfstype=ramfs" to the kernel command | ||
84 | line. | ||
85 | |||
82 | What is initramfs? | 86 | What is initramfs? |
83 | ------------------ | 87 | ------------------ |
84 | 88 | ||
diff --git a/Documentation/filesystems/relay.txt b/Documentation/filesystems/relay.txt index 510b722667ac..33e2f3694733 100644 --- a/Documentation/filesystems/relay.txt +++ b/Documentation/filesystems/relay.txt | |||
@@ -31,7 +31,7 @@ Semantics | |||
31 | 31 | ||
32 | Each relay channel has one buffer per CPU, each buffer has one or more | 32 | Each relay channel has one buffer per CPU, each buffer has one or more |
33 | sub-buffers. Messages are written to the first sub-buffer until it is | 33 | sub-buffers. Messages are written to the first sub-buffer until it is |
34 | too full to contain a new message, in which case it it is written to | 34 | too full to contain a new message, in which case it is written to |
35 | the next (if available). Messages are never split across sub-buffers. | 35 | the next (if available). Messages are never split across sub-buffers. |
36 | At this point, userspace can be notified so it empties the first | 36 | At this point, userspace can be notified so it empties the first |
37 | sub-buffer, while the kernel continues writing to the next. | 37 | sub-buffer, while the kernel continues writing to the next. |
diff --git a/Documentation/filesystems/sysfs-tagging.txt b/Documentation/filesystems/sysfs-tagging.txt index caaaf1266d8f..eb843e49c5a3 100644 --- a/Documentation/filesystems/sysfs-tagging.txt +++ b/Documentation/filesystems/sysfs-tagging.txt | |||
@@ -24,7 +24,7 @@ flag between KOBJ_NS_TYPE_NONE and KOBJ_NS_TYPES, and s_ns will | |||
24 | point to the namespace to which it belongs. | 24 | point to the namespace to which it belongs. |
25 | 25 | ||
26 | Each sysfs superblock's sysfs_super_info contains an array void | 26 | Each sysfs superblock's sysfs_super_info contains an array void |
27 | *ns[KOBJ_NS_TYPES]. When a a task in a tagging namespace | 27 | *ns[KOBJ_NS_TYPES]. When a task in a tagging namespace |
28 | kobj_nstype first mounts sysfs, a new superblock is created. It | 28 | kobj_nstype first mounts sysfs, a new superblock is created. It |
29 | will be differentiated from other sysfs mounts by having its | 29 | will be differentiated from other sysfs mounts by having its |
30 | s_fs_info->ns[kobj_nstype] set to the new namespace. Note that | 30 | s_fs_info->ns[kobj_nstype] set to the new namespace. Note that |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index f93a88250a44..deb48b5fd883 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -359,11 +359,9 @@ struct inode_operations { | |||
359 | ssize_t (*listxattr) (struct dentry *, char *, size_t); | 359 | ssize_t (*listxattr) (struct dentry *, char *, size_t); |
360 | int (*removexattr) (struct dentry *, const char *); | 360 | int (*removexattr) (struct dentry *, const char *); |
361 | void (*update_time)(struct inode *, struct timespec *, int); | 361 | void (*update_time)(struct inode *, struct timespec *, int); |
362 | int (*atomic_open)(struct inode *, struct dentry *, | 362 | int (*atomic_open)(struct inode *, struct dentry *, struct file *, |
363 | unsigned open_flag, umode_t create_mode, int *opened); | ||
363 | int (*tmpfile) (struct inode *, struct dentry *, umode_t); | 364 | int (*tmpfile) (struct inode *, struct dentry *, umode_t); |
364 | } ____cacheline_aligned; | ||
365 | struct file *, unsigned open_flag, | ||
366 | umode_t create_mode, int *opened); | ||
367 | }; | 365 | }; |
368 | 366 | ||
369 | Again, all methods are called without any locks being held, unless | 367 | Again, all methods are called without any locks being held, unless |
@@ -470,9 +468,11 @@ otherwise noted. | |||
470 | method the filesystem can look up, possibly create and open the file in | 468 | method the filesystem can look up, possibly create and open the file in |
471 | one atomic operation. If it cannot perform this (e.g. the file type | 469 | one atomic operation. If it cannot perform this (e.g. the file type |
472 | turned out to be wrong) it may signal this by returning 1 instead of | 470 | turned out to be wrong) it may signal this by returning 1 instead of |
473 | usual 0 or -ve . This method is only called if the last | 471 | usual 0 or -ve . This method is only called if the last component is |
474 | component is negative or needs lookup. Cached positive dentries are | 472 | negative or needs lookup. Cached positive dentries are still handled by |
475 | still handled by f_op->open(). | 473 | f_op->open(). If the file was created, the FILE_CREATED flag should be |
474 | set in "opened". In case of O_EXCL the method must only succeed if the | ||
475 | file didn't exist and hence FILE_CREATED shall always be set on success. | ||
476 | 476 | ||
477 | tmpfile: called in the end of O_TMPFILE open(). Optional, equivalent to | 477 | tmpfile: called in the end of O_TMPFILE open(). Optional, equivalent to |
478 | atomically creating, opening and unlinking a file in given directory. | 478 | atomically creating, opening and unlinking a file in given directory. |
diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt index 12525b17d9ed..5be51fd888bd 100644 --- a/Documentation/filesystems/xfs.txt +++ b/Documentation/filesystems/xfs.txt | |||
@@ -135,7 +135,7 @@ default behaviour. | |||
135 | If the memory cost of 8 log buffers is too high on small | 135 | If the memory cost of 8 log buffers is too high on small |
136 | systems, then it may be reduced at some cost to performance | 136 | systems, then it may be reduced at some cost to performance |
137 | on metadata intensive workloads. The logbsize option below | 137 | on metadata intensive workloads. The logbsize option below |
138 | controls the size of each buffer and so is also relevent to | 138 | controls the size of each buffer and so is also relevant to |
139 | this case. | 139 | this case. |
140 | 140 | ||
141 | logbsize=value | 141 | logbsize=value |
diff --git a/Documentation/fmc/carrier.txt b/Documentation/fmc/carrier.txt index 173f6d65c88d..5e4f1dd3e98b 100644 --- a/Documentation/fmc/carrier.txt +++ b/Documentation/fmc/carrier.txt | |||
@@ -213,7 +213,7 @@ The individual methods perform the following tasks: | |||
213 | methods: for example the SPEC driver may define that its carrier | 213 | methods: for example the SPEC driver may define that its carrier |
214 | I2C memory is seen at offset 1M and the internal SPI flash is seen | 214 | I2C memory is seen at offset 1M and the internal SPI flash is seen |
215 | at offset 16M. This multiplexing of several flash memories in the | 215 | at offset 16M. This multiplexing of several flash memories in the |
216 | same address space is is carrier-specific and should only be used | 216 | same address space is carrier-specific and should only be used |
217 | by a driver that has verified the `carrier_name' field. | 217 | by a driver that has verified the `carrier_name' field. |
218 | 218 | ||
219 | 219 | ||
diff --git a/Documentation/hid/uhid.txt b/Documentation/hid/uhid.txt index 3c741214dfbb..dc35a2b75eee 100644 --- a/Documentation/hid/uhid.txt +++ b/Documentation/hid/uhid.txt | |||
@@ -149,11 +149,13 @@ needs. Only UHID_OUTPUT and UHID_OUTPUT_EV have payloads. | |||
149 | is of type "struct uhid_data_req". | 149 | is of type "struct uhid_data_req". |
150 | This may be received even though you haven't received UHID_OPEN, yet. | 150 | This may be received even though you haven't received UHID_OPEN, yet. |
151 | 151 | ||
152 | UHID_OUTPUT_EV: | 152 | UHID_OUTPUT_EV (obsolete): |
153 | Same as UHID_OUTPUT but this contains a "struct input_event" as payload. This | 153 | Same as UHID_OUTPUT but this contains a "struct input_event" as payload. This |
154 | is called for force-feedback, LED or similar events which are received through | 154 | is called for force-feedback, LED or similar events which are received through |
155 | an input device by the HID subsystem. You should convert this into raw reports | 155 | an input device by the HID subsystem. You should convert this into raw reports |
156 | and send them to your device similar to events of type UHID_OUTPUT. | 156 | and send them to your device similar to events of type UHID_OUTPUT. |
157 | This is no longer sent by newer kernels. Instead, HID core converts it into a | ||
158 | raw output report and sends it via UHID_OUTPUT. | ||
157 | 159 | ||
158 | UHID_FEATURE: | 160 | UHID_FEATURE: |
159 | This event is sent if the kernel driver wants to perform a feature request as | 161 | This event is sent if the kernel driver wants to perform a feature request as |
diff --git a/Documentation/hwmon/abituguru-datasheet b/Documentation/hwmon/abituguru-datasheet index 8d2be8a0b1e3..86c0b1251c81 100644 --- a/Documentation/hwmon/abituguru-datasheet +++ b/Documentation/hwmon/abituguru-datasheet | |||
@@ -299,7 +299,7 @@ Byte 1: | |||
299 | min threshold (scale as bank 0x26) | 299 | min threshold (scale as bank 0x26) |
300 | 300 | ||
301 | 301 | ||
302 | Warning for the adventerous | 302 | Warning for the adventurous |
303 | =========================== | 303 | =========================== |
304 | 304 | ||
305 | A word of caution to those who want to experiment and see if they can figure | 305 | A word of caution to those who want to experiment and see if they can figure |
diff --git a/Documentation/hwmon/ads1015 b/Documentation/hwmon/ads1015 index f6fe9c203733..063b80d857b1 100644 --- a/Documentation/hwmon/ads1015 +++ b/Documentation/hwmon/ads1015 | |||
@@ -6,6 +6,10 @@ Supported chips: | |||
6 | Prefix: 'ads1015' | 6 | Prefix: 'ads1015' |
7 | Datasheet: Publicly available at the Texas Instruments website : | 7 | Datasheet: Publicly available at the Texas Instruments website : |
8 | http://focus.ti.com/lit/ds/symlink/ads1015.pdf | 8 | http://focus.ti.com/lit/ds/symlink/ads1015.pdf |
9 | * Texas Instruments ADS1115 | ||
10 | Prefix: 'ads1115' | ||
11 | Datasheet: Publicly available at the Texas Instruments website : | ||
12 | http://focus.ti.com/lit/ds/symlink/ads1115.pdf | ||
9 | 13 | ||
10 | Authors: | 14 | Authors: |
11 | Dirk Eibach, Guntermann & Drunck GmbH <eibach@gdsys.de> | 15 | Dirk Eibach, Guntermann & Drunck GmbH <eibach@gdsys.de> |
@@ -13,9 +17,9 @@ Authors: | |||
13 | Description | 17 | Description |
14 | ----------- | 18 | ----------- |
15 | 19 | ||
16 | This driver implements support for the Texas Instruments ADS1015. | 20 | This driver implements support for the Texas Instruments ADS1015/ADS1115. |
17 | 21 | ||
18 | This device is a 12-bit A-D converter with 4 inputs. | 22 | This device is a 12/16-bit A-D converter with 4 inputs. |
19 | 23 | ||
20 | The inputs can be used single ended or in certain differential combinations. | 24 | The inputs can be used single ended or in certain differential combinations. |
21 | 25 | ||
diff --git a/Documentation/hwmon/htu21 b/Documentation/hwmon/htu21 new file mode 100644 index 000000000000..f39a215fb6ae --- /dev/null +++ b/Documentation/hwmon/htu21 | |||
@@ -0,0 +1,46 @@ | |||
1 | Kernel driver htu21 | ||
2 | =================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Measurement Specialties HTU21D | ||
6 | Prefix: 'htu21' | ||
7 | Addresses scanned: none | ||
8 | Datasheet: Publicly available at the Measurement Specialties website | ||
9 | http://www.meas-spec.com/downloads/HTU21D.pdf | ||
10 | |||
11 | |||
12 | Author: | ||
13 | William Markezana <william.markezana@meas-spec.com> | ||
14 | |||
15 | Description | ||
16 | ----------- | ||
17 | |||
18 | The HTU21D is a humidity and temperature sensor in a DFN package of | ||
19 | only 3 x 3 mm footprint and 0.9 mm height. | ||
20 | |||
21 | The devices communicate with the I2C protocol. All sensors are set to the | ||
22 | same I2C address 0x40, so an entry with I2C_BOARD_INFO("htu21", 0x40) can | ||
23 | be used in the board setup code. | ||
24 | |||
25 | This driver does not auto-detect devices. You will have to instantiate the | ||
26 | devices explicitly. Please see Documentation/i2c/instantiating-devices | ||
27 | for details. | ||
28 | |||
29 | sysfs-Interface | ||
30 | --------------- | ||
31 | |||
32 | temp1_input - temperature input | ||
33 | humidity1_input - humidity input | ||
34 | |||
35 | Notes | ||
36 | ----- | ||
37 | |||
38 | The driver uses the default resolution settings of 12 bit for humidity and 14 | ||
39 | bit for temperature, which results in typical measurement times of 11 ms for | ||
40 | humidity and 44 ms for temperature. To keep self heating below 0.1 degree | ||
41 | Celsius, the device should not be active for more than 10% of the time. For | ||
42 | this reason, the driver performs no more than two measurements per second and | ||
43 | reports cached information if polled more frequently. | ||
44 | |||
45 | Different resolutions, the on-chip heater, using the CRC checksum and reading | ||
46 | the serial number are not supported yet. | ||
diff --git a/Documentation/hwmon/k10temp b/Documentation/hwmon/k10temp index 90956b618025..4dfdc8f83633 100644 --- a/Documentation/hwmon/k10temp +++ b/Documentation/hwmon/k10temp | |||
@@ -12,6 +12,7 @@ Supported chips: | |||
12 | * AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series) | 12 | * AMD Family 12h processors: "Llano" (E2/A4/A6/A8-Series) |
13 | * AMD Family 14h processors: "Brazos" (C/E/G/Z-Series) | 13 | * AMD Family 14h processors: "Brazos" (C/E/G/Z-Series) |
14 | * AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity" | 14 | * AMD Family 15h processors: "Bulldozer" (FX-Series), "Trinity" |
15 | * AMD Family 16h processors: "Kabini" | ||
15 | 16 | ||
16 | Prefix: 'k10temp' | 17 | Prefix: 'k10temp' |
17 | Addresses scanned: PCI space | 18 | Addresses scanned: PCI space |
diff --git a/Documentation/hwmon/lm25066 b/Documentation/hwmon/lm25066 index c1b57d72efc3..b34c3de5c1bc 100644 --- a/Documentation/hwmon/lm25066 +++ b/Documentation/hwmon/lm25066 | |||
@@ -8,6 +8,11 @@ Supported chips: | |||
8 | Datasheets: | 8 | Datasheets: |
9 | http://www.ti.com/lit/gpn/lm25056 | 9 | http://www.ti.com/lit/gpn/lm25056 |
10 | http://www.ti.com/lit/gpn/lm25056a | 10 | http://www.ti.com/lit/gpn/lm25056a |
11 | * TI LM25063 | ||
12 | Prefix: 'lm25063' | ||
13 | Addresses scanned: - | ||
14 | Datasheet: | ||
15 | To be announced | ||
11 | * National Semiconductor LM25066 | 16 | * National Semiconductor LM25066 |
12 | Prefix: 'lm25066' | 17 | Prefix: 'lm25066' |
13 | Addresses scanned: - | 18 | Addresses scanned: - |
@@ -32,7 +37,7 @@ Description | |||
32 | ----------- | 37 | ----------- |
33 | 38 | ||
34 | This driver supports hardware montoring for National Semiconductor / TI LM25056, | 39 | This driver supports hardware montoring for National Semiconductor / TI LM25056, |
35 | LM25066, LM5064, and LM5064 Power Management, Monitoring, Control, and | 40 | LM25063, LM25066, LM5064, and LM5066 Power Management, Monitoring, Control, and |
36 | Protection ICs. | 41 | Protection ICs. |
37 | 42 | ||
38 | The driver is a client driver to the core PMBus driver. Please see | 43 | The driver is a client driver to the core PMBus driver. Please see |
@@ -64,8 +69,12 @@ in1_input Measured input voltage. | |||
64 | in1_average Average measured input voltage. | 69 | in1_average Average measured input voltage. |
65 | in1_min Minimum input voltage. | 70 | in1_min Minimum input voltage. |
66 | in1_max Maximum input voltage. | 71 | in1_max Maximum input voltage. |
72 | in1_crit Critical high input voltage (LM25063 only). | ||
73 | in1_lcrit Critical low input voltage (LM25063 only). | ||
67 | in1_min_alarm Input voltage low alarm. | 74 | in1_min_alarm Input voltage low alarm. |
68 | in1_max_alarm Input voltage high alarm. | 75 | in1_max_alarm Input voltage high alarm. |
76 | in1_lcrit_alarm Input voltage critical low alarm (LM25063 only). | ||
77 | in1_crit_alarm Input voltage critical high alarm. (LM25063 only). | ||
69 | 78 | ||
70 | in2_label "vmon" | 79 | in2_label "vmon" |
71 | in2_input Measured voltage on VAUX pin | 80 | in2_input Measured voltage on VAUX pin |
@@ -80,12 +89,16 @@ in3_input Measured output voltage. | |||
80 | in3_average Average measured output voltage. | 89 | in3_average Average measured output voltage. |
81 | in3_min Minimum output voltage. | 90 | in3_min Minimum output voltage. |
82 | in3_min_alarm Output voltage low alarm. | 91 | in3_min_alarm Output voltage low alarm. |
92 | in3_highest Historical minimum output voltage (LM25063 only). | ||
93 | in3_lowest Historical maximum output voltage (LM25063 only). | ||
83 | 94 | ||
84 | curr1_label "iin" | 95 | curr1_label "iin" |
85 | curr1_input Measured input current. | 96 | curr1_input Measured input current. |
86 | curr1_average Average measured input current. | 97 | curr1_average Average measured input current. |
87 | curr1_max Maximum input current. | 98 | curr1_max Maximum input current. |
99 | curr1_crit Critical input current (LM25063 only). | ||
88 | curr1_max_alarm Input current high alarm. | 100 | curr1_max_alarm Input current high alarm. |
101 | curr1_crit_alarm Input current critical high alarm (LM25063 only). | ||
89 | 102 | ||
90 | power1_label "pin" | 103 | power1_label "pin" |
91 | power1_input Measured input power. | 104 | power1_input Measured input power. |
@@ -95,6 +108,11 @@ power1_alarm Input power alarm | |||
95 | power1_input_highest Historical maximum power. | 108 | power1_input_highest Historical maximum power. |
96 | power1_reset_history Write any value to reset maximum power history. | 109 | power1_reset_history Write any value to reset maximum power history. |
97 | 110 | ||
111 | power2_label "pout". LM25063 only. | ||
112 | power2_input Measured output power. | ||
113 | power2_max Maximum output power limit. | ||
114 | power2_crit Critical output power limit. | ||
115 | |||
98 | temp1_input Measured temperature. | 116 | temp1_input Measured temperature. |
99 | temp1_max Maximum temperature. | 117 | temp1_max Maximum temperature. |
100 | temp1_crit Critical high temperature. | 118 | temp1_crit Critical high temperature. |
diff --git a/Documentation/hwmon/ltc2978 b/Documentation/hwmon/ltc2978 index dc0d08c61305..a0546fc42273 100644 --- a/Documentation/hwmon/ltc2978 +++ b/Documentation/hwmon/ltc2978 | |||
@@ -6,10 +6,15 @@ Supported chips: | |||
6 | Prefix: 'ltc2974' | 6 | Prefix: 'ltc2974' |
7 | Addresses scanned: - | 7 | Addresses scanned: - |
8 | Datasheet: http://www.linear.com/product/ltc2974 | 8 | Datasheet: http://www.linear.com/product/ltc2974 |
9 | * Linear Technology LTC2978 | 9 | * Linear Technology LTC2977 |
10 | Prefix: 'ltc2977' | ||
11 | Addresses scanned: - | ||
12 | Datasheet: http://www.linear.com/product/ltc2977 | ||
13 | * Linear Technology LTC2978, LTC2978A | ||
10 | Prefix: 'ltc2978' | 14 | Prefix: 'ltc2978' |
11 | Addresses scanned: - | 15 | Addresses scanned: - |
12 | Datasheet: http://www.linear.com/product/ltc2978 | 16 | Datasheet: http://www.linear.com/product/ltc2978 |
17 | http://www.linear.com/product/ltc2978a | ||
13 | * Linear Technology LTC3880 | 18 | * Linear Technology LTC3880 |
14 | Prefix: 'ltc3880' | 19 | Prefix: 'ltc3880' |
15 | Addresses scanned: - | 20 | Addresses scanned: - |
@@ -26,8 +31,9 @@ Description | |||
26 | ----------- | 31 | ----------- |
27 | 32 | ||
28 | LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply | 33 | LTC2974 is a quad digital power supply manager. LTC2978 is an octal power supply |
29 | monitor. LTC3880 is a dual output poly-phase step-down DC/DC controller. LTC3883 | 34 | monitor. LTC2977 is a pin compatible replacement for LTC2978. LTC3880 is a dual |
30 | is a single phase step-down DC/DC controller. | 35 | output poly-phase step-down DC/DC controller. LTC3883 is a single phase |
36 | step-down DC/DC controller. | ||
31 | 37 | ||
32 | 38 | ||
33 | Usage Notes | 39 | Usage Notes |
@@ -49,21 +55,25 @@ Sysfs attributes | |||
49 | in1_label "vin" | 55 | in1_label "vin" |
50 | in1_input Measured input voltage. | 56 | in1_input Measured input voltage. |
51 | in1_min Minimum input voltage. | 57 | in1_min Minimum input voltage. |
52 | in1_max Maximum input voltage. LTC2974 and LTC2978 only. | 58 | in1_max Maximum input voltage. |
53 | in1_lcrit Critical minimum input voltage. LTC2974 and LTC2978 | 59 | LTC2974, LTC2977, and LTC2978 only. |
54 | only. | 60 | in1_lcrit Critical minimum input voltage. |
61 | LTC2974, LTC2977, and LTC2978 only. | ||
55 | in1_crit Critical maximum input voltage. | 62 | in1_crit Critical maximum input voltage. |
56 | in1_min_alarm Input voltage low alarm. | 63 | in1_min_alarm Input voltage low alarm. |
57 | in1_max_alarm Input voltage high alarm. LTC2974 and LTC2978 only. | 64 | in1_max_alarm Input voltage high alarm. |
58 | in1_lcrit_alarm Input voltage critical low alarm. LTC2974 and LTC2978 | 65 | LTC2974, LTC2977, and LTC2978 only. |
59 | only. | 66 | in1_lcrit_alarm Input voltage critical low alarm. |
67 | LTC2974, LTC2977, and LTC2978 only. | ||
60 | in1_crit_alarm Input voltage critical high alarm. | 68 | in1_crit_alarm Input voltage critical high alarm. |
61 | in1_lowest Lowest input voltage. LTC2974 and LTC2978 only. | 69 | in1_lowest Lowest input voltage. |
70 | LTC2974, LTC2977, and LTC2978 only. | ||
62 | in1_highest Highest input voltage. | 71 | in1_highest Highest input voltage. |
63 | in1_reset_history Reset input voltage history. | 72 | in1_reset_history Reset input voltage history. |
64 | 73 | ||
65 | in[N]_label "vout[1-8]". | 74 | in[N]_label "vout[1-8]". |
66 | LTC2974: N=2-5 | 75 | LTC2974: N=2-5 |
76 | LTC2977: N=2-9 | ||
67 | LTC2978: N=2-9 | 77 | LTC2978: N=2-9 |
68 | LTC3880: N=2-3 | 78 | LTC3880: N=2-3 |
69 | LTC3883: N=2 | 79 | LTC3883: N=2 |
@@ -83,21 +93,23 @@ in[N]_reset_history Reset output voltage history. | |||
83 | temp[N]_input Measured temperature. | 93 | temp[N]_input Measured temperature. |
84 | On LTC2974, temp[1-4] report external temperatures, | 94 | On LTC2974, temp[1-4] report external temperatures, |
85 | and temp5 reports the chip temperature. | 95 | and temp5 reports the chip temperature. |
86 | On LTC2978, only one temperature measurement is | 96 | On LTC2977 and LTC2978, only one temperature measurement |
87 | supported and reports the chip temperature. | 97 | is supported and reports the chip temperature. |
88 | On LTC3880, temp1 and temp2 report external | 98 | On LTC3880, temp1 and temp2 report external |
89 | temperatures, and temp3 reports the chip temperature. | 99 | temperatures, and temp3 reports the chip temperature. |
90 | On LTC3883, temp1 reports an external temperature, | 100 | On LTC3883, temp1 reports an external temperature, |
91 | and temp2 reports the chip temperature. | 101 | and temp2 reports the chip temperature. |
92 | temp[N]_min Mimimum temperature. LTC2974 and LTC2978 only. | 102 | temp[N]_min Mimimum temperature. LTC2974, LCT2977, and LTC2978 only. |
93 | temp[N]_max Maximum temperature. | 103 | temp[N]_max Maximum temperature. |
94 | temp[N]_lcrit Critical low temperature. | 104 | temp[N]_lcrit Critical low temperature. |
95 | temp[N]_crit Critical high temperature. | 105 | temp[N]_crit Critical high temperature. |
96 | temp[N]_min_alarm Temperature low alarm. LTC2974 and LTC2978 only. | 106 | temp[N]_min_alarm Temperature low alarm. |
107 | LTC2974, LTC2977, and LTC2978 only. | ||
97 | temp[N]_max_alarm Temperature high alarm. | 108 | temp[N]_max_alarm Temperature high alarm. |
98 | temp[N]_lcrit_alarm Temperature critical low alarm. | 109 | temp[N]_lcrit_alarm Temperature critical low alarm. |
99 | temp[N]_crit_alarm Temperature critical high alarm. | 110 | temp[N]_crit_alarm Temperature critical high alarm. |
100 | temp[N]_lowest Lowest measured temperature. LTC2974 and LTC2978 only. | 111 | temp[N]_lowest Lowest measured temperature. |
112 | LTC2974, LTC2977, and LTC2978 only. | ||
101 | Not supported for chip temperature sensor on LTC2974. | 113 | Not supported for chip temperature sensor on LTC2974. |
102 | temp[N]_highest Highest measured temperature. Not supported for chip | 114 | temp[N]_highest Highest measured temperature. Not supported for chip |
103 | temperature sensor on LTC2974. | 115 | temperature sensor on LTC2974. |
@@ -109,6 +121,7 @@ power1_input Measured input power. | |||
109 | 121 | ||
110 | power[N]_label "pout[1-4]". | 122 | power[N]_label "pout[1-4]". |
111 | LTC2974: N=1-4 | 123 | LTC2974: N=1-4 |
124 | LTC2977: Not supported | ||
112 | LTC2978: Not supported | 125 | LTC2978: Not supported |
113 | LTC3880: N=1-2 | 126 | LTC3880: N=1-2 |
114 | LTC3883: N=2 | 127 | LTC3883: N=2 |
@@ -123,6 +136,7 @@ curr1_reset_history Reset input current history. LTC3883 only. | |||
123 | 136 | ||
124 | curr[N]_label "iout[1-4]". | 137 | curr[N]_label "iout[1-4]". |
125 | LTC2974: N=1-4 | 138 | LTC2974: N=1-4 |
139 | LTC2977: not supported | ||
126 | LTC2978: not supported | 140 | LTC2978: not supported |
127 | LTC3880: N=2-3 | 141 | LTC3880: N=2-3 |
128 | LTC3883: N=2 | 142 | LTC3883: N=2 |
diff --git a/Documentation/hwmon/submitting-patches b/Documentation/hwmon/submitting-patches index 46286460462b..3d1bac399a22 100644 --- a/Documentation/hwmon/submitting-patches +++ b/Documentation/hwmon/submitting-patches | |||
@@ -1,7 +1,7 @@ | |||
1 | How to Get Your Patch Accepted Into the Hwmon Subsystem | 1 | How to Get Your Patch Accepted Into the Hwmon Subsystem |
2 | ------------------------------------------------------- | 2 | ------------------------------------------------------- |
3 | 3 | ||
4 | This text is is a collection of suggestions for people writing patches or | 4 | This text is a collection of suggestions for people writing patches or |
5 | drivers for the hwmon subsystem. Following these suggestions will greatly | 5 | drivers for the hwmon subsystem. Following these suggestions will greatly |
6 | increase the chances of your change being accepted. | 6 | increase the chances of your change being accepted. |
7 | 7 | ||
diff --git a/Documentation/hwmon/w83791d b/Documentation/hwmon/w83791d index 90387c3540f7..f4021a285460 100644 --- a/Documentation/hwmon/w83791d +++ b/Documentation/hwmon/w83791d | |||
@@ -17,7 +17,7 @@ Credits: | |||
17 | Philip Edelbrock <phil@netroedge.com>, | 17 | Philip Edelbrock <phil@netroedge.com>, |
18 | and Mark Studebaker <mdsxyz123@yahoo.com> | 18 | and Mark Studebaker <mdsxyz123@yahoo.com> |
19 | w83792d.c: | 19 | w83792d.c: |
20 | Chunhao Huang <DZShen@Winbond.com.tw>, | 20 | Shane Huang (Winbond), |
21 | Rudolf Marek <r.marek@assembler.cz> | 21 | Rudolf Marek <r.marek@assembler.cz> |
22 | 22 | ||
23 | Additional contributors: | 23 | Additional contributors: |
diff --git a/Documentation/hwmon/w83792d b/Documentation/hwmon/w83792d index 8a023ce0b72e..53f7b6866fec 100644 --- a/Documentation/hwmon/w83792d +++ b/Documentation/hwmon/w83792d | |||
@@ -7,8 +7,7 @@ Supported chips: | |||
7 | Addresses scanned: I2C 0x2c - 0x2f | 7 | Addresses scanned: I2C 0x2c - 0x2f |
8 | Datasheet: http://www.winbond.com.tw | 8 | Datasheet: http://www.winbond.com.tw |
9 | 9 | ||
10 | Author: Chunhao Huang | 10 | Author: Shane Huang (Winbond) |
11 | Contact: DZShen <DZShen@Winbond.com.tw> | ||
12 | 11 | ||
13 | 12 | ||
14 | Module Parameters | 13 | Module Parameters |
diff --git a/Documentation/hwspinlock.txt b/Documentation/hwspinlock.txt index a903ee5e9776..62f7d4ea6e26 100644 --- a/Documentation/hwspinlock.txt +++ b/Documentation/hwspinlock.txt | |||
@@ -241,7 +241,7 @@ int hwspinlock_example2(void) | |||
241 | locks). | 241 | locks). |
242 | Should be called from a process context (this function might sleep). | 242 | Should be called from a process context (this function might sleep). |
243 | Returns the address of hwspinlock on success, or NULL on error (e.g. | 243 | Returns the address of hwspinlock on success, or NULL on error (e.g. |
244 | if the hwspinlock is sill in use). | 244 | if the hwspinlock is still in use). |
245 | 245 | ||
246 | 5. Important structs | 246 | 5. Important structs |
247 | 247 | ||
diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4 index a370b2047cf3..c097e0f020fe 100644 --- a/Documentation/i2c/busses/i2c-piix4 +++ b/Documentation/i2c/busses/i2c-piix4 | |||
@@ -73,9 +73,10 @@ this driver on those mainboards. | |||
73 | The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are | 73 | The ServerWorks Southbridges, the Intel 440MX, and the Victory66 are |
74 | identical to the PIIX4 in I2C/SMBus support. | 74 | identical to the PIIX4 in I2C/SMBus support. |
75 | 75 | ||
76 | The AMD SB700 and SP5100 chipsets implement two PIIX4-compatible SMBus | 76 | The AMD SB700, SB800, SP5100 and Hudson-2 chipsets implement two |
77 | controllers. If your BIOS initializes the secondary controller, it will | 77 | PIIX4-compatible SMBus controllers. If your BIOS initializes the |
78 | be detected by this driver as an "Auxiliary SMBus Host Controller". | 78 | secondary controller, it will be detected by this driver as |
79 | an "Auxiliary SMBus Host Controller". | ||
79 | 80 | ||
80 | If you own Force CPCI735 motherboard or other OSB4 based systems you may need | 81 | If you own Force CPCI735 motherboard or other OSB4 based systems you may need |
81 | to change the SMBus Interrupt Select register so the SMBus controller uses | 82 | to change the SMBus Interrupt Select register so the SMBus controller uses |
diff --git a/Documentation/i2c/instantiating-devices b/Documentation/i2c/instantiating-devices index 22182660dda7..c70e7a7638d1 100644 --- a/Documentation/i2c/instantiating-devices +++ b/Documentation/i2c/instantiating-devices | |||
@@ -19,7 +19,7 @@ i2c_board_info which is registered by calling i2c_register_board_info(). | |||
19 | 19 | ||
20 | Example (from omap2 h4): | 20 | Example (from omap2 h4): |
21 | 21 | ||
22 | static struct i2c_board_info __initdata h4_i2c_board_info[] = { | 22 | static struct i2c_board_info h4_i2c_board_info[] __initdata = { |
23 | { | 23 | { |
24 | I2C_BOARD_INFO("isp1301_omap", 0x2d), | 24 | I2C_BOARD_INFO("isp1301_omap", 0x2d), |
25 | .irq = OMAP_GPIO_IRQ(125), | 25 | .irq = OMAP_GPIO_IRQ(125), |
diff --git a/Documentation/i2c/upgrading-clients b/Documentation/i2c/upgrading-clients index d6991625c407..8e5fbd88c7d1 100644 --- a/Documentation/i2c/upgrading-clients +++ b/Documentation/i2c/upgrading-clients | |||
@@ -196,8 +196,8 @@ static int example_probe(struct i2c_client *i2c_client, | |||
196 | 196 | ||
197 | Update the detach method, by changing the name to _remove and | 197 | Update the detach method, by changing the name to _remove and |
198 | to delete the i2c_detach_client call. It is possible that you | 198 | to delete the i2c_detach_client call. It is possible that you |
199 | can also remove the ret variable as it is not not needed for | 199 | can also remove the ret variable as it is not needed for any |
200 | any of the core functions. | 200 | of the core functions. |
201 | 201 | ||
202 | - static int example_detach(struct i2c_client *client) | 202 | - static int example_detach(struct i2c_client *client) |
203 | + static int example_remove(struct i2c_client *client) | 203 | + static int example_remove(struct i2c_client *client) |
diff --git a/Documentation/input/gamepad.txt b/Documentation/input/gamepad.txt new file mode 100644 index 000000000000..8002c894c6b0 --- /dev/null +++ b/Documentation/input/gamepad.txt | |||
@@ -0,0 +1,156 @@ | |||
1 | Linux Gamepad API | ||
2 | ---------------------------------------------------------------------------- | ||
3 | |||
4 | 1. Intro | ||
5 | ~~~~~~~~ | ||
6 | Linux provides many different input drivers for gamepad hardware. To avoid | ||
7 | having user-space deal with different button-mappings for each gamepad, this | ||
8 | document defines how gamepads are supposed to report their data. | ||
9 | |||
10 | 2. Geometry | ||
11 | ~~~~~~~~~~~ | ||
12 | As "gamepad" we define devices which roughly look like this: | ||
13 | |||
14 | ____________________________ __ | ||
15 | / [__ZL__] [__ZR__] \ | | ||
16 | / [__ TL __] [__ TR __] \ | Front Triggers | ||
17 | __/________________________________\__ __| | ||
18 | / _ \ | | ||
19 | / /\ __ (N) \ | | ||
20 | / || __ |MO| __ _ _ \ | Main Pad | ||
21 | | <===DP===> |SE| |ST| (W) -|- (E) | | | ||
22 | \ || ___ ___ _ / | | ||
23 | /\ \/ / \ / \ (S) /\ __| | ||
24 | / \________ | LS | ____ | RS | ________/ \ | | ||
25 | | / \ \___/ / \ \___/ / \ | | Control Sticks | ||
26 | | / \_____/ \_____/ \ | __| | ||
27 | | / \ | | ||
28 | \_____/ \_____/ | ||
29 | |||
30 | |________|______| |______|___________| | ||
31 | D-Pad Left Right Action Pad | ||
32 | Stick Stick | ||
33 | |||
34 | |_____________| | ||
35 | Menu Pad | ||
36 | |||
37 | Most gamepads have the following features: | ||
38 | - Action-Pad | ||
39 | 4 buttons in diamonds-shape (on the right side). The buttons are | ||
40 | differently labeled on most devices so we define them as NORTH, | ||
41 | SOUTH, WEST and EAST. | ||
42 | - D-Pad (Direction-pad) | ||
43 | 4 buttons (on the left side) that point up, down, left and right. | ||
44 | - Menu-Pad | ||
45 | Different constellations, but most-times 2 buttons: SELECT - START | ||
46 | Furthermore, many gamepads have a fancy branded button that is used as | ||
47 | special system-button. It often looks different to the other buttons and | ||
48 | is used to pop up system-menus or system-settings. | ||
49 | - Analog-Sticks | ||
50 | Analog-sticks provide freely moveable sticks to control directions. Not | ||
51 | all devices have both or any, but they are present at most times. | ||
52 | Analog-sticks may also provide a digital button if you press them. | ||
53 | - Triggers | ||
54 | Triggers are located on the upper-side of the pad in vertical direction. | ||
55 | Not all devices provide them, but the upper buttons are normally named | ||
56 | Left- and Right-Triggers, the lower buttons Z-Left and Z-Right. | ||
57 | - Rumble | ||
58 | Many devices provide force-feedback features. But are mostly just | ||
59 | simple rumble motors. | ||
60 | |||
61 | 3. Detection | ||
62 | ~~~~~~~~~~~~ | ||
63 | All gamepads that follow the protocol described here map BTN_GAMEPAD. This is | ||
64 | an alias for BTN_SOUTH/BTN_A. It can be used to identify a gamepad as such. | ||
65 | However, not all gamepads provide all features, so you need to test for all | ||
66 | features that you need, first. How each feature is mapped is described below. | ||
67 | |||
68 | Legacy drivers often don't comply to these rules. As we cannot change them | ||
69 | for backwards-compatibility reasons, you need to provide fixup mappings in | ||
70 | user-space yourself. Some of them might also provide module-options that | ||
71 | change the mappings so you can adivce users to set these. | ||
72 | |||
73 | All new gamepads are supposed to comply with this mapping. Please report any | ||
74 | bugs, if they don't. | ||
75 | |||
76 | There are a lot of less-featured/less-powerful devices out there, which re-use | ||
77 | the buttons from this protocol. However, they try to do this in a compatible | ||
78 | fashion. For example, the "Nintendo Wii Nunchuk" provides two trigger buttons | ||
79 | and one analog stick. It reports them as if it were a gamepad with only one | ||
80 | analog stick and two trigger buttons on the right side. | ||
81 | But that means, that if you only support "real" gamepads, you must test | ||
82 | devices for _all_ reported events that you need. Otherwise, you will also get | ||
83 | devices that report a small subset of the events. | ||
84 | |||
85 | No other devices, that do not look/feel like a gamepad, shall report these | ||
86 | events. | ||
87 | |||
88 | 4. Events | ||
89 | ~~~~~~~~~ | ||
90 | Gamepads report the following events: | ||
91 | |||
92 | Action-Pad: | ||
93 | Every gamepad device has at least 2 action buttons. This means, that every | ||
94 | device reports BTN_SOUTH (which BTN_GAMEPAD is an alias for). Regardless | ||
95 | of the labels on the buttons, the codes are sent according to the | ||
96 | physical position of the buttons. | ||
97 | Please note that 2- and 3-button pads are fairly rare and old. You might | ||
98 | want to filter gamepads that do not report all four. | ||
99 | 2-Button Pad: | ||
100 | If only 2 action-buttons are present, they are reported as BTN_SOUTH and | ||
101 | BTN_EAST. For vertical layouts, the upper button is BTN_EAST. For | ||
102 | horizontal layouts, the button more on the right is BTN_EAST. | ||
103 | 3-Button Pad: | ||
104 | If only 3 action-buttons are present, they are reported as (from left | ||
105 | to right): BTN_WEST, BTN_SOUTH, BTN_EAST | ||
106 | If the buttons are aligned perfectly vertically, they are reported as | ||
107 | (from top down): BTN_WEST, BTN_SOUTH, BTN_EAST | ||
108 | 4-Button Pad: | ||
109 | If all 4 action-buttons are present, they can be aligned in two | ||
110 | different formations. If diamond-shaped, they are reported as BTN_NORTH, | ||
111 | BTN_WEST, BTN_SOUTH, BTN_EAST according to their physical location. | ||
112 | If rectangular-shaped, the upper-left button is BTN_NORTH, lower-left | ||
113 | is BTN_WEST, lower-right is BTN_SOUTH and upper-right is BTN_EAST. | ||
114 | |||
115 | D-Pad: | ||
116 | Every gamepad provides a D-Pad with four directions: Up, Down, Left, Right | ||
117 | Some of these are available as digital buttons, some as analog buttons. Some | ||
118 | may even report both. The kernel does not convert between these so | ||
119 | applications should support both and choose what is more appropriate if | ||
120 | both are reported. | ||
121 | Digital buttons are reported as: | ||
122 | BTN_DPAD_* | ||
123 | Analog buttons are reported as: | ||
124 | ABS_HAT0X and ABS_HAT0Y | ||
125 | |||
126 | Analog-Sticks: | ||
127 | The left analog-stick is reported as ABS_X, ABS_Y. The right analog stick is | ||
128 | reported as ABS_RX, ABS_RY. Zero, one or two sticks may be present. | ||
129 | If analog-sticks provide digital buttons, they are mapped accordingly as | ||
130 | BTN_THUMBL (first/left) and BTN_THUMBR (second/right). | ||
131 | |||
132 | Triggers: | ||
133 | Trigger buttons can be available as digital or analog buttons or both. User- | ||
134 | space must correctly deal with any situation and choose the most appropriate | ||
135 | mode. | ||
136 | Upper trigger buttons are reported as BTN_TR or ABS_HAT1X (right) and BTN_TL | ||
137 | or ABS_HAT1Y (left). Lower trigger buttons are reported as BTN_TR2 or | ||
138 | ABS_HAT2X (right/ZR) and BTN_TL2 or ABS_HAT2Y (left/ZL). | ||
139 | If only one trigger-button combination is present (upper+lower), they are | ||
140 | reported as "right" triggers (BTN_TR/ABS_HAT1X). | ||
141 | |||
142 | Menu-Pad: | ||
143 | Menu buttons are always digital and are mapped according to their location | ||
144 | instead of their labels. That is: | ||
145 | 1-button Pad: Mapped as BTN_START | ||
146 | 2-button Pad: Left button mapped as BTN_SELECT, right button mapped as | ||
147 | BTN_START | ||
148 | Many pads also have a third button which is branded or has a special symbol | ||
149 | and meaning. Such buttons are mapped as BTN_MODE. Examples are the Nintendo | ||
150 | "HOME" button, the XBox "X"-button or Sony "P" button. | ||
151 | |||
152 | Rumble: | ||
153 | Rumble is adverticed as FF_RUMBLE. | ||
154 | |||
155 | ---------------------------------------------------------------------------- | ||
156 | Written 2013 by David Herrmann <dh.herrmann@gmail.com> | ||
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 2a5f0e14efa3..7cbfa3c4fc3d 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -138,6 +138,7 @@ Code Seq#(hex) Include File Comments | |||
138 | 'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict! | 138 | 'H' C0-DF net/bluetooth/cmtp/cmtp.h conflict! |
139 | 'H' C0-DF net/bluetooth/bnep/bnep.h conflict! | 139 | 'H' C0-DF net/bluetooth/bnep/bnep.h conflict! |
140 | 'H' F1 linux/hid-roccat.h <mailto:erazor_de@users.sourceforge.net> | 140 | 'H' F1 linux/hid-roccat.h <mailto:erazor_de@users.sourceforge.net> |
141 | 'H' F8-FA sound/firewire.h | ||
141 | 'I' all linux/isdn.h conflict! | 142 | 'I' all linux/isdn.h conflict! |
142 | 'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict! | 143 | 'I' 00-0F drivers/isdn/divert/isdn_divert.h conflict! |
143 | 'I' 40-4F linux/mISDNif.h conflict! | 144 | 'I' 40-4F linux/mISDNif.h conflict! |
diff --git a/Documentation/kbuild/kconfig-language.txt b/Documentation/kbuild/kconfig-language.txt index c858f8419eba..c420676c6fe3 100644 --- a/Documentation/kbuild/kconfig-language.txt +++ b/Documentation/kbuild/kconfig-language.txt | |||
@@ -147,6 +147,7 @@ applicable everywhere (see syntax). | |||
147 | - "modules" | 147 | - "modules" |
148 | This declares the symbol to be used as the MODULES symbol, which | 148 | This declares the symbol to be used as the MODULES symbol, which |
149 | enables the third modular state for all config symbols. | 149 | enables the third modular state for all config symbols. |
150 | At most one symbol may have the "modules" option set. | ||
150 | 151 | ||
151 | - "env"=<value> | 152 | - "env"=<value> |
152 | This imports the environment variable into Kconfig. It behaves like | 153 | This imports the environment variable into Kconfig. It behaves like |
diff --git a/Documentation/kbuild/kconfig.txt b/Documentation/kbuild/kconfig.txt index e349f293cc98..8ef6dbb6a462 100644 --- a/Documentation/kbuild/kconfig.txt +++ b/Documentation/kbuild/kconfig.txt | |||
@@ -175,11 +175,9 @@ Searching in menuconfig: | |||
175 | /^hotplug | 175 | /^hotplug |
176 | 176 | ||
177 | When searching, symbols are sorted thus: | 177 | When searching, symbols are sorted thus: |
178 | - exact match first: an exact match is when the search matches | 178 | - first, exact matches, sorted alphabetically (an exact match |
179 | the complete symbol name; | 179 | is when the search matches the complete symbol name); |
180 | - alphabetical order: when two symbols do not match exactly, | 180 | - then, other matches, sorted alphabetically. |
181 | they are sorted in alphabetical order (in the user's current | ||
182 | locale). | ||
183 | For example: ^ATH.K matches: | 181 | For example: ^ATH.K matches: |
184 | ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG | 182 | ATH5K ATH9K ATH5K_AHB ATH5K_DEBUG [...] ATH6KL ATH6KL_DEBUG |
185 | [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...] | 183 | [...] ATH9K_AHB ATH9K_BTCOEX_SUPPORT ATH9K_COMMON [...] |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 15356aca938c..fd3ecedc084d 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -235,10 +235,61 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
235 | Format: To spoof as Windows 98: ="Microsoft Windows" | 235 | Format: To spoof as Windows 98: ="Microsoft Windows" |
236 | 236 | ||
237 | acpi_osi= [HW,ACPI] Modify list of supported OS interface strings | 237 | acpi_osi= [HW,ACPI] Modify list of supported OS interface strings |
238 | acpi_osi="string1" # add string1 -- only one string | 238 | acpi_osi="string1" # add string1 |
239 | acpi_osi="!string2" # remove built-in string2 | 239 | acpi_osi="!string2" # remove string2 |
240 | acpi_osi=!* # remove all strings | ||
241 | acpi_osi=! # disable all built-in OS vendor | ||
242 | strings | ||
240 | acpi_osi= # disable all strings | 243 | acpi_osi= # disable all strings |
241 | 244 | ||
245 | 'acpi_osi=!' can be used in combination with single or | ||
246 | multiple 'acpi_osi="string1"' to support specific OS | ||
247 | vendor string(s). Note that such command can only | ||
248 | affect the default state of the OS vendor strings, thus | ||
249 | it cannot affect the default state of the feature group | ||
250 | strings and the current state of the OS vendor strings, | ||
251 | specifying it multiple times through kernel command line | ||
252 | is meaningless. This command is useful when one do not | ||
253 | care about the state of the feature group strings which | ||
254 | should be controlled by the OSPM. | ||
255 | Examples: | ||
256 | 1. 'acpi_osi=! acpi_osi="Windows 2000"' is equivalent | ||
257 | to 'acpi_osi="Windows 2000" acpi_osi=!', they all | ||
258 | can make '_OSI("Windows 2000")' TRUE. | ||
259 | |||
260 | 'acpi_osi=' cannot be used in combination with other | ||
261 | 'acpi_osi=' command lines, the _OSI method will not | ||
262 | exist in the ACPI namespace. NOTE that such command can | ||
263 | only affect the _OSI support state, thus specifying it | ||
264 | multiple times through kernel command line is also | ||
265 | meaningless. | ||
266 | Examples: | ||
267 | 1. 'acpi_osi=' can make 'CondRefOf(_OSI, Local1)' | ||
268 | FALSE. | ||
269 | |||
270 | 'acpi_osi=!*' can be used in combination with single or | ||
271 | multiple 'acpi_osi="string1"' to support specific | ||
272 | string(s). Note that such command can affect the | ||
273 | current state of both the OS vendor strings and the | ||
274 | feature group strings, thus specifying it multiple times | ||
275 | through kernel command line is meaningful. But it may | ||
276 | still not able to affect the final state of a string if | ||
277 | there are quirks related to this string. This command | ||
278 | is useful when one want to control the state of the | ||
279 | feature group strings to debug BIOS issues related to | ||
280 | the OSPM features. | ||
281 | Examples: | ||
282 | 1. 'acpi_osi="Module Device" acpi_osi=!*' can make | ||
283 | '_OSI("Module Device")' FALSE. | ||
284 | 2. 'acpi_osi=!* acpi_osi="Module Device"' can make | ||
285 | '_OSI("Module Device")' TRUE. | ||
286 | 3. 'acpi_osi=! acpi_osi=!* acpi_osi="Windows 2000"' is | ||
287 | equivalent to | ||
288 | 'acpi_osi=!* acpi_osi=! acpi_osi="Windows 2000"' | ||
289 | and | ||
290 | 'acpi_osi=!* acpi_osi="Windows 2000" acpi_osi=!', | ||
291 | they all will make '_OSI("Windows 2000")' TRUE. | ||
292 | |||
242 | acpi_pm_good [X86] | 293 | acpi_pm_good [X86] |
243 | Override the pmtimer bug detection: force the kernel | 294 | Override the pmtimer bug detection: force the kernel |
244 | to assume that this machine's pmtimer latches its value | 295 | to assume that this machine's pmtimer latches its value |
@@ -429,6 +480,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
429 | Format: <io>,<irq>,<mode> | 480 | Format: <io>,<irq>,<mode> |
430 | See header of drivers/net/hamradio/baycom_ser_hdx.c. | 481 | See header of drivers/net/hamradio/baycom_ser_hdx.c. |
431 | 482 | ||
483 | blkdevparts= Manual partition parsing of block device(s) for | ||
484 | embedded devices based on command line input. | ||
485 | See Documentation/block/cmdline-partition.txt | ||
486 | |||
432 | boot_delay= Milliseconds to delay each printk during boot. | 487 | boot_delay= Milliseconds to delay each printk during boot. |
433 | Values larger than 10 seconds (10000) are changed to | 488 | Values larger than 10 seconds (10000) are changed to |
434 | no delay (0). | 489 | no delay (0). |
@@ -792,6 +847,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
792 | 847 | ||
793 | earlyprintk= [X86,SH,BLACKFIN,ARM] | 848 | earlyprintk= [X86,SH,BLACKFIN,ARM] |
794 | earlyprintk=vga | 849 | earlyprintk=vga |
850 | earlyprintk=efi | ||
795 | earlyprintk=xen | 851 | earlyprintk=xen |
796 | earlyprintk=serial[,ttySn[,baudrate]] | 852 | earlyprintk=serial[,ttySn[,baudrate]] |
797 | earlyprintk=serial[,0x...[,baudrate]] | 853 | earlyprintk=serial[,0x...[,baudrate]] |
@@ -805,7 +861,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
805 | Append ",keep" to not disable it when the real console | 861 | Append ",keep" to not disable it when the real console |
806 | takes over. | 862 | takes over. |
807 | 863 | ||
808 | Only vga or serial or usb debug port at a time. | 864 | Only one of vga, efi, serial, or usb debug port can |
865 | be used at a time. | ||
809 | 866 | ||
810 | Currently only ttyS0 and ttyS1 may be specified by | 867 | Currently only ttyS0 and ttyS1 may be specified by |
811 | name. Other I/O ports may be explicitly specified | 868 | name. Other I/O ports may be explicitly specified |
@@ -819,8 +876,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
819 | Interaction with the standard serial driver is not | 876 | Interaction with the standard serial driver is not |
820 | very good. | 877 | very good. |
821 | 878 | ||
822 | The VGA output is eventually overwritten by the real | 879 | The VGA and EFI output is eventually overwritten by |
823 | console. | 880 | the real console. |
824 | 881 | ||
825 | The xen output can only be used by Xen PV guests. | 882 | The xen output can only be used by Xen PV guests. |
826 | 883 | ||
@@ -1306,7 +1363,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1306 | pages. In the event, a node is too small to have both | 1363 | pages. In the event, a node is too small to have both |
1307 | kernelcore and Movable pages, kernelcore pages will | 1364 | kernelcore and Movable pages, kernelcore pages will |
1308 | take priority and other nodes will have a larger number | 1365 | take priority and other nodes will have a larger number |
1309 | of kernelcore pages. The Movable zone is used for the | 1366 | of Movable pages. The Movable zone is used for the |
1310 | allocation of pages that may be reclaimed or moved | 1367 | allocation of pages that may be reclaimed or moved |
1311 | by the page migration subsystem. This means that | 1368 | by the page migration subsystem. This means that |
1312 | HugeTLB pages may not be allocated from this zone. | 1369 | HugeTLB pages may not be allocated from this zone. |
@@ -1847,6 +1904,18 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1847 | will be sent. | 1904 | will be sent. |
1848 | The default is to send the implementation identification | 1905 | The default is to send the implementation identification |
1849 | information. | 1906 | information. |
1907 | |||
1908 | nfs.recover_lost_locks = | ||
1909 | [NFSv4] Attempt to recover locks that were lost due | ||
1910 | to a lease timeout on the server. Please note that | ||
1911 | doing this risks data corruption, since there are | ||
1912 | no guarantees that the file will remain unchanged | ||
1913 | after the locks are lost. | ||
1914 | If you want to enable the kernel legacy behaviour of | ||
1915 | attempting to recover these locks, then set this | ||
1916 | parameter to '1'. | ||
1917 | The default parameter value of '0' causes the kernel | ||
1918 | not to attempt recovery of lost locks. | ||
1850 | 1919 | ||
1851 | nfsd.nfs4_disable_idmapping= | 1920 | nfsd.nfs4_disable_idmapping= |
1852 | [NFSv4] When set to the default of '1', the NFSv4 | 1921 | [NFSv4] When set to the default of '1', the NFSv4 |
@@ -2532,7 +2601,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2532 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes | 2601 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes |
2533 | See Documentation/blockdev/ramdisk.txt. | 2602 | See Documentation/blockdev/ramdisk.txt. |
2534 | 2603 | ||
2535 | rcu_nocbs= [KNL,BOOT] | 2604 | rcu_nocbs= [KNL] |
2536 | In kernels built with CONFIG_RCU_NOCB_CPU=y, set | 2605 | In kernels built with CONFIG_RCU_NOCB_CPU=y, set |
2537 | the specified list of CPUs to be no-callback CPUs. | 2606 | the specified list of CPUs to be no-callback CPUs. |
2538 | Invocation of these CPUs' RCU callbacks will | 2607 | Invocation of these CPUs' RCU callbacks will |
@@ -2545,7 +2614,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2545 | real-time workloads. It can also improve energy | 2614 | real-time workloads. It can also improve energy |
2546 | efficiency for asymmetric multiprocessors. | 2615 | efficiency for asymmetric multiprocessors. |
2547 | 2616 | ||
2548 | rcu_nocb_poll [KNL,BOOT] | 2617 | rcu_nocb_poll [KNL] |
2549 | Rather than requiring that offloaded CPUs | 2618 | Rather than requiring that offloaded CPUs |
2550 | (specified by rcu_nocbs= above) explicitly | 2619 | (specified by rcu_nocbs= above) explicitly |
2551 | awaken the corresponding "rcuoN" kthreads, | 2620 | awaken the corresponding "rcuoN" kthreads, |
@@ -2556,126 +2625,145 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2556 | energy efficiency by requiring that the kthreads | 2625 | energy efficiency by requiring that the kthreads |
2557 | periodically wake up to do the polling. | 2626 | periodically wake up to do the polling. |
2558 | 2627 | ||
2559 | rcutree.blimit= [KNL,BOOT] | 2628 | rcutree.blimit= [KNL] |
2560 | Set maximum number of finished RCU callbacks to process | 2629 | Set maximum number of finished RCU callbacks to process |
2561 | in one batch. | 2630 | in one batch. |
2562 | 2631 | ||
2563 | rcutree.fanout_leaf= [KNL,BOOT] | 2632 | rcutree.rcu_fanout_leaf= [KNL] |
2564 | Increase the number of CPUs assigned to each | 2633 | Increase the number of CPUs assigned to each |
2565 | leaf rcu_node structure. Useful for very large | 2634 | leaf rcu_node structure. Useful for very large |
2566 | systems. | 2635 | systems. |
2567 | 2636 | ||
2568 | rcutree.jiffies_till_first_fqs= [KNL,BOOT] | 2637 | rcutree.jiffies_till_first_fqs= [KNL] |
2569 | Set delay from grace-period initialization to | 2638 | Set delay from grace-period initialization to |
2570 | first attempt to force quiescent states. | 2639 | first attempt to force quiescent states. |
2571 | Units are jiffies, minimum value is zero, | 2640 | Units are jiffies, minimum value is zero, |
2572 | and maximum value is HZ. | 2641 | and maximum value is HZ. |
2573 | 2642 | ||
2574 | rcutree.jiffies_till_next_fqs= [KNL,BOOT] | 2643 | rcutree.jiffies_till_next_fqs= [KNL] |
2575 | Set delay between subsequent attempts to force | 2644 | Set delay between subsequent attempts to force |
2576 | quiescent states. Units are jiffies, minimum | 2645 | quiescent states. Units are jiffies, minimum |
2577 | value is one, and maximum value is HZ. | 2646 | value is one, and maximum value is HZ. |
2578 | 2647 | ||
2579 | rcutree.qhimark= [KNL,BOOT] | 2648 | rcutree.qhimark= [KNL] |
2580 | Set threshold of queued | 2649 | Set threshold of queued |
2581 | RCU callbacks over which batch limiting is disabled. | 2650 | RCU callbacks over which batch limiting is disabled. |
2582 | 2651 | ||
2583 | rcutree.qlowmark= [KNL,BOOT] | 2652 | rcutree.qlowmark= [KNL] |
2584 | Set threshold of queued RCU callbacks below which | 2653 | Set threshold of queued RCU callbacks below which |
2585 | batch limiting is re-enabled. | 2654 | batch limiting is re-enabled. |
2586 | 2655 | ||
2587 | rcutree.rcu_cpu_stall_suppress= [KNL,BOOT] | 2656 | rcutree.rcu_idle_gp_delay= [KNL] |
2588 | Suppress RCU CPU stall warning messages. | ||
2589 | |||
2590 | rcutree.rcu_cpu_stall_timeout= [KNL,BOOT] | ||
2591 | Set timeout for RCU CPU stall warning messages. | ||
2592 | |||
2593 | rcutree.rcu_idle_gp_delay= [KNL,BOOT] | ||
2594 | Set wakeup interval for idle CPUs that have | 2657 | Set wakeup interval for idle CPUs that have |
2595 | RCU callbacks (RCU_FAST_NO_HZ=y). | 2658 | RCU callbacks (RCU_FAST_NO_HZ=y). |
2596 | 2659 | ||
2597 | rcutree.rcu_idle_lazy_gp_delay= [KNL,BOOT] | 2660 | rcutree.rcu_idle_lazy_gp_delay= [KNL] |
2598 | Set wakeup interval for idle CPUs that have | 2661 | Set wakeup interval for idle CPUs that have |
2599 | only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y). | 2662 | only "lazy" RCU callbacks (RCU_FAST_NO_HZ=y). |
2600 | Lazy RCU callbacks are those which RCU can | 2663 | Lazy RCU callbacks are those which RCU can |
2601 | prove do nothing more than free memory. | 2664 | prove do nothing more than free memory. |
2602 | 2665 | ||
2603 | rcutorture.fqs_duration= [KNL,BOOT] | 2666 | rcutorture.fqs_duration= [KNL] |
2604 | Set duration of force_quiescent_state bursts. | 2667 | Set duration of force_quiescent_state bursts. |
2605 | 2668 | ||
2606 | rcutorture.fqs_holdoff= [KNL,BOOT] | 2669 | rcutorture.fqs_holdoff= [KNL] |
2607 | Set holdoff time within force_quiescent_state bursts. | 2670 | Set holdoff time within force_quiescent_state bursts. |
2608 | 2671 | ||
2609 | rcutorture.fqs_stutter= [KNL,BOOT] | 2672 | rcutorture.fqs_stutter= [KNL] |
2610 | Set wait time between force_quiescent_state bursts. | 2673 | Set wait time between force_quiescent_state bursts. |
2611 | 2674 | ||
2612 | rcutorture.irqreader= [KNL,BOOT] | 2675 | rcutorture.gp_exp= [KNL] |
2613 | Test RCU readers from irq handlers. | 2676 | Use expedited update-side primitives. |
2677 | |||
2678 | rcutorture.gp_normal= [KNL] | ||
2679 | Use normal (non-expedited) update-side primitives. | ||
2680 | If both gp_exp and gp_normal are set, do both. | ||
2681 | If neither gp_exp nor gp_normal are set, still | ||
2682 | do both. | ||
2614 | 2683 | ||
2615 | rcutorture.n_barrier_cbs= [KNL,BOOT] | 2684 | rcutorture.n_barrier_cbs= [KNL] |
2616 | Set callbacks/threads for rcu_barrier() testing. | 2685 | Set callbacks/threads for rcu_barrier() testing. |
2617 | 2686 | ||
2618 | rcutorture.nfakewriters= [KNL,BOOT] | 2687 | rcutorture.nfakewriters= [KNL] |
2619 | Set number of concurrent RCU writers. These just | 2688 | Set number of concurrent RCU writers. These just |
2620 | stress RCU, they don't participate in the actual | 2689 | stress RCU, they don't participate in the actual |
2621 | test, hence the "fake". | 2690 | test, hence the "fake". |
2622 | 2691 | ||
2623 | rcutorture.nreaders= [KNL,BOOT] | 2692 | rcutorture.nreaders= [KNL] |
2624 | Set number of RCU readers. | 2693 | Set number of RCU readers. |
2625 | 2694 | ||
2626 | rcutorture.onoff_holdoff= [KNL,BOOT] | 2695 | rcutorture.object_debug= [KNL] |
2696 | Enable debug-object double-call_rcu() testing. | ||
2697 | |||
2698 | rcutorture.onoff_holdoff= [KNL] | ||
2627 | Set time (s) after boot for CPU-hotplug testing. | 2699 | Set time (s) after boot for CPU-hotplug testing. |
2628 | 2700 | ||
2629 | rcutorture.onoff_interval= [KNL,BOOT] | 2701 | rcutorture.onoff_interval= [KNL] |
2630 | Set time (s) between CPU-hotplug operations, or | 2702 | Set time (s) between CPU-hotplug operations, or |
2631 | zero to disable CPU-hotplug testing. | 2703 | zero to disable CPU-hotplug testing. |
2632 | 2704 | ||
2633 | rcutorture.shuffle_interval= [KNL,BOOT] | 2705 | rcutorture.rcutorture_runnable= [BOOT] |
2706 | Start rcutorture running at boot time. | ||
2707 | |||
2708 | rcutorture.shuffle_interval= [KNL] | ||
2634 | Set task-shuffle interval (s). Shuffling tasks | 2709 | Set task-shuffle interval (s). Shuffling tasks |
2635 | allows some CPUs to go into dyntick-idle mode | 2710 | allows some CPUs to go into dyntick-idle mode |
2636 | during the rcutorture test. | 2711 | during the rcutorture test. |
2637 | 2712 | ||
2638 | rcutorture.shutdown_secs= [KNL,BOOT] | 2713 | rcutorture.shutdown_secs= [KNL] |
2639 | Set time (s) after boot system shutdown. This | 2714 | Set time (s) after boot system shutdown. This |
2640 | is useful for hands-off automated testing. | 2715 | is useful for hands-off automated testing. |
2641 | 2716 | ||
2642 | rcutorture.stall_cpu= [KNL,BOOT] | 2717 | rcutorture.stall_cpu= [KNL] |
2643 | Duration of CPU stall (s) to test RCU CPU stall | 2718 | Duration of CPU stall (s) to test RCU CPU stall |
2644 | warnings, zero to disable. | 2719 | warnings, zero to disable. |
2645 | 2720 | ||
2646 | rcutorture.stall_cpu_holdoff= [KNL,BOOT] | 2721 | rcutorture.stall_cpu_holdoff= [KNL] |
2647 | Time to wait (s) after boot before inducing stall. | 2722 | Time to wait (s) after boot before inducing stall. |
2648 | 2723 | ||
2649 | rcutorture.stat_interval= [KNL,BOOT] | 2724 | rcutorture.stat_interval= [KNL] |
2650 | Time (s) between statistics printk()s. | 2725 | Time (s) between statistics printk()s. |
2651 | 2726 | ||
2652 | rcutorture.stutter= [KNL,BOOT] | 2727 | rcutorture.stutter= [KNL] |
2653 | Time (s) to stutter testing, for example, specifying | 2728 | Time (s) to stutter testing, for example, specifying |
2654 | five seconds causes the test to run for five seconds, | 2729 | five seconds causes the test to run for five seconds, |
2655 | wait for five seconds, and so on. This tests RCU's | 2730 | wait for five seconds, and so on. This tests RCU's |
2656 | ability to transition abruptly to and from idle. | 2731 | ability to transition abruptly to and from idle. |
2657 | 2732 | ||
2658 | rcutorture.test_boost= [KNL,BOOT] | 2733 | rcutorture.test_boost= [KNL] |
2659 | Test RCU priority boosting? 0=no, 1=maybe, 2=yes. | 2734 | Test RCU priority boosting? 0=no, 1=maybe, 2=yes. |
2660 | "Maybe" means test if the RCU implementation | 2735 | "Maybe" means test if the RCU implementation |
2661 | under test support RCU priority boosting. | 2736 | under test support RCU priority boosting. |
2662 | 2737 | ||
2663 | rcutorture.test_boost_duration= [KNL,BOOT] | 2738 | rcutorture.test_boost_duration= [KNL] |
2664 | Duration (s) of each individual boost test. | 2739 | Duration (s) of each individual boost test. |
2665 | 2740 | ||
2666 | rcutorture.test_boost_interval= [KNL,BOOT] | 2741 | rcutorture.test_boost_interval= [KNL] |
2667 | Interval (s) between each boost test. | 2742 | Interval (s) between each boost test. |
2668 | 2743 | ||
2669 | rcutorture.test_no_idle_hz= [KNL,BOOT] | 2744 | rcutorture.test_no_idle_hz= [KNL] |
2670 | Test RCU's dyntick-idle handling. See also the | 2745 | Test RCU's dyntick-idle handling. See also the |
2671 | rcutorture.shuffle_interval parameter. | 2746 | rcutorture.shuffle_interval parameter. |
2672 | 2747 | ||
2673 | rcutorture.torture_type= [KNL,BOOT] | 2748 | rcutorture.torture_type= [KNL] |
2674 | Specify the RCU implementation to test. | 2749 | Specify the RCU implementation to test. |
2675 | 2750 | ||
2676 | rcutorture.verbose= [KNL,BOOT] | 2751 | rcutorture.verbose= [KNL] |
2677 | Enable additional printk() statements. | 2752 | Enable additional printk() statements. |
2678 | 2753 | ||
2754 | rcupdate.rcu_expedited= [KNL] | ||
2755 | Use expedited grace-period primitives, for | ||
2756 | example, synchronize_rcu_expedited() instead | ||
2757 | of synchronize_rcu(). This reduces latency, | ||
2758 | but can increase CPU utilization, degrade | ||
2759 | real-time latency, and degrade energy efficiency. | ||
2760 | |||
2761 | rcupdate.rcu_cpu_stall_suppress= [KNL] | ||
2762 | Suppress RCU CPU stall warning messages. | ||
2763 | |||
2764 | rcupdate.rcu_cpu_stall_timeout= [KNL] | ||
2765 | Set timeout for RCU CPU stall warning messages. | ||
2766 | |||
2679 | rdinit= [KNL] | 2767 | rdinit= [KNL] |
2680 | Format: <full_path> | 2768 | Format: <full_path> |
2681 | Run specified binary instead of /init from the ramdisk, | 2769 | Run specified binary instead of /init from the ramdisk, |
@@ -2953,7 +3041,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2953 | improve throughput, but will also increase the | 3041 | improve throughput, but will also increase the |
2954 | amount of memory reserved for use by the client. | 3042 | amount of memory reserved for use by the client. |
2955 | 3043 | ||
2956 | swapaccount[=0|1] | 3044 | swapaccount=[0|1] |
2957 | [KNL] Enable accounting of swap in memory resource | 3045 | [KNL] Enable accounting of swap in memory resource |
2958 | controller if no parameter or 1 is given or disable | 3046 | controller if no parameter or 1 is given or disable |
2959 | it if 0 is given (See Documentation/cgroups/memory.txt) | 3047 | it if 0 is given (See Documentation/cgroups/memory.txt) |
@@ -3322,6 +3410,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3322 | them quite hard to use for exploits but | 3410 | them quite hard to use for exploits but |
3323 | might break your system. | 3411 | might break your system. |
3324 | 3412 | ||
3413 | vt.color= [VT] Default text color. | ||
3414 | Format: 0xYX, X = foreground, Y = background. | ||
3415 | Default: 0x07 = light gray on black. | ||
3416 | |||
3325 | vt.cur_default= [VT] Default cursor shape. | 3417 | vt.cur_default= [VT] Default cursor shape. |
3326 | Format: 0xCCBBAA, where AA, BB, and CC are the same as | 3418 | Format: 0xCCBBAA, where AA, BB, and CC are the same as |
3327 | the parameters of the <Esc>[?A;B;Cc escape sequence; | 3419 | the parameters of the <Esc>[?A;B;Cc escape sequence; |
@@ -3361,6 +3453,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3361 | overridden by individual drivers. 0 will hide | 3453 | overridden by individual drivers. 0 will hide |
3362 | cursors, 1 will display them. | 3454 | cursors, 1 will display them. |
3363 | 3455 | ||
3456 | vt.italic= [VT] Default color for italic text; 0-15. | ||
3457 | Default: 2 = green. | ||
3458 | |||
3459 | vt.underline= [VT] Default color for underlined text; 0-15. | ||
3460 | Default: 3 = cyan. | ||
3461 | |||
3364 | watchdog timers [HW,WDT] For information on watchdog timers, | 3462 | watchdog timers [HW,WDT] For information on watchdog timers, |
3365 | see Documentation/watchdog/watchdog-parameters.txt | 3463 | see Documentation/watchdog/watchdog-parameters.txt |
3366 | or other driver-specific files in the | 3464 | or other driver-specific files in the |
@@ -3394,11 +3492,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3394 | default x2apic cluster mode on platforms | 3492 | default x2apic cluster mode on platforms |
3395 | supporting x2apic. | 3493 | supporting x2apic. |
3396 | 3494 | ||
3397 | x86_mrst_timer= [X86-32,APBT] | 3495 | x86_intel_mid_timer= [X86-32,APBT] |
3398 | Choose timer option for x86 Moorestown MID platform. | 3496 | Choose timer option for x86 Intel MID platform. |
3399 | Two valid options are apbt timer only and lapic timer | 3497 | Two valid options are apbt timer only and lapic timer |
3400 | plus one apbt timer for broadcast timer. | 3498 | plus one apbt timer for broadcast timer. |
3401 | x86_mrst_timer=apbt_only | lapic_and_apbt | 3499 | x86_intel_mid_timer=apbt_only | lapic_and_apbt |
3402 | 3500 | ||
3403 | xen_emul_unplug= [HW,X86,XEN] | 3501 | xen_emul_unplug= [HW,X86,XEN] |
3404 | Unplug Xen emulated devices | 3502 | Unplug Xen emulated devices |
@@ -3412,6 +3510,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3412 | the unplug protocol | 3510 | the unplug protocol |
3413 | never -- do not unplug even if version check succeeds | 3511 | never -- do not unplug even if version check succeeds |
3414 | 3512 | ||
3513 | xen_nopvspin [X86,XEN] | ||
3514 | Disables the ticketlock slowpath using Xen PV | ||
3515 | optimizations. | ||
3516 | |||
3415 | xirc2ps_cs= [NET,PCMCIA] | 3517 | xirc2ps_cs= [NET,PCMCIA] |
3416 | Format: | 3518 | Format: |
3417 | <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] | 3519 | <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] |
diff --git a/Documentation/kernel-per-CPU-kthreads.txt b/Documentation/kernel-per-CPU-kthreads.txt index 32351bfabf20..827104fb9364 100644 --- a/Documentation/kernel-per-CPU-kthreads.txt +++ b/Documentation/kernel-per-CPU-kthreads.txt | |||
@@ -181,12 +181,17 @@ To reduce its OS jitter, do any of the following: | |||
181 | make sure that this is safe on your particular system. | 181 | make sure that this is safe on your particular system. |
182 | d. It is not possible to entirely get rid of OS jitter | 182 | d. It is not possible to entirely get rid of OS jitter |
183 | from vmstat_update() on CONFIG_SMP=y systems, but you | 183 | from vmstat_update() on CONFIG_SMP=y systems, but you |
184 | can decrease its frequency by writing a large value to | 184 | can decrease its frequency by writing a large value |
185 | /proc/sys/vm/stat_interval. The default value is HZ, | 185 | to /proc/sys/vm/stat_interval. The default value is |
186 | for an interval of one second. Of course, larger values | 186 | HZ, for an interval of one second. Of course, larger |
187 | will make your virtual-memory statistics update more | 187 | values will make your virtual-memory statistics update |
188 | slowly. Of course, you can also run your workload at | 188 | more slowly. Of course, you can also run your workload |
189 | a real-time priority, thus preempting vmstat_update(). | 189 | at a real-time priority, thus preempting vmstat_update(), |
190 | but if your workload is CPU-bound, this is a bad idea. | ||
191 | However, there is an RFC patch from Christoph Lameter | ||
192 | (based on an earlier one from Gilad Ben-Yossef) that | ||
193 | reduces or even eliminates vmstat overhead for some | ||
194 | workloads at https://lkml.org/lkml/2013/9/4/379. | ||
190 | e. If running on high-end powerpc servers, build with | 195 | e. If running on high-end powerpc servers, build with |
191 | CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS | 196 | CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS |
192 | daemon from running on each CPU every second or so. | 197 | daemon from running on each CPU every second or so. |
diff --git a/Documentation/kmemcheck.txt b/Documentation/kmemcheck.txt index c28f82895d6b..9398a501fdb9 100644 --- a/Documentation/kmemcheck.txt +++ b/Documentation/kmemcheck.txt | |||
@@ -91,9 +91,9 @@ information from the kmemcheck warnings, which is extremely valuable in | |||
91 | debugging a problem. This option is not mandatory, however, because it slows | 91 | debugging a problem. This option is not mandatory, however, because it slows |
92 | down the compilation process and produces a much bigger kernel image. | 92 | down the compilation process and produces a much bigger kernel image. |
93 | 93 | ||
94 | Now the kmemcheck menu should be visible (under "Kernel hacking" / "kmemcheck: | 94 | Now the kmemcheck menu should be visible (under "Kernel hacking" / "Memory |
95 | trap use of uninitialized memory"). Here follows a description of the | 95 | Debugging" / "kmemcheck: trap use of uninitialized memory"). Here follows |
96 | kmemcheck configuration variables: | 96 | a description of the kmemcheck configuration variables: |
97 | 97 | ||
98 | o CONFIG_KMEMCHECK | 98 | o CONFIG_KMEMCHECK |
99 | 99 | ||
diff --git a/Documentation/ko_KR/HOWTO b/Documentation/ko_KR/HOWTO index 2f48f205fedc..680e64635958 100644 --- a/Documentation/ko_KR/HOWTO +++ b/Documentation/ko_KR/HOWTO | |||
@@ -182,8 +182,8 @@ Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, H | |||
182 | 프로젝트를 봐야 한다. | 182 | 프로젝트를 봐야 한다. |
183 | http://kernelnewbies.org | 183 | http://kernelnewbies.org |
184 | 그곳은 거의 모든 종류의 기본적인 커널 개발 질문들(질문하기 전에 먼저 | 184 | 그곳은 거의 모든 종류의 기본적인 커널 개발 질문들(질문하기 전에 먼저 |
185 | 아카이브를 찾아봐라. 과거에 이미 답변되었을 수도 있다)을 할수있는 도움이 | 185 | 아카이브를 찾아봐라. 과거에 이미 답변되었을 수도 있다)을 할 수 있는 도움이 |
186 | 될만한 메일링 리스트가 있다. 또한 실시간으로 질문 할수 있는 IRC 채널도 | 186 | 될만한 메일링 리스트가 있다. 또한 실시간으로 질문 할 수 있는 IRC 채널도 |
187 | 가지고 있으며 리눅스 커널 개발을 배우는 데 유용한 문서들을 보유하고 있다. | 187 | 가지고 있으며 리눅스 커널 개발을 배우는 데 유용한 문서들을 보유하고 있다. |
188 | 188 | ||
189 | 웹사이트는 코드구성, 서브시스템들, 그리고 현재 프로젝트들 | 189 | 웹사이트는 코드구성, 서브시스템들, 그리고 현재 프로젝트들 |
@@ -245,7 +245,7 @@ Documentation/DocBook/ 디렉토리 내에서 만들어지며 PDF, Postscript, H | |||
245 | 것을 기억해라. 왜냐하면 변경이 자체내에서만 발생하고 추가된 코드가 | 245 | 것을 기억해라. 왜냐하면 변경이 자체내에서만 발생하고 추가된 코드가 |
246 | 드라이버 외부의 다른 부분에는 영향을 주지 않으므로 그런 변경은 | 246 | 드라이버 외부의 다른 부분에는 영향을 주지 않으므로 그런 변경은 |
247 | 회귀(역자주: 이전에는 존재하지 않았지만 새로운 기능추가나 변경으로 인해 | 247 | 회귀(역자주: 이전에는 존재하지 않았지만 새로운 기능추가나 변경으로 인해 |
248 | 생겨난 버그)를 일으킬 만한 위험을 가지고 있지 않기 때문이다. -rc1이 | 248 | 생겨난 버그)를 일으킬 만한 위험을 가지고 있지 않기 때문이다. -rc1이 |
249 | 배포된 이후에 git를 사용하여 패치들을 Linus에게 보낼수 있지만 패치들은 | 249 | 배포된 이후에 git를 사용하여 패치들을 Linus에게 보낼수 있지만 패치들은 |
250 | 공식적인 메일링 리스트로 보내서 검토를 받을 필요가 있다. | 250 | 공식적인 메일링 리스트로 보내서 검토를 받을 필요가 있다. |
251 | - 새로운 -rc는 Linus가 현재 git tree가 테스트 하기에 충분히 안정된 상태에 | 251 | - 새로운 -rc는 Linus가 현재 git tree가 테스트 하기에 충분히 안정된 상태에 |
@@ -455,7 +455,7 @@ bugme-janitor 메일링 리스트(bugzilla에 모든 변화들이 여기서 메 | |||
455 | - 의견 | 455 | - 의견 |
456 | - 변경을 위한 요구 | 456 | - 변경을 위한 요구 |
457 | - 당위성을 위한 요구 | 457 | - 당위성을 위한 요구 |
458 | - 고 | 458 | - 묵 |
459 | 459 | ||
460 | 기억하라. 이것들은 여러분의 패치가 커널로 들어가기 위한 과정이다. 여러분의 | 460 | 기억하라. 이것들은 여러분의 패치가 커널로 들어가기 위한 과정이다. 여러분의 |
461 | 패치들은 비판과 다른 의견을 받을 수 있고 그것들을 기술적인 레벨로 평가하고 | 461 | 패치들은 비판과 다른 의견을 받을 수 있고 그것들을 기술적인 레벨로 평가하고 |
@@ -472,7 +472,7 @@ bugme-janitor 메일링 리스트(bugzilla에 모든 변화들이 여기서 메 | |||
472 | 가능한한 가장 좋은 기술적인 해답을 찾고 있는 커뮤니티에서는 항상 | 472 | 가능한한 가장 좋은 기술적인 해답을 찾고 있는 커뮤니티에서는 항상 |
473 | 어떤 패치가 얼마나 좋은지에 관하여 다른 의견들이 있을 수 있다. 여러분은 | 473 | 어떤 패치가 얼마나 좋은지에 관하여 다른 의견들이 있을 수 있다. 여러분은 |
474 | 협조적이어야 하고 기꺼이 여러분의 생각을 커널 내에 맞추어야 한다. 아니면 | 474 | 협조적이어야 하고 기꺼이 여러분의 생각을 커널 내에 맞추어야 한다. 아니면 |
475 | 적어도 여러분의 것이 가치있다는 것을 명하여야 한다. 잘못된 것도 여러분이 | 475 | 적어도 여러분의 것이 가치있다는 것을 명하여야 한다. 잘못된 것도 여러분이 |
476 | 올바른 방향의 해결책으로 이끌어갈 의지가 있다면 받아들여질 것이라는 점을 | 476 | 올바른 방향의 해결책으로 이끌어갈 의지가 있다면 받아들여질 것이라는 점을 |
477 | 기억하라. | 477 | 기억하라. |
478 | 478 | ||
@@ -488,21 +488,21 @@ bugme-janitor 메일링 리스트(bugzilla에 모든 변화들이 여기서 메 | |||
488 | 커널 커뮤니티는 가장 전통적인 회사의 개발 환경과는 다르다. 여기에 여러분들의 | 488 | 커널 커뮤니티는 가장 전통적인 회사의 개발 환경과는 다르다. 여기에 여러분들의 |
489 | 문제를 피하기 위한 목록이 있다. | 489 | 문제를 피하기 위한 목록이 있다. |
490 | 여러분들이 제안한 변경들에 관하여 말할 때 좋은 것들 : | 490 | 여러분들이 제안한 변경들에 관하여 말할 때 좋은 것들 : |
491 | - "이것은 여러 문제들을 해합니다." | 491 | - "이것은 여러 문제들을 해합니다." |
492 | - "이것은 2000 라인의 코드를 거합니다." | 492 | - "이것은 2000 라인의 코드를 입니다." |
493 | - "이것은 내가 말하려는 것에 관해 설명하는 패치입니다." | 493 | - "이것은 내가 말하려는 것에 관해 설명하는 패치입니다." |
494 | - "나는 5개의 다른 아키텍쳐에서 그것을 테스트했로..." | 494 | - "나는 5개의 다른 아키텍쳐에서 그것을 테스트 했으..." |
495 | - "여기에 일련의 작은 패치들이 있음로..." | 495 | - "여기에 일련의 작은 패치들이 있..." |
496 | - "이것은 일반적인 머신에서 성능을 향상시으로..." | 496 | - "이것은 일반적인 머신에서 성능을 향상으로..." |
497 | 497 | ||
498 | 여러분들이 말할 때 피해야 할 좋지 않은 것들 : | 498 | 여러분들이 말할 때 피해야 할 좋지 않은 것들 : |
499 | - "우리를 그것을 AIT/ptx/Solaris에서 이러한 방법으로 했다. 그러므로 그것은 좋은 것임에 틀립없다..." | 499 | - "우리는 그것을 AIX/ptx/Solaris에서 이러한 방법으로 했다. 그러므로 그것은 좋은 것임에 틀림없다..." |
500 | - "나는 20년동안 이것을 해왔다. 그러므로..." | 500 | - "나는 20년동안 이것을 해왔다. 그러므로..." |
501 | - "이것은 돈을 벌기위해 나의 회사가 필요로 하는 것이다." | 501 | - "이것은 돈을 벌기위해 나의 회사가 필요로 하는 것이다." |
502 | - "이것은 우리의 엔터프라이즈 상품 라인을 위한 것이다." | 502 | - "이것은 우리의 엔터프라이즈 상품 라인을 위한 것이다." |
503 | - "여기에 나의 생각을 말하고 있는 1000 페이지 설계 문서가 있다." | 503 | - "여기에 나의 생각을 말하고 있는 1000 페이지 설계 문서가 있다." |
504 | - "나는 6달동안 이것을 했으니..." | 504 | - "나는 6달동안 이것을 했으니..." |
505 | - "여기에 5000라인 짜리 패치가 있으니..." | 505 | - "여기에 5000 라인 짜리 패치가 있으니..." |
506 | - "나는 현재 뒤죽박죽인 것을 재작성했다. 그리고 여기에..." | 506 | - "나는 현재 뒤죽박죽인 것을 재작성했다. 그리고 여기에..." |
507 | - "나는 마감시한을 가지고 있으므로 이 패치는 지금 적용될 필요가 있다." | 507 | - "나는 마감시한을 가지고 있으므로 이 패치는 지금 적용될 필요가 있다." |
508 | 508 | ||
@@ -574,6 +574,7 @@ Pat이라는 이름을 가진 여자가 있을 수도 있는 것이다. 리눅 | |||
574 | 또한 완성되지 않았고 "나중에 수정될 것이다." 와 같은 것들을 포함하는 | 574 | 또한 완성되지 않았고 "나중에 수정될 것이다." 와 같은 것들을 포함하는 |
575 | 패치들은 받아들여지지 않을 것이라는 점을 유념하라. | 575 | 패치들은 받아들여지지 않을 것이라는 점을 유념하라. |
576 | 576 | ||
577 | |||
577 | 변경을 정당화해라 | 578 | 변경을 정당화해라 |
578 | ----------------- | 579 | ----------------- |
579 | 580 | ||
diff --git a/Documentation/ko_KR/stable_api_nonsense.txt b/Documentation/ko_KR/stable_api_nonsense.txt index 8f2b0e1d98c4..51f85ade4190 100644 --- a/Documentation/ko_KR/stable_api_nonsense.txt +++ b/Documentation/ko_KR/stable_api_nonsense.txt | |||
@@ -106,12 +106,12 @@ Greg Kroah-Hartman <greg@kroah.com> | |||
106 | --------------------------------- | 106 | --------------------------------- |
107 | 107 | ||
108 | 리눅스 커널 드라이버를 계속해서 메인 커널 트리에 반영하지 않고 | 108 | 리눅스 커널 드라이버를 계속해서 메인 커널 트리에 반영하지 않고 |
109 | 유지보수하려고 하는 사들과 이 문제를 논의하게 되면 훨씬 더 | 109 | 유지보수하려고 하는 사들과 이 문제를 논의하게 되면 훨씬 더 |
110 | "논란의 여지가 많은" 주제가 될 것이다. | 110 | "논란의 여지가 많은" 주제가 될 것이다. |
111 | 111 | ||
112 | 리눅스 커널 개발은 끊임없이 빠른 속도로 이루어지고 있으며 결코 | 112 | 리눅스 커널 개발은 끊임없이 빠른 속도로 이루어지고 있으며 결코 |
113 | 느슨해진 적이 없다. 커널 개발자들이 현재 인터페이스들에서 버그를 | 113 | 느슨해진 적이 없다. 커널 개발자들이 현재 인터페이스들에서 버그를 |
114 | 발견하거나 무엇인가 할수 있는 더 좋은 방법을 찾게 되었다고 하자. | 114 | 발견하거나 무엇인가 할 수 있는 더 좋은 방법을 찾게 되었다고 하자. |
115 | 그들이 발견한 것을 실행한다면 아마도 더 잘 동작하도록 현재 인터페이스들을 | 115 | 그들이 발견한 것을 실행한다면 아마도 더 잘 동작하도록 현재 인터페이스들을 |
116 | 수정하게 될 것이다. 그들이 그런 일을 하게되면 함수 이름들은 변하게 되고, | 116 | 수정하게 될 것이다. 그들이 그런 일을 하게되면 함수 이름들은 변하게 되고, |
117 | 구조체들은 늘어나거나 줄어들게 되고, 함수 파라미터들은 재작업될 것이다. | 117 | 구조체들은 늘어나거나 줄어들게 되고, 함수 파라미터들은 재작업될 것이다. |
@@ -174,7 +174,7 @@ GPL을 따르는 배포 드라이버에 관해 얘기하고 있다는 것을 상 | |||
174 | 동작하는 것을 보장한다. | 174 | 동작하는 것을 보장한다. |
175 | 175 | ||
176 | 메인 커널 트리에 여러분의 드라이버를 반영하면 얻게 되는 장점들은 다음과 같다. | 176 | 메인 커널 트리에 여러분의 드라이버를 반영하면 얻게 되는 장점들은 다음과 같다. |
177 | - 관리 드는 비용(원래 개발자의)은 줄어줄면서 드라이버의 질은 향상될 것이다. | 177 | - 관리 드는 비용(원래 개발자의)은 줄어줄면서 드라이버의 질은 향상될 것이다. |
178 | - 다른 개발자들이 여러분의 드라이버에 기능들을 추가 할 것이다. | 178 | - 다른 개발자들이 여러분의 드라이버에 기능들을 추가 할 것이다. |
179 | - 다른 사람들은 여러분의 드라이버에 버그를 발견하고 수정할 것이다. | 179 | - 다른 사람들은 여러분의 드라이버에 버그를 발견하고 수정할 것이다. |
180 | - 다른 사람들은 여러분의 드라이버의 개선점을 찾을 줄 것이다. | 180 | - 다른 사람들은 여러분의 드라이버의 개선점을 찾을 줄 것이다. |
diff --git a/Documentation/laptops/asus-laptop.txt b/Documentation/laptops/asus-laptop.txt index 69f9fb3701e0..79a1bc675a8d 100644 --- a/Documentation/laptops/asus-laptop.txt +++ b/Documentation/laptops/asus-laptop.txt | |||
@@ -8,8 +8,8 @@ http://acpi4asus.sf.net/ | |||
8 | 8 | ||
9 | This driver provides support for extra features of ACPI-compatible ASUS laptops. | 9 | This driver provides support for extra features of ACPI-compatible ASUS laptops. |
10 | It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or | 10 | It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or |
11 | VICTOR XP7210 for example). It makes all the extra buttons generate standard | 11 | VICTOR XP7210 for example). It makes all the extra buttons generate input |
12 | ACPI events that go through /proc/acpi/events and input events (like keyboards). | 12 | events (like keyboards). |
13 | On some models adds support for changing the display brightness and output, | 13 | On some models adds support for changing the display brightness and output, |
14 | switching the LCD backlight on and off, and most importantly, allows you to | 14 | switching the LCD backlight on and off, and most importantly, allows you to |
15 | blink those fancy LEDs intended for reporting mail and wireless status. | 15 | blink those fancy LEDs intended for reporting mail and wireless status. |
@@ -55,8 +55,8 @@ Usage | |||
55 | DSDT) to me. | 55 | DSDT) to me. |
56 | 56 | ||
57 | That's all, now, all the events generated by the hotkeys of your laptop | 57 | That's all, now, all the events generated by the hotkeys of your laptop |
58 | should be reported in your /proc/acpi/event entry. You can check with | 58 | should be reported via netlink events. You can check with |
59 | "acpi_listen". | 59 | "acpi_genl monitor" (part of the acpica project). |
60 | 60 | ||
61 | Hotkeys are also reported as input keys (like keyboards) you can check | 61 | Hotkeys are also reported as input keys (like keyboards) you can check |
62 | which key are supported using "xev" under X11. | 62 | which key are supported using "xev" under X11. |
diff --git a/Documentation/laptops/sony-laptop.txt b/Documentation/laptops/sony-laptop.txt index 0d5ac7f5287e..978b1e615155 100644 --- a/Documentation/laptops/sony-laptop.txt +++ b/Documentation/laptops/sony-laptop.txt | |||
@@ -12,10 +12,10 @@ Fn keys (hotkeys): | |||
12 | ------------------ | 12 | ------------------ |
13 | Some models report hotkeys through the SNC or SPIC devices, such events are | 13 | Some models report hotkeys through the SNC or SPIC devices, such events are |
14 | reported both through the ACPI subsystem as acpi events and through the INPUT | 14 | reported both through the ACPI subsystem as acpi events and through the INPUT |
15 | subsystem. See the logs of acpid or /proc/acpi/event and | 15 | subsystem. See the logs of /proc/bus/input/devices to find out what those |
16 | /proc/bus/input/devices to find out what those events are and which input | 16 | events are and which input devices are created by the driver. |
17 | devices are created by the driver. Additionally, loading the driver with the | 17 | Additionally, loading the driver with the debug option will report all events |
18 | debug option will report all events in the kernel log. | 18 | in the kernel log. |
19 | 19 | ||
20 | The "scancodes" passed to the input system (that can be remapped with udev) | 20 | The "scancodes" passed to the input system (that can be remapped with udev) |
21 | are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c | 21 | are indexes to the table "sony_laptop_input_keycode_map" in the sony-laptop.c |
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt index cf7bc6cb9719..fc04c14de4bb 100644 --- a/Documentation/laptops/thinkpad-acpi.txt +++ b/Documentation/laptops/thinkpad-acpi.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | ThinkPad ACPI Extras Driver | 1 | ThinkPad ACPI Extras Driver |
2 | 2 | ||
3 | Version 0.24 | 3 | Version 0.25 |
4 | December 11th, 2009 | 4 | October 16th, 2013 |
5 | 5 | ||
6 | Borislav Deianov <borislav@users.sf.net> | 6 | Borislav Deianov <borislav@users.sf.net> |
7 | Henrique de Moraes Holschuh <hmh@hmh.eng.br> | 7 | Henrique de Moraes Holschuh <hmh@hmh.eng.br> |
@@ -329,20 +329,6 @@ sysfs notes: | |||
329 | 329 | ||
330 | This attribute has poll()/select() support. | 330 | This attribute has poll()/select() support. |
331 | 331 | ||
332 | hotkey_report_mode: | ||
333 | Returns the state of the procfs ACPI event report mode | ||
334 | filter for hot keys. If it is set to 1 (the default), | ||
335 | all hot key presses are reported both through the input | ||
336 | layer and also as ACPI events through procfs (but not | ||
337 | through netlink). If it is set to 2, hot key presses | ||
338 | are reported only through the input layer. | ||
339 | |||
340 | This attribute is read-only in kernels 2.6.23 or later, | ||
341 | and read-write on earlier kernels. | ||
342 | |||
343 | May return -EPERM (write access locked out by module | ||
344 | parameter) or -EACCES (read-only). | ||
345 | |||
346 | wakeup_reason: | 332 | wakeup_reason: |
347 | Set to 1 if the system is waking up because the user | 333 | Set to 1 if the system is waking up because the user |
348 | requested a bay ejection. Set to 2 if the system is | 334 | requested a bay ejection. Set to 2 if the system is |
@@ -518,24 +504,21 @@ SW_TABLET_MODE Tablet ThinkPads HKEY events 0x5009 and 0x500A | |||
518 | Non hotkey ACPI HKEY event map: | 504 | Non hotkey ACPI HKEY event map: |
519 | ------------------------------- | 505 | ------------------------------- |
520 | 506 | ||
521 | Events that are not propagated by the driver, except for legacy | ||
522 | compatibility purposes when hotkey_report_mode is set to 1: | ||
523 | |||
524 | 0x5001 Lid closed | ||
525 | 0x5002 Lid opened | ||
526 | 0x5009 Tablet swivel: switched to tablet mode | ||
527 | 0x500A Tablet swivel: switched to normal mode | ||
528 | 0x7000 Radio Switch may have changed state | ||
529 | |||
530 | Events that are never propagated by the driver: | 507 | Events that are never propagated by the driver: |
531 | 508 | ||
532 | 0x2304 System is waking up from suspend to undock | 509 | 0x2304 System is waking up from suspend to undock |
533 | 0x2305 System is waking up from suspend to eject bay | 510 | 0x2305 System is waking up from suspend to eject bay |
534 | 0x2404 System is waking up from hibernation to undock | 511 | 0x2404 System is waking up from hibernation to undock |
535 | 0x2405 System is waking up from hibernation to eject bay | 512 | 0x2405 System is waking up from hibernation to eject bay |
513 | 0x5001 Lid closed | ||
514 | 0x5002 Lid opened | ||
515 | 0x5009 Tablet swivel: switched to tablet mode | ||
516 | 0x500A Tablet swivel: switched to normal mode | ||
536 | 0x5010 Brightness level changed/control event | 517 | 0x5010 Brightness level changed/control event |
537 | 0x6000 KEYBOARD: Numlock key pressed | 518 | 0x6000 KEYBOARD: Numlock key pressed |
538 | 0x6005 KEYBOARD: Fn key pressed (TO BE VERIFIED) | 519 | 0x6005 KEYBOARD: Fn key pressed (TO BE VERIFIED) |
520 | 0x7000 Radio Switch may have changed state | ||
521 | |||
539 | 522 | ||
540 | Events that are propagated by the driver to userspace: | 523 | Events that are propagated by the driver to userspace: |
541 | 524 | ||
@@ -574,50 +557,6 @@ operating system is to force either an immediate suspend or hibernate | |||
574 | cycle, or a system shutdown. Obviously, something is very wrong if this | 557 | cycle, or a system shutdown. Obviously, something is very wrong if this |
575 | happens. | 558 | happens. |
576 | 559 | ||
577 | Compatibility notes: | ||
578 | |||
579 | ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never | ||
580 | supported the input layer, and sent events over the procfs ACPI event | ||
581 | interface. | ||
582 | |||
583 | To avoid sending duplicate events over the input layer and the ACPI | ||
584 | event interface, thinkpad-acpi 0.16 implements a module parameter | ||
585 | (hotkey_report_mode), and also a sysfs device attribute with the same | ||
586 | name. | ||
587 | |||
588 | Make no mistake here: userspace is expected to switch to using the input | ||
589 | layer interface of thinkpad-acpi, together with the ACPI netlink event | ||
590 | interface in kernels 2.6.23 and later, or with the ACPI procfs event | ||
591 | interface in kernels 2.6.22 and earlier. | ||
592 | |||
593 | If no hotkey_report_mode module parameter is specified (or it is set to | ||
594 | zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22 | ||
595 | and earlier, also allows one to change the hotkey_report_mode through | ||
596 | sysfs. In kernels 2.6.23 and later, where the netlink ACPI event | ||
597 | interface is available, hotkey_report_mode cannot be changed through | ||
598 | sysfs (it is read-only). | ||
599 | |||
600 | If the hotkey_report_mode module parameter is set to 1 or 2, it cannot | ||
601 | be changed later through sysfs (any writes will return -EPERM to signal | ||
602 | that hotkey_report_mode was locked. On 2.6.23 and later, where | ||
603 | hotkey_report_mode cannot be changed at all, writes will return -EACCES). | ||
604 | |||
605 | hotkey_report_mode set to 1 makes the driver export through the procfs | ||
606 | ACPI event interface all hot key presses (which are *also* sent to the | ||
607 | input layer). This is a legacy compatibility behaviour, and it is also | ||
608 | the default mode of operation for the driver. | ||
609 | |||
610 | hotkey_report_mode set to 2 makes the driver filter out the hot key | ||
611 | presses from the procfs ACPI event interface, so these events will only | ||
612 | be sent through the input layer. Userspace that has been updated to use | ||
613 | the thinkpad-acpi input layer interface should set hotkey_report_mode to | ||
614 | 2. | ||
615 | |||
616 | Hot key press events are never sent to the ACPI netlink event interface. | ||
617 | Really up-to-date userspace under kernel 2.6.23 and later is to use the | ||
618 | netlink interface and the input layer interface, and don't bother at all | ||
619 | with hotkey_report_mode. | ||
620 | |||
621 | 560 | ||
622 | Brightness hotkey notes: | 561 | Brightness hotkey notes: |
623 | 562 | ||
@@ -802,6 +741,9 @@ compiled with the CONFIG_THINKPAD_ACPI_UNSAFE_LEDS option enabled. | |||
802 | Distributions must never enable this option. Individual users that | 741 | Distributions must never enable this option. Individual users that |
803 | are aware of the consequences are welcome to enabling it. | 742 | are aware of the consequences are welcome to enabling it. |
804 | 743 | ||
744 | Audio mute and microphone mute LEDs are supported, but currently not | ||
745 | visible to userspace. They are used by the snd-hda-intel audio driver. | ||
746 | |||
805 | procfs notes: | 747 | procfs notes: |
806 | 748 | ||
807 | The available commands are: | 749 | The available commands are: |
diff --git a/Documentation/leds/leds-lm3556.txt b/Documentation/leds/leds-lm3556.txt index d9eb91b51913..62278e871b50 100644 --- a/Documentation/leds/leds-lm3556.txt +++ b/Documentation/leds/leds-lm3556.txt | |||
@@ -71,7 +71,7 @@ To register the chip at address 0x63 on specific adapter, set the platform data | |||
71 | according to include/linux/platform_data/leds-lm3556.h, set the i2c board info | 71 | according to include/linux/platform_data/leds-lm3556.h, set the i2c board info |
72 | 72 | ||
73 | Example: | 73 | Example: |
74 | static struct i2c_board_info __initdata board_i2c_ch4[] = { | 74 | static struct i2c_board_info board_i2c_ch4[] __initdata = { |
75 | { | 75 | { |
76 | I2C_BOARD_INFO(LM3556_NAME, 0x63), | 76 | I2C_BOARD_INFO(LM3556_NAME, 0x63), |
77 | .platform_data = &lm3556_pdata, | 77 | .platform_data = &lm3556_pdata, |
diff --git a/Documentation/leds/leds-lp3944.txt b/Documentation/leds/leds-lp3944.txt index c6eda18b15ef..e88ac3b60c08 100644 --- a/Documentation/leds/leds-lp3944.txt +++ b/Documentation/leds/leds-lp3944.txt | |||
@@ -37,7 +37,7 @@ registered using the i2c_board_info mechanism. | |||
37 | To register the chip at address 0x60 on adapter 0, set the platform data | 37 | To register the chip at address 0x60 on adapter 0, set the platform data |
38 | according to include/linux/leds-lp3944.h, set the i2c board info: | 38 | according to include/linux/leds-lp3944.h, set the i2c board info: |
39 | 39 | ||
40 | static struct i2c_board_info __initdata a910_i2c_board_info[] = { | 40 | static struct i2c_board_info a910_i2c_board_info[] __initdata = { |
41 | { | 41 | { |
42 | I2C_BOARD_INFO("lp3944", 0x60), | 42 | I2C_BOARD_INFO("lp3944", 0x60), |
43 | .platform_data = &a910_lp3944_leds, | 43 | .platform_data = &a910_lp3944_leds, |
diff --git a/Documentation/leds/leds-lp5521.txt b/Documentation/leds/leds-lp5521.txt index 79e4c2e6e5e8..d08d8c179f85 100644 --- a/Documentation/leds/leds-lp5521.txt +++ b/Documentation/leds/leds-lp5521.txt | |||
@@ -18,7 +18,25 @@ All three channels can be also controlled using the engine micro programs. | |||
18 | More details of the instructions can be found from the public data sheet. | 18 | More details of the instructions can be found from the public data sheet. |
19 | 19 | ||
20 | LP5521 has the internal program memory for running various LED patterns. | 20 | LP5521 has the internal program memory for running various LED patterns. |
21 | For the details, please refer to 'firmware' section in leds-lp55xx.txt | 21 | There are two ways to run LED patterns. |
22 | |||
23 | 1) Legacy interface - enginex_mode and enginex_load | ||
24 | Control interface for the engines: | ||
25 | x is 1 .. 3 | ||
26 | enginex_mode : disabled, load, run | ||
27 | enginex_load : store program (visible only in engine load mode) | ||
28 | |||
29 | Example (start to blink the channel 2 led): | ||
30 | cd /sys/class/leds/lp5521:channel2/device | ||
31 | echo "load" > engine3_mode | ||
32 | echo "037f4d0003ff6000" > engine3_load | ||
33 | echo "run" > engine3_mode | ||
34 | |||
35 | To stop the engine: | ||
36 | echo "disabled" > engine3_mode | ||
37 | |||
38 | 2) Firmware interface - LP55xx common interface | ||
39 | For the details, please refer to 'firmware' section in leds-lp55xx.txt | ||
22 | 40 | ||
23 | sysfs contains a selftest entry. | 41 | sysfs contains a selftest entry. |
24 | The test communicates with the chip and checks that | 42 | The test communicates with the chip and checks that |
diff --git a/Documentation/leds/leds-lp5523.txt b/Documentation/leds/leds-lp5523.txt index 899fdad509fe..5b3e91d4ac59 100644 --- a/Documentation/leds/leds-lp5523.txt +++ b/Documentation/leds/leds-lp5523.txt | |||
@@ -28,7 +28,26 @@ If both fields are NULL, 'lp5523' is used by default. | |||
28 | /sys/class/leds/lp5523:channelN (N: 0 ~ 8) | 28 | /sys/class/leds/lp5523:channelN (N: 0 ~ 8) |
29 | 29 | ||
30 | LP5523 has the internal program memory for running various LED patterns. | 30 | LP5523 has the internal program memory for running various LED patterns. |
31 | For the details, please refer to 'firmware' section in leds-lp55xx.txt | 31 | There are two ways to run LED patterns. |
32 | |||
33 | 1) Legacy interface - enginex_mode, enginex_load and enginex_leds | ||
34 | Control interface for the engines: | ||
35 | x is 1 .. 3 | ||
36 | enginex_mode : disabled, load, run | ||
37 | enginex_load : microcode load (visible only in load mode) | ||
38 | enginex_leds : led mux control (visible only in load mode) | ||
39 | |||
40 | cd /sys/class/leds/lp5523:channel2/device | ||
41 | echo "load" > engine3_mode | ||
42 | echo "9d80400004ff05ff437f0000" > engine3_load | ||
43 | echo "111111111" > engine3_leds | ||
44 | echo "run" > engine3_mode | ||
45 | |||
46 | To stop the engine: | ||
47 | echo "disabled" > engine3_mode | ||
48 | |||
49 | 2) Firmware interface - LP55xx common interface | ||
50 | For the details, please refer to 'firmware' section in leds-lp55xx.txt | ||
32 | 51 | ||
33 | Selftest uses always the current from the platform data. | 52 | Selftest uses always the current from the platform data. |
34 | 53 | ||
diff --git a/Documentation/leds/leds-lp55xx.txt b/Documentation/leds/leds-lp55xx.txt index eec8fa2ffe4e..82713ff92eb3 100644 --- a/Documentation/leds/leds-lp55xx.txt +++ b/Documentation/leds/leds-lp55xx.txt | |||
@@ -1,11 +1,11 @@ | |||
1 | LP5521/LP5523/LP55231 Common Driver | 1 | LP5521/LP5523/LP55231/LP5562/LP8501 Common Driver |
2 | =================================== | 2 | ================================================= |
3 | 3 | ||
4 | Authors: Milo(Woogyom) Kim <milo.kim@ti.com> | 4 | Authors: Milo(Woogyom) Kim <milo.kim@ti.com> |
5 | 5 | ||
6 | Description | 6 | Description |
7 | ----------- | 7 | ----------- |
8 | LP5521, LP5523/55231 and LP5562 have common features as below. | 8 | LP5521, LP5523/55231, LP5562 and LP8501 have common features as below. |
9 | 9 | ||
10 | Register access via the I2C | 10 | Register access via the I2C |
11 | Device initialization/deinitialization | 11 | Device initialization/deinitialization |
@@ -109,6 +109,30 @@ As soon as 'loading' is set to 0, registered callback is called. | |||
109 | Inside the callback, the selected engine is loaded and memory is updated. | 109 | Inside the callback, the selected engine is loaded and memory is updated. |
110 | To run programmed pattern, 'run_engine' attribute should be enabled. | 110 | To run programmed pattern, 'run_engine' attribute should be enabled. |
111 | 111 | ||
112 | The pattern sqeuence of LP8501 is same as LP5523. | ||
113 | However pattern data is specific. | ||
114 | Ex 1) Engine 1 is used | ||
115 | echo 1 > /sys/bus/i2c/devices/xxxx/select_engine | ||
116 | echo 1 > /sys/class/firmware/lp8501/loading | ||
117 | echo "9d0140ff7e0040007e00a001c000" > /sys/class/firmware/lp8501/data | ||
118 | echo 0 > /sys/class/firmware/lp8501/loading | ||
119 | echo 1 > /sys/bus/i2c/devices/xxxx/run_engine | ||
120 | |||
121 | Ex 2) Engine 2 and 3 are used at the same time | ||
122 | echo 2 > /sys/bus/i2c/devices/xxxx/select_engine | ||
123 | sleep 1 | ||
124 | echo 1 > /sys/class/firmware/lp8501/loading | ||
125 | echo "9d0140ff7e0040007e00a001c000" > /sys/class/firmware/lp8501/data | ||
126 | echo 0 > /sys/class/firmware/lp8501/loading | ||
127 | sleep 1 | ||
128 | echo 3 > /sys/bus/i2c/devices/xxxx/select_engine | ||
129 | sleep 1 | ||
130 | echo 1 > /sys/class/firmware/lp8501/loading | ||
131 | echo "9d0340ff7e0040007e00a001c000" > /sys/class/firmware/lp8501/data | ||
132 | echo 0 > /sys/class/firmware/lp8501/loading | ||
133 | sleep 1 | ||
134 | echo 1 > /sys/class/leds/d1/device/run_engine | ||
135 | |||
112 | ( 'run_engine' and 'firmware_cb' ) | 136 | ( 'run_engine' and 'firmware_cb' ) |
113 | The sequence of running the program data is common. | 137 | The sequence of running the program data is common. |
114 | But each device has own specific register addresses for commands. | 138 | But each device has own specific register addresses for commands. |
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index fa5d8a9ae205..c8c42e64e953 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
@@ -531,9 +531,10 @@ dependency barrier to make it work correctly. Consider the following bit of | |||
531 | code: | 531 | code: |
532 | 532 | ||
533 | q = &a; | 533 | q = &a; |
534 | if (p) | 534 | if (p) { |
535 | <data dependency barrier> | ||
535 | q = &b; | 536 | q = &b; |
536 | <data dependency barrier> | 537 | } |
537 | x = *q; | 538 | x = *q; |
538 | 539 | ||
539 | This will not have the desired effect because there is no actual data | 540 | This will not have the desired effect because there is no actual data |
@@ -542,9 +543,10 @@ attempting to predict the outcome in advance. In such a case what's actually | |||
542 | required is: | 543 | required is: |
543 | 544 | ||
544 | q = &a; | 545 | q = &a; |
545 | if (p) | 546 | if (p) { |
547 | <read barrier> | ||
546 | q = &b; | 548 | q = &b; |
547 | <read barrier> | 549 | } |
548 | x = *q; | 550 | x = *q; |
549 | 551 | ||
550 | 552 | ||
diff --git a/Documentation/memory-hotplug.txt b/Documentation/memory-hotplug.txt index 8e5eacbdcfa3..58340d50f8a6 100644 --- a/Documentation/memory-hotplug.txt +++ b/Documentation/memory-hotplug.txt | |||
@@ -163,7 +163,7 @@ a recent addition and not present on older kernels. | |||
163 | at read: contains online/offline state of memory. | 163 | at read: contains online/offline state of memory. |
164 | at write: user can specify "online_kernel", | 164 | at write: user can specify "online_kernel", |
165 | "online_movable", "online", "offline" command | 165 | "online_movable", "online", "offline" command |
166 | which will be performed on al sections in the block. | 166 | which will be performed on all sections in the block. |
167 | 'phys_device' : read-only: designed to show the name of physical memory | 167 | 'phys_device' : read-only: designed to show the name of physical memory |
168 | device. This is not well implemented now. | 168 | device. This is not well implemented now. |
169 | 'removable' : read-only: contains an integer value indicating | 169 | 'removable' : read-only: contains an integer value indicating |
@@ -210,13 +210,15 @@ If memory device is found, memory hotplug code will be called. | |||
210 | 210 | ||
211 | 4.2 Notify memory hot-add event by hand | 211 | 4.2 Notify memory hot-add event by hand |
212 | ------------ | 212 | ------------ |
213 | In some environments, especially virtualized environment, firmware will not | 213 | On powerpc, the firmware does not notify a memory hotplug event to the kernel. |
214 | notify memory hotplug event to the kernel. For such environment, "probe" | 214 | Therefore, "probe" interface is supported to notify the event to the kernel. |
215 | interface is supported. This interface depends on CONFIG_ARCH_MEMORY_PROBE. | 215 | This interface depends on CONFIG_ARCH_MEMORY_PROBE. |
216 | 216 | ||
217 | Now, CONFIG_ARCH_MEMORY_PROBE is supported only by powerpc but it does not | 217 | CONFIG_ARCH_MEMORY_PROBE is supported on powerpc only. On x86, this config |
218 | contain highly architecture codes. Please add config if you need "probe" | 218 | option is disabled by default since ACPI notifies a memory hotplug event to |
219 | interface. | 219 | the kernel, which performs its hotplug operation as the result. Please |
220 | enable this option if you need the "probe" interface for testing purposes | ||
221 | on x86. | ||
220 | 222 | ||
221 | Probe interface is located at | 223 | Probe interface is located at |
222 | /sys/devices/system/memory/probe | 224 | /sys/devices/system/memory/probe |
diff --git a/Documentation/mic/mic_overview.txt b/Documentation/mic/mic_overview.txt new file mode 100644 index 000000000000..b41929224804 --- /dev/null +++ b/Documentation/mic/mic_overview.txt | |||
@@ -0,0 +1,51 @@ | |||
1 | An Intel MIC X100 device is a PCIe form factor add-in coprocessor | ||
2 | card based on the Intel Many Integrated Core (MIC) architecture | ||
3 | that runs a Linux OS. It is a PCIe endpoint in a platform and therefore | ||
4 | implements the three required standard address spaces i.e. configuration, | ||
5 | memory and I/O. The host OS loads a device driver as is typical for | ||
6 | PCIe devices. The card itself runs a bootstrap after reset that | ||
7 | transfers control to the card OS downloaded from the host driver. The | ||
8 | host driver supports OSPM suspend and resume operations. It shuts down | ||
9 | the card during suspend and reboots the card OS during resume. | ||
10 | The card OS as shipped by Intel is a Linux kernel with modifications | ||
11 | for the X100 devices. | ||
12 | |||
13 | Since it is a PCIe card, it does not have the ability to host hardware | ||
14 | devices for networking, storage and console. We provide these devices | ||
15 | on X100 coprocessors thus enabling a self-bootable equivalent environment | ||
16 | for applications. A key benefit of our solution is that it leverages | ||
17 | the standard virtio framework for network, disk and console devices, | ||
18 | though in our case the virtio framework is used across a PCIe bus. | ||
19 | |||
20 | Here is a block diagram of the various components described above. The | ||
21 | virtio backends are situated on the host rather than the card given better | ||
22 | single threaded performance for the host compared to MIC, the ability of | ||
23 | the host to initiate DMA's to/from the card using the MIC DMA engine and | ||
24 | the fact that the virtio block storage backend can only be on the host. | ||
25 | |||
26 | | | ||
27 | +----------+ | +----------+ | ||
28 | | Card OS | | | Host OS | | ||
29 | +----------+ | +----------+ | ||
30 | | | ||
31 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ | ||
32 | | Virtio| |Virtio | |Virtio| | |Virtio | |Virtio | |Virtio | | ||
33 | | Net | |Console | |Block | | |Net | |Console | |Block | | ||
34 | | Driver| |Driver | |Driver| | |backend | |backend | |backend | | ||
35 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ | ||
36 | | | | | | | | | ||
37 | | | | |User | | | | ||
38 | | | | |------|------------|---------|------- | ||
39 | +-------------------+ |Kernel +--------------------------+ | ||
40 | | | | Virtio over PCIe IOCTLs | | ||
41 | | | +--------------------------+ | ||
42 | +--------------+ | | | ||
43 | |Intel MIC | | +---------------+ | ||
44 | |Card Driver | | |Intel MIC | | ||
45 | +--------------+ | |Host Driver | | ||
46 | | | +---------------+ | ||
47 | | | | | ||
48 | +-------------------------------------------------------------+ | ||
49 | | | | ||
50 | | PCIe Bus | | ||
51 | +-------------------------------------------------------------+ | ||
diff --git a/Documentation/mic/mpssd/.gitignore b/Documentation/mic/mpssd/.gitignore new file mode 100644 index 000000000000..8b7c72f07c92 --- /dev/null +++ b/Documentation/mic/mpssd/.gitignore | |||
@@ -0,0 +1 @@ | |||
mpssd | |||
diff --git a/Documentation/mic/mpssd/Makefile b/Documentation/mic/mpssd/Makefile new file mode 100644 index 000000000000..eb860a7d152e --- /dev/null +++ b/Documentation/mic/mpssd/Makefile | |||
@@ -0,0 +1,19 @@ | |||
1 | # | ||
2 | # Makefile - Intel MIC User Space Tools. | ||
3 | # Copyright(c) 2013, Intel Corporation. | ||
4 | # | ||
5 | ifdef DEBUG | ||
6 | CFLAGS += $(USERWARNFLAGS) -I. -g -Wall -DDEBUG=$(DEBUG) | ||
7 | else | ||
8 | CFLAGS += $(USERWARNFLAGS) -I. -g -Wall | ||
9 | endif | ||
10 | |||
11 | mpssd: mpssd.o sysfs.o | ||
12 | $(CC) $(CFLAGS) -o $@ $^ -lpthread | ||
13 | |||
14 | install: | ||
15 | install mpssd /usr/sbin/mpssd | ||
16 | install micctrl /usr/sbin/micctrl | ||
17 | |||
18 | clean: | ||
19 | rm -f mpssd *.o | ||
diff --git a/Documentation/mic/mpssd/micctrl b/Documentation/mic/mpssd/micctrl new file mode 100755 index 000000000000..8f2629b41c5f --- /dev/null +++ b/Documentation/mic/mpssd/micctrl | |||
@@ -0,0 +1,173 @@ | |||
1 | #!/bin/bash | ||
2 | # Intel MIC Platform Software Stack (MPSS) | ||
3 | # | ||
4 | # Copyright(c) 2013 Intel Corporation. | ||
5 | # | ||
6 | # This program is free software; you can redistribute it and/or modify | ||
7 | # it under the terms of the GNU General Public License, version 2, as | ||
8 | # published by the Free Software Foundation. | ||
9 | # | ||
10 | # This program is distributed in the hope that it will be useful, but | ||
11 | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | # General Public License for more details. | ||
14 | # | ||
15 | # The full GNU General Public License is included in this distribution in | ||
16 | # the file called "COPYING". | ||
17 | # | ||
18 | # Intel MIC User Space Tools. | ||
19 | # | ||
20 | # micctrl - Controls MIC boot/start/stop. | ||
21 | # | ||
22 | # chkconfig: 2345 95 05 | ||
23 | # description: start MPSS stack processing. | ||
24 | # | ||
25 | ### BEGIN INIT INFO | ||
26 | # Provides: micctrl | ||
27 | ### END INIT INFO | ||
28 | |||
29 | # Source function library. | ||
30 | . /etc/init.d/functions | ||
31 | |||
32 | sysfs="/sys/class/mic" | ||
33 | |||
34 | _status() | ||
35 | { | ||
36 | f=$sysfs/$1 | ||
37 | echo -e $1 state: "`cat $f/state`" shutdown_status: "`cat $f/shutdown_status`" | ||
38 | } | ||
39 | |||
40 | status() | ||
41 | { | ||
42 | if [ "`echo $1 | head -c3`" == "mic" ]; then | ||
43 | _status $1 | ||
44 | return $? | ||
45 | fi | ||
46 | for f in $sysfs/* | ||
47 | do | ||
48 | _status `basename $f` | ||
49 | RETVAL=$? | ||
50 | [ $RETVAL -ne 0 ] && return $RETVAL | ||
51 | done | ||
52 | return 0 | ||
53 | } | ||
54 | |||
55 | _reset() | ||
56 | { | ||
57 | f=$sysfs/$1 | ||
58 | echo reset > $f/state | ||
59 | } | ||
60 | |||
61 | reset() | ||
62 | { | ||
63 | if [ "`echo $1 | head -c3`" == "mic" ]; then | ||
64 | _reset $1 | ||
65 | return $? | ||
66 | fi | ||
67 | for f in $sysfs/* | ||
68 | do | ||
69 | _reset `basename $f` | ||
70 | RETVAL=$? | ||
71 | [ $RETVAL -ne 0 ] && return $RETVAL | ||
72 | done | ||
73 | return 0 | ||
74 | } | ||
75 | |||
76 | _boot() | ||
77 | { | ||
78 | f=$sysfs/$1 | ||
79 | echo "linux" > $f/bootmode | ||
80 | echo "mic/uos.img" > $f/firmware | ||
81 | echo "mic/$1.image" > $f/ramdisk | ||
82 | echo "boot" > $f/state | ||
83 | } | ||
84 | |||
85 | boot() | ||
86 | { | ||
87 | if [ "`echo $1 | head -c3`" == "mic" ]; then | ||
88 | _boot $1 | ||
89 | return $? | ||
90 | fi | ||
91 | for f in $sysfs/* | ||
92 | do | ||
93 | _boot `basename $f` | ||
94 | RETVAL=$? | ||
95 | [ $RETVAL -ne 0 ] && return $RETVAL | ||
96 | done | ||
97 | return 0 | ||
98 | } | ||
99 | |||
100 | _shutdown() | ||
101 | { | ||
102 | f=$sysfs/$1 | ||
103 | echo shutdown > $f/state | ||
104 | } | ||
105 | |||
106 | shutdown() | ||
107 | { | ||
108 | if [ "`echo $1 | head -c3`" == "mic" ]; then | ||
109 | _shutdown $1 | ||
110 | return $? | ||
111 | fi | ||
112 | for f in $sysfs/* | ||
113 | do | ||
114 | _shutdown `basename $f` | ||
115 | RETVAL=$? | ||
116 | [ $RETVAL -ne 0 ] && return $RETVAL | ||
117 | done | ||
118 | return 0 | ||
119 | } | ||
120 | |||
121 | _wait() | ||
122 | { | ||
123 | f=$sysfs/$1 | ||
124 | while [ "`cat $f/state`" != "offline" -a "`cat $f/state`" != "online" ] | ||
125 | do | ||
126 | sleep 1 | ||
127 | echo -e "Waiting for $1 to go offline" | ||
128 | done | ||
129 | } | ||
130 | |||
131 | wait() | ||
132 | { | ||
133 | if [ "`echo $1 | head -c3`" == "mic" ]; then | ||
134 | _wait $1 | ||
135 | return $? | ||
136 | fi | ||
137 | # Wait for the cards to go offline | ||
138 | for f in $sysfs/* | ||
139 | do | ||
140 | _wait `basename $f` | ||
141 | RETVAL=$? | ||
142 | [ $RETVAL -ne 0 ] && return $RETVAL | ||
143 | done | ||
144 | return 0 | ||
145 | } | ||
146 | |||
147 | if [ ! -d "$sysfs" ]; then | ||
148 | echo -e $"Module unloaded " | ||
149 | exit 3 | ||
150 | fi | ||
151 | |||
152 | case $1 in | ||
153 | -s) | ||
154 | status $2 | ||
155 | ;; | ||
156 | -r) | ||
157 | reset $2 | ||
158 | ;; | ||
159 | -b) | ||
160 | boot $2 | ||
161 | ;; | ||
162 | -S) | ||
163 | shutdown $2 | ||
164 | ;; | ||
165 | -w) | ||
166 | wait $2 | ||
167 | ;; | ||
168 | *) | ||
169 | echo $"Usage: $0 {-s (status) |-r (reset) |-b (boot) |-S (shutdown) |-w (wait)}" | ||
170 | exit 2 | ||
171 | esac | ||
172 | |||
173 | exit $? | ||
diff --git a/Documentation/mic/mpssd/mpss b/Documentation/mic/mpssd/mpss new file mode 100755 index 000000000000..3136c68dad0b --- /dev/null +++ b/Documentation/mic/mpssd/mpss | |||
@@ -0,0 +1,202 @@ | |||
1 | #!/bin/bash | ||
2 | # Intel MIC Platform Software Stack (MPSS) | ||
3 | # | ||
4 | # Copyright(c) 2013 Intel Corporation. | ||
5 | # | ||
6 | # This program is free software; you can redistribute it and/or modify | ||
7 | # it under the terms of the GNU General Public License, version 2, as | ||
8 | # published by the Free Software Foundation. | ||
9 | # | ||
10 | # This program is distributed in the hope that it will be useful, but | ||
11 | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | # General Public License for more details. | ||
14 | # | ||
15 | # The full GNU General Public License is included in this distribution in | ||
16 | # the file called "COPYING". | ||
17 | # | ||
18 | # Intel MIC User Space Tools. | ||
19 | # | ||
20 | # mpss Start mpssd. | ||
21 | # | ||
22 | # chkconfig: 2345 95 05 | ||
23 | # description: start MPSS stack processing. | ||
24 | # | ||
25 | ### BEGIN INIT INFO | ||
26 | # Provides: mpss | ||
27 | # Required-Start: | ||
28 | # Required-Stop: | ||
29 | # Short-Description: MPSS stack control | ||
30 | # Description: MPSS stack control | ||
31 | ### END INIT INFO | ||
32 | |||
33 | # Source function library. | ||
34 | . /etc/init.d/functions | ||
35 | |||
36 | exec=/usr/sbin/mpssd | ||
37 | sysfs="/sys/class/mic" | ||
38 | |||
39 | start() | ||
40 | { | ||
41 | [ -x $exec ] || exit 5 | ||
42 | |||
43 | if [ "`ps -e | awk '{print $4}' | grep mpssd | head -1`" = "mpssd" ]; then | ||
44 | echo -e $"MPSSD already running! " | ||
45 | success | ||
46 | echo | ||
47 | return 0 | ||
48 | fi | ||
49 | |||
50 | echo -e $"Starting MPSS Stack" | ||
51 | echo -e $"Loading MIC_HOST Module" | ||
52 | |||
53 | # Ensure the driver is loaded | ||
54 | if [ ! -d "$sysfs" ]; then | ||
55 | modprobe mic_host | ||
56 | RETVAL=$? | ||
57 | if [ $RETVAL -ne 0 ]; then | ||
58 | failure | ||
59 | echo | ||
60 | return $RETVAL | ||
61 | fi | ||
62 | fi | ||
63 | |||
64 | # Start the daemon | ||
65 | echo -n $"Starting MPSSD " | ||
66 | $exec | ||
67 | RETVAL=$? | ||
68 | if [ $RETVAL -ne 0 ]; then | ||
69 | failure | ||
70 | echo | ||
71 | return $RETVAL | ||
72 | fi | ||
73 | success | ||
74 | echo | ||
75 | |||
76 | sleep 5 | ||
77 | |||
78 | # Boot the cards | ||
79 | micctrl -b | ||
80 | |||
81 | # Wait till ping works | ||
82 | for f in $sysfs/* | ||
83 | do | ||
84 | count=100 | ||
85 | ipaddr=`cat $f/cmdline` | ||
86 | ipaddr=${ipaddr#*address,} | ||
87 | ipaddr=`echo $ipaddr | cut -d, -f1 | cut -d\; -f1` | ||
88 | while [ $count -ge 0 ] | ||
89 | do | ||
90 | echo -e "Pinging "`basename $f`" " | ||
91 | ping -c 1 $ipaddr &> /dev/null | ||
92 | RETVAL=$? | ||
93 | if [ $RETVAL -eq 0 ]; then | ||
94 | success | ||
95 | break | ||
96 | fi | ||
97 | sleep 1 | ||
98 | count=`expr $count - 1` | ||
99 | done | ||
100 | [ $RETVAL -ne 0 ] && failure || success | ||
101 | echo | ||
102 | done | ||
103 | return $RETVAL | ||
104 | } | ||
105 | |||
106 | stop() | ||
107 | { | ||
108 | echo -e $"Shutting down MPSS Stack: " | ||
109 | |||
110 | # Bail out if module is unloaded | ||
111 | if [ ! -d "$sysfs" ]; then | ||
112 | echo -n $"Module unloaded " | ||
113 | success | ||
114 | echo | ||
115 | return 0 | ||
116 | fi | ||
117 | |||
118 | # Shut down the cards. | ||
119 | micctrl -S | ||
120 | |||
121 | # Wait for the cards to go offline | ||
122 | for f in $sysfs/* | ||
123 | do | ||
124 | while [ "`cat $f/state`" != "offline" ] | ||
125 | do | ||
126 | sleep 1 | ||
127 | echo -e "Waiting for "`basename $f`" to go offline" | ||
128 | done | ||
129 | done | ||
130 | |||
131 | # Display the status of the cards | ||
132 | micctrl -s | ||
133 | |||
134 | # Kill MPSSD now | ||
135 | echo -n $"Killing MPSSD" | ||
136 | killall -9 mpssd 2>/dev/null | ||
137 | RETVAL=$? | ||
138 | [ $RETVAL -ne 0 ] && failure || success | ||
139 | echo | ||
140 | return $RETVAL | ||
141 | } | ||
142 | |||
143 | restart() | ||
144 | { | ||
145 | stop | ||
146 | sleep 5 | ||
147 | start | ||
148 | } | ||
149 | |||
150 | status() | ||
151 | { | ||
152 | micctrl -s | ||
153 | if [ "`ps -e | awk '{print $4}' | grep mpssd | head -n 1`" = "mpssd" ]; then | ||
154 | echo "mpssd is running" | ||
155 | else | ||
156 | echo "mpssd is stopped" | ||
157 | fi | ||
158 | return 0 | ||
159 | } | ||
160 | |||
161 | unload() | ||
162 | { | ||
163 | if [ ! -d "$sysfs" ]; then | ||
164 | echo -n $"No MIC_HOST Module: " | ||
165 | success | ||
166 | echo | ||
167 | return | ||
168 | fi | ||
169 | |||
170 | stop | ||
171 | |||
172 | sleep 5 | ||
173 | echo -n $"Removing MIC_HOST Module: " | ||
174 | modprobe -r mic_host | ||
175 | RETVAL=$? | ||
176 | [ $RETVAL -ne 0 ] && failure || success | ||
177 | echo | ||
178 | return $RETVAL | ||
179 | } | ||
180 | |||
181 | case $1 in | ||
182 | start) | ||
183 | start | ||
184 | ;; | ||
185 | stop) | ||
186 | stop | ||
187 | ;; | ||
188 | restart) | ||
189 | restart | ||
190 | ;; | ||
191 | status) | ||
192 | status | ||
193 | ;; | ||
194 | unload) | ||
195 | unload | ||
196 | ;; | ||
197 | *) | ||
198 | echo $"Usage: $0 {start|stop|restart|status|unload}" | ||
199 | exit 2 | ||
200 | esac | ||
201 | |||
202 | exit $? | ||
diff --git a/Documentation/mic/mpssd/mpssd.c b/Documentation/mic/mpssd/mpssd.c new file mode 100644 index 000000000000..0c980ad40b17 --- /dev/null +++ b/Documentation/mic/mpssd/mpssd.c | |||
@@ -0,0 +1,1721 @@ | |||
1 | /* | ||
2 | * Intel MIC Platform Software Stack (MPSS) | ||
3 | * | ||
4 | * Copyright(c) 2013 Intel Corporation. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License, version 2, as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, but | ||
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | * General Public License for more details. | ||
14 | * | ||
15 | * The full GNU General Public License is included in this distribution in | ||
16 | * the file called "COPYING". | ||
17 | * | ||
18 | * Intel MIC User Space Tools. | ||
19 | */ | ||
20 | |||
21 | #define _GNU_SOURCE | ||
22 | |||
23 | #include <stdlib.h> | ||
24 | #include <fcntl.h> | ||
25 | #include <getopt.h> | ||
26 | #include <assert.h> | ||
27 | #include <unistd.h> | ||
28 | #include <stdbool.h> | ||
29 | #include <signal.h> | ||
30 | #include <poll.h> | ||
31 | #include <features.h> | ||
32 | #include <sys/types.h> | ||
33 | #include <sys/stat.h> | ||
34 | #include <sys/mman.h> | ||
35 | #include <sys/socket.h> | ||
36 | #include <linux/virtio_ring.h> | ||
37 | #include <linux/virtio_net.h> | ||
38 | #include <linux/virtio_console.h> | ||
39 | #include <linux/virtio_blk.h> | ||
40 | #include <linux/version.h> | ||
41 | #include "mpssd.h" | ||
42 | #include <linux/mic_ioctl.h> | ||
43 | #include <linux/mic_common.h> | ||
44 | |||
45 | static void init_mic(struct mic_info *mic); | ||
46 | |||
47 | static FILE *logfp; | ||
48 | static struct mic_info mic_list; | ||
49 | |||
50 | #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) | ||
51 | |||
52 | #define min_t(type, x, y) ({ \ | ||
53 | type __min1 = (x); \ | ||
54 | type __min2 = (y); \ | ||
55 | __min1 < __min2 ? __min1 : __min2; }) | ||
56 | |||
57 | /* align addr on a size boundary - adjust address up/down if needed */ | ||
58 | #define _ALIGN_DOWN(addr, size) ((addr)&(~((size)-1))) | ||
59 | #define _ALIGN_UP(addr, size) _ALIGN_DOWN(addr + size - 1, size) | ||
60 | |||
61 | /* align addr on a size boundary - adjust address up if needed */ | ||
62 | #define _ALIGN(addr, size) _ALIGN_UP(addr, size) | ||
63 | |||
64 | /* to align the pointer to the (next) page boundary */ | ||
65 | #define PAGE_ALIGN(addr) _ALIGN(addr, PAGE_SIZE) | ||
66 | |||
67 | #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) | ||
68 | |||
69 | #define GSO_ENABLED 1 | ||
70 | #define MAX_GSO_SIZE (64 * 1024) | ||
71 | #define ETH_H_LEN 14 | ||
72 | #define MAX_NET_PKT_SIZE (_ALIGN_UP(MAX_GSO_SIZE + ETH_H_LEN, 64)) | ||
73 | #define MIC_DEVICE_PAGE_END 0x1000 | ||
74 | |||
75 | #ifndef VIRTIO_NET_HDR_F_DATA_VALID | ||
76 | #define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */ | ||
77 | #endif | ||
78 | |||
79 | static struct { | ||
80 | struct mic_device_desc dd; | ||
81 | struct mic_vqconfig vqconfig[2]; | ||
82 | __u32 host_features, guest_acknowledgements; | ||
83 | struct virtio_console_config cons_config; | ||
84 | } virtcons_dev_page = { | ||
85 | .dd = { | ||
86 | .type = VIRTIO_ID_CONSOLE, | ||
87 | .num_vq = ARRAY_SIZE(virtcons_dev_page.vqconfig), | ||
88 | .feature_len = sizeof(virtcons_dev_page.host_features), | ||
89 | .config_len = sizeof(virtcons_dev_page.cons_config), | ||
90 | }, | ||
91 | .vqconfig[0] = { | ||
92 | .num = htole16(MIC_VRING_ENTRIES), | ||
93 | }, | ||
94 | .vqconfig[1] = { | ||
95 | .num = htole16(MIC_VRING_ENTRIES), | ||
96 | }, | ||
97 | }; | ||
98 | |||
99 | static struct { | ||
100 | struct mic_device_desc dd; | ||
101 | struct mic_vqconfig vqconfig[2]; | ||
102 | __u32 host_features, guest_acknowledgements; | ||
103 | struct virtio_net_config net_config; | ||
104 | } virtnet_dev_page = { | ||
105 | .dd = { | ||
106 | .type = VIRTIO_ID_NET, | ||
107 | .num_vq = ARRAY_SIZE(virtnet_dev_page.vqconfig), | ||
108 | .feature_len = sizeof(virtnet_dev_page.host_features), | ||
109 | .config_len = sizeof(virtnet_dev_page.net_config), | ||
110 | }, | ||
111 | .vqconfig[0] = { | ||
112 | .num = htole16(MIC_VRING_ENTRIES), | ||
113 | }, | ||
114 | .vqconfig[1] = { | ||
115 | .num = htole16(MIC_VRING_ENTRIES), | ||
116 | }, | ||
117 | #if GSO_ENABLED | ||
118 | .host_features = htole32( | ||
119 | 1 << VIRTIO_NET_F_CSUM | | ||
120 | 1 << VIRTIO_NET_F_GSO | | ||
121 | 1 << VIRTIO_NET_F_GUEST_TSO4 | | ||
122 | 1 << VIRTIO_NET_F_GUEST_TSO6 | | ||
123 | 1 << VIRTIO_NET_F_GUEST_ECN | | ||
124 | 1 << VIRTIO_NET_F_GUEST_UFO), | ||
125 | #else | ||
126 | .host_features = 0, | ||
127 | #endif | ||
128 | }; | ||
129 | |||
130 | static const char *mic_config_dir = "/etc/sysconfig/mic"; | ||
131 | static const char *virtblk_backend = "VIRTBLK_BACKEND"; | ||
132 | static struct { | ||
133 | struct mic_device_desc dd; | ||
134 | struct mic_vqconfig vqconfig[1]; | ||
135 | __u32 host_features, guest_acknowledgements; | ||
136 | struct virtio_blk_config blk_config; | ||
137 | } virtblk_dev_page = { | ||
138 | .dd = { | ||
139 | .type = VIRTIO_ID_BLOCK, | ||
140 | .num_vq = ARRAY_SIZE(virtblk_dev_page.vqconfig), | ||
141 | .feature_len = sizeof(virtblk_dev_page.host_features), | ||
142 | .config_len = sizeof(virtblk_dev_page.blk_config), | ||
143 | }, | ||
144 | .vqconfig[0] = { | ||
145 | .num = htole16(MIC_VRING_ENTRIES), | ||
146 | }, | ||
147 | .host_features = | ||
148 | htole32(1<<VIRTIO_BLK_F_SEG_MAX), | ||
149 | .blk_config = { | ||
150 | .seg_max = htole32(MIC_VRING_ENTRIES - 2), | ||
151 | .capacity = htole64(0), | ||
152 | } | ||
153 | }; | ||
154 | |||
155 | static char *myname; | ||
156 | |||
157 | static int | ||
158 | tap_configure(struct mic_info *mic, char *dev) | ||
159 | { | ||
160 | pid_t pid; | ||
161 | char *ifargv[7]; | ||
162 | char ipaddr[IFNAMSIZ]; | ||
163 | int ret = 0; | ||
164 | |||
165 | pid = fork(); | ||
166 | if (pid == 0) { | ||
167 | ifargv[0] = "ip"; | ||
168 | ifargv[1] = "link"; | ||
169 | ifargv[2] = "set"; | ||
170 | ifargv[3] = dev; | ||
171 | ifargv[4] = "up"; | ||
172 | ifargv[5] = NULL; | ||
173 | mpsslog("Configuring %s\n", dev); | ||
174 | ret = execvp("ip", ifargv); | ||
175 | if (ret < 0) { | ||
176 | mpsslog("%s execvp failed errno %s\n", | ||
177 | mic->name, strerror(errno)); | ||
178 | return ret; | ||
179 | } | ||
180 | } | ||
181 | if (pid < 0) { | ||
182 | mpsslog("%s fork failed errno %s\n", | ||
183 | mic->name, strerror(errno)); | ||
184 | return ret; | ||
185 | } | ||
186 | |||
187 | ret = waitpid(pid, NULL, 0); | ||
188 | if (ret < 0) { | ||
189 | mpsslog("%s waitpid failed errno %s\n", | ||
190 | mic->name, strerror(errno)); | ||
191 | return ret; | ||
192 | } | ||
193 | |||
194 | snprintf(ipaddr, IFNAMSIZ, "172.31.%d.254/24", mic->id); | ||
195 | |||
196 | pid = fork(); | ||
197 | if (pid == 0) { | ||
198 | ifargv[0] = "ip"; | ||
199 | ifargv[1] = "addr"; | ||
200 | ifargv[2] = "add"; | ||
201 | ifargv[3] = ipaddr; | ||
202 | ifargv[4] = "dev"; | ||
203 | ifargv[5] = dev; | ||
204 | ifargv[6] = NULL; | ||
205 | mpsslog("Configuring %s ipaddr %s\n", dev, ipaddr); | ||
206 | ret = execvp("ip", ifargv); | ||
207 | if (ret < 0) { | ||
208 | mpsslog("%s execvp failed errno %s\n", | ||
209 | mic->name, strerror(errno)); | ||
210 | return ret; | ||
211 | } | ||
212 | } | ||
213 | if (pid < 0) { | ||
214 | mpsslog("%s fork failed errno %s\n", | ||
215 | mic->name, strerror(errno)); | ||
216 | return ret; | ||
217 | } | ||
218 | |||
219 | ret = waitpid(pid, NULL, 0); | ||
220 | if (ret < 0) { | ||
221 | mpsslog("%s waitpid failed errno %s\n", | ||
222 | mic->name, strerror(errno)); | ||
223 | return ret; | ||
224 | } | ||
225 | mpsslog("MIC name %s %s %d DONE!\n", | ||
226 | mic->name, __func__, __LINE__); | ||
227 | return 0; | ||
228 | } | ||
229 | |||
230 | static int tun_alloc(struct mic_info *mic, char *dev) | ||
231 | { | ||
232 | struct ifreq ifr; | ||
233 | int fd, err; | ||
234 | #if GSO_ENABLED | ||
235 | unsigned offload; | ||
236 | #endif | ||
237 | fd = open("/dev/net/tun", O_RDWR); | ||
238 | if (fd < 0) { | ||
239 | mpsslog("Could not open /dev/net/tun %s\n", strerror(errno)); | ||
240 | goto done; | ||
241 | } | ||
242 | |||
243 | memset(&ifr, 0, sizeof(ifr)); | ||
244 | |||
245 | ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_VNET_HDR; | ||
246 | if (*dev) | ||
247 | strncpy(ifr.ifr_name, dev, IFNAMSIZ); | ||
248 | |||
249 | err = ioctl(fd, TUNSETIFF, (void *)&ifr); | ||
250 | if (err < 0) { | ||
251 | mpsslog("%s %s %d TUNSETIFF failed %s\n", | ||
252 | mic->name, __func__, __LINE__, strerror(errno)); | ||
253 | close(fd); | ||
254 | return err; | ||
255 | } | ||
256 | #if GSO_ENABLED | ||
257 | offload = TUN_F_CSUM | TUN_F_TSO4 | TUN_F_TSO6 | | ||
258 | TUN_F_TSO_ECN | TUN_F_UFO; | ||
259 | |||
260 | err = ioctl(fd, TUNSETOFFLOAD, offload); | ||
261 | if (err < 0) { | ||
262 | mpsslog("%s %s %d TUNSETOFFLOAD failed %s\n", | ||
263 | mic->name, __func__, __LINE__, strerror(errno)); | ||
264 | close(fd); | ||
265 | return err; | ||
266 | } | ||
267 | #endif | ||
268 | strcpy(dev, ifr.ifr_name); | ||
269 | mpsslog("Created TAP %s\n", dev); | ||
270 | done: | ||
271 | return fd; | ||
272 | } | ||
273 | |||
274 | #define NET_FD_VIRTIO_NET 0 | ||
275 | #define NET_FD_TUN 1 | ||
276 | #define MAX_NET_FD 2 | ||
277 | |||
278 | static void set_dp(struct mic_info *mic, int type, void *dp) | ||
279 | { | ||
280 | switch (type) { | ||
281 | case VIRTIO_ID_CONSOLE: | ||
282 | mic->mic_console.console_dp = dp; | ||
283 | return; | ||
284 | case VIRTIO_ID_NET: | ||
285 | mic->mic_net.net_dp = dp; | ||
286 | return; | ||
287 | case VIRTIO_ID_BLOCK: | ||
288 | mic->mic_virtblk.block_dp = dp; | ||
289 | return; | ||
290 | } | ||
291 | mpsslog("%s %s %d not found\n", mic->name, __func__, type); | ||
292 | assert(0); | ||
293 | } | ||
294 | |||
295 | static void *get_dp(struct mic_info *mic, int type) | ||
296 | { | ||
297 | switch (type) { | ||
298 | case VIRTIO_ID_CONSOLE: | ||
299 | return mic->mic_console.console_dp; | ||
300 | case VIRTIO_ID_NET: | ||
301 | return mic->mic_net.net_dp; | ||
302 | case VIRTIO_ID_BLOCK: | ||
303 | return mic->mic_virtblk.block_dp; | ||
304 | } | ||
305 | mpsslog("%s %s %d not found\n", mic->name, __func__, type); | ||
306 | assert(0); | ||
307 | return NULL; | ||
308 | } | ||
309 | |||
310 | static struct mic_device_desc *get_device_desc(struct mic_info *mic, int type) | ||
311 | { | ||
312 | struct mic_device_desc *d; | ||
313 | int i; | ||
314 | void *dp = get_dp(mic, type); | ||
315 | |||
316 | for (i = mic_aligned_size(struct mic_bootparam); i < PAGE_SIZE; | ||
317 | i += mic_total_desc_size(d)) { | ||
318 | d = dp + i; | ||
319 | |||
320 | /* End of list */ | ||
321 | if (d->type == 0) | ||
322 | break; | ||
323 | |||
324 | if (d->type == -1) | ||
325 | continue; | ||
326 | |||
327 | mpsslog("%s %s d-> type %d d %p\n", | ||
328 | mic->name, __func__, d->type, d); | ||
329 | |||
330 | if (d->type == (__u8)type) | ||
331 | return d; | ||
332 | } | ||
333 | mpsslog("%s %s %d not found\n", mic->name, __func__, type); | ||
334 | assert(0); | ||
335 | return NULL; | ||
336 | } | ||
337 | |||
338 | /* See comments in vhost.c for explanation of next_desc() */ | ||
339 | static unsigned next_desc(struct vring_desc *desc) | ||
340 | { | ||
341 | unsigned int next; | ||
342 | |||
343 | if (!(le16toh(desc->flags) & VRING_DESC_F_NEXT)) | ||
344 | return -1U; | ||
345 | next = le16toh(desc->next); | ||
346 | return next; | ||
347 | } | ||
348 | |||
349 | /* Sum up all the IOVEC length */ | ||
350 | static ssize_t | ||
351 | sum_iovec_len(struct mic_copy_desc *copy) | ||
352 | { | ||
353 | ssize_t sum = 0; | ||
354 | int i; | ||
355 | |||
356 | for (i = 0; i < copy->iovcnt; i++) | ||
357 | sum += copy->iov[i].iov_len; | ||
358 | return sum; | ||
359 | } | ||
360 | |||
361 | static inline void verify_out_len(struct mic_info *mic, | ||
362 | struct mic_copy_desc *copy) | ||
363 | { | ||
364 | if (copy->out_len != sum_iovec_len(copy)) { | ||
365 | mpsslog("%s %s %d BUG copy->out_len 0x%x len 0x%zx\n", | ||
366 | mic->name, __func__, __LINE__, | ||
367 | copy->out_len, sum_iovec_len(copy)); | ||
368 | assert(copy->out_len == sum_iovec_len(copy)); | ||
369 | } | ||
370 | } | ||
371 | |||
372 | /* Display an iovec */ | ||
373 | static void | ||
374 | disp_iovec(struct mic_info *mic, struct mic_copy_desc *copy, | ||
375 | const char *s, int line) | ||
376 | { | ||
377 | int i; | ||
378 | |||
379 | for (i = 0; i < copy->iovcnt; i++) | ||
380 | mpsslog("%s %s %d copy->iov[%d] addr %p len 0x%zx\n", | ||
381 | mic->name, s, line, i, | ||
382 | copy->iov[i].iov_base, copy->iov[i].iov_len); | ||
383 | } | ||
384 | |||
385 | static inline __u16 read_avail_idx(struct mic_vring *vr) | ||
386 | { | ||
387 | return ACCESS_ONCE(vr->info->avail_idx); | ||
388 | } | ||
389 | |||
390 | static inline void txrx_prepare(int type, bool tx, struct mic_vring *vr, | ||
391 | struct mic_copy_desc *copy, ssize_t len) | ||
392 | { | ||
393 | copy->vr_idx = tx ? 0 : 1; | ||
394 | copy->update_used = true; | ||
395 | if (type == VIRTIO_ID_NET) | ||
396 | copy->iov[1].iov_len = len - sizeof(struct virtio_net_hdr); | ||
397 | else | ||
398 | copy->iov[0].iov_len = len; | ||
399 | } | ||
400 | |||
401 | /* Central API which triggers the copies */ | ||
402 | static int | ||
403 | mic_virtio_copy(struct mic_info *mic, int fd, | ||
404 | struct mic_vring *vr, struct mic_copy_desc *copy) | ||
405 | { | ||
406 | int ret; | ||
407 | |||
408 | ret = ioctl(fd, MIC_VIRTIO_COPY_DESC, copy); | ||
409 | if (ret) { | ||
410 | mpsslog("%s %s %d errno %s ret %d\n", | ||
411 | mic->name, __func__, __LINE__, | ||
412 | strerror(errno), ret); | ||
413 | } | ||
414 | return ret; | ||
415 | } | ||
416 | |||
417 | /* | ||
418 | * This initialization routine requires at least one | ||
419 | * vring i.e. vr0. vr1 is optional. | ||
420 | */ | ||
421 | static void * | ||
422 | init_vr(struct mic_info *mic, int fd, int type, | ||
423 | struct mic_vring *vr0, struct mic_vring *vr1, int num_vq) | ||
424 | { | ||
425 | int vr_size; | ||
426 | char *va; | ||
427 | |||
428 | vr_size = PAGE_ALIGN(vring_size(MIC_VRING_ENTRIES, | ||
429 | MIC_VIRTIO_RING_ALIGN) + sizeof(struct _mic_vring_info)); | ||
430 | va = mmap(NULL, MIC_DEVICE_PAGE_END + vr_size * num_vq, | ||
431 | PROT_READ, MAP_SHARED, fd, 0); | ||
432 | if (MAP_FAILED == va) { | ||
433 | mpsslog("%s %s %d mmap failed errno %s\n", | ||
434 | mic->name, __func__, __LINE__, | ||
435 | strerror(errno)); | ||
436 | goto done; | ||
437 | } | ||
438 | set_dp(mic, type, va); | ||
439 | vr0->va = (struct mic_vring *)&va[MIC_DEVICE_PAGE_END]; | ||
440 | vr0->info = vr0->va + | ||
441 | vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN); | ||
442 | vring_init(&vr0->vr, | ||
443 | MIC_VRING_ENTRIES, vr0->va, MIC_VIRTIO_RING_ALIGN); | ||
444 | mpsslog("%s %s vr0 %p vr0->info %p vr_size 0x%x vring 0x%x ", | ||
445 | __func__, mic->name, vr0->va, vr0->info, vr_size, | ||
446 | vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN)); | ||
447 | mpsslog("magic 0x%x expected 0x%x\n", | ||
448 | vr0->info->magic, MIC_MAGIC + type); | ||
449 | assert(vr0->info->magic == MIC_MAGIC + type); | ||
450 | if (vr1) { | ||
451 | vr1->va = (struct mic_vring *) | ||
452 | &va[MIC_DEVICE_PAGE_END + vr_size]; | ||
453 | vr1->info = vr1->va + vring_size(MIC_VRING_ENTRIES, | ||
454 | MIC_VIRTIO_RING_ALIGN); | ||
455 | vring_init(&vr1->vr, | ||
456 | MIC_VRING_ENTRIES, vr1->va, MIC_VIRTIO_RING_ALIGN); | ||
457 | mpsslog("%s %s vr1 %p vr1->info %p vr_size 0x%x vring 0x%x ", | ||
458 | __func__, mic->name, vr1->va, vr1->info, vr_size, | ||
459 | vring_size(MIC_VRING_ENTRIES, MIC_VIRTIO_RING_ALIGN)); | ||
460 | mpsslog("magic 0x%x expected 0x%x\n", | ||
461 | vr1->info->magic, MIC_MAGIC + type + 1); | ||
462 | assert(vr1->info->magic == MIC_MAGIC + type + 1); | ||
463 | } | ||
464 | done: | ||
465 | return va; | ||
466 | } | ||
467 | |||
468 | static void | ||
469 | wait_for_card_driver(struct mic_info *mic, int fd, int type) | ||
470 | { | ||
471 | struct pollfd pollfd; | ||
472 | int err; | ||
473 | struct mic_device_desc *desc = get_device_desc(mic, type); | ||
474 | |||
475 | pollfd.fd = fd; | ||
476 | mpsslog("%s %s Waiting .... desc-> type %d status 0x%x\n", | ||
477 | mic->name, __func__, type, desc->status); | ||
478 | while (1) { | ||
479 | pollfd.events = POLLIN; | ||
480 | pollfd.revents = 0; | ||
481 | err = poll(&pollfd, 1, -1); | ||
482 | if (err < 0) { | ||
483 | mpsslog("%s %s poll failed %s\n", | ||
484 | mic->name, __func__, strerror(errno)); | ||
485 | continue; | ||
486 | } | ||
487 | |||
488 | if (pollfd.revents) { | ||
489 | mpsslog("%s %s Waiting... desc-> type %d status 0x%x\n", | ||
490 | mic->name, __func__, type, desc->status); | ||
491 | if (desc->status & VIRTIO_CONFIG_S_DRIVER_OK) { | ||
492 | mpsslog("%s %s poll.revents %d\n", | ||
493 | mic->name, __func__, pollfd.revents); | ||
494 | mpsslog("%s %s desc-> type %d status 0x%x\n", | ||
495 | mic->name, __func__, type, | ||
496 | desc->status); | ||
497 | break; | ||
498 | } | ||
499 | } | ||
500 | } | ||
501 | } | ||
502 | |||
503 | /* Spin till we have some descriptors */ | ||
504 | static void | ||
505 | spin_for_descriptors(struct mic_info *mic, struct mic_vring *vr) | ||
506 | { | ||
507 | __u16 avail_idx = read_avail_idx(vr); | ||
508 | |||
509 | while (avail_idx == le16toh(ACCESS_ONCE(vr->vr.avail->idx))) { | ||
510 | #ifdef DEBUG | ||
511 | mpsslog("%s %s waiting for desc avail %d info_avail %d\n", | ||
512 | mic->name, __func__, | ||
513 | le16toh(vr->vr.avail->idx), vr->info->avail_idx); | ||
514 | #endif | ||
515 | sched_yield(); | ||
516 | } | ||
517 | } | ||
518 | |||
519 | static void * | ||
520 | virtio_net(void *arg) | ||
521 | { | ||
522 | static __u8 vnet_hdr[2][sizeof(struct virtio_net_hdr)]; | ||
523 | static __u8 vnet_buf[2][MAX_NET_PKT_SIZE] __aligned(64); | ||
524 | struct iovec vnet_iov[2][2] = { | ||
525 | { { .iov_base = vnet_hdr[0], .iov_len = sizeof(vnet_hdr[0]) }, | ||
526 | { .iov_base = vnet_buf[0], .iov_len = sizeof(vnet_buf[0]) } }, | ||
527 | { { .iov_base = vnet_hdr[1], .iov_len = sizeof(vnet_hdr[1]) }, | ||
528 | { .iov_base = vnet_buf[1], .iov_len = sizeof(vnet_buf[1]) } }, | ||
529 | }; | ||
530 | struct iovec *iov0 = vnet_iov[0], *iov1 = vnet_iov[1]; | ||
531 | struct mic_info *mic = (struct mic_info *)arg; | ||
532 | char if_name[IFNAMSIZ]; | ||
533 | struct pollfd net_poll[MAX_NET_FD]; | ||
534 | struct mic_vring tx_vr, rx_vr; | ||
535 | struct mic_copy_desc copy; | ||
536 | struct mic_device_desc *desc; | ||
537 | int err; | ||
538 | |||
539 | snprintf(if_name, IFNAMSIZ, "mic%d", mic->id); | ||
540 | mic->mic_net.tap_fd = tun_alloc(mic, if_name); | ||
541 | if (mic->mic_net.tap_fd < 0) | ||
542 | goto done; | ||
543 | |||
544 | if (tap_configure(mic, if_name)) | ||
545 | goto done; | ||
546 | mpsslog("MIC name %s id %d\n", mic->name, mic->id); | ||
547 | |||
548 | net_poll[NET_FD_VIRTIO_NET].fd = mic->mic_net.virtio_net_fd; | ||
549 | net_poll[NET_FD_VIRTIO_NET].events = POLLIN; | ||
550 | net_poll[NET_FD_TUN].fd = mic->mic_net.tap_fd; | ||
551 | net_poll[NET_FD_TUN].events = POLLIN; | ||
552 | |||
553 | if (MAP_FAILED == init_vr(mic, mic->mic_net.virtio_net_fd, | ||
554 | VIRTIO_ID_NET, &tx_vr, &rx_vr, | ||
555 | virtnet_dev_page.dd.num_vq)) { | ||
556 | mpsslog("%s init_vr failed %s\n", | ||
557 | mic->name, strerror(errno)); | ||
558 | goto done; | ||
559 | } | ||
560 | |||
561 | copy.iovcnt = 2; | ||
562 | desc = get_device_desc(mic, VIRTIO_ID_NET); | ||
563 | |||
564 | while (1) { | ||
565 | ssize_t len; | ||
566 | |||
567 | net_poll[NET_FD_VIRTIO_NET].revents = 0; | ||
568 | net_poll[NET_FD_TUN].revents = 0; | ||
569 | |||
570 | /* Start polling for data from tap and virtio net */ | ||
571 | err = poll(net_poll, 2, -1); | ||
572 | if (err < 0) { | ||
573 | mpsslog("%s poll failed %s\n", | ||
574 | __func__, strerror(errno)); | ||
575 | continue; | ||
576 | } | ||
577 | if (!(desc->status & VIRTIO_CONFIG_S_DRIVER_OK)) | ||
578 | wait_for_card_driver(mic, mic->mic_net.virtio_net_fd, | ||
579 | VIRTIO_ID_NET); | ||
580 | /* | ||
581 | * Check if there is data to be read from TUN and write to | ||
582 | * virtio net fd if there is. | ||
583 | */ | ||
584 | if (net_poll[NET_FD_TUN].revents & POLLIN) { | ||
585 | copy.iov = iov0; | ||
586 | len = readv(net_poll[NET_FD_TUN].fd, | ||
587 | copy.iov, copy.iovcnt); | ||
588 | if (len > 0) { | ||
589 | struct virtio_net_hdr *hdr | ||
590 | = (struct virtio_net_hdr *)vnet_hdr[0]; | ||
591 | |||
592 | /* Disable checksums on the card since we are on | ||
593 | a reliable PCIe link */ | ||
594 | hdr->flags |= VIRTIO_NET_HDR_F_DATA_VALID; | ||
595 | #ifdef DEBUG | ||
596 | mpsslog("%s %s %d hdr->flags 0x%x ", mic->name, | ||
597 | __func__, __LINE__, hdr->flags); | ||
598 | mpsslog("copy.out_len %d hdr->gso_type 0x%x\n", | ||
599 | copy.out_len, hdr->gso_type); | ||
600 | #endif | ||
601 | #ifdef DEBUG | ||
602 | disp_iovec(mic, copy, __func__, __LINE__); | ||
603 | mpsslog("%s %s %d read from tap 0x%lx\n", | ||
604 | mic->name, __func__, __LINE__, | ||
605 | len); | ||
606 | #endif | ||
607 | spin_for_descriptors(mic, &tx_vr); | ||
608 | txrx_prepare(VIRTIO_ID_NET, 1, &tx_vr, ©, | ||
609 | len); | ||
610 | |||
611 | err = mic_virtio_copy(mic, | ||
612 | mic->mic_net.virtio_net_fd, &tx_vr, | ||
613 | ©); | ||
614 | if (err < 0) { | ||
615 | mpsslog("%s %s %d mic_virtio_copy %s\n", | ||
616 | mic->name, __func__, __LINE__, | ||
617 | strerror(errno)); | ||
618 | } | ||
619 | if (!err) | ||
620 | verify_out_len(mic, ©); | ||
621 | #ifdef DEBUG | ||
622 | disp_iovec(mic, copy, __func__, __LINE__); | ||
623 | mpsslog("%s %s %d wrote to net 0x%lx\n", | ||
624 | mic->name, __func__, __LINE__, | ||
625 | sum_iovec_len(©)); | ||
626 | #endif | ||
627 | /* Reinitialize IOV for next run */ | ||
628 | iov0[1].iov_len = MAX_NET_PKT_SIZE; | ||
629 | } else if (len < 0) { | ||
630 | disp_iovec(mic, ©, __func__, __LINE__); | ||
631 | mpsslog("%s %s %d read failed %s ", mic->name, | ||
632 | __func__, __LINE__, strerror(errno)); | ||
633 | mpsslog("cnt %d sum %zd\n", | ||
634 | copy.iovcnt, sum_iovec_len(©)); | ||
635 | } | ||
636 | } | ||
637 | |||
638 | /* | ||
639 | * Check if there is data to be read from virtio net and | ||
640 | * write to TUN if there is. | ||
641 | */ | ||
642 | if (net_poll[NET_FD_VIRTIO_NET].revents & POLLIN) { | ||
643 | while (rx_vr.info->avail_idx != | ||
644 | le16toh(rx_vr.vr.avail->idx)) { | ||
645 | copy.iov = iov1; | ||
646 | txrx_prepare(VIRTIO_ID_NET, 0, &rx_vr, ©, | ||
647 | MAX_NET_PKT_SIZE | ||
648 | + sizeof(struct virtio_net_hdr)); | ||
649 | |||
650 | err = mic_virtio_copy(mic, | ||
651 | mic->mic_net.virtio_net_fd, &rx_vr, | ||
652 | ©); | ||
653 | if (!err) { | ||
654 | #ifdef DEBUG | ||
655 | struct virtio_net_hdr *hdr | ||
656 | = (struct virtio_net_hdr *) | ||
657 | vnet_hdr[1]; | ||
658 | |||
659 | mpsslog("%s %s %d hdr->flags 0x%x, ", | ||
660 | mic->name, __func__, __LINE__, | ||
661 | hdr->flags); | ||
662 | mpsslog("out_len %d gso_type 0x%x\n", | ||
663 | copy.out_len, | ||
664 | hdr->gso_type); | ||
665 | #endif | ||
666 | /* Set the correct output iov_len */ | ||
667 | iov1[1].iov_len = copy.out_len - | ||
668 | sizeof(struct virtio_net_hdr); | ||
669 | verify_out_len(mic, ©); | ||
670 | #ifdef DEBUG | ||
671 | disp_iovec(mic, copy, __func__, | ||
672 | __LINE__); | ||
673 | mpsslog("%s %s %d ", | ||
674 | mic->name, __func__, __LINE__); | ||
675 | mpsslog("read from net 0x%lx\n", | ||
676 | sum_iovec_len(copy)); | ||
677 | #endif | ||
678 | len = writev(net_poll[NET_FD_TUN].fd, | ||
679 | copy.iov, copy.iovcnt); | ||
680 | if (len != sum_iovec_len(©)) { | ||
681 | mpsslog("Tun write failed %s ", | ||
682 | strerror(errno)); | ||
683 | mpsslog("len 0x%zx ", len); | ||
684 | mpsslog("read_len 0x%zx\n", | ||
685 | sum_iovec_len(©)); | ||
686 | } else { | ||
687 | #ifdef DEBUG | ||
688 | disp_iovec(mic, ©, __func__, | ||
689 | __LINE__); | ||
690 | mpsslog("%s %s %d ", | ||
691 | mic->name, __func__, | ||
692 | __LINE__); | ||
693 | mpsslog("wrote to tap 0x%lx\n", | ||
694 | len); | ||
695 | #endif | ||
696 | } | ||
697 | } else { | ||
698 | mpsslog("%s %s %d mic_virtio_copy %s\n", | ||
699 | mic->name, __func__, __LINE__, | ||
700 | strerror(errno)); | ||
701 | break; | ||
702 | } | ||
703 | } | ||
704 | } | ||
705 | if (net_poll[NET_FD_VIRTIO_NET].revents & POLLERR) | ||
706 | mpsslog("%s: %s: POLLERR\n", __func__, mic->name); | ||
707 | } | ||
708 | done: | ||
709 | pthread_exit(NULL); | ||
710 | } | ||
711 | |||
712 | /* virtio_console */ | ||
713 | #define VIRTIO_CONSOLE_FD 0 | ||
714 | #define MONITOR_FD (VIRTIO_CONSOLE_FD + 1) | ||
715 | #define MAX_CONSOLE_FD (MONITOR_FD + 1) /* must be the last one + 1 */ | ||
716 | #define MAX_BUFFER_SIZE PAGE_SIZE | ||
717 | |||
718 | static void * | ||
719 | virtio_console(void *arg) | ||
720 | { | ||
721 | static __u8 vcons_buf[2][PAGE_SIZE]; | ||
722 | struct iovec vcons_iov[2] = { | ||
723 | { .iov_base = vcons_buf[0], .iov_len = sizeof(vcons_buf[0]) }, | ||
724 | { .iov_base = vcons_buf[1], .iov_len = sizeof(vcons_buf[1]) }, | ||
725 | }; | ||
726 | struct iovec *iov0 = &vcons_iov[0], *iov1 = &vcons_iov[1]; | ||
727 | struct mic_info *mic = (struct mic_info *)arg; | ||
728 | int err; | ||
729 | struct pollfd console_poll[MAX_CONSOLE_FD]; | ||
730 | int pty_fd; | ||
731 | char *pts_name; | ||
732 | ssize_t len; | ||
733 | struct mic_vring tx_vr, rx_vr; | ||
734 | struct mic_copy_desc copy; | ||
735 | struct mic_device_desc *desc; | ||
736 | |||
737 | pty_fd = posix_openpt(O_RDWR); | ||
738 | if (pty_fd < 0) { | ||
739 | mpsslog("can't open a pseudoterminal master device: %s\n", | ||
740 | strerror(errno)); | ||
741 | goto _return; | ||
742 | } | ||
743 | pts_name = ptsname(pty_fd); | ||
744 | if (pts_name == NULL) { | ||
745 | mpsslog("can't get pts name\n"); | ||
746 | goto _close_pty; | ||
747 | } | ||
748 | printf("%s console message goes to %s\n", mic->name, pts_name); | ||
749 | mpsslog("%s console message goes to %s\n", mic->name, pts_name); | ||
750 | err = grantpt(pty_fd); | ||
751 | if (err < 0) { | ||
752 | mpsslog("can't grant access: %s %s\n", | ||
753 | pts_name, strerror(errno)); | ||
754 | goto _close_pty; | ||
755 | } | ||
756 | err = unlockpt(pty_fd); | ||
757 | if (err < 0) { | ||
758 | mpsslog("can't unlock a pseudoterminal: %s %s\n", | ||
759 | pts_name, strerror(errno)); | ||
760 | goto _close_pty; | ||
761 | } | ||
762 | console_poll[MONITOR_FD].fd = pty_fd; | ||
763 | console_poll[MONITOR_FD].events = POLLIN; | ||
764 | |||
765 | console_poll[VIRTIO_CONSOLE_FD].fd = mic->mic_console.virtio_console_fd; | ||
766 | console_poll[VIRTIO_CONSOLE_FD].events = POLLIN; | ||
767 | |||
768 | if (MAP_FAILED == init_vr(mic, mic->mic_console.virtio_console_fd, | ||
769 | VIRTIO_ID_CONSOLE, &tx_vr, &rx_vr, | ||
770 | virtcons_dev_page.dd.num_vq)) { | ||
771 | mpsslog("%s init_vr failed %s\n", | ||
772 | mic->name, strerror(errno)); | ||
773 | goto _close_pty; | ||
774 | } | ||
775 | |||
776 | copy.iovcnt = 1; | ||
777 | desc = get_device_desc(mic, VIRTIO_ID_CONSOLE); | ||
778 | |||
779 | for (;;) { | ||
780 | console_poll[MONITOR_FD].revents = 0; | ||
781 | console_poll[VIRTIO_CONSOLE_FD].revents = 0; | ||
782 | err = poll(console_poll, MAX_CONSOLE_FD, -1); | ||
783 | if (err < 0) { | ||
784 | mpsslog("%s %d: poll failed: %s\n", __func__, __LINE__, | ||
785 | strerror(errno)); | ||
786 | continue; | ||
787 | } | ||
788 | if (!(desc->status & VIRTIO_CONFIG_S_DRIVER_OK)) | ||
789 | wait_for_card_driver(mic, | ||
790 | mic->mic_console.virtio_console_fd, | ||
791 | VIRTIO_ID_CONSOLE); | ||
792 | |||
793 | if (console_poll[MONITOR_FD].revents & POLLIN) { | ||
794 | copy.iov = iov0; | ||
795 | len = readv(pty_fd, copy.iov, copy.iovcnt); | ||
796 | if (len > 0) { | ||
797 | #ifdef DEBUG | ||
798 | disp_iovec(mic, copy, __func__, __LINE__); | ||
799 | mpsslog("%s %s %d read from tap 0x%lx\n", | ||
800 | mic->name, __func__, __LINE__, | ||
801 | len); | ||
802 | #endif | ||
803 | spin_for_descriptors(mic, &tx_vr); | ||
804 | txrx_prepare(VIRTIO_ID_CONSOLE, 1, &tx_vr, | ||
805 | ©, len); | ||
806 | |||
807 | err = mic_virtio_copy(mic, | ||
808 | mic->mic_console.virtio_console_fd, | ||
809 | &tx_vr, ©); | ||
810 | if (err < 0) { | ||
811 | mpsslog("%s %s %d mic_virtio_copy %s\n", | ||
812 | mic->name, __func__, __LINE__, | ||
813 | strerror(errno)); | ||
814 | } | ||
815 | if (!err) | ||
816 | verify_out_len(mic, ©); | ||
817 | #ifdef DEBUG | ||
818 | disp_iovec(mic, copy, __func__, __LINE__); | ||
819 | mpsslog("%s %s %d wrote to net 0x%lx\n", | ||
820 | mic->name, __func__, __LINE__, | ||
821 | sum_iovec_len(copy)); | ||
822 | #endif | ||
823 | /* Reinitialize IOV for next run */ | ||
824 | iov0->iov_len = PAGE_SIZE; | ||
825 | } else if (len < 0) { | ||
826 | disp_iovec(mic, ©, __func__, __LINE__); | ||
827 | mpsslog("%s %s %d read failed %s ", | ||
828 | mic->name, __func__, __LINE__, | ||
829 | strerror(errno)); | ||
830 | mpsslog("cnt %d sum %zd\n", | ||
831 | copy.iovcnt, sum_iovec_len(©)); | ||
832 | } | ||
833 | } | ||
834 | |||
835 | if (console_poll[VIRTIO_CONSOLE_FD].revents & POLLIN) { | ||
836 | while (rx_vr.info->avail_idx != | ||
837 | le16toh(rx_vr.vr.avail->idx)) { | ||
838 | copy.iov = iov1; | ||
839 | txrx_prepare(VIRTIO_ID_CONSOLE, 0, &rx_vr, | ||
840 | ©, PAGE_SIZE); | ||
841 | |||
842 | err = mic_virtio_copy(mic, | ||
843 | mic->mic_console.virtio_console_fd, | ||
844 | &rx_vr, ©); | ||
845 | if (!err) { | ||
846 | /* Set the correct output iov_len */ | ||
847 | iov1->iov_len = copy.out_len; | ||
848 | verify_out_len(mic, ©); | ||
849 | #ifdef DEBUG | ||
850 | disp_iovec(mic, copy, __func__, | ||
851 | __LINE__); | ||
852 | mpsslog("%s %s %d ", | ||
853 | mic->name, __func__, __LINE__); | ||
854 | mpsslog("read from net 0x%lx\n", | ||
855 | sum_iovec_len(copy)); | ||
856 | #endif | ||
857 | len = writev(pty_fd, | ||
858 | copy.iov, copy.iovcnt); | ||
859 | if (len != sum_iovec_len(©)) { | ||
860 | mpsslog("Tun write failed %s ", | ||
861 | strerror(errno)); | ||
862 | mpsslog("len 0x%zx ", len); | ||
863 | mpsslog("read_len 0x%zx\n", | ||
864 | sum_iovec_len(©)); | ||
865 | } else { | ||
866 | #ifdef DEBUG | ||
867 | disp_iovec(mic, copy, __func__, | ||
868 | __LINE__); | ||
869 | mpsslog("%s %s %d ", | ||
870 | mic->name, __func__, | ||
871 | __LINE__); | ||
872 | mpsslog("wrote to tap 0x%lx\n", | ||
873 | len); | ||
874 | #endif | ||
875 | } | ||
876 | } else { | ||
877 | mpsslog("%s %s %d mic_virtio_copy %s\n", | ||
878 | mic->name, __func__, __LINE__, | ||
879 | strerror(errno)); | ||
880 | break; | ||
881 | } | ||
882 | } | ||
883 | } | ||
884 | if (console_poll[NET_FD_VIRTIO_NET].revents & POLLERR) | ||
885 | mpsslog("%s: %s: POLLERR\n", __func__, mic->name); | ||
886 | } | ||
887 | _close_pty: | ||
888 | close(pty_fd); | ||
889 | _return: | ||
890 | pthread_exit(NULL); | ||
891 | } | ||
892 | |||
893 | static void | ||
894 | add_virtio_device(struct mic_info *mic, struct mic_device_desc *dd) | ||
895 | { | ||
896 | char path[PATH_MAX]; | ||
897 | int fd, err; | ||
898 | |||
899 | snprintf(path, PATH_MAX, "/dev/mic%d", mic->id); | ||
900 | fd = open(path, O_RDWR); | ||
901 | if (fd < 0) { | ||
902 | mpsslog("Could not open %s %s\n", path, strerror(errno)); | ||
903 | return; | ||
904 | } | ||
905 | |||
906 | err = ioctl(fd, MIC_VIRTIO_ADD_DEVICE, dd); | ||
907 | if (err < 0) { | ||
908 | mpsslog("Could not add %d %s\n", dd->type, strerror(errno)); | ||
909 | close(fd); | ||
910 | return; | ||
911 | } | ||
912 | switch (dd->type) { | ||
913 | case VIRTIO_ID_NET: | ||
914 | mic->mic_net.virtio_net_fd = fd; | ||
915 | mpsslog("Added VIRTIO_ID_NET for %s\n", mic->name); | ||
916 | break; | ||
917 | case VIRTIO_ID_CONSOLE: | ||
918 | mic->mic_console.virtio_console_fd = fd; | ||
919 | mpsslog("Added VIRTIO_ID_CONSOLE for %s\n", mic->name); | ||
920 | break; | ||
921 | case VIRTIO_ID_BLOCK: | ||
922 | mic->mic_virtblk.virtio_block_fd = fd; | ||
923 | mpsslog("Added VIRTIO_ID_BLOCK for %s\n", mic->name); | ||
924 | break; | ||
925 | } | ||
926 | } | ||
927 | |||
928 | static bool | ||
929 | set_backend_file(struct mic_info *mic) | ||
930 | { | ||
931 | FILE *config; | ||
932 | char buff[PATH_MAX], *line, *evv, *p; | ||
933 | |||
934 | snprintf(buff, PATH_MAX, "%s/mpssd%03d.conf", mic_config_dir, mic->id); | ||
935 | config = fopen(buff, "r"); | ||
936 | if (config == NULL) | ||
937 | return false; | ||
938 | do { /* look for "virtblk_backend=XXXX" */ | ||
939 | line = fgets(buff, PATH_MAX, config); | ||
940 | if (line == NULL) | ||
941 | break; | ||
942 | if (*line == '#') | ||
943 | continue; | ||
944 | p = strchr(line, '\n'); | ||
945 | if (p) | ||
946 | *p = '\0'; | ||
947 | } while (strncmp(line, virtblk_backend, strlen(virtblk_backend)) != 0); | ||
948 | fclose(config); | ||
949 | if (line == NULL) | ||
950 | return false; | ||
951 | evv = strchr(line, '='); | ||
952 | if (evv == NULL) | ||
953 | return false; | ||
954 | mic->mic_virtblk.backend_file = malloc(strlen(evv) + 1); | ||
955 | if (mic->mic_virtblk.backend_file == NULL) { | ||
956 | mpsslog("%s %d can't allocate memory\n", mic->name, mic->id); | ||
957 | return false; | ||
958 | } | ||
959 | strcpy(mic->mic_virtblk.backend_file, evv + 1); | ||
960 | return true; | ||
961 | } | ||
962 | |||
963 | #define SECTOR_SIZE 512 | ||
964 | static bool | ||
965 | set_backend_size(struct mic_info *mic) | ||
966 | { | ||
967 | mic->mic_virtblk.backend_size = lseek(mic->mic_virtblk.backend, 0, | ||
968 | SEEK_END); | ||
969 | if (mic->mic_virtblk.backend_size < 0) { | ||
970 | mpsslog("%s: can't seek: %s\n", | ||
971 | mic->name, mic->mic_virtblk.backend_file); | ||
972 | return false; | ||
973 | } | ||
974 | virtblk_dev_page.blk_config.capacity = | ||
975 | mic->mic_virtblk.backend_size / SECTOR_SIZE; | ||
976 | if ((mic->mic_virtblk.backend_size % SECTOR_SIZE) != 0) | ||
977 | virtblk_dev_page.blk_config.capacity++; | ||
978 | |||
979 | virtblk_dev_page.blk_config.capacity = | ||
980 | htole64(virtblk_dev_page.blk_config.capacity); | ||
981 | |||
982 | return true; | ||
983 | } | ||
984 | |||
985 | static bool | ||
986 | open_backend(struct mic_info *mic) | ||
987 | { | ||
988 | if (!set_backend_file(mic)) | ||
989 | goto _error_exit; | ||
990 | mic->mic_virtblk.backend = open(mic->mic_virtblk.backend_file, O_RDWR); | ||
991 | if (mic->mic_virtblk.backend < 0) { | ||
992 | mpsslog("%s: can't open: %s\n", mic->name, | ||
993 | mic->mic_virtblk.backend_file); | ||
994 | goto _error_free; | ||
995 | } | ||
996 | if (!set_backend_size(mic)) | ||
997 | goto _error_close; | ||
998 | mic->mic_virtblk.backend_addr = mmap(NULL, | ||
999 | mic->mic_virtblk.backend_size, | ||
1000 | PROT_READ|PROT_WRITE, MAP_SHARED, | ||
1001 | mic->mic_virtblk.backend, 0L); | ||
1002 | if (mic->mic_virtblk.backend_addr == MAP_FAILED) { | ||
1003 | mpsslog("%s: can't map: %s %s\n", | ||
1004 | mic->name, mic->mic_virtblk.backend_file, | ||
1005 | strerror(errno)); | ||
1006 | goto _error_close; | ||
1007 | } | ||
1008 | return true; | ||
1009 | |||
1010 | _error_close: | ||
1011 | close(mic->mic_virtblk.backend); | ||
1012 | _error_free: | ||
1013 | free(mic->mic_virtblk.backend_file); | ||
1014 | _error_exit: | ||
1015 | return false; | ||
1016 | } | ||
1017 | |||
1018 | static void | ||
1019 | close_backend(struct mic_info *mic) | ||
1020 | { | ||
1021 | munmap(mic->mic_virtblk.backend_addr, mic->mic_virtblk.backend_size); | ||
1022 | close(mic->mic_virtblk.backend); | ||
1023 | free(mic->mic_virtblk.backend_file); | ||
1024 | } | ||
1025 | |||
1026 | static bool | ||
1027 | start_virtblk(struct mic_info *mic, struct mic_vring *vring) | ||
1028 | { | ||
1029 | if (((unsigned long)&virtblk_dev_page.blk_config % 8) != 0) { | ||
1030 | mpsslog("%s: blk_config is not 8 byte aligned.\n", | ||
1031 | mic->name); | ||
1032 | return false; | ||
1033 | } | ||
1034 | add_virtio_device(mic, &virtblk_dev_page.dd); | ||
1035 | if (MAP_FAILED == init_vr(mic, mic->mic_virtblk.virtio_block_fd, | ||
1036 | VIRTIO_ID_BLOCK, vring, NULL, | ||
1037 | virtblk_dev_page.dd.num_vq)) { | ||
1038 | mpsslog("%s init_vr failed %s\n", | ||
1039 | mic->name, strerror(errno)); | ||
1040 | return false; | ||
1041 | } | ||
1042 | return true; | ||
1043 | } | ||
1044 | |||
1045 | static void | ||
1046 | stop_virtblk(struct mic_info *mic) | ||
1047 | { | ||
1048 | int vr_size, ret; | ||
1049 | |||
1050 | vr_size = PAGE_ALIGN(vring_size(MIC_VRING_ENTRIES, | ||
1051 | MIC_VIRTIO_RING_ALIGN) + sizeof(struct _mic_vring_info)); | ||
1052 | ret = munmap(mic->mic_virtblk.block_dp, | ||
1053 | MIC_DEVICE_PAGE_END + vr_size * virtblk_dev_page.dd.num_vq); | ||
1054 | if (ret < 0) | ||
1055 | mpsslog("%s munmap errno %d\n", mic->name, errno); | ||
1056 | close(mic->mic_virtblk.virtio_block_fd); | ||
1057 | } | ||
1058 | |||
1059 | static __u8 | ||
1060 | header_error_check(struct vring_desc *desc) | ||
1061 | { | ||
1062 | if (le32toh(desc->len) != sizeof(struct virtio_blk_outhdr)) { | ||
1063 | mpsslog("%s() %d: length is not sizeof(virtio_blk_outhd)\n", | ||
1064 | __func__, __LINE__); | ||
1065 | return -EIO; | ||
1066 | } | ||
1067 | if (!(le16toh(desc->flags) & VRING_DESC_F_NEXT)) { | ||
1068 | mpsslog("%s() %d: alone\n", | ||
1069 | __func__, __LINE__); | ||
1070 | return -EIO; | ||
1071 | } | ||
1072 | if (le16toh(desc->flags) & VRING_DESC_F_WRITE) { | ||
1073 | mpsslog("%s() %d: not read\n", | ||
1074 | __func__, __LINE__); | ||
1075 | return -EIO; | ||
1076 | } | ||
1077 | return 0; | ||
1078 | } | ||
1079 | |||
1080 | static int | ||
1081 | read_header(int fd, struct virtio_blk_outhdr *hdr, __u32 desc_idx) | ||
1082 | { | ||
1083 | struct iovec iovec; | ||
1084 | struct mic_copy_desc copy; | ||
1085 | |||
1086 | iovec.iov_len = sizeof(*hdr); | ||
1087 | iovec.iov_base = hdr; | ||
1088 | copy.iov = &iovec; | ||
1089 | copy.iovcnt = 1; | ||
1090 | copy.vr_idx = 0; /* only one vring on virtio_block */ | ||
1091 | copy.update_used = false; /* do not update used index */ | ||
1092 | return ioctl(fd, MIC_VIRTIO_COPY_DESC, ©); | ||
1093 | } | ||
1094 | |||
1095 | static int | ||
1096 | transfer_blocks(int fd, struct iovec *iovec, __u32 iovcnt) | ||
1097 | { | ||
1098 | struct mic_copy_desc copy; | ||
1099 | |||
1100 | copy.iov = iovec; | ||
1101 | copy.iovcnt = iovcnt; | ||
1102 | copy.vr_idx = 0; /* only one vring on virtio_block */ | ||
1103 | copy.update_used = false; /* do not update used index */ | ||
1104 | return ioctl(fd, MIC_VIRTIO_COPY_DESC, ©); | ||
1105 | } | ||
1106 | |||
1107 | static __u8 | ||
1108 | status_error_check(struct vring_desc *desc) | ||
1109 | { | ||
1110 | if (le32toh(desc->len) != sizeof(__u8)) { | ||
1111 | mpsslog("%s() %d: length is not sizeof(status)\n", | ||
1112 | __func__, __LINE__); | ||
1113 | return -EIO; | ||
1114 | } | ||
1115 | return 0; | ||
1116 | } | ||
1117 | |||
1118 | static int | ||
1119 | write_status(int fd, __u8 *status) | ||
1120 | { | ||
1121 | struct iovec iovec; | ||
1122 | struct mic_copy_desc copy; | ||
1123 | |||
1124 | iovec.iov_base = status; | ||
1125 | iovec.iov_len = sizeof(*status); | ||
1126 | copy.iov = &iovec; | ||
1127 | copy.iovcnt = 1; | ||
1128 | copy.vr_idx = 0; /* only one vring on virtio_block */ | ||
1129 | copy.update_used = true; /* Update used index */ | ||
1130 | return ioctl(fd, MIC_VIRTIO_COPY_DESC, ©); | ||
1131 | } | ||
1132 | |||
1133 | static void * | ||
1134 | virtio_block(void *arg) | ||
1135 | { | ||
1136 | struct mic_info *mic = (struct mic_info *)arg; | ||
1137 | int ret; | ||
1138 | struct pollfd block_poll; | ||
1139 | struct mic_vring vring; | ||
1140 | __u16 avail_idx; | ||
1141 | __u32 desc_idx; | ||
1142 | struct vring_desc *desc; | ||
1143 | struct iovec *iovec, *piov; | ||
1144 | __u8 status; | ||
1145 | __u32 buffer_desc_idx; | ||
1146 | struct virtio_blk_outhdr hdr; | ||
1147 | void *fos; | ||
1148 | |||
1149 | for (;;) { /* forever */ | ||
1150 | if (!open_backend(mic)) { /* No virtblk */ | ||
1151 | for (mic->mic_virtblk.signaled = 0; | ||
1152 | !mic->mic_virtblk.signaled;) | ||
1153 | sleep(1); | ||
1154 | continue; | ||
1155 | } | ||
1156 | |||
1157 | /* backend file is specified. */ | ||
1158 | if (!start_virtblk(mic, &vring)) | ||
1159 | goto _close_backend; | ||
1160 | iovec = malloc(sizeof(*iovec) * | ||
1161 | le32toh(virtblk_dev_page.blk_config.seg_max)); | ||
1162 | if (!iovec) { | ||
1163 | mpsslog("%s: can't alloc iovec: %s\n", | ||
1164 | mic->name, strerror(ENOMEM)); | ||
1165 | goto _stop_virtblk; | ||
1166 | } | ||
1167 | |||
1168 | block_poll.fd = mic->mic_virtblk.virtio_block_fd; | ||
1169 | block_poll.events = POLLIN; | ||
1170 | for (mic->mic_virtblk.signaled = 0; | ||
1171 | !mic->mic_virtblk.signaled;) { | ||
1172 | block_poll.revents = 0; | ||
1173 | /* timeout in 1 sec to see signaled */ | ||
1174 | ret = poll(&block_poll, 1, 1000); | ||
1175 | if (ret < 0) { | ||
1176 | mpsslog("%s %d: poll failed: %s\n", | ||
1177 | __func__, __LINE__, | ||
1178 | strerror(errno)); | ||
1179 | continue; | ||
1180 | } | ||
1181 | |||
1182 | if (!(block_poll.revents & POLLIN)) { | ||
1183 | #ifdef DEBUG | ||
1184 | mpsslog("%s %d: block_poll.revents=0x%x\n", | ||
1185 | __func__, __LINE__, block_poll.revents); | ||
1186 | #endif | ||
1187 | continue; | ||
1188 | } | ||
1189 | |||
1190 | /* POLLIN */ | ||
1191 | while (vring.info->avail_idx != | ||
1192 | le16toh(vring.vr.avail->idx)) { | ||
1193 | /* read header element */ | ||
1194 | avail_idx = | ||
1195 | vring.info->avail_idx & | ||
1196 | (vring.vr.num - 1); | ||
1197 | desc_idx = le16toh( | ||
1198 | vring.vr.avail->ring[avail_idx]); | ||
1199 | desc = &vring.vr.desc[desc_idx]; | ||
1200 | #ifdef DEBUG | ||
1201 | mpsslog("%s() %d: avail_idx=%d ", | ||
1202 | __func__, __LINE__, | ||
1203 | vring.info->avail_idx); | ||
1204 | mpsslog("vring.vr.num=%d desc=%p\n", | ||
1205 | vring.vr.num, desc); | ||
1206 | #endif | ||
1207 | status = header_error_check(desc); | ||
1208 | ret = read_header( | ||
1209 | mic->mic_virtblk.virtio_block_fd, | ||
1210 | &hdr, desc_idx); | ||
1211 | if (ret < 0) { | ||
1212 | mpsslog("%s() %d %s: ret=%d %s\n", | ||
1213 | __func__, __LINE__, | ||
1214 | mic->name, ret, | ||
1215 | strerror(errno)); | ||
1216 | break; | ||
1217 | } | ||
1218 | /* buffer element */ | ||
1219 | piov = iovec; | ||
1220 | status = 0; | ||
1221 | fos = mic->mic_virtblk.backend_addr + | ||
1222 | (hdr.sector * SECTOR_SIZE); | ||
1223 | buffer_desc_idx = next_desc(desc); | ||
1224 | desc_idx = buffer_desc_idx; | ||
1225 | for (desc = &vring.vr.desc[buffer_desc_idx]; | ||
1226 | desc->flags & VRING_DESC_F_NEXT; | ||
1227 | desc_idx = next_desc(desc), | ||
1228 | desc = &vring.vr.desc[desc_idx]) { | ||
1229 | piov->iov_len = desc->len; | ||
1230 | piov->iov_base = fos; | ||
1231 | piov++; | ||
1232 | fos += desc->len; | ||
1233 | } | ||
1234 | /* Returning NULLs for VIRTIO_BLK_T_GET_ID. */ | ||
1235 | if (hdr.type & ~(VIRTIO_BLK_T_OUT | | ||
1236 | VIRTIO_BLK_T_GET_ID)) { | ||
1237 | /* | ||
1238 | VIRTIO_BLK_T_IN - does not do | ||
1239 | anything. Probably for documenting. | ||
1240 | VIRTIO_BLK_T_SCSI_CMD - for | ||
1241 | virtio_scsi. | ||
1242 | VIRTIO_BLK_T_FLUSH - turned off in | ||
1243 | config space. | ||
1244 | VIRTIO_BLK_T_BARRIER - defined but not | ||
1245 | used in anywhere. | ||
1246 | */ | ||
1247 | mpsslog("%s() %d: type %x ", | ||
1248 | __func__, __LINE__, | ||
1249 | hdr.type); | ||
1250 | mpsslog("is not supported\n"); | ||
1251 | status = -ENOTSUP; | ||
1252 | |||
1253 | } else { | ||
1254 | ret = transfer_blocks( | ||
1255 | mic->mic_virtblk.virtio_block_fd, | ||
1256 | iovec, | ||
1257 | piov - iovec); | ||
1258 | if (ret < 0 && | ||
1259 | status != 0) | ||
1260 | status = ret; | ||
1261 | } | ||
1262 | /* write status and update used pointer */ | ||
1263 | if (status != 0) | ||
1264 | status = status_error_check(desc); | ||
1265 | ret = write_status( | ||
1266 | mic->mic_virtblk.virtio_block_fd, | ||
1267 | &status); | ||
1268 | #ifdef DEBUG | ||
1269 | mpsslog("%s() %d: write status=%d on desc=%p\n", | ||
1270 | __func__, __LINE__, | ||
1271 | status, desc); | ||
1272 | #endif | ||
1273 | } | ||
1274 | } | ||
1275 | free(iovec); | ||
1276 | _stop_virtblk: | ||
1277 | stop_virtblk(mic); | ||
1278 | _close_backend: | ||
1279 | close_backend(mic); | ||
1280 | } /* forever */ | ||
1281 | |||
1282 | pthread_exit(NULL); | ||
1283 | } | ||
1284 | |||
1285 | static void | ||
1286 | reset(struct mic_info *mic) | ||
1287 | { | ||
1288 | #define RESET_TIMEOUT 120 | ||
1289 | int i = RESET_TIMEOUT; | ||
1290 | setsysfs(mic->name, "state", "reset"); | ||
1291 | while (i) { | ||
1292 | char *state; | ||
1293 | state = readsysfs(mic->name, "state"); | ||
1294 | if (!state) | ||
1295 | goto retry; | ||
1296 | mpsslog("%s: %s %d state %s\n", | ||
1297 | mic->name, __func__, __LINE__, state); | ||
1298 | |||
1299 | /* | ||
1300 | * If the shutdown was initiated by OSPM, the state stays | ||
1301 | * in "suspended" which is also a valid condition for reset. | ||
1302 | */ | ||
1303 | if ((!strcmp(state, "offline")) || | ||
1304 | (!strcmp(state, "suspended"))) { | ||
1305 | free(state); | ||
1306 | break; | ||
1307 | } | ||
1308 | free(state); | ||
1309 | retry: | ||
1310 | sleep(1); | ||
1311 | i--; | ||
1312 | } | ||
1313 | } | ||
1314 | |||
1315 | static int | ||
1316 | get_mic_shutdown_status(struct mic_info *mic, char *shutdown_status) | ||
1317 | { | ||
1318 | if (!strcmp(shutdown_status, "nop")) | ||
1319 | return MIC_NOP; | ||
1320 | if (!strcmp(shutdown_status, "crashed")) | ||
1321 | return MIC_CRASHED; | ||
1322 | if (!strcmp(shutdown_status, "halted")) | ||
1323 | return MIC_HALTED; | ||
1324 | if (!strcmp(shutdown_status, "poweroff")) | ||
1325 | return MIC_POWER_OFF; | ||
1326 | if (!strcmp(shutdown_status, "restart")) | ||
1327 | return MIC_RESTART; | ||
1328 | mpsslog("%s: BUG invalid status %s\n", mic->name, shutdown_status); | ||
1329 | /* Invalid state */ | ||
1330 | assert(0); | ||
1331 | }; | ||
1332 | |||
1333 | static int get_mic_state(struct mic_info *mic, char *state) | ||
1334 | { | ||
1335 | if (!strcmp(state, "offline")) | ||
1336 | return MIC_OFFLINE; | ||
1337 | if (!strcmp(state, "online")) | ||
1338 | return MIC_ONLINE; | ||
1339 | if (!strcmp(state, "shutting_down")) | ||
1340 | return MIC_SHUTTING_DOWN; | ||
1341 | if (!strcmp(state, "reset_failed")) | ||
1342 | return MIC_RESET_FAILED; | ||
1343 | if (!strcmp(state, "suspending")) | ||
1344 | return MIC_SUSPENDING; | ||
1345 | if (!strcmp(state, "suspended")) | ||
1346 | return MIC_SUSPENDED; | ||
1347 | mpsslog("%s: BUG invalid state %s\n", mic->name, state); | ||
1348 | /* Invalid state */ | ||
1349 | assert(0); | ||
1350 | }; | ||
1351 | |||
1352 | static void mic_handle_shutdown(struct mic_info *mic) | ||
1353 | { | ||
1354 | #define SHUTDOWN_TIMEOUT 60 | ||
1355 | int i = SHUTDOWN_TIMEOUT, ret, stat = 0; | ||
1356 | char *shutdown_status; | ||
1357 | while (i) { | ||
1358 | shutdown_status = readsysfs(mic->name, "shutdown_status"); | ||
1359 | if (!shutdown_status) | ||
1360 | continue; | ||
1361 | mpsslog("%s: %s %d shutdown_status %s\n", | ||
1362 | mic->name, __func__, __LINE__, shutdown_status); | ||
1363 | switch (get_mic_shutdown_status(mic, shutdown_status)) { | ||
1364 | case MIC_RESTART: | ||
1365 | mic->restart = 1; | ||
1366 | case MIC_HALTED: | ||
1367 | case MIC_POWER_OFF: | ||
1368 | case MIC_CRASHED: | ||
1369 | free(shutdown_status); | ||
1370 | goto reset; | ||
1371 | default: | ||
1372 | break; | ||
1373 | } | ||
1374 | free(shutdown_status); | ||
1375 | sleep(1); | ||
1376 | i--; | ||
1377 | } | ||
1378 | reset: | ||
1379 | ret = kill(mic->pid, SIGTERM); | ||
1380 | mpsslog("%s: %s %d kill pid %d ret %d\n", | ||
1381 | mic->name, __func__, __LINE__, | ||
1382 | mic->pid, ret); | ||
1383 | if (!ret) { | ||
1384 | ret = waitpid(mic->pid, &stat, | ||
1385 | WIFSIGNALED(stat)); | ||
1386 | mpsslog("%s: %s %d waitpid ret %d pid %d\n", | ||
1387 | mic->name, __func__, __LINE__, | ||
1388 | ret, mic->pid); | ||
1389 | } | ||
1390 | if (ret == mic->pid) | ||
1391 | reset(mic); | ||
1392 | } | ||
1393 | |||
1394 | static void * | ||
1395 | mic_config(void *arg) | ||
1396 | { | ||
1397 | struct mic_info *mic = (struct mic_info *)arg; | ||
1398 | char *state = NULL; | ||
1399 | char pathname[PATH_MAX]; | ||
1400 | int fd, ret; | ||
1401 | struct pollfd ufds[1]; | ||
1402 | char value[4096]; | ||
1403 | |||
1404 | snprintf(pathname, PATH_MAX - 1, "%s/%s/%s", | ||
1405 | MICSYSFSDIR, mic->name, "state"); | ||
1406 | |||
1407 | fd = open(pathname, O_RDONLY); | ||
1408 | if (fd < 0) { | ||
1409 | mpsslog("%s: opening file %s failed %s\n", | ||
1410 | mic->name, pathname, strerror(errno)); | ||
1411 | goto error; | ||
1412 | } | ||
1413 | |||
1414 | do { | ||
1415 | ret = read(fd, value, sizeof(value)); | ||
1416 | if (ret < 0) { | ||
1417 | mpsslog("%s: Failed to read sysfs entry '%s': %s\n", | ||
1418 | mic->name, pathname, strerror(errno)); | ||
1419 | goto close_error1; | ||
1420 | } | ||
1421 | retry: | ||
1422 | state = readsysfs(mic->name, "state"); | ||
1423 | if (!state) | ||
1424 | goto retry; | ||
1425 | mpsslog("%s: %s %d state %s\n", | ||
1426 | mic->name, __func__, __LINE__, state); | ||
1427 | switch (get_mic_state(mic, state)) { | ||
1428 | case MIC_SHUTTING_DOWN: | ||
1429 | mic_handle_shutdown(mic); | ||
1430 | goto close_error; | ||
1431 | case MIC_SUSPENDING: | ||
1432 | mic->boot_on_resume = 1; | ||
1433 | setsysfs(mic->name, "state", "suspend"); | ||
1434 | mic_handle_shutdown(mic); | ||
1435 | goto close_error; | ||
1436 | case MIC_OFFLINE: | ||
1437 | if (mic->boot_on_resume) { | ||
1438 | setsysfs(mic->name, "state", "boot"); | ||
1439 | mic->boot_on_resume = 0; | ||
1440 | } | ||
1441 | break; | ||
1442 | default: | ||
1443 | break; | ||
1444 | } | ||
1445 | free(state); | ||
1446 | |||
1447 | ufds[0].fd = fd; | ||
1448 | ufds[0].events = POLLERR | POLLPRI; | ||
1449 | ret = poll(ufds, 1, -1); | ||
1450 | if (ret < 0) { | ||
1451 | mpsslog("%s: poll failed %s\n", | ||
1452 | mic->name, strerror(errno)); | ||
1453 | goto close_error1; | ||
1454 | } | ||
1455 | } while (1); | ||
1456 | close_error: | ||
1457 | free(state); | ||
1458 | close_error1: | ||
1459 | close(fd); | ||
1460 | error: | ||
1461 | init_mic(mic); | ||
1462 | pthread_exit(NULL); | ||
1463 | } | ||
1464 | |||
1465 | static void | ||
1466 | set_cmdline(struct mic_info *mic) | ||
1467 | { | ||
1468 | char buffer[PATH_MAX]; | ||
1469 | int len; | ||
1470 | |||
1471 | len = snprintf(buffer, PATH_MAX, | ||
1472 | "clocksource=tsc highres=off nohz=off "); | ||
1473 | len += snprintf(buffer + len, PATH_MAX, | ||
1474 | "cpufreq_on;corec6_off;pc3_off;pc6_off "); | ||
1475 | len += snprintf(buffer + len, PATH_MAX, | ||
1476 | "ifcfg=static;address,172.31.%d.1;netmask,255.255.255.0", | ||
1477 | mic->id); | ||
1478 | |||
1479 | setsysfs(mic->name, "cmdline", buffer); | ||
1480 | mpsslog("%s: Command line: \"%s\"\n", mic->name, buffer); | ||
1481 | snprintf(buffer, PATH_MAX, "172.31.%d.1", mic->id); | ||
1482 | mpsslog("%s: IPADDR: \"%s\"\n", mic->name, buffer); | ||
1483 | } | ||
1484 | |||
1485 | static void | ||
1486 | set_log_buf_info(struct mic_info *mic) | ||
1487 | { | ||
1488 | int fd; | ||
1489 | off_t len; | ||
1490 | char system_map[] = "/lib/firmware/mic/System.map"; | ||
1491 | char *map, *temp, log_buf[17] = {'\0'}; | ||
1492 | |||
1493 | fd = open(system_map, O_RDONLY); | ||
1494 | if (fd < 0) { | ||
1495 | mpsslog("%s: Opening System.map failed: %d\n", | ||
1496 | mic->name, errno); | ||
1497 | return; | ||
1498 | } | ||
1499 | len = lseek(fd, 0, SEEK_END); | ||
1500 | if (len < 0) { | ||
1501 | mpsslog("%s: Reading System.map size failed: %d\n", | ||
1502 | mic->name, errno); | ||
1503 | close(fd); | ||
1504 | return; | ||
1505 | } | ||
1506 | map = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); | ||
1507 | if (map == MAP_FAILED) { | ||
1508 | mpsslog("%s: mmap of System.map failed: %d\n", | ||
1509 | mic->name, errno); | ||
1510 | close(fd); | ||
1511 | return; | ||
1512 | } | ||
1513 | temp = strstr(map, "__log_buf"); | ||
1514 | if (!temp) { | ||
1515 | mpsslog("%s: __log_buf not found: %d\n", mic->name, errno); | ||
1516 | munmap(map, len); | ||
1517 | close(fd); | ||
1518 | return; | ||
1519 | } | ||
1520 | strncpy(log_buf, temp - 19, 16); | ||
1521 | setsysfs(mic->name, "log_buf_addr", log_buf); | ||
1522 | mpsslog("%s: log_buf_addr: %s\n", mic->name, log_buf); | ||
1523 | temp = strstr(map, "log_buf_len"); | ||
1524 | if (!temp) { | ||
1525 | mpsslog("%s: log_buf_len not found: %d\n", mic->name, errno); | ||
1526 | munmap(map, len); | ||
1527 | close(fd); | ||
1528 | return; | ||
1529 | } | ||
1530 | strncpy(log_buf, temp - 19, 16); | ||
1531 | setsysfs(mic->name, "log_buf_len", log_buf); | ||
1532 | mpsslog("%s: log_buf_len: %s\n", mic->name, log_buf); | ||
1533 | munmap(map, len); | ||
1534 | close(fd); | ||
1535 | } | ||
1536 | |||
1537 | static void init_mic(struct mic_info *mic); | ||
1538 | |||
1539 | static void | ||
1540 | change_virtblk_backend(int x, siginfo_t *siginfo, void *p) | ||
1541 | { | ||
1542 | struct mic_info *mic; | ||
1543 | |||
1544 | for (mic = mic_list.next; mic != NULL; mic = mic->next) | ||
1545 | mic->mic_virtblk.signaled = 1/* true */; | ||
1546 | } | ||
1547 | |||
1548 | static void | ||
1549 | init_mic(struct mic_info *mic) | ||
1550 | { | ||
1551 | struct sigaction ignore = { | ||
1552 | .sa_flags = 0, | ||
1553 | .sa_handler = SIG_IGN | ||
1554 | }; | ||
1555 | struct sigaction act = { | ||
1556 | .sa_flags = SA_SIGINFO, | ||
1557 | .sa_sigaction = change_virtblk_backend, | ||
1558 | }; | ||
1559 | char buffer[PATH_MAX]; | ||
1560 | int err; | ||
1561 | |||
1562 | /* | ||
1563 | * Currently, one virtio block device is supported for each MIC card | ||
1564 | * at a time. Any user (or test) can send a SIGUSR1 to the MIC daemon. | ||
1565 | * The signal informs the virtio block backend about a change in the | ||
1566 | * configuration file which specifies the virtio backend file name on | ||
1567 | * the host. Virtio block backend then re-reads the configuration file | ||
1568 | * and switches to the new block device. This signalling mechanism may | ||
1569 | * not be required once multiple virtio block devices are supported by | ||
1570 | * the MIC daemon. | ||
1571 | */ | ||
1572 | sigaction(SIGUSR1, &ignore, NULL); | ||
1573 | |||
1574 | mic->pid = fork(); | ||
1575 | switch (mic->pid) { | ||
1576 | case 0: | ||
1577 | set_log_buf_info(mic); | ||
1578 | set_cmdline(mic); | ||
1579 | add_virtio_device(mic, &virtcons_dev_page.dd); | ||
1580 | add_virtio_device(mic, &virtnet_dev_page.dd); | ||
1581 | err = pthread_create(&mic->mic_console.console_thread, NULL, | ||
1582 | virtio_console, mic); | ||
1583 | if (err) | ||
1584 | mpsslog("%s virtcons pthread_create failed %s\n", | ||
1585 | mic->name, strerror(err)); | ||
1586 | err = pthread_create(&mic->mic_net.net_thread, NULL, | ||
1587 | virtio_net, mic); | ||
1588 | if (err) | ||
1589 | mpsslog("%s virtnet pthread_create failed %s\n", | ||
1590 | mic->name, strerror(err)); | ||
1591 | err = pthread_create(&mic->mic_virtblk.block_thread, NULL, | ||
1592 | virtio_block, mic); | ||
1593 | if (err) | ||
1594 | mpsslog("%s virtblk pthread_create failed %s\n", | ||
1595 | mic->name, strerror(err)); | ||
1596 | sigemptyset(&act.sa_mask); | ||
1597 | err = sigaction(SIGUSR1, &act, NULL); | ||
1598 | if (err) | ||
1599 | mpsslog("%s sigaction SIGUSR1 failed %s\n", | ||
1600 | mic->name, strerror(errno)); | ||
1601 | while (1) | ||
1602 | sleep(60); | ||
1603 | case -1: | ||
1604 | mpsslog("fork failed MIC name %s id %d errno %d\n", | ||
1605 | mic->name, mic->id, errno); | ||
1606 | break; | ||
1607 | default: | ||
1608 | if (mic->restart) { | ||
1609 | snprintf(buffer, PATH_MAX, "boot"); | ||
1610 | setsysfs(mic->name, "state", buffer); | ||
1611 | mpsslog("%s restarting mic %d\n", | ||
1612 | mic->name, mic->restart); | ||
1613 | mic->restart = 0; | ||
1614 | } | ||
1615 | pthread_create(&mic->config_thread, NULL, mic_config, mic); | ||
1616 | } | ||
1617 | } | ||
1618 | |||
1619 | static void | ||
1620 | start_daemon(void) | ||
1621 | { | ||
1622 | struct mic_info *mic; | ||
1623 | |||
1624 | for (mic = mic_list.next; mic != NULL; mic = mic->next) | ||
1625 | init_mic(mic); | ||
1626 | |||
1627 | while (1) | ||
1628 | sleep(60); | ||
1629 | } | ||
1630 | |||
1631 | static int | ||
1632 | init_mic_list(void) | ||
1633 | { | ||
1634 | struct mic_info *mic = &mic_list; | ||
1635 | struct dirent *file; | ||
1636 | DIR *dp; | ||
1637 | int cnt = 0; | ||
1638 | |||
1639 | dp = opendir(MICSYSFSDIR); | ||
1640 | if (!dp) | ||
1641 | return 0; | ||
1642 | |||
1643 | while ((file = readdir(dp)) != NULL) { | ||
1644 | if (!strncmp(file->d_name, "mic", 3)) { | ||
1645 | mic->next = calloc(1, sizeof(struct mic_info)); | ||
1646 | if (mic->next) { | ||
1647 | mic = mic->next; | ||
1648 | mic->id = atoi(&file->d_name[3]); | ||
1649 | mic->name = malloc(strlen(file->d_name) + 16); | ||
1650 | if (mic->name) | ||
1651 | strcpy(mic->name, file->d_name); | ||
1652 | mpsslog("MIC name %s id %d\n", mic->name, | ||
1653 | mic->id); | ||
1654 | cnt++; | ||
1655 | } | ||
1656 | } | ||
1657 | } | ||
1658 | |||
1659 | closedir(dp); | ||
1660 | return cnt; | ||
1661 | } | ||
1662 | |||
1663 | void | ||
1664 | mpsslog(char *format, ...) | ||
1665 | { | ||
1666 | va_list args; | ||
1667 | char buffer[4096]; | ||
1668 | char ts[52], *ts1; | ||
1669 | time_t t; | ||
1670 | |||
1671 | if (logfp == NULL) | ||
1672 | return; | ||
1673 | |||
1674 | va_start(args, format); | ||
1675 | vsprintf(buffer, format, args); | ||
1676 | va_end(args); | ||
1677 | |||
1678 | time(&t); | ||
1679 | ts1 = ctime_r(&t, ts); | ||
1680 | ts1[strlen(ts1) - 1] = '\0'; | ||
1681 | fprintf(logfp, "%s: %s", ts1, buffer); | ||
1682 | |||
1683 | fflush(logfp); | ||
1684 | } | ||
1685 | |||
1686 | int | ||
1687 | main(int argc, char *argv[]) | ||
1688 | { | ||
1689 | int cnt; | ||
1690 | pid_t pid; | ||
1691 | |||
1692 | myname = argv[0]; | ||
1693 | |||
1694 | logfp = fopen(LOGFILE_NAME, "a+"); | ||
1695 | if (!logfp) { | ||
1696 | fprintf(stderr, "cannot open logfile '%s'\n", LOGFILE_NAME); | ||
1697 | exit(1); | ||
1698 | } | ||
1699 | pid = fork(); | ||
1700 | switch (pid) { | ||
1701 | case 0: | ||
1702 | break; | ||
1703 | case -1: | ||
1704 | exit(2); | ||
1705 | default: | ||
1706 | exit(0); | ||
1707 | } | ||
1708 | |||
1709 | mpsslog("MIC Daemon start\n"); | ||
1710 | |||
1711 | cnt = init_mic_list(); | ||
1712 | if (cnt == 0) { | ||
1713 | mpsslog("MIC module not loaded\n"); | ||
1714 | exit(3); | ||
1715 | } | ||
1716 | mpsslog("MIC found %d devices\n", cnt); | ||
1717 | |||
1718 | start_daemon(); | ||
1719 | |||
1720 | exit(0); | ||
1721 | } | ||
diff --git a/Documentation/mic/mpssd/mpssd.h b/Documentation/mic/mpssd/mpssd.h new file mode 100644 index 000000000000..f5f18b15d9a0 --- /dev/null +++ b/Documentation/mic/mpssd/mpssd.h | |||
@@ -0,0 +1,102 @@ | |||
1 | /* | ||
2 | * Intel MIC Platform Software Stack (MPSS) | ||
3 | * | ||
4 | * Copyright(c) 2013 Intel Corporation. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License, version 2, as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, but | ||
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | * General Public License for more details. | ||
14 | * | ||
15 | * The full GNU General Public License is included in this distribution in | ||
16 | * the file called "COPYING". | ||
17 | * | ||
18 | * Intel MIC User Space Tools. | ||
19 | */ | ||
20 | #ifndef _MPSSD_H_ | ||
21 | #define _MPSSD_H_ | ||
22 | |||
23 | #include <stdio.h> | ||
24 | #include <stdlib.h> | ||
25 | #include <string.h> | ||
26 | #include <fcntl.h> | ||
27 | #include <unistd.h> | ||
28 | #include <dirent.h> | ||
29 | #include <libgen.h> | ||
30 | #include <pthread.h> | ||
31 | #include <stdarg.h> | ||
32 | #include <time.h> | ||
33 | #include <errno.h> | ||
34 | #include <sys/dir.h> | ||
35 | #include <sys/ioctl.h> | ||
36 | #include <sys/poll.h> | ||
37 | #include <sys/types.h> | ||
38 | #include <sys/socket.h> | ||
39 | #include <sys/stat.h> | ||
40 | #include <sys/types.h> | ||
41 | #include <sys/mman.h> | ||
42 | #include <sys/utsname.h> | ||
43 | #include <sys/wait.h> | ||
44 | #include <netinet/in.h> | ||
45 | #include <arpa/inet.h> | ||
46 | #include <netdb.h> | ||
47 | #include <pthread.h> | ||
48 | #include <signal.h> | ||
49 | #include <limits.h> | ||
50 | #include <syslog.h> | ||
51 | #include <getopt.h> | ||
52 | #include <net/if.h> | ||
53 | #include <linux/if_tun.h> | ||
54 | #include <linux/if_tun.h> | ||
55 | #include <linux/virtio_ids.h> | ||
56 | |||
57 | #define MICSYSFSDIR "/sys/class/mic" | ||
58 | #define LOGFILE_NAME "/var/log/mpssd" | ||
59 | #define PAGE_SIZE 4096 | ||
60 | |||
61 | struct mic_console_info { | ||
62 | pthread_t console_thread; | ||
63 | int virtio_console_fd; | ||
64 | void *console_dp; | ||
65 | }; | ||
66 | |||
67 | struct mic_net_info { | ||
68 | pthread_t net_thread; | ||
69 | int virtio_net_fd; | ||
70 | int tap_fd; | ||
71 | void *net_dp; | ||
72 | }; | ||
73 | |||
74 | struct mic_virtblk_info { | ||
75 | pthread_t block_thread; | ||
76 | int virtio_block_fd; | ||
77 | void *block_dp; | ||
78 | volatile sig_atomic_t signaled; | ||
79 | char *backend_file; | ||
80 | int backend; | ||
81 | void *backend_addr; | ||
82 | long backend_size; | ||
83 | }; | ||
84 | |||
85 | struct mic_info { | ||
86 | int id; | ||
87 | char *name; | ||
88 | pthread_t config_thread; | ||
89 | pid_t pid; | ||
90 | struct mic_console_info mic_console; | ||
91 | struct mic_net_info mic_net; | ||
92 | struct mic_virtblk_info mic_virtblk; | ||
93 | int restart; | ||
94 | int boot_on_resume; | ||
95 | struct mic_info *next; | ||
96 | }; | ||
97 | |||
98 | __attribute__((format(printf, 1, 2))) | ||
99 | void mpsslog(char *format, ...); | ||
100 | char *readsysfs(char *dir, char *entry); | ||
101 | int setsysfs(char *dir, char *entry, char *value); | ||
102 | #endif | ||
diff --git a/Documentation/mic/mpssd/sysfs.c b/Documentation/mic/mpssd/sysfs.c new file mode 100644 index 000000000000..8dd326936083 --- /dev/null +++ b/Documentation/mic/mpssd/sysfs.c | |||
@@ -0,0 +1,102 @@ | |||
1 | /* | ||
2 | * Intel MIC Platform Software Stack (MPSS) | ||
3 | * | ||
4 | * Copyright(c) 2013 Intel Corporation. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License, version 2, as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, but | ||
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
13 | * General Public License for more details. | ||
14 | * | ||
15 | * The full GNU General Public License is included in this distribution in | ||
16 | * the file called "COPYING". | ||
17 | * | ||
18 | * Intel MIC User Space Tools. | ||
19 | */ | ||
20 | |||
21 | #include "mpssd.h" | ||
22 | |||
23 | #define PAGE_SIZE 4096 | ||
24 | |||
25 | char * | ||
26 | readsysfs(char *dir, char *entry) | ||
27 | { | ||
28 | char filename[PATH_MAX]; | ||
29 | char value[PAGE_SIZE]; | ||
30 | char *string = NULL; | ||
31 | int fd; | ||
32 | int len; | ||
33 | |||
34 | if (dir == NULL) | ||
35 | snprintf(filename, PATH_MAX, "%s/%s", MICSYSFSDIR, entry); | ||
36 | else | ||
37 | snprintf(filename, PATH_MAX, | ||
38 | "%s/%s/%s", MICSYSFSDIR, dir, entry); | ||
39 | |||
40 | fd = open(filename, O_RDONLY); | ||
41 | if (fd < 0) { | ||
42 | mpsslog("Failed to open sysfs entry '%s': %s\n", | ||
43 | filename, strerror(errno)); | ||
44 | return NULL; | ||
45 | } | ||
46 | |||
47 | len = read(fd, value, sizeof(value)); | ||
48 | if (len < 0) { | ||
49 | mpsslog("Failed to read sysfs entry '%s': %s\n", | ||
50 | filename, strerror(errno)); | ||
51 | goto readsys_ret; | ||
52 | } | ||
53 | if (len == 0) | ||
54 | goto readsys_ret; | ||
55 | |||
56 | value[len - 1] = '\0'; | ||
57 | |||
58 | string = malloc(strlen(value) + 1); | ||
59 | if (string) | ||
60 | strcpy(string, value); | ||
61 | |||
62 | readsys_ret: | ||
63 | close(fd); | ||
64 | return string; | ||
65 | } | ||
66 | |||
67 | int | ||
68 | setsysfs(char *dir, char *entry, char *value) | ||
69 | { | ||
70 | char filename[PATH_MAX]; | ||
71 | char *oldvalue; | ||
72 | int fd, ret = 0; | ||
73 | |||
74 | if (dir == NULL) | ||
75 | snprintf(filename, PATH_MAX, "%s/%s", MICSYSFSDIR, entry); | ||
76 | else | ||
77 | snprintf(filename, PATH_MAX, "%s/%s/%s", | ||
78 | MICSYSFSDIR, dir, entry); | ||
79 | |||
80 | oldvalue = readsysfs(dir, entry); | ||
81 | |||
82 | fd = open(filename, O_RDWR); | ||
83 | if (fd < 0) { | ||
84 | ret = errno; | ||
85 | mpsslog("Failed to open sysfs entry '%s': %s\n", | ||
86 | filename, strerror(errno)); | ||
87 | goto done; | ||
88 | } | ||
89 | |||
90 | if (!oldvalue || strcmp(value, oldvalue)) { | ||
91 | if (write(fd, value, strlen(value)) < 0) { | ||
92 | ret = errno; | ||
93 | mpsslog("Failed to write new sysfs entry '%s': %s\n", | ||
94 | filename, strerror(errno)); | ||
95 | } | ||
96 | } | ||
97 | close(fd); | ||
98 | done: | ||
99 | if (oldvalue) | ||
100 | free(oldvalue); | ||
101 | return ret; | ||
102 | } | ||
diff --git a/Documentation/mtd/nand_ecc.txt b/Documentation/mtd/nand_ecc.txt index 990efd7a9818..e129b2479ea8 100644 --- a/Documentation/mtd/nand_ecc.txt +++ b/Documentation/mtd/nand_ecc.txt | |||
@@ -543,7 +543,7 @@ THe code within the for loop was changed to: | |||
543 | } | 543 | } |
544 | 544 | ||
545 | As you can see tmppar is used to accumulate the parity within a for | 545 | As you can see tmppar is used to accumulate the parity within a for |
546 | iteration. In the last 3 statements is is added to par and, if needed, | 546 | iteration. In the last 3 statements is added to par and, if needed, |
547 | to rp12 and rp14. | 547 | to rp12 and rp14. |
548 | 548 | ||
549 | While making the changes I also found that I could exploit that tmppar | 549 | While making the changes I also found that I could exploit that tmppar |
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX index 32dfbd924121..f11580f8719a 100644 --- a/Documentation/networking/00-INDEX +++ b/Documentation/networking/00-INDEX | |||
@@ -86,6 +86,8 @@ generic_netlink.txt | |||
86 | - info on Generic Netlink | 86 | - info on Generic Netlink |
87 | gianfar.txt | 87 | gianfar.txt |
88 | - Gianfar Ethernet Driver. | 88 | - Gianfar Ethernet Driver. |
89 | i40e.txt | ||
90 | - README for the Intel Ethernet Controller XL710 Driver (i40e). | ||
89 | ieee802154.txt | 91 | ieee802154.txt |
90 | - Linux IEEE 802.15.4 implementation, API and drivers | 92 | - Linux IEEE 802.15.4 implementation, API and drivers |
91 | igb.txt | 93 | igb.txt |
@@ -124,6 +126,8 @@ multiqueue.txt | |||
124 | - HOWTO for multiqueue network device support. | 126 | - HOWTO for multiqueue network device support. |
125 | netconsole.txt | 127 | netconsole.txt |
126 | - The network console module netconsole.ko: configuration and notes. | 128 | - The network console module netconsole.ko: configuration and notes. |
129 | netdev-FAQ.txt | ||
130 | - FAQ describing how to submit net changes to netdev mailing list. | ||
127 | netdev-features.txt | 131 | netdev-features.txt |
128 | - Network interface features API description. | 132 | - Network interface features API description. |
129 | netdevices.txt | 133 | netdevices.txt |
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 87bbcfee2e06..9b28e714831a 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -1362,6 +1362,12 @@ To add ARP targets: | |||
1362 | To remove an ARP target: | 1362 | To remove an ARP target: |
1363 | # echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target | 1363 | # echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target |
1364 | 1364 | ||
1365 | To configure the interval between learning packet transmits: | ||
1366 | # echo 12 > /sys/class/net/bond0/bonding/lp_interval | ||
1367 | NOTE: the lp_inteval is the number of seconds between instances where | ||
1368 | the bonding driver sends learning packets to each slaves peer switch. The | ||
1369 | default interval is 1 second. | ||
1370 | |||
1365 | Example Configuration | 1371 | Example Configuration |
1366 | --------------------- | 1372 | --------------------- |
1367 | We begin with the same example that is shown in section 3.3, | 1373 | We begin with the same example that is shown in section 3.3, |
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt index d718bc2ff1cf..bf5dbe3ab8c5 100644 --- a/Documentation/networking/dccp.txt +++ b/Documentation/networking/dccp.txt | |||
@@ -18,8 +18,8 @@ Introduction | |||
18 | Datagram Congestion Control Protocol (DCCP) is an unreliable, connection | 18 | Datagram Congestion Control Protocol (DCCP) is an unreliable, connection |
19 | oriented protocol designed to solve issues present in UDP and TCP, particularly | 19 | oriented protocol designed to solve issues present in UDP and TCP, particularly |
20 | for real-time and multimedia (streaming) traffic. | 20 | for real-time and multimedia (streaming) traffic. |
21 | It divides into a base protocol (RFC 4340) and plugable congestion control | 21 | It divides into a base protocol (RFC 4340) and pluggable congestion control |
22 | modules called CCIDs. Like plugable TCP congestion control, at least one CCID | 22 | modules called CCIDs. Like pluggable TCP congestion control, at least one CCID |
23 | needs to be enabled in order for the protocol to function properly. In the Linux | 23 | needs to be enabled in order for the protocol to function properly. In the Linux |
24 | implementation, this is the TCP-like CCID2 (RFC 4341). Additional CCIDs, such as | 24 | implementation, this is the TCP-like CCID2 (RFC 4341). Additional CCIDs, such as |
25 | the TCP-friendly CCID3 (RFC 4342), are optional. | 25 | the TCP-friendly CCID3 (RFC 4342), are optional. |
diff --git a/Documentation/networking/e100.txt b/Documentation/networking/e100.txt index fcb6c71cdb69..f862cf3aff34 100644 --- a/Documentation/networking/e100.txt +++ b/Documentation/networking/e100.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters | 1 | Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters |
2 | ============================================================== | 2 | ============================================================== |
3 | 3 | ||
4 | November 15, 2005 | 4 | March 15, 2011 |
5 | 5 | ||
6 | Contents | 6 | Contents |
7 | ======== | 7 | ======== |
@@ -103,7 +103,7 @@ Additional Configurations | |||
103 | PRO/100 Family of Adapters is e100. | 103 | PRO/100 Family of Adapters is e100. |
104 | 104 | ||
105 | As an example, if you install the e100 driver for two PRO/100 adapters | 105 | As an example, if you install the e100 driver for two PRO/100 adapters |
106 | (eth0 and eth1), add the following to a configuraton file in /etc/modprobe.d/ | 106 | (eth0 and eth1), add the following to a configuration file in /etc/modprobe.d/ |
107 | 107 | ||
108 | alias eth0 e100 | 108 | alias eth0 e100 |
109 | alias eth1 e100 | 109 | alias eth1 e100 |
@@ -122,7 +122,7 @@ Additional Configurations | |||
122 | NOTE: This setting is not saved across reboots. | 122 | NOTE: This setting is not saved across reboots. |
123 | 123 | ||
124 | 124 | ||
125 | Ethtool | 125 | ethtool |
126 | ------- | 126 | ------- |
127 | 127 | ||
128 | The driver utilizes the ethtool interface for driver configuration and | 128 | The driver utilizes the ethtool interface for driver configuration and |
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt index 71ca95855671..437b2099cced 100644 --- a/Documentation/networking/e1000.txt +++ b/Documentation/networking/e1000.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters | 1 | Linux* Base Driver for Intel(R) Ethernet Network Connection |
2 | =============================================================== | 2 | =========================================================== |
3 | 3 | ||
4 | Intel Gigabit Linux driver. | 4 | Intel Gigabit Linux driver. |
5 | Copyright(c) 1999 - 2010 Intel Corporation. | 5 | Copyright(c) 1999 - 2013 Intel Corporation. |
6 | 6 | ||
7 | Contents | 7 | Contents |
8 | ======== | 8 | ======== |
@@ -420,15 +420,15 @@ Additional Configurations | |||
420 | - The maximum MTU setting for Jumbo Frames is 16110. This value coincides | 420 | - The maximum MTU setting for Jumbo Frames is 16110. This value coincides |
421 | with the maximum Jumbo Frames size of 16128. | 421 | with the maximum Jumbo Frames size of 16128. |
422 | 422 | ||
423 | - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or | 423 | - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in |
424 | loss of link. | 424 | poor performance or loss of link. |
425 | 425 | ||
426 | - Adapters based on the Intel(R) 82542 and 82573V/E controller do not | 426 | - Adapters based on the Intel(R) 82542 and 82573V/E controller do not |
427 | support Jumbo Frames. These correspond to the following product names: | 427 | support Jumbo Frames. These correspond to the following product names: |
428 | Intel(R) PRO/1000 Gigabit Server Adapter | 428 | Intel(R) PRO/1000 Gigabit Server Adapter |
429 | Intel(R) PRO/1000 PM Network Connection | 429 | Intel(R) PRO/1000 PM Network Connection |
430 | 430 | ||
431 | Ethtool | 431 | ethtool |
432 | ------- | 432 | ------- |
433 | The driver utilizes the ethtool interface for driver configuration and | 433 | The driver utilizes the ethtool interface for driver configuration and |
434 | diagnostics, as well as displaying statistical information. The ethtool | 434 | diagnostics, as well as displaying statistical information. The ethtool |
diff --git a/Documentation/networking/e1000e.txt b/Documentation/networking/e1000e.txt index 97b5ba942ebf..ad2d9f38ce14 100644 --- a/Documentation/networking/e1000e.txt +++ b/Documentation/networking/e1000e.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | Linux* Driver for Intel(R) Network Connection | 1 | Linux* Driver for Intel(R) Ethernet Network Connection |
2 | ============================================= | 2 | ====================================================== |
3 | 3 | ||
4 | Intel Gigabit Linux driver. | 4 | Intel Gigabit Linux driver. |
5 | Copyright(c) 1999 - 2010 Intel Corporation. | 5 | Copyright(c) 1999 - 2013 Intel Corporation. |
6 | 6 | ||
7 | Contents | 7 | Contents |
8 | ======== | 8 | ======== |
@@ -259,13 +259,16 @@ Additional Configurations | |||
259 | - The maximum MTU setting for Jumbo Frames is 9216. This value coincides | 259 | - The maximum MTU setting for Jumbo Frames is 9216. This value coincides |
260 | with the maximum Jumbo Frames size of 9234 bytes. | 260 | with the maximum Jumbo Frames size of 9234 bytes. |
261 | 261 | ||
262 | - Using Jumbo Frames at 10 or 100 Mbps is not supported and may result in | 262 | - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in |
263 | poor performance or loss of link. | 263 | poor performance or loss of link. |
264 | 264 | ||
265 | - Some adapters limit Jumbo Frames sized packets to a maximum of | 265 | - Some adapters limit Jumbo Frames sized packets to a maximum of |
266 | 4096 bytes and some adapters do not support Jumbo Frames. | 266 | 4096 bytes and some adapters do not support Jumbo Frames. |
267 | 267 | ||
268 | Ethtool | 268 | - Jumbo Frames cannot be configured on an 82579-based Network device, if |
269 | MACSec is enabled on the system. | ||
270 | |||
271 | ethtool | ||
269 | ------- | 272 | ------- |
270 | The driver utilizes the ethtool interface for driver configuration and | 273 | The driver utilizes the ethtool interface for driver configuration and |
271 | diagnostics, as well as displaying statistical information. We | 274 | diagnostics, as well as displaying statistical information. We |
@@ -273,6 +276,9 @@ Additional Configurations | |||
273 | 276 | ||
274 | http://ftp.kernel.org/pub/software/network/ethtool/ | 277 | http://ftp.kernel.org/pub/software/network/ethtool/ |
275 | 278 | ||
279 | NOTE: When validating enable/disable tests on some parts (82578, for example) | ||
280 | you need to add a few seconds between tests when working with ethtool. | ||
281 | |||
276 | Speed and Duplex | 282 | Speed and Duplex |
277 | ---------------- | 283 | ---------------- |
278 | Speed and Duplex are configured through the ethtool* utility. For | 284 | Speed and Duplex are configured through the ethtool* utility. For |
diff --git a/Documentation/networking/i40e.txt b/Documentation/networking/i40e.txt new file mode 100644 index 000000000000..f737273c6dc1 --- /dev/null +++ b/Documentation/networking/i40e.txt | |||
@@ -0,0 +1,115 @@ | |||
1 | Linux Base Driver for the Intel(R) Ethernet Controller XL710 Family | ||
2 | =================================================================== | ||
3 | |||
4 | Intel i40e Linux driver. | ||
5 | Copyright(c) 2013 Intel Corporation. | ||
6 | |||
7 | Contents | ||
8 | ======== | ||
9 | |||
10 | - Identifying Your Adapter | ||
11 | - Additional Configurations | ||
12 | - Performance Tuning | ||
13 | - Known Issues | ||
14 | - Support | ||
15 | |||
16 | |||
17 | Identifying Your Adapter | ||
18 | ======================== | ||
19 | |||
20 | The driver in this release is compatible with the Intel Ethernet | ||
21 | Controller XL710 Family. | ||
22 | |||
23 | For more information on how to identify your adapter, go to the Adapter & | ||
24 | Driver ID Guide at: | ||
25 | |||
26 | http://support.intel.com/support/network/sb/CS-012904.htm | ||
27 | |||
28 | |||
29 | Enabling the driver | ||
30 | =================== | ||
31 | |||
32 | The driver is enabled via the standard kernel configuration system, | ||
33 | using the make command: | ||
34 | |||
35 | Make oldconfig/silentoldconfig/menuconfig/etc. | ||
36 | |||
37 | The driver is located in the menu structure at: | ||
38 | |||
39 | -> Device Drivers | ||
40 | -> Network device support (NETDEVICES [=y]) | ||
41 | -> Ethernet driver support | ||
42 | -> Intel devices | ||
43 | -> Intel(R) Ethernet Controller XL710 Family | ||
44 | |||
45 | Additional Configurations | ||
46 | ========================= | ||
47 | |||
48 | Generic Receive Offload (GRO) | ||
49 | ----------------------------- | ||
50 | The driver supports the in-kernel software implementation of GRO. GRO has | ||
51 | shown that by coalescing Rx traffic into larger chunks of data, CPU | ||
52 | utilization can be significantly reduced when under large Rx load. GRO is | ||
53 | an evolution of the previously-used LRO interface. GRO is able to coalesce | ||
54 | other protocols besides TCP. It's also safe to use with configurations that | ||
55 | are problematic for LRO, namely bridging and iSCSI. | ||
56 | |||
57 | Ethtool | ||
58 | ------- | ||
59 | The driver utilizes the ethtool interface for driver configuration and | ||
60 | diagnostics, as well as displaying statistical information. The latest | ||
61 | ethtool version is required for this functionality. | ||
62 | |||
63 | The latest release of ethtool can be found from | ||
64 | https://www.kernel.org/pub/software/network/ethtool | ||
65 | |||
66 | Data Center Bridging (DCB) | ||
67 | -------------------------- | ||
68 | DCB configuration is not currently supported. | ||
69 | |||
70 | FCoE | ||
71 | ---- | ||
72 | Fiber Channel over Ethernet (FCoE) hardware offload is not currently | ||
73 | supported. | ||
74 | |||
75 | MAC and VLAN anti-spoofing feature | ||
76 | ---------------------------------- | ||
77 | When a malicious driver attempts to send a spoofed packet, it is dropped by | ||
78 | the hardware and not transmitted. An interrupt is sent to the PF driver | ||
79 | notifying it of the spoof attempt. | ||
80 | |||
81 | When a spoofed packet is detected the PF driver will send the following | ||
82 | message to the system log (displayed by the "dmesg" command): | ||
83 | |||
84 | Spoof event(s) detected on VF (n) | ||
85 | |||
86 | Where n=the VF that attempted to do the spoofing. | ||
87 | |||
88 | |||
89 | Performance Tuning | ||
90 | ================== | ||
91 | |||
92 | An excellent article on performance tuning can be found at: | ||
93 | |||
94 | http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf | ||
95 | |||
96 | |||
97 | Known Issues | ||
98 | ============ | ||
99 | |||
100 | |||
101 | Support | ||
102 | ======= | ||
103 | |||
104 | For general information, go to the Intel support website at: | ||
105 | |||
106 | http://support.intel.com | ||
107 | |||
108 | or the Intel Wired Networking project hosted by Sourceforge at: | ||
109 | |||
110 | http://e1000.sourceforge.net | ||
111 | |||
112 | If an issue is identified with the released source code on the supported | ||
113 | kernel with a supported adapter, email the specific information related | ||
114 | to the issue to e1000-devel@lists.sourceforge.net and copy | ||
115 | netdev@vger.kernel.org. | ||
diff --git a/Documentation/networking/ieee802154.txt b/Documentation/networking/ieee802154.txt index 09eb57329f11..22bbc7225f8e 100644 --- a/Documentation/networking/ieee802154.txt +++ b/Documentation/networking/ieee802154.txt | |||
@@ -4,7 +4,7 @@ | |||
4 | 4 | ||
5 | Introduction | 5 | Introduction |
6 | ============ | 6 | ============ |
7 | The IEEE 802.15.4 working group focuses on standartization of bottom | 7 | The IEEE 802.15.4 working group focuses on standardization of bottom |
8 | two layers: Medium Access Control (MAC) and Physical (PHY). And there | 8 | two layers: Medium Access Control (MAC) and Physical (PHY). And there |
9 | are mainly two options available for upper layers: | 9 | are mainly two options available for upper layers: |
10 | - ZigBee - proprietary protocol from ZigBee Alliance | 10 | - ZigBee - proprietary protocol from ZigBee Alliance |
@@ -66,7 +66,7 @@ net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family | |||
66 | code via plain sk_buffs. On skb reception skb->cb must contain additional | 66 | code via plain sk_buffs. On skb reception skb->cb must contain additional |
67 | info as described in the struct ieee802154_mac_cb. During packet transmission | 67 | info as described in the struct ieee802154_mac_cb. During packet transmission |
68 | the skb->cb is used to provide additional data to device's header_ops->create | 68 | the skb->cb is used to provide additional data to device's header_ops->create |
69 | function. Be aware, that this data can be overriden later (when socket code | 69 | function. Be aware that this data can be overridden later (when socket code |
70 | submits skb to qdisc), so if you need something from that cb later, you should | 70 | submits skb to qdisc), so if you need something from that cb later, you should |
71 | store info in the skb->data on your own. | 71 | store info in the skb->data on your own. |
72 | 72 | ||
diff --git a/Documentation/networking/igb.txt b/Documentation/networking/igb.txt index 9a2a037194a5..4ebbd659256f 100644 --- a/Documentation/networking/igb.txt +++ b/Documentation/networking/igb.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | Linux* Base Driver for Intel(R) Network Connection | 1 | Linux* Base Driver for Intel(R) Ethernet Network Connection |
2 | ================================================== | 2 | =========================================================== |
3 | 3 | ||
4 | Intel Gigabit Linux driver. | 4 | Intel Gigabit Linux driver. |
5 | Copyright(c) 1999 - 2010 Intel Corporation. | 5 | Copyright(c) 1999 - 2013 Intel Corporation. |
6 | 6 | ||
7 | Contents | 7 | Contents |
8 | ======== | 8 | ======== |
@@ -36,6 +36,53 @@ Default Value: 0 | |||
36 | This parameter adds support for SR-IOV. It causes the driver to spawn up to | 36 | This parameter adds support for SR-IOV. It causes the driver to spawn up to |
37 | max_vfs worth of virtual function. | 37 | max_vfs worth of virtual function. |
38 | 38 | ||
39 | QueuePairs | ||
40 | ---------- | ||
41 | Valid Range: 0-1 | ||
42 | Default Value: 1 (TX and RX will be paired onto one interrupt vector) | ||
43 | |||
44 | If set to 0, when MSI-X is enabled, the TX and RX will attempt to occupy | ||
45 | separate vectors. | ||
46 | |||
47 | This option can be overridden to 1 if there are not sufficient interrupts | ||
48 | available. This can occur if any combination of RSS, VMDQ, and max_vfs | ||
49 | results in more than 4 queues being used. | ||
50 | |||
51 | Node | ||
52 | ---- | ||
53 | Valid Range: 0-n | ||
54 | Default Value: -1 (off) | ||
55 | |||
56 | 0 - n: where n is the number of the NUMA node that should be used to | ||
57 | allocate memory for this adapter port. | ||
58 | -1: uses the driver default of allocating memory on whichever processor is | ||
59 | running insmod/modprobe. | ||
60 | |||
61 | The Node parameter will allow you to pick which NUMA node you want to have | ||
62 | the adapter allocate memory from. All driver structures, in-memory queues, | ||
63 | and receive buffers will be allocated on the node specified. This parameter | ||
64 | is only useful when interrupt affinity is specified, otherwise some portion | ||
65 | of the time the interrupt could run on a different core than the memory is | ||
66 | allocated on, causing slower memory access and impacting throughput, CPU, or | ||
67 | both. | ||
68 | |||
69 | EEE | ||
70 | --- | ||
71 | Valid Range: 0-1 | ||
72 | Default Value: 1 (enabled) | ||
73 | |||
74 | A link between two EEE-compliant devices will result in periodic bursts of | ||
75 | data followed by long periods where in the link is in an idle state. This Low | ||
76 | Power Idle (LPI) state is supported in both 1Gbps and 100Mbps link speeds. | ||
77 | NOTE: EEE support requires autonegotiation. | ||
78 | |||
79 | DMAC | ||
80 | ---- | ||
81 | Valid Range: 0-1 | ||
82 | Default Value: 1 (enabled) | ||
83 | Enables or disables DMA Coalescing feature. | ||
84 | |||
85 | |||
39 | 86 | ||
40 | Additional Configurations | 87 | Additional Configurations |
41 | ========================= | 88 | ========================= |
@@ -55,10 +102,10 @@ Additional Configurations | |||
55 | - The maximum MTU setting for Jumbo Frames is 9216. This value coincides | 102 | - The maximum MTU setting for Jumbo Frames is 9216. This value coincides |
56 | with the maximum Jumbo Frames size of 9234 bytes. | 103 | with the maximum Jumbo Frames size of 9234 bytes. |
57 | 104 | ||
58 | - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or | 105 | - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in |
59 | loss of link. | 106 | poor performance or loss of link. |
60 | 107 | ||
61 | Ethtool | 108 | ethtool |
62 | ------- | 109 | ------- |
63 | The driver utilizes the ethtool interface for driver configuration and | 110 | The driver utilizes the ethtool interface for driver configuration and |
64 | diagnostics, as well as displaying statistical information. The latest | 111 | diagnostics, as well as displaying statistical information. The latest |
@@ -106,6 +153,14 @@ Additional Configurations | |||
106 | 153 | ||
107 | Where n=the VF that attempted to do the spoofing. | 154 | Where n=the VF that attempted to do the spoofing. |
108 | 155 | ||
156 | Setting MAC Address, VLAN and Rate Limit Using IProute2 Tool | ||
157 | ------------------------------------------------------------ | ||
158 | You can set a MAC address of a Virtual Function (VF), a default VLAN and the | ||
159 | rate limit using the IProute2 tool. Download the latest version of the | ||
160 | iproute2 tool from Sourceforge if your version does not have all the | ||
161 | features you require. | ||
162 | |||
163 | |||
109 | Support | 164 | Support |
110 | ======= | 165 | ======= |
111 | 166 | ||
diff --git a/Documentation/networking/igbvf.txt b/Documentation/networking/igbvf.txt index cbfe4ee65533..40db17a6665b 100644 --- a/Documentation/networking/igbvf.txt +++ b/Documentation/networking/igbvf.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | Linux* Base Driver for Intel(R) Network Connection | 1 | Linux* Base Driver for Intel(R) Ethernet Network Connection |
2 | ================================================== | 2 | =========================================================== |
3 | 3 | ||
4 | Intel Gigabit Linux driver. | 4 | Intel Gigabit Linux driver. |
5 | Copyright(c) 1999 - 2010 Intel Corporation. | 5 | Copyright(c) 1999 - 2013 Intel Corporation. |
6 | 6 | ||
7 | Contents | 7 | Contents |
8 | ======== | 8 | ======== |
@@ -55,7 +55,7 @@ networking link on the left to search for your adapter: | |||
55 | Additional Configurations | 55 | Additional Configurations |
56 | ========================= | 56 | ========================= |
57 | 57 | ||
58 | Ethtool | 58 | ethtool |
59 | ------- | 59 | ------- |
60 | The driver utilizes the ethtool interface for driver configuration and | 60 | The driver utilizes the ethtool interface for driver configuration and |
61 | diagnostics, as well as displaying statistical information. The ethtool | 61 | diagnostics, as well as displaying statistical information. The ethtool |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index 10742902146f..a46d78583ae1 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -440,6 +440,10 @@ tcp_syncookies - BOOLEAN | |||
440 | SYN flood warnings in logs not being really flooded, your server | 440 | SYN flood warnings in logs not being really flooded, your server |
441 | is seriously misconfigured. | 441 | is seriously misconfigured. |
442 | 442 | ||
443 | If you want to test which effects syncookies have to your | ||
444 | network connections you can set this knob to 2 to enable | ||
445 | unconditionally generation of syncookies. | ||
446 | |||
443 | tcp_fastopen - INTEGER | 447 | tcp_fastopen - INTEGER |
444 | Enable TCP Fast Open feature (draft-ietf-tcpm-fastopen) to send data | 448 | Enable TCP Fast Open feature (draft-ietf-tcpm-fastopen) to send data |
445 | in the opening SYN packet. To use this feature, the client application | 449 | in the opening SYN packet. To use this feature, the client application |
@@ -478,6 +482,15 @@ tcp_syn_retries - INTEGER | |||
478 | tcp_timestamps - BOOLEAN | 482 | tcp_timestamps - BOOLEAN |
479 | Enable timestamps as defined in RFC1323. | 483 | Enable timestamps as defined in RFC1323. |
480 | 484 | ||
485 | tcp_min_tso_segs - INTEGER | ||
486 | Minimal number of segments per TSO frame. | ||
487 | Since linux-3.12, TCP does an automatic sizing of TSO frames, | ||
488 | depending on flow rate, instead of filling 64Kbytes packets. | ||
489 | For specific usages, it's possible to force TCP to build big | ||
490 | TSO frames. Note that TCP stack might split too big TSO packets | ||
491 | if available window is too small. | ||
492 | Default: 2 | ||
493 | |||
481 | tcp_tso_win_divisor - INTEGER | 494 | tcp_tso_win_divisor - INTEGER |
482 | This allows control over what percentage of the congestion window | 495 | This allows control over what percentage of the congestion window |
483 | can be consumed by a single TSO frame. | 496 | can be consumed by a single TSO frame. |
@@ -516,6 +529,19 @@ tcp_wmem - vector of 3 INTEGERs: min, default, max | |||
516 | this value is ignored. | 529 | this value is ignored. |
517 | Default: between 64K and 4MB, depending on RAM size. | 530 | Default: between 64K and 4MB, depending on RAM size. |
518 | 531 | ||
532 | tcp_notsent_lowat - UNSIGNED INTEGER | ||
533 | A TCP socket can control the amount of unsent bytes in its write queue, | ||
534 | thanks to TCP_NOTSENT_LOWAT socket option. poll()/select()/epoll() | ||
535 | reports POLLOUT events if the amount of unsent bytes is below a per | ||
536 | socket value, and if the write queue is not full. sendmsg() will | ||
537 | also not add new buffers if the limit is hit. | ||
538 | |||
539 | This global variable controls the amount of unsent data for | ||
540 | sockets not using TCP_NOTSENT_LOWAT. For these sockets, a change | ||
541 | to the global variable has immediate effect. | ||
542 | |||
543 | Default: UINT_MAX (0xFFFFFFFF) | ||
544 | |||
519 | tcp_workaround_signed_windows - BOOLEAN | 545 | tcp_workaround_signed_windows - BOOLEAN |
520 | If set, assume no receipt of a window scaling option means the | 546 | If set, assume no receipt of a window scaling option means the |
521 | remote TCP is broken and treats the window as a signed quantity. | 547 | remote TCP is broken and treats the window as a signed quantity. |
@@ -1022,7 +1048,15 @@ disable_policy - BOOLEAN | |||
1022 | disable_xfrm - BOOLEAN | 1048 | disable_xfrm - BOOLEAN |
1023 | Disable IPSEC encryption on this interface, whatever the policy | 1049 | Disable IPSEC encryption on this interface, whatever the policy |
1024 | 1050 | ||
1051 | igmpv2_unsolicited_report_interval - INTEGER | ||
1052 | The interval in milliseconds in which the next unsolicited | ||
1053 | IGMPv1 or IGMPv2 report retransmit will take place. | ||
1054 | Default: 10000 (10 seconds) | ||
1025 | 1055 | ||
1056 | igmpv3_unsolicited_report_interval - INTEGER | ||
1057 | The interval in milliseconds in which the next unsolicited | ||
1058 | IGMPv3 report retransmit will take place. | ||
1059 | Default: 1000 (1 seconds) | ||
1026 | 1060 | ||
1027 | tag - INTEGER | 1061 | tag - INTEGER |
1028 | Allows you to write a number, which can be used as required. | 1062 | Allows you to write a number, which can be used as required. |
@@ -1314,6 +1348,27 @@ ndisc_notify - BOOLEAN | |||
1314 | 1 - Generate unsolicited neighbour advertisements when device is brought | 1348 | 1 - Generate unsolicited neighbour advertisements when device is brought |
1315 | up or hardware address changes. | 1349 | up or hardware address changes. |
1316 | 1350 | ||
1351 | mldv1_unsolicited_report_interval - INTEGER | ||
1352 | The interval in milliseconds in which the next unsolicited | ||
1353 | MLDv1 report retransmit will take place. | ||
1354 | Default: 10000 (10 seconds) | ||
1355 | |||
1356 | mldv2_unsolicited_report_interval - INTEGER | ||
1357 | The interval in milliseconds in which the next unsolicited | ||
1358 | MLDv2 report retransmit will take place. | ||
1359 | Default: 1000 (1 second) | ||
1360 | |||
1361 | force_mld_version - INTEGER | ||
1362 | 0 - (default) No enforcement of a MLD version, MLDv1 fallback allowed | ||
1363 | 1 - Enforce to use MLD version 1 | ||
1364 | 2 - Enforce to use MLD version 2 | ||
1365 | |||
1366 | suppress_frag_ndisc - INTEGER | ||
1367 | Control RFC 6980 (Security Implications of IPv6 Fragmentation | ||
1368 | with IPv6 Neighbor Discovery) behavior: | ||
1369 | 1 - (default) discard fragmented neighbor discovery packets | ||
1370 | 0 - allow fragmented neighbor discovery packets | ||
1371 | |||
1317 | icmp/*: | 1372 | icmp/*: |
1318 | ratelimit - INTEGER | 1373 | ratelimit - INTEGER |
1319 | Limit the maximal rates for sending ICMPv6 packets. | 1374 | Limit the maximal rates for sending ICMPv6 packets. |
diff --git a/Documentation/networking/ixgb.txt b/Documentation/networking/ixgb.txt index d75a1f9565bb..1e0c045e89f7 100644 --- a/Documentation/networking/ixgb.txt +++ b/Documentation/networking/ixgb.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Linux Base Driver for 10 Gigabit Intel(R) Network Connection | 1 | Linux Base Driver for 10 Gigabit Intel(R) Ethernet Network Connection |
2 | ============================================================= | 2 | ===================================================================== |
3 | 3 | ||
4 | October 9, 2007 | 4 | March 14, 2011 |
5 | 5 | ||
6 | 6 | ||
7 | Contents | 7 | Contents |
@@ -274,9 +274,9 @@ Additional Configurations | |||
274 | ------------------------------------------------- | 274 | ------------------------------------------------- |
275 | Configuring a network driver to load properly when the system is started is | 275 | Configuring a network driver to load properly when the system is started is |
276 | distribution dependent. Typically, the configuration process involves adding | 276 | distribution dependent. Typically, the configuration process involves adding |
277 | an alias line to files in /etc/modprobe.d/ as well as editing other system | 277 | an alias line to /etc/modprobe.conf as well as editing other system startup |
278 | startup scripts and/or configuration files. Many popular Linux distributions | 278 | scripts and/or configuration files. Many popular Linux distributions ship |
279 | ship with tools to make these changes for you. To learn the proper way to | 279 | with tools to make these changes for you. To learn the proper way to |
280 | configure a network device for your system, refer to your distribution | 280 | configure a network device for your system, refer to your distribution |
281 | documentation. If during this process you are asked for the driver or module | 281 | documentation. If during this process you are asked for the driver or module |
282 | name, the name for the Linux Base Driver for the Intel 10GbE Family of | 282 | name, the name for the Linux Base Driver for the Intel 10GbE Family of |
@@ -306,7 +306,7 @@ Additional Configurations | |||
306 | with the maximum Jumbo Frames size of 16128. | 306 | with the maximum Jumbo Frames size of 16128. |
307 | 307 | ||
308 | 308 | ||
309 | Ethtool | 309 | ethtool |
310 | ------- | 310 | ------- |
311 | The driver utilizes the ethtool interface for driver configuration and | 311 | The driver utilizes the ethtool interface for driver configuration and |
312 | diagnostics, as well as displaying statistical information. The ethtool | 312 | diagnostics, as well as displaying statistical information. The ethtool |
diff --git a/Documentation/networking/ixgbe.txt b/Documentation/networking/ixgbe.txt index af77ed3c4172..96cccebb839b 100644 --- a/Documentation/networking/ixgbe.txt +++ b/Documentation/networking/ixgbe.txt | |||
@@ -1,8 +1,9 @@ | |||
1 | Linux Base Driver for 10 Gigabit PCI Express Intel(R) Network Connection | 1 | Linux* Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Family of |
2 | ======================================================================== | 2 | Adapters |
3 | ============================================================================= | ||
3 | 4 | ||
4 | Intel Gigabit Linux driver. | 5 | Intel 10 Gigabit Linux driver. |
5 | Copyright(c) 1999 - 2010 Intel Corporation. | 6 | Copyright(c) 1999 - 2013 Intel Corporation. |
6 | 7 | ||
7 | Contents | 8 | Contents |
8 | ======== | 9 | ======== |
@@ -16,8 +17,8 @@ Contents | |||
16 | Identifying Your Adapter | 17 | Identifying Your Adapter |
17 | ======================== | 18 | ======================== |
18 | 19 | ||
19 | The driver in this release is compatible with 82598 and 82599-based Intel | 20 | The driver in this release is compatible with 82598, 82599 and X540-based |
20 | Network Connections. | 21 | Intel Network Connections. |
21 | 22 | ||
22 | For more information on how to identify your adapter, go to the Adapter & | 23 | For more information on how to identify your adapter, go to the Adapter & |
23 | Driver ID Guide at: | 24 | Driver ID Guide at: |
@@ -72,7 +73,7 @@ cables that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. | |||
72 | Laser turns off for SFP+ when ifconfig down | 73 | Laser turns off for SFP+ when ifconfig down |
73 | ------------------------------------------- | 74 | ------------------------------------------- |
74 | "ifconfig down" turns off the laser for 82599-based SFP+ fiber adapters. | 75 | "ifconfig down" turns off the laser for 82599-based SFP+ fiber adapters. |
75 | "ifconfig up" turns on the later. | 76 | "ifconfig up" turns on the laser. |
76 | 77 | ||
77 | 78 | ||
78 | 82598-BASED ADAPTERS | 79 | 82598-BASED ADAPTERS |
@@ -118,6 +119,93 @@ NOTE: For 82598 backplane cards entering 1 gig mode, flow control default | |||
118 | behavior is changed to off. Flow control in 1 gig mode on these devices can | 119 | behavior is changed to off. Flow control in 1 gig mode on these devices can |
119 | lead to Tx hangs. | 120 | lead to Tx hangs. |
120 | 121 | ||
122 | Intel(R) Ethernet Flow Director | ||
123 | ------------------------------- | ||
124 | Supports advanced filters that direct receive packets by their flows to | ||
125 | different queues. Enables tight control on routing a flow in the platform. | ||
126 | Matches flows and CPU cores for flow affinity. Supports multiple parameters | ||
127 | for flexible flow classification and load balancing. | ||
128 | |||
129 | Flow director is enabled only if the kernel is multiple TX queue capable. | ||
130 | |||
131 | An included script (set_irq_affinity.sh) automates setting the IRQ to CPU | ||
132 | affinity. | ||
133 | |||
134 | You can verify that the driver is using Flow Director by looking at the counter | ||
135 | in ethtool: fdir_miss and fdir_match. | ||
136 | |||
137 | Other ethtool Commands: | ||
138 | To enable Flow Director | ||
139 | ethtool -K ethX ntuple on | ||
140 | To add a filter | ||
141 | Use -U switch. e.g., ethtool -U ethX flow-type tcp4 src-ip 0x178000a | ||
142 | action 1 | ||
143 | To see the list of filters currently present: | ||
144 | ethtool -u ethX | ||
145 | |||
146 | Perfect Filter: Perfect filter is an interface to load the filter table that | ||
147 | funnels all flow into queue_0 unless an alternative queue is specified using | ||
148 | "action". In that case, any flow that matches the filter criteria will be | ||
149 | directed to the appropriate queue. | ||
150 | |||
151 | If the queue is defined as -1, filter will drop matching packets. | ||
152 | |||
153 | To account for filter matches and misses, there are two stats in ethtool: | ||
154 | fdir_match and fdir_miss. In addition, rx_queue_N_packets shows the number of | ||
155 | packets processed by the Nth queue. | ||
156 | |||
157 | NOTE: Receive Packet Steering (RPS) and Receive Flow Steering (RFS) are not | ||
158 | compatible with Flow Director. IF Flow Director is enabled, these will be | ||
159 | disabled. | ||
160 | |||
161 | The following three parameters impact Flow Director. | ||
162 | |||
163 | FdirMode | ||
164 | -------- | ||
165 | Valid Range: 0-2 (0=off, 1=ATR, 2=Perfect filter mode) | ||
166 | Default Value: 1 | ||
167 | |||
168 | Flow Director filtering modes. | ||
169 | |||
170 | FdirPballoc | ||
171 | ----------- | ||
172 | Valid Range: 0-2 (0=64k, 1=128k, 2=256k) | ||
173 | Default Value: 0 | ||
174 | |||
175 | Flow Director allocated packet buffer size. | ||
176 | |||
177 | AtrSampleRate | ||
178 | -------------- | ||
179 | Valid Range: 1-100 | ||
180 | Default Value: 20 | ||
181 | |||
182 | Software ATR Tx packet sample rate. For example, when set to 20, every 20th | ||
183 | packet, looks to see if the packet will create a new flow. | ||
184 | |||
185 | Node | ||
186 | ---- | ||
187 | Valid Range: 0-n | ||
188 | Default Value: 1 (off) | ||
189 | |||
190 | 0 - n: where n is the number of NUMA nodes (i.e. 0 - 3) currently online in | ||
191 | your system | ||
192 | 1: turns this option off | ||
193 | |||
194 | The Node parameter will allow you to pick which NUMA node you want to have | ||
195 | the adapter allocate memory on. | ||
196 | |||
197 | max_vfs | ||
198 | ------- | ||
199 | Valid Range: 1-63 | ||
200 | Default Value: 0 | ||
201 | |||
202 | If the value is greater than 0 it will also force the VMDq parameter to be 1 | ||
203 | or more. | ||
204 | |||
205 | This parameter adds support for SR-IOV. It causes the driver to spawn up to | ||
206 | max_vfs worth of virtual function. | ||
207 | |||
208 | |||
121 | Additional Configurations | 209 | Additional Configurations |
122 | ========================= | 210 | ========================= |
123 | 211 | ||
@@ -221,9 +309,10 @@ http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf | |||
221 | Known Issues | 309 | Known Issues |
222 | ============ | 310 | ============ |
223 | 311 | ||
224 | Enabling SR-IOV in a 32-bit Microsoft* Windows* Server 2008 Guest OS using | 312 | Enabling SR-IOV in a 32-bit or 64-bit Microsoft* Windows* Server 2008/R2 |
225 | Intel (R) 82576-based GbE or Intel (R) 82599-based 10GbE controller under KVM | 313 | Guest OS using Intel (R) 82576-based GbE or Intel (R) 82599-based 10GbE |
226 | ----------------------------------------------------------------------------- | 314 | controller under KVM |
315 | ------------------------------------------------------------------------ | ||
227 | KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This | 316 | KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This |
228 | includes traditional PCIe devices, as well as SR-IOV-capable devices using | 317 | includes traditional PCIe devices, as well as SR-IOV-capable devices using |
229 | Intel 82576-based and 82599-based controllers. | 318 | Intel 82576-based and 82599-based controllers. |
diff --git a/Documentation/networking/ixgbevf.txt b/Documentation/networking/ixgbevf.txt index 5a91a41fa946..53d8d2a5a6a3 100644 --- a/Documentation/networking/ixgbevf.txt +++ b/Documentation/networking/ixgbevf.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | Linux* Base Driver for Intel(R) Network Connection | 1 | Linux* Base Driver for Intel(R) Ethernet Network Connection |
2 | ================================================== | 2 | =========================================================== |
3 | 3 | ||
4 | Intel Gigabit Linux driver. | 4 | Intel Gigabit Linux driver. |
5 | Copyright(c) 1999 - 2010 Intel Corporation. | 5 | Copyright(c) 1999 - 2013 Intel Corporation. |
6 | 6 | ||
7 | Contents | 7 | Contents |
8 | ======== | 8 | ======== |
diff --git a/Documentation/networking/l2tp.txt b/Documentation/networking/l2tp.txt index e63fc1f7bf87..c74434de2fa5 100644 --- a/Documentation/networking/l2tp.txt +++ b/Documentation/networking/l2tp.txt | |||
@@ -197,7 +197,7 @@ state information because the file format is subject to change. It is | |||
197 | implemented to provide extra debug information to help diagnose | 197 | implemented to provide extra debug information to help diagnose |
198 | problems.) Users should use the netlink API. | 198 | problems.) Users should use the netlink API. |
199 | 199 | ||
200 | /proc/net/pppol2tp is also provided for backwards compaibility with | 200 | /proc/net/pppol2tp is also provided for backwards compatibility with |
201 | the original pppol2tp driver. It lists information about L2TPv2 | 201 | the original pppol2tp driver. It lists information about L2TPv2 |
202 | tunnels and sessions only. Its use is discouraged. | 202 | tunnels and sessions only. Its use is discouraged. |
203 | 203 | ||
diff --git a/Documentation/networking/netdev-FAQ.txt b/Documentation/networking/netdev-FAQ.txt new file mode 100644 index 000000000000..0fe1c6e0dbcd --- /dev/null +++ b/Documentation/networking/netdev-FAQ.txt | |||
@@ -0,0 +1,224 @@ | |||
1 | |||
2 | Information you need to know about netdev | ||
3 | ----------------------------------------- | ||
4 | |||
5 | Q: What is netdev? | ||
6 | |||
7 | A: It is a mailing list for all network-related Linux stuff. This includes | ||
8 | anything found under net/ (i.e. core code like IPv6) and drivers/net | ||
9 | (i.e. hardware specific drivers) in the Linux source tree. | ||
10 | |||
11 | Note that some subsystems (e.g. wireless drivers) which have a high volume | ||
12 | of traffic have their own specific mailing lists. | ||
13 | |||
14 | The netdev list is managed (like many other Linux mailing lists) through | ||
15 | VGER ( http://vger.kernel.org/ ) and archives can be found below: | ||
16 | |||
17 | http://marc.info/?l=linux-netdev | ||
18 | http://www.spinics.net/lists/netdev/ | ||
19 | |||
20 | Aside from subsystems like that mentioned above, all network-related Linux | ||
21 | development (i.e. RFC, review, comments, etc.) takes place on netdev. | ||
22 | |||
23 | Q: How do the changes posted to netdev make their way into Linux? | ||
24 | |||
25 | A: There are always two trees (git repositories) in play. Both are driven | ||
26 | by David Miller, the main network maintainer. There is the "net" tree, | ||
27 | and the "net-next" tree. As you can probably guess from the names, the | ||
28 | net tree is for fixes to existing code already in the mainline tree from | ||
29 | Linus, and net-next is where the new code goes for the future release. | ||
30 | You can find the trees here: | ||
31 | |||
32 | http://git.kernel.org/?p=linux/kernel/git/davem/net.git | ||
33 | http://git.kernel.org/?p=linux/kernel/git/davem/net-next.git | ||
34 | |||
35 | Q: How often do changes from these trees make it to the mainline Linus tree? | ||
36 | |||
37 | A: To understand this, you need to know a bit of background information | ||
38 | on the cadence of Linux development. Each new release starts off with | ||
39 | a two week "merge window" where the main maintainers feed their new | ||
40 | stuff to Linus for merging into the mainline tree. After the two weeks, | ||
41 | the merge window is closed, and it is called/tagged "-rc1". No new | ||
42 | features get mainlined after this -- only fixes to the rc1 content | ||
43 | are expected. After roughly a week of collecting fixes to the rc1 | ||
44 | content, rc2 is released. This repeats on a roughly weekly basis | ||
45 | until rc7 (typically; sometimes rc6 if things are quiet, or rc8 if | ||
46 | things are in a state of churn), and a week after the last vX.Y-rcN | ||
47 | was done, the official "vX.Y" is released. | ||
48 | |||
49 | Relating that to netdev: At the beginning of the 2-week merge window, | ||
50 | the net-next tree will be closed - no new changes/features. The | ||
51 | accumulated new content of the past ~10 weeks will be passed onto | ||
52 | mainline/Linus via a pull request for vX.Y -- at the same time, | ||
53 | the "net" tree will start accumulating fixes for this pulled content | ||
54 | relating to vX.Y | ||
55 | |||
56 | An announcement indicating when net-next has been closed is usually | ||
57 | sent to netdev, but knowing the above, you can predict that in advance. | ||
58 | |||
59 | IMPORTANT: Do not send new net-next content to netdev during the | ||
60 | period during which net-next tree is closed. | ||
61 | |||
62 | Shortly after the two weeks have passed (and vX.Y-rc1 is released), the | ||
63 | tree for net-next reopens to collect content for the next (vX.Y+1) release. | ||
64 | |||
65 | If you aren't subscribed to netdev and/or are simply unsure if net-next | ||
66 | has re-opened yet, simply check the net-next git repository link above for | ||
67 | any new networking-related commits. | ||
68 | |||
69 | The "net" tree continues to collect fixes for the vX.Y content, and | ||
70 | is fed back to Linus at regular (~weekly) intervals. Meaning that the | ||
71 | focus for "net" is on stabilization and bugfixes. | ||
72 | |||
73 | Finally, the vX.Y gets released, and the whole cycle starts over. | ||
74 | |||
75 | Q: So where are we now in this cycle? | ||
76 | |||
77 | A: Load the mainline (Linus) page here: | ||
78 | |||
79 | http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git | ||
80 | |||
81 | and note the top of the "tags" section. If it is rc1, it is early | ||
82 | in the dev cycle. If it was tagged rc7 a week ago, then a release | ||
83 | is probably imminent. | ||
84 | |||
85 | Q: How do I indicate which tree (net vs. net-next) my patch should be in? | ||
86 | |||
87 | A: Firstly, think whether you have a bug fix or new "next-like" content. | ||
88 | Then once decided, assuming that you use git, use the prefix flag, i.e. | ||
89 | |||
90 | git format-patch --subject-prefix='PATCH net-next' start..finish | ||
91 | |||
92 | Use "net" instead of "net-next" (always lower case) in the above for | ||
93 | bug-fix net content. If you don't use git, then note the only magic in | ||
94 | the above is just the subject text of the outgoing e-mail, and you can | ||
95 | manually change it yourself with whatever MUA you are comfortable with. | ||
96 | |||
97 | Q: I sent a patch and I'm wondering what happened to it. How can I tell | ||
98 | whether it got merged? | ||
99 | |||
100 | A: Start by looking at the main patchworks queue for netdev: | ||
101 | |||
102 | http://patchwork.ozlabs.org/project/netdev/list/ | ||
103 | |||
104 | The "State" field will tell you exactly where things are at with | ||
105 | your patch. | ||
106 | |||
107 | Q: The above only says "Under Review". How can I find out more? | ||
108 | |||
109 | A: Generally speaking, the patches get triaged quickly (in less than 48h). | ||
110 | So be patient. Asking the maintainer for status updates on your | ||
111 | patch is a good way to ensure your patch is ignored or pushed to | ||
112 | the bottom of the priority list. | ||
113 | |||
114 | Q: How can I tell what patches are queued up for backporting to the | ||
115 | various stable releases? | ||
116 | |||
117 | A: Normally Greg Kroah-Hartman collects stable commits himself, but | ||
118 | for networking, Dave collects up patches he deems critical for the | ||
119 | networking subsystem, and then hands them off to Greg. | ||
120 | |||
121 | There is a patchworks queue that you can see here: | ||
122 | http://patchwork.ozlabs.org/bundle/davem/stable/?state=* | ||
123 | |||
124 | It contains the patches which Dave has selected, but not yet handed | ||
125 | off to Greg. If Greg already has the patch, then it will be here: | ||
126 | http://git.kernel.org/cgit/linux/kernel/git/stable/stable-queue.git | ||
127 | |||
128 | A quick way to find whether the patch is in this stable-queue is | ||
129 | to simply clone the repo, and then git grep the mainline commit ID, e.g. | ||
130 | |||
131 | stable-queue$ git grep -l 284041ef21fdf2e | ||
132 | releases/3.0.84/ipv6-fix-possible-crashes-in-ip6_cork_release.patch | ||
133 | releases/3.4.51/ipv6-fix-possible-crashes-in-ip6_cork_release.patch | ||
134 | releases/3.9.8/ipv6-fix-possible-crashes-in-ip6_cork_release.patch | ||
135 | stable/stable-queue$ | ||
136 | |||
137 | Q: I see a network patch and I think it should be backported to stable. | ||
138 | Should I request it via "stable@vger.kernel.org" like the references in | ||
139 | the kernel's Documentation/stable_kernel_rules.txt file say? | ||
140 | |||
141 | A: No, not for networking. Check the stable queues as per above 1st to see | ||
142 | if it is already queued. If not, then send a mail to netdev, listing | ||
143 | the upstream commit ID and why you think it should be a stable candidate. | ||
144 | |||
145 | Before you jump to go do the above, do note that the normal stable rules | ||
146 | in Documentation/stable_kernel_rules.txt still apply. So you need to | ||
147 | explicitly indicate why it is a critical fix and exactly what users are | ||
148 | impacted. In addition, you need to convince yourself that you _really_ | ||
149 | think it has been overlooked, vs. having been considered and rejected. | ||
150 | |||
151 | Generally speaking, the longer it has had a chance to "soak" in mainline, | ||
152 | the better the odds that it is an OK candidate for stable. So scrambling | ||
153 | to request a commit be added the day after it appears should be avoided. | ||
154 | |||
155 | Q: I have created a network patch and I think it should be backported to | ||
156 | stable. Should I add a "Cc: stable@vger.kernel.org" like the references | ||
157 | in the kernel's Documentation/ directory say? | ||
158 | |||
159 | A: No. See above answer. In short, if you think it really belongs in | ||
160 | stable, then ensure you write a decent commit log that describes who | ||
161 | gets impacted by the bugfix and how it manifests itself, and when the | ||
162 | bug was introduced. If you do that properly, then the commit will | ||
163 | get handled appropriately and most likely get put in the patchworks | ||
164 | stable queue if it really warrants it. | ||
165 | |||
166 | If you think there is some valid information relating to it being in | ||
167 | stable that does _not_ belong in the commit log, then use the three | ||
168 | dash marker line as described in Documentation/SubmittingPatches to | ||
169 | temporarily embed that information into the patch that you send. | ||
170 | |||
171 | Q: Someone said that the comment style and coding convention is different | ||
172 | for the networking content. Is this true? | ||
173 | |||
174 | A: Yes, in a largely trivial way. Instead of this: | ||
175 | |||
176 | /* | ||
177 | * foobar blah blah blah | ||
178 | * another line of text | ||
179 | */ | ||
180 | |||
181 | it is requested that you make it look like this: | ||
182 | |||
183 | /* foobar blah blah blah | ||
184 | * another line of text | ||
185 | */ | ||
186 | |||
187 | Q: I am working in existing code that has the former comment style and not the | ||
188 | latter. Should I submit new code in the former style or the latter? | ||
189 | |||
190 | A: Make it the latter style, so that eventually all code in the domain of | ||
191 | netdev is of this format. | ||
192 | |||
193 | Q: I found a bug that might have possible security implications or similar. | ||
194 | Should I mail the main netdev maintainer off-list? | ||
195 | |||
196 | A: No. The current netdev maintainer has consistently requested that people | ||
197 | use the mailing lists and not reach out directly. If you aren't OK with | ||
198 | that, then perhaps consider mailing "security@kernel.org" or reading about | ||
199 | http://oss-security.openwall.org/wiki/mailing-lists/distros | ||
200 | as possible alternative mechanisms. | ||
201 | |||
202 | Q: What level of testing is expected before I submit my change? | ||
203 | |||
204 | A: If your changes are against net-next, the expectation is that you | ||
205 | have tested by layering your changes on top of net-next. Ideally you | ||
206 | will have done run-time testing specific to your change, but at a | ||
207 | minimum, your changes should survive an "allyesconfig" and an | ||
208 | "allmodconfig" build without new warnings or failures. | ||
209 | |||
210 | Q: Any other tips to help ensure my net/net-next patch gets OK'd? | ||
211 | |||
212 | A: Attention to detail. Re-read your own work as if you were the | ||
213 | reviewer. You can start with using checkpatch.pl, perhaps even | ||
214 | with the "--strict" flag. But do not be mindlessly robotic in | ||
215 | doing so. If your change is a bug-fix, make sure your commit log | ||
216 | indicates the end-user visible symptom, the underlying reason as | ||
217 | to why it happens, and then if necessary, explain why the fix proposed | ||
218 | is the best way to get things done. Don't mangle whitespace, and as | ||
219 | is common, don't mis-indent function arguments that span multiple lines. | ||
220 | If it is your first patch, mail it to yourself so you can test apply | ||
221 | it to an unpatched tree to confirm infrastructure didn't mangle it. | ||
222 | |||
223 | Finally, go back and read Documentation/SubmittingPatches to be | ||
224 | sure you are not repeating some common mistake documented there. | ||
diff --git a/Documentation/networking/netlink_mmap.txt b/Documentation/networking/netlink_mmap.txt index 533378839546..b26122973525 100644 --- a/Documentation/networking/netlink_mmap.txt +++ b/Documentation/networking/netlink_mmap.txt | |||
@@ -45,7 +45,7 @@ processing. | |||
45 | 45 | ||
46 | Conversion of the reception path involves calling poll() on the file | 46 | Conversion of the reception path involves calling poll() on the file |
47 | descriptor, once the socket is readable the frames from the ring are | 47 | descriptor, once the socket is readable the frames from the ring are |
48 | processsed in order until no more messages are available, as indicated by | 48 | processed in order until no more messages are available, as indicated by |
49 | a status word in the frame header. | 49 | a status word in the frame header. |
50 | 50 | ||
51 | On kernel side, in order to make use of memory mapped I/O on receive, the | 51 | On kernel side, in order to make use of memory mapped I/O on receive, the |
@@ -56,7 +56,7 @@ Dumps of kernel databases automatically support memory mapped I/O. | |||
56 | 56 | ||
57 | Conversion of the transmit path involves changing message construction to | 57 | Conversion of the transmit path involves changing message construction to |
58 | use memory from the TX ring instead of (usually) a buffer declared on the | 58 | use memory from the TX ring instead of (usually) a buffer declared on the |
59 | stack and setting up the frame header approriately. Optionally poll() can | 59 | stack and setting up the frame header appropriately. Optionally poll() can |
60 | be used to wait for free frames in the TX ring. | 60 | be used to wait for free frames in the TX ring. |
61 | 61 | ||
62 | Structured and definitions for using memory mapped I/O are contained in | 62 | Structured and definitions for using memory mapped I/O are contained in |
@@ -231,7 +231,7 @@ Ring setup: | |||
231 | if (setsockopt(fd, NETLINK_TX_RING, &req, sizeof(req)) < 0) | 231 | if (setsockopt(fd, NETLINK_TX_RING, &req, sizeof(req)) < 0) |
232 | exit(1) | 232 | exit(1) |
233 | 233 | ||
234 | /* Calculate size of each invididual ring */ | 234 | /* Calculate size of each individual ring */ |
235 | ring_size = req.nm_block_nr * req.nm_block_size; | 235 | ring_size = req.nm_block_nr * req.nm_block_size; |
236 | 236 | ||
237 | /* Map RX/TX rings. The TX ring is located after the RX ring */ | 237 | /* Map RX/TX rings. The TX ring is located after the RX ring */ |
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt index 8fa2dd1e792e..37c20ee2455e 100644 --- a/Documentation/networking/openvswitch.txt +++ b/Documentation/networking/openvswitch.txt | |||
@@ -91,6 +91,46 @@ Often we ellipsize arguments not important to the discussion, e.g.: | |||
91 | in_port(1), eth(...), eth_type(0x0800), ipv4(...), tcp(...) | 91 | in_port(1), eth(...), eth_type(0x0800), ipv4(...), tcp(...) |
92 | 92 | ||
93 | 93 | ||
94 | Wildcarded flow key format | ||
95 | -------------------------- | ||
96 | |||
97 | A wildcarded flow is described with two sequences of Netlink attributes | ||
98 | passed over the Netlink socket. A flow key, exactly as described above, and an | ||
99 | optional corresponding flow mask. | ||
100 | |||
101 | A wildcarded flow can represent a group of exact match flows. Each '1' bit | ||
102 | in the mask specifies a exact match with the corresponding bit in the flow key. | ||
103 | A '0' bit specifies a don't care bit, which will match either a '1' or '0' bit | ||
104 | of a incoming packet. Using wildcarded flow can improve the flow set up rate | ||
105 | by reduce the number of new flows need to be processed by the user space program. | ||
106 | |||
107 | Support for the mask Netlink attribute is optional for both the kernel and user | ||
108 | space program. The kernel can ignore the mask attribute, installing an exact | ||
109 | match flow, or reduce the number of don't care bits in the kernel to less than | ||
110 | what was specified by the user space program. In this case, variations in bits | ||
111 | that the kernel does not implement will simply result in additional flow setups. | ||
112 | The kernel module will also work with user space programs that neither support | ||
113 | nor supply flow mask attributes. | ||
114 | |||
115 | Since the kernel may ignore or modify wildcard bits, it can be difficult for | ||
116 | the userspace program to know exactly what matches are installed. There are | ||
117 | two possible approaches: reactively install flows as they miss the kernel | ||
118 | flow table (and therefore not attempt to determine wildcard changes at all) | ||
119 | or use the kernel's response messages to determine the installed wildcards. | ||
120 | |||
121 | When interacting with userspace, the kernel should maintain the match portion | ||
122 | of the key exactly as originally installed. This will provides a handle to | ||
123 | identify the flow for all future operations. However, when reporting the | ||
124 | mask of an installed flow, the mask should include any restrictions imposed | ||
125 | by the kernel. | ||
126 | |||
127 | The behavior when using overlapping wildcarded flows is undefined. It is the | ||
128 | responsibility of the user space program to ensure that any incoming packet | ||
129 | can match at most one flow, wildcarded or not. The current implementation | ||
130 | performs best-effort detection of overlapping wildcarded flows and may reject | ||
131 | some but not all of them. However, this behavior may change in future versions. | ||
132 | |||
133 | |||
94 | Basic rule for evolving flow keys | 134 | Basic rule for evolving flow keys |
95 | --------------------------------- | 135 | --------------------------------- |
96 | 136 | ||
diff --git a/Documentation/networking/operstates.txt b/Documentation/networking/operstates.txt index 97694572338b..355c6d8ef8ad 100644 --- a/Documentation/networking/operstates.txt +++ b/Documentation/networking/operstates.txt | |||
@@ -89,8 +89,8 @@ packets. The name 'carrier' and the inversion are historical, think of | |||
89 | it as lower layer. | 89 | it as lower layer. |
90 | 90 | ||
91 | Note that for certain kind of soft-devices, which are not managing any | 91 | Note that for certain kind of soft-devices, which are not managing any |
92 | real hardware, there is possible to set this bit from userpsace. | 92 | real hardware, it is possible to set this bit from userspace. One |
93 | One should use TVL IFLA_CARRIER to do so. | 93 | should use TVL IFLA_CARRIER to do so. |
94 | 94 | ||
95 | netif_carrier_ok() can be used to query that bit. | 95 | netif_carrier_ok() can be used to query that bit. |
96 | 96 | ||
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt index 8572796b1eb6..c01223628a87 100644 --- a/Documentation/networking/packet_mmap.txt +++ b/Documentation/networking/packet_mmap.txt | |||
@@ -543,6 +543,14 @@ TPACKET_V2 --> TPACKET_V3: | |||
543 | In the AF_PACKET fanout mode, packet reception can be load balanced among | 543 | In the AF_PACKET fanout mode, packet reception can be load balanced among |
544 | processes. This also works in combination with mmap(2) on packet sockets. | 544 | processes. This also works in combination with mmap(2) on packet sockets. |
545 | 545 | ||
546 | Currently implemented fanout policies are: | ||
547 | |||
548 | - PACKET_FANOUT_HASH: schedule to socket by skb's rxhash | ||
549 | - PACKET_FANOUT_LB: schedule to socket by round-robin | ||
550 | - PACKET_FANOUT_CPU: schedule to socket by CPU packet arrives on | ||
551 | - PACKET_FANOUT_RND: schedule to socket by random selection | ||
552 | - PACKET_FANOUT_ROLLOVER: if one socket is full, rollover to another | ||
553 | |||
546 | Minimal example code by David S. Miller (try things like "./test eth0 hash", | 554 | Minimal example code by David S. Miller (try things like "./test eth0 hash", |
547 | "./test eth0 lb", etc.): | 555 | "./test eth0 lb", etc.): |
548 | 556 | ||
diff --git a/Documentation/networking/rxrpc.txt b/Documentation/networking/rxrpc.txt index 60d05eb77c64..b89bc82eed46 100644 --- a/Documentation/networking/rxrpc.txt +++ b/Documentation/networking/rxrpc.txt | |||
@@ -144,7 +144,7 @@ An overview of the RxRPC protocol: | |||
144 | (*) Calls use ACK packets to handle reliability. Data packets are also | 144 | (*) Calls use ACK packets to handle reliability. Data packets are also |
145 | explicitly sequenced per call. | 145 | explicitly sequenced per call. |
146 | 146 | ||
147 | (*) There are two types of positive acknowledgement: hard-ACKs and soft-ACKs. | 147 | (*) There are two types of positive acknowledgment: hard-ACKs and soft-ACKs. |
148 | A hard-ACK indicates to the far side that all the data received to a point | 148 | A hard-ACK indicates to the far side that all the data received to a point |
149 | has been received and processed; a soft-ACK indicates that the data has | 149 | has been received and processed; a soft-ACK indicates that the data has |
150 | been received but may yet be discarded and re-requested. The sender may | 150 | been received but may yet be discarded and re-requested. The sender may |
diff --git a/Documentation/networking/sctp.txt b/Documentation/networking/sctp.txt index 0c790a76910e..97b810ca9082 100644 --- a/Documentation/networking/sctp.txt +++ b/Documentation/networking/sctp.txt | |||
@@ -19,7 +19,6 @@ of SCTP that is RFC 2960 compliant and provides an programming interface | |||
19 | referred to as the UDP-style API of the Sockets Extensions for SCTP, as | 19 | referred to as the UDP-style API of the Sockets Extensions for SCTP, as |
20 | proposed in IETF Internet-Drafts. | 20 | proposed in IETF Internet-Drafts. |
21 | 21 | ||
22 | |||
23 | Caveats: | 22 | Caveats: |
24 | 23 | ||
25 | -lksctp can be built as statically or as a module. However, be aware that | 24 | -lksctp can be built as statically or as a module. However, be aware that |
@@ -33,6 +32,4 @@ For more information, please visit the lksctp project website: | |||
33 | http://www.sf.net/projects/lksctp | 32 | http://www.sf.net/projects/lksctp |
34 | 33 | ||
35 | Or contact the lksctp developers through the mailing list: | 34 | Or contact the lksctp developers through the mailing list: |
36 | <lksctp-developers@lists.sourceforge.net> | 35 | <linux-sctp@vger.kernel.org> |
37 | |||
38 | |||
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt index 654d2e55c8cb..cdd916da838d 100644 --- a/Documentation/networking/stmmac.txt +++ b/Documentation/networking/stmmac.txt | |||
@@ -123,6 +123,7 @@ struct plat_stmmacenet_data { | |||
123 | int bugged_jumbo; | 123 | int bugged_jumbo; |
124 | int pmt; | 124 | int pmt; |
125 | int force_sf_dma_mode; | 125 | int force_sf_dma_mode; |
126 | int force_thresh_dma_mode; | ||
126 | int riwt_off; | 127 | int riwt_off; |
127 | void (*fix_mac_speed)(void *priv, unsigned int speed); | 128 | void (*fix_mac_speed)(void *priv, unsigned int speed); |
128 | void (*bus_setup)(void __iomem *ioaddr); | 129 | void (*bus_setup)(void __iomem *ioaddr); |
@@ -159,6 +160,8 @@ Where: | |||
159 | o pmt: core has the embedded power module (optional). | 160 | o pmt: core has the embedded power module (optional). |
160 | o force_sf_dma_mode: force DMA to use the Store and Forward mode | 161 | o force_sf_dma_mode: force DMA to use the Store and Forward mode |
161 | instead of the Threshold. | 162 | instead of the Threshold. |
163 | o force_thresh_dma_mode: force DMA to use the Threshold mode other than | ||
164 | the Store and Forward mode. | ||
162 | o riwt_off: force to disable the RX watchdog feature and switch to NAPI mode. | 165 | o riwt_off: force to disable the RX watchdog feature and switch to NAPI mode. |
163 | o fix_mac_speed: this callback is used for modifying some syscfg registers | 166 | o fix_mac_speed: this callback is used for modifying some syscfg registers |
164 | (on ST SoCs) according to the link speed negotiated by the | 167 | (on ST SoCs) according to the link speed negotiated by the |
@@ -172,7 +175,7 @@ Where: | |||
172 | registers. | 175 | registers. |
173 | o custom_cfg/custom_data: this is a custom configuration that can be passed | 176 | o custom_cfg/custom_data: this is a custom configuration that can be passed |
174 | while initializing the resources. | 177 | while initializing the resources. |
175 | o bsp_priv: another private poiter. | 178 | o bsp_priv: another private pointer. |
176 | 179 | ||
177 | For MDIO bus The we have: | 180 | For MDIO bus The we have: |
178 | 181 | ||
@@ -268,7 +271,7 @@ reset procedure etc). | |||
268 | o dwmac1000_dma.c: dma functions for the GMAC chip; | 271 | o dwmac1000_dma.c: dma functions for the GMAC chip; |
269 | o dwmac1000.h: specific header file for the GMAC; | 272 | o dwmac1000.h: specific header file for the GMAC; |
270 | o dwmac100_core: MAC 100 core and dma code; | 273 | o dwmac100_core: MAC 100 core and dma code; |
271 | o dwmac100_dma.c: dma funtions for the MAC chip; | 274 | o dwmac100_dma.c: dma functions for the MAC chip; |
272 | o dwmac1000.h: specific header file for the MAC; | 275 | o dwmac1000.h: specific header file for the MAC; |
273 | o dwmac_lib.c: generic DMA functions shared among chips; | 276 | o dwmac_lib.c: generic DMA functions shared among chips; |
274 | o enh_desc.c: functions for handling enhanced descriptors; | 277 | o enh_desc.c: functions for handling enhanced descriptors; |
@@ -361,4 +364,4 @@ Auto-negotiated Link Parter Ability. | |||
361 | 10) TODO: | 364 | 10) TODO: |
362 | o XGMAC is not supported. | 365 | o XGMAC is not supported. |
363 | o Complete the TBI & RTBI support. | 366 | o Complete the TBI & RTBI support. |
364 | o extened VLAN support for 3.70a SYNP GMAC. | 367 | o extend VLAN support for 3.70a SYNP GMAC. |
diff --git a/Documentation/networking/tproxy.txt b/Documentation/networking/tproxy.txt index 7b5996d9357e..ec11429e1d42 100644 --- a/Documentation/networking/tproxy.txt +++ b/Documentation/networking/tproxy.txt | |||
@@ -2,9 +2,8 @@ Transparent proxy support | |||
2 | ========================= | 2 | ========================= |
3 | 3 | ||
4 | This feature adds Linux 2.2-like transparent proxy support to current kernels. | 4 | This feature adds Linux 2.2-like transparent proxy support to current kernels. |
5 | To use it, enable NETFILTER_TPROXY, the socket match and the TPROXY target in | 5 | To use it, enable the socket match and the TPROXY target in your kernel config. |
6 | your kernel config. You will need policy routing too, so be sure to enable that | 6 | You will need policy routing too, so be sure to enable that as well. |
7 | as well. | ||
8 | 7 | ||
9 | 8 | ||
10 | 1. Making non-local sockets work | 9 | 1. Making non-local sockets work |
diff --git a/Documentation/networking/vortex.txt b/Documentation/networking/vortex.txt index 9a8041dcbb53..97282da82b75 100644 --- a/Documentation/networking/vortex.txt +++ b/Documentation/networking/vortex.txt | |||
@@ -68,7 +68,7 @@ Module parameters | |||
68 | 68 | ||
69 | There are several parameters which may be provided to the driver when | 69 | There are several parameters which may be provided to the driver when |
70 | its module is loaded. These are usually placed in /etc/modprobe.d/*.conf | 70 | its module is loaded. These are usually placed in /etc/modprobe.d/*.conf |
71 | configuretion files. Example: | 71 | configuration files. Example: |
72 | 72 | ||
73 | options 3c59x debug=3 rx_copybreak=300 | 73 | options 3c59x debug=3 rx_copybreak=300 |
74 | 74 | ||
@@ -178,7 +178,7 @@ max_interrupt_work=N | |||
178 | 178 | ||
179 | The driver's interrupt service routine can handle many receive and | 179 | The driver's interrupt service routine can handle many receive and |
180 | transmit packets in a single invocation. It does this in a loop. | 180 | transmit packets in a single invocation. It does this in a loop. |
181 | The value of max_interrupt_work governs how mnay times the interrupt | 181 | The value of max_interrupt_work governs how many times the interrupt |
182 | service routine will loop. The default value is 32 loops. If this | 182 | service routine will loop. The default value is 32 loops. If this |
183 | is exceeded the interrupt service routine gives up and generates a | 183 | is exceeded the interrupt service routine gives up and generates a |
184 | warning message "eth0: Too much work in interrupt". | 184 | warning message "eth0: Too much work in interrupt". |
diff --git a/Documentation/networking/x25-iface.txt b/Documentation/networking/x25-iface.txt index 78f662ee0622..7f213b556e85 100644 --- a/Documentation/networking/x25-iface.txt +++ b/Documentation/networking/x25-iface.txt | |||
@@ -105,7 +105,7 @@ reduced by the following measures or a combination thereof: | |||
105 | later. | 105 | later. |
106 | The lapb module interface was modified to support this. Its | 106 | The lapb module interface was modified to support this. Its |
107 | data_indication() method should now transparently pass the | 107 | data_indication() method should now transparently pass the |
108 | netif_rx() return value to the (lapb mopdule) caller. | 108 | netif_rx() return value to the (lapb module) caller. |
109 | (2) Drivers for kernel versions 2.2.x should always check the global | 109 | (2) Drivers for kernel versions 2.2.x should always check the global |
110 | variable netdev_dropping when a new frame is received. The driver | 110 | variable netdev_dropping when a new frame is received. The driver |
111 | should only call netif_rx() if netdev_dropping is zero. Otherwise | 111 | should only call netif_rx() if netdev_dropping is zero. Otherwise |
diff --git a/Documentation/phy.txt b/Documentation/phy.txt new file mode 100644 index 000000000000..0103e4b15b0e --- /dev/null +++ b/Documentation/phy.txt | |||
@@ -0,0 +1,166 @@ | |||
1 | PHY SUBSYSTEM | ||
2 | Kishon Vijay Abraham I <kishon@ti.com> | ||
3 | |||
4 | This document explains the Generic PHY Framework along with the APIs provided, | ||
5 | and how-to-use. | ||
6 | |||
7 | 1. Introduction | ||
8 | |||
9 | *PHY* is the abbreviation for physical layer. It is used to connect a device | ||
10 | to the physical medium e.g., the USB controller has a PHY to provide functions | ||
11 | such as serialization, de-serialization, encoding, decoding and is responsible | ||
12 | for obtaining the required data transmission rate. Note that some USB | ||
13 | controllers have PHY functionality embedded into it and others use an external | ||
14 | PHY. Other peripherals that use PHY include Wireless LAN, Ethernet, | ||
15 | SATA etc. | ||
16 | |||
17 | The intention of creating this framework is to bring the PHY drivers spread | ||
18 | all over the Linux kernel to drivers/phy to increase code re-use and for | ||
19 | better code maintainability. | ||
20 | |||
21 | This framework will be of use only to devices that use external PHY (PHY | ||
22 | functionality is not embedded within the controller). | ||
23 | |||
24 | 2. Registering/Unregistering the PHY provider | ||
25 | |||
26 | PHY provider refers to an entity that implements one or more PHY instances. | ||
27 | For the simple case where the PHY provider implements only a single instance of | ||
28 | the PHY, the framework provides its own implementation of of_xlate in | ||
29 | of_phy_simple_xlate. If the PHY provider implements multiple instances, it | ||
30 | should provide its own implementation of of_xlate. of_xlate is used only for | ||
31 | dt boot case. | ||
32 | |||
33 | #define of_phy_provider_register(dev, xlate) \ | ||
34 | __of_phy_provider_register((dev), THIS_MODULE, (xlate)) | ||
35 | |||
36 | #define devm_of_phy_provider_register(dev, xlate) \ | ||
37 | __devm_of_phy_provider_register((dev), THIS_MODULE, (xlate)) | ||
38 | |||
39 | of_phy_provider_register and devm_of_phy_provider_register macros can be used to | ||
40 | register the phy_provider and it takes device and of_xlate as | ||
41 | arguments. For the dt boot case, all PHY providers should use one of the above | ||
42 | 2 macros to register the PHY provider. | ||
43 | |||
44 | void devm_of_phy_provider_unregister(struct device *dev, | ||
45 | struct phy_provider *phy_provider); | ||
46 | void of_phy_provider_unregister(struct phy_provider *phy_provider); | ||
47 | |||
48 | devm_of_phy_provider_unregister and of_phy_provider_unregister can be used to | ||
49 | unregister the PHY. | ||
50 | |||
51 | 3. Creating the PHY | ||
52 | |||
53 | The PHY driver should create the PHY in order for other peripheral controllers | ||
54 | to make use of it. The PHY framework provides 2 APIs to create the PHY. | ||
55 | |||
56 | struct phy *phy_create(struct device *dev, const struct phy_ops *ops, | ||
57 | struct phy_init_data *init_data); | ||
58 | struct phy *devm_phy_create(struct device *dev, const struct phy_ops *ops, | ||
59 | struct phy_init_data *init_data); | ||
60 | |||
61 | The PHY drivers can use one of the above 2 APIs to create the PHY by passing | ||
62 | the device pointer, phy ops and init_data. | ||
63 | phy_ops is a set of function pointers for performing PHY operations such as | ||
64 | init, exit, power_on and power_off. *init_data* is mandatory to get a reference | ||
65 | to the PHY in the case of non-dt boot. See section *Board File Initialization* | ||
66 | on how init_data should be used. | ||
67 | |||
68 | Inorder to dereference the private data (in phy_ops), the phy provider driver | ||
69 | can use phy_set_drvdata() after creating the PHY and use phy_get_drvdata() in | ||
70 | phy_ops to get back the private data. | ||
71 | |||
72 | 4. Getting a reference to the PHY | ||
73 | |||
74 | Before the controller can make use of the PHY, it has to get a reference to | ||
75 | it. This framework provides the following APIs to get a reference to the PHY. | ||
76 | |||
77 | struct phy *phy_get(struct device *dev, const char *string); | ||
78 | struct phy *devm_phy_get(struct device *dev, const char *string); | ||
79 | |||
80 | phy_get and devm_phy_get can be used to get the PHY. In the case of dt boot, | ||
81 | the string arguments should contain the phy name as given in the dt data and | ||
82 | in the case of non-dt boot, it should contain the label of the PHY. | ||
83 | The only difference between the two APIs is that devm_phy_get associates the | ||
84 | device with the PHY using devres on successful PHY get. On driver detach, | ||
85 | release function is invoked on the the devres data and devres data is freed. | ||
86 | |||
87 | 5. Releasing a reference to the PHY | ||
88 | |||
89 | When the controller no longer needs the PHY, it has to release the reference | ||
90 | to the PHY it has obtained using the APIs mentioned in the above section. The | ||
91 | PHY framework provides 2 APIs to release a reference to the PHY. | ||
92 | |||
93 | void phy_put(struct phy *phy); | ||
94 | void devm_phy_put(struct device *dev, struct phy *phy); | ||
95 | |||
96 | Both these APIs are used to release a reference to the PHY and devm_phy_put | ||
97 | destroys the devres associated with this PHY. | ||
98 | |||
99 | 6. Destroying the PHY | ||
100 | |||
101 | When the driver that created the PHY is unloaded, it should destroy the PHY it | ||
102 | created using one of the following 2 APIs. | ||
103 | |||
104 | void phy_destroy(struct phy *phy); | ||
105 | void devm_phy_destroy(struct device *dev, struct phy *phy); | ||
106 | |||
107 | Both these APIs destroy the PHY and devm_phy_destroy destroys the devres | ||
108 | associated with this PHY. | ||
109 | |||
110 | 7. PM Runtime | ||
111 | |||
112 | This subsystem is pm runtime enabled. So while creating the PHY, | ||
113 | pm_runtime_enable of the phy device created by this subsystem is called and | ||
114 | while destroying the PHY, pm_runtime_disable is called. Note that the phy | ||
115 | device created by this subsystem will be a child of the device that calls | ||
116 | phy_create (PHY provider device). | ||
117 | |||
118 | So pm_runtime_get_sync of the phy_device created by this subsystem will invoke | ||
119 | pm_runtime_get_sync of PHY provider device because of parent-child relationship. | ||
120 | It should also be noted that phy_power_on and phy_power_off performs | ||
121 | phy_pm_runtime_get_sync and phy_pm_runtime_put respectively. | ||
122 | There are exported APIs like phy_pm_runtime_get, phy_pm_runtime_get_sync, | ||
123 | phy_pm_runtime_put, phy_pm_runtime_put_sync, phy_pm_runtime_allow and | ||
124 | phy_pm_runtime_forbid for performing PM operations. | ||
125 | |||
126 | 8. Board File Initialization | ||
127 | |||
128 | Certain board file initialization is necessary in order to get a reference | ||
129 | to the PHY in the case of non-dt boot. | ||
130 | Say we have a single device that implements 3 PHYs that of USB, SATA and PCIe, | ||
131 | then in the board file the following initialization should be done. | ||
132 | |||
133 | struct phy_consumer consumers[] = { | ||
134 | PHY_CONSUMER("dwc3.0", "usb"), | ||
135 | PHY_CONSUMER("pcie.0", "pcie"), | ||
136 | PHY_CONSUMER("sata.0", "sata"), | ||
137 | }; | ||
138 | PHY_CONSUMER takes 2 parameters, first is the device name of the controller | ||
139 | (PHY consumer) and second is the port name. | ||
140 | |||
141 | struct phy_init_data init_data = { | ||
142 | .consumers = consumers, | ||
143 | .num_consumers = ARRAY_SIZE(consumers), | ||
144 | }; | ||
145 | |||
146 | static const struct platform_device pipe3_phy_dev = { | ||
147 | .name = "pipe3-phy", | ||
148 | .id = -1, | ||
149 | .dev = { | ||
150 | .platform_data = { | ||
151 | .init_data = &init_data, | ||
152 | }, | ||
153 | }, | ||
154 | }; | ||
155 | |||
156 | then, while doing phy_create, the PHY driver should pass this init_data | ||
157 | phy_create(dev, ops, pdata->init_data); | ||
158 | |||
159 | and the controller driver (phy consumer) should pass the port name along with | ||
160 | the device to get a reference to the PHY | ||
161 | phy_get(dev, "pcie"); | ||
162 | |||
163 | 9. DeviceTree Binding | ||
164 | |||
165 | The documentation for PHY dt binding can be found @ | ||
166 | Documentation/devicetree/bindings/phy/phy-bindings.txt | ||
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt index 052e13af2d38..a7929cb47e7c 100644 --- a/Documentation/pinctrl.txt +++ b/Documentation/pinctrl.txt | |||
@@ -81,7 +81,7 @@ int __init foo_probe(void) | |||
81 | struct pinctrl_dev *pctl; | 81 | struct pinctrl_dev *pctl; |
82 | 82 | ||
83 | pctl = pinctrl_register(&foo_desc, <PARENT>, NULL); | 83 | pctl = pinctrl_register(&foo_desc, <PARENT>, NULL); |
84 | if (IS_ERR(pctl)) | 84 | if (!pctl) |
85 | pr_err("could not register foo pin driver\n"); | 85 | pr_err("could not register foo pin driver\n"); |
86 | } | 86 | } |
87 | 87 | ||
@@ -358,7 +358,12 @@ static struct pinctrl_gpio_range gpio_range = { | |||
358 | .gc = &chip; | 358 | .gc = &chip; |
359 | }; | 359 | }; |
360 | 360 | ||
361 | In this case the pin_base property will be ignored. | 361 | In this case the pin_base property will be ignored. If the name of a pin |
362 | group is known, the pins and npins elements of the above structure can be | ||
363 | initialised using the function pinctrl_get_group_pins(), e.g. for pin | ||
364 | group "foo": | ||
365 | |||
366 | pinctrl_get_group_pins(pctl, "foo", &gpio_range.pins, &gpio_range.npins); | ||
362 | 367 | ||
363 | When GPIO-specific functions in the pin control subsystem are called, these | 368 | When GPIO-specific functions in the pin control subsystem are called, these |
364 | ranges will be used to look up the appropriate pin controller by inspecting | 369 | ranges will be used to look up the appropriate pin controller by inspecting |
@@ -795,18 +800,97 @@ special GPIO-handler is registered. | |||
795 | GPIO mode pitfalls | 800 | GPIO mode pitfalls |
796 | ================== | 801 | ================== |
797 | 802 | ||
798 | Sometime the developer may be confused by a datasheet talking about a pin | 803 | Due to the naming conventions used by hardware engineers, where "GPIO" |
799 | being possible to set into "GPIO mode". It appears that what hardware | 804 | is taken to mean different things than what the kernel does, the developer |
800 | engineers mean with "GPIO mode" is not necessarily the use case that is | 805 | may be confused by a datasheet talking about a pin being possible to set |
801 | implied in the kernel interface <linux/gpio.h>: a pin that you grab from | 806 | into "GPIO mode". It appears that what hardware engineers mean with |
802 | kernel code and then either listen for input or drive high/low to | 807 | "GPIO mode" is not necessarily the use case that is implied in the kernel |
803 | assert/deassert some external line. | 808 | interface <linux/gpio.h>: a pin that you grab from kernel code and then |
809 | either listen for input or drive high/low to assert/deassert some | ||
810 | external line. | ||
804 | 811 | ||
805 | Rather hardware engineers think that "GPIO mode" means that you can | 812 | Rather hardware engineers think that "GPIO mode" means that you can |
806 | software-control a few electrical properties of the pin that you would | 813 | software-control a few electrical properties of the pin that you would |
807 | not be able to control if the pin was in some other mode, such as muxed in | 814 | not be able to control if the pin was in some other mode, such as muxed in |
808 | for a device. | 815 | for a device. |
809 | 816 | ||
817 | The GPIO portions of a pin and its relation to a certain pin controller | ||
818 | configuration and muxing logic can be constructed in several ways. Here | ||
819 | are two examples: | ||
820 | |||
821 | (A) | ||
822 | pin config | ||
823 | logic regs | ||
824 | | +- SPI | ||
825 | Physical pins --- pad --- pinmux -+- I2C | ||
826 | | +- mmc | ||
827 | | +- GPIO | ||
828 | pin | ||
829 | multiplex | ||
830 | logic regs | ||
831 | |||
832 | Here some electrical properties of the pin can be configured no matter | ||
833 | whether the pin is used for GPIO or not. If you multiplex a GPIO onto a | ||
834 | pin, you can also drive it high/low from "GPIO" registers. | ||
835 | Alternatively, the pin can be controlled by a certain peripheral, while | ||
836 | still applying desired pin config properties. GPIO functionality is thus | ||
837 | orthogonal to any other device using the pin. | ||
838 | |||
839 | In this arrangement the registers for the GPIO portions of the pin controller, | ||
840 | or the registers for the GPIO hardware module are likely to reside in a | ||
841 | separate memory range only intended for GPIO driving, and the register | ||
842 | range dealing with pin config and pin multiplexing get placed into a | ||
843 | different memory range and a separate section of the data sheet. | ||
844 | |||
845 | (B) | ||
846 | |||
847 | pin config | ||
848 | logic regs | ||
849 | | +- SPI | ||
850 | Physical pins --- pad --- pinmux -+- I2C | ||
851 | | | +- mmc | ||
852 | | | | ||
853 | GPIO pin | ||
854 | multiplex | ||
855 | logic regs | ||
856 | |||
857 | In this arrangement, the GPIO functionality can always be enabled, such that | ||
858 | e.g. a GPIO input can be used to "spy" on the SPI/I2C/MMC signal while it is | ||
859 | pulsed out. It is likely possible to disrupt the traffic on the pin by doing | ||
860 | wrong things on the GPIO block, as it is never really disconnected. It is | ||
861 | possible that the GPIO, pin config and pin multiplex registers are placed into | ||
862 | the same memory range and the same section of the data sheet, although that | ||
863 | need not be the case. | ||
864 | |||
865 | From a kernel point of view, however, these are different aspects of the | ||
866 | hardware and shall be put into different subsystems: | ||
867 | |||
868 | - Registers (or fields within registers) that control electrical | ||
869 | properties of the pin such as biasing and drive strength should be | ||
870 | exposed through the pinctrl subsystem, as "pin configuration" settings. | ||
871 | |||
872 | - Registers (or fields within registers) that control muxing of signals | ||
873 | from various other HW blocks (e.g. I2C, MMC, or GPIO) onto pins should | ||
874 | be exposed through the pinctrl subssytem, as mux functions. | ||
875 | |||
876 | - Registers (or fields within registers) that control GPIO functionality | ||
877 | such as setting a GPIO's output value, reading a GPIO's input value, or | ||
878 | setting GPIO pin direction should be exposed through the GPIO subsystem, | ||
879 | and if they also support interrupt capabilities, through the irqchip | ||
880 | abstraction. | ||
881 | |||
882 | Depending on the exact HW register design, some functions exposed by the | ||
883 | GPIO subsystem may call into the pinctrl subsystem in order to | ||
884 | co-ordinate register settings across HW modules. In particular, this may | ||
885 | be needed for HW with separate GPIO and pin controller HW modules, where | ||
886 | e.g. GPIO direction is determined by a register in the pin controller HW | ||
887 | module rather than the GPIO HW module. | ||
888 | |||
889 | Electrical properties of the pin such as biasing and drive strength | ||
890 | may be placed at some pin-specific register in all cases or as part | ||
891 | of the GPIO register in case (B) especially. This doesn't mean that such | ||
892 | properties necessarily pertain to what the Linux kernel calls "GPIO". | ||
893 | |||
810 | Example: a pin is usually muxed in to be used as a UART TX line. But during | 894 | Example: a pin is usually muxed in to be used as a UART TX line. But during |
811 | system sleep, we need to put this pin into "GPIO mode" and ground it. | 895 | system sleep, we need to put this pin into "GPIO mode" and ground it. |
812 | 896 | ||
@@ -856,7 +940,7 @@ static unsigned long uart_sleep_mode[] = { | |||
856 | PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0), | 940 | PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0), |
857 | }; | 941 | }; |
858 | 942 | ||
859 | static struct pinctrl_map __initdata pinmap[] = { | 943 | static struct pinctrl_map pinmap[] __initdata = { |
860 | PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo", | 944 | PIN_MAP_MUX_GROUP("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo", |
861 | "u0_group", "u0"), | 945 | "u0_group", "u0"), |
862 | PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo", | 946 | PIN_MAP_CONFIGS_PIN("uart", PINCTRL_STATE_DEFAULT, "pinctrl-foo", |
@@ -951,7 +1035,7 @@ Since the above construct is pretty common there is a helper macro to make | |||
951 | it even more compact which assumes you want to use pinctrl-foo and position | 1035 | it even more compact which assumes you want to use pinctrl-foo and position |
952 | 0 for mapping, for example: | 1036 | 0 for mapping, for example: |
953 | 1037 | ||
954 | static struct pinctrl_map __initdata mapping[] = { | 1038 | static struct pinctrl_map mapping[] __initdata = { |
955 | PIN_MAP_MUX_GROUP("foo-i2c.o", PINCTRL_STATE_DEFAULT, "pinctrl-foo", NULL, "i2c0"), | 1039 | PIN_MAP_MUX_GROUP("foo-i2c.o", PINCTRL_STATE_DEFAULT, "pinctrl-foo", NULL, "i2c0"), |
956 | }; | 1040 | }; |
957 | 1041 | ||
@@ -970,7 +1054,7 @@ static unsigned long i2c_pin_configs[] = { | |||
970 | FOO_SLEW_RATE_SLOW, | 1054 | FOO_SLEW_RATE_SLOW, |
971 | }; | 1055 | }; |
972 | 1056 | ||
973 | static struct pinctrl_map __initdata mapping[] = { | 1057 | static struct pinctrl_map mapping[] __initdata = { |
974 | PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", "i2c0"), | 1058 | PIN_MAP_MUX_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", "i2c0"), |
975 | PIN_MAP_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs), | 1059 | PIN_MAP_CONFIGS_GROUP("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0", i2c_grp_configs), |
976 | PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs), | 1060 | PIN_MAP_CONFIGS_PIN("foo-i2c.0", PINCTRL_STATE_DEFAULT, "pinctrl-foo", "i2c0scl", i2c_pin_configs), |
@@ -984,7 +1068,7 @@ order to explicitly indicate that the states were provided and intended to | |||
984 | be empty. Table entry macro PIN_MAP_DUMMY_STATE serves the purpose of defining | 1068 | be empty. Table entry macro PIN_MAP_DUMMY_STATE serves the purpose of defining |
985 | a named state without causing any pin controller to be programmed: | 1069 | a named state without causing any pin controller to be programmed: |
986 | 1070 | ||
987 | static struct pinctrl_map __initdata mapping[] = { | 1071 | static struct pinctrl_map mapping[] __initdata = { |
988 | PIN_MAP_DUMMY_STATE("foo-i2c.0", PINCTRL_STATE_DEFAULT), | 1072 | PIN_MAP_DUMMY_STATE("foo-i2c.0", PINCTRL_STATE_DEFAULT), |
989 | }; | 1073 | }; |
990 | 1074 | ||
diff --git a/Documentation/power/basic-pm-debugging.txt b/Documentation/power/basic-pm-debugging.txt index 262acf56fa79..e9b54de8fdf7 100644 --- a/Documentation/power/basic-pm-debugging.txt +++ b/Documentation/power/basic-pm-debugging.txt | |||
@@ -179,7 +179,7 @@ use the PM_TRACE mechanism documented in Documentation/power/s2ram.txt . | |||
179 | 179 | ||
180 | To verify that the STR works, it is generally more convenient to use the s2ram | 180 | To verify that the STR works, it is generally more convenient to use the s2ram |
181 | tool available from http://suspend.sf.net and documented at | 181 | tool available from http://suspend.sf.net and documented at |
182 | http://en.opensuse.org/SDB:Suspend_to_RAM. | 182 | http://en.opensuse.org/SDB:Suspend_to_RAM (S2RAM_LINK). |
183 | 183 | ||
184 | Namely, after writing "freezer", "devices", "platform", "processors", or "core" | 184 | Namely, after writing "freezer", "devices", "platform", "processors", or "core" |
185 | into /sys/power/pm_test (available if the kernel is compiled with | 185 | into /sys/power/pm_test (available if the kernel is compiled with |
@@ -194,10 +194,10 @@ Among other things, the testing with the help of /sys/power/pm_test may allow | |||
194 | you to identify drivers that fail to suspend or resume their devices. They | 194 | you to identify drivers that fail to suspend or resume their devices. They |
195 | should be unloaded every time before an STR transition. | 195 | should be unloaded every time before an STR transition. |
196 | 196 | ||
197 | Next, you can follow the instructions at http://en.opensuse.org/s2ram to test | 197 | Next, you can follow the instructions at S2RAM_LINK to test the system, but if |
198 | the system, but if it does not work "out of the box", you may need to boot it | 198 | it does not work "out of the box", you may need to boot it with |
199 | with "init=/bin/bash" and test s2ram in the minimal configuration. In that | 199 | "init=/bin/bash" and test s2ram in the minimal configuration. In that case, |
200 | case, you may be able to search for failing drivers by following the procedure | 200 | you may be able to search for failing drivers by following the procedure |
201 | analogous to the one described in section 1. If you find some failing drivers, | 201 | analogous to the one described in section 1. If you find some failing drivers, |
202 | you will have to unload them every time before an STR transition (ie. before | 202 | you will have to unload them every time before an STR transition (ie. before |
203 | you run s2ram), and please report the problems with them. | 203 | you run s2ram), and please report the problems with them. |
diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt index 0b4b63e7e9b6..079160e22bcc 100644 --- a/Documentation/power/swsusp.txt +++ b/Documentation/power/swsusp.txt | |||
@@ -50,6 +50,19 @@ echo N > /sys/power/image_size | |||
50 | 50 | ||
51 | before suspend (it is limited to 500 MB by default). | 51 | before suspend (it is limited to 500 MB by default). |
52 | 52 | ||
53 | . The resume process checks for the presence of the resume device, | ||
54 | if found, it then checks the contents for the hibernation image signature. | ||
55 | If both are found, it resumes the hibernation image. | ||
56 | |||
57 | . The resume process may be triggered in two ways: | ||
58 | 1) During lateinit: If resume=/dev/your_swap_partition is specified on | ||
59 | the kernel command line, lateinit runs the resume process. If the | ||
60 | resume device has not been probed yet, the resume process fails and | ||
61 | bootup continues. | ||
62 | 2) Manually from an initrd or initramfs: May be run from | ||
63 | the init script by using the /sys/power/resume file. It is vital | ||
64 | that this be done prior to remounting any filesystems (even as | ||
65 | read-only) otherwise data may be corrupted. | ||
53 | 66 | ||
54 | Article about goals and implementation of Software Suspend for Linux | 67 | Article about goals and implementation of Software Suspend for Linux |
55 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 68 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
@@ -326,7 +339,7 @@ Q: How can distributions ship a swsusp-supporting kernel with modular | |||
326 | disk drivers (especially SATA)? | 339 | disk drivers (especially SATA)? |
327 | 340 | ||
328 | A: Well, it can be done, load the drivers, then do echo into | 341 | A: Well, it can be done, load the drivers, then do echo into |
329 | /sys/power/disk/resume file from initrd. Be sure not to mount | 342 | /sys/power/resume file from initrd. Be sure not to mount |
330 | anything, not even read-only mount, or you are going to lose your | 343 | anything, not even read-only mount, or you are going to lose your |
331 | data. | 344 | data. |
332 | 345 | ||
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX index 05026ce1875e..6db73df04278 100644 --- a/Documentation/powerpc/00-INDEX +++ b/Documentation/powerpc/00-INDEX | |||
@@ -5,13 +5,20 @@ please mail me. | |||
5 | 5 | ||
6 | 00-INDEX | 6 | 00-INDEX |
7 | - this file | 7 | - this file |
8 | bootwrapper.txt | ||
9 | - Information on how the powerpc kernel is wrapped for boot on various | ||
10 | different platforms. | ||
8 | cpu_features.txt | 11 | cpu_features.txt |
9 | - info on how we support a variety of CPUs with minimal compile-time | 12 | - info on how we support a variety of CPUs with minimal compile-time |
10 | options. | 13 | options. |
11 | eeh-pci-error-recovery.txt | 14 | eeh-pci-error-recovery.txt |
12 | - info on PCI Bus EEH Error Recovery | 15 | - info on PCI Bus EEH Error Recovery |
16 | firmware-assisted-dump.txt | ||
17 | - Documentation on the firmware assisted dump mechanism "fadump". | ||
13 | hvcs.txt | 18 | hvcs.txt |
14 | - IBM "Hypervisor Virtual Console Server" Installation Guide | 19 | - IBM "Hypervisor Virtual Console Server" Installation Guide |
20 | kvm_440.txt | ||
21 | - Various notes on the implementation of KVM for PowerPC 440. | ||
15 | mpc52xx.txt | 22 | mpc52xx.txt |
16 | - Linux 2.6.x on MPC52xx family | 23 | - Linux 2.6.x on MPC52xx family |
17 | pmu-ebb.txt | 24 | pmu-ebb.txt |
@@ -19,3 +26,7 @@ pmu-ebb.txt | |||
19 | qe_firmware.txt | 26 | qe_firmware.txt |
20 | - describes the layout of firmware binaries for the Freescale QUICC | 27 | - describes the layout of firmware binaries for the Freescale QUICC |
21 | Engine and the code that parses and uploads the microcode therein. | 28 | Engine and the code that parses and uploads the microcode therein. |
29 | ptrace.txt | ||
30 | - Information on the ptrace interfaces for hardware debug registers. | ||
31 | transactional_memory.txt | ||
32 | - Overview of the Power8 transactional memory support. | ||
diff --git a/Documentation/pps/pps.txt b/Documentation/pps/pps.txt index d35dcdd82ff6..c03b1be5eb15 100644 --- a/Documentation/pps/pps.txt +++ b/Documentation/pps/pps.txt | |||
@@ -66,6 +66,21 @@ In LinuxPPS the PPS sources are simply char devices usually mapped | |||
66 | into files /dev/pps0, /dev/pps1, etc.. | 66 | into files /dev/pps0, /dev/pps1, etc.. |
67 | 67 | ||
68 | 68 | ||
69 | PPS with USB to serial devices | ||
70 | ------------------------------ | ||
71 | |||
72 | It is possible to grab the PPS from an USB to serial device. However, | ||
73 | you should take into account the latencies and jitter introduced by | ||
74 | the USB stack. Users has reported clock instability around +-1ms when | ||
75 | synchronized with PPS through USB. This isn't suited for time server | ||
76 | synchronization. | ||
77 | |||
78 | If your device doesn't report PPS, you can check that the feature is | ||
79 | supported by its driver. Most of the time, you only need to add a call | ||
80 | to usb_serial_handle_dcd_change after checking the DCD status (see | ||
81 | ch341 and pl2303 examples). | ||
82 | |||
83 | |||
69 | Coding example | 84 | Coding example |
70 | -------------- | 85 | -------------- |
71 | 86 | ||
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt index 3e8cb73ac43c..445ad743ec81 100644 --- a/Documentation/printk-formats.txt +++ b/Documentation/printk-formats.txt | |||
@@ -97,7 +97,7 @@ IPv4 addresses: | |||
97 | 97 | ||
98 | %pI4 1.2.3.4 | 98 | %pI4 1.2.3.4 |
99 | %pi4 001.002.003.004 | 99 | %pi4 001.002.003.004 |
100 | %p[Ii][hnbl] | 100 | %p[Ii]4[hnbl] |
101 | 101 | ||
102 | For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4' | 102 | For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4' |
103 | specifiers result in a printed address with ('i4') or without ('I4') | 103 | specifiers result in a printed address with ('i4') or without ('I4') |
@@ -168,6 +168,15 @@ UUID/GUID addresses: | |||
168 | Where no additional specifiers are used the default little endian | 168 | Where no additional specifiers are used the default little endian |
169 | order with lower case hex characters will be printed. | 169 | order with lower case hex characters will be printed. |
170 | 170 | ||
171 | dentry names: | ||
172 | %pd{,2,3,4} | ||
173 | %pD{,2,3,4} | ||
174 | |||
175 | For printing dentry name; if we race with d_move(), the name might be | ||
176 | a mix of old and new ones, but it won't oops. %pd dentry is a safer | ||
177 | equivalent of %s dentry->d_name.name we used to use, %pd<n> prints | ||
178 | n last components. %pD does the same thing for struct file. | ||
179 | |||
171 | struct va_format: | 180 | struct va_format: |
172 | 181 | ||
173 | %pV | 182 | %pV |
@@ -185,11 +194,11 @@ struct va_format: | |||
185 | 194 | ||
186 | u64 SHOULD be printed with %llu/%llx, (unsigned long long): | 195 | u64 SHOULD be printed with %llu/%llx, (unsigned long long): |
187 | 196 | ||
188 | printk("%llu", (unsigned long long)u64_var); | 197 | printk("%llu", u64_var); |
189 | 198 | ||
190 | s64 SHOULD be printed with %lld/%llx, (long long): | 199 | s64 SHOULD be printed with %lld/%llx, (long long): |
191 | 200 | ||
192 | printk("%lld", (long long)s64_var); | 201 | printk("%lld", s64_var); |
193 | 202 | ||
194 | If <type> is dependent on a config option for its size (e.g., sector_t, | 203 | If <type> is dependent on a config option for its size (e.g., sector_t, |
195 | blkcnt_t) or is architecture-dependent for its size (e.g., tcflag_t), use a | 204 | blkcnt_t) or is architecture-dependent for its size (e.g., tcflag_t), use a |
diff --git a/Documentation/rapidio/rapidio.txt b/Documentation/rapidio/rapidio.txt index 717f5aa388b1..28fbd877f85a 100644 --- a/Documentation/rapidio/rapidio.txt +++ b/Documentation/rapidio/rapidio.txt | |||
@@ -300,7 +300,7 @@ initialization. | |||
300 | ------------------------------------------- | 300 | ------------------------------------------- |
301 | 301 | ||
302 | RapidIO subsystem code organization allows addition of new enumeration/discovery | 302 | RapidIO subsystem code organization allows addition of new enumeration/discovery |
303 | methods as new configuration options without significant impact to to the core | 303 | methods as new configuration options without significant impact to the core |
304 | RapidIO code. | 304 | RapidIO code. |
305 | 305 | ||
306 | A new enumeration/discovery method has to be attached to one or more mport | 306 | A new enumeration/discovery method has to be attached to one or more mport |
diff --git a/Documentation/s390/s390dbf.txt b/Documentation/s390/s390dbf.txt index fcaf0b4efba2..3da163383c93 100644 --- a/Documentation/s390/s390dbf.txt +++ b/Documentation/s390/s390dbf.txt | |||
@@ -158,6 +158,16 @@ Return Value: none | |||
158 | Description: Sets new actual debug level if new_level is valid. | 158 | Description: Sets new actual debug level if new_level is valid. |
159 | 159 | ||
160 | --------------------------------------------------------------------------- | 160 | --------------------------------------------------------------------------- |
161 | bool debug_level_enabled (debug_info_t * id, int level); | ||
162 | |||
163 | Parameter: id: handle for debug log | ||
164 | level: debug level | ||
165 | |||
166 | Return Value: True if level is less or equal to the current debug level. | ||
167 | |||
168 | Description: Returns true if debug events for the specified level would be | ||
169 | logged. Otherwise returns false. | ||
170 | --------------------------------------------------------------------------- | ||
161 | void debug_stop_all(void); | 171 | void debug_stop_all(void); |
162 | 172 | ||
163 | Parameter: none | 173 | Parameter: none |
diff --git a/Documentation/scheduler/sched-arch.txt b/Documentation/scheduler/sched-arch.txt index b1b8587b86f0..9290de703450 100644 --- a/Documentation/scheduler/sched-arch.txt +++ b/Documentation/scheduler/sched-arch.txt | |||
@@ -65,11 +65,6 @@ Possible arch/ problems | |||
65 | 65 | ||
66 | Possible arch problems I found (and either tried to fix or didn't): | 66 | Possible arch problems I found (and either tried to fix or didn't): |
67 | 67 | ||
68 | h8300 - Is such sleeping racy vs interrupts? (See #4a). | ||
69 | The H8/300 manual I found indicates yes, however disabling IRQs | ||
70 | over the sleep mean only NMIs can wake it up, so can't fix easily | ||
71 | without doing spin waiting. | ||
72 | |||
73 | ia64 - is safe_halt call racy vs interrupts? (does it sleep?) (See #4a) | 68 | ia64 - is safe_halt call racy vs interrupts? (does it sleep?) (See #4a) |
74 | 69 | ||
75 | sh64 - Is sleeping racy vs interrupts? (See #4a) | 70 | sh64 - Is sleeping racy vs interrupts? (See #4a) |
diff --git a/Documentation/scheduler/sched-design-CFS.txt b/Documentation/scheduler/sched-design-CFS.txt index d529e02d928d..f14f49304222 100644 --- a/Documentation/scheduler/sched-design-CFS.txt +++ b/Documentation/scheduler/sched-design-CFS.txt | |||
@@ -66,9 +66,7 @@ rq->cfs.load value, which is the sum of the weights of the tasks queued on the | |||
66 | runqueue. | 66 | runqueue. |
67 | 67 | ||
68 | CFS maintains a time-ordered rbtree, where all runnable tasks are sorted by the | 68 | CFS maintains a time-ordered rbtree, where all runnable tasks are sorted by the |
69 | p->se.vruntime key (there is a subtraction using rq->cfs.min_vruntime to | 69 | p->se.vruntime key. CFS picks the "leftmost" task from this tree and sticks to it. |
70 | account for possible wraparounds). CFS picks the "leftmost" task from this | ||
71 | tree and sticks to it. | ||
72 | As the system progresses forwards, the executed tasks are put into the tree | 70 | As the system progresses forwards, the executed tasks are put into the tree |
73 | more and more to the right --- slowly but surely giving a chance for every task | 71 | more and more to the right --- slowly but surely giving a chance for every task |
74 | to become the "leftmost task" and thus get on the CPU within a deterministic | 72 | to become the "leftmost task" and thus get on the CPU within a deterministic |
diff --git a/Documentation/scsi/ChangeLog.megaraid_sas b/Documentation/scsi/ChangeLog.megaraid_sas index cc92ca8c8963..6edaa65b0818 100644 --- a/Documentation/scsi/ChangeLog.megaraid_sas +++ b/Documentation/scsi/ChangeLog.megaraid_sas | |||
@@ -1,3 +1,13 @@ | |||
1 | Release Date : Sat. Aug 31, 2013 17:00:00 PST 2013 - | ||
2 | (emaild-id:megaraidlinux@lsi.com) | ||
3 | Adam Radford | ||
4 | Kashyap Desai | ||
5 | Sumit Saxena | ||
6 | Current Version : 06.700.06.00-rc1 | ||
7 | Old Version : 06.600.18.00-rc1 | ||
8 | 1. Add High Availability clustering support using shared Logical Disks. | ||
9 | 2. Version and Changelog update. | ||
10 | ------------------------------------------------------------------------------- | ||
1 | Release Date : Wed. May 15, 2013 17:00:00 PST 2013 - | 11 | Release Date : Wed. May 15, 2013 17:00:00 PST 2013 - |
2 | (emaild-id:megaraidlinux@lsi.com) | 12 | (emaild-id:megaraidlinux@lsi.com) |
3 | Adam Radford | 13 | Adam Radford |
diff --git a/Documentation/scsi/LICENSE.qla4xxx b/Documentation/scsi/LICENSE.qla4xxx index 78c169f0d7c6..fcc27ad27d74 100644 --- a/Documentation/scsi/LICENSE.qla4xxx +++ b/Documentation/scsi/LICENSE.qla4xxx | |||
@@ -1,4 +1,4 @@ | |||
1 | Copyright (c) 2003-2012 QLogic Corporation | 1 | Copyright (c) 2003-2013 QLogic Corporation |
2 | QLogic Linux iSCSI Driver | 2 | QLogic Linux iSCSI Driver |
3 | 3 | ||
4 | This program includes a device driver for Linux 3.x. | 4 | This program includes a device driver for Linux 3.x. |
diff --git a/Documentation/scsi/hptiop.txt b/Documentation/scsi/hptiop.txt index 4a4f47e759cd..12ecfd308e55 100644 --- a/Documentation/scsi/hptiop.txt +++ b/Documentation/scsi/hptiop.txt | |||
@@ -151,7 +151,7 @@ To send a request to the controller: | |||
151 | generated. | 151 | generated. |
152 | 152 | ||
153 | - The host read the outbound list copy pointer shadow register and compare | 153 | - The host read the outbound list copy pointer shadow register and compare |
154 | with previous saved read ponter N. If they are different, the host will | 154 | with previous saved read pointer N. If they are different, the host will |
155 | read the (N+1)th outbound list unit. | 155 | read the (N+1)th outbound list unit. |
156 | 156 | ||
157 | The host get the index of the request from the (N+1)th outbound list | 157 | The host get the index of the request from the (N+1)th outbound list |
diff --git a/Documentation/serial/driver b/Documentation/serial/driver index 067c47d46917..c3a7689a90e6 100644 --- a/Documentation/serial/driver +++ b/Documentation/serial/driver | |||
@@ -264,10 +264,6 @@ hardware. | |||
264 | Locking: none. | 264 | Locking: none. |
265 | Interrupts: caller dependent. | 265 | Interrupts: caller dependent. |
266 | 266 | ||
267 | set_wake(port,state) | ||
268 | Enable/disable power management wakeup on serial activity. Not | ||
269 | currently implemented. | ||
270 | |||
271 | type(port) | 267 | type(port) |
272 | Return a pointer to a string constant describing the specified | 268 | Return a pointer to a string constant describing the specified |
273 | port, or return NULL, in which case the string 'unknown' is | 269 | port, or return NULL, in which case the string 'unknown' is |
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 95731a08f257..b8dd0df76952 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -616,7 +616,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
616 | 616 | ||
617 | As default, snd-dummy drivers doesn't allocate the real buffers | 617 | As default, snd-dummy drivers doesn't allocate the real buffers |
618 | but either ignores read/write or mmap a single dummy page to all | 618 | but either ignores read/write or mmap a single dummy page to all |
619 | buffer pages, in order to save the resouces. If your apps need | 619 | buffer pages, in order to save the resources. If your apps need |
620 | the read/ written buffer data to be consistent, pass fake_buffer=0 | 620 | the read/ written buffer data to be consistent, pass fake_buffer=0 |
621 | option. | 621 | option. |
622 | 622 | ||
diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt b/Documentation/sound/alsa/Audiophile-Usb.txt index 654dd3b694a8..e7a5ed4dcae8 100644 --- a/Documentation/sound/alsa/Audiophile-Usb.txt +++ b/Documentation/sound/alsa/Audiophile-Usb.txt | |||
@@ -232,7 +232,7 @@ The parameter can be given: | |||
232 | # modprobe snd-usb-audio index=1 device_setup=0x09 | 232 | # modprobe snd-usb-audio index=1 device_setup=0x09 |
233 | 233 | ||
234 | * Or while configuring the modules options in your modules configuration file | 234 | * Or while configuring the modules options in your modules configuration file |
235 | (tipically a .conf file in /etc/modprobe.d/ directory: | 235 | (typically a .conf file in /etc/modprobe.d/ directory: |
236 | alias snd-card-1 snd-usb-audio | 236 | alias snd-card-1 snd-usb-audio |
237 | options snd-usb-audio index=1 device_setup=0x09 | 237 | options snd-usb-audio index=1 device_setup=0x09 |
238 | 238 | ||
diff --git a/Documentation/sound/alsa/CMIPCI.txt b/Documentation/sound/alsa/CMIPCI.txt index 16935c8561f7..4e36e6e809ca 100644 --- a/Documentation/sound/alsa/CMIPCI.txt +++ b/Documentation/sound/alsa/CMIPCI.txt | |||
@@ -87,7 +87,7 @@ with 4 channels, | |||
87 | 87 | ||
88 | and use the interleaved 4 channel data. | 88 | and use the interleaved 4 channel data. |
89 | 89 | ||
90 | There are some control switchs affecting to the speaker connections: | 90 | There are some control switches affecting to the speaker connections: |
91 | 91 | ||
92 | "Line-In Mode" - an enum control to change the behavior of line-in | 92 | "Line-In Mode" - an enum control to change the behavior of line-in |
93 | jack. Either "Line-In", "Rear Output" or "Bass Output" can | 93 | jack. Either "Line-In", "Rear Output" or "Bass Output" can |
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 809d72b8eff1..85c362d8ea34 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -28,6 +28,7 @@ ALC269/270/275/276/28x/29x | |||
28 | alc269-dmic Enable ALC269(VA) digital mic workaround | 28 | alc269-dmic Enable ALC269(VA) digital mic workaround |
29 | alc271-dmic Enable ALC271X digital mic workaround | 29 | alc271-dmic Enable ALC271X digital mic workaround |
30 | inv-dmic Inverted internal mic workaround | 30 | inv-dmic Inverted internal mic workaround |
31 | headset-mic Indicates a combined headset (headphone+mic) jack | ||
31 | lenovo-dock Enables docking station I/O for some Lenovos | 32 | lenovo-dock Enables docking station I/O for some Lenovos |
32 | dell-headset-multi Headset jack, which can also be used as mic-in | 33 | dell-headset-multi Headset jack, which can also be used as mic-in |
33 | dell-headset-dock Headset jack (without mic-in), and also dock I/O | 34 | dell-headset-dock Headset jack (without mic-in), and also dock I/O |
@@ -244,6 +245,7 @@ STAC9227/9228/9229/927x | |||
244 | 5stack-no-fp D965 5stack without front panel | 245 | 5stack-no-fp D965 5stack without front panel |
245 | dell-3stack Dell Dimension E520 | 246 | dell-3stack Dell Dimension E520 |
246 | dell-bios Fixes with Dell BIOS setup | 247 | dell-bios Fixes with Dell BIOS setup |
248 | dell-bios-amic Fixes with Dell BIOS setup including analog mic | ||
247 | volknob Fixes with volume-knob widget 0x24 | 249 | volknob Fixes with volume-knob widget 0x24 |
248 | auto BIOS setup (default) | 250 | auto BIOS setup (default) |
249 | 251 | ||
@@ -295,6 +297,12 @@ Cirrus Logic CS4206/4207 | |||
295 | imac27 IMac 27 Inch | 297 | imac27 IMac 27 Inch |
296 | auto BIOS setup (default) | 298 | auto BIOS setup (default) |
297 | 299 | ||
300 | Cirrus Logic CS4208 | ||
301 | =================== | ||
302 | mba6 MacBook Air 6,1 and 6,2 | ||
303 | gpio0 Enable GPIO 0 amp | ||
304 | auto BIOS setup (default) | ||
305 | |||
298 | VIA VT17xx/VT18xx/VT20xx | 306 | VIA VT17xx/VT18xx/VT20xx |
299 | ======================== | 307 | ======================== |
300 | auto BIOS setup (default) | 308 | auto BIOS setup (default) |
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt index c3c912d023cc..42a0a39b77e6 100644 --- a/Documentation/sound/alsa/HD-Audio.txt +++ b/Documentation/sound/alsa/HD-Audio.txt | |||
@@ -454,6 +454,8 @@ The generic parser supports the following hints: | |||
454 | - need_dac_fix (bool): limits the DACs depending on the channel count | 454 | - need_dac_fix (bool): limits the DACs depending on the channel count |
455 | - primary_hp (bool): probe headphone jacks as the primary outputs; | 455 | - primary_hp (bool): probe headphone jacks as the primary outputs; |
456 | default true | 456 | default true |
457 | - multi_io (bool): try probing multi-I/O config (e.g. shared | ||
458 | line-in/surround, mic/clfe jacks) | ||
457 | - multi_cap_vol (bool): provide multiple capture volumes | 459 | - multi_cap_vol (bool): provide multiple capture volumes |
458 | - inv_dmic_split (bool): provide split internal mic volume/switch for | 460 | - inv_dmic_split (bool): provide split internal mic volume/switch for |
459 | phase-inverted digital mics | 461 | phase-inverted digital mics |
diff --git a/Documentation/sound/alsa/README.maya44 b/Documentation/sound/alsa/README.maya44 index 0e41576fa13e..67b2ea1cc31d 100644 --- a/Documentation/sound/alsa/README.maya44 +++ b/Documentation/sound/alsa/README.maya44 | |||
@@ -120,7 +120,7 @@ Mic Phantom+48V: switch for +48V phantom power for electrostatic microphones on | |||
120 | Make sure this is not turned on while any other source is connected to input 1/2. | 120 | Make sure this is not turned on while any other source is connected to input 1/2. |
121 | It might damage the source and/or the maya44 card. | 121 | It might damage the source and/or the maya44 card. |
122 | 122 | ||
123 | Mic/Line input: if switch is is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo). | 123 | Mic/Line input: if switch is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo). |
124 | 124 | ||
125 | Bypass: analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver. | 125 | Bypass: analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver. |
126 | Bypass 1: same for channel 3+4. | 126 | Bypass 1: same for channel 3+4. |
diff --git a/Documentation/sound/alsa/compress_offload.txt b/Documentation/sound/alsa/compress_offload.txt index 0bcc55155911..630c492c3dc2 100644 --- a/Documentation/sound/alsa/compress_offload.txt +++ b/Documentation/sound/alsa/compress_offload.txt | |||
@@ -73,7 +73,7 @@ The main requirements are: | |||
73 | 73 | ||
74 | Design | 74 | Design |
75 | 75 | ||
76 | The new API shares a number of concepts with with the PCM API for flow | 76 | The new API shares a number of concepts with the PCM API for flow |
77 | control. Start, pause, resume, drain and stop commands have the same | 77 | control. Start, pause, resume, drain and stop commands have the same |
78 | semantics no matter what the content is. | 78 | semantics no matter what the content is. |
79 | 79 | ||
@@ -130,7 +130,7 @@ the settings should remain the exception. | |||
130 | The timestamp becomes a multiple field structure. It lists the number | 130 | The timestamp becomes a multiple field structure. It lists the number |
131 | of bytes transferred, the number of samples processed and the number | 131 | of bytes transferred, the number of samples processed and the number |
132 | of samples rendered/grabbed. All these values can be used to determine | 132 | of samples rendered/grabbed. All these values can be used to determine |
133 | the avarage bitrate, figure out if the ring buffer needs to be | 133 | the average bitrate, figure out if the ring buffer needs to be |
134 | refilled or the delay due to decoding/encoding/io on the DSP. | 134 | refilled or the delay due to decoding/encoding/io on the DSP. |
135 | 135 | ||
136 | Note that the list of codecs/profiles/modes was derived from the | 136 | Note that the list of codecs/profiles/modes was derived from the |
@@ -217,12 +217,12 @@ Not supported: | |||
217 | would be enabled with ALSA kcontrols. | 217 | would be enabled with ALSA kcontrols. |
218 | 218 | ||
219 | - Audio policy/resource management. This API does not provide any | 219 | - Audio policy/resource management. This API does not provide any |
220 | hooks to query the utilization of the audio DSP, nor any premption | 220 | hooks to query the utilization of the audio DSP, nor any preemption |
221 | mechanisms. | 221 | mechanisms. |
222 | 222 | ||
223 | - No notion of underun/overrun. Since the bytes written are compressed | 223 | - No notion of underrun/overrun. Since the bytes written are compressed |
224 | in nature and data written/read doesn't translate directly to | 224 | in nature and data written/read doesn't translate directly to |
225 | rendered output in time, this does not deal with underrun/overun and | 225 | rendered output in time, this does not deal with underrun/overrun and |
226 | maybe dealt in user-library | 226 | maybe dealt in user-library |
227 | 227 | ||
228 | Credits: | 228 | Credits: |
diff --git a/Documentation/sound/alsa/soc/DPCM.txt b/Documentation/sound/alsa/soc/DPCM.txt new file mode 100644 index 000000000000..0110180b7ac6 --- /dev/null +++ b/Documentation/sound/alsa/soc/DPCM.txt | |||
@@ -0,0 +1,380 @@ | |||
1 | Dynamic PCM | ||
2 | =========== | ||
3 | |||
4 | 1. Description | ||
5 | ============== | ||
6 | |||
7 | Dynamic PCM allows an ALSA PCM device to digitally route its PCM audio to | ||
8 | various digital endpoints during the PCM stream runtime. e.g. PCM0 can route | ||
9 | digital audio to I2S DAI0, I2S DAI1 or PDM DAI2. This is useful for on SoC DSP | ||
10 | drivers that expose several ALSA PCMs and can route to multiple DAIs. | ||
11 | |||
12 | The DPCM runtime routing is determined by the ALSA mixer settings in the same | ||
13 | way as the analog signal is routed in an ASoC codec driver. DPCM uses a DAPM | ||
14 | graph representing the DSP internal audio paths and uses the mixer settings to | ||
15 | determine the patch used by each ALSA PCM. | ||
16 | |||
17 | DPCM re-uses all the existing component codec, platform and DAI drivers without | ||
18 | any modifications. | ||
19 | |||
20 | |||
21 | Phone Audio System with SoC based DSP | ||
22 | ------------------------------------- | ||
23 | |||
24 | Consider the following phone audio subsystem. This will be used in this | ||
25 | document for all examples :- | ||
26 | |||
27 | | Front End PCMs | SoC DSP | Back End DAIs | Audio devices | | ||
28 | |||
29 | ************* | ||
30 | PCM0 <------------> * * <----DAI0-----> Codec Headset | ||
31 | * * | ||
32 | PCM1 <------------> * * <----DAI1-----> Codec Speakers | ||
33 | * DSP * | ||
34 | PCM2 <------------> * * <----DAI2-----> MODEM | ||
35 | * * | ||
36 | PCM3 <------------> * * <----DAI3-----> BT | ||
37 | * * | ||
38 | * * <----DAI4-----> DMIC | ||
39 | * * | ||
40 | * * <----DAI5-----> FM | ||
41 | ************* | ||
42 | |||
43 | This diagram shows a simple smart phone audio subsystem. It supports Bluetooth, | ||
44 | FM digital radio, Speakers, Headset Jack, digital microphones and cellular | ||
45 | modem. This sound card exposes 4 DSP front end (FE) ALSA PCM devices and | ||
46 | supports 6 back end (BE) DAIs. Each FE PCM can digitally route audio data to any | ||
47 | of the BE DAIs. The FE PCM devices can also route audio to more than 1 BE DAI. | ||
48 | |||
49 | |||
50 | |||
51 | Example - DPCM Switching playback from DAI0 to DAI1 | ||
52 | --------------------------------------------------- | ||
53 | |||
54 | Audio is being played to the Headset. After a while the user removes the headset | ||
55 | and audio continues playing on the speakers. | ||
56 | |||
57 | Playback on PCM0 to Headset would look like :- | ||
58 | |||
59 | ************* | ||
60 | PCM0 <============> * * <====DAI0=====> Codec Headset | ||
61 | * * | ||
62 | PCM1 <------------> * * <----DAI1-----> Codec Speakers | ||
63 | * DSP * | ||
64 | PCM2 <------------> * * <----DAI2-----> MODEM | ||
65 | * * | ||
66 | PCM3 <------------> * * <----DAI3-----> BT | ||
67 | * * | ||
68 | * * <----DAI4-----> DMIC | ||
69 | * * | ||
70 | * * <----DAI5-----> FM | ||
71 | ************* | ||
72 | |||
73 | The headset is removed from the jack by user so the speakers must now be used :- | ||
74 | |||
75 | ************* | ||
76 | PCM0 <============> * * <----DAI0-----> Codec Headset | ||
77 | * * | ||
78 | PCM1 <------------> * * <====DAI1=====> Codec Speakers | ||
79 | * DSP * | ||
80 | PCM2 <------------> * * <----DAI2-----> MODEM | ||
81 | * * | ||
82 | PCM3 <------------> * * <----DAI3-----> BT | ||
83 | * * | ||
84 | * * <----DAI4-----> DMIC | ||
85 | * * | ||
86 | * * <----DAI5-----> FM | ||
87 | ************* | ||
88 | |||
89 | The audio driver processes this as follows :- | ||
90 | |||
91 | 1) Machine driver receives Jack removal event. | ||
92 | |||
93 | 2) Machine driver OR audio HAL disables the Headset path. | ||
94 | |||
95 | 3) DPCM runs the PCM trigger(stop), hw_free(), shutdown() operations on DAI0 | ||
96 | for headset since the path is now disabled. | ||
97 | |||
98 | 4) Machine driver or audio HAL enables the speaker path. | ||
99 | |||
100 | 5) DPCM runs the PCM ops for startup(), hw_params(), prepapre() and | ||
101 | trigger(start) for DAI1 Speakers since the path is enabled. | ||
102 | |||
103 | In this example, the machine driver or userspace audio HAL can alter the routing | ||
104 | and then DPCM will take care of managing the DAI PCM operations to either bring | ||
105 | the link up or down. Audio playback does not stop during this transition. | ||
106 | |||
107 | |||
108 | |||
109 | DPCM machine driver | ||
110 | =================== | ||
111 | |||
112 | The DPCM enabled ASoC machine driver is similar to normal machine drivers | ||
113 | except that we also have to :- | ||
114 | |||
115 | 1) Define the FE and BE DAI links. | ||
116 | |||
117 | 2) Define any FE/BE PCM operations. | ||
118 | |||
119 | 3) Define widget graph connections. | ||
120 | |||
121 | |||
122 | 1 FE and BE DAI links | ||
123 | --------------------- | ||
124 | |||
125 | | Front End PCMs | SoC DSP | Back End DAIs | Audio devices | | ||
126 | |||
127 | ************* | ||
128 | PCM0 <------------> * * <----DAI0-----> Codec Headset | ||
129 | * * | ||
130 | PCM1 <------------> * * <----DAI1-----> Codec Speakers | ||
131 | * DSP * | ||
132 | PCM2 <------------> * * <----DAI2-----> MODEM | ||
133 | * * | ||
134 | PCM3 <------------> * * <----DAI3-----> BT | ||
135 | * * | ||
136 | * * <----DAI4-----> DMIC | ||
137 | * * | ||
138 | * * <----DAI5-----> FM | ||
139 | ************* | ||
140 | |||
141 | For the example above we have to define 4 FE DAI links and 6 BE DAI links. The | ||
142 | FE DAI links are defined as follows :- | ||
143 | |||
144 | static struct snd_soc_dai_link machine_dais[] = { | ||
145 | { | ||
146 | .name = "PCM0 System", | ||
147 | .stream_name = "System Playback", | ||
148 | .cpu_dai_name = "System Pin", | ||
149 | .platform_name = "dsp-audio", | ||
150 | .codec_name = "snd-soc-dummy", | ||
151 | .codec_dai_name = "snd-soc-dummy-dai", | ||
152 | .dynamic = 1, | ||
153 | .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, | ||
154 | .dpcm_playback = 1, | ||
155 | }, | ||
156 | .....< other FE and BE DAI links here > | ||
157 | }; | ||
158 | |||
159 | This FE DAI link is pretty similar to a regular DAI link except that we also | ||
160 | set the DAI link to a DPCM FE with the "dynamic = 1". The supported FE stream | ||
161 | directions should also be set with the "dpcm_playback" and "dpcm_capture" | ||
162 | flags. There is also an option to specify the ordering of the trigger call for | ||
163 | each FE. This allows the ASoC core to trigger the DSP before or after the other | ||
164 | components (as some DSPs have strong requirements for the ordering DAI/DSP | ||
165 | start and stop sequences). | ||
166 | |||
167 | The FE DAI above sets the codec and code DAIs to dummy devices since the BE is | ||
168 | dynamic and will change depending on runtime config. | ||
169 | |||
170 | The BE DAIs are configured as follows :- | ||
171 | |||
172 | static struct snd_soc_dai_link machine_dais[] = { | ||
173 | .....< FE DAI links here > | ||
174 | { | ||
175 | .name = "Codec Headset", | ||
176 | .cpu_dai_name = "ssp-dai.0", | ||
177 | .platform_name = "snd-soc-dummy", | ||
178 | .no_pcm = 1, | ||
179 | .codec_name = "rt5640.0-001c", | ||
180 | .codec_dai_name = "rt5640-aif1", | ||
181 | .ignore_suspend = 1, | ||
182 | .ignore_pmdown_time = 1, | ||
183 | .be_hw_params_fixup = hswult_ssp0_fixup, | ||
184 | .ops = &haswell_ops, | ||
185 | .dpcm_playback = 1, | ||
186 | .dpcm_capture = 1, | ||
187 | }, | ||
188 | .....< other BE DAI links here > | ||
189 | }; | ||
190 | |||
191 | This BE DAI link connects DAI0 to the codec (in this case RT5460 AIF1). It sets | ||
192 | the "no_pcm" flag to mark it has a BE and sets flags for supported stream | ||
193 | directions using "dpcm_playback" and "dpcm_capture" above. | ||
194 | |||
195 | The BE has also flags set for ignoring suspend and PM down time. This allows | ||
196 | the BE to work in a hostless mode where the host CPU is not transferring data | ||
197 | like a BT phone call :- | ||
198 | |||
199 | ************* | ||
200 | PCM0 <------------> * * <----DAI0-----> Codec Headset | ||
201 | * * | ||
202 | PCM1 <------------> * * <----DAI1-----> Codec Speakers | ||
203 | * DSP * | ||
204 | PCM2 <------------> * * <====DAI2=====> MODEM | ||
205 | * * | ||
206 | PCM3 <------------> * * <====DAI3=====> BT | ||
207 | * * | ||
208 | * * <----DAI4-----> DMIC | ||
209 | * * | ||
210 | * * <----DAI5-----> FM | ||
211 | ************* | ||
212 | |||
213 | This allows the host CPU to sleep whilst the DSP, MODEM DAI and the BT DAI are | ||
214 | still in operation. | ||
215 | |||
216 | A BE DAI link can also set the codec to a dummy device if the code is a device | ||
217 | that is managed externally. | ||
218 | |||
219 | Likewise a BE DAI can also set a dummy cpu DAI if the CPU DAI is managed by the | ||
220 | DSP firmware. | ||
221 | |||
222 | |||
223 | 2 FE/BE PCM operations | ||
224 | ---------------------- | ||
225 | |||
226 | The BE above also exports some PCM operations and a "fixup" callback. The fixup | ||
227 | callback is used by the machine driver to (re)configure the DAI based upon the | ||
228 | FE hw params. i.e. the DSP may perform SRC or ASRC from the FE to BE. | ||
229 | |||
230 | e.g. DSP converts all FE hw params to run at fixed rate of 48k, 16bit, stereo for | ||
231 | DAI0. This means all FE hw_params have to be fixed in the machine driver for | ||
232 | DAI0 so that the DAI is running at desired configuration regardless of the FE | ||
233 | configuration. | ||
234 | |||
235 | static int dai0_fixup(struct snd_soc_pcm_runtime *rtd, | ||
236 | struct snd_pcm_hw_params *params) | ||
237 | { | ||
238 | struct snd_interval *rate = hw_param_interval(params, | ||
239 | SNDRV_PCM_HW_PARAM_RATE); | ||
240 | struct snd_interval *channels = hw_param_interval(params, | ||
241 | SNDRV_PCM_HW_PARAM_CHANNELS); | ||
242 | |||
243 | /* The DSP will covert the FE rate to 48k, stereo */ | ||
244 | rate->min = rate->max = 48000; | ||
245 | channels->min = channels->max = 2; | ||
246 | |||
247 | /* set DAI0 to 16 bit */ | ||
248 | snd_mask_set(¶ms->masks[SNDRV_PCM_HW_PARAM_FORMAT - | ||
249 | SNDRV_PCM_HW_PARAM_FIRST_MASK], | ||
250 | SNDRV_PCM_FORMAT_S16_LE); | ||
251 | return 0; | ||
252 | } | ||
253 | |||
254 | The other PCM operation are the same as for regular DAI links. Use as necessary. | ||
255 | |||
256 | |||
257 | 3 Widget graph connections | ||
258 | -------------------------- | ||
259 | |||
260 | The BE DAI links will normally be connected to the graph at initialisation time | ||
261 | by the ASoC DAPM core. However, if the BE codec or BE DAI is a dummy then this | ||
262 | has to be set explicitly in the driver :- | ||
263 | |||
264 | /* BE for codec Headset - DAI0 is dummy and managed by DSP FW */ | ||
265 | {"DAI0 CODEC IN", NULL, "AIF1 Capture"}, | ||
266 | {"AIF1 Playback", NULL, "DAI0 CODEC OUT"}, | ||
267 | |||
268 | |||
269 | Writing a DPCM DSP driver | ||
270 | ========================= | ||
271 | |||
272 | The DPCM DSP driver looks much like a standard platform class ASoC driver | ||
273 | combined with elements from a codec class driver. A DSP platform driver must | ||
274 | implement :- | ||
275 | |||
276 | 1) Front End PCM DAIs - i.e. struct snd_soc_dai_driver. | ||
277 | |||
278 | 2) DAPM graph showing DSP audio routing from FE DAIs to BEs. | ||
279 | |||
280 | 3) DAPM widgets from DSP graph. | ||
281 | |||
282 | 4) Mixers for gains, routing, etc. | ||
283 | |||
284 | 5) DMA configuration. | ||
285 | |||
286 | 6) BE AIF widgets. | ||
287 | |||
288 | Items 6 is important for routing the audio outside of the DSP. AIF need to be | ||
289 | defined for each BE and each stream direction. e.g for BE DAI0 above we would | ||
290 | have :- | ||
291 | |||
292 | SND_SOC_DAPM_AIF_IN("DAI0 RX", NULL, 0, SND_SOC_NOPM, 0, 0), | ||
293 | SND_SOC_DAPM_AIF_OUT("DAI0 TX", NULL, 0, SND_SOC_NOPM, 0, 0), | ||
294 | |||
295 | The BE AIF are used to connect the DSP graph to the graphs for the other | ||
296 | component drivers (e.g. codec graph). | ||
297 | |||
298 | |||
299 | Hostless PCM streams | ||
300 | ==================== | ||
301 | |||
302 | A hostless PCM stream is a stream that is not routed through the host CPU. An | ||
303 | example of this would be a phone call from handset to modem. | ||
304 | |||
305 | |||
306 | ************* | ||
307 | PCM0 <------------> * * <----DAI0-----> Codec Headset | ||
308 | * * | ||
309 | PCM1 <------------> * * <====DAI1=====> Codec Speakers/Mic | ||
310 | * DSP * | ||
311 | PCM2 <------------> * * <====DAI2=====> MODEM | ||
312 | * * | ||
313 | PCM3 <------------> * * <----DAI3-----> BT | ||
314 | * * | ||
315 | * * <----DAI4-----> DMIC | ||
316 | * * | ||
317 | * * <----DAI5-----> FM | ||
318 | ************* | ||
319 | |||
320 | In this case the PCM data is routed via the DSP. The host CPU in this use case | ||
321 | is only used for control and can sleep during the runtime of the stream. | ||
322 | |||
323 | The host can control the hostless link either by :- | ||
324 | |||
325 | 1) Configuring the link as a CODEC <-> CODEC style link. In this case the link | ||
326 | is enabled or disabled by the state of the DAPM graph. This usually means | ||
327 | there is a mixer control that can be used to connect or disconnect the path | ||
328 | between both DAIs. | ||
329 | |||
330 | 2) Hostless FE. This FE has a virtual connection to the BE DAI links on the DAPM | ||
331 | graph. Control is then carried out by the FE as regular PCM operations. | ||
332 | This method gives more control over the DAI links, but requires much more | ||
333 | userspace code to control the link. Its recommended to use CODEC<->CODEC | ||
334 | unless your HW needs more fine grained sequencing of the PCM ops. | ||
335 | |||
336 | |||
337 | CODEC <-> CODEC link | ||
338 | -------------------- | ||
339 | |||
340 | This DAI link is enabled when DAPM detects a valid path within the DAPM graph. | ||
341 | The machine driver sets some additional parameters to the DAI link i.e. | ||
342 | |||
343 | static const struct snd_soc_pcm_stream dai_params = { | ||
344 | .formats = SNDRV_PCM_FMTBIT_S32_LE, | ||
345 | .rate_min = 8000, | ||
346 | .rate_max = 8000, | ||
347 | .channels_min = 2, | ||
348 | .channels_max = 2, | ||
349 | }; | ||
350 | |||
351 | static struct snd_soc_dai_link dais[] = { | ||
352 | < ... more DAI links above ... > | ||
353 | { | ||
354 | .name = "MODEM", | ||
355 | .stream_name = "MODEM", | ||
356 | .cpu_dai_name = "dai2", | ||
357 | .codec_dai_name = "modem-aif1", | ||
358 | .codec_name = "modem", | ||
359 | .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | ||
360 | | SND_SOC_DAIFMT_CBM_CFM, | ||
361 | .params = &dai_params, | ||
362 | } | ||
363 | < ... more DAI links here ... > | ||
364 | |||
365 | These parameters are used to configure the DAI hw_params() when DAPM detects a | ||
366 | valid path and then calls the PCM operations to start the link. DAPM will also | ||
367 | call the appropriate PCM operations to disable the DAI when the path is no | ||
368 | longer valid. | ||
369 | |||
370 | |||
371 | Hostless FE | ||
372 | ----------- | ||
373 | |||
374 | The DAI link(s) are enabled by a FE that does not read or write any PCM data. | ||
375 | This means creating a new FE that is connected with a virtual path to both | ||
376 | DAI links. The DAI links will be started when the FE PCM is started and stopped | ||
377 | when the FE PCM is stopped. Note that the FE PCM cannot read or write data in | ||
378 | this configuration. | ||
379 | |||
380 | |||
diff --git a/Documentation/sound/alsa/soc/codec.txt b/Documentation/sound/alsa/soc/codec.txt index bce23a4a7875..db5f9c9ae149 100644 --- a/Documentation/sound/alsa/soc/codec.txt +++ b/Documentation/sound/alsa/soc/codec.txt | |||
@@ -1,22 +1,23 @@ | |||
1 | ASoC Codec Driver | 1 | ASoC Codec Class Driver |
2 | ================= | 2 | ======================= |
3 | 3 | ||
4 | The codec driver is generic and hardware independent code that configures the | 4 | The codec class driver is generic and hardware independent code that configures |
5 | codec to provide audio capture and playback. It should contain no code that is | 5 | the codec, FM, MODEM, BT or external DSP to provide audio capture and playback. |
6 | specific to the target platform or machine. All platform and machine specific | 6 | It should contain no code that is specific to the target platform or machine. |
7 | code should be added to the platform and machine drivers respectively. | 7 | All platform and machine specific code should be added to the platform and |
8 | machine drivers respectively. | ||
8 | 9 | ||
9 | Each codec driver *must* provide the following features:- | 10 | Each codec class driver *must* provide the following features:- |
10 | 11 | ||
11 | 1) Codec DAI and PCM configuration | 12 | 1) Codec DAI and PCM configuration |
12 | 2) Codec control IO - using I2C, 3 Wire(SPI) or both APIs | 13 | 2) Codec control IO - using RegMap API |
13 | 3) Mixers and audio controls | 14 | 3) Mixers and audio controls |
14 | 4) Codec audio operations | 15 | 4) Codec audio operations |
16 | 5) DAPM description. | ||
17 | 6) DAPM event handler. | ||
15 | 18 | ||
16 | Optionally, codec drivers can also provide:- | 19 | Optionally, codec drivers can also provide:- |
17 | 20 | ||
18 | 5) DAPM description. | ||
19 | 6) DAPM event handler. | ||
20 | 7) DAC Digital mute control. | 21 | 7) DAC Digital mute control. |
21 | 22 | ||
22 | Its probably best to use this guide in conjunction with the existing codec | 23 | Its probably best to use this guide in conjunction with the existing codec |
@@ -64,26 +65,9 @@ struct snd_soc_dai_driver wm8731_dai = { | |||
64 | 2 - Codec control IO | 65 | 2 - Codec control IO |
65 | -------------------- | 66 | -------------------- |
66 | The codec can usually be controlled via an I2C or SPI style interface | 67 | The codec can usually be controlled via an I2C or SPI style interface |
67 | (AC97 combines control with data in the DAI). The codec drivers provide | 68 | (AC97 combines control with data in the DAI). The codec driver should use the |
68 | functions to read and write the codec registers along with supplying a | 69 | Regmap API for all codec IO. Please see include/linux/regmap.h and existing |
69 | register cache:- | 70 | codec drivers for example regmap usage. |
70 | |||
71 | /* IO control data and register cache */ | ||
72 | void *control_data; /* codec control (i2c/3wire) data */ | ||
73 | void *reg_cache; | ||
74 | |||
75 | Codec read/write should do any data formatting and call the hardware | ||
76 | read write below to perform the IO. These functions are called by the | ||
77 | core and ALSA when performing DAPM or changing the mixer:- | ||
78 | |||
79 | unsigned int (*read)(struct snd_soc_codec *, unsigned int); | ||
80 | int (*write)(struct snd_soc_codec *, unsigned int, unsigned int); | ||
81 | |||
82 | Codec hardware IO functions - usually points to either the I2C, SPI or AC97 | ||
83 | read/write:- | ||
84 | |||
85 | hw_write_t hw_write; | ||
86 | hw_read_t hw_read; | ||
87 | 71 | ||
88 | 72 | ||
89 | 3 - Mixers and audio controls | 73 | 3 - Mixers and audio controls |
@@ -127,7 +111,7 @@ Defines a stereo enumerated control | |||
127 | 111 | ||
128 | 4 - Codec Audio Operations | 112 | 4 - Codec Audio Operations |
129 | -------------------------- | 113 | -------------------------- |
130 | The codec driver also supports the following ALSA operations:- | 114 | The codec driver also supports the following ALSA PCM operations:- |
131 | 115 | ||
132 | /* SoC audio ops */ | 116 | /* SoC audio ops */ |
133 | struct snd_soc_ops { | 117 | struct snd_soc_ops { |
diff --git a/Documentation/sound/alsa/soc/dapm.txt b/Documentation/sound/alsa/soc/dapm.txt index 05bf5a0eee41..6faab4880006 100644 --- a/Documentation/sound/alsa/soc/dapm.txt +++ b/Documentation/sound/alsa/soc/dapm.txt | |||
@@ -21,7 +21,7 @@ level power systems. | |||
21 | 21 | ||
22 | There are 4 power domains within DAPM | 22 | There are 4 power domains within DAPM |
23 | 23 | ||
24 | 1. Codec domain - VREF, VMID (core codec and audio power) | 24 | 1. Codec bias domain - VREF, VMID (core codec and audio power) |
25 | Usually controlled at codec probe/remove and suspend/resume, although | 25 | Usually controlled at codec probe/remove and suspend/resume, although |
26 | can be set at stream time if power is not needed for sidetone, etc. | 26 | can be set at stream time if power is not needed for sidetone, etc. |
27 | 27 | ||
@@ -30,7 +30,7 @@ There are 4 power domains within DAPM | |||
30 | machine driver and responds to asynchronous events e.g when HP | 30 | machine driver and responds to asynchronous events e.g when HP |
31 | are inserted | 31 | are inserted |
32 | 32 | ||
33 | 3. Path domain - audio susbsystem signal paths | 33 | 3. Path domain - audio subsystem signal paths |
34 | Automatically set when mixer and mux settings are changed by the user. | 34 | Automatically set when mixer and mux settings are changed by the user. |
35 | e.g. alsamixer, amixer. | 35 | e.g. alsamixer, amixer. |
36 | 36 | ||
@@ -63,14 +63,22 @@ Audio DAPM widgets fall into a number of types:- | |||
63 | o Line - Line Input/Output (and optional Jack) | 63 | o Line - Line Input/Output (and optional Jack) |
64 | o Speaker - Speaker | 64 | o Speaker - Speaker |
65 | o Supply - Power or clock supply widget used by other widgets. | 65 | o Supply - Power or clock supply widget used by other widgets. |
66 | o Regulator - External regulator that supplies power to audio components. | ||
67 | o Clock - External clock that supplies clock to audio components. | ||
68 | o AIF IN - Audio Interface Input (with TDM slot mask). | ||
69 | o AIF OUT - Audio Interface Output (with TDM slot mask). | ||
70 | o Siggen - Signal Generator. | ||
71 | o DAI IN - Digital Audio Interface Input. | ||
72 | o DAI OUT - Digital Audio Interface Output. | ||
73 | o DAI Link - DAI Link between two DAI structures */ | ||
66 | o Pre - Special PRE widget (exec before all others) | 74 | o Pre - Special PRE widget (exec before all others) |
67 | o Post - Special POST widget (exec after all others) | 75 | o Post - Special POST widget (exec after all others) |
68 | 76 | ||
69 | (Widgets are defined in include/sound/soc-dapm.h) | 77 | (Widgets are defined in include/sound/soc-dapm.h) |
70 | 78 | ||
71 | Widgets are usually added in the codec driver and the machine driver. There are | 79 | Widgets can be added to the sound card by any of the component driver types. |
72 | convenience macros defined in soc-dapm.h that can be used to quickly build a | 80 | There are convenience macros defined in soc-dapm.h that can be used to quickly |
73 | list of widgets of the codecs and machines DAPM widgets. | 81 | build a list of widgets of the codecs and machines DAPM widgets. |
74 | 82 | ||
75 | Most widgets have a name, register, shift and invert. Some widgets have extra | 83 | Most widgets have a name, register, shift and invert. Some widgets have extra |
76 | parameters for stream name and kcontrols. | 84 | parameters for stream name and kcontrols. |
@@ -80,11 +88,13 @@ parameters for stream name and kcontrols. | |||
80 | ------------------------- | 88 | ------------------------- |
81 | 89 | ||
82 | Stream Widgets relate to the stream power domain and only consist of ADCs | 90 | Stream Widgets relate to the stream power domain and only consist of ADCs |
83 | (analog to digital converters) and DACs (digital to analog converters). | 91 | (analog to digital converters), DACs (digital to analog converters), |
92 | AIF IN and AIF OUT. | ||
84 | 93 | ||
85 | Stream widgets have the following format:- | 94 | Stream widgets have the following format:- |
86 | 95 | ||
87 | SND_SOC_DAPM_DAC(name, stream name, reg, shift, invert), | 96 | SND_SOC_DAPM_DAC(name, stream name, reg, shift, invert), |
97 | SND_SOC_DAPM_AIF_IN(name, stream, slot, reg, shift, invert) | ||
88 | 98 | ||
89 | NOTE: the stream name must match the corresponding stream name in your codec | 99 | NOTE: the stream name must match the corresponding stream name in your codec |
90 | snd_soc_codec_dai. | 100 | snd_soc_codec_dai. |
@@ -94,6 +104,11 @@ e.g. stream widgets for HiFi playback and capture | |||
94 | SND_SOC_DAPM_DAC("HiFi DAC", "HiFi Playback", REG, 3, 1), | 104 | SND_SOC_DAPM_DAC("HiFi DAC", "HiFi Playback", REG, 3, 1), |
95 | SND_SOC_DAPM_ADC("HiFi ADC", "HiFi Capture", REG, 2, 1), | 105 | SND_SOC_DAPM_ADC("HiFi ADC", "HiFi Capture", REG, 2, 1), |
96 | 106 | ||
107 | e.g. stream widgets for AIF | ||
108 | |||
109 | SND_SOC_DAPM_AIF_IN("AIF1RX", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0), | ||
110 | SND_SOC_DAPM_AIF_OUT("AIF1TX", "AIF1 Capture", 0, SND_SOC_NOPM, 0, 0), | ||
111 | |||
97 | 112 | ||
98 | 2.2 Path Domain Widgets | 113 | 2.2 Path Domain Widgets |
99 | ----------------------- | 114 | ----------------------- |
@@ -121,12 +136,14 @@ If you dont want the mixer elements prefixed with the name of the mixer widget, | |||
121 | you can use SND_SOC_DAPM_MIXER_NAMED_CTL instead. the parameters are the same | 136 | you can use SND_SOC_DAPM_MIXER_NAMED_CTL instead. the parameters are the same |
122 | as for SND_SOC_DAPM_MIXER. | 137 | as for SND_SOC_DAPM_MIXER. |
123 | 138 | ||
124 | 2.3 Platform/Machine domain Widgets | 139 | |
125 | ----------------------------------- | 140 | 2.3 Machine domain Widgets |
141 | -------------------------- | ||
126 | 142 | ||
127 | Machine widgets are different from codec widgets in that they don't have a | 143 | Machine widgets are different from codec widgets in that they don't have a |
128 | codec register bit associated with them. A machine widget is assigned to each | 144 | codec register bit associated with them. A machine widget is assigned to each |
129 | machine audio component (non codec) that can be independently powered. e.g. | 145 | machine audio component (non codec or DSP) that can be independently |
146 | powered. e.g. | ||
130 | 147 | ||
131 | o Speaker Amp | 148 | o Speaker Amp |
132 | o Microphone Bias | 149 | o Microphone Bias |
@@ -146,12 +163,12 @@ static int spitz_mic_bias(struct snd_soc_dapm_widget* w, int event) | |||
146 | SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias), | 163 | SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias), |
147 | 164 | ||
148 | 165 | ||
149 | 2.4 Codec Domain | 166 | 2.4 Codec (BIAS) Domain |
150 | ---------------- | 167 | ----------------------- |
151 | 168 | ||
152 | The codec power domain has no widgets and is handled by the codecs DAPM event | 169 | The codec bias power domain has no widgets and is handled by the codecs DAPM |
153 | handler. This handler is called when the codec powerstate is changed wrt to any | 170 | event handler. This handler is called when the codec powerstate is changed wrt |
154 | stream event or by kernel PM events. | 171 | to any stream event or by kernel PM events. |
155 | 172 | ||
156 | 173 | ||
157 | 2.5 Virtual Widgets | 174 | 2.5 Virtual Widgets |
@@ -169,15 +186,16 @@ After all the widgets have been defined, they can then be added to the DAPM | |||
169 | subsystem individually with a call to snd_soc_dapm_new_control(). | 186 | subsystem individually with a call to snd_soc_dapm_new_control(). |
170 | 187 | ||
171 | 188 | ||
172 | 3. Codec Widget Interconnections | 189 | 3. Codec/DSP Widget Interconnections |
173 | ================================ | 190 | ==================================== |
174 | 191 | ||
175 | Widgets are connected to each other within the codec and machine by audio paths | 192 | Widgets are connected to each other within the codec, platform and machine by |
176 | (called interconnections). Each interconnection must be defined in order to | 193 | audio paths (called interconnections). Each interconnection must be defined in |
177 | create a map of all audio paths between widgets. | 194 | order to create a map of all audio paths between widgets. |
178 | 195 | ||
179 | This is easiest with a diagram of the codec (and schematic of the machine audio | 196 | This is easiest with a diagram of the codec or DSP (and schematic of the machine |
180 | system), as it requires joining widgets together via their audio signal paths. | 197 | audio system), as it requires joining widgets together via their audio signal |
198 | paths. | ||
181 | 199 | ||
182 | e.g., from the WM8731 output mixer (wm8731.c) | 200 | e.g., from the WM8731 output mixer (wm8731.c) |
183 | 201 | ||
@@ -247,16 +265,9 @@ machine and includes the codec. e.g. | |||
247 | o Mic Jack | 265 | o Mic Jack |
248 | o Codec Pins | 266 | o Codec Pins |
249 | 267 | ||
250 | When a codec pin is NC it can be marked as not used with a call to | 268 | Endpoints are added to the DAPM graph so that their usage can be determined in |
251 | 269 | order to save power. e.g. NC codecs pins will be switched OFF, unconnected | |
252 | snd_soc_dapm_set_endpoint(codec, "Widget Name", 0); | 270 | jacks can also be switched OFF. |
253 | |||
254 | The last argument is 0 for inactive and 1 for active. This way the pin and its | ||
255 | input widget will never be powered up and consume power. | ||
256 | |||
257 | This also applies to machine widgets. e.g. if a headphone is connected to a | ||
258 | jack then the jack can be marked active. If the headphone is removed, then | ||
259 | the headphone jack can be marked inactive. | ||
260 | 271 | ||
261 | 272 | ||
262 | 5 DAPM Widget Events | 273 | 5 DAPM Widget Events |
diff --git a/Documentation/sound/alsa/soc/machine.txt b/Documentation/sound/alsa/soc/machine.txt index d50c14df3411..74056dba52be 100644 --- a/Documentation/sound/alsa/soc/machine.txt +++ b/Documentation/sound/alsa/soc/machine.txt | |||
@@ -1,8 +1,10 @@ | |||
1 | ASoC Machine Driver | 1 | ASoC Machine Driver |
2 | =================== | 2 | =================== |
3 | 3 | ||
4 | The ASoC machine (or board) driver is the code that glues together the platform | 4 | The ASoC machine (or board) driver is the code that glues together all the |
5 | and codec drivers. | 5 | component drivers (e.g. codecs, platforms and DAIs). It also describes the |
6 | relationships between each componnent which include audio paths, GPIOs, | ||
7 | interrupts, clocking, jacks and voltage regulators. | ||
6 | 8 | ||
7 | The machine driver can contain codec and platform specific code. It registers | 9 | The machine driver can contain codec and platform specific code. It registers |
8 | the audio subsystem with the kernel as a platform device and is represented by | 10 | the audio subsystem with the kernel as a platform device and is represented by |
diff --git a/Documentation/sound/alsa/soc/platform.txt b/Documentation/sound/alsa/soc/platform.txt index d57efad37e0a..3a08a2c9150c 100644 --- a/Documentation/sound/alsa/soc/platform.txt +++ b/Documentation/sound/alsa/soc/platform.txt | |||
@@ -1,9 +1,9 @@ | |||
1 | ASoC Platform Driver | 1 | ASoC Platform Driver |
2 | ==================== | 2 | ==================== |
3 | 3 | ||
4 | An ASoC platform driver can be divided into audio DMA and SoC DAI configuration | 4 | An ASoC platform driver class can be divided into audio DMA drivers, SoC DAI |
5 | and control. The platform drivers only target the SoC CPU and must have no board | 5 | drivers and DSP drivers. The platform drivers only target the SoC CPU and must |
6 | specific code. | 6 | have no board specific code. |
7 | 7 | ||
8 | Audio DMA | 8 | Audio DMA |
9 | ========= | 9 | ========= |
@@ -64,3 +64,16 @@ Each SoC DAI driver must provide the following features:- | |||
64 | 5) Suspend and resume (optional) | 64 | 5) Suspend and resume (optional) |
65 | 65 | ||
66 | Please see codec.txt for a description of items 1 - 4. | 66 | Please see codec.txt for a description of items 1 - 4. |
67 | |||
68 | |||
69 | SoC DSP Drivers | ||
70 | =============== | ||
71 | |||
72 | Each SoC DSP driver usually supplies the following features :- | ||
73 | |||
74 | 1) DAPM graph | ||
75 | 2) Mixer controls | ||
76 | 3) DMA IO to/from DSP buffers (if applicable) | ||
77 | 4) Definition of DSP front end (FE) PCM devices. | ||
78 | |||
79 | Please see DPCM.txt for a description of item 4. | ||
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary index 2331eb214146..f21edb983413 100644 --- a/Documentation/spi/spi-summary +++ b/Documentation/spi/spi-summary | |||
@@ -215,7 +215,7 @@ So for example arch/.../mach-*/board-*.c files might have code like: | |||
215 | /* if your mach-* infrastructure doesn't support kernels that can | 215 | /* if your mach-* infrastructure doesn't support kernels that can |
216 | * run on multiple boards, pdata wouldn't benefit from "__init". | 216 | * run on multiple boards, pdata wouldn't benefit from "__init". |
217 | */ | 217 | */ |
218 | static struct mysoc_spi_data __initdata pdata = { ... }; | 218 | static struct mysoc_spi_data pdata __initdata = { ... }; |
219 | 219 | ||
220 | static __init board_init(void) | 220 | static __init board_init(void) |
221 | { | 221 | { |
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index ab7d16efa96b..4273b2d71a27 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -182,6 +182,7 @@ core_pattern is used to specify a core dumpfile pattern name. | |||
182 | %<NUL> '%' is dropped | 182 | %<NUL> '%' is dropped |
183 | %% output one '%' | 183 | %% output one '%' |
184 | %p pid | 184 | %p pid |
185 | %P global pid (init PID namespace) | ||
185 | %u uid | 186 | %u uid |
186 | %g gid | 187 | %g gid |
187 | %d dump mode, matches PR_SET_DUMPABLE and | 188 | %d dump mode, matches PR_SET_DUMPABLE and |
@@ -354,6 +355,82 @@ utilize. | |||
354 | 355 | ||
355 | ============================================================== | 356 | ============================================================== |
356 | 357 | ||
358 | numa_balancing | ||
359 | |||
360 | Enables/disables automatic page fault based NUMA memory | ||
361 | balancing. Memory is moved automatically to nodes | ||
362 | that access it often. | ||
363 | |||
364 | Enables/disables automatic NUMA memory balancing. On NUMA machines, there | ||
365 | is a performance penalty if remote memory is accessed by a CPU. When this | ||
366 | feature is enabled the kernel samples what task thread is accessing memory | ||
367 | by periodically unmapping pages and later trapping a page fault. At the | ||
368 | time of the page fault, it is determined if the data being accessed should | ||
369 | be migrated to a local memory node. | ||
370 | |||
371 | The unmapping of pages and trapping faults incur additional overhead that | ||
372 | ideally is offset by improved memory locality but there is no universal | ||
373 | guarantee. If the target workload is already bound to NUMA nodes then this | ||
374 | feature should be disabled. Otherwise, if the system overhead from the | ||
375 | feature is too high then the rate the kernel samples for NUMA hinting | ||
376 | faults may be controlled by the numa_balancing_scan_period_min_ms, | ||
377 | numa_balancing_scan_delay_ms, numa_balancing_scan_period_max_ms, | ||
378 | numa_balancing_scan_size_mb, numa_balancing_settle_count sysctls and | ||
379 | numa_balancing_migrate_deferred. | ||
380 | |||
381 | ============================================================== | ||
382 | |||
383 | numa_balancing_scan_period_min_ms, numa_balancing_scan_delay_ms, | ||
384 | numa_balancing_scan_period_max_ms, numa_balancing_scan_size_mb | ||
385 | |||
386 | Automatic NUMA balancing scans tasks address space and unmaps pages to | ||
387 | detect if pages are properly placed or if the data should be migrated to a | ||
388 | memory node local to where the task is running. Every "scan delay" the task | ||
389 | scans the next "scan size" number of pages in its address space. When the | ||
390 | end of the address space is reached the scanner restarts from the beginning. | ||
391 | |||
392 | In combination, the "scan delay" and "scan size" determine the scan rate. | ||
393 | When "scan delay" decreases, the scan rate increases. The scan delay and | ||
394 | hence the scan rate of every task is adaptive and depends on historical | ||
395 | behaviour. If pages are properly placed then the scan delay increases, | ||
396 | otherwise the scan delay decreases. The "scan size" is not adaptive but | ||
397 | the higher the "scan size", the higher the scan rate. | ||
398 | |||
399 | Higher scan rates incur higher system overhead as page faults must be | ||
400 | trapped and potentially data must be migrated. However, the higher the scan | ||
401 | rate, the more quickly a tasks memory is migrated to a local node if the | ||
402 | workload pattern changes and minimises performance impact due to remote | ||
403 | memory accesses. These sysctls control the thresholds for scan delays and | ||
404 | the number of pages scanned. | ||
405 | |||
406 | numa_balancing_scan_period_min_ms is the minimum time in milliseconds to | ||
407 | scan a tasks virtual memory. It effectively controls the maximum scanning | ||
408 | rate for each task. | ||
409 | |||
410 | numa_balancing_scan_delay_ms is the starting "scan delay" used for a task | ||
411 | when it initially forks. | ||
412 | |||
413 | numa_balancing_scan_period_max_ms is the maximum time in milliseconds to | ||
414 | scan a tasks virtual memory. It effectively controls the minimum scanning | ||
415 | rate for each task. | ||
416 | |||
417 | numa_balancing_scan_size_mb is how many megabytes worth of pages are | ||
418 | scanned for a given scan. | ||
419 | |||
420 | numa_balancing_settle_count is how many scan periods must complete before | ||
421 | the schedule balancer stops pushing the task towards a preferred node. This | ||
422 | gives the scheduler a chance to place the task on an alternative node if the | ||
423 | preferred node is overloaded. | ||
424 | |||
425 | numa_balancing_migrate_deferred is how many page migrations get skipped | ||
426 | unconditionally, after a page migration is skipped because a page is shared | ||
427 | with other tasks. This reduces page migration overhead, and determines | ||
428 | how much stronger the "move task near its memory" policy scheduler becomes, | ||
429 | versus the "move memory near its task" memory management policy, for workloads | ||
430 | with shared memory. | ||
431 | |||
432 | ============================================================== | ||
433 | |||
357 | osrelease, ostype & version: | 434 | osrelease, ostype & version: |
358 | 435 | ||
359 | # cat osrelease | 436 | # cat osrelease |
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt index d569f2a424d5..9a0319a82470 100644 --- a/Documentation/sysctl/net.txt +++ b/Documentation/sysctl/net.txt | |||
@@ -50,6 +50,19 @@ The maximum number of packets that kernel can handle on a NAPI interrupt, | |||
50 | it's a Per-CPU variable. | 50 | it's a Per-CPU variable. |
51 | Default: 64 | 51 | Default: 64 |
52 | 52 | ||
53 | default_qdisc | ||
54 | -------------- | ||
55 | |||
56 | The default queuing discipline to use for network devices. This allows | ||
57 | overriding the default queue discipline of pfifo_fast with an | ||
58 | alternative. Since the default queuing discipline is created with the | ||
59 | no additional parameters so is best suited to queuing disciplines that | ||
60 | work well without configuration like stochastic fair queue (sfq), | ||
61 | CoDel (codel) or fair queue CoDel (fq_codel). Don't use queuing disciplines | ||
62 | like Hierarchical Token Bucket or Deficit Round Robin which require setting | ||
63 | up classes and bandwidths. | ||
64 | Default: pfifo_fast | ||
65 | |||
53 | busy_read | 66 | busy_read |
54 | ---------------- | 67 | ---------------- |
55 | Low latency busy poll timeout for socket reads. (needs CONFIG_NET_RX_BUSY_POLL) | 68 | Low latency busy poll timeout for socket reads. (needs CONFIG_NET_RX_BUSY_POLL) |
diff --git a/Documentation/sysctl/vm.txt b/Documentation/sysctl/vm.txt index 36ecc26c7433..79a797eb3e87 100644 --- a/Documentation/sysctl/vm.txt +++ b/Documentation/sysctl/vm.txt | |||
@@ -200,17 +200,25 @@ fragmentation index is <= extfrag_threshold. The default value is 500. | |||
200 | 200 | ||
201 | hugepages_treat_as_movable | 201 | hugepages_treat_as_movable |
202 | 202 | ||
203 | This parameter is only useful when kernelcore= is specified at boot time to | 203 | This parameter controls whether we can allocate hugepages from ZONE_MOVABLE |
204 | create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages | 204 | or not. If set to non-zero, hugepages can be allocated from ZONE_MOVABLE. |
205 | are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero | 205 | ZONE_MOVABLE is created when kernel boot parameter kernelcore= is specified, |
206 | value written to hugepages_treat_as_movable allows huge pages to be allocated | 206 | so this parameter has no effect if used without kernelcore=. |
207 | from ZONE_MOVABLE. | 207 | |
208 | 208 | Hugepage migration is now available in some situations which depend on the | |
209 | Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge | 209 | architecture and/or the hugepage size. If a hugepage supports migration, |
210 | pages pool can easily grow or shrink within. Assuming that applications are | 210 | allocation from ZONE_MOVABLE is always enabled for the hugepage regardless |
211 | not running that mlock() a lot of memory, it is likely the huge pages pool | 211 | of the value of this parameter. |
212 | can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value | 212 | IOW, this parameter affects only non-migratable hugepages. |
213 | into nr_hugepages and triggering page reclaim. | 213 | |
214 | Assuming that hugepages are not migratable in your system, one usecase of | ||
215 | this parameter is that users can make hugepage pool more extensible by | ||
216 | enabling the allocation from ZONE_MOVABLE. This is because on ZONE_MOVABLE | ||
217 | page reclaim/migration/compaction work more and you can get contiguous | ||
218 | memory more likely. Note that using ZONE_MOVABLE for non-migratable | ||
219 | hugepages can do harm to other features like memory hotremove (because | ||
220 | memory hotremove expects that memory blocks on ZONE_MOVABLE are always | ||
221 | removable,) so it's a trade-off responsible for the users. | ||
214 | 222 | ||
215 | ============================================================== | 223 | ============================================================== |
216 | 224 | ||
diff --git a/Documentation/sysfs-rules.txt b/Documentation/sysfs-rules.txt index c1a1fd636bf9..a5f985ee1822 100644 --- a/Documentation/sysfs-rules.txt +++ b/Documentation/sysfs-rules.txt | |||
@@ -47,7 +47,7 @@ versions of the sysfs interface. | |||
47 | at device creation and removal | 47 | at device creation and removal |
48 | - the unique key to the device at that point in time | 48 | - the unique key to the device at that point in time |
49 | - the kernel's path to the device directory without the leading | 49 | - the kernel's path to the device directory without the leading |
50 | /sys, and always starting with with a slash | 50 | /sys, and always starting with a slash |
51 | - all elements of a devpath must be real directories. Symlinks | 51 | - all elements of a devpath must be real directories. Symlinks |
52 | pointing to /sys/devices must always be resolved to their real | 52 | pointing to /sys/devices must always be resolved to their real |
53 | target and the target path must be used to access the device. | 53 | target and the target path must be used to access the device. |
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt index 8cb4d7842a5f..0e307c94809a 100644 --- a/Documentation/sysrq.txt +++ b/Documentation/sysrq.txt | |||
@@ -11,27 +11,29 @@ regardless of whatever else it is doing, unless it is completely locked up. | |||
11 | You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when | 11 | You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when |
12 | configuring the kernel. When running a kernel with SysRq compiled in, | 12 | configuring the kernel. When running a kernel with SysRq compiled in, |
13 | /proc/sys/kernel/sysrq controls the functions allowed to be invoked via | 13 | /proc/sys/kernel/sysrq controls the functions allowed to be invoked via |
14 | the SysRq key. By default the file contains 1 which means that every | 14 | the SysRq key. The default value in this file is set by the |
15 | possible SysRq request is allowed (in older versions SysRq was disabled | 15 | CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE config symbol, which itself defaults |
16 | by default, and you were required to specifically enable it at run-time | 16 | to 1. Here is the list of possible values in /proc/sys/kernel/sysrq: |
17 | but this is not the case any more). Here is the list of possible values | ||
18 | in /proc/sys/kernel/sysrq: | ||
19 | 0 - disable sysrq completely | 17 | 0 - disable sysrq completely |
20 | 1 - enable all functions of sysrq | 18 | 1 - enable all functions of sysrq |
21 | >1 - bitmask of allowed sysrq functions (see below for detailed function | 19 | >1 - bitmask of allowed sysrq functions (see below for detailed function |
22 | description): | 20 | description): |
23 | 2 - enable control of console logging level | 21 | 2 = 0x2 - enable control of console logging level |
24 | 4 - enable control of keyboard (SAK, unraw) | 22 | 4 = 0x4 - enable control of keyboard (SAK, unraw) |
25 | 8 - enable debugging dumps of processes etc. | 23 | 8 = 0x8 - enable debugging dumps of processes etc. |
26 | 16 - enable sync command | 24 | 16 = 0x10 - enable sync command |
27 | 32 - enable remount read-only | 25 | 32 = 0x20 - enable remount read-only |
28 | 64 - enable signalling of processes (term, kill, oom-kill) | 26 | 64 = 0x40 - enable signalling of processes (term, kill, oom-kill) |
29 | 128 - allow reboot/poweroff | 27 | 128 = 0x80 - allow reboot/poweroff |
30 | 256 - allow nicing of all RT tasks | 28 | 256 = 0x100 - allow nicing of all RT tasks |
31 | 29 | ||
32 | You can set the value in the file by the following command: | 30 | You can set the value in the file by the following command: |
33 | echo "number" >/proc/sys/kernel/sysrq | 31 | echo "number" >/proc/sys/kernel/sysrq |
34 | 32 | ||
33 | The number may be written here either as decimal or as hexadecimal | ||
34 | with the 0x prefix. CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE must always be | ||
35 | written in hexadecimal. | ||
36 | |||
35 | Note that the value of /proc/sys/kernel/sysrq influences only the invocation | 37 | Note that the value of /proc/sys/kernel/sysrq influences only the invocation |
36 | via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always | 38 | via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always |
37 | allowed (by a user with admin privileges). | 39 | allowed (by a user with admin privileges). |
diff --git a/Documentation/target/tcm_mod_builder.py b/Documentation/target/tcm_mod_builder.py index 3fe0d812dcec..54d29c1320ed 100755 --- a/Documentation/target/tcm_mod_builder.py +++ b/Documentation/target/tcm_mod_builder.py | |||
@@ -300,7 +300,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): | |||
300 | buf += " int ret;\n\n" | 300 | buf += " int ret;\n\n" |
301 | buf += " if (strstr(name, \"tpgt_\") != name)\n" | 301 | buf += " if (strstr(name, \"tpgt_\") != name)\n" |
302 | buf += " return ERR_PTR(-EINVAL);\n" | 302 | buf += " return ERR_PTR(-EINVAL);\n" |
303 | buf += " if (strict_strtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n" | 303 | buf += " if (kstrtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n" |
304 | buf += " return ERR_PTR(-EINVAL);\n\n" | 304 | buf += " return ERR_PTR(-EINVAL);\n\n" |
305 | buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n" | 305 | buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n" |
306 | buf += " if (!tpg) {\n" | 306 | buf += " if (!tpg) {\n" |
diff --git a/Documentation/thermal/exynos_thermal b/Documentation/thermal/exynos_thermal index 2b46f67b1ccb..9010c4416967 100644 --- a/Documentation/thermal/exynos_thermal +++ b/Documentation/thermal/exynos_thermal | |||
@@ -1,17 +1,17 @@ | |||
1 | Kernel driver exynos4_tmu | 1 | Kernel driver exynos_tmu |
2 | ================= | 2 | ================= |
3 | 3 | ||
4 | Supported chips: | 4 | Supported chips: |
5 | * ARM SAMSUNG EXYNOS4 series of SoC | 5 | * ARM SAMSUNG EXYNOS4, EXYNOS5 series of SoC |
6 | Prefix: 'exynos4-tmu' | ||
7 | Datasheet: Not publicly available | 6 | Datasheet: Not publicly available |
8 | 7 | ||
9 | Authors: Donggeun Kim <dg77.kim@samsung.com> | 8 | Authors: Donggeun Kim <dg77.kim@samsung.com> |
9 | Authors: Amit Daniel <amit.daniel@samsung.com> | ||
10 | 10 | ||
11 | Description | 11 | TMU controller Description: |
12 | ----------- | 12 | --------------------------- |
13 | 13 | ||
14 | This driver allows to read temperature inside SAMSUNG EXYNOS4 series of SoC. | 14 | This driver allows to read temperature inside SAMSUNG EXYNOS4/5 series of SoC. |
15 | 15 | ||
16 | The chip only exposes the measured 8-bit temperature code value | 16 | The chip only exposes the measured 8-bit temperature code value |
17 | through a register. | 17 | through a register. |
@@ -34,9 +34,9 @@ The three equations are: | |||
34 | TI2: Trimming info for 85 degree Celsius (stored at TRIMINFO register) | 34 | TI2: Trimming info for 85 degree Celsius (stored at TRIMINFO register) |
35 | Temperature code measured at 85 degree Celsius which is unchanged | 35 | Temperature code measured at 85 degree Celsius which is unchanged |
36 | 36 | ||
37 | TMU(Thermal Management Unit) in EXYNOS4 generates interrupt | 37 | TMU(Thermal Management Unit) in EXYNOS4/5 generates interrupt |
38 | when temperature exceeds pre-defined levels. | 38 | when temperature exceeds pre-defined levels. |
39 | The maximum number of configurable threshold is four. | 39 | The maximum number of configurable threshold is five. |
40 | The threshold levels are defined as follows: | 40 | The threshold levels are defined as follows: |
41 | Level_0: current temperature > trigger_level_0 + threshold | 41 | Level_0: current temperature > trigger_level_0 + threshold |
42 | Level_1: current temperature > trigger_level_1 + threshold | 42 | Level_1: current temperature > trigger_level_1 + threshold |
@@ -47,6 +47,31 @@ The threshold levels are defined as follows: | |||
47 | through the corresponding registers. | 47 | through the corresponding registers. |
48 | 48 | ||
49 | When an interrupt occurs, this driver notify kernel thermal framework | 49 | When an interrupt occurs, this driver notify kernel thermal framework |
50 | with the function exynos4_report_trigger. | 50 | with the function exynos_report_trigger. |
51 | Although an interrupt condition for level_0 can be set, | 51 | Although an interrupt condition for level_0 can be set, |
52 | it can be used to synchronize the cooling action. | 52 | it can be used to synchronize the cooling action. |
53 | |||
54 | TMU driver description: | ||
55 | ----------------------- | ||
56 | |||
57 | The exynos thermal driver is structured as, | ||
58 | |||
59 | Kernel Core thermal framework | ||
60 | (thermal_core.c, step_wise.c, cpu_cooling.c) | ||
61 | ^ | ||
62 | | | ||
63 | | | ||
64 | TMU configuration data -------> TMU Driver <------> Exynos Core thermal wrapper | ||
65 | (exynos_tmu_data.c) (exynos_tmu.c) (exynos_thermal_common.c) | ||
66 | (exynos_tmu_data.h) (exynos_tmu.h) (exynos_thermal_common.h) | ||
67 | |||
68 | a) TMU configuration data: This consist of TMU register offsets/bitfields | ||
69 | described through structure exynos_tmu_registers. Also several | ||
70 | other platform data (struct exynos_tmu_platform_data) members | ||
71 | are used to configure the TMU. | ||
72 | b) TMU driver: This component initialises the TMU controller and sets different | ||
73 | thresholds. It invokes core thermal implementation with the call | ||
74 | exynos_report_trigger. | ||
75 | c) Exynos Core thermal wrapper: This provides 3 wrapper function to use the | ||
76 | Kernel core thermal framework. They are exynos_unregister_thermal, | ||
77 | exynos_register_thermal and exynos_report_trigger. | ||
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt index a71bd5b90fe8..87519cb379ee 100644 --- a/Documentation/thermal/sysfs-api.txt +++ b/Documentation/thermal/sysfs-api.txt | |||
@@ -134,6 +134,13 @@ temperature) and throttle appropriate devices. | |||
134 | this thermal zone and cdev, for a particular trip point. | 134 | this thermal zone and cdev, for a particular trip point. |
135 | If nth bit is set, then the cdev and thermal zone are bound | 135 | If nth bit is set, then the cdev and thermal zone are bound |
136 | for trip point n. | 136 | for trip point n. |
137 | .limits: This is an array of cooling state limits. Must have exactly | ||
138 | 2 * thermal_zone.number_of_trip_points. It is an array consisting | ||
139 | of tuples <lower-state upper-state> of state limits. Each trip | ||
140 | will be associated with one state limit tuple when binding. | ||
141 | A NULL pointer means <THERMAL_NO_LIMITS THERMAL_NO_LIMITS> | ||
142 | on all trips. These limits are used when binding a cdev to a | ||
143 | trip point. | ||
137 | .match: This call back returns success(0) if the 'tz and cdev' need to | 144 | .match: This call back returns success(0) if the 'tz and cdev' need to |
138 | be bound, as per platform data. | 145 | be bound, as per platform data. |
139 | 1.4.2 struct thermal_zone_params | 146 | 1.4.2 struct thermal_zone_params |
@@ -142,6 +149,11 @@ temperature) and throttle appropriate devices. | |||
142 | This is an optional feature where some platforms can choose not to | 149 | This is an optional feature where some platforms can choose not to |
143 | provide this data. | 150 | provide this data. |
144 | .governor_name: Name of the thermal governor used for this zone | 151 | .governor_name: Name of the thermal governor used for this zone |
152 | .no_hwmon: a boolean to indicate if the thermal to hwmon sysfs interface | ||
153 | is required. when no_hwmon == false, a hwmon sysfs interface | ||
154 | will be created. when no_hwmon == true, nothing will be done. | ||
155 | In case the thermal_zone_params is NULL, the hwmon interface | ||
156 | will be created (for backward compatibility). | ||
145 | .num_tbps: Number of thermal_bind_params entries for this zone | 157 | .num_tbps: Number of thermal_bind_params entries for this zone |
146 | .tbp: thermal_bind_params entries | 158 | .tbp: thermal_bind_params entries |
147 | 159 | ||
diff --git a/Documentation/timers/NO_HZ.txt b/Documentation/timers/NO_HZ.txt index 88697584242b..cca122f25120 100644 --- a/Documentation/timers/NO_HZ.txt +++ b/Documentation/timers/NO_HZ.txt | |||
@@ -24,8 +24,8 @@ There are three main ways of managing scheduling-clock interrupts | |||
24 | workloads, you will normally -not- want this option. | 24 | workloads, you will normally -not- want this option. |
25 | 25 | ||
26 | These three cases are described in the following three sections, followed | 26 | These three cases are described in the following three sections, followed |
27 | by a third section on RCU-specific considerations and a fourth and final | 27 | by a third section on RCU-specific considerations, a fourth section |
28 | section listing known issues. | 28 | discussing testing, and a fifth and final section listing known issues. |
29 | 29 | ||
30 | 30 | ||
31 | NEVER OMIT SCHEDULING-CLOCK TICKS | 31 | NEVER OMIT SCHEDULING-CLOCK TICKS |
@@ -121,14 +121,15 @@ boot parameter specifies the adaptive-ticks CPUs. For example, | |||
121 | "nohz_full=1,6-8" says that CPUs 1, 6, 7, and 8 are to be adaptive-ticks | 121 | "nohz_full=1,6-8" says that CPUs 1, 6, 7, and 8 are to be adaptive-ticks |
122 | CPUs. Note that you are prohibited from marking all of the CPUs as | 122 | CPUs. Note that you are prohibited from marking all of the CPUs as |
123 | adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain | 123 | adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain |
124 | online to handle timekeeping tasks in order to ensure that system calls | 124 | online to handle timekeeping tasks in order to ensure that system |
125 | like gettimeofday() returns accurate values on adaptive-tick CPUs. | 125 | calls like gettimeofday() returns accurate values on adaptive-tick CPUs. |
126 | (This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no | 126 | (This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no running |
127 | running user processes to observe slight drifts in clock rate.) | 127 | user processes to observe slight drifts in clock rate.) Therefore, the |
128 | Therefore, the boot CPU is prohibited from entering adaptive-ticks | 128 | boot CPU is prohibited from entering adaptive-ticks mode. Specifying a |
129 | mode. Specifying a "nohz_full=" mask that includes the boot CPU will | 129 | "nohz_full=" mask that includes the boot CPU will result in a boot-time |
130 | result in a boot-time error message, and the boot CPU will be removed | 130 | error message, and the boot CPU will be removed from the mask. Note that |
131 | from the mask. | 131 | this means that your system must have at least two CPUs in order for |
132 | CONFIG_NO_HZ_FULL=y to do anything for you. | ||
132 | 133 | ||
133 | Alternatively, the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter specifies | 134 | Alternatively, the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter specifies |
134 | that all CPUs other than the boot CPU are adaptive-ticks CPUs. This | 135 | that all CPUs other than the boot CPU are adaptive-ticks CPUs. This |
@@ -232,6 +233,29 @@ scheduler will decide where to run them, which might or might not be | |||
232 | where you want them to run. | 233 | where you want them to run. |
233 | 234 | ||
234 | 235 | ||
236 | TESTING | ||
237 | |||
238 | So you enable all the OS-jitter features described in this document, | ||
239 | but do not see any change in your workload's behavior. Is this because | ||
240 | your workload isn't affected that much by OS jitter, or is it because | ||
241 | something else is in the way? This section helps answer this question | ||
242 | by providing a simple OS-jitter test suite, which is available on branch | ||
243 | master of the following git archive: | ||
244 | |||
245 | git://git.kernel.org/pub/scm/linux/kernel/git/frederic/dynticks-testing.git | ||
246 | |||
247 | Clone this archive and follow the instructions in the README file. | ||
248 | This test procedure will produce a trace that will allow you to evaluate | ||
249 | whether or not you have succeeded in removing OS jitter from your system. | ||
250 | If this trace shows that you have removed OS jitter as much as is | ||
251 | possible, then you can conclude that your workload is not all that | ||
252 | sensitive to OS jitter. | ||
253 | |||
254 | Note: this test requires that your system have at least two CPUs. | ||
255 | We do not currently have a good way to remove OS jitter from single-CPU | ||
256 | systems. | ||
257 | |||
258 | |||
235 | KNOWN ISSUES | 259 | KNOWN ISSUES |
236 | 260 | ||
237 | o Dyntick-idle slows transitions to and from idle slightly. | 261 | o Dyntick-idle slows transitions to and from idle slightly. |
diff --git a/Documentation/tpm/xen-tpmfront.txt b/Documentation/tpm/xen-tpmfront.txt new file mode 100644 index 000000000000..69346de87ff3 --- /dev/null +++ b/Documentation/tpm/xen-tpmfront.txt | |||
@@ -0,0 +1,113 @@ | |||
1 | Virtual TPM interface for Xen | ||
2 | |||
3 | Authors: Matthew Fioravante (JHUAPL), Daniel De Graaf (NSA) | ||
4 | |||
5 | This document describes the virtual Trusted Platform Module (vTPM) subsystem for | ||
6 | Xen. The reader is assumed to have familiarity with building and installing Xen, | ||
7 | Linux, and a basic understanding of the TPM and vTPM concepts. | ||
8 | |||
9 | INTRODUCTION | ||
10 | |||
11 | The goal of this work is to provide a TPM functionality to a virtual guest | ||
12 | operating system (in Xen terms, a DomU). This allows programs to interact with | ||
13 | a TPM in a virtual system the same way they interact with a TPM on the physical | ||
14 | system. Each guest gets its own unique, emulated, software TPM. However, each | ||
15 | of the vTPM's secrets (Keys, NVRAM, etc) are managed by a vTPM Manager domain, | ||
16 | which seals the secrets to the Physical TPM. If the process of creating each of | ||
17 | these domains (manager, vTPM, and guest) is trusted, the vTPM subsystem extends | ||
18 | the chain of trust rooted in the hardware TPM to virtual machines in Xen. Each | ||
19 | major component of vTPM is implemented as a separate domain, providing secure | ||
20 | separation guaranteed by the hypervisor. The vTPM domains are implemented in | ||
21 | mini-os to reduce memory and processor overhead. | ||
22 | |||
23 | This mini-os vTPM subsystem was built on top of the previous vTPM work done by | ||
24 | IBM and Intel corporation. | ||
25 | |||
26 | |||
27 | DESIGN OVERVIEW | ||
28 | --------------- | ||
29 | |||
30 | The architecture of vTPM is described below: | ||
31 | |||
32 | +------------------+ | ||
33 | | Linux DomU | ... | ||
34 | | | ^ | | ||
35 | | v | | | ||
36 | | xen-tpmfront | | ||
37 | +------------------+ | ||
38 | | ^ | ||
39 | v | | ||
40 | +------------------+ | ||
41 | | mini-os/tpmback | | ||
42 | | | ^ | | ||
43 | | v | | | ||
44 | | vtpm-stubdom | ... | ||
45 | | | ^ | | ||
46 | | v | | | ||
47 | | mini-os/tpmfront | | ||
48 | +------------------+ | ||
49 | | ^ | ||
50 | v | | ||
51 | +------------------+ | ||
52 | | mini-os/tpmback | | ||
53 | | | ^ | | ||
54 | | v | | | ||
55 | | vtpmmgr-stubdom | | ||
56 | | | ^ | | ||
57 | | v | | | ||
58 | | mini-os/tpm_tis | | ||
59 | +------------------+ | ||
60 | | ^ | ||
61 | v | | ||
62 | +------------------+ | ||
63 | | Hardware TPM | | ||
64 | +------------------+ | ||
65 | |||
66 | * Linux DomU: The Linux based guest that wants to use a vTPM. There may be | ||
67 | more than one of these. | ||
68 | |||
69 | * xen-tpmfront.ko: Linux kernel virtual TPM frontend driver. This driver | ||
70 | provides vTPM access to a Linux-based DomU. | ||
71 | |||
72 | * mini-os/tpmback: Mini-os TPM backend driver. The Linux frontend driver | ||
73 | connects to this backend driver to facilitate communications | ||
74 | between the Linux DomU and its vTPM. This driver is also | ||
75 | used by vtpmmgr-stubdom to communicate with vtpm-stubdom. | ||
76 | |||
77 | * vtpm-stubdom: A mini-os stub domain that implements a vTPM. There is a | ||
78 | one to one mapping between running vtpm-stubdom instances and | ||
79 | logical vtpms on the system. The vTPM Platform Configuration | ||
80 | Registers (PCRs) are normally all initialized to zero. | ||
81 | |||
82 | * mini-os/tpmfront: Mini-os TPM frontend driver. The vTPM mini-os domain | ||
83 | vtpm-stubdom uses this driver to communicate with | ||
84 | vtpmmgr-stubdom. This driver is also used in mini-os | ||
85 | domains such as pv-grub that talk to the vTPM domain. | ||
86 | |||
87 | * vtpmmgr-stubdom: A mini-os domain that implements the vTPM manager. There is | ||
88 | only one vTPM manager and it should be running during the | ||
89 | entire lifetime of the machine. This domain regulates | ||
90 | access to the physical TPM on the system and secures the | ||
91 | persistent state of each vTPM. | ||
92 | |||
93 | * mini-os/tpm_tis: Mini-os TPM version 1.2 TPM Interface Specification (TIS) | ||
94 | driver. This driver used by vtpmmgr-stubdom to talk directly to | ||
95 | the hardware TPM. Communication is facilitated by mapping | ||
96 | hardware memory pages into vtpmmgr-stubdom. | ||
97 | |||
98 | * Hardware TPM: The physical TPM that is soldered onto the motherboard. | ||
99 | |||
100 | |||
101 | INTEGRATION WITH XEN | ||
102 | -------------------- | ||
103 | |||
104 | Support for the vTPM driver was added in Xen using the libxl toolstack in Xen | ||
105 | 4.3. See the Xen documentation (docs/misc/vtpm.txt) for details on setting up | ||
106 | the vTPM and vTPM Manager stub domains. Once the stub domains are running, a | ||
107 | vTPM device is set up in the same manner as a disk or network device in the | ||
108 | domain's configuration file. | ||
109 | |||
110 | In order to use features such as IMA that require a TPM to be loaded prior to | ||
111 | the initrd, the xen-tpmfront driver must be compiled in to the kernel. If not | ||
112 | using such features, the driver can be compiled as a module and will be loaded | ||
113 | as usual. | ||
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt index b937c6e2163c..bd365988e8d8 100644 --- a/Documentation/trace/ftrace.txt +++ b/Documentation/trace/ftrace.txt | |||
@@ -655,7 +655,11 @@ explains which is which. | |||
655 | read the irq flags variable, an 'X' will always | 655 | read the irq flags variable, an 'X' will always |
656 | be printed here. | 656 | be printed here. |
657 | 657 | ||
658 | need-resched: 'N' task need_resched is set, '.' otherwise. | 658 | need-resched: |
659 | 'N' both TIF_NEED_RESCHED and PREEMPT_NEED_RESCHED is set, | ||
660 | 'n' only TIF_NEED_RESCHED is set, | ||
661 | 'p' only PREEMPT_NEED_RESCHED is set, | ||
662 | '.' otherwise. | ||
659 | 663 | ||
660 | hardirq/softirq: | 664 | hardirq/softirq: |
661 | 'H' - hard irq occurred inside a softirq. | 665 | 'H' - hard irq occurred inside a softirq. |
@@ -735,7 +739,7 @@ Here are the available options: | |||
735 | function as well as the function being traced. | 739 | function as well as the function being traced. |
736 | 740 | ||
737 | print-parent: | 741 | print-parent: |
738 | bash-4000 [01] 1477.606694: simple_strtoul <-strict_strtoul | 742 | bash-4000 [01] 1477.606694: simple_strtoul <-kstrtoul |
739 | 743 | ||
740 | noprint-parent: | 744 | noprint-parent: |
741 | bash-4000 [01] 1477.606694: simple_strtoul | 745 | bash-4000 [01] 1477.606694: simple_strtoul |
@@ -759,7 +763,7 @@ Here are the available options: | |||
759 | latency-format option is enabled. | 763 | latency-format option is enabled. |
760 | 764 | ||
761 | bash 4000 1 0 00000000 00010a95 [58127d26] 1720.415ms \ | 765 | bash 4000 1 0 00000000 00010a95 [58127d26] 1720.415ms \ |
762 | (+0.000ms): simple_strtoul (strict_strtoul) | 766 | (+0.000ms): simple_strtoul (kstrtoul) |
763 | 767 | ||
764 | raw - This will display raw numbers. This option is best for | 768 | raw - This will display raw numbers. This option is best for |
765 | use with user applications that can translate the raw | 769 | use with user applications that can translate the raw |
diff --git a/Documentation/trace/tracepoints.txt b/Documentation/trace/tracepoints.txt index da49437d5aeb..ac4170dd0f24 100644 --- a/Documentation/trace/tracepoints.txt +++ b/Documentation/trace/tracepoints.txt | |||
@@ -40,7 +40,13 @@ Two elements are required for tracepoints : | |||
40 | 40 | ||
41 | In order to use tracepoints, you should include linux/tracepoint.h. | 41 | In order to use tracepoints, you should include linux/tracepoint.h. |
42 | 42 | ||
43 | In include/trace/subsys.h : | 43 | In include/trace/events/subsys.h : |
44 | |||
45 | #undef TRACE_SYSTEM | ||
46 | #define TRACE_SYSTEM subsys | ||
47 | |||
48 | #if !defined(_TRACE_SUBSYS_H) || defined(TRACE_HEADER_MULTI_READ) | ||
49 | #define _TRACE_SUBSYS_H | ||
44 | 50 | ||
45 | #include <linux/tracepoint.h> | 51 | #include <linux/tracepoint.h> |
46 | 52 | ||
@@ -48,10 +54,16 @@ DECLARE_TRACE(subsys_eventname, | |||
48 | TP_PROTO(int firstarg, struct task_struct *p), | 54 | TP_PROTO(int firstarg, struct task_struct *p), |
49 | TP_ARGS(firstarg, p)); | 55 | TP_ARGS(firstarg, p)); |
50 | 56 | ||
57 | #endif /* _TRACE_SUBSYS_H */ | ||
58 | |||
59 | /* This part must be outside protection */ | ||
60 | #include <trace/define_trace.h> | ||
61 | |||
51 | In subsys/file.c (where the tracing statement must be added) : | 62 | In subsys/file.c (where the tracing statement must be added) : |
52 | 63 | ||
53 | #include <trace/subsys.h> | 64 | #include <trace/events/subsys.h> |
54 | 65 | ||
66 | #define CREATE_TRACE_POINTS | ||
55 | DEFINE_TRACE(subsys_eventname); | 67 | DEFINE_TRACE(subsys_eventname); |
56 | 68 | ||
57 | void somefct(void) | 69 | void somefct(void) |
@@ -72,6 +84,9 @@ Where : | |||
72 | - TP_ARGS(firstarg, p) are the parameters names, same as found in the | 84 | - TP_ARGS(firstarg, p) are the parameters names, same as found in the |
73 | prototype. | 85 | prototype. |
74 | 86 | ||
87 | - if you use the header in multiple source files, #define CREATE_TRACE_POINTS | ||
88 | should appear only in one source file. | ||
89 | |||
75 | Connecting a function (probe) to a tracepoint is done by providing a | 90 | Connecting a function (probe) to a tracepoint is done by providing a |
76 | probe (function to call) for the specific tracepoint through | 91 | probe (function to call) for the specific tracepoint through |
77 | register_trace_subsys_eventname(). Removing a probe is done through | 92 | register_trace_subsys_eventname(). Removing a probe is done through |
diff --git a/Documentation/usb/URB.txt b/Documentation/usb/URB.txt index 00d2c644068e..50da0d455444 100644 --- a/Documentation/usb/URB.txt +++ b/Documentation/usb/URB.txt | |||
@@ -195,13 +195,12 @@ by the completion handler. | |||
195 | 195 | ||
196 | The handler is of the following type: | 196 | The handler is of the following type: |
197 | 197 | ||
198 | typedef void (*usb_complete_t)(struct urb *, struct pt_regs *) | 198 | typedef void (*usb_complete_t)(struct urb *) |
199 | 199 | ||
200 | I.e., it gets the URB that caused the completion call, plus the | 200 | I.e., it gets the URB that caused the completion call. In the completion |
201 | register values at the time of the corresponding interrupt (if any). | 201 | handler, you should have a look at urb->status to detect any USB errors. |
202 | In the completion handler, you should have a look at urb->status to | 202 | Since the context parameter is included in the URB, you can pass |
203 | detect any USB errors. Since the context parameter is included in the URB, | 203 | information to the completion handler. |
204 | you can pass information to the completion handler. | ||
205 | 204 | ||
206 | Note that even when an error (or unlink) is reported, data may have been | 205 | Note that even when an error (or unlink) is reported, data may have been |
207 | transferred. That's because USB transfers are packetized; it might take | 206 | transferred. That's because USB transfers are packetized; it might take |
@@ -210,12 +209,12 @@ have transferred successfully before the completion was called. | |||
210 | 209 | ||
211 | 210 | ||
212 | NOTE: ***** WARNING ***** | 211 | NOTE: ***** WARNING ***** |
213 | NEVER SLEEP IN A COMPLETION HANDLER. These are normally called | 212 | NEVER SLEEP IN A COMPLETION HANDLER. These are often called in atomic |
214 | during hardware interrupt processing. If you can, defer substantial | 213 | context. |
215 | work to a tasklet (bottom half) to keep system latencies low. You'll | ||
216 | probably need to use spinlocks to protect data structures you manipulate | ||
217 | in completion handlers. | ||
218 | 214 | ||
215 | In the current kernel, completion handlers run with local interrupts | ||
216 | disabled, but in the future this will be changed, so don't assume that | ||
217 | local IRQs are always disabled inside completion handlers. | ||
219 | 218 | ||
220 | 1.8. How to do isochronous (ISO) transfers? | 219 | 1.8. How to do isochronous (ISO) transfers? |
221 | 220 | ||
diff --git a/Documentation/usb/proc_usb_info.txt b/Documentation/usb/proc_usb_info.txt index c9c3f0f5ad7b..98be91982677 100644 --- a/Documentation/usb/proc_usb_info.txt +++ b/Documentation/usb/proc_usb_info.txt | |||
@@ -54,9 +54,12 @@ it and 002/048 sometime later. | |||
54 | 54 | ||
55 | These files can be read as binary data. The binary data consists | 55 | These files can be read as binary data. The binary data consists |
56 | of first the device descriptor, then the descriptors for each | 56 | of first the device descriptor, then the descriptors for each |
57 | configuration of the device. Multi-byte fields in the device and | 57 | configuration of the device. Multi-byte fields in the device descriptor |
58 | configuration descriptors, but not other descriptors, are converted | 58 | are converted to host endianness by the kernel. The configuration |
59 | to host endianness by the kernel. This information is also shown | 59 | descriptors are in bus endian format! The configuration descriptor |
60 | are wTotalLength bytes apart. If a device returns less configuration | ||
61 | descriptor data than indicated by wTotalLength there will be a hole in | ||
62 | the file for the missing bytes. This information is also shown | ||
60 | in text form by the /proc/bus/usb/devices file, described later. | 63 | in text form by the /proc/bus/usb/devices file, described later. |
61 | 64 | ||
62 | These files may also be used to write user-level drivers for the USB | 65 | These files may also be used to write user-level drivers for the USB |
diff --git a/Documentation/vfio.txt b/Documentation/vfio.txt index d7993dcf8537..b9ca02370d46 100644 --- a/Documentation/vfio.txt +++ b/Documentation/vfio.txt | |||
@@ -167,8 +167,8 @@ group and can access them as follows: | |||
167 | int container, group, device, i; | 167 | int container, group, device, i; |
168 | struct vfio_group_status group_status = | 168 | struct vfio_group_status group_status = |
169 | { .argsz = sizeof(group_status) }; | 169 | { .argsz = sizeof(group_status) }; |
170 | struct vfio_iommu_x86_info iommu_info = { .argsz = sizeof(iommu_info) }; | 170 | struct vfio_iommu_type1_info iommu_info = { .argsz = sizeof(iommu_info) }; |
171 | struct vfio_iommu_x86_dma_map dma_map = { .argsz = sizeof(dma_map) }; | 171 | struct vfio_iommu_type1_dma_map dma_map = { .argsz = sizeof(dma_map) }; |
172 | struct vfio_device_info device_info = { .argsz = sizeof(device_info) }; | 172 | struct vfio_device_info device_info = { .argsz = sizeof(device_info) }; |
173 | 173 | ||
174 | /* Create a new container */ | 174 | /* Create a new container */ |
@@ -193,7 +193,7 @@ group and can access them as follows: | |||
193 | ioctl(group, VFIO_GROUP_SET_CONTAINER, &container); | 193 | ioctl(group, VFIO_GROUP_SET_CONTAINER, &container); |
194 | 194 | ||
195 | /* Enable the IOMMU model we want */ | 195 | /* Enable the IOMMU model we want */ |
196 | ioctl(container, VFIO_SET_IOMMU, VFIO_TYPE1_IOMMU) | 196 | ioctl(container, VFIO_SET_IOMMU, VFIO_TYPE1_IOMMU); |
197 | 197 | ||
198 | /* Get addition IOMMU info */ | 198 | /* Get addition IOMMU info */ |
199 | ioctl(container, VFIO_IOMMU_GET_INFO, &iommu_info); | 199 | ioctl(container, VFIO_IOMMU_GET_INFO, &iommu_info); |
@@ -229,7 +229,7 @@ group and can access them as follows: | |||
229 | 229 | ||
230 | irq.index = i; | 230 | irq.index = i; |
231 | 231 | ||
232 | ioctl(device, VFIO_DEVICE_GET_IRQ_INFO, ®); | 232 | ioctl(device, VFIO_DEVICE_GET_IRQ_INFO, &irq); |
233 | 233 | ||
234 | /* Setup IRQs... eventfds, VFIO_DEVICE_SET_IRQS */ | 234 | /* Setup IRQs... eventfds, VFIO_DEVICE_SET_IRQS */ |
235 | } | 235 | } |
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt index 676f87366025..06cf3ac83631 100644 --- a/Documentation/video4linux/v4l2-controls.txt +++ b/Documentation/video4linux/v4l2-controls.txt | |||
@@ -124,26 +124,27 @@ You add non-menu controls by calling v4l2_ctrl_new_std: | |||
124 | const struct v4l2_ctrl_ops *ops, | 124 | const struct v4l2_ctrl_ops *ops, |
125 | u32 id, s32 min, s32 max, u32 step, s32 def); | 125 | u32 id, s32 min, s32 max, u32 step, s32 def); |
126 | 126 | ||
127 | Menu controls are added by calling v4l2_ctrl_new_std_menu: | 127 | Menu and integer menu controls are added by calling v4l2_ctrl_new_std_menu: |
128 | 128 | ||
129 | struct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl, | 129 | struct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl, |
130 | const struct v4l2_ctrl_ops *ops, | 130 | const struct v4l2_ctrl_ops *ops, |
131 | u32 id, s32 max, s32 skip_mask, s32 def); | 131 | u32 id, s32 max, s32 skip_mask, s32 def); |
132 | 132 | ||
133 | Or alternatively for integer menu controls, by calling v4l2_ctrl_new_int_menu: | 133 | Menu controls with a driver specific menu are added by calling |
134 | v4l2_ctrl_new_std_menu_items: | ||
135 | |||
136 | struct v4l2_ctrl *v4l2_ctrl_new_std_menu_items( | ||
137 | struct v4l2_ctrl_handler *hdl, | ||
138 | const struct v4l2_ctrl_ops *ops, u32 id, s32 max, | ||
139 | s32 skip_mask, s32 def, const char * const *qmenu); | ||
140 | |||
141 | Integer menu controls with a driver specific menu can be added by calling | ||
142 | v4l2_ctrl_new_int_menu: | ||
134 | 143 | ||
135 | struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl, | 144 | struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl, |
136 | const struct v4l2_ctrl_ops *ops, | 145 | const struct v4l2_ctrl_ops *ops, |
137 | u32 id, s32 max, s32 def, const s64 *qmenu_int); | 146 | u32 id, s32 max, s32 def, const s64 *qmenu_int); |
138 | 147 | ||
139 | Standard menu controls with a driver specific menu are added by calling | ||
140 | v4l2_ctrl_new_std_menu_items: | ||
141 | |||
142 | struct v4l2_ctrl *v4l2_ctrl_new_std_menu_items( | ||
143 | struct v4l2_ctrl_handler *hdl, | ||
144 | const struct v4l2_ctrl_ops *ops, u32 id, s32 max, | ||
145 | s32 skip_mask, s32 def, const char * const *qmenu); | ||
146 | |||
147 | These functions are typically called right after the v4l2_ctrl_handler_init: | 148 | These functions are typically called right after the v4l2_ctrl_handler_init: |
148 | 149 | ||
149 | static const s64 exp_bias_qmenu[] = { | 150 | static const s64 exp_bias_qmenu[] = { |
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index ef925eaa1460..858aecf21db2 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -53,7 +53,7 @@ incompatible change are allowed. However, there is an extension | |||
53 | facility that allows backward-compatible extensions to the API to be | 53 | facility that allows backward-compatible extensions to the API to be |
54 | queried and used. | 54 | queried and used. |
55 | 55 | ||
56 | The extension mechanism is not based on on the Linux version number. | 56 | The extension mechanism is not based on the Linux version number. |
57 | Instead, kvm defines extension identifiers and a facility to query | 57 | Instead, kvm defines extension identifiers and a facility to query |
58 | whether a particular extension identifier is available. If it is, a | 58 | whether a particular extension identifier is available. If it is, a |
59 | set of ioctls is available for application use. | 59 | set of ioctls is available for application use. |
diff --git a/Documentation/virtual/kvm/cpuid.txt b/Documentation/virtual/kvm/cpuid.txt index 83afe65d4966..22ff659bc0fb 100644 --- a/Documentation/virtual/kvm/cpuid.txt +++ b/Documentation/virtual/kvm/cpuid.txt | |||
@@ -43,6 +43,10 @@ KVM_FEATURE_CLOCKSOURCE2 || 3 || kvmclock available at msrs | |||
43 | KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by | 43 | KVM_FEATURE_ASYNC_PF || 4 || async pf can be enabled by |
44 | || || writing to msr 0x4b564d02 | 44 | || || writing to msr 0x4b564d02 |
45 | ------------------------------------------------------------------------------ | 45 | ------------------------------------------------------------------------------ |
46 | KVM_FEATURE_PV_UNHALT || 7 || guest checks this feature bit | ||
47 | || || before enabling paravirtualized | ||
48 | || || spinlock support. | ||
49 | ------------------------------------------------------------------------------ | ||
46 | KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side | 50 | KVM_FEATURE_CLOCKSOURCE_STABLE_BIT || 24 || host will warn if no guest-side |
47 | || || per-cpu warps are expected in | 51 | || || per-cpu warps are expected in |
48 | || || kvmclock. | 52 | || || kvmclock. |
diff --git a/Documentation/virtual/kvm/hypercalls.txt b/Documentation/virtual/kvm/hypercalls.txt index ea113b5d87a4..022198e389d7 100644 --- a/Documentation/virtual/kvm/hypercalls.txt +++ b/Documentation/virtual/kvm/hypercalls.txt | |||
@@ -64,3 +64,17 @@ Purpose: To enable communication between the hypervisor and guest there is a | |||
64 | shared page that contains parts of supervisor visible register state. | 64 | shared page that contains parts of supervisor visible register state. |
65 | The guest can map this shared page to access its supervisor register through | 65 | The guest can map this shared page to access its supervisor register through |
66 | memory using this hypercall. | 66 | memory using this hypercall. |
67 | |||
68 | 5. KVM_HC_KICK_CPU | ||
69 | ------------------------ | ||
70 | Architecture: x86 | ||
71 | Status: active | ||
72 | Purpose: Hypercall used to wakeup a vcpu from HLT state | ||
73 | Usage example : A vcpu of a paravirtualized guest that is busywaiting in guest | ||
74 | kernel mode for an event to occur (ex: a spinlock to become available) can | ||
75 | execute HLT instruction once it has busy-waited for more than a threshold | ||
76 | time-interval. Execution of HLT instruction would cause the hypervisor to put | ||
77 | the vcpu to sleep until occurence of an appropriate event. Another vcpu of the | ||
78 | same guest can wakeup the sleeping vcpu by issuing KVM_HC_KICK_CPU hypercall, | ||
79 | specifying APIC ID (a1) of the vcpu to be woken up. An additional argument (a0) | ||
80 | is used in the hypercall for future use. | ||
diff --git a/Documentation/vm/hugetlbpage.txt b/Documentation/vm/hugetlbpage.txt index 4ac359b7aa17..bdd4bb97fff7 100644 --- a/Documentation/vm/hugetlbpage.txt +++ b/Documentation/vm/hugetlbpage.txt | |||
@@ -165,6 +165,7 @@ which function as described above for the default huge page-sized case. | |||
165 | 165 | ||
166 | 166 | ||
167 | Interaction of Task Memory Policy with Huge Page Allocation/Freeing | 167 | Interaction of Task Memory Policy with Huge Page Allocation/Freeing |
168 | =================================================================== | ||
168 | 169 | ||
169 | Whether huge pages are allocated and freed via the /proc interface or | 170 | Whether huge pages are allocated and freed via the /proc interface or |
170 | the /sysfs interface using the nr_hugepages_mempolicy attribute, the NUMA | 171 | the /sysfs interface using the nr_hugepages_mempolicy attribute, the NUMA |
@@ -229,6 +230,7 @@ resulting effect on persistent huge page allocation is as follows: | |||
229 | of huge pages over all on-lines nodes with memory. | 230 | of huge pages over all on-lines nodes with memory. |
230 | 231 | ||
231 | Per Node Hugepages Attributes | 232 | Per Node Hugepages Attributes |
233 | ============================= | ||
232 | 234 | ||
233 | A subset of the contents of the root huge page control directory in sysfs, | 235 | A subset of the contents of the root huge page control directory in sysfs, |
234 | described above, will be replicated under each the system device of each | 236 | described above, will be replicated under each the system device of each |
@@ -258,6 +260,7 @@ applied, from which node the huge page allocation will be attempted. | |||
258 | 260 | ||
259 | 261 | ||
260 | Using Huge Pages | 262 | Using Huge Pages |
263 | ================ | ||
261 | 264 | ||
262 | If the user applications are going to request huge pages using mmap system | 265 | If the user applications are going to request huge pages using mmap system |
263 | call, then it is required that system administrator mount a file system of | 266 | call, then it is required that system administrator mount a file system of |
@@ -296,20 +299,16 @@ calls, though the mount of filesystem will be required for using mmap calls | |||
296 | without MAP_HUGETLB. For an example of how to use mmap with MAP_HUGETLB see | 299 | without MAP_HUGETLB. For an example of how to use mmap with MAP_HUGETLB see |
297 | map_hugetlb.c. | 300 | map_hugetlb.c. |
298 | 301 | ||
299 | ******************************************************************* | 302 | Examples |
303 | ======== | ||
300 | 304 | ||
301 | /* | 305 | 1) map_hugetlb: see tools/testing/selftests/vm/map_hugetlb.c |
302 | * map_hugetlb: see tools/testing/selftests/vm/map_hugetlb.c | ||
303 | */ | ||
304 | 306 | ||
305 | ******************************************************************* | 307 | 2) hugepage-shm: see tools/testing/selftests/vm/hugepage-shm.c |
306 | 308 | ||
307 | /* | 309 | 3) hugepage-mmap: see tools/testing/selftests/vm/hugepage-mmap.c |
308 | * hugepage-shm: see tools/testing/selftests/vm/hugepage-shm.c | ||
309 | */ | ||
310 | 310 | ||
311 | ******************************************************************* | 311 | 4) The libhugetlbfs (http://libhugetlbfs.sourceforge.net) library provides a |
312 | 312 | wide range of userspace tools to help with huge page usability, environment | |
313 | /* | 313 | setup, and control. Furthermore it provides useful test cases that should be |
314 | * hugepage-mmap: see tools/testing/selftests/vm/hugepage-mmap.c | 314 | used when modifying code to ensure no regressions are introduced. |
315 | */ | ||
diff --git a/Documentation/vm/soft-dirty.txt b/Documentation/vm/soft-dirty.txt index 9a12a5956bc0..55684d11a1e8 100644 --- a/Documentation/vm/soft-dirty.txt +++ b/Documentation/vm/soft-dirty.txt | |||
@@ -28,6 +28,13 @@ This is so, since the pages are still mapped to physical memory, and thus all | |||
28 | the kernel does is finds this fact out and puts both writable and soft-dirty | 28 | the kernel does is finds this fact out and puts both writable and soft-dirty |
29 | bits on the PTE. | 29 | bits on the PTE. |
30 | 30 | ||
31 | While in most cases tracking memory changes by #PF-s is more than enough | ||
32 | there is still a scenario when we can lose soft dirty bits -- a task | ||
33 | unmaps a previously mapped memory region and then maps a new one at exactly | ||
34 | the same place. When unmap is called, the kernel internally clears PTE values | ||
35 | including soft dirty bits. To notify user space application about such | ||
36 | memory region renewal the kernel always marks new memory regions (and | ||
37 | expanded regions) as soft dirty. | ||
31 | 38 | ||
32 | This feature is actively used by the checkpoint-restore project. You | 39 | This feature is actively used by the checkpoint-restore project. You |
33 | can find more details about it on http://criu.org | 40 | can find more details about it on http://criu.org |
diff --git a/Documentation/workqueue.txt b/Documentation/workqueue.txt index a6ab4b62d926..f81a65b54c29 100644 --- a/Documentation/workqueue.txt +++ b/Documentation/workqueue.txt | |||
@@ -85,32 +85,31 @@ workqueue. | |||
85 | Special purpose threads, called worker threads, execute the functions | 85 | Special purpose threads, called worker threads, execute the functions |
86 | off of the queue, one after the other. If no work is queued, the | 86 | off of the queue, one after the other. If no work is queued, the |
87 | worker threads become idle. These worker threads are managed in so | 87 | worker threads become idle. These worker threads are managed in so |
88 | called thread-pools. | 88 | called worker-pools. |
89 | 89 | ||
90 | The cmwq design differentiates between the user-facing workqueues that | 90 | The cmwq design differentiates between the user-facing workqueues that |
91 | subsystems and drivers queue work items on and the backend mechanism | 91 | subsystems and drivers queue work items on and the backend mechanism |
92 | which manages thread-pools and processes the queued work items. | 92 | which manages worker-pools and processes the queued work items. |
93 | 93 | ||
94 | The backend is called gcwq. There is one gcwq for each possible CPU | 94 | There are two worker-pools, one for normal work items and the other |
95 | and one gcwq to serve work items queued on unbound workqueues. Each | 95 | for high priority ones, for each possible CPU and some extra |
96 | gcwq has two thread-pools - one for normal work items and the other | 96 | worker-pools to serve work items queued on unbound workqueues - the |
97 | for high priority ones. | 97 | number of these backing pools is dynamic. |
98 | 98 | ||
99 | Subsystems and drivers can create and queue work items through special | 99 | Subsystems and drivers can create and queue work items through special |
100 | workqueue API functions as they see fit. They can influence some | 100 | workqueue API functions as they see fit. They can influence some |
101 | aspects of the way the work items are executed by setting flags on the | 101 | aspects of the way the work items are executed by setting flags on the |
102 | workqueue they are putting the work item on. These flags include | 102 | workqueue they are putting the work item on. These flags include |
103 | things like CPU locality, reentrancy, concurrency limits, priority and | 103 | things like CPU locality, concurrency limits, priority and more. To |
104 | more. To get a detailed overview refer to the API description of | 104 | get a detailed overview refer to the API description of |
105 | alloc_workqueue() below. | 105 | alloc_workqueue() below. |
106 | 106 | ||
107 | When a work item is queued to a workqueue, the target gcwq and | 107 | When a work item is queued to a workqueue, the target worker-pool is |
108 | thread-pool is determined according to the queue parameters and | 108 | determined according to the queue parameters and workqueue attributes |
109 | workqueue attributes and appended on the shared worklist of the | 109 | and appended on the shared worklist of the worker-pool. For example, |
110 | thread-pool. For example, unless specifically overridden, a work item | 110 | unless specifically overridden, a work item of a bound workqueue will |
111 | of a bound workqueue will be queued on the worklist of either normal | 111 | be queued on the worklist of either normal or highpri worker-pool that |
112 | or highpri thread-pool of the gcwq that is associated to the CPU the | 112 | is associated to the CPU the issuer is running on. |
113 | issuer is running on. | ||
114 | 113 | ||
115 | For any worker pool implementation, managing the concurrency level | 114 | For any worker pool implementation, managing the concurrency level |
116 | (how many execution contexts are active) is an important issue. cmwq | 115 | (how many execution contexts are active) is an important issue. cmwq |
@@ -118,14 +117,14 @@ tries to keep the concurrency at a minimal but sufficient level. | |||
118 | Minimal to save resources and sufficient in that the system is used at | 117 | Minimal to save resources and sufficient in that the system is used at |
119 | its full capacity. | 118 | its full capacity. |
120 | 119 | ||
121 | Each thread-pool bound to an actual CPU implements concurrency | 120 | Each worker-pool bound to an actual CPU implements concurrency |
122 | management by hooking into the scheduler. The thread-pool is notified | 121 | management by hooking into the scheduler. The worker-pool is notified |
123 | whenever an active worker wakes up or sleeps and keeps track of the | 122 | whenever an active worker wakes up or sleeps and keeps track of the |
124 | number of the currently runnable workers. Generally, work items are | 123 | number of the currently runnable workers. Generally, work items are |
125 | not expected to hog a CPU and consume many cycles. That means | 124 | not expected to hog a CPU and consume many cycles. That means |
126 | maintaining just enough concurrency to prevent work processing from | 125 | maintaining just enough concurrency to prevent work processing from |
127 | stalling should be optimal. As long as there are one or more runnable | 126 | stalling should be optimal. As long as there are one or more runnable |
128 | workers on the CPU, the thread-pool doesn't start execution of a new | 127 | workers on the CPU, the worker-pool doesn't start execution of a new |
129 | work, but, when the last running worker goes to sleep, it immediately | 128 | work, but, when the last running worker goes to sleep, it immediately |
130 | schedules a new worker so that the CPU doesn't sit idle while there | 129 | schedules a new worker so that the CPU doesn't sit idle while there |
131 | are pending work items. This allows using a minimal number of workers | 130 | are pending work items. This allows using a minimal number of workers |
@@ -135,19 +134,20 @@ Keeping idle workers around doesn't cost other than the memory space | |||
135 | for kthreads, so cmwq holds onto idle ones for a while before killing | 134 | for kthreads, so cmwq holds onto idle ones for a while before killing |
136 | them. | 135 | them. |
137 | 136 | ||
138 | For an unbound wq, the above concurrency management doesn't apply and | 137 | For unbound workqueues, the number of backing pools is dynamic. |
139 | the thread-pools for the pseudo unbound CPU try to start executing all | 138 | Unbound workqueue can be assigned custom attributes using |
140 | work items as soon as possible. The responsibility of regulating | 139 | apply_workqueue_attrs() and workqueue will automatically create |
141 | concurrency level is on the users. There is also a flag to mark a | 140 | backing worker pools matching the attributes. The responsibility of |
142 | bound wq to ignore the concurrency management. Please refer to the | 141 | regulating concurrency level is on the users. There is also a flag to |
143 | API section for details. | 142 | mark a bound wq to ignore the concurrency management. Please refer to |
143 | the API section for details. | ||
144 | 144 | ||
145 | Forward progress guarantee relies on that workers can be created when | 145 | Forward progress guarantee relies on that workers can be created when |
146 | more execution contexts are necessary, which in turn is guaranteed | 146 | more execution contexts are necessary, which in turn is guaranteed |
147 | through the use of rescue workers. All work items which might be used | 147 | through the use of rescue workers. All work items which might be used |
148 | on code paths that handle memory reclaim are required to be queued on | 148 | on code paths that handle memory reclaim are required to be queued on |
149 | wq's that have a rescue-worker reserved for execution under memory | 149 | wq's that have a rescue-worker reserved for execution under memory |
150 | pressure. Else it is possible that the thread-pool deadlocks waiting | 150 | pressure. Else it is possible that the worker-pool deadlocks waiting |
151 | for execution contexts to free up. | 151 | for execution contexts to free up. |
152 | 152 | ||
153 | 153 | ||
@@ -166,25 +166,15 @@ resources, scheduled and executed. | |||
166 | 166 | ||
167 | @flags: | 167 | @flags: |
168 | 168 | ||
169 | WQ_NON_REENTRANT | ||
170 | |||
171 | By default, a wq guarantees non-reentrance only on the same | ||
172 | CPU. A work item may not be executed concurrently on the same | ||
173 | CPU by multiple workers but is allowed to be executed | ||
174 | concurrently on multiple CPUs. This flag makes sure | ||
175 | non-reentrance is enforced across all CPUs. Work items queued | ||
176 | to a non-reentrant wq are guaranteed to be executed by at most | ||
177 | one worker system-wide at any given time. | ||
178 | |||
179 | WQ_UNBOUND | 169 | WQ_UNBOUND |
180 | 170 | ||
181 | Work items queued to an unbound wq are served by a special | 171 | Work items queued to an unbound wq are served by the special |
182 | gcwq which hosts workers which are not bound to any specific | 172 | woker-pools which host workers which are not bound to any |
183 | CPU. This makes the wq behave as a simple execution context | 173 | specific CPU. This makes the wq behave as a simple execution |
184 | provider without concurrency management. The unbound gcwq | 174 | context provider without concurrency management. The unbound |
185 | tries to start execution of work items as soon as possible. | 175 | worker-pools try to start execution of work items as soon as |
186 | Unbound wq sacrifices locality but is useful for the following | 176 | possible. Unbound wq sacrifices locality but is useful for |
187 | cases. | 177 | the following cases. |
188 | 178 | ||
189 | * Wide fluctuation in the concurrency level requirement is | 179 | * Wide fluctuation in the concurrency level requirement is |
190 | expected and using bound wq may end up creating large number | 180 | expected and using bound wq may end up creating large number |
@@ -209,10 +199,10 @@ resources, scheduled and executed. | |||
209 | WQ_HIGHPRI | 199 | WQ_HIGHPRI |
210 | 200 | ||
211 | Work items of a highpri wq are queued to the highpri | 201 | Work items of a highpri wq are queued to the highpri |
212 | thread-pool of the target gcwq. Highpri thread-pools are | 202 | worker-pool of the target cpu. Highpri worker-pools are |
213 | served by worker threads with elevated nice level. | 203 | served by worker threads with elevated nice level. |
214 | 204 | ||
215 | Note that normal and highpri thread-pools don't interact with | 205 | Note that normal and highpri worker-pools don't interact with |
216 | each other. Each maintain its separate pool of workers and | 206 | each other. Each maintain its separate pool of workers and |
217 | implements concurrency management among its workers. | 207 | implements concurrency management among its workers. |
218 | 208 | ||
@@ -221,7 +211,7 @@ resources, scheduled and executed. | |||
221 | Work items of a CPU intensive wq do not contribute to the | 211 | Work items of a CPU intensive wq do not contribute to the |
222 | concurrency level. In other words, runnable CPU intensive | 212 | concurrency level. In other words, runnable CPU intensive |
223 | work items will not prevent other work items in the same | 213 | work items will not prevent other work items in the same |
224 | thread-pool from starting execution. This is useful for bound | 214 | worker-pool from starting execution. This is useful for bound |
225 | work items which are expected to hog CPU cycles so that their | 215 | work items which are expected to hog CPU cycles so that their |
226 | execution is regulated by the system scheduler. | 216 | execution is regulated by the system scheduler. |
227 | 217 | ||
@@ -233,6 +223,10 @@ resources, scheduled and executed. | |||
233 | 223 | ||
234 | This flag is meaningless for unbound wq. | 224 | This flag is meaningless for unbound wq. |
235 | 225 | ||
226 | Note that the flag WQ_NON_REENTRANT no longer exists as all workqueues | ||
227 | are now non-reentrant - any work item is guaranteed to be executed by | ||
228 | at most one worker system-wide at any given time. | ||
229 | |||
236 | @max_active: | 230 | @max_active: |
237 | 231 | ||
238 | @max_active determines the maximum number of execution contexts per | 232 | @max_active determines the maximum number of execution contexts per |
@@ -254,9 +248,9 @@ recommended. | |||
254 | 248 | ||
255 | Some users depend on the strict execution ordering of ST wq. The | 249 | Some users depend on the strict execution ordering of ST wq. The |
256 | combination of @max_active of 1 and WQ_UNBOUND is used to achieve this | 250 | combination of @max_active of 1 and WQ_UNBOUND is used to achieve this |
257 | behavior. Work items on such wq are always queued to the unbound gcwq | 251 | behavior. Work items on such wq are always queued to the unbound |
258 | and only one work item can be active at any given time thus achieving | 252 | worker-pools and only one work item can be active at any given time thus |
259 | the same ordering property as ST wq. | 253 | achieving the same ordering property as ST wq. |
260 | 254 | ||
261 | 255 | ||
262 | 5. Example Execution Scenarios | 256 | 5. Example Execution Scenarios |
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt index fc66d42422ee..f4f268c2b826 100644 --- a/Documentation/x86/boot.txt +++ b/Documentation/x86/boot.txt | |||
@@ -58,7 +58,7 @@ Protocol 2.11: (Kernel 3.6) Added a field for offset of EFI handover | |||
58 | protocol entry point. | 58 | protocol entry point. |
59 | 59 | ||
60 | Protocol 2.12: (Kernel 3.8) Added the xloadflags field and extension fields | 60 | Protocol 2.12: (Kernel 3.8) Added the xloadflags field and extension fields |
61 | to struct boot_params for for loading bzImage and ramdisk | 61 | to struct boot_params for loading bzImage and ramdisk |
62 | above 4G in 64bit. | 62 | above 4G in 64bit. |
63 | 63 | ||
64 | **** MEMORY LAYOUT | 64 | **** MEMORY LAYOUT |
diff --git a/Documentation/x86/x86_64/boot-options.txt b/Documentation/x86/x86_64/boot-options.txt index e9e8ddbbf376..1228b22e142b 100644 --- a/Documentation/x86/x86_64/boot-options.txt +++ b/Documentation/x86/x86_64/boot-options.txt | |||
@@ -176,6 +176,11 @@ ACPI | |||
176 | 176 | ||
177 | acpi=noirq Don't route interrupts | 177 | acpi=noirq Don't route interrupts |
178 | 178 | ||
179 | acpi=nocmcff Disable firmware first mode for corrected errors. This | ||
180 | disables parsing the HEST CMC error source to check if | ||
181 | firmware has set the FF flag. This may result in | ||
182 | duplicate corrected error reports. | ||
183 | |||
179 | PCI | 184 | PCI |
180 | 185 | ||
181 | pci=off Don't use PCI | 186 | pci=off Don't use PCI |
diff --git a/Documentation/zh_CN/SubmittingPatches b/Documentation/zh_CN/SubmittingPatches index 0f4385a62a49..be0bd4725062 100644 --- a/Documentation/zh_CN/SubmittingPatches +++ b/Documentation/zh_CN/SubmittingPatches | |||
@@ -146,7 +146,7 @@ Majordomo lists of VGER.KERNEL.ORG at: | |||
146 | <http://vger.kernel.org/vger-lists.html> | 146 | <http://vger.kernel.org/vger-lists.html> |
147 | 147 | ||
148 | 如果改动影响了用户空间和内核之间的接口,请给 MAN-PAGES 的维护者(列在 | 148 | 如果改动影响了用户空间和内核之间的接口,请给 MAN-PAGES 的维护者(列在 |
149 | MAITAINERS 文件里的)发送一个手册页(man-pages)补丁,或者至少通知一下改 | 149 | MAINTAINERS 文件里的)发送一个手册页(man-pages)补丁,或者至少通知一下改 |
150 | 变,让一些信息有途径进入手册页。 | 150 | 变,让一些信息有途径进入手册页。 |
151 | 151 | ||
152 | 即使在第四步的时候,维护者没有作出回应,也要确认在修改他们的代码的时候 | 152 | 即使在第四步的时候,维护者没有作出回应,也要确认在修改他们的代码的时候 |