diff options
Diffstat (limited to 'Documentation')
315 files changed, 8920 insertions, 1657 deletions
diff --git a/Documentation/ABI/stable/sysfs-bus-usb b/Documentation/ABI/stable/sysfs-bus-usb index a6b685724740..e2bc700a6f9c 100644 --- a/Documentation/ABI/stable/sysfs-bus-usb +++ b/Documentation/ABI/stable/sysfs-bus-usb | |||
@@ -3,13 +3,13 @@ Date: May 2007 | |||
3 | KernelVersion: 2.6.23 | 3 | KernelVersion: 2.6.23 |
4 | Contact: Alan Stern <stern@rowland.harvard.edu> | 4 | Contact: Alan Stern <stern@rowland.harvard.edu> |
5 | Description: | 5 | Description: |
6 | If CONFIG_USB_PERSIST is set, then each USB device directory | 6 | USB device directories can contain a file named power/persist. |
7 | will contain a file named power/persist. The file holds a | 7 | The file holds a boolean value (0 or 1) indicating whether or |
8 | boolean value (0 or 1) indicating whether or not the | 8 | not the "USB-Persist" facility is enabled for the device. For |
9 | "USB-Persist" facility is enabled for the device. Since the | 9 | hubs this facility is always enabled and their device |
10 | facility is inherently dangerous, it is disabled by default | 10 | directories will not contain this file. |
11 | for all devices except hubs. For more information, see | 11 | |
12 | Documentation/usb/persist.txt. | 12 | For more information, see Documentation/usb/persist.txt. |
13 | 13 | ||
14 | What: /sys/bus/usb/devices/.../power/autosuspend | 14 | What: /sys/bus/usb/devices/.../power/autosuspend |
15 | Date: March 2007 | 15 | Date: March 2007 |
diff --git a/Documentation/ABI/testing/ima_policy b/Documentation/ABI/testing/ima_policy index 4c3efe434806..d0d0c578324c 100644 --- a/Documentation/ABI/testing/ima_policy +++ b/Documentation/ABI/testing/ima_policy | |||
@@ -26,6 +26,7 @@ Description: | |||
26 | option: [[appraise_type=]] [permit_directio] | 26 | option: [[appraise_type=]] [permit_directio] |
27 | 27 | ||
28 | base: func:= [BPRM_CHECK][MMAP_CHECK][FILE_CHECK][MODULE_CHECK] | 28 | base: func:= [BPRM_CHECK][MMAP_CHECK][FILE_CHECK][MODULE_CHECK] |
29 | [FIRMWARE_CHECK] | ||
29 | mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC] | 30 | mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC] |
30 | fsmagic:= hex value | 31 | fsmagic:= hex value |
31 | fsuuid:= file system UUID (e.g 8bcbe394-4f13-4144-be8e-5aa9ea2ce2f6) | 32 | fsuuid:= file system UUID (e.g 8bcbe394-4f13-4144-be8e-5aa9ea2ce2f6) |
@@ -57,7 +58,8 @@ Description: | |||
57 | measure func=BPRM_CHECK | 58 | measure func=BPRM_CHECK |
58 | measure func=FILE_MMAP mask=MAY_EXEC | 59 | measure func=FILE_MMAP mask=MAY_EXEC |
59 | measure func=FILE_CHECK mask=MAY_READ uid=0 | 60 | measure func=FILE_CHECK mask=MAY_READ uid=0 |
60 | measure func=MODULE_CHECK uid=0 | 61 | measure func=MODULE_CHECK |
62 | measure func=FIRMWARE_CHECK | ||
61 | appraise fowner=0 | 63 | appraise fowner=0 |
62 | 64 | ||
63 | The default policy measures all executables in bprm_check, | 65 | The default policy measures all executables in bprm_check, |
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index a9757dcf2e81..d760b0224ef7 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio | |||
@@ -260,6 +260,10 @@ What: /sys/bus/iio/devices/iio:deviceX/in_magn_scale | |||
260 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale | 260 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_x_scale |
261 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale | 261 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_y_scale |
262 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_scale | 262 | What: /sys/bus/iio/devices/iio:deviceX/in_magn_z_scale |
263 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_magnetic_scale | ||
264 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_scale | ||
265 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_magnetic_tilt_comp_scale | ||
266 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_tilt_comp_scale | ||
263 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale | 267 | What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_scale |
264 | What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale | 268 | What: /sys/bus/iio/devices/iio:deviceX/in_pressure_scale |
265 | KernelVersion: 2.6.35 | 269 | KernelVersion: 2.6.35 |
@@ -447,6 +451,14 @@ What: /sys/.../iio:deviceX/events/in_magn_y_thresh_rising_en | |||
447 | What: /sys/.../iio:deviceX/events/in_magn_y_thresh_falling_en | 451 | What: /sys/.../iio:deviceX/events/in_magn_y_thresh_falling_en |
448 | What: /sys/.../iio:deviceX/events/in_magn_z_thresh_rising_en | 452 | What: /sys/.../iio:deviceX/events/in_magn_z_thresh_rising_en |
449 | What: /sys/.../iio:deviceX/events/in_magn_z_thresh_falling_en | 453 | What: /sys/.../iio:deviceX/events/in_magn_z_thresh_falling_en |
454 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_thresh_rising_en | ||
455 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_thresh_falling_en | ||
456 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_thresh_rising_en | ||
457 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_thresh_falling_en | ||
458 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_tilt_comp_thresh_rising_en | ||
459 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_tilt_comp_thresh_falling_en | ||
460 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_tilt_comp_thresh_rising_en | ||
461 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_tilt_comp_thresh_falling_en | ||
450 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_rising_en | 462 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_rising_en |
451 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_falling_en | 463 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_thresh_falling_en |
452 | What: /sys/.../iio:deviceX/events/in_voltageY_thresh_rising_en | 464 | What: /sys/.../iio:deviceX/events/in_voltageY_thresh_rising_en |
@@ -492,6 +504,14 @@ What: /sys/.../iio:deviceX/events/in_magn_y_roc_rising_en | |||
492 | What: /sys/.../iio:deviceX/events/in_magn_y_roc_falling_en | 504 | What: /sys/.../iio:deviceX/events/in_magn_y_roc_falling_en |
493 | What: /sys/.../iio:deviceX/events/in_magn_z_roc_rising_en | 505 | What: /sys/.../iio:deviceX/events/in_magn_z_roc_rising_en |
494 | What: /sys/.../iio:deviceX/events/in_magn_z_roc_falling_en | 506 | What: /sys/.../iio:deviceX/events/in_magn_z_roc_falling_en |
507 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_roc_rising_en | ||
508 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_roc_falling_en | ||
509 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_roc_rising_en | ||
510 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_roc_falling_en | ||
511 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_tilt_comp_roc_rising_en | ||
512 | What: /sys/.../iio:deviceX/events/in_rot_from_north_magnetic_tilt_comp_roc_falling_en | ||
513 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_tilt_comp_roc_rising_en | ||
514 | What: /sys/.../iio:deviceX/events/in_rot_from_north_true_tilt_comp_roc_falling_en | ||
495 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_rising_en | 515 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_rising_en |
496 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_falling_en | 516 | What: /sys/.../iio:deviceX/events/in_voltageY_supply_roc_falling_en |
497 | What: /sys/.../iio:deviceX/events/in_voltageY_roc_rising_en | 517 | What: /sys/.../iio:deviceX/events/in_voltageY_roc_rising_en |
@@ -538,6 +558,14 @@ What: /sys/.../events/in_magn_y_raw_thresh_rising_value | |||
538 | What: /sys/.../events/in_magn_y_raw_thresh_falling_value | 558 | What: /sys/.../events/in_magn_y_raw_thresh_falling_value |
539 | What: /sys/.../events/in_magn_z_raw_thresh_rising_value | 559 | What: /sys/.../events/in_magn_z_raw_thresh_rising_value |
540 | What: /sys/.../events/in_magn_z_raw_thresh_falling_value | 560 | What: /sys/.../events/in_magn_z_raw_thresh_falling_value |
561 | What: /sys/.../events/in_rot_from_north_magnetic_raw_thresh_rising_value | ||
562 | What: /sys/.../events/in_rot_from_north_magnetic_raw_thresh_falling_value | ||
563 | What: /sys/.../events/in_rot_from_north_true_raw_thresh_rising_value | ||
564 | What: /sys/.../events/in_rot_from_north_true_raw_thresh_falling_value | ||
565 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_raw_thresh_rising_value | ||
566 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_raw_thresh_falling_value | ||
567 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_raw_thresh_rising_value | ||
568 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_raw_thresh_falling_value | ||
541 | What: /sys/.../events/in_voltageY_supply_raw_thresh_rising_value | 569 | What: /sys/.../events/in_voltageY_supply_raw_thresh_rising_value |
542 | What: /sys/.../events/in_voltageY_supply_raw_thresh_falling_value | 570 | What: /sys/.../events/in_voltageY_supply_raw_thresh_falling_value |
543 | What: /sys/.../events/in_voltageY_raw_thresh_rising_value | 571 | What: /sys/.../events/in_voltageY_raw_thresh_rising_value |
@@ -588,6 +616,18 @@ What: /sys/.../events/in_magn_y_thresh_either_hysteresis | |||
588 | What: /sys/.../events/in_magn_z_thresh_rising_hysteresis | 616 | What: /sys/.../events/in_magn_z_thresh_rising_hysteresis |
589 | What: /sys/.../events/in_magn_z_thresh_falling_hysteresis | 617 | What: /sys/.../events/in_magn_z_thresh_falling_hysteresis |
590 | What: /sys/.../events/in_magn_z_thresh_either_hysteresis | 618 | What: /sys/.../events/in_magn_z_thresh_either_hysteresis |
619 | What: /sys/.../events/in_rot_from_north_magnetic_thresh_rising_hysteresis | ||
620 | What: /sys/.../events/in_rot_from_north_magnetic_thresh_falling_hysteresis | ||
621 | What: /sys/.../events/in_rot_from_north_magnetic_thresh_either_hysteresis | ||
622 | What: /sys/.../events/in_rot_from_north_true_thresh_rising_hysteresis | ||
623 | What: /sys/.../events/in_rot_from_north_true_thresh_falling_hysteresis | ||
624 | What: /sys/.../events/in_rot_from_north_true_thresh_either_hysteresis | ||
625 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_thresh_rising_hysteresis | ||
626 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_thresh_falling_hysteresis | ||
627 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_thresh_either_hysteresis | ||
628 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_thresh_rising_hysteresis | ||
629 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_thresh_falling_hysteresis | ||
630 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_thresh_either_hysteresis | ||
591 | What: /sys/.../events/in_voltageY_thresh_rising_hysteresis | 631 | What: /sys/.../events/in_voltageY_thresh_rising_hysteresis |
592 | What: /sys/.../events/in_voltageY_thresh_falling_hysteresis | 632 | What: /sys/.../events/in_voltageY_thresh_falling_hysteresis |
593 | What: /sys/.../events/in_voltageY_thresh_either_hysteresis | 633 | What: /sys/.../events/in_voltageY_thresh_either_hysteresis |
@@ -635,6 +675,14 @@ What: /sys/.../events/in_magn_y_raw_roc_rising_value | |||
635 | What: /sys/.../events/in_magn_y_raw_roc_falling_value | 675 | What: /sys/.../events/in_magn_y_raw_roc_falling_value |
636 | What: /sys/.../events/in_magn_z_raw_roc_rising_value | 676 | What: /sys/.../events/in_magn_z_raw_roc_rising_value |
637 | What: /sys/.../events/in_magn_z_raw_roc_falling_value | 677 | What: /sys/.../events/in_magn_z_raw_roc_falling_value |
678 | What: /sys/.../events/in_rot_from_north_magnetic_raw_roc_rising_value | ||
679 | What: /sys/.../events/in_rot_from_north_magnetic_raw_roc_falling_value | ||
680 | What: /sys/.../events/in_rot_from_north_true_raw_roc_rising_value | ||
681 | What: /sys/.../events/in_rot_from_north_true_raw_roc_falling_value | ||
682 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_raw_roc_rising_value | ||
683 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_raw_roc_falling_value | ||
684 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_raw_roc_rising_value | ||
685 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_raw_roc_falling_value | ||
638 | What: /sys/.../events/in_voltageY_supply_raw_roc_rising_value | 686 | What: /sys/.../events/in_voltageY_supply_raw_roc_rising_value |
639 | What: /sys/.../events/in_voltageY_supply_raw_roc_falling_value | 687 | What: /sys/.../events/in_voltageY_supply_raw_roc_falling_value |
640 | What: /sys/.../events/in_voltageY_raw_roc_rising_value | 688 | What: /sys/.../events/in_voltageY_raw_roc_rising_value |
@@ -690,6 +738,22 @@ What: /sys/.../events/in_magn_z_thresh_rising_period | |||
690 | What: /sys/.../events/in_magn_z_thresh_falling_period | 738 | What: /sys/.../events/in_magn_z_thresh_falling_period |
691 | What: /sys/.../events/in_magn_z_roc_rising_period | 739 | What: /sys/.../events/in_magn_z_roc_rising_period |
692 | What: /sys/.../events/in_magn_z_roc_falling_period | 740 | What: /sys/.../events/in_magn_z_roc_falling_period |
741 | What: /sys/.../events/in_rot_from_north_magnetic_thresh_rising_period | ||
742 | What: /sys/.../events/in_rot_from_north_magnetic_thresh_falling_period | ||
743 | What: /sys/.../events/in_rot_from_north_magnetic_roc_rising_period | ||
744 | What: /sys/.../events/in_rot_from_north_magnetic_roc_falling_period | ||
745 | What: /sys/.../events/in_rot_from_north_true_thresh_rising_period | ||
746 | What: /sys/.../events/in_rot_from_north_true_thresh_falling_period | ||
747 | What: /sys/.../events/in_rot_from_north_true_roc_rising_period | ||
748 | What: /sys/.../events/in_rot_from_north_true_roc_falling_period | ||
749 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_thresh_rising_period | ||
750 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_thresh_falling_period | ||
751 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_roc_rising_period | ||
752 | What: /sys/.../events/in_rot_from_north_magnetic_tilt_comp_roc_falling_period | ||
753 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_thresh_rising_period | ||
754 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_thresh_falling_period | ||
755 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_roc_rising_period | ||
756 | What: /sys/.../events/in_rot_from_north_true_tilt_comp_roc_falling_period | ||
693 | What: /sys/.../events/in_voltageY_supply_thresh_rising_period | 757 | What: /sys/.../events/in_voltageY_supply_thresh_rising_period |
694 | What: /sys/.../events/in_voltageY_supply_thresh_falling_period | 758 | What: /sys/.../events/in_voltageY_supply_thresh_falling_period |
695 | What: /sys/.../events/in_voltageY_supply_roc_rising_period | 759 | What: /sys/.../events/in_voltageY_supply_roc_rising_period |
@@ -787,6 +851,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_anglvel_z_en | |||
787 | What: /sys/.../iio:deviceX/scan_elements/in_magn_x_en | 851 | What: /sys/.../iio:deviceX/scan_elements/in_magn_x_en |
788 | What: /sys/.../iio:deviceX/scan_elements/in_magn_y_en | 852 | What: /sys/.../iio:deviceX/scan_elements/in_magn_y_en |
789 | What: /sys/.../iio:deviceX/scan_elements/in_magn_z_en | 853 | What: /sys/.../iio:deviceX/scan_elements/in_magn_z_en |
854 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_en | ||
855 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_en | ||
856 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_tilt_comp_en | ||
857 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_tilt_comp_en | ||
790 | What: /sys/.../iio:deviceX/scan_elements/in_timestamp_en | 858 | What: /sys/.../iio:deviceX/scan_elements/in_timestamp_en |
791 | What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en | 859 | What: /sys/.../iio:deviceX/scan_elements/in_voltageY_supply_en |
792 | What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en | 860 | What: /sys/.../iio:deviceX/scan_elements/in_voltageY_en |
@@ -853,6 +921,10 @@ What: /sys/.../iio:deviceX/scan_elements/in_anglvel_z_index | |||
853 | What: /sys/.../iio:deviceX/scan_elements/in_magn_x_index | 921 | What: /sys/.../iio:deviceX/scan_elements/in_magn_x_index |
854 | What: /sys/.../iio:deviceX/scan_elements/in_magn_y_index | 922 | What: /sys/.../iio:deviceX/scan_elements/in_magn_y_index |
855 | What: /sys/.../iio:deviceX/scan_elements/in_magn_z_index | 923 | What: /sys/.../iio:deviceX/scan_elements/in_magn_z_index |
924 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_index | ||
925 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_index | ||
926 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_magnetic_tilt_comp_index | ||
927 | What: /sys/.../iio:deviceX/scan_elements/in_rot_from_north_true_tilt_comp_index | ||
856 | What: /sys/.../iio:deviceX/scan_elements/in_incli_x_index | 928 | What: /sys/.../iio:deviceX/scan_elements/in_incli_x_index |
857 | What: /sys/.../iio:deviceX/scan_elements/in_incli_y_index | 929 | What: /sys/.../iio:deviceX/scan_elements/in_incli_y_index |
858 | What: /sys/.../iio:deviceX/scan_elements/in_timestamp_index | 930 | What: /sys/.../iio:deviceX/scan_elements/in_timestamp_index |
@@ -895,6 +967,19 @@ Description: | |||
895 | on-chip EEPROM. After power-up or chip reset the device will | 967 | on-chip EEPROM. After power-up or chip reset the device will |
896 | automatically load the saved configuration. | 968 | automatically load the saved configuration. |
897 | 969 | ||
970 | What: /sys/.../iio:deviceX/in_proximity_raw | ||
971 | What: /sys/.../iio:deviceX/in_proximity_input | ||
972 | What: /sys/.../iio:deviceX/in_proximityY_raw | ||
973 | KernelVersion: 3.4 | ||
974 | Contact: linux-iio@vger.kernel.org | ||
975 | Description: | ||
976 | Proximity measurement indicating that some | ||
977 | object is near the sensor, usually be observing | ||
978 | reflectivity of infrared or ultrasound emitted. | ||
979 | Often these sensors are unit less and as such conversion | ||
980 | to SI units is not possible. Where it is, the units should | ||
981 | be meters. | ||
982 | |||
898 | What: /sys/.../iio:deviceX/in_illuminanceY_input | 983 | What: /sys/.../iio:deviceX/in_illuminanceY_input |
899 | What: /sys/.../iio:deviceX/in_illuminanceY_raw | 984 | What: /sys/.../iio:deviceX/in_illuminanceY_raw |
900 | What: /sys/.../iio:deviceX/in_illuminanceY_mean_raw | 985 | What: /sys/.../iio:deviceX/in_illuminanceY_mean_raw |
@@ -933,3 +1018,13 @@ Description: | |||
933 | x y z w. Here x, y, and z component represents the axis about | 1018 | x y z w. Here x, y, and z component represents the axis about |
934 | which a rotation will occur and w component represents the | 1019 | which a rotation will occur and w component represents the |
935 | amount of rotation. | 1020 | amount of rotation. |
1021 | |||
1022 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_magnetic_tilt_comp_raw | ||
1023 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_tilt_comp_raw | ||
1024 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_magnetic_raw | ||
1025 | What: /sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_raw | ||
1026 | KernelVersion: 3.15 | ||
1027 | Contact: linux-iio@vger.kernel.org | ||
1028 | Description: | ||
1029 | Raw value of rotation from true/magnetic north measured with | ||
1030 | or without compensation from tilt sensors. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-iio-trigger-sysfs b/Documentation/ABI/testing/sysfs-bus-iio-trigger-sysfs new file mode 100644 index 000000000000..5235e6c749ab --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-iio-trigger-sysfs | |||
@@ -0,0 +1,11 @@ | |||
1 | What: /sys/bus/iio/devices/triggerX/trigger_now | ||
2 | KernelVersion: 2.6.38 | ||
3 | Contact: linux-iio@vger.kernel.org | ||
4 | Description: | ||
5 | This file is provided by the iio-trig-sysfs stand-alone trigger | ||
6 | driver. Writing this file with any value triggers an event | ||
7 | driven driver, associated with this trigger, to capture data | ||
8 | into an in kernel buffer. This approach can be valuable during | ||
9 | automated testing or in situations, where other trigger methods | ||
10 | are not applicable. For example no RTC or spare GPIOs. | ||
11 | X is the IIO index of the trigger. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-platform b/Documentation/ABI/testing/sysfs-bus-platform new file mode 100644 index 000000000000..5172a6124b27 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-platform | |||
@@ -0,0 +1,20 @@ | |||
1 | What: /sys/bus/platform/devices/.../driver_override | ||
2 | Date: April 2014 | ||
3 | Contact: Kim Phillips <kim.phillips@freescale.com> | ||
4 | Description: | ||
5 | This file allows the driver for a device to be specified which | ||
6 | will override standard OF, ACPI, ID table, and name matching. | ||
7 | When specified, only a driver with a name matching the value | ||
8 | written to driver_override will have an opportunity to bind | ||
9 | to the device. The override is specified by writing a string | ||
10 | to the driver_override file (echo vfio-platform > \ | ||
11 | driver_override) and may be cleared with an empty string | ||
12 | (echo > driver_override). This returns the device to standard | ||
13 | matching rules binding. Writing to driver_override does not | ||
14 | automatically unbind the device from its current driver or make | ||
15 | any attempt to automatically load the specified driver. If no | ||
16 | driver with a matching name is currently loaded in the kernel, | ||
17 | the device will not bind to any driver. This also allows | ||
18 | devices to opt-out of driver binding using a driver_override | ||
19 | name such as "none". Only a single driver may be specified in | ||
20 | the override, there is no support for parsing delimiters. | ||
diff --git a/Documentation/ABI/testing/sysfs-bus-usb-lvstest b/Documentation/ABI/testing/sysfs-bus-usb-lvstest new file mode 100644 index 000000000000..aae68fc2d842 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-usb-lvstest | |||
@@ -0,0 +1,47 @@ | |||
1 | Link Layer Validation Device is a standard device for testing of Super | ||
2 | Speed Link Layer tests. These nodes are available in sysfs only when lvs | ||
3 | driver is bound with root hub device. | ||
4 | |||
5 | What: /sys/bus/usb/devices/.../get_dev_desc | ||
6 | Date: March 2014 | ||
7 | Contact: Pratyush Anand <pratyush.anand@st.com> | ||
8 | Description: | ||
9 | Write to this node to issue "Get Device Descriptor" | ||
10 | for Link Layer Validation device. It is needed for TD.7.06. | ||
11 | |||
12 | What: /sys/bus/usb/devices/.../u1_timeout | ||
13 | Date: March 2014 | ||
14 | Contact: Pratyush Anand <pratyush.anand@st.com> | ||
15 | Description: | ||
16 | Set "U1 timeout" for the downstream port where Link Layer | ||
17 | Validation device is connected. Timeout value must be between 0 | ||
18 | and 127. It is needed for TD.7.18, TD.7.19, TD.7.20 and TD.7.21. | ||
19 | |||
20 | What: /sys/bus/usb/devices/.../u2_timeout | ||
21 | Date: March 2014 | ||
22 | Contact: Pratyush Anand <pratyush.anand@st.com> | ||
23 | Description: | ||
24 | Set "U2 timeout" for the downstream port where Link Layer | ||
25 | Validation device is connected. Timeout value must be between 0 | ||
26 | and 127. It is needed for TD.7.18, TD.7.19, TD.7.20 and TD.7.21. | ||
27 | |||
28 | What: /sys/bus/usb/devices/.../hot_reset | ||
29 | Date: March 2014 | ||
30 | Contact: Pratyush Anand <pratyush.anand@st.com> | ||
31 | Description: | ||
32 | Write to this node to issue "Reset" for Link Layer Validation | ||
33 | device. It is needed for TD.7.29, TD.7.31, TD.7.34 and TD.7.35. | ||
34 | |||
35 | What: /sys/bus/usb/devices/.../u3_entry | ||
36 | Date: March 2014 | ||
37 | Contact: Pratyush Anand <pratyush.anand@st.com> | ||
38 | Description: | ||
39 | Write to this node to issue "U3 entry" for Link Layer | ||
40 | Validation device. It is needed for TD.7.35 and TD.7.36. | ||
41 | |||
42 | What: /sys/bus/usb/devices/.../u3_exit | ||
43 | Date: March 2014 | ||
44 | Contact: Pratyush Anand <pratyush.anand@st.com> | ||
45 | Description: | ||
46 | Write to this node to issue "U3 exit" for Link Layer | ||
47 | Validation device. It is needed for TD.7.36. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-iommu b/Documentation/ABI/testing/sysfs-class-iommu new file mode 100644 index 000000000000..6d0a1b4be82d --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-iommu | |||
@@ -0,0 +1,17 @@ | |||
1 | What: /sys/class/iommu/<iommu>/devices/ | ||
2 | Date: June 2014 | ||
3 | KernelVersion: 3.17 | ||
4 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
5 | Description: | ||
6 | IOMMU drivers are able to link devices managed by a | ||
7 | given IOMMU here to allow association of IOMMU to | ||
8 | device. | ||
9 | |||
10 | What: /sys/devices/.../iommu | ||
11 | Date: June 2014 | ||
12 | KernelVersion: 3.17 | ||
13 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
14 | Description: | ||
15 | IOMMU drivers are able to link the IOMMU for a | ||
16 | given device here to allow association of device to | ||
17 | IOMMU. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-iommu-amd-iommu b/Documentation/ABI/testing/sysfs-class-iommu-amd-iommu new file mode 100644 index 000000000000..d6ba8e8a4a97 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-iommu-amd-iommu | |||
@@ -0,0 +1,14 @@ | |||
1 | What: /sys/class/iommu/<iommu>/amd-iommu/cap | ||
2 | Date: June 2014 | ||
3 | KernelVersion: 3.17 | ||
4 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
5 | Description: | ||
6 | IOMMU capability header as documented in the AMD IOMMU | ||
7 | specification. Format: %x | ||
8 | |||
9 | What: /sys/class/iommu/<iommu>/amd-iommu/features | ||
10 | Date: June 2014 | ||
11 | KernelVersion: 3.17 | ||
12 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
13 | Description: | ||
14 | Extended features of the IOMMU. Format: %llx | ||
diff --git a/Documentation/ABI/testing/sysfs-class-iommu-intel-iommu b/Documentation/ABI/testing/sysfs-class-iommu-intel-iommu new file mode 100644 index 000000000000..258cc246d98e --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-iommu-intel-iommu | |||
@@ -0,0 +1,32 @@ | |||
1 | What: /sys/class/iommu/<iommu>/intel-iommu/address | ||
2 | Date: June 2014 | ||
3 | KernelVersion: 3.17 | ||
4 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
5 | Description: | ||
6 | Physical address of the VT-d DRHD for this IOMMU. | ||
7 | Format: %llx. This allows association of a sysfs | ||
8 | intel-iommu with a DMAR DRHD table entry. | ||
9 | |||
10 | What: /sys/class/iommu/<iommu>/intel-iommu/cap | ||
11 | Date: June 2014 | ||
12 | KernelVersion: 3.17 | ||
13 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
14 | Description: | ||
15 | The cached hardware capability register value | ||
16 | of this DRHD unit. Format: %llx. | ||
17 | |||
18 | What: /sys/class/iommu/<iommu>/intel-iommu/ecap | ||
19 | Date: June 2014 | ||
20 | KernelVersion: 3.17 | ||
21 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
22 | Description: | ||
23 | The cached hardware extended capability register | ||
24 | value of this DRHD unit. Format: %llx. | ||
25 | |||
26 | What: /sys/class/iommu/<iommu>/intel-iommu/version | ||
27 | Date: June 2014 | ||
28 | KernelVersion: 3.17 | ||
29 | Contact: Alex Williamson <alex.williamson@redhat.com> | ||
30 | Description: | ||
31 | The architecture version as reported from the | ||
32 | VT-d VER_REG. Format: %d:%d, major:minor | ||
diff --git a/Documentation/ABI/testing/sysfs-class-leds-gt683r b/Documentation/ABI/testing/sysfs-class-leds-gt683r new file mode 100644 index 000000000000..e4fae6026e79 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-leds-gt683r | |||
@@ -0,0 +1,16 @@ | |||
1 | What: /sys/class/leds/<led>/gt683r/mode | ||
2 | Date: Jun 2014 | ||
3 | KernelVersion: 3.17 | ||
4 | Contact: Janne Kanniainen <janne.kanniainen@gmail.com> | ||
5 | Description: | ||
6 | Set the mode of LEDs. You should notice that changing the mode | ||
7 | of one LED will update the mode of its two sibling devices as | ||
8 | well. | ||
9 | |||
10 | 0 - normal | ||
11 | 1 - audio | ||
12 | 2 - breathing | ||
13 | |||
14 | Normal: LEDs are fully on when enabled | ||
15 | Audio: LEDs brightness depends on sound level | ||
16 | Breathing: LEDs brightness varies at human breathing rate \ No newline at end of file | ||
diff --git a/Documentation/ABI/testing/sysfs-class-mei b/Documentation/ABI/testing/sysfs-class-mei new file mode 100644 index 000000000000..0ec8b8178c41 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-mei | |||
@@ -0,0 +1,16 @@ | |||
1 | What: /sys/class/mei/ | ||
2 | Date: May 2014 | ||
3 | KernelVersion: 3.17 | ||
4 | Contact: Tomas Winkler <tomas.winkler@intel.com> | ||
5 | Description: | ||
6 | The mei/ class sub-directory belongs to mei device class | ||
7 | |||
8 | |||
9 | What: /sys/class/mei/meiN/ | ||
10 | Date: May 2014 | ||
11 | KernelVersion: 3.17 | ||
12 | Contact: Tomas Winkler <tomas.winkler@intel.com> | ||
13 | Description: | ||
14 | The /sys/class/mei/meiN directory is created for | ||
15 | each probed mei device | ||
16 | |||
diff --git a/Documentation/ABI/testing/sysfs-class-mtd b/Documentation/ABI/testing/sysfs-class-mtd index 1399bb2da3eb..76ee192f80a0 100644 --- a/Documentation/ABI/testing/sysfs-class-mtd +++ b/Documentation/ABI/testing/sysfs-class-mtd | |||
@@ -184,3 +184,41 @@ Description: | |||
184 | 184 | ||
185 | It will always be a non-negative integer. In the case of | 185 | It will always be a non-negative integer. In the case of |
186 | devices lacking any ECC capability, it is 0. | 186 | devices lacking any ECC capability, it is 0. |
187 | |||
188 | What: /sys/class/mtd/mtdX/ecc_failures | ||
189 | Date: June 2014 | ||
190 | KernelVersion: 3.17 | ||
191 | Contact: linux-mtd@lists.infradead.org | ||
192 | Description: | ||
193 | The number of failures reported by this device's ECC. Typically, | ||
194 | these failures are associated with failed read operations. | ||
195 | |||
196 | It will always be a non-negative integer. In the case of | ||
197 | devices lacking any ECC capability, it is 0. | ||
198 | |||
199 | What: /sys/class/mtd/mtdX/corrected_bits | ||
200 | Date: June 2014 | ||
201 | KernelVersion: 3.17 | ||
202 | Contact: linux-mtd@lists.infradead.org | ||
203 | Description: | ||
204 | The number of bits that have been corrected by means of the | ||
205 | device's ECC. | ||
206 | |||
207 | It will always be a non-negative integer. In the case of | ||
208 | devices lacking any ECC capability, it is 0. | ||
209 | |||
210 | What: /sys/class/mtd/mtdX/bad_blocks | ||
211 | Date: June 2014 | ||
212 | KernelVersion: 3.17 | ||
213 | Contact: linux-mtd@lists.infradead.org | ||
214 | Description: | ||
215 | The number of blocks marked as bad, if any, in this partition. | ||
216 | |||
217 | What: /sys/class/mtd/mtdX/bbt_blocks | ||
218 | Date: June 2014 | ||
219 | KernelVersion: 3.17 | ||
220 | Contact: linux-mtd@lists.infradead.org | ||
221 | Description: | ||
222 | The number of blocks that are marked as reserved, if any, in | ||
223 | this partition. These are typically used to store the in-flash | ||
224 | bad block table (BBT). | ||
diff --git a/Documentation/ABI/testing/sysfs-class-net b/Documentation/ABI/testing/sysfs-class-net index 416c5d59f52e..d322b0581194 100644 --- a/Documentation/ABI/testing/sysfs-class-net +++ b/Documentation/ABI/testing/sysfs-class-net | |||
@@ -1,3 +1,14 @@ | |||
1 | What: /sys/class/net/<iface>/name_assign_type | ||
2 | Date: July 2014 | ||
3 | KernelVersion: 3.17 | ||
4 | Contact: netdev@vger.kernel.org | ||
5 | Description: | ||
6 | Indicates the name assignment type. Possible values are: | ||
7 | 1: enumerated by the kernel, possibly in an unpredictable way | ||
8 | 2: predictably named by the kernel | ||
9 | 3: named by userspace | ||
10 | 4: renamed | ||
11 | |||
1 | What: /sys/class/net/<iface>/addr_assign_type | 12 | What: /sys/class/net/<iface>/addr_assign_type |
2 | Date: July 2010 | 13 | Date: July 2010 |
3 | KernelVersion: 3.2 | 14 | KernelVersion: 3.2 |
diff --git a/Documentation/ABI/testing/sysfs-driver-genwqe b/Documentation/ABI/testing/sysfs-driver-genwqe index 1870737a1f5e..64ac6d567c4b 100644 --- a/Documentation/ABI/testing/sysfs-driver-genwqe +++ b/Documentation/ABI/testing/sysfs-driver-genwqe | |||
@@ -25,6 +25,15 @@ Date: Oct 2013 | |||
25 | Contact: haver@linux.vnet.ibm.com | 25 | Contact: haver@linux.vnet.ibm.com |
26 | Description: Interface to set the next bitstream to be used. | 26 | Description: Interface to set the next bitstream to be used. |
27 | 27 | ||
28 | What: /sys/class/genwqe/genwqe<n>_card/reload_bitstream | ||
29 | Date: May 2014 | ||
30 | Contact: klebers@linux.vnet.ibm.com | ||
31 | Description: Interface to trigger a PCIe card reset to reload the bitstream. | ||
32 | sudo sh -c 'echo 1 > \ | ||
33 | /sys/class/genwqe/genwqe0_card/reload_bitstream' | ||
34 | If successfully, the card will come back with the bitstream set | ||
35 | on 'next_bitstream'. | ||
36 | |||
28 | What: /sys/class/genwqe/genwqe<n>_card/tempsens | 37 | What: /sys/class/genwqe/genwqe<n>_card/tempsens |
29 | Date: Oct 2013 | 38 | Date: Oct 2013 |
30 | Contact: haver@linux.vnet.ibm.com | 39 | Contact: haver@linux.vnet.ibm.com |
diff --git a/Documentation/ABI/testing/sysfs-driver-hid-lenovo-tpkbd b/Documentation/ABI/testing/sysfs-driver-hid-lenovo index 57b92cbdceae..53a0725962e1 100644 --- a/Documentation/ABI/testing/sysfs-driver-hid-lenovo-tpkbd +++ b/Documentation/ABI/testing/sysfs-driver-hid-lenovo | |||
@@ -4,18 +4,21 @@ Contact: linux-input@vger.kernel.org | |||
4 | Description: This controls if mouse clicks should be generated if the trackpoint is quickly pressed. How fast this press has to be | 4 | Description: This controls if mouse clicks should be generated if the trackpoint is quickly pressed. How fast this press has to be |
5 | is being controlled by press_speed. | 5 | is being controlled by press_speed. |
6 | Values are 0 or 1. | 6 | Values are 0 or 1. |
7 | Applies to Thinkpad USB Keyboard with TrackPoint. | ||
7 | 8 | ||
8 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/dragging | 9 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/dragging |
9 | Date: July 2011 | 10 | Date: July 2011 |
10 | Contact: linux-input@vger.kernel.org | 11 | Contact: linux-input@vger.kernel.org |
11 | Description: If this setting is enabled, it is possible to do dragging by pressing the trackpoint. This requires press_to_select to be enabled. | 12 | Description: If this setting is enabled, it is possible to do dragging by pressing the trackpoint. This requires press_to_select to be enabled. |
12 | Values are 0 or 1. | 13 | Values are 0 or 1. |
14 | Applies to Thinkpad USB Keyboard with TrackPoint. | ||
13 | 15 | ||
14 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/release_to_select | 16 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/release_to_select |
15 | Date: July 2011 | 17 | Date: July 2011 |
16 | Contact: linux-input@vger.kernel.org | 18 | Contact: linux-input@vger.kernel.org |
17 | Description: For details regarding this setting please refer to http://www.pc.ibm.com/ww/healthycomputing/trkpntb.html | 19 | Description: For details regarding this setting please refer to http://www.pc.ibm.com/ww/healthycomputing/trkpntb.html |
18 | Values are 0 or 1. | 20 | Values are 0 or 1. |
21 | Applies to Thinkpad USB Keyboard with TrackPoint. | ||
19 | 22 | ||
20 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/select_right | 23 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/select_right |
21 | Date: July 2011 | 24 | Date: July 2011 |
@@ -23,16 +26,25 @@ Contact: linux-input@vger.kernel.org | |||
23 | Description: This setting controls if the mouse click events generated by pressing the trackpoint (if press_to_select is enabled) generate | 26 | Description: This setting controls if the mouse click events generated by pressing the trackpoint (if press_to_select is enabled) generate |
24 | a left or right mouse button click. | 27 | a left or right mouse button click. |
25 | Values are 0 or 1. | 28 | Values are 0 or 1. |
29 | Applies to Thinkpad USB Keyboard with TrackPoint. | ||
26 | 30 | ||
27 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/sensitivity | 31 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/sensitivity |
28 | Date: July 2011 | 32 | Date: July 2011 |
29 | Contact: linux-input@vger.kernel.org | 33 | Contact: linux-input@vger.kernel.org |
30 | Description: This file contains the trackpoint sensitivity. | 34 | Description: This file contains the trackpoint sensitivity. |
31 | Values are decimal integers from 1 (lowest sensitivity) to 255 (highest sensitivity). | 35 | Values are decimal integers from 1 (lowest sensitivity) to 255 (highest sensitivity). |
36 | Applies to Thinkpad USB Keyboard with TrackPoint. | ||
32 | 37 | ||
33 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/press_speed | 38 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/press_speed |
34 | Date: July 2011 | 39 | Date: July 2011 |
35 | Contact: linux-input@vger.kernel.org | 40 | Contact: linux-input@vger.kernel.org |
36 | Description: This setting controls how fast the trackpoint needs to be pressed to generate a mouse click if press_to_select is enabled. | 41 | Description: This setting controls how fast the trackpoint needs to be pressed to generate a mouse click if press_to_select is enabled. |
37 | Values are decimal integers from 1 (slowest) to 255 (fastest). | 42 | Values are decimal integers from 1 (slowest) to 255 (fastest). |
43 | Applies to Thinkpad USB Keyboard with TrackPoint. | ||
38 | 44 | ||
45 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<config num>.<interface num>/<hid-bus>:<vendor-id>:<product-id>.<num>/fn_lock | ||
46 | Date: July 2014 | ||
47 | Contact: linux-input@vger.kernel.org | ||
48 | Description: This setting controls whether Fn Lock is enabled on the keyboard (i.e. if F1 is Mute or F1) | ||
49 | Values are 0 or 1 | ||
50 | Applies to ThinkPad Compact (USB|Bluetooth) Keyboard with TrackPoint. | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-pciback b/Documentation/ABI/testing/sysfs-driver-pciback new file mode 100644 index 000000000000..6a733bfa37e6 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-pciback | |||
@@ -0,0 +1,13 @@ | |||
1 | What: /sys/bus/pci/drivers/pciback/quirks | ||
2 | Date: Oct 2011 | ||
3 | KernelVersion: 3.1 | ||
4 | Contact: xen-devel@lists.xenproject.org | ||
5 | Description: | ||
6 | If the permissive attribute is set, then writing a string in | ||
7 | the format of DDDD:BB:DD.F-REG:SIZE:MASK will allow the guest | ||
8 | to write and read from the PCI device. That is Domain:Bus: | ||
9 | Device.Function-Register:Size:Mask (Domain is optional). | ||
10 | For example: | ||
11 | #echo 00:19.0-E0:2:FF > /sys/bus/pci/drivers/pciback/quirks | ||
12 | will allow the guest to read and write to the configuration | ||
13 | register 0x0E. | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-tegra-fuse b/Documentation/ABI/testing/sysfs-driver-tegra-fuse new file mode 100644 index 000000000000..69f5af632657 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-tegra-fuse | |||
@@ -0,0 +1,11 @@ | |||
1 | What: /sys/devices/*/<our-device>/fuse | ||
2 | Date: February 2014 | ||
3 | Contact: Peter De Schrijver <pdeschrijver@nvidia.com> | ||
4 | Description: read-only access to the efuses on Tegra20, Tegra30, Tegra114 | ||
5 | and Tegra124 SoC's from NVIDIA. The efuses contain write once | ||
6 | data programmed at the factory. The data is layed out in 32bit | ||
7 | words in LSB first format. Each bit represents a single value | ||
8 | as decoded from the fuse registers. Bits order/assignment | ||
9 | exactly matches the HW registers, including any unused bits. | ||
10 | Users: any user space application which wants to read the efuses on | ||
11 | Tegra SoC's | ||
diff --git a/Documentation/ABI/testing/sysfs-driver-wacom b/Documentation/ABI/testing/sysfs-driver-wacom index 7fc781048b79..c4f0fed64a6e 100644 --- a/Documentation/ABI/testing/sysfs-driver-wacom +++ b/Documentation/ABI/testing/sysfs-driver-wacom | |||
@@ -1,48 +1,27 @@ | |||
1 | WWhat: /sys/class/hidraw/hidraw*/device/oled*_img | 1 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/speed |
2 | Date: June 2012 | ||
3 | Contact: linux-bluetooth@vger.kernel.org | ||
4 | Description: | ||
5 | The /sys/class/hidraw/hidraw*/device/oled*_img files control | ||
6 | OLED mocro displays on Intuos4 Wireless tablet. Accepted image | ||
7 | has to contain 256 bytes (64x32 px 1 bit colour). The format | ||
8 | is the same as PBM image 62x32px without header (64 bits per | ||
9 | horizontal line, 32 lines). An example of setting OLED No. 0: | ||
10 | dd bs=256 count=1 if=img_file of=[path to oled0_img]/oled0_img | ||
11 | The attribute is read only and no local copy of the image is | ||
12 | stored. | ||
13 | |||
14 | What: /sys/class/hidraw/hidraw*/device/speed | ||
15 | Date: April 2010 | 2 | Date: April 2010 |
16 | Kernel Version: 2.6.35 | 3 | Kernel Version: 2.6.35 |
17 | Contact: linux-bluetooth@vger.kernel.org | 4 | Contact: linux-bluetooth@vger.kernel.org |
18 | Description: | 5 | Description: |
19 | The /sys/class/hidraw/hidraw*/device/speed file controls | 6 | The /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/speed file |
20 | reporting speed of Wacom bluetooth tablet. Reading from | 7 | controls reporting speed of Wacom bluetooth tablet. Reading |
21 | this file returns 1 if tablet reports in high speed mode | 8 | from this file returns 1 if tablet reports in high speed mode |
22 | or 0 otherwise. Writing to this file one of these values | 9 | or 0 otherwise. Writing to this file one of these values |
23 | switches reporting speed. | 10 | switches reporting speed. |
24 | 11 | ||
25 | What: /sys/class/leds/0005\:056A\:00BD.0001\:selector\:*/ | 12 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/wacom_led/led |
26 | Date: May 2012 | 13 | Date: August 2014 |
27 | Kernel Version: 3.5 | ||
28 | Contact: linux-bluetooth@vger.kernel.org | ||
29 | Description: | ||
30 | LED selector for Intuos4 WL. There are 4 leds, but only one LED | ||
31 | can be lit at a time. Max brightness is 127. | ||
32 | |||
33 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/led | ||
34 | Date: August 2011 | ||
35 | Contact: linux-input@vger.kernel.org | 14 | Contact: linux-input@vger.kernel.org |
36 | Description: | 15 | Description: |
37 | Attribute group for control of the status LEDs and the OLEDs. | 16 | Attribute group for control of the status LEDs and the OLEDs. |
38 | This attribute group is only available for Intuos 4 M, L, | 17 | This attribute group is only available for Intuos 4 M, L, |
39 | and XL (with LEDs and OLEDs), Intuos 5 (LEDs only), and Cintiq | 18 | and XL (with LEDs and OLEDs), Intuos 4 WL, Intuos 5 (LEDs only), |
40 | 21UX2 and Cintiq 24HD (LEDs only). Therefore its presence | 19 | Intuos Pro (LEDs only) and Cintiq 21UX2 and Cintiq 24HD |
41 | implicitly signifies the presence of said LEDs and OLEDs on the | 20 | (LEDs only). Therefore its presence implicitly signifies the |
42 | tablet device. | 21 | presence of said LEDs and OLEDs on the tablet device. |
43 | 22 | ||
44 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance | 23 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/wacom_led/status0_luminance |
45 | Date: August 2011 | 24 | Date: August 2014 |
46 | Contact: linux-input@vger.kernel.org | 25 | Contact: linux-input@vger.kernel.org |
47 | Description: | 26 | Description: |
48 | Writing to this file sets the status LED luminance (1..127) | 27 | Writing to this file sets the status LED luminance (1..127) |
@@ -50,16 +29,16 @@ Description: | |||
50 | button is pressed on the stylus. This luminance level is | 29 | button is pressed on the stylus. This luminance level is |
51 | normally lower than the level when a button is pressed. | 30 | normally lower than the level when a button is pressed. |
52 | 31 | ||
53 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status1_luminance | 32 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/wacom_led/status1_luminance |
54 | Date: August 2011 | 33 | Date: August 2014 |
55 | Contact: linux-input@vger.kernel.org | 34 | Contact: linux-input@vger.kernel.org |
56 | Description: | 35 | Description: |
57 | Writing to this file sets the status LED luminance (1..127) | 36 | Writing to this file sets the status LED luminance (1..127) |
58 | when the stylus touches the tablet surface, or any button is | 37 | when the stylus touches the tablet surface, or any button is |
59 | pressed on the stylus. | 38 | pressed on the stylus. |
60 | 39 | ||
61 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led0_select | 40 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/wacom_led/status_led0_select |
62 | Date: August 2011 | 41 | Date: August 2014 |
63 | Contact: linux-input@vger.kernel.org | 42 | Contact: linux-input@vger.kernel.org |
64 | Description: | 43 | Description: |
65 | Writing to this file sets which one of the four (for Intuos 4 | 44 | Writing to this file sets which one of the four (for Intuos 4 |
@@ -67,23 +46,23 @@ Description: | |||
67 | 24HD) status LEDs is active (0..3). The other three LEDs on the | 46 | 24HD) status LEDs is active (0..3). The other three LEDs on the |
68 | same side are always inactive. | 47 | same side are always inactive. |
69 | 48 | ||
70 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select | 49 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/wacom_led/status_led1_select |
71 | Date: September 2011 | 50 | Date: August 2014 |
72 | Contact: linux-input@vger.kernel.org | 51 | Contact: linux-input@vger.kernel.org |
73 | Description: | 52 | Description: |
74 | Writing to this file sets which one of the left four (for Cintiq 21UX2 | 53 | Writing to this file sets which one of the left four (for Cintiq 21UX2 |
75 | and Cintiq 24HD) status LEDs is active (0..3). The other three LEDs on | 54 | and Cintiq 24HD) status LEDs is active (0..3). The other three LEDs on |
76 | the left are always inactive. | 55 | the left are always inactive. |
77 | 56 | ||
78 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/buttons_luminance | 57 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/wacom_led/buttons_luminance |
79 | Date: August 2011 | 58 | Date: August 2014 |
80 | Contact: linux-input@vger.kernel.org | 59 | Contact: linux-input@vger.kernel.org |
81 | Description: | 60 | Description: |
82 | Writing to this file sets the overall luminance level (0..15) | 61 | Writing to this file sets the overall luminance level (0..15) |
83 | of all eight button OLED displays. | 62 | of all eight button OLED displays. |
84 | 63 | ||
85 | What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/button<n>_rawimg | 64 | What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/wacom_led/button<n>_rawimg |
86 | Date: August 2011 | 65 | Date: August 2014 |
87 | Contact: linux-input@vger.kernel.org | 66 | Contact: linux-input@vger.kernel.org |
88 | Description: | 67 | Description: |
89 | When writing a 1024 byte raw image in Wacom Intuos 4 | 68 | When writing a 1024 byte raw image in Wacom Intuos 4 |
@@ -93,3 +72,8 @@ Description: | |||
93 | byte chunk encodes the image data for two consecutive lines on | 72 | byte chunk encodes the image data for two consecutive lines on |
94 | the display. The low nibble of each byte contains the first | 73 | the display. The low nibble of each byte contains the first |
95 | line, and the high nibble contains the second line. | 74 | line, and the high nibble contains the second line. |
75 | When the Wacom Intuos 4 is connected over Bluetooth, the | ||
76 | image has to contain 256 bytes (64x32 px 1 bit colour). | ||
77 | The format is also scrambled, like in the USB mode, and it can | ||
78 | be summarized by converting 76543210 into GECA6420. | ||
79 | HGFEDCBA HFDB7531 | ||
diff --git a/Documentation/ABI/testing/sysfs-fs-nilfs2 b/Documentation/ABI/testing/sysfs-fs-nilfs2 new file mode 100644 index 000000000000..304ba84a973a --- /dev/null +++ b/Documentation/ABI/testing/sysfs-fs-nilfs2 | |||
@@ -0,0 +1,269 @@ | |||
1 | |||
2 | What: /sys/fs/nilfs2/features/revision | ||
3 | Date: April 2014 | ||
4 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
5 | Description: | ||
6 | Show current revision of NILFS file system driver. | ||
7 | This value informs about file system revision that | ||
8 | driver is ready to support. | ||
9 | |||
10 | What: /sys/fs/nilfs2/features/README | ||
11 | Date: April 2014 | ||
12 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
13 | Description: | ||
14 | Describe attributes of /sys/fs/nilfs2/features group. | ||
15 | |||
16 | What: /sys/fs/nilfs2/<device>/revision | ||
17 | Date: April 2014 | ||
18 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
19 | Description: | ||
20 | Show NILFS file system revision on volume. | ||
21 | This value informs about metadata structures' | ||
22 | revision on mounted volume. | ||
23 | |||
24 | What: /sys/fs/nilfs2/<device>/blocksize | ||
25 | Date: April 2014 | ||
26 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
27 | Description: | ||
28 | Show volume's block size in bytes. | ||
29 | |||
30 | What: /sys/fs/nilfs2/<device>/device_size | ||
31 | Date: April 2014 | ||
32 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
33 | Description: | ||
34 | Show volume size in bytes. | ||
35 | |||
36 | What: /sys/fs/nilfs2/<device>/free_blocks | ||
37 | Date: April 2014 | ||
38 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
39 | Description: | ||
40 | Show count of free blocks on volume. | ||
41 | |||
42 | What: /sys/fs/nilfs2/<device>/uuid | ||
43 | Date: April 2014 | ||
44 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
45 | Description: | ||
46 | Show volume's UUID (Universally Unique Identifier). | ||
47 | |||
48 | What: /sys/fs/nilfs2/<device>/volume_name | ||
49 | Date: April 2014 | ||
50 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
51 | Description: | ||
52 | Show volume's label. | ||
53 | |||
54 | What: /sys/fs/nilfs2/<device>/README | ||
55 | Date: April 2014 | ||
56 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
57 | Description: | ||
58 | Describe attributes of /sys/fs/nilfs2/<device> group. | ||
59 | |||
60 | What: /sys/fs/nilfs2/<device>/superblock/sb_write_time | ||
61 | Date: April 2014 | ||
62 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
63 | Description: | ||
64 | Show last write time of super block in human-readable | ||
65 | format. | ||
66 | |||
67 | What: /sys/fs/nilfs2/<device>/superblock/sb_write_time_secs | ||
68 | Date: April 2014 | ||
69 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
70 | Description: | ||
71 | Show last write time of super block in seconds. | ||
72 | |||
73 | What: /sys/fs/nilfs2/<device>/superblock/sb_write_count | ||
74 | Date: April 2014 | ||
75 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
76 | Description: | ||
77 | Show current write count of super block. | ||
78 | |||
79 | What: /sys/fs/nilfs2/<device>/superblock/sb_update_frequency | ||
80 | Date: April 2014 | ||
81 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
82 | Description: | ||
83 | Show/Set interval of periodical update of superblock | ||
84 | (in seconds). | ||
85 | |||
86 | What: /sys/fs/nilfs2/<device>/superblock/README | ||
87 | Date: April 2014 | ||
88 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
89 | Description: | ||
90 | Describe attributes of /sys/fs/nilfs2/<device>/superblock | ||
91 | group. | ||
92 | |||
93 | What: /sys/fs/nilfs2/<device>/segctor/last_pseg_block | ||
94 | Date: April 2014 | ||
95 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
96 | Description: | ||
97 | Show start block number of the latest segment. | ||
98 | |||
99 | What: /sys/fs/nilfs2/<device>/segctor/last_seg_sequence | ||
100 | Date: April 2014 | ||
101 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
102 | Description: | ||
103 | Show sequence value of the latest segment. | ||
104 | |||
105 | What: /sys/fs/nilfs2/<device>/segctor/last_seg_checkpoint | ||
106 | Date: April 2014 | ||
107 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
108 | Description: | ||
109 | Show checkpoint number of the latest segment. | ||
110 | |||
111 | What: /sys/fs/nilfs2/<device>/segctor/current_seg_sequence | ||
112 | Date: April 2014 | ||
113 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
114 | Description: | ||
115 | Show segment sequence counter. | ||
116 | |||
117 | What: /sys/fs/nilfs2/<device>/segctor/current_last_full_seg | ||
118 | Date: April 2014 | ||
119 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
120 | Description: | ||
121 | Show index number of the latest full segment. | ||
122 | |||
123 | What: /sys/fs/nilfs2/<device>/segctor/next_full_seg | ||
124 | Date: April 2014 | ||
125 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
126 | Description: | ||
127 | Show index number of the full segment index | ||
128 | to be used next. | ||
129 | |||
130 | What: /sys/fs/nilfs2/<device>/segctor/next_pseg_offset | ||
131 | Date: April 2014 | ||
132 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
133 | Description: | ||
134 | Show offset of next partial segment in the current | ||
135 | full segment. | ||
136 | |||
137 | What: /sys/fs/nilfs2/<device>/segctor/next_checkpoint | ||
138 | Date: April 2014 | ||
139 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
140 | Description: | ||
141 | Show next checkpoint number. | ||
142 | |||
143 | What: /sys/fs/nilfs2/<device>/segctor/last_seg_write_time | ||
144 | Date: April 2014 | ||
145 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
146 | Description: | ||
147 | Show write time of the last segment in | ||
148 | human-readable format. | ||
149 | |||
150 | What: /sys/fs/nilfs2/<device>/segctor/last_seg_write_time_secs | ||
151 | Date: April 2014 | ||
152 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
153 | Description: | ||
154 | Show write time of the last segment in seconds. | ||
155 | |||
156 | What: /sys/fs/nilfs2/<device>/segctor/last_nongc_write_time | ||
157 | Date: April 2014 | ||
158 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
159 | Description: | ||
160 | Show write time of the last segment not for cleaner | ||
161 | operation in human-readable format. | ||
162 | |||
163 | What: /sys/fs/nilfs2/<device>/segctor/last_nongc_write_time_secs | ||
164 | Date: April 2014 | ||
165 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
166 | Description: | ||
167 | Show write time of the last segment not for cleaner | ||
168 | operation in seconds. | ||
169 | |||
170 | What: /sys/fs/nilfs2/<device>/segctor/dirty_data_blocks_count | ||
171 | Date: April 2014 | ||
172 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
173 | Description: | ||
174 | Show number of dirty data blocks. | ||
175 | |||
176 | What: /sys/fs/nilfs2/<device>/segctor/README | ||
177 | Date: April 2014 | ||
178 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
179 | Description: | ||
180 | Describe attributes of /sys/fs/nilfs2/<device>/segctor | ||
181 | group. | ||
182 | |||
183 | What: /sys/fs/nilfs2/<device>/segments/segments_number | ||
184 | Date: April 2014 | ||
185 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
186 | Description: | ||
187 | Show number of segments on a volume. | ||
188 | |||
189 | What: /sys/fs/nilfs2/<device>/segments/blocks_per_segment | ||
190 | Date: April 2014 | ||
191 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
192 | Description: | ||
193 | Show number of blocks in segment. | ||
194 | |||
195 | What: /sys/fs/nilfs2/<device>/segments/clean_segments | ||
196 | Date: April 2014 | ||
197 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
198 | Description: | ||
199 | Show count of clean segments. | ||
200 | |||
201 | What: /sys/fs/nilfs2/<device>/segments/dirty_segments | ||
202 | Date: April 2014 | ||
203 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
204 | Description: | ||
205 | Show count of dirty segments. | ||
206 | |||
207 | What: /sys/fs/nilfs2/<device>/segments/README | ||
208 | Date: April 2014 | ||
209 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
210 | Description: | ||
211 | Describe attributes of /sys/fs/nilfs2/<device>/segments | ||
212 | group. | ||
213 | |||
214 | What: /sys/fs/nilfs2/<device>/checkpoints/checkpoints_number | ||
215 | Date: April 2014 | ||
216 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
217 | Description: | ||
218 | Show number of checkpoints on volume. | ||
219 | |||
220 | What: /sys/fs/nilfs2/<device>/checkpoints/snapshots_number | ||
221 | Date: April 2014 | ||
222 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
223 | Description: | ||
224 | Show number of snapshots on volume. | ||
225 | |||
226 | What: /sys/fs/nilfs2/<device>/checkpoints/last_seg_checkpoint | ||
227 | Date: April 2014 | ||
228 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
229 | Description: | ||
230 | Show checkpoint number of the latest segment. | ||
231 | |||
232 | What: /sys/fs/nilfs2/<device>/checkpoints/next_checkpoint | ||
233 | Date: April 2014 | ||
234 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
235 | Description: | ||
236 | Show next checkpoint number. | ||
237 | |||
238 | What: /sys/fs/nilfs2/<device>/checkpoints/README | ||
239 | Date: April 2014 | ||
240 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
241 | Description: | ||
242 | Describe attributes of /sys/fs/nilfs2/<device>/checkpoints | ||
243 | group. | ||
244 | |||
245 | What: /sys/fs/nilfs2/<device>/mounted_snapshots/README | ||
246 | Date: April 2014 | ||
247 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
248 | Description: | ||
249 | Describe content of /sys/fs/nilfs2/<device>/mounted_snapshots | ||
250 | group. | ||
251 | |||
252 | What: /sys/fs/nilfs2/<device>/mounted_snapshots/<id>/inodes_count | ||
253 | Date: April 2014 | ||
254 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
255 | Description: | ||
256 | Show number of inodes for snapshot. | ||
257 | |||
258 | What: /sys/fs/nilfs2/<device>/mounted_snapshots/<id>/blocks_count | ||
259 | Date: April 2014 | ||
260 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
261 | Description: | ||
262 | Show number of blocks for snapshot. | ||
263 | |||
264 | What: /sys/fs/nilfs2/<device>/mounted_snapshots/<id>/README | ||
265 | Date: April 2014 | ||
266 | Contact: "Vyacheslav Dubeyko" <slava@dubeyko.com> | ||
267 | Description: | ||
268 | Describe attributes of /sys/fs/nilfs2/<device>/mounted_snapshots/<id> | ||
269 | group. | ||
diff --git a/Documentation/ABI/testing/sysfs-platform-ts5500 b/Documentation/ABI/testing/sysfs-platform-ts5500 index c88375a537a1..e685957caa12 100644 --- a/Documentation/ABI/testing/sysfs-platform-ts5500 +++ b/Documentation/ABI/testing/sysfs-platform-ts5500 | |||
@@ -30,6 +30,13 @@ Description: | |||
30 | the corresponding bit is set. For instance, 0x0e means jumpers | 30 | the corresponding bit is set. For instance, 0x0e means jumpers |
31 | 2, 3 and 4 are set. | 31 | 2, 3 and 4 are set. |
32 | 32 | ||
33 | What: /sys/devices/platform/ts5500/name | ||
34 | Date: July 2014 | ||
35 | KernelVersion: 3.16 | ||
36 | Contact: "Savoir-faire Linux Inc." <kernel@savoirfairelinux.com> | ||
37 | Description: | ||
38 | Model name of the TS board, e.g. "TS-5500". | ||
39 | |||
33 | What: /sys/devices/platform/ts5500/rs485 | 40 | What: /sys/devices/platform/ts5500/rs485 |
34 | Date: January 2013 | 41 | Date: January 2013 |
35 | KernelVersion: 3.7 | 42 | KernelVersion: 3.7 |
diff --git a/Documentation/ABI/testing/sysfs-tty b/Documentation/ABI/testing/sysfs-tty index ad22fb0ee765..9eb3c2b6b040 100644 --- a/Documentation/ABI/testing/sysfs-tty +++ b/Documentation/ABI/testing/sysfs-tty | |||
@@ -138,3 +138,19 @@ Description: | |||
138 | 138 | ||
139 | These sysfs values expose the TIOCGSERIAL interface via | 139 | These sysfs values expose the TIOCGSERIAL interface via |
140 | sysfs rather than via ioctls. | 140 | sysfs rather than via ioctls. |
141 | |||
142 | What: /sys/class/tty/ttyS0/rx_trig_bytes | ||
143 | Date: May 2014 | ||
144 | Contact: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com> | ||
145 | Description: | ||
146 | Shows current RX interrupt trigger bytes or sets the | ||
147 | user specified value to change it for the FIFO buffer. | ||
148 | Users can show or set this value regardless of opening the | ||
149 | serial device file or not. | ||
150 | |||
151 | The RX trigger can be set one of four kinds of values for UART | ||
152 | serials. When users input a meaning less value to this I/F, | ||
153 | the RX trigger is changed to the nearest lower value for the | ||
154 | device specification. For example, when user sets 7bytes on | ||
155 | 16550A, which has 1/4/8/14 bytes trigger, the RX trigger is | ||
156 | automatically changed to 4 bytes. | ||
diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index 6e06ebdbe0c7..f2130586ef5d 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl | |||
@@ -128,8 +128,12 @@ X!Edrivers/base/interface.c | |||
128 | !Edrivers/base/bus.c | 128 | !Edrivers/base/bus.c |
129 | </sect1> | 129 | </sect1> |
130 | <sect1><title>Device Drivers DMA Management</title> | 130 | <sect1><title>Device Drivers DMA Management</title> |
131 | !Edrivers/base/dma-buf.c | 131 | !Edrivers/dma-buf/dma-buf.c |
132 | !Edrivers/base/reservation.c | 132 | !Edrivers/dma-buf/fence.c |
133 | !Edrivers/dma-buf/seqno-fence.c | ||
134 | !Iinclude/linux/fence.h | ||
135 | !Iinclude/linux/seqno-fence.h | ||
136 | !Edrivers/dma-buf/reservation.c | ||
133 | !Iinclude/linux/reservation.h | 137 | !Iinclude/linux/reservation.h |
134 | !Edrivers/base/dma-coherent.c | 138 | !Edrivers/base/dma-coherent.c |
135 | !Edrivers/base/dma-mapping.c | 139 | !Edrivers/base/dma-mapping.c |
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl index 7df3134ebc0e..1d3756d3176c 100644 --- a/Documentation/DocBook/drm.tmpl +++ b/Documentation/DocBook/drm.tmpl | |||
@@ -1610,7 +1610,7 @@ int max_width, max_height;</synopsis> | |||
1610 | The connector is then registered with a call to | 1610 | The connector is then registered with a call to |
1611 | <function>drm_connector_init</function> with a pointer to the connector | 1611 | <function>drm_connector_init</function> with a pointer to the connector |
1612 | functions and a connector type, and exposed through sysfs with a call to | 1612 | functions and a connector type, and exposed through sysfs with a call to |
1613 | <function>drm_sysfs_connector_add</function>. | 1613 | <function>drm_connector_register</function>. |
1614 | </para> | 1614 | </para> |
1615 | <para> | 1615 | <para> |
1616 | Supported connector types are | 1616 | Supported connector types are |
@@ -1768,7 +1768,7 @@ int max_width, max_height;</synopsis> | |||
1768 | (<function>drm_encoder_cleanup</function>) and connectors | 1768 | (<function>drm_encoder_cleanup</function>) and connectors |
1769 | (<function>drm_connector_cleanup</function>). Furthermore, connectors | 1769 | (<function>drm_connector_cleanup</function>). Furthermore, connectors |
1770 | that have been added to sysfs must be removed by a call to | 1770 | that have been added to sysfs must be removed by a call to |
1771 | <function>drm_sysfs_connector_remove</function> before calling | 1771 | <function>drm_connector_unregister</function> before calling |
1772 | <function>drm_connector_cleanup</function>. | 1772 | <function>drm_connector_cleanup</function>. |
1773 | </para> | 1773 | </para> |
1774 | <para> | 1774 | <para> |
@@ -1813,7 +1813,7 @@ void intel_crt_init(struct drm_device *dev) | |||
1813 | drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs); | 1813 | drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs); |
1814 | drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); | 1814 | drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); |
1815 | 1815 | ||
1816 | drm_sysfs_connector_add(connector); | 1816 | drm_connector_register(connector); |
1817 | }]]></programlisting> | 1817 | }]]></programlisting> |
1818 | <para> | 1818 | <para> |
1819 | In the example above (taken from the i915 driver), a CRTC, connector and | 1819 | In the example above (taken from the i915 driver), a CRTC, connector and |
@@ -2338,6 +2338,12 @@ void intel_crt_init(struct drm_device *dev) | |||
2338 | !Edrivers/gpu/drm/drm_dp_helper.c | 2338 | !Edrivers/gpu/drm/drm_dp_helper.c |
2339 | </sect2> | 2339 | </sect2> |
2340 | <sect2> | 2340 | <sect2> |
2341 | <title>Display Port MST Helper Functions Reference</title> | ||
2342 | !Pdrivers/gpu/drm/drm_dp_mst_topology.c dp mst helper | ||
2343 | !Iinclude/drm/drm_dp_mst_helper.h | ||
2344 | !Edrivers/gpu/drm/drm_dp_mst_topology.c | ||
2345 | </sect2> | ||
2346 | <sect2> | ||
2341 | <title>EDID Helper Functions Reference</title> | 2347 | <title>EDID Helper Functions Reference</title> |
2342 | !Edrivers/gpu/drm/drm_edid.c | 2348 | !Edrivers/gpu/drm/drm_edid.c |
2343 | </sect2> | 2349 | </sect2> |
@@ -2502,7 +2508,7 @@ void intel_crt_init(struct drm_device *dev) | |||
2502 | <td valign="top" >Description/Restrictions</td> | 2508 | <td valign="top" >Description/Restrictions</td> |
2503 | </tr> | 2509 | </tr> |
2504 | <tr> | 2510 | <tr> |
2505 | <td rowspan="20" valign="top" >DRM</td> | 2511 | <td rowspan="21" valign="top" >DRM</td> |
2506 | <td rowspan="2" valign="top" >Generic</td> | 2512 | <td rowspan="2" valign="top" >Generic</td> |
2507 | <td valign="top" >“EDID”</td> | 2513 | <td valign="top" >“EDID”</td> |
2508 | <td valign="top" >BLOB | IMMUTABLE</td> | 2514 | <td valign="top" >BLOB | IMMUTABLE</td> |
@@ -2633,7 +2639,7 @@ void intel_crt_init(struct drm_device *dev) | |||
2633 | <td valign="top" >TBD</td> | 2639 | <td valign="top" >TBD</td> |
2634 | </tr> | 2640 | </tr> |
2635 | <tr> | 2641 | <tr> |
2636 | <td rowspan="2" valign="top" >Optional</td> | 2642 | <td rowspan="3" valign="top" >Optional</td> |
2637 | <td valign="top" >“scaling mode”</td> | 2643 | <td valign="top" >“scaling mode”</td> |
2638 | <td valign="top" >ENUM</td> | 2644 | <td valign="top" >ENUM</td> |
2639 | <td valign="top" >{ "None", "Full", "Center", "Full aspect" }</td> | 2645 | <td valign="top" >{ "None", "Full", "Center", "Full aspect" }</td> |
@@ -2641,6 +2647,15 @@ void intel_crt_init(struct drm_device *dev) | |||
2641 | <td valign="top" >TBD</td> | 2647 | <td valign="top" >TBD</td> |
2642 | </tr> | 2648 | </tr> |
2643 | <tr> | 2649 | <tr> |
2650 | <td valign="top" >"aspect ratio"</td> | ||
2651 | <td valign="top" >ENUM</td> | ||
2652 | <td valign="top" >{ "None", "4:3", "16:9" }</td> | ||
2653 | <td valign="top" >Connector</td> | ||
2654 | <td valign="top" >DRM property to set aspect ratio from user space app. | ||
2655 | This enum is made generic to allow addition of custom aspect | ||
2656 | ratios.</td> | ||
2657 | </tr> | ||
2658 | <tr> | ||
2644 | <td valign="top" >“dirty”</td> | 2659 | <td valign="top" >“dirty”</td> |
2645 | <td valign="top" >ENUM | IMMUTABLE</td> | 2660 | <td valign="top" >ENUM | IMMUTABLE</td> |
2646 | <td valign="top" >{ "Off", "On", "Annotate" }</td> | 2661 | <td valign="top" >{ "Off", "On", "Annotate" }</td> |
@@ -2649,7 +2664,7 @@ void intel_crt_init(struct drm_device *dev) | |||
2649 | </tr> | 2664 | </tr> |
2650 | <tr> | 2665 | <tr> |
2651 | <td rowspan="21" valign="top" >i915</td> | 2666 | <td rowspan="21" valign="top" >i915</td> |
2652 | <td rowspan="3" valign="top" >Generic</td> | 2667 | <td rowspan="2" valign="top" >Generic</td> |
2653 | <td valign="top" >"Broadcast RGB"</td> | 2668 | <td valign="top" >"Broadcast RGB"</td> |
2654 | <td valign="top" >ENUM</td> | 2669 | <td valign="top" >ENUM</td> |
2655 | <td valign="top" >{ "Automatic", "Full", "Limited 16:235" }</td> | 2670 | <td valign="top" >{ "Automatic", "Full", "Limited 16:235" }</td> |
@@ -2664,10 +2679,11 @@ void intel_crt_init(struct drm_device *dev) | |||
2664 | <td valign="top" >TBD</td> | 2679 | <td valign="top" >TBD</td> |
2665 | </tr> | 2680 | </tr> |
2666 | <tr> | 2681 | <tr> |
2667 | <td valign="top" >Standard name as in DRM</td> | 2682 | <td rowspan="1" valign="top" >Plane</td> |
2668 | <td valign="top" >Standard type as in DRM</td> | 2683 | <td valign="top" >“rotation”</td> |
2669 | <td valign="top" >Standard value as in DRM</td> | 2684 | <td valign="top" >BITMASK</td> |
2670 | <td valign="top" >Standard Object as in DRM</td> | 2685 | <td valign="top" >{ 0, "rotate-0" }, { 2, "rotate-180" }</td> |
2686 | <td valign="top" >Plane</td> | ||
2671 | <td valign="top" >TBD</td> | 2687 | <td valign="top" >TBD</td> |
2672 | </tr> | 2688 | </tr> |
2673 | <tr> | 2689 | <tr> |
@@ -2799,8 +2815,8 @@ void intel_crt_init(struct drm_device *dev) | |||
2799 | <td valign="top" >TBD</td> | 2815 | <td valign="top" >TBD</td> |
2800 | </tr> | 2816 | </tr> |
2801 | <tr> | 2817 | <tr> |
2802 | <td rowspan="3" valign="top" >CDV gma-500</td> | 2818 | <td rowspan="2" valign="top" >CDV gma-500</td> |
2803 | <td rowspan="3" valign="top" >Generic</td> | 2819 | <td rowspan="2" valign="top" >Generic</td> |
2804 | <td valign="top" >"Broadcast RGB"</td> | 2820 | <td valign="top" >"Broadcast RGB"</td> |
2805 | <td valign="top" >ENUM</td> | 2821 | <td valign="top" >ENUM</td> |
2806 | <td valign="top" >{ “Full”, “Limited 16:235” }</td> | 2822 | <td valign="top" >{ “Full”, “Limited 16:235” }</td> |
@@ -2815,15 +2831,8 @@ void intel_crt_init(struct drm_device *dev) | |||
2815 | <td valign="top" >TBD</td> | 2831 | <td valign="top" >TBD</td> |
2816 | </tr> | 2832 | </tr> |
2817 | <tr> | 2833 | <tr> |
2818 | <td valign="top" >Standard name as in DRM</td> | 2834 | <td rowspan="19" valign="top" >Poulsbo</td> |
2819 | <td valign="top" >Standard type as in DRM</td> | 2835 | <td rowspan="1" valign="top" >Generic</td> |
2820 | <td valign="top" >Standard value as in DRM</td> | ||
2821 | <td valign="top" >Standard Object as in DRM</td> | ||
2822 | <td valign="top" >TBD</td> | ||
2823 | </tr> | ||
2824 | <tr> | ||
2825 | <td rowspan="20" valign="top" >Poulsbo</td> | ||
2826 | <td rowspan="2" valign="top" >Generic</td> | ||
2827 | <td valign="top" >“backlight”</td> | 2836 | <td valign="top" >“backlight”</td> |
2828 | <td valign="top" >RANGE</td> | 2837 | <td valign="top" >RANGE</td> |
2829 | <td valign="top" >Min=0, Max=100</td> | 2838 | <td valign="top" >Min=0, Max=100</td> |
@@ -2831,13 +2840,6 @@ void intel_crt_init(struct drm_device *dev) | |||
2831 | <td valign="top" >TBD</td> | 2840 | <td valign="top" >TBD</td> |
2832 | </tr> | 2841 | </tr> |
2833 | <tr> | 2842 | <tr> |
2834 | <td valign="top" >Standard name as in DRM</td> | ||
2835 | <td valign="top" >Standard type as in DRM</td> | ||
2836 | <td valign="top" >Standard value as in DRM</td> | ||
2837 | <td valign="top" >Standard Object as in DRM</td> | ||
2838 | <td valign="top" >TBD</td> | ||
2839 | </tr> | ||
2840 | <tr> | ||
2841 | <td rowspan="17" valign="top" >SDVO-TV</td> | 2843 | <td rowspan="17" valign="top" >SDVO-TV</td> |
2842 | <td valign="top" >“mode”</td> | 2844 | <td valign="top" >“mode”</td> |
2843 | <td valign="top" >ENUM</td> | 2845 | <td valign="top" >ENUM</td> |
@@ -3064,7 +3066,7 @@ void intel_crt_init(struct drm_device *dev) | |||
3064 | <td valign="top" >TBD</td> | 3066 | <td valign="top" >TBD</td> |
3065 | </tr> | 3067 | </tr> |
3066 | <tr> | 3068 | <tr> |
3067 | <td rowspan="3" valign="top" >i2c/ch7006_drv</td> | 3069 | <td rowspan="2" valign="top" >i2c/ch7006_drv</td> |
3068 | <td valign="top" >Generic</td> | 3070 | <td valign="top" >Generic</td> |
3069 | <td valign="top" >“scale”</td> | 3071 | <td valign="top" >“scale”</td> |
3070 | <td valign="top" >RANGE</td> | 3072 | <td valign="top" >RANGE</td> |
@@ -3073,14 +3075,7 @@ void intel_crt_init(struct drm_device *dev) | |||
3073 | <td valign="top" >TBD</td> | 3075 | <td valign="top" >TBD</td> |
3074 | </tr> | 3076 | </tr> |
3075 | <tr> | 3077 | <tr> |
3076 | <td rowspan="2" valign="top" >TV</td> | 3078 | <td rowspan="1" valign="top" >TV</td> |
3077 | <td valign="top" >Standard names as in DRM</td> | ||
3078 | <td valign="top" >Standard types as in DRM</td> | ||
3079 | <td valign="top" >Standard Values as in DRM</td> | ||
3080 | <td valign="top" >Standard object as in DRM</td> | ||
3081 | <td valign="top" >TBD</td> | ||
3082 | </tr> | ||
3083 | <tr> | ||
3084 | <td valign="top" >“mode”</td> | 3079 | <td valign="top" >“mode”</td> |
3085 | <td valign="top" >ENUM</td> | 3080 | <td valign="top" >ENUM</td> |
3086 | <td valign="top" >{ "PAL", "PAL-M","PAL-N"}, ”PAL-Nc" | 3081 | <td valign="top" >{ "PAL", "PAL-M","PAL-N"}, ”PAL-Nc" |
@@ -3089,7 +3084,7 @@ void intel_crt_init(struct drm_device *dev) | |||
3089 | <td valign="top" >TBD</td> | 3084 | <td valign="top" >TBD</td> |
3090 | </tr> | 3085 | </tr> |
3091 | <tr> | 3086 | <tr> |
3092 | <td rowspan="16" valign="top" >nouveau</td> | 3087 | <td rowspan="15" valign="top" >nouveau</td> |
3093 | <td rowspan="6" valign="top" >NV10 Overlay</td> | 3088 | <td rowspan="6" valign="top" >NV10 Overlay</td> |
3094 | <td valign="top" >"colorkey"</td> | 3089 | <td valign="top" >"colorkey"</td> |
3095 | <td valign="top" >RANGE</td> | 3090 | <td valign="top" >RANGE</td> |
@@ -3198,14 +3193,6 @@ void intel_crt_init(struct drm_device *dev) | |||
3198 | <td valign="top" >TBD</td> | 3193 | <td valign="top" >TBD</td> |
3199 | </tr> | 3194 | </tr> |
3200 | <tr> | 3195 | <tr> |
3201 | <td valign="top" >Generic</td> | ||
3202 | <td valign="top" >Standard name as in DRM</td> | ||
3203 | <td valign="top" >Standard type as in DRM</td> | ||
3204 | <td valign="top" >Standard value as in DRM</td> | ||
3205 | <td valign="top" >Standard Object as in DRM</td> | ||
3206 | <td valign="top" >TBD</td> | ||
3207 | </tr> | ||
3208 | <tr> | ||
3209 | <td rowspan="2" valign="top" >omap</td> | 3196 | <td rowspan="2" valign="top" >omap</td> |
3210 | <td rowspan="2" valign="top" >Generic</td> | 3197 | <td rowspan="2" valign="top" >Generic</td> |
3211 | <td valign="top" >“rotation”</td> | 3198 | <td valign="top" >“rotation”</td> |
@@ -3236,7 +3223,7 @@ void intel_crt_init(struct drm_device *dev) | |||
3236 | <td valign="top" >TBD</td> | 3223 | <td valign="top" >TBD</td> |
3237 | </tr> | 3224 | </tr> |
3238 | <tr> | 3225 | <tr> |
3239 | <td rowspan="10" valign="top" >radeon</td> | 3226 | <td rowspan="9" valign="top" >radeon</td> |
3240 | <td valign="top" >DVI-I</td> | 3227 | <td valign="top" >DVI-I</td> |
3241 | <td valign="top" >“coherent”</td> | 3228 | <td valign="top" >“coherent”</td> |
3242 | <td valign="top" >RANGE</td> | 3229 | <td valign="top" >RANGE</td> |
@@ -3308,14 +3295,6 @@ void intel_crt_init(struct drm_device *dev) | |||
3308 | <td valign="top" >TBD</td> | 3295 | <td valign="top" >TBD</td> |
3309 | </tr> | 3296 | </tr> |
3310 | <tr> | 3297 | <tr> |
3311 | <td valign="top" >Generic</td> | ||
3312 | <td valign="top" >Standard name as in DRM</td> | ||
3313 | <td valign="top" >Standard type as in DRM</td> | ||
3314 | <td valign="top" >Standard value as in DRM</td> | ||
3315 | <td valign="top" >Standard Object as in DRM</td> | ||
3316 | <td valign="top" >TBD</td> | ||
3317 | </tr> | ||
3318 | <tr> | ||
3319 | <td rowspan="3" valign="top" >rcar-du</td> | 3298 | <td rowspan="3" valign="top" >rcar-du</td> |
3320 | <td rowspan="3" valign="top" >Generic</td> | 3299 | <td rowspan="3" valign="top" >Generic</td> |
3321 | <td valign="top" >"alpha"</td> | 3300 | <td valign="top" >"alpha"</td> |
diff --git a/Documentation/DocBook/gadget.tmpl b/Documentation/DocBook/gadget.tmpl index 2c425d70f7e2..641629221176 100644 --- a/Documentation/DocBook/gadget.tmpl +++ b/Documentation/DocBook/gadget.tmpl | |||
@@ -556,11 +556,11 @@ been converted to this framework. | |||
556 | Near-term plans include converting all of them, except for "gadgetfs". | 556 | Near-term plans include converting all of them, except for "gadgetfs". |
557 | </para> | 557 | </para> |
558 | 558 | ||
559 | !Edrivers/usb/gadget/f_acm.c | 559 | !Edrivers/usb/gadget/function/f_acm.c |
560 | !Edrivers/usb/gadget/f_ecm.c | 560 | !Edrivers/usb/gadget/function/f_ecm.c |
561 | !Edrivers/usb/gadget/f_subset.c | 561 | !Edrivers/usb/gadget/function/f_subset.c |
562 | !Edrivers/usb/gadget/f_obex.c | 562 | !Edrivers/usb/gadget/function/f_obex.c |
563 | !Edrivers/usb/gadget/f_serial.c | 563 | !Edrivers/usb/gadget/function/f_serial.c |
564 | 564 | ||
565 | </sect1> | 565 | </sect1> |
566 | 566 | ||
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile index 639e74857968..df2962d9e11e 100644 --- a/Documentation/DocBook/media/Makefile +++ b/Documentation/DocBook/media/Makefile | |||
@@ -174,7 +174,7 @@ FILENAME = \ | |||
174 | DOCUMENTED = \ | 174 | DOCUMENTED = \ |
175 | -e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \ | 175 | -e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \ |
176 | -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \ | 176 | -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \ |
177 | -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\) /<link linkend=\"\1\">\1<\/link> /g" \ | 177 | -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\)\(\s\+v4l2_fourcc\)/<link linkend=\"\1\">\1<\/link>\2/g" \ |
178 | -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \ | 178 | -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \ |
179 | -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g" | 179 | -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g" |
180 | 180 | ||
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml index 24c22cabc668..948ddaab592e 100644 --- a/Documentation/DocBook/media/dvb/dvbproperty.xml +++ b/Documentation/DocBook/media/dvb/dvbproperty.xml | |||
@@ -555,10 +555,46 @@ typedef enum fe_delivery_system { | |||
555 | </section> | 555 | </section> |
556 | <section id="DTV-ISDBT-LAYER-TIME-INTERLEAVING"> | 556 | <section id="DTV-ISDBT-LAYER-TIME-INTERLEAVING"> |
557 | <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title> | 557 | <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title> |
558 | <para>Possible values: 0, 1, 2, 3, -1 (AUTO)</para> | 558 | <para>Valid values: 0, 1, 2, 4, -1 (AUTO)</para> |
559 | <para>Note: The real inter-leaver depth-names depend on the mode (fft-size); the values | 559 | <para>when DTV_ISDBT_SOUND_BROADCASTING is active, value 8 is also valid.</para> |
560 | here are referring to what can be found in the TMCC-structure - | 560 | <para>Note: The real time interleaving length depends on the mode (fft-size). The values |
561 | independent of the mode.</para> | 561 | here are referring to what can be found in the TMCC-structure, as shown in the table below.</para> |
562 | <informaltable id="isdbt-layer-interleaving-table"> | ||
563 | <tgroup cols="4" align="center"> | ||
564 | <tbody> | ||
565 | <row> | ||
566 | <entry>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</entry> | ||
567 | <entry>Mode 1 (2K FFT)</entry> | ||
568 | <entry>Mode 2 (4K FFT)</entry> | ||
569 | <entry>Mode 3 (8K FFT)</entry> | ||
570 | </row> | ||
571 | <row> | ||
572 | <entry>0</entry> | ||
573 | <entry>0</entry> | ||
574 | <entry>0</entry> | ||
575 | <entry>0</entry> | ||
576 | </row> | ||
577 | <row> | ||
578 | <entry>1</entry> | ||
579 | <entry>4</entry> | ||
580 | <entry>2</entry> | ||
581 | <entry>1</entry> | ||
582 | </row> | ||
583 | <row> | ||
584 | <entry>2</entry> | ||
585 | <entry>8</entry> | ||
586 | <entry>4</entry> | ||
587 | <entry>2</entry> | ||
588 | </row> | ||
589 | <row> | ||
590 | <entry>4</entry> | ||
591 | <entry>16</entry> | ||
592 | <entry>8</entry> | ||
593 | <entry>4</entry> | ||
594 | </row> | ||
595 | </tbody> | ||
596 | </tgroup> | ||
597 | </informaltable> | ||
562 | </section> | 598 | </section> |
563 | <section id="DTV-ATSCMH-FIC-VER"> | 599 | <section id="DTV-ATSCMH-FIC-VER"> |
564 | <title><constant>DTV_ATSCMH_FIC_VER</constant></title> | 600 | <title><constant>DTV_ATSCMH_FIC_VER</constant></title> |
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index 47198eef75a4..9f5ffd85560b 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
@@ -13,6 +13,19 @@ correctly with any device.</para> | |||
13 | <para>All controls are accessed using an ID value. V4L2 defines | 13 | <para>All controls are accessed using an ID value. V4L2 defines |
14 | several IDs for specific purposes. Drivers can also implement their | 14 | several IDs for specific purposes. Drivers can also implement their |
15 | own custom controls using <constant>V4L2_CID_PRIVATE_BASE</constant> | 15 | own custom controls using <constant>V4L2_CID_PRIVATE_BASE</constant> |
16 | <footnote><para>The use of <constant>V4L2_CID_PRIVATE_BASE</constant> | ||
17 | is problematic because different drivers may use the same | ||
18 | <constant>V4L2_CID_PRIVATE_BASE</constant> ID for different controls. | ||
19 | This makes it hard to programatically set such controls since the meaning | ||
20 | of the control with that ID is driver dependent. In order to resolve this | ||
21 | drivers use unique IDs and the <constant>V4L2_CID_PRIVATE_BASE</constant> | ||
22 | IDs are mapped to those unique IDs by the kernel. Consider these | ||
23 | <constant>V4L2_CID_PRIVATE_BASE</constant> IDs as aliases to the real | ||
24 | IDs.</para> | ||
25 | <para>Many applications today still use the <constant>V4L2_CID_PRIVATE_BASE</constant> | ||
26 | IDs instead of using &VIDIOC-QUERYCTRL; with the <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> | ||
27 | flag to enumerate all IDs, so support for <constant>V4L2_CID_PRIVATE_BASE</constant> | ||
28 | is still around.</para></footnote> | ||
16 | and higher values. The pre-defined control IDs have the prefix | 29 | and higher values. The pre-defined control IDs have the prefix |
17 | <constant>V4L2_CID_</constant>, and are listed in <xref | 30 | <constant>V4L2_CID_</constant>, and are listed in <xref |
18 | linkend="control-id" />. The ID is used when querying the attributes of | 31 | linkend="control-id" />. The ID is used when querying the attributes of |
@@ -31,25 +44,22 @@ the current video input or output, tuner or modulator, or audio input | |||
31 | or output. Different in the sense of other bounds, another default and | 44 | or output. Different in the sense of other bounds, another default and |
32 | current value, step size or other menu items. A control with a certain | 45 | current value, step size or other menu items. A control with a certain |
33 | <emphasis>custom</emphasis> ID can also change name and | 46 | <emphasis>custom</emphasis> ID can also change name and |
34 | type.<footnote> | 47 | type.</para> |
35 | <para>It will be more convenient for applications if drivers | 48 | |
36 | make use of the <constant>V4L2_CTRL_FLAG_DISABLED</constant> flag, but | 49 | <para>If a control is not applicable to the current configuration |
37 | that was never required.</para> | 50 | of the device (for example, it doesn't apply to the current video input) |
38 | </footnote> Control values are stored globally, they do not | 51 | drivers set the <constant>V4L2_CTRL_FLAG_INACTIVE</constant> flag.</para> |
52 | |||
53 | <para>Control values are stored globally, they do not | ||
39 | change when switching except to stay within the reported bounds. They | 54 | change when switching except to stay within the reported bounds. They |
40 | also do not change ⪚ when the device is opened or closed, when the | 55 | also do not change ⪚ when the device is opened or closed, when the |
41 | tuner radio frequency is changed or generally never without | 56 | tuner radio frequency is changed or generally never without |
42 | application request. Since V4L2 specifies no event mechanism, panel | 57 | application request.</para> |
43 | applications intended to cooperate with other panel applications (be | 58 | |
44 | they built into a larger application, as a TV viewer) may need to | 59 | <para>V4L2 specifies an event mechanism to notify applications |
45 | regularly poll control values to update their user | 60 | when controls change value (see &VIDIOC-SUBSCRIBE-EVENT;, event |
46 | interface.<footnote> | 61 | <constant>V4L2_EVENT_CTRL</constant>), panel applications might want to make |
47 | <para>Applications could call an ioctl to request events. | 62 | use of that in order to always reflect the correct control value.</para> |
48 | After another process called &VIDIOC-S-CTRL; or another ioctl changing | ||
49 | shared properties the &func-select; function would indicate | ||
50 | readability until any ioctl (querying the properties) is | ||
51 | called.</para> | ||
52 | </footnote></para> | ||
53 | 63 | ||
54 | <para> | 64 | <para> |
55 | All controls use machine endianness. | 65 | All controls use machine endianness. |
@@ -398,14 +408,17 @@ to work.</entry> | |||
398 | <row id="v4l2-alpha-component"> | 408 | <row id="v4l2-alpha-component"> |
399 | <entry><constant>V4L2_CID_ALPHA_COMPONENT</constant></entry> | 409 | <entry><constant>V4L2_CID_ALPHA_COMPONENT</constant></entry> |
400 | <entry>integer</entry> | 410 | <entry>integer</entry> |
401 | <entry> Sets the alpha color component on the capture device or on | 411 | <entry>Sets the alpha color component. When a capture device (or |
402 | the capture buffer queue of a mem-to-mem device. When a mem-to-mem | 412 | capture queue of a mem-to-mem device) produces a frame format that |
403 | device produces frame format that includes an alpha component | 413 | includes an alpha component |
404 | (e.g. <link linkend="rgb-formats">packed RGB image formats</link>) | 414 | (e.g. <link linkend="rgb-formats">packed RGB image formats</link>) |
405 | and the alpha value is not defined by the mem-to-mem input data | 415 | and the alpha value is not defined by the device or the mem-to-mem |
406 | this control lets you select the alpha component value of all | 416 | input data this control lets you select the alpha component value of |
407 | pixels. It is applicable to any pixel format that contains an alpha | 417 | all pixels. When an output device (or output queue of a mem-to-mem |
408 | component. | 418 | device) consumes a frame format that doesn't include an alpha |
419 | component and the device supports alpha channel processing this | ||
420 | control lets you set the alpha component value of all pixels for | ||
421 | further processing in the device. | ||
409 | </entry> | 422 | </entry> |
410 | </row> | 423 | </row> |
411 | <row> | 424 | <row> |
@@ -434,127 +447,152 @@ Drivers must implement <constant>VIDIOC_QUERYCTRL</constant>, | |||
434 | controls, <constant>VIDIOC_QUERYMENU</constant> when it has one or | 447 | controls, <constant>VIDIOC_QUERYMENU</constant> when it has one or |
435 | more menu type controls.</para> | 448 | more menu type controls.</para> |
436 | 449 | ||
437 | <example> | 450 | <example id="enum_all_controls"> |
438 | <title>Enumerating all controls</title> | 451 | <title>Enumerating all user controls</title> |
439 | 452 | ||
440 | <programlisting> | 453 | <programlisting> |
441 | &v4l2-queryctrl; queryctrl; | 454 | &v4l2-queryctrl; queryctrl; |
442 | &v4l2-querymenu; querymenu; | 455 | &v4l2-querymenu; querymenu; |
443 | 456 | ||
444 | static void | 457 | static void enumerate_menu(void) |
445 | enumerate_menu (void) | ||
446 | { | 458 | { |
447 | printf (" Menu items:\n"); | 459 | printf(" Menu items:\n"); |
448 | 460 | ||
449 | memset (&querymenu, 0, sizeof (querymenu)); | 461 | memset(&querymenu, 0, sizeof(querymenu)); |
450 | querymenu.id = queryctrl.id; | 462 | querymenu.id = queryctrl.id; |
451 | 463 | ||
452 | for (querymenu.index = queryctrl.minimum; | 464 | for (querymenu.index = queryctrl.minimum; |
453 | querymenu.index <= queryctrl.maximum; | 465 | querymenu.index <= queryctrl.maximum; |
454 | querymenu.index++) { | 466 | querymenu.index++) { |
455 | if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &querymenu)) { | 467 | if (0 == ioctl(fd, &VIDIOC-QUERYMENU;, &querymenu)) { |
456 | printf (" %s\n", querymenu.name); | 468 | printf(" %s\n", querymenu.name); |
457 | } | 469 | } |
458 | } | 470 | } |
459 | } | 471 | } |
460 | 472 | ||
461 | memset (&queryctrl, 0, sizeof (queryctrl)); | 473 | memset(&queryctrl, 0, sizeof(queryctrl)); |
462 | 474 | ||
463 | for (queryctrl.id = V4L2_CID_BASE; | 475 | for (queryctrl.id = V4L2_CID_BASE; |
464 | queryctrl.id < V4L2_CID_LASTP1; | 476 | queryctrl.id < V4L2_CID_LASTP1; |
465 | queryctrl.id++) { | 477 | queryctrl.id++) { |
466 | if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { | 478 | if (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { |
467 | if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) | 479 | if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) |
468 | continue; | 480 | continue; |
469 | 481 | ||
470 | printf ("Control %s\n", queryctrl.name); | 482 | printf("Control %s\n", queryctrl.name); |
471 | 483 | ||
472 | if (queryctrl.type == V4L2_CTRL_TYPE_MENU) | 484 | if (queryctrl.type == V4L2_CTRL_TYPE_MENU) |
473 | enumerate_menu (); | 485 | enumerate_menu(); |
474 | } else { | 486 | } else { |
475 | if (errno == EINVAL) | 487 | if (errno == EINVAL) |
476 | continue; | 488 | continue; |
477 | 489 | ||
478 | perror ("VIDIOC_QUERYCTRL"); | 490 | perror("VIDIOC_QUERYCTRL"); |
479 | exit (EXIT_FAILURE); | 491 | exit(EXIT_FAILURE); |
480 | } | 492 | } |
481 | } | 493 | } |
482 | 494 | ||
483 | for (queryctrl.id = V4L2_CID_PRIVATE_BASE;; | 495 | for (queryctrl.id = V4L2_CID_PRIVATE_BASE;; |
484 | queryctrl.id++) { | 496 | queryctrl.id++) { |
485 | if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { | 497 | if (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { |
486 | if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) | 498 | if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) |
487 | continue; | 499 | continue; |
488 | 500 | ||
489 | printf ("Control %s\n", queryctrl.name); | 501 | printf("Control %s\n", queryctrl.name); |
490 | 502 | ||
491 | if (queryctrl.type == V4L2_CTRL_TYPE_MENU) | 503 | if (queryctrl.type == V4L2_CTRL_TYPE_MENU) |
492 | enumerate_menu (); | 504 | enumerate_menu(); |
493 | } else { | 505 | } else { |
494 | if (errno == EINVAL) | 506 | if (errno == EINVAL) |
495 | break; | 507 | break; |
496 | 508 | ||
497 | perror ("VIDIOC_QUERYCTRL"); | 509 | perror("VIDIOC_QUERYCTRL"); |
498 | exit (EXIT_FAILURE); | 510 | exit(EXIT_FAILURE); |
499 | } | 511 | } |
500 | } | 512 | } |
501 | </programlisting> | 513 | </programlisting> |
502 | </example> | 514 | </example> |
503 | 515 | ||
504 | <example> | 516 | <example> |
517 | <title>Enumerating all user controls (alternative)</title> | ||
518 | <programlisting> | ||
519 | memset(&queryctrl, 0, sizeof(queryctrl)); | ||
520 | |||
521 | queryctrl.id = V4L2_CTRL_CLASS_USER | V4L2_CTRL_FLAG_NEXT_CTRL; | ||
522 | while (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { | ||
523 | if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER) | ||
524 | break; | ||
525 | if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) | ||
526 | continue; | ||
527 | |||
528 | printf("Control %s\n", queryctrl.name); | ||
529 | |||
530 | if (queryctrl.type == V4L2_CTRL_TYPE_MENU) | ||
531 | enumerate_menu(); | ||
532 | |||
533 | queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; | ||
534 | } | ||
535 | if (errno != EINVAL) { | ||
536 | perror("VIDIOC_QUERYCTRL"); | ||
537 | exit(EXIT_FAILURE); | ||
538 | } | ||
539 | </programlisting> | ||
540 | </example> | ||
541 | |||
542 | <example> | ||
505 | <title>Changing controls</title> | 543 | <title>Changing controls</title> |
506 | 544 | ||
507 | <programlisting> | 545 | <programlisting> |
508 | &v4l2-queryctrl; queryctrl; | 546 | &v4l2-queryctrl; queryctrl; |
509 | &v4l2-control; control; | 547 | &v4l2-control; control; |
510 | 548 | ||
511 | memset (&queryctrl, 0, sizeof (queryctrl)); | 549 | memset(&queryctrl, 0, sizeof(queryctrl)); |
512 | queryctrl.id = V4L2_CID_BRIGHTNESS; | 550 | queryctrl.id = V4L2_CID_BRIGHTNESS; |
513 | 551 | ||
514 | if (-1 == ioctl (fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { | 552 | if (-1 == ioctl(fd, &VIDIOC-QUERYCTRL;, &queryctrl)) { |
515 | if (errno != EINVAL) { | 553 | if (errno != EINVAL) { |
516 | perror ("VIDIOC_QUERYCTRL"); | 554 | perror("VIDIOC_QUERYCTRL"); |
517 | exit (EXIT_FAILURE); | 555 | exit(EXIT_FAILURE); |
518 | } else { | 556 | } else { |
519 | printf ("V4L2_CID_BRIGHTNESS is not supported\n"); | 557 | printf("V4L2_CID_BRIGHTNESS is not supported\n"); |
520 | } | 558 | } |
521 | } else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) { | 559 | } else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) { |
522 | printf ("V4L2_CID_BRIGHTNESS is not supported\n"); | 560 | printf("V4L2_CID_BRIGHTNESS is not supported\n"); |
523 | } else { | 561 | } else { |
524 | memset (&control, 0, sizeof (control)); | 562 | memset(&control, 0, sizeof (control)); |
525 | control.id = V4L2_CID_BRIGHTNESS; | 563 | control.id = V4L2_CID_BRIGHTNESS; |
526 | control.value = queryctrl.default_value; | 564 | control.value = queryctrl.default_value; |
527 | 565 | ||
528 | if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &control)) { | 566 | if (-1 == ioctl(fd, &VIDIOC-S-CTRL;, &control)) { |
529 | perror ("VIDIOC_S_CTRL"); | 567 | perror("VIDIOC_S_CTRL"); |
530 | exit (EXIT_FAILURE); | 568 | exit(EXIT_FAILURE); |
531 | } | 569 | } |
532 | } | 570 | } |
533 | 571 | ||
534 | memset (&control, 0, sizeof (control)); | 572 | memset(&control, 0, sizeof(control)); |
535 | control.id = V4L2_CID_CONTRAST; | 573 | control.id = V4L2_CID_CONTRAST; |
536 | 574 | ||
537 | if (0 == ioctl (fd, &VIDIOC-G-CTRL;, &control)) { | 575 | if (0 == ioctl(fd, &VIDIOC-G-CTRL;, &control)) { |
538 | control.value += 1; | 576 | control.value += 1; |
539 | 577 | ||
540 | /* The driver may clamp the value or return ERANGE, ignored here */ | 578 | /* The driver may clamp the value or return ERANGE, ignored here */ |
541 | 579 | ||
542 | if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &control) | 580 | if (-1 == ioctl(fd, &VIDIOC-S-CTRL;, &control) |
543 | && errno != ERANGE) { | 581 | && errno != ERANGE) { |
544 | perror ("VIDIOC_S_CTRL"); | 582 | perror("VIDIOC_S_CTRL"); |
545 | exit (EXIT_FAILURE); | 583 | exit(EXIT_FAILURE); |
546 | } | 584 | } |
547 | /* Ignore if V4L2_CID_CONTRAST is unsupported */ | 585 | /* Ignore if V4L2_CID_CONTRAST is unsupported */ |
548 | } else if (errno != EINVAL) { | 586 | } else if (errno != EINVAL) { |
549 | perror ("VIDIOC_G_CTRL"); | 587 | perror("VIDIOC_G_CTRL"); |
550 | exit (EXIT_FAILURE); | 588 | exit(EXIT_FAILURE); |
551 | } | 589 | } |
552 | 590 | ||
553 | control.id = V4L2_CID_AUDIO_MUTE; | 591 | control.id = V4L2_CID_AUDIO_MUTE; |
554 | control.value = TRUE; /* silence */ | 592 | control.value = 1; /* silence */ |
555 | 593 | ||
556 | /* Errors ignored */ | 594 | /* Errors ignored */ |
557 | ioctl (fd, VIDIOC_S_CTRL, &control); | 595 | ioctl(fd, VIDIOC_S_CTRL, &control); |
558 | </programlisting> | 596 | </programlisting> |
559 | </example> | 597 | </example> |
560 | </section> | 598 | </section> |
@@ -625,16 +663,29 @@ supported.</para> | |||
625 | &v4l2-control;, except for the fact that it also allows for 64-bit | 663 | &v4l2-control;, except for the fact that it also allows for 64-bit |
626 | values and pointers to be passed.</para> | 664 | values and pointers to be passed.</para> |
627 | 665 | ||
666 | <para>Since the &v4l2-ext-control; supports pointers it is now | ||
667 | also possible to have controls with compound types such as N-dimensional arrays | ||
668 | and/or structures. You need to specify the <constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant> | ||
669 | when enumerating controls to actually be able to see such compound controls. | ||
670 | In other words, these controls with compound types should only be used | ||
671 | programmatically.</para> | ||
672 | |||
673 | <para>Since such compound controls need to expose more information | ||
674 | about themselves than is possible with &VIDIOC-QUERYCTRL; the | ||
675 | &VIDIOC-QUERY-EXT-CTRL; ioctl was added. In particular, this ioctl gives | ||
676 | the dimensions of the N-dimensional array if this control consists of more than | ||
677 | one element.</para> | ||
678 | |||
628 | <para>It is important to realize that due to the flexibility of | 679 | <para>It is important to realize that due to the flexibility of |
629 | controls it is necessary to check whether the control you want to set | 680 | controls it is necessary to check whether the control you want to set |
630 | actually is supported in the driver and what the valid range of values | 681 | actually is supported in the driver and what the valid range of values |
631 | is. So use the &VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls to | 682 | is. So use the &VIDIOC-QUERYCTRL; (or &VIDIOC-QUERY-EXT-CTRL;) and |
632 | check this. Also note that it is possible that some of the menu | 683 | &VIDIOC-QUERYMENU; ioctls to check this. Also note that it is possible |
633 | indices in a control of type <constant>V4L2_CTRL_TYPE_MENU</constant> | 684 | that some of the menu indices in a control of type |
634 | may not be supported (<constant>VIDIOC_QUERYMENU</constant> will | 685 | <constant>V4L2_CTRL_TYPE_MENU</constant> may not be supported |
635 | return an error). A good example is the list of supported MPEG audio | 686 | (<constant>VIDIOC_QUERYMENU</constant> will return an error). A good |
636 | bitrates. Some drivers only support one or two bitrates, others | 687 | example is the list of supported MPEG audio bitrates. Some drivers only |
637 | support a wider range.</para> | 688 | support one or two bitrates, others support a wider range.</para> |
638 | 689 | ||
639 | <para> | 690 | <para> |
640 | All controls use machine endianness. | 691 | All controls use machine endianness. |
@@ -675,12 +726,12 @@ control class is found:</para> | |||
675 | <informalexample> | 726 | <informalexample> |
676 | <programlisting> | 727 | <programlisting> |
677 | qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL; | 728 | qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL; |
678 | while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &qctrl)) { | 729 | while (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &qctrl)) { |
679 | if (V4L2_CTRL_ID2CLASS (qctrl.id) != V4L2_CTRL_CLASS_MPEG) | 730 | if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG) |
680 | break; | 731 | break; |
681 | /* ... */ | 732 | /* ... */ |
682 | qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; | 733 | qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; |
683 | } | 734 | } |
684 | </programlisting> | 735 | </programlisting> |
685 | </informalexample> | 736 | </informalexample> |
686 | 737 | ||
@@ -700,7 +751,7 @@ ID based on a control ID.</para> | |||
700 | <constant>VIDIOC_QUERYCTRL</constant> will fail when used in | 751 | <constant>VIDIOC_QUERYCTRL</constant> will fail when used in |
701 | combination with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>. In | 752 | combination with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>. In |
702 | that case the old method of enumerating control should be used (see | 753 | that case the old method of enumerating control should be used (see |
703 | 1.8). But if it is supported, then it is guaranteed to enumerate over | 754 | <xref linkend="enum_all_controls" />). But if it is supported, then it is guaranteed to enumerate over |
704 | all controls, including driver-private controls.</para> | 755 | all controls, including driver-private controls.</para> |
705 | </section> | 756 | </section> |
706 | 757 | ||
@@ -4000,6 +4051,68 @@ to find receivers which can scroll strings sized as 32 x N or 64 x N characters. | |||
4000 | with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry> | 4051 | with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry> |
4001 | </row> | 4052 | </row> |
4002 | <row> | 4053 | <row> |
4054 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_MONO_STEREO</constant> </entry> | ||
4055 | <entry>boolean</entry> | ||
4056 | </row> | ||
4057 | <row><entry spanname="descr">Sets the Mono/Stereo bit of the Decoder Identification code. If set, | ||
4058 | then the audio was recorded as stereo.</entry> | ||
4059 | </row> | ||
4060 | <row> | ||
4061 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_ARTIFICIAL_HEAD</constant> </entry> | ||
4062 | <entry>boolean</entry> | ||
4063 | </row> | ||
4064 | <row><entry spanname="descr">Sets the | ||
4065 | <ulink url="http://en.wikipedia.org/wiki/Artificial_head">Artificial Head</ulink> bit of the Decoder | ||
4066 | Identification code. If set, then the audio was recorded using an artificial head.</entry> | ||
4067 | </row> | ||
4068 | <row> | ||
4069 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_COMPRESSED</constant> </entry> | ||
4070 | <entry>boolean</entry> | ||
4071 | </row> | ||
4072 | <row><entry spanname="descr">Sets the Compressed bit of the Decoder Identification code. If set, | ||
4073 | then the audio is compressed.</entry> | ||
4074 | </row> | ||
4075 | <row> | ||
4076 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_DYNAMIC_PTY</constant> </entry> | ||
4077 | <entry>boolean</entry> | ||
4078 | </row> | ||
4079 | <row><entry spanname="descr">Sets the Dynamic PTY bit of the Decoder Identification code. If set, | ||
4080 | then the PTY code is dynamically switched.</entry> | ||
4081 | </row> | ||
4082 | <row> | ||
4083 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT</constant> </entry> | ||
4084 | <entry>boolean</entry> | ||
4085 | </row> | ||
4086 | <row><entry spanname="descr">If set, then a traffic announcement is in progress.</entry> | ||
4087 | </row> | ||
4088 | <row> | ||
4089 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_TRAFFIC_PROGRAM</constant> </entry> | ||
4090 | <entry>boolean</entry> | ||
4091 | </row> | ||
4092 | <row><entry spanname="descr">If set, then the tuned programme carries traffic announcements.</entry> | ||
4093 | </row> | ||
4094 | <row> | ||
4095 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_MUSIC_SPEECH</constant> </entry> | ||
4096 | <entry>boolean</entry> | ||
4097 | </row> | ||
4098 | <row><entry spanname="descr">If set, then this channel broadcasts music. If cleared, then it | ||
4099 | broadcasts speech. If the transmitter doesn't make this distinction, then it should be set.</entry> | ||
4100 | </row> | ||
4101 | <row> | ||
4102 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_ALT_FREQS_ENABLE</constant> </entry> | ||
4103 | <entry>boolean</entry> | ||
4104 | </row> | ||
4105 | <row><entry spanname="descr">If set, then transmit alternate frequencies.</entry> | ||
4106 | </row> | ||
4107 | <row> | ||
4108 | <entry spanname="id"><constant>V4L2_CID_RDS_TX_ALT_FREQS</constant> </entry> | ||
4109 | <entry>__u32 array</entry> | ||
4110 | </row> | ||
4111 | <row><entry spanname="descr">The alternate frequencies in kHz units. The RDS standard allows | ||
4112 | for up to 25 frequencies to be defined. Drivers may support fewer frequencies so check | ||
4113 | the array size.</entry> | ||
4114 | </row> | ||
4115 | <row> | ||
4003 | <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_ENABLED</constant> </entry> | 4116 | <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_ENABLED</constant> </entry> |
4004 | <entry>boolean</entry> | 4117 | <entry>boolean</entry> |
4005 | </row> | 4118 | </row> |
@@ -4976,6 +5089,57 @@ description of this control class.</entry> | |||
4976 | </row><row><entry spanname="descr">Enables/disables RDS | 5089 | </row><row><entry spanname="descr">Enables/disables RDS |
4977 | reception by the radio tuner</entry> | 5090 | reception by the radio tuner</entry> |
4978 | </row> | 5091 | </row> |
5092 | <row> | ||
5093 | <entry spanname="id"><constant>V4L2_CID_RDS_RX_PTY</constant> </entry> | ||
5094 | <entry>integer</entry> | ||
5095 | </row> | ||
5096 | <row><entry spanname="descr">Gets RDS Programme Type field. | ||
5097 | This encodes up to 31 pre-defined programme types.</entry> | ||
5098 | </row> | ||
5099 | <row> | ||
5100 | <entry spanname="id"><constant>V4L2_CID_RDS_RX_PS_NAME</constant> </entry> | ||
5101 | <entry>string</entry> | ||
5102 | </row> | ||
5103 | <row><entry spanname="descr">Gets the Programme Service name (PS_NAME). | ||
5104 | It is intended for static display on a receiver. It is the primary aid to listeners in programme service | ||
5105 | identification and selection. In Annex E of <xref linkend="iec62106" />, the RDS specification, | ||
5106 | there is a full description of the correct character encoding for Programme Service name strings. | ||
5107 | Also from RDS specification, PS is usually a single eight character text. However, it is also possible | ||
5108 | to find receivers which can scroll strings sized as 8 x N characters. So, this control must be configured | ||
5109 | with steps of 8 characters. The result is it must always contain a string with size multiple of 8.</entry> | ||
5110 | </row> | ||
5111 | <row> | ||
5112 | <entry spanname="id"><constant>V4L2_CID_RDS_RX_RADIO_TEXT</constant> </entry> | ||
5113 | <entry>string</entry> | ||
5114 | </row> | ||
5115 | <row><entry spanname="descr">Gets the Radio Text info. It is a textual description of | ||
5116 | what is being broadcasted. RDS Radio Text can be applied when broadcaster wishes to transmit longer PS names, | ||
5117 | programme-related information or any other text. In these cases, RadioText can be used in addition to | ||
5118 | <constant>V4L2_CID_RDS_RX_PS_NAME</constant>. The encoding for Radio Text strings is also fully described | ||
5119 | in Annex E of <xref linkend="iec62106" />. The length of Radio Text strings depends on which RDS Block is being | ||
5120 | used to transmit it, either 32 (2A block) or 64 (2B block). However, it is also possible | ||
5121 | to find receivers which can scroll strings sized as 32 x N or 64 x N characters. So, this control must be configured | ||
5122 | with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry> | ||
5123 | </row> | ||
5124 | <row> | ||
5125 | <entry spanname="id"><constant>V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT</constant> </entry> | ||
5126 | <entry>boolean</entry> | ||
5127 | </row> | ||
5128 | <row><entry spanname="descr">If set, then a traffic announcement is in progress.</entry> | ||
5129 | </row> | ||
5130 | <row> | ||
5131 | <entry spanname="id"><constant>V4L2_CID_RDS_RX_TRAFFIC_PROGRAM</constant> </entry> | ||
5132 | <entry>boolean</entry> | ||
5133 | </row> | ||
5134 | <row><entry spanname="descr">If set, then the tuned programme carries traffic announcements.</entry> | ||
5135 | </row> | ||
5136 | <row> | ||
5137 | <entry spanname="id"><constant>V4L2_CID_RDS_RX_MUSIC_SPEECH</constant> </entry> | ||
5138 | <entry>boolean</entry> | ||
5139 | </row> | ||
5140 | <row><entry spanname="descr">If set, then this channel broadcasts music. If cleared, then it | ||
5141 | broadcasts speech. If the transmitter doesn't make this distinction, then it will be set.</entry> | ||
5142 | </row> | ||
4979 | <row> | 5143 | <row> |
4980 | <entry spanname="id"><constant>V4L2_CID_TUNE_DEEMPHASIS</constant> </entry> | 5144 | <entry spanname="id"><constant>V4L2_CID_TUNE_DEEMPHASIS</constant> </entry> |
4981 | <entry>enum v4l2_deemphasis</entry> | 5145 | <entry>enum v4l2_deemphasis</entry> |
@@ -5007,6 +5171,102 @@ defines possible values for de-emphasis. Here they are:</entry> | |||
5007 | </tbody> | 5171 | </tbody> |
5008 | </tgroup> | 5172 | </tgroup> |
5009 | </table> | 5173 | </table> |
5174 | </section> | ||
5175 | |||
5176 | <section id="detect-controls"> | ||
5177 | <title>Detect Control Reference</title> | ||
5178 | |||
5179 | <para>The Detect class includes controls for common features of | ||
5180 | various motion or object detection capable devices.</para> | ||
5181 | |||
5182 | <table pgwide="1" frame="none" id="detect-control-id"> | ||
5183 | <title>Detect Control IDs</title> | ||
5184 | |||
5185 | <tgroup cols="4"> | ||
5186 | <colspec colname="c1" colwidth="1*" /> | ||
5187 | <colspec colname="c2" colwidth="6*" /> | ||
5188 | <colspec colname="c3" colwidth="2*" /> | ||
5189 | <colspec colname="c4" colwidth="6*" /> | ||
5190 | <spanspec namest="c1" nameend="c2" spanname="id" /> | ||
5191 | <spanspec namest="c2" nameend="c4" spanname="descr" /> | ||
5192 | <thead> | ||
5193 | <row> | ||
5194 | <entry spanname="id" align="left">ID</entry> | ||
5195 | <entry align="left">Type</entry> | ||
5196 | </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry> | ||
5197 | </row> | ||
5198 | </thead> | ||
5199 | <tbody valign="top"> | ||
5200 | <row><entry></entry></row> | ||
5201 | <row> | ||
5202 | <entry spanname="id"><constant>V4L2_CID_DETECT_CLASS</constant> </entry> | ||
5203 | <entry>class</entry> | ||
5204 | </row><row><entry spanname="descr">The Detect class | ||
5205 | descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a | ||
5206 | description of this control class.</entry> | ||
5207 | </row> | ||
5208 | <row> | ||
5209 | <entry spanname="id"><constant>V4L2_CID_DETECT_MD_MODE</constant> </entry> | ||
5210 | <entry>menu</entry> | ||
5211 | </row><row><entry spanname="descr">Sets the motion detection mode.</entry> | ||
5212 | </row> | ||
5213 | <row> | ||
5214 | <entrytbl spanname="descr" cols="2"> | ||
5215 | <tbody valign="top"> | ||
5216 | <row> | ||
5217 | <entry><constant>V4L2_DETECT_MD_MODE_DISABLED</constant> | ||
5218 | </entry><entry>Disable motion detection.</entry> | ||
5219 | </row> | ||
5220 | <row> | ||
5221 | <entry><constant>V4L2_DETECT_MD_MODE_GLOBAL</constant> | ||
5222 | </entry><entry>Use a single motion detection threshold.</entry> | ||
5223 | </row> | ||
5224 | <row> | ||
5225 | <entry><constant>V4L2_DETECT_MD_MODE_THRESHOLD_GRID</constant> | ||
5226 | </entry><entry>The image is divided into a grid, each cell with its own | ||
5227 | motion detection threshold. These thresholds are set through the | ||
5228 | <constant>V4L2_CID_DETECT_MD_THRESHOLD_GRID</constant> matrix control.</entry> | ||
5229 | </row> | ||
5230 | <row> | ||
5231 | <entry><constant>V4L2_DETECT_MD_MODE_REGION_GRID</constant> | ||
5232 | </entry><entry>The image is divided into a grid, each cell with its own | ||
5233 | region value that specifies which per-region motion detection thresholds | ||
5234 | should be used. Each region has its own thresholds. How these per-region | ||
5235 | thresholds are set up is driver-specific. The region values for the grid are set | ||
5236 | through the <constant>V4L2_CID_DETECT_MD_REGION_GRID</constant> matrix | ||
5237 | control.</entry> | ||
5238 | </row> | ||
5239 | </tbody> | ||
5240 | </entrytbl> | ||
5241 | </row> | ||
5242 | <row> | ||
5243 | <entry spanname="id"><constant>V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD</constant> </entry> | ||
5244 | <entry>integer</entry> | ||
5245 | </row> | ||
5246 | <row><entry spanname="descr">Sets the global motion detection threshold to be | ||
5247 | used with the <constant>V4L2_DETECT_MD_MODE_GLOBAL</constant> motion detection mode.</entry> | ||
5248 | </row> | ||
5249 | <row> | ||
5250 | <entry spanname="id"><constant>V4L2_CID_DETECT_MD_THRESHOLD_GRID</constant> </entry> | ||
5251 | <entry>__u16 matrix</entry> | ||
5252 | </row> | ||
5253 | <row><entry spanname="descr">Sets the motion detection thresholds for each cell in the grid. | ||
5254 | To be used with the <constant>V4L2_DETECT_MD_MODE_THRESHOLD_GRID</constant> | ||
5255 | motion detection mode. Matrix element (0, 0) represents the cell at the top-left of the | ||
5256 | grid.</entry> | ||
5257 | </row> | ||
5258 | <row> | ||
5259 | <entry spanname="id"><constant>V4L2_CID_DETECT_MD_REGION_GRID</constant> </entry> | ||
5260 | <entry>__u8 matrix</entry> | ||
5261 | </row> | ||
5262 | <row><entry spanname="descr">Sets the motion detection region value for each cell in the grid. | ||
5263 | To be used with the <constant>V4L2_DETECT_MD_MODE_REGION_GRID</constant> | ||
5264 | motion detection mode. Matrix element (0, 0) represents the cell at the top-left of the | ||
5265 | grid.</entry> | ||
5266 | </row> | ||
5267 | </tbody> | ||
5268 | </tgroup> | ||
5269 | </table> | ||
5010 | 5270 | ||
5011 | </section> | 5271 | </section> |
5012 | 5272 | ||
diff --git a/Documentation/DocBook/media/v4l/dev-raw-vbi.xml b/Documentation/DocBook/media/v4l/dev-raw-vbi.xml index b788c72c885e..f4b61b6ce3c2 100644 --- a/Documentation/DocBook/media/v4l/dev-raw-vbi.xml +++ b/Documentation/DocBook/media/v4l/dev-raw-vbi.xml | |||
@@ -150,9 +150,15 @@ signal. Drivers shall not convert the sample format by software.</para></entry> | |||
150 | <entry>This is the scanning system line number | 150 | <entry>This is the scanning system line number |
151 | associated with the first line of the VBI image, of the first and the | 151 | associated with the first line of the VBI image, of the first and the |
152 | second field respectively. See <xref linkend="vbi-525" /> and | 152 | second field respectively. See <xref linkend="vbi-525" /> and |
153 | <xref linkend="vbi-625" /> for valid values. VBI input drivers can | 153 | <xref linkend="vbi-625" /> for valid values. |
154 | return start values 0 if the hardware cannot reliable identify | 154 | The <constant>V4L2_VBI_ITU_525_F1_START</constant>, |
155 | scanning lines, VBI acquisition may not require this | 155 | <constant>V4L2_VBI_ITU_525_F2_START</constant>, |
156 | <constant>V4L2_VBI_ITU_625_F1_START</constant> and | ||
157 | <constant>V4L2_VBI_ITU_625_F2_START</constant> defines give the start line | ||
158 | numbers for each field for each 525 or 625 line format as a convenience. | ||
159 | Don't forget that ITU line numbering starts at 1, not 0. | ||
160 | VBI input drivers can return start values 0 if the hardware cannot | ||
161 | reliable identify scanning lines, VBI acquisition may not require this | ||
156 | information.</entry> | 162 | information.</entry> |
157 | </row> | 163 | </row> |
158 | <row> | 164 | <row> |
diff --git a/Documentation/DocBook/media/v4l/dev-sdr.xml b/Documentation/DocBook/media/v4l/dev-sdr.xml index dc14804f5436..f8903568a243 100644 --- a/Documentation/DocBook/media/v4l/dev-sdr.xml +++ b/Documentation/DocBook/media/v4l/dev-sdr.xml | |||
@@ -72,9 +72,12 @@ To use the <link linkend="format">format</link> ioctls applications set the | |||
72 | <constant>V4L2_BUF_TYPE_SDR_CAPTURE</constant> and use the &v4l2-sdr-format; | 72 | <constant>V4L2_BUF_TYPE_SDR_CAPTURE</constant> and use the &v4l2-sdr-format; |
73 | <structfield>sdr</structfield> member of the <structfield>fmt</structfield> | 73 | <structfield>sdr</structfield> member of the <structfield>fmt</structfield> |
74 | union as needed per the desired operation. | 74 | union as needed per the desired operation. |
75 | Currently only the <structfield>pixelformat</structfield> field of | 75 | Currently there is two fields, <structfield>pixelformat</structfield> and |
76 | &v4l2-sdr-format; is used. The content of that field is the V4L2 fourcc code | 76 | <structfield>buffersize</structfield>, of struct &v4l2-sdr-format; which are |
77 | of the data format. | 77 | used. Content of the <structfield>pixelformat</structfield> is V4L2 FourCC |
78 | code of the data format. The <structfield>buffersize</structfield> field is | ||
79 | maximum buffer size in bytes required for data transfer, set by the driver in | ||
80 | order to inform application. | ||
78 | </para> | 81 | </para> |
79 | 82 | ||
80 | <table pgwide="1" frame="none" id="v4l2-sdr-format"> | 83 | <table pgwide="1" frame="none" id="v4l2-sdr-format"> |
@@ -92,8 +95,15 @@ V4L2 defines SDR formats in <xref linkend="sdr-formats" />. | |||
92 | </entry> | 95 | </entry> |
93 | </row> | 96 | </row> |
94 | <row> | 97 | <row> |
98 | <entry>__u32</entry> | ||
99 | <entry><structfield>buffersize</structfield></entry> | ||
100 | <entry> | ||
101 | Maximum size in bytes required for data. Value is set by the driver. | ||
102 | </entry> | ||
103 | </row> | ||
104 | <row> | ||
95 | <entry>__u8</entry> | 105 | <entry>__u8</entry> |
96 | <entry><structfield>reserved[28]</structfield></entry> | 106 | <entry><structfield>reserved[24]</structfield></entry> |
97 | <entry>This array is reserved for future extensions. | 107 | <entry>This array is reserved for future extensions. |
98 | Drivers and applications must set it to zero.</entry> | 108 | Drivers and applications must set it to zero.</entry> |
99 | </row> | 109 | </row> |
diff --git a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml index 548f8ea28dee..7a8bf3011ee9 100644 --- a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml +++ b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml | |||
@@ -185,7 +185,14 @@ tables, sigh. --></para></entry> | |||
185 | <entry></entry> | 185 | <entry></entry> |
186 | <entry spanname="hspan">Drivers must set | 186 | <entry spanname="hspan">Drivers must set |
187 | <structfield>service_lines</structfield>[0][0] and | 187 | <structfield>service_lines</structfield>[0][0] and |
188 | <structfield>service_lines</structfield>[1][0] to zero.</entry> | 188 | <structfield>service_lines</structfield>[1][0] to zero. |
189 | The <constant>V4L2_VBI_ITU_525_F1_START</constant>, | ||
190 | <constant>V4L2_VBI_ITU_525_F2_START</constant>, | ||
191 | <constant>V4L2_VBI_ITU_625_F1_START</constant> and | ||
192 | <constant>V4L2_VBI_ITU_625_F2_START</constant> defines give the start | ||
193 | line numbers for each field for each 525 or 625 line format as a | ||
194 | convenience. Don't forget that ITU line numbering starts at 1, not 0. | ||
195 | </entry> | ||
189 | </row> | 196 | </row> |
190 | <row> | 197 | <row> |
191 | <entry>__u32</entry> | 198 | <entry>__u32</entry> |
diff --git a/Documentation/DocBook/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml index a086a5db7a18..e5e8325aa3d7 100644 --- a/Documentation/DocBook/media/v4l/io.xml +++ b/Documentation/DocBook/media/v4l/io.xml | |||
@@ -870,7 +870,8 @@ should set this to 0.</entry> | |||
870 | If the application sets this to 0 for an output stream, then | 870 | If the application sets this to 0 for an output stream, then |
871 | <structfield>bytesused</structfield> will be set to the size of the | 871 | <structfield>bytesused</structfield> will be set to the size of the |
872 | plane (see the <structfield>length</structfield> field of this struct) | 872 | plane (see the <structfield>length</structfield> field of this struct) |
873 | by the driver.</entry> | 873 | by the driver. Note that the actual image data starts at |
874 | <structfield>data_offset</structfield> which may not be 0.</entry> | ||
874 | </row> | 875 | </row> |
875 | <row> | 876 | <row> |
876 | <entry>__u32</entry> | 877 | <entry>__u32</entry> |
@@ -919,6 +920,10 @@ should set this to 0.</entry> | |||
919 | <entry>Offset in bytes to video data in the plane. | 920 | <entry>Offset in bytes to video data in the plane. |
920 | Drivers must set this field when <structfield>type</structfield> | 921 | Drivers must set this field when <structfield>type</structfield> |
921 | refers to an input stream, applications when it refers to an output stream. | 922 | refers to an input stream, applications when it refers to an output stream. |
923 | Note that data_offset is included in <structfield>bytesused</structfield>. | ||
924 | So the size of the image in the plane is | ||
925 | <structfield>bytesused</structfield>-<structfield>data_offset</structfield> at | ||
926 | offset <structfield>data_offset</structfield> from the start of the plane. | ||
922 | </entry> | 927 | </entry> |
923 | </row> | 928 | </row> |
924 | <row> | 929 | <row> |
@@ -1066,7 +1071,7 @@ state, in the application domain so to say.</entry> | |||
1066 | <entry>Drivers set or clear this flag when calling the | 1071 | <entry>Drivers set or clear this flag when calling the |
1067 | <constant>VIDIOC_DQBUF</constant> ioctl. It may be set by video | 1072 | <constant>VIDIOC_DQBUF</constant> ioctl. It may be set by video |
1068 | capture devices when the buffer contains a compressed image which is a | 1073 | capture devices when the buffer contains a compressed image which is a |
1069 | key frame (or field), &ie; can be decompressed on its own. Also know as | 1074 | key frame (or field), &ie; can be decompressed on its own. Also known as |
1070 | an I-frame. Applications can set this bit when <structfield>type</structfield> | 1075 | an I-frame. Applications can set this bit when <structfield>type</structfield> |
1071 | refers to an output stream.</entry> | 1076 | refers to an output stream.</entry> |
1072 | </row> | 1077 | </row> |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml index e1c4f8b4c0b3..2aae8e9452a4 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml | |||
@@ -15,9 +15,6 @@ typical PC graphics frame buffers. They occupy 8, 16, 24 or 32 bits | |||
15 | per pixel. These are all packed-pixel formats, meaning all the data | 15 | per pixel. These are all packed-pixel formats, meaning all the data |
16 | for a pixel lie next to each other in memory.</para> | 16 | for a pixel lie next to each other in memory.</para> |
17 | 17 | ||
18 | <para>When one of these formats is used, drivers shall report the | ||
19 | colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> | ||
20 | |||
21 | <table pgwide="1" frame="none" id="rgb-formats"> | 18 | <table pgwide="1" frame="none" id="rgb-formats"> |
22 | <title>Packed RGB Image Formats</title> | 19 | <title>Packed RGB Image Formats</title> |
23 | <tgroup cols="37" align="center"> | 20 | <tgroup cols="37" align="center"> |
@@ -130,9 +127,9 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> | |||
130 | <entry>b<subscript>1</subscript></entry> | 127 | <entry>b<subscript>1</subscript></entry> |
131 | <entry>b<subscript>0</subscript></entry> | 128 | <entry>b<subscript>0</subscript></entry> |
132 | </row> | 129 | </row> |
133 | <row id="V4L2-PIX-FMT-RGB444"> | 130 | <row id="V4L2-PIX-FMT-ARGB444"> |
134 | <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry> | 131 | <entry><constant>V4L2_PIX_FMT_ARGB444</constant></entry> |
135 | <entry>'R444'</entry> | 132 | <entry>'AR12'</entry> |
136 | <entry></entry> | 133 | <entry></entry> |
137 | <entry>g<subscript>3</subscript></entry> | 134 | <entry>g<subscript>3</subscript></entry> |
138 | <entry>g<subscript>2</subscript></entry> | 135 | <entry>g<subscript>2</subscript></entry> |
@@ -152,9 +149,31 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> | |||
152 | <entry>r<subscript>1</subscript></entry> | 149 | <entry>r<subscript>1</subscript></entry> |
153 | <entry>r<subscript>0</subscript></entry> | 150 | <entry>r<subscript>0</subscript></entry> |
154 | </row> | 151 | </row> |
155 | <row id="V4L2-PIX-FMT-RGB555"> | 152 | <row id="V4L2-PIX-FMT-XRGB444"> |
156 | <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry> | 153 | <entry><constant>V4L2_PIX_FMT_XRGB444</constant></entry> |
157 | <entry>'RGBO'</entry> | 154 | <entry>'XR12'</entry> |
155 | <entry></entry> | ||
156 | <entry>g<subscript>3</subscript></entry> | ||
157 | <entry>g<subscript>2</subscript></entry> | ||
158 | <entry>g<subscript>1</subscript></entry> | ||
159 | <entry>g<subscript>0</subscript></entry> | ||
160 | <entry>b<subscript>3</subscript></entry> | ||
161 | <entry>b<subscript>2</subscript></entry> | ||
162 | <entry>b<subscript>1</subscript></entry> | ||
163 | <entry>b<subscript>0</subscript></entry> | ||
164 | <entry></entry> | ||
165 | <entry>-</entry> | ||
166 | <entry>-</entry> | ||
167 | <entry>-</entry> | ||
168 | <entry>-</entry> | ||
169 | <entry>r<subscript>3</subscript></entry> | ||
170 | <entry>r<subscript>2</subscript></entry> | ||
171 | <entry>r<subscript>1</subscript></entry> | ||
172 | <entry>r<subscript>0</subscript></entry> | ||
173 | </row> | ||
174 | <row id="V4L2-PIX-FMT-ARGB555"> | ||
175 | <entry><constant>V4L2_PIX_FMT_ARGB555</constant></entry> | ||
176 | <entry>'AR15'</entry> | ||
158 | <entry></entry> | 177 | <entry></entry> |
159 | <entry>g<subscript>2</subscript></entry> | 178 | <entry>g<subscript>2</subscript></entry> |
160 | <entry>g<subscript>1</subscript></entry> | 179 | <entry>g<subscript>1</subscript></entry> |
@@ -174,6 +193,28 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> | |||
174 | <entry>g<subscript>4</subscript></entry> | 193 | <entry>g<subscript>4</subscript></entry> |
175 | <entry>g<subscript>3</subscript></entry> | 194 | <entry>g<subscript>3</subscript></entry> |
176 | </row> | 195 | </row> |
196 | <row id="V4L2-PIX-FMT-XRGB555"> | ||
197 | <entry><constant>V4L2_PIX_FMT_XRGB555</constant></entry> | ||
198 | <entry>'XR15'</entry> | ||
199 | <entry></entry> | ||
200 | <entry>g<subscript>2</subscript></entry> | ||
201 | <entry>g<subscript>1</subscript></entry> | ||
202 | <entry>g<subscript>0</subscript></entry> | ||
203 | <entry>b<subscript>4</subscript></entry> | ||
204 | <entry>b<subscript>3</subscript></entry> | ||
205 | <entry>b<subscript>2</subscript></entry> | ||
206 | <entry>b<subscript>1</subscript></entry> | ||
207 | <entry>b<subscript>0</subscript></entry> | ||
208 | <entry></entry> | ||
209 | <entry>-</entry> | ||
210 | <entry>r<subscript>4</subscript></entry> | ||
211 | <entry>r<subscript>3</subscript></entry> | ||
212 | <entry>r<subscript>2</subscript></entry> | ||
213 | <entry>r<subscript>1</subscript></entry> | ||
214 | <entry>r<subscript>0</subscript></entry> | ||
215 | <entry>g<subscript>4</subscript></entry> | ||
216 | <entry>g<subscript>3</subscript></entry> | ||
217 | </row> | ||
177 | <row id="V4L2-PIX-FMT-RGB565"> | 218 | <row id="V4L2-PIX-FMT-RGB565"> |
178 | <entry><constant>V4L2_PIX_FMT_RGB565</constant></entry> | 219 | <entry><constant>V4L2_PIX_FMT_RGB565</constant></entry> |
179 | <entry>'RGBP'</entry> | 220 | <entry>'RGBP'</entry> |
@@ -341,9 +382,9 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> | |||
341 | <entry>b<subscript>1</subscript></entry> | 382 | <entry>b<subscript>1</subscript></entry> |
342 | <entry>b<subscript>0</subscript></entry> | 383 | <entry>b<subscript>0</subscript></entry> |
343 | </row> | 384 | </row> |
344 | <row id="V4L2-PIX-FMT-BGR32"> | 385 | <row id="V4L2-PIX-FMT-ABGR32"> |
345 | <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry> | 386 | <entry><constant>V4L2_PIX_FMT_ABGR32</constant></entry> |
346 | <entry>'BGR4'</entry> | 387 | <entry>'AR24'</entry> |
347 | <entry></entry> | 388 | <entry></entry> |
348 | <entry>b<subscript>7</subscript></entry> | 389 | <entry>b<subscript>7</subscript></entry> |
349 | <entry>b<subscript>6</subscript></entry> | 390 | <entry>b<subscript>6</subscript></entry> |
@@ -381,9 +422,49 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> | |||
381 | <entry>a<subscript>1</subscript></entry> | 422 | <entry>a<subscript>1</subscript></entry> |
382 | <entry>a<subscript>0</subscript></entry> | 423 | <entry>a<subscript>0</subscript></entry> |
383 | </row> | 424 | </row> |
384 | <row id="V4L2-PIX-FMT-RGB32"> | 425 | <row id="V4L2-PIX-FMT-XBGR32"> |
385 | <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry> | 426 | <entry><constant>V4L2_PIX_FMT_XBGR32</constant></entry> |
386 | <entry>'RGB4'</entry> | 427 | <entry>'XR24'</entry> |
428 | <entry></entry> | ||
429 | <entry>b<subscript>7</subscript></entry> | ||
430 | <entry>b<subscript>6</subscript></entry> | ||
431 | <entry>b<subscript>5</subscript></entry> | ||
432 | <entry>b<subscript>4</subscript></entry> | ||
433 | <entry>b<subscript>3</subscript></entry> | ||
434 | <entry>b<subscript>2</subscript></entry> | ||
435 | <entry>b<subscript>1</subscript></entry> | ||
436 | <entry>b<subscript>0</subscript></entry> | ||
437 | <entry></entry> | ||
438 | <entry>g<subscript>7</subscript></entry> | ||
439 | <entry>g<subscript>6</subscript></entry> | ||
440 | <entry>g<subscript>5</subscript></entry> | ||
441 | <entry>g<subscript>4</subscript></entry> | ||
442 | <entry>g<subscript>3</subscript></entry> | ||
443 | <entry>g<subscript>2</subscript></entry> | ||
444 | <entry>g<subscript>1</subscript></entry> | ||
445 | <entry>g<subscript>0</subscript></entry> | ||
446 | <entry></entry> | ||
447 | <entry>r<subscript>7</subscript></entry> | ||
448 | <entry>r<subscript>6</subscript></entry> | ||
449 | <entry>r<subscript>5</subscript></entry> | ||
450 | <entry>r<subscript>4</subscript></entry> | ||
451 | <entry>r<subscript>3</subscript></entry> | ||
452 | <entry>r<subscript>2</subscript></entry> | ||
453 | <entry>r<subscript>1</subscript></entry> | ||
454 | <entry>r<subscript>0</subscript></entry> | ||
455 | <entry></entry> | ||
456 | <entry>-</entry> | ||
457 | <entry>-</entry> | ||
458 | <entry>-</entry> | ||
459 | <entry>-</entry> | ||
460 | <entry>-</entry> | ||
461 | <entry>-</entry> | ||
462 | <entry>-</entry> | ||
463 | <entry>-</entry> | ||
464 | </row> | ||
465 | <row id="V4L2-PIX-FMT-ARGB32"> | ||
466 | <entry><constant>V4L2_PIX_FMT_ARGB32</constant></entry> | ||
467 | <entry>'AX24'</entry> | ||
387 | <entry></entry> | 468 | <entry></entry> |
388 | <entry>a<subscript>7</subscript></entry> | 469 | <entry>a<subscript>7</subscript></entry> |
389 | <entry>a<subscript>6</subscript></entry> | 470 | <entry>a<subscript>6</subscript></entry> |
@@ -421,18 +502,76 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para> | |||
421 | <entry>b<subscript>1</subscript></entry> | 502 | <entry>b<subscript>1</subscript></entry> |
422 | <entry>b<subscript>0</subscript></entry> | 503 | <entry>b<subscript>0</subscript></entry> |
423 | </row> | 504 | </row> |
505 | <row id="V4L2-PIX-FMT-XRGB32"> | ||
506 | <entry><constant>V4L2_PIX_FMT_XRGB32</constant></entry> | ||
507 | <entry>'BX24'</entry> | ||
508 | <entry></entry> | ||
509 | <entry>-</entry> | ||
510 | <entry>-</entry> | ||
511 | <entry>-</entry> | ||
512 | <entry>-</entry> | ||
513 | <entry>-</entry> | ||
514 | <entry>-</entry> | ||
515 | <entry>-</entry> | ||
516 | <entry>-</entry> | ||
517 | <entry></entry> | ||
518 | <entry>r<subscript>7</subscript></entry> | ||
519 | <entry>r<subscript>6</subscript></entry> | ||
520 | <entry>r<subscript>5</subscript></entry> | ||
521 | <entry>r<subscript>4</subscript></entry> | ||
522 | <entry>r<subscript>3</subscript></entry> | ||
523 | <entry>r<subscript>2</subscript></entry> | ||
524 | <entry>r<subscript>1</subscript></entry> | ||
525 | <entry>r<subscript>0</subscript></entry> | ||
526 | <entry></entry> | ||
527 | <entry>g<subscript>7</subscript></entry> | ||
528 | <entry>g<subscript>6</subscript></entry> | ||
529 | <entry>g<subscript>5</subscript></entry> | ||
530 | <entry>g<subscript>4</subscript></entry> | ||
531 | <entry>g<subscript>3</subscript></entry> | ||
532 | <entry>g<subscript>2</subscript></entry> | ||
533 | <entry>g<subscript>1</subscript></entry> | ||
534 | <entry>g<subscript>0</subscript></entry> | ||
535 | <entry></entry> | ||
536 | <entry>b<subscript>7</subscript></entry> | ||
537 | <entry>b<subscript>6</subscript></entry> | ||
538 | <entry>b<subscript>5</subscript></entry> | ||
539 | <entry>b<subscript>4</subscript></entry> | ||
540 | <entry>b<subscript>3</subscript></entry> | ||
541 | <entry>b<subscript>2</subscript></entry> | ||
542 | <entry>b<subscript>1</subscript></entry> | ||
543 | <entry>b<subscript>0</subscript></entry> | ||
544 | </row> | ||
424 | </tbody> | 545 | </tbody> |
425 | </tgroup> | 546 | </tgroup> |
426 | </table> | 547 | </table> |
427 | 548 | ||
428 | <para>Bit 7 is the most significant bit. The value of the a = alpha | 549 | <para>Bit 7 is the most significant bit.</para> |
429 | bits is undefined when reading from the driver, ignored when writing | 550 | |
430 | to the driver, except when alpha blending has been negotiated for a | 551 | <para>The usage and value of the alpha bits (a) in the ARGB and ABGR formats |
431 | <link linkend="overlay">Video Overlay</link> or <link linkend="osd"> | 552 | (collectively referred to as alpha formats) depend on the device type and |
432 | Video Output Overlay</link> or when the alpha component has been configured | 553 | hardware operation. <link linkend="capture">Capture</link> devices |
433 | for a <link linkend="capture">Video Capture</link> by means of <link | 554 | (including capture queues of mem-to-mem devices) fill the alpha component in |
434 | linkend="v4l2-alpha-component"> <constant>V4L2_CID_ALPHA_COMPONENT | 555 | memory. When the device outputs an alpha channel the alpha component will |
435 | </constant> </link> control.</para> | 556 | have a meaningful value. Otherwise, when the device doesn't output an alpha |
557 | channel but can set the alpha bit to a user-configurable value, the <link | ||
558 | linkend="v4l2-alpha-component"><constant>V4L2_CID_ALPHA_COMPONENT</constant> | ||
559 | </link> control is used to specify that alpha value, and the alpha component | ||
560 | of all pixels will be set to the value specified by that control. Otherwise | ||
561 | a corresponding format without an alpha component (XRGB or XBGR) must be | ||
562 | used instead of an alpha format.</para> | ||
563 | |||
564 | <para><link linkend="output">Output</link> devices (including output queues | ||
565 | of mem-to-mem devices and <link linkend="osd">video output overlay</link> | ||
566 | devices) read the alpha component from memory. When the device processes the | ||
567 | alpha channel the alpha component must be filled with meaningful values by | ||
568 | applications. Otherwise a corresponding format without an alpha component | ||
569 | (XRGB or XBGR) must be used instead of an alpha format.</para> | ||
570 | |||
571 | <para>The XRGB and XBGR formats contain undefined bits (-). Applications, | ||
572 | devices and drivers must ignore those bits, for both <link | ||
573 | linkend="capture">capture</link> and <link linkend="output">output</link> | ||
574 | devices.</para> | ||
436 | 575 | ||
437 | <example> | 576 | <example> |
438 | <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 × 4 pixel | 577 | <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 × 4 pixel |
@@ -512,6 +651,239 @@ image</title> | |||
512 | </formalpara> | 651 | </formalpara> |
513 | </example> | 652 | </example> |
514 | 653 | ||
654 | <para>Formats defined in <xref linkend="rgb-formats-deprecated"/> are | ||
655 | deprecated and must not be used by new drivers. They are documented here for | ||
656 | reference. The meaning of their alpha bits (a) is ill-defined and | ||
657 | interpreted as in either the corresponding ARGB or XRGB format, depending on | ||
658 | the driver.</para> | ||
659 | |||
660 | <table pgwide="1" frame="none" id="rgb-formats-deprecated"> | ||
661 | <title>Deprecated Packed RGB Image Formats</title> | ||
662 | <tgroup cols="37" align="center"> | ||
663 | <colspec colname="id" align="left" /> | ||
664 | <colspec colname="fourcc" /> | ||
665 | <colspec colname="bit" /> | ||
666 | |||
667 | <colspec colnum="4" colname="b07" align="center" /> | ||
668 | <colspec colnum="5" colname="b06" align="center" /> | ||
669 | <colspec colnum="6" colname="b05" align="center" /> | ||
670 | <colspec colnum="7" colname="b04" align="center" /> | ||
671 | <colspec colnum="8" colname="b03" align="center" /> | ||
672 | <colspec colnum="9" colname="b02" align="center" /> | ||
673 | <colspec colnum="10" colname="b01" align="center" /> | ||
674 | <colspec colnum="11" colname="b00" align="center" /> | ||
675 | |||
676 | <colspec colnum="13" colname="b17" align="center" /> | ||
677 | <colspec colnum="14" colname="b16" align="center" /> | ||
678 | <colspec colnum="15" colname="b15" align="center" /> | ||
679 | <colspec colnum="16" colname="b14" align="center" /> | ||
680 | <colspec colnum="17" colname="b13" align="center" /> | ||
681 | <colspec colnum="18" colname="b12" align="center" /> | ||
682 | <colspec colnum="19" colname="b11" align="center" /> | ||
683 | <colspec colnum="20" colname="b10" align="center" /> | ||
684 | |||
685 | <colspec colnum="22" colname="b27" align="center" /> | ||
686 | <colspec colnum="23" colname="b26" align="center" /> | ||
687 | <colspec colnum="24" colname="b25" align="center" /> | ||
688 | <colspec colnum="25" colname="b24" align="center" /> | ||
689 | <colspec colnum="26" colname="b23" align="center" /> | ||
690 | <colspec colnum="27" colname="b22" align="center" /> | ||
691 | <colspec colnum="28" colname="b21" align="center" /> | ||
692 | <colspec colnum="29" colname="b20" align="center" /> | ||
693 | |||
694 | <colspec colnum="31" colname="b37" align="center" /> | ||
695 | <colspec colnum="32" colname="b36" align="center" /> | ||
696 | <colspec colnum="33" colname="b35" align="center" /> | ||
697 | <colspec colnum="34" colname="b34" align="center" /> | ||
698 | <colspec colnum="35" colname="b33" align="center" /> | ||
699 | <colspec colnum="36" colname="b32" align="center" /> | ||
700 | <colspec colnum="37" colname="b31" align="center" /> | ||
701 | <colspec colnum="38" colname="b30" align="center" /> | ||
702 | |||
703 | <spanspec namest="b07" nameend="b00" spanname="b0" /> | ||
704 | <spanspec namest="b17" nameend="b10" spanname="b1" /> | ||
705 | <spanspec namest="b27" nameend="b20" spanname="b2" /> | ||
706 | <spanspec namest="b37" nameend="b30" spanname="b3" /> | ||
707 | <thead> | ||
708 | <row> | ||
709 | <entry>Identifier</entry> | ||
710 | <entry>Code</entry> | ||
711 | <entry> </entry> | ||
712 | <entry spanname="b0">Byte 0 in memory</entry> | ||
713 | <entry spanname="b1">Byte 1</entry> | ||
714 | <entry spanname="b2">Byte 2</entry> | ||
715 | <entry spanname="b3">Byte 3</entry> | ||
716 | </row> | ||
717 | <row> | ||
718 | <entry> </entry> | ||
719 | <entry> </entry> | ||
720 | <entry>Bit</entry> | ||
721 | <entry>7</entry> | ||
722 | <entry>6</entry> | ||
723 | <entry>5</entry> | ||
724 | <entry>4</entry> | ||
725 | <entry>3</entry> | ||
726 | <entry>2</entry> | ||
727 | <entry>1</entry> | ||
728 | <entry>0</entry> | ||
729 | <entry> </entry> | ||
730 | <entry>7</entry> | ||
731 | <entry>6</entry> | ||
732 | <entry>5</entry> | ||
733 | <entry>4</entry> | ||
734 | <entry>3</entry> | ||
735 | <entry>2</entry> | ||
736 | <entry>1</entry> | ||
737 | <entry>0</entry> | ||
738 | <entry> </entry> | ||
739 | <entry>7</entry> | ||
740 | <entry>6</entry> | ||
741 | <entry>5</entry> | ||
742 | <entry>4</entry> | ||
743 | <entry>3</entry> | ||
744 | <entry>2</entry> | ||
745 | <entry>1</entry> | ||
746 | <entry>0</entry> | ||
747 | <entry> </entry> | ||
748 | <entry>7</entry> | ||
749 | <entry>6</entry> | ||
750 | <entry>5</entry> | ||
751 | <entry>4</entry> | ||
752 | <entry>3</entry> | ||
753 | <entry>2</entry> | ||
754 | <entry>1</entry> | ||
755 | <entry>0</entry> | ||
756 | </row> | ||
757 | </thead> | ||
758 | <tbody> | ||
759 | <row id="V4L2-PIX-FMT-RGB444"> | ||
760 | <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry> | ||
761 | <entry>'R444'</entry> | ||
762 | <entry></entry> | ||
763 | <entry>g<subscript>3</subscript></entry> | ||
764 | <entry>g<subscript>2</subscript></entry> | ||
765 | <entry>g<subscript>1</subscript></entry> | ||
766 | <entry>g<subscript>0</subscript></entry> | ||
767 | <entry>b<subscript>3</subscript></entry> | ||
768 | <entry>b<subscript>2</subscript></entry> | ||
769 | <entry>b<subscript>1</subscript></entry> | ||
770 | <entry>b<subscript>0</subscript></entry> | ||
771 | <entry></entry> | ||
772 | <entry>a<subscript>3</subscript></entry> | ||
773 | <entry>a<subscript>2</subscript></entry> | ||
774 | <entry>a<subscript>1</subscript></entry> | ||
775 | <entry>a<subscript>0</subscript></entry> | ||
776 | <entry>r<subscript>3</subscript></entry> | ||
777 | <entry>r<subscript>2</subscript></entry> | ||
778 | <entry>r<subscript>1</subscript></entry> | ||
779 | <entry>r<subscript>0</subscript></entry> | ||
780 | </row> | ||
781 | <row id="V4L2-PIX-FMT-RGB555"> | ||
782 | <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry> | ||
783 | <entry>'RGBO'</entry> | ||
784 | <entry></entry> | ||
785 | <entry>g<subscript>2</subscript></entry> | ||
786 | <entry>g<subscript>1</subscript></entry> | ||
787 | <entry>g<subscript>0</subscript></entry> | ||
788 | <entry>b<subscript>4</subscript></entry> | ||
789 | <entry>b<subscript>3</subscript></entry> | ||
790 | <entry>b<subscript>2</subscript></entry> | ||
791 | <entry>b<subscript>1</subscript></entry> | ||
792 | <entry>b<subscript>0</subscript></entry> | ||
793 | <entry></entry> | ||
794 | <entry>a</entry> | ||
795 | <entry>r<subscript>4</subscript></entry> | ||
796 | <entry>r<subscript>3</subscript></entry> | ||
797 | <entry>r<subscript>2</subscript></entry> | ||
798 | <entry>r<subscript>1</subscript></entry> | ||
799 | <entry>r<subscript>0</subscript></entry> | ||
800 | <entry>g<subscript>4</subscript></entry> | ||
801 | <entry>g<subscript>3</subscript></entry> | ||
802 | </row> | ||
803 | <row id="V4L2-PIX-FMT-BGR32"> | ||
804 | <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry> | ||
805 | <entry>'BGR4'</entry> | ||
806 | <entry></entry> | ||
807 | <entry>b<subscript>7</subscript></entry> | ||
808 | <entry>b<subscript>6</subscript></entry> | ||
809 | <entry>b<subscript>5</subscript></entry> | ||
810 | <entry>b<subscript>4</subscript></entry> | ||
811 | <entry>b<subscript>3</subscript></entry> | ||
812 | <entry>b<subscript>2</subscript></entry> | ||
813 | <entry>b<subscript>1</subscript></entry> | ||
814 | <entry>b<subscript>0</subscript></entry> | ||
815 | <entry></entry> | ||
816 | <entry>g<subscript>7</subscript></entry> | ||
817 | <entry>g<subscript>6</subscript></entry> | ||
818 | <entry>g<subscript>5</subscript></entry> | ||
819 | <entry>g<subscript>4</subscript></entry> | ||
820 | <entry>g<subscript>3</subscript></entry> | ||
821 | <entry>g<subscript>2</subscript></entry> | ||
822 | <entry>g<subscript>1</subscript></entry> | ||
823 | <entry>g<subscript>0</subscript></entry> | ||
824 | <entry></entry> | ||
825 | <entry>r<subscript>7</subscript></entry> | ||
826 | <entry>r<subscript>6</subscript></entry> | ||
827 | <entry>r<subscript>5</subscript></entry> | ||
828 | <entry>r<subscript>4</subscript></entry> | ||
829 | <entry>r<subscript>3</subscript></entry> | ||
830 | <entry>r<subscript>2</subscript></entry> | ||
831 | <entry>r<subscript>1</subscript></entry> | ||
832 | <entry>r<subscript>0</subscript></entry> | ||
833 | <entry></entry> | ||
834 | <entry>a<subscript>7</subscript></entry> | ||
835 | <entry>a<subscript>6</subscript></entry> | ||
836 | <entry>a<subscript>5</subscript></entry> | ||
837 | <entry>a<subscript>4</subscript></entry> | ||
838 | <entry>a<subscript>3</subscript></entry> | ||
839 | <entry>a<subscript>2</subscript></entry> | ||
840 | <entry>a<subscript>1</subscript></entry> | ||
841 | <entry>a<subscript>0</subscript></entry> | ||
842 | </row> | ||
843 | <row id="V4L2-PIX-FMT-RGB32"> | ||
844 | <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry> | ||
845 | <entry>'RGB4'</entry> | ||
846 | <entry></entry> | ||
847 | <entry>a<subscript>7</subscript></entry> | ||
848 | <entry>a<subscript>6</subscript></entry> | ||
849 | <entry>a<subscript>5</subscript></entry> | ||
850 | <entry>a<subscript>4</subscript></entry> | ||
851 | <entry>a<subscript>3</subscript></entry> | ||
852 | <entry>a<subscript>2</subscript></entry> | ||
853 | <entry>a<subscript>1</subscript></entry> | ||
854 | <entry>a<subscript>0</subscript></entry> | ||
855 | <entry></entry> | ||
856 | <entry>r<subscript>7</subscript></entry> | ||
857 | <entry>r<subscript>6</subscript></entry> | ||
858 | <entry>r<subscript>5</subscript></entry> | ||
859 | <entry>r<subscript>4</subscript></entry> | ||
860 | <entry>r<subscript>3</subscript></entry> | ||
861 | <entry>r<subscript>2</subscript></entry> | ||
862 | <entry>r<subscript>1</subscript></entry> | ||
863 | <entry>r<subscript>0</subscript></entry> | ||
864 | <entry></entry> | ||
865 | <entry>g<subscript>7</subscript></entry> | ||
866 | <entry>g<subscript>6</subscript></entry> | ||
867 | <entry>g<subscript>5</subscript></entry> | ||
868 | <entry>g<subscript>4</subscript></entry> | ||
869 | <entry>g<subscript>3</subscript></entry> | ||
870 | <entry>g<subscript>2</subscript></entry> | ||
871 | <entry>g<subscript>1</subscript></entry> | ||
872 | <entry>g<subscript>0</subscript></entry> | ||
873 | <entry></entry> | ||
874 | <entry>b<subscript>7</subscript></entry> | ||
875 | <entry>b<subscript>6</subscript></entry> | ||
876 | <entry>b<subscript>5</subscript></entry> | ||
877 | <entry>b<subscript>4</subscript></entry> | ||
878 | <entry>b<subscript>3</subscript></entry> | ||
879 | <entry>b<subscript>2</subscript></entry> | ||
880 | <entry>b<subscript>1</subscript></entry> | ||
881 | <entry>b<subscript>0</subscript></entry> | ||
882 | </row> | ||
883 | </tbody> | ||
884 | </tgroup> | ||
885 | </table> | ||
886 | |||
515 | <para>A test utility to determine which RGB formats a driver | 887 | <para>A test utility to determine which RGB formats a driver |
516 | actually supports is available from the LinuxTV v4l-dvb repository. | 888 | actually supports is available from the LinuxTV v4l-dvb repository. |
517 | See &v4l-dvb; for access instructions.</para> | 889 | See &v4l-dvb; for access instructions.</para> |
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml new file mode 100644 index 000000000000..6118d8f7a20c --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml | |||
@@ -0,0 +1,44 @@ | |||
1 | <refentry id="V4L2-SDR-FMT-CS08"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_SDR_FMT_CS8 ('CS08')</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | <refnamediv> | ||
7 | <refname> | ||
8 | <constant>V4L2_SDR_FMT_CS8</constant> | ||
9 | </refname> | ||
10 | <refpurpose>Complex signed 8-bit IQ sample</refpurpose> | ||
11 | </refnamediv> | ||
12 | <refsect1> | ||
13 | <title>Description</title> | ||
14 | <para> | ||
15 | This format contains sequence of complex number samples. Each complex number | ||
16 | consist two parts, called In-phase and Quadrature (IQ). Both I and Q are | ||
17 | represented as a 8 bit signed number. I value comes first and Q value after | ||
18 | that. | ||
19 | </para> | ||
20 | <example> | ||
21 | <title><constant>V4L2_SDR_FMT_CS8</constant> 1 sample</title> | ||
22 | <formalpara> | ||
23 | <title>Byte Order.</title> | ||
24 | <para>Each cell is one byte. | ||
25 | <informaltable frame="none"> | ||
26 | <tgroup cols="2" align="center"> | ||
27 | <colspec align="left" colwidth="2*" /> | ||
28 | <tbody valign="top"> | ||
29 | <row> | ||
30 | <entry>start + 0:</entry> | ||
31 | <entry>I'<subscript>0</subscript></entry> | ||
32 | </row> | ||
33 | <row> | ||
34 | <entry>start + 1:</entry> | ||
35 | <entry>Q'<subscript>0</subscript></entry> | ||
36 | </row> | ||
37 | </tbody> | ||
38 | </tgroup> | ||
39 | </informaltable> | ||
40 | </para> | ||
41 | </formalpara> | ||
42 | </example> | ||
43 | </refsect1> | ||
44 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml new file mode 100644 index 000000000000..e4b494ce1369 --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml | |||
@@ -0,0 +1,47 @@ | |||
1 | <refentry id="V4L2-SDR-FMT-CS14LE"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_SDR_FMT_CS14LE ('CS14')</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | <refnamediv> | ||
7 | <refname> | ||
8 | <constant>V4L2_SDR_FMT_CS14LE</constant> | ||
9 | </refname> | ||
10 | <refpurpose>Complex signed 14-bit little endian IQ sample</refpurpose> | ||
11 | </refnamediv> | ||
12 | <refsect1> | ||
13 | <title>Description</title> | ||
14 | <para> | ||
15 | This format contains sequence of complex number samples. Each complex number | ||
16 | consist two parts, called In-phase and Quadrature (IQ). Both I and Q are | ||
17 | represented as a 14 bit signed little endian number. I value comes first | ||
18 | and Q value after that. 14 bit value is stored in 16 bit space with unused | ||
19 | high bits padded with 0. | ||
20 | </para> | ||
21 | <example> | ||
22 | <title><constant>V4L2_SDR_FMT_CS14LE</constant> 1 sample</title> | ||
23 | <formalpara> | ||
24 | <title>Byte Order.</title> | ||
25 | <para>Each cell is one byte. | ||
26 | <informaltable frame="none"> | ||
27 | <tgroup cols="3" align="center"> | ||
28 | <colspec align="left" colwidth="2*" /> | ||
29 | <tbody valign="top"> | ||
30 | <row> | ||
31 | <entry>start + 0:</entry> | ||
32 | <entry>I'<subscript>0[7:0]</subscript></entry> | ||
33 | <entry>I'<subscript>0[13:8]</subscript></entry> | ||
34 | </row> | ||
35 | <row> | ||
36 | <entry>start + 2:</entry> | ||
37 | <entry>Q'<subscript>0[7:0]</subscript></entry> | ||
38 | <entry>Q'<subscript>0[13:8]</subscript></entry> | ||
39 | </row> | ||
40 | </tbody> | ||
41 | </tgroup> | ||
42 | </informaltable> | ||
43 | </para> | ||
44 | </formalpara> | ||
45 | </example> | ||
46 | </refsect1> | ||
47 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml new file mode 100644 index 000000000000..3df076b99f94 --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml | |||
@@ -0,0 +1,40 @@ | |||
1 | <refentry id="V4L2-SDR-FMT-RU12LE"> | ||
2 | <refmeta> | ||
3 | <refentrytitle>V4L2_SDR_FMT_RU12LE ('RU12')</refentrytitle> | ||
4 | &manvol; | ||
5 | </refmeta> | ||
6 | <refnamediv> | ||
7 | <refname> | ||
8 | <constant>V4L2_SDR_FMT_RU12LE</constant> | ||
9 | </refname> | ||
10 | <refpurpose>Real unsigned 12-bit little endian sample</refpurpose> | ||
11 | </refnamediv> | ||
12 | <refsect1> | ||
13 | <title>Description</title> | ||
14 | <para> | ||
15 | This format contains sequence of real number samples. Each sample is | ||
16 | represented as a 12 bit unsigned little endian number. Sample is stored | ||
17 | in 16 bit space with unused high bits padded with 0. | ||
18 | </para> | ||
19 | <example> | ||
20 | <title><constant>V4L2_SDR_FMT_RU12LE</constant> 1 sample</title> | ||
21 | <formalpara> | ||
22 | <title>Byte Order.</title> | ||
23 | <para>Each cell is one byte. | ||
24 | <informaltable frame="none"> | ||
25 | <tgroup cols="3" align="center"> | ||
26 | <colspec align="left" colwidth="2*" /> | ||
27 | <tbody valign="top"> | ||
28 | <row> | ||
29 | <entry>start + 0:</entry> | ||
30 | <entry>I'<subscript>0[7:0]</subscript></entry> | ||
31 | <entry>I'<subscript>0[11:8]</subscript></entry> | ||
32 | </row> | ||
33 | </tbody> | ||
34 | </tgroup> | ||
35 | </informaltable> | ||
36 | </para> | ||
37 | </formalpara> | ||
38 | </example> | ||
39 | </refsect1> | ||
40 | </refentry> | ||
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml index 9ba4fb690bc0..96947f17fca1 100644 --- a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml +++ b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml | |||
@@ -18,7 +18,7 @@ | |||
18 | <title>Description</title> | 18 | <title>Description</title> |
19 | 19 | ||
20 | <para>The following four pixel formats are raw sRGB / Bayer formats with | 20 | <para>The following four pixel formats are raw sRGB / Bayer formats with |
21 | 12 bits per colour. Each colour component is stored in a 16-bit word, with 6 | 21 | 12 bits per colour. Each colour component is stored in a 16-bit word, with 4 |
22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples | 22 | unused high bits filled with zeros. Each n-pixel row contains n/2 green samples |
23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are | 23 | and n/2 blue or red samples, with alternating red and blue rows. Bytes are |
24 | stored in memory in little endian order. They are conventionally described | 24 | stored in memory in little endian order. They are conventionally described |
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index 91dcbc84f3f8..df5b23d46552 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml | |||
@@ -112,9 +112,34 @@ see <xref linkend="colorspaces" />.</entry> | |||
112 | <row> | 112 | <row> |
113 | <entry>__u32</entry> | 113 | <entry>__u32</entry> |
114 | <entry><structfield>priv</structfield></entry> | 114 | <entry><structfield>priv</structfield></entry> |
115 | <entry>Reserved for custom (driver defined) additional | 115 | <entry><para>This field indicates whether the remaining fields of the |
116 | information about formats. When not used drivers and applications must | 116 | <structname>v4l2_pix_format</structname> structure, also called the extended |
117 | set this field to zero.</entry> | 117 | fields, are valid. When set to <constant>V4L2_PIX_FMT_PRIV_MAGIC</constant>, it |
118 | indicates that the extended fields have been correctly initialized. When set to | ||
119 | any other value it indicates that the extended fields contain undefined values. | ||
120 | </para> | ||
121 | <para>Applications that wish to use the pixel format extended fields must first | ||
122 | ensure that the feature is supported by querying the device for the | ||
123 | <link linkend="querycap"><constant>V4L2_CAP_EXT_PIX_FORMAT</constant></link> | ||
124 | capability. If the capability isn't set the pixel format extended fields are not | ||
125 | supported and using the extended fields will lead to undefined results.</para> | ||
126 | <para>To use the extended fields, applications must set the | ||
127 | <structfield>priv</structfield> field to | ||
128 | <constant>V4L2_PIX_FMT_PRIV_MAGIC</constant>, initialize all the extended fields | ||
129 | and zero the unused bytes of the <structname>v4l2_format</structname> | ||
130 | <structfield>raw_data</structfield> field.</para> | ||
131 | <para>When the <structfield>priv</structfield> field isn't set to | ||
132 | <constant>V4L2_PIX_FMT_PRIV_MAGIC</constant> drivers must act as if all the | ||
133 | extended fields were set to zero. On return drivers must set the | ||
134 | <structfield>priv</structfield> field to | ||
135 | <constant>V4L2_PIX_FMT_PRIV_MAGIC</constant> and all the extended fields to | ||
136 | applicable values.</para></entry> | ||
137 | </row> | ||
138 | <row> | ||
139 | <entry>__u32</entry> | ||
140 | <entry><structfield>flags</structfield></entry> | ||
141 | <entry>Flags set by the application or driver, see <xref | ||
142 | linkend="format-flags" />.</entry> | ||
118 | </row> | 143 | </row> |
119 | </tbody> | 144 | </tbody> |
120 | </tgroup> | 145 | </tgroup> |
@@ -201,9 +226,15 @@ codes can be used.</entry> | |||
201 | and the number of valid entries in the | 226 | and the number of valid entries in the |
202 | <structfield>plane_fmt</structfield> array.</entry> | 227 | <structfield>plane_fmt</structfield> array.</entry> |
203 | </row> | 228 | </row> |
229 | <row> | ||
230 | <entry>__u8</entry> | ||
231 | <entry><structfield>flags</structfield></entry> | ||
232 | <entry>Flags set by the application or driver, see <xref | ||
233 | linkend="format-flags" />.</entry> | ||
234 | </row> | ||
204 | <row> | 235 | <row> |
205 | <entry>__u8</entry> | 236 | <entry>__u8</entry> |
206 | <entry><structfield>reserved[11]</structfield></entry> | 237 | <entry><structfield>reserved[10]</structfield></entry> |
207 | <entry>Reserved for future extensions. Should be zeroed by the | 238 | <entry>Reserved for future extensions. Should be zeroed by the |
208 | application.</entry> | 239 | application.</entry> |
209 | </row> | 240 | </row> |
@@ -248,7 +279,7 @@ has just as many pad bytes after it as the other rows.</para> | |||
248 | 279 | ||
249 | <para>In V4L2 each format has an identifier which looks like | 280 | <para>In V4L2 each format has an identifier which looks like |
250 | <constant>PIX_FMT_XXX</constant>, defined in the <link | 281 | <constant>PIX_FMT_XXX</constant>, defined in the <link |
251 | linkend="videodev">videodev.h</link> header file. These identifiers | 282 | linkend="videodev">videodev2.h</link> header file. These identifiers |
252 | represent <link linkend="v4l2-fourcc">four character (FourCC) codes</link> | 283 | represent <link linkend="v4l2-fourcc">four character (FourCC) codes</link> |
253 | which are also listed below, however they are not the same as those | 284 | which are also listed below, however they are not the same as those |
254 | used in the Windows world.</para> | 285 | used in the Windows world.</para> |
@@ -828,6 +859,9 @@ interface only.</para> | |||
828 | 859 | ||
829 | &sub-sdr-cu08; | 860 | &sub-sdr-cu08; |
830 | &sub-sdr-cu16le; | 861 | &sub-sdr-cu16le; |
862 | &sub-sdr-cs08; | ||
863 | &sub-sdr-cs14le; | ||
864 | &sub-sdr-ru12le; | ||
831 | 865 | ||
832 | </section> | 866 | </section> |
833 | 867 | ||
@@ -1060,4 +1094,21 @@ concatenated to form the JPEG stream. </para> | |||
1060 | </tbody> | 1094 | </tbody> |
1061 | </tgroup> | 1095 | </tgroup> |
1062 | </table> | 1096 | </table> |
1097 | |||
1098 | <table frame="none" pgwide="1" id="format-flags"> | ||
1099 | <title>Format Flags</title> | ||
1100 | <tgroup cols="3"> | ||
1101 | &cs-def; | ||
1102 | <tbody valign="top"> | ||
1103 | <row> | ||
1104 | <entry><constant>V4L2_PIX_FMT_FLAG_PREMUL_ALPHA</constant></entry> | ||
1105 | <entry>0x00000001</entry> | ||
1106 | <entry>The color values are premultiplied by the alpha channel | ||
1107 | value. For example, if a light blue pixel with 50% transparency was described by | ||
1108 | RGBA values (128, 192, 255, 128), the same pixel described with premultiplied | ||
1109 | colors would be described by RGBA values (64, 96, 128, 128) </entry> | ||
1110 | </row> | ||
1111 | </tbody> | ||
1112 | </tgroup> | ||
1113 | </table> | ||
1063 | </section> | 1114 | </section> |
diff --git a/Documentation/DocBook/media/v4l/selection-api.xml b/Documentation/DocBook/media/v4l/selection-api.xml index 4c238ce068b0..28cbded766c9 100644 --- a/Documentation/DocBook/media/v4l/selection-api.xml +++ b/Documentation/DocBook/media/v4l/selection-api.xml | |||
@@ -86,47 +86,47 @@ selection targets available for a video capture device. It is recommended to | |||
86 | configure the cropping targets before to the composing targets.</para> | 86 | configure the cropping targets before to the composing targets.</para> |
87 | 87 | ||
88 | <para>The range of coordinates of the top left corner, width and height of | 88 | <para>The range of coordinates of the top left corner, width and height of |
89 | areas that can be sampled is given by the <constant> V4L2_SEL_TGT_CROP_BOUNDS | 89 | areas that can be sampled is given by the <constant>V4L2_SEL_TGT_CROP_BOUNDS</constant> |
90 | </constant> target. It is recommended for the driver developers to put the | 90 | target. It is recommended for the driver developers to put the |
91 | top/left corner at position <constant> (0,0) </constant>. The rectangle's | 91 | top/left corner at position <constant>(0,0)</constant>. The rectangle's |
92 | coordinates are expressed in pixels.</para> | 92 | coordinates are expressed in pixels.</para> |
93 | 93 | ||
94 | <para>The top left corner, width and height of the source rectangle, that is | 94 | <para>The top left corner, width and height of the source rectangle, that is |
95 | the area actually sampled, is given by the <constant> V4L2_SEL_TGT_CROP | 95 | the area actually sampled, is given by the <constant>V4L2_SEL_TGT_CROP</constant> |
96 | </constant> target. It uses the same coordinate system as <constant> | 96 | target. It uses the same coordinate system as <constant>V4L2_SEL_TGT_CROP_BOUNDS</constant>. |
97 | V4L2_SEL_TGT_CROP_BOUNDS </constant>. The active cropping area must lie | 97 | The active cropping area must lie completely inside the capture boundaries. The |
98 | completely inside the capture boundaries. The driver may further adjust the | 98 | driver may further adjust the requested size and/or position according to hardware |
99 | requested size and/or position according to hardware limitations.</para> | 99 | limitations.</para> |
100 | 100 | ||
101 | <para>Each capture device has a default source rectangle, given by the | 101 | <para>Each capture device has a default source rectangle, given by the |
102 | <constant> V4L2_SEL_TGT_CROP_DEFAULT </constant> target. This rectangle shall | 102 | <constant>V4L2_SEL_TGT_CROP_DEFAULT</constant> target. This rectangle shall |
103 | over what the driver writer considers the complete picture. Drivers shall set | 103 | over what the driver writer considers the complete picture. Drivers shall set |
104 | the active crop rectangle to the default when the driver is first loaded, but | 104 | the active crop rectangle to the default when the driver is first loaded, but |
105 | not later.</para> | 105 | not later.</para> |
106 | 106 | ||
107 | <para>The composing targets refer to a memory buffer. The limits of composing | 107 | <para>The composing targets refer to a memory buffer. The limits of composing |
108 | coordinates are obtained using <constant> V4L2_SEL_TGT_COMPOSE_BOUNDS | 108 | coordinates are obtained using <constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant>. |
109 | </constant>. All coordinates are expressed in pixels. The rectangle's top/left | 109 | All coordinates are expressed in pixels. The rectangle's top/left |
110 | corner must be located at position <constant> (0,0) </constant>. The width and | 110 | corner must be located at position <constant>(0,0)</constant>. The width and |
111 | height are equal to the image size set by <constant> VIDIOC_S_FMT </constant>. | 111 | height are equal to the image size set by <constant>VIDIOC_S_FMT</constant>. |
112 | </para> | 112 | </para> |
113 | 113 | ||
114 | <para>The part of a buffer into which the image is inserted by the hardware is | 114 | <para>The part of a buffer into which the image is inserted by the hardware is |
115 | controlled by the <constant> V4L2_SEL_TGT_COMPOSE </constant> target. | 115 | controlled by the <constant>V4L2_SEL_TGT_COMPOSE</constant> target. |
116 | The rectangle's coordinates are also expressed in the same coordinate system as | 116 | The rectangle's coordinates are also expressed in the same coordinate system as |
117 | the bounds rectangle. The composing rectangle must lie completely inside bounds | 117 | the bounds rectangle. The composing rectangle must lie completely inside bounds |
118 | rectangle. The driver must adjust the composing rectangle to fit to the | 118 | rectangle. The driver must adjust the composing rectangle to fit to the |
119 | bounding limits. Moreover, the driver can perform other adjustments according | 119 | bounding limits. Moreover, the driver can perform other adjustments according |
120 | to hardware limitations. The application can control rounding behaviour using | 120 | to hardware limitations. The application can control rounding behaviour using |
121 | <link linkend="v4l2-selection-flags"> constraint flags </link>.</para> | 121 | <link linkend="v4l2-selection-flags"> constraint flags</link>.</para> |
122 | 122 | ||
123 | <para>For capture devices the default composing rectangle is queried using | 123 | <para>For capture devices the default composing rectangle is queried using |
124 | <constant> V4L2_SEL_TGT_COMPOSE_DEFAULT </constant>. It is usually equal to the | 124 | <constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant>. It is usually equal to the |
125 | bounding rectangle.</para> | 125 | bounding rectangle.</para> |
126 | 126 | ||
127 | <para>The part of a buffer that is modified by the hardware is given by | 127 | <para>The part of a buffer that is modified by the hardware is given by |
128 | <constant> V4L2_SEL_TGT_COMPOSE_PADDED </constant>. It contains all pixels | 128 | <constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant>. It contains all pixels |
129 | defined using <constant> V4L2_SEL_TGT_COMPOSE </constant> plus all | 129 | defined using <constant>V4L2_SEL_TGT_COMPOSE</constant> plus all |
130 | padding data modified by hardware during insertion process. All pixels outside | 130 | padding data modified by hardware during insertion process. All pixels outside |
131 | this rectangle <emphasis>must not</emphasis> be changed by the hardware. The | 131 | this rectangle <emphasis>must not</emphasis> be changed by the hardware. The |
132 | content of pixels that lie inside the padded area but outside active area is | 132 | content of pixels that lie inside the padded area but outside active area is |
@@ -140,52 +140,51 @@ where the rubbish pixels are located and remove them if needed.</para> | |||
140 | <title>Configuration of video output</title> | 140 | <title>Configuration of video output</title> |
141 | 141 | ||
142 | <para>For output devices targets and ioctls are used similarly to the video | 142 | <para>For output devices targets and ioctls are used similarly to the video |
143 | capture case. The <emphasis> composing </emphasis> rectangle refers to the | 143 | capture case. The <emphasis>composing</emphasis> rectangle refers to the |
144 | insertion of an image into a video signal. The cropping rectangles refer to a | 144 | insertion of an image into a video signal. The cropping rectangles refer to a |
145 | memory buffer. It is recommended to configure the composing targets before to | 145 | memory buffer. It is recommended to configure the composing targets before to |
146 | the cropping targets.</para> | 146 | the cropping targets.</para> |
147 | 147 | ||
148 | <para>The cropping targets refer to the memory buffer that contains an image to | 148 | <para>The cropping targets refer to the memory buffer that contains an image to |
149 | be inserted into a video signal or graphical screen. The limits of cropping | 149 | be inserted into a video signal or graphical screen. The limits of cropping |
150 | coordinates are obtained using <constant> V4L2_SEL_TGT_CROP_BOUNDS </constant>. | 150 | coordinates are obtained using <constant>V4L2_SEL_TGT_CROP_BOUNDS</constant>. |
151 | All coordinates are expressed in pixels. The top/left corner is always point | 151 | All coordinates are expressed in pixels. The top/left corner is always point |
152 | <constant> (0,0) </constant>. The width and height is equal to the image size | 152 | <constant>(0,0)</constant>. The width and height is equal to the image size |
153 | specified using <constant> VIDIOC_S_FMT </constant> ioctl.</para> | 153 | specified using <constant>VIDIOC_S_FMT</constant> ioctl.</para> |
154 | 154 | ||
155 | <para>The top left corner, width and height of the source rectangle, that is | 155 | <para>The top left corner, width and height of the source rectangle, that is |
156 | the area from which image date are processed by the hardware, is given by the | 156 | the area from which image date are processed by the hardware, is given by the |
157 | <constant> V4L2_SEL_TGT_CROP </constant>. Its coordinates are expressed | 157 | <constant>V4L2_SEL_TGT_CROP</constant>. Its coordinates are expressed |
158 | in in the same coordinate system as the bounds rectangle. The active cropping | 158 | in in the same coordinate system as the bounds rectangle. The active cropping |
159 | area must lie completely inside the crop boundaries and the driver may further | 159 | area must lie completely inside the crop boundaries and the driver may further |
160 | adjust the requested size and/or position according to hardware | 160 | adjust the requested size and/or position according to hardware |
161 | limitations.</para> | 161 | limitations.</para> |
162 | 162 | ||
163 | <para>For output devices the default cropping rectangle is queried using | 163 | <para>For output devices the default cropping rectangle is queried using |
164 | <constant> V4L2_SEL_TGT_CROP_DEFAULT </constant>. It is usually equal to the | 164 | <constant>V4L2_SEL_TGT_CROP_DEFAULT</constant>. It is usually equal to the |
165 | bounding rectangle.</para> | 165 | bounding rectangle.</para> |
166 | 166 | ||
167 | <para>The part of a video signal or graphics display where the image is | 167 | <para>The part of a video signal or graphics display where the image is |
168 | inserted by the hardware is controlled by <constant> | 168 | inserted by the hardware is controlled by <constant>V4L2_SEL_TGT_COMPOSE</constant> |
169 | V4L2_SEL_TGT_COMPOSE </constant> target. The rectangle's coordinates | 169 | target. The rectangle's coordinates are expressed in pixels. The composing |
170 | are expressed in pixels. The composing rectangle must lie completely inside the | 170 | rectangle must lie completely inside the bounds rectangle. The driver must |
171 | bounds rectangle. The driver must adjust the area to fit to the bounding | 171 | adjust the area to fit to the bounding limits. Moreover, the driver can |
172 | limits. Moreover, the driver can perform other adjustments according to | 172 | perform other adjustments according to hardware limitations.</para> |
173 | hardware limitations. </para> | 173 | |
174 | 174 | <para>The device has a default composing rectangle, given by the | |
175 | <para>The device has a default composing rectangle, given by the <constant> | 175 | <constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant> target. This rectangle shall cover what |
176 | V4L2_SEL_TGT_COMPOSE_DEFAULT </constant> target. This rectangle shall cover what | ||
177 | the driver writer considers the complete picture. It is recommended for the | 176 | the driver writer considers the complete picture. It is recommended for the |
178 | driver developers to put the top/left corner at position <constant> (0,0) | 177 | driver developers to put the top/left corner at position <constant>(0,0)</constant>. |
179 | </constant>. Drivers shall set the active composing rectangle to the default | 178 | Drivers shall set the active composing rectangle to the default |
180 | one when the driver is first loaded.</para> | 179 | one when the driver is first loaded.</para> |
181 | 180 | ||
182 | <para>The devices may introduce additional content to video signal other than | 181 | <para>The devices may introduce additional content to video signal other than |
183 | an image from memory buffers. It includes borders around an image. However, | 182 | an image from memory buffers. It includes borders around an image. However, |
184 | such a padded area is driver-dependent feature not covered by this document. | 183 | such a padded area is driver-dependent feature not covered by this document. |
185 | Driver developers are encouraged to keep padded rectangle equal to active one. | 184 | Driver developers are encouraged to keep padded rectangle equal to active one. |
186 | The padded target is accessed by the <constant> V4L2_SEL_TGT_COMPOSE_PADDED | 185 | The padded target is accessed by the <constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant> |
187 | </constant> identifier. It must contain all pixels from the <constant> | 186 | identifier. It must contain all pixels from the <constant>V4L2_SEL_TGT_COMPOSE</constant> |
188 | V4L2_SEL_TGT_COMPOSE </constant> target.</para> | 187 | target.</para> |
189 | 188 | ||
190 | </section> | 189 | </section> |
191 | 190 | ||
@@ -194,8 +193,8 @@ V4L2_SEL_TGT_COMPOSE </constant> target.</para> | |||
194 | <title>Scaling control</title> | 193 | <title>Scaling control</title> |
195 | 194 | ||
196 | <para>An application can detect if scaling is performed by comparing the width | 195 | <para>An application can detect if scaling is performed by comparing the width |
197 | and the height of rectangles obtained using <constant> V4L2_SEL_TGT_CROP | 196 | and the height of rectangles obtained using <constant>V4L2_SEL_TGT_CROP</constant> |
198 | </constant> and <constant> V4L2_SEL_TGT_COMPOSE </constant> targets. If | 197 | and <constant>V4L2_SEL_TGT_COMPOSE</constant> targets. If |
199 | these are not equal then the scaling is applied. The application can compute | 198 | these are not equal then the scaling is applied. The application can compute |
200 | the scaling ratios using these values.</para> | 199 | the scaling ratios using these values.</para> |
201 | 200 | ||
@@ -208,7 +207,7 @@ the scaling ratios using these values.</para> | |||
208 | <title>Comparison with old cropping API</title> | 207 | <title>Comparison with old cropping API</title> |
209 | 208 | ||
210 | <para>The selection API was introduced to cope with deficiencies of previous | 209 | <para>The selection API was introduced to cope with deficiencies of previous |
211 | <link linkend="crop"> API </link>, that was designed to control simple capture | 210 | <link linkend="crop"> API</link>, that was designed to control simple capture |
212 | devices. Later the cropping API was adopted by video output drivers. The ioctls | 211 | devices. Later the cropping API was adopted by video output drivers. The ioctls |
213 | are used to select a part of the display were the video signal is inserted. It | 212 | are used to select a part of the display were the video signal is inserted. It |
214 | should be considered as an API abuse because the described operation is | 213 | should be considered as an API abuse because the described operation is |
@@ -220,7 +219,7 @@ part of an image by abusing V4L2 API. Cropping a smaller image from a larger | |||
220 | one is achieved by setting the field | 219 | one is achieved by setting the field |
221 | &v4l2-pix-format;<structfield>::bytesperline</structfield>. Introducing an image offsets | 220 | &v4l2-pix-format;<structfield>::bytesperline</structfield>. Introducing an image offsets |
222 | could be done by modifying field &v4l2-buffer;<structfield>::m_userptr</structfield> | 221 | could be done by modifying field &v4l2-buffer;<structfield>::m_userptr</structfield> |
223 | before calling <constant> VIDIOC_QBUF </constant>. Those | 222 | before calling <constant>VIDIOC_QBUF</constant>. Those |
224 | operations should be avoided because they are not portable (endianness), and do | 223 | operations should be avoided because they are not portable (endianness), and do |
225 | not work for macroblock and Bayer formats and mmap buffers. The selection API | 224 | not work for macroblock and Bayer formats and mmap buffers. The selection API |
226 | deals with configuration of buffer cropping/composing in a clear, intuitive and | 225 | deals with configuration of buffer cropping/composing in a clear, intuitive and |
@@ -229,7 +228,7 @@ and constraints flags are introduced. Finally, &v4l2-crop; and &v4l2-cropcap; | |||
229 | have no reserved fields. Therefore there is no way to extend their functionality. | 228 | have no reserved fields. Therefore there is no way to extend their functionality. |
230 | The new &v4l2-selection; provides a lot of place for future | 229 | The new &v4l2-selection; provides a lot of place for future |
231 | extensions. Driver developers are encouraged to implement only selection API. | 230 | extensions. Driver developers are encouraged to implement only selection API. |
232 | The former cropping API would be simulated using the new one. </para> | 231 | The former cropping API would be simulated using the new one.</para> |
233 | 232 | ||
234 | </section> | 233 | </section> |
235 | 234 | ||
@@ -238,9 +237,9 @@ The former cropping API would be simulated using the new one. </para> | |||
238 | <example> | 237 | <example> |
239 | <title>Resetting the cropping parameters</title> | 238 | <title>Resetting the cropping parameters</title> |
240 | 239 | ||
241 | <para>(A video capture device is assumed; change <constant> | 240 | <para>(A video capture device is assumed; change |
242 | V4L2_BUF_TYPE_VIDEO_CAPTURE </constant> for other devices; change target to | 241 | <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> for other devices; change target to |
243 | <constant> V4L2_SEL_TGT_COMPOSE_* </constant> family to configure composing | 242 | <constant>V4L2_SEL_TGT_COMPOSE_*</constant> family to configure composing |
244 | area)</para> | 243 | area)</para> |
245 | 244 | ||
246 | <programlisting> | 245 | <programlisting> |
@@ -292,8 +291,8 @@ area)</para> | |||
292 | 291 | ||
293 | <example> | 292 | <example> |
294 | <title>Querying for scaling factors</title> | 293 | <title>Querying for scaling factors</title> |
295 | <para>A video output device is assumed; change <constant> | 294 | <para>A video output device is assumed; change |
296 | V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> for other devices</para> | 295 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> for other devices</para> |
297 | <programlisting> | 296 | <programlisting> |
298 | 297 | ||
299 | &v4l2-selection; compose = { | 298 | &v4l2-selection; compose = { |
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml index b445161b912c..f2f81f06a17b 100644 --- a/Documentation/DocBook/media/v4l/v4l2.xml +++ b/Documentation/DocBook/media/v4l/v4l2.xml | |||
@@ -152,6 +152,14 @@ structs, ioctls) must be noted in more detail in the history chapter | |||
152 | applications. --> | 152 | applications. --> |
153 | 153 | ||
154 | <revision> | 154 | <revision> |
155 | <revnumber>3.16</revnumber> | ||
156 | <date>2014-05-27</date> | ||
157 | <authorinitials>lp</authorinitials> | ||
158 | <revremark>Extended &v4l2-pix-format;. Added format flags. | ||
159 | </revremark> | ||
160 | </revision> | ||
161 | |||
162 | <revision> | ||
155 | <revnumber>3.15</revnumber> | 163 | <revnumber>3.15</revnumber> |
156 | <date>2014-02-03</date> | 164 | <date>2014-02-03</date> |
157 | <authorinitials>hv, ap</authorinitials> | 165 | <authorinitials>hv, ap</authorinitials> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml index 820f86e8744b..cb7732582f03 100644 --- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml +++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml | |||
@@ -94,6 +94,18 @@ | |||
94 | </row> | 94 | </row> |
95 | <row> | 95 | <row> |
96 | <entry></entry> | 96 | <entry></entry> |
97 | <entry>&v4l2-event-motion-det;</entry> | ||
98 | <entry><structfield>motion_det</structfield></entry> | ||
99 | <entry>Event data for event V4L2_EVENT_MOTION_DET.</entry> | ||
100 | </row> | ||
101 | <row> | ||
102 | <entry></entry> | ||
103 | <entry>&v4l2-event-src-change;</entry> | ||
104 | <entry><structfield>src_change</structfield></entry> | ||
105 | <entry>Event data for event V4L2_EVENT_SOURCE_CHANGE.</entry> | ||
106 | </row> | ||
107 | <row> | ||
108 | <entry></entry> | ||
97 | <entry>__u8</entry> | 109 | <entry>__u8</entry> |
98 | <entry><structfield>data</structfield>[64]</entry> | 110 | <entry><structfield>data</structfield>[64]</entry> |
99 | <entry>Event data. Defined by the event type. The union | 111 | <entry>Event data. Defined by the event type. The union |
@@ -258,6 +270,44 @@ | |||
258 | </tgroup> | 270 | </tgroup> |
259 | </table> | 271 | </table> |
260 | 272 | ||
273 | <table frame="none" pgwide="1" id="v4l2-event-motion-det"> | ||
274 | <title>struct <structname>v4l2_event_motion_det</structname></title> | ||
275 | <tgroup cols="3"> | ||
276 | &cs-str; | ||
277 | <tbody valign="top"> | ||
278 | <row> | ||
279 | <entry>__u32</entry> | ||
280 | <entry><structfield>flags</structfield></entry> | ||
281 | <entry> | ||
282 | Currently only one flag is available: if <constant>V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ</constant> | ||
283 | is set, then the <structfield>frame_sequence</structfield> field is valid, | ||
284 | otherwise that field should be ignored. | ||
285 | </entry> | ||
286 | </row> | ||
287 | <row> | ||
288 | <entry>__u32</entry> | ||
289 | <entry><structfield>frame_sequence</structfield></entry> | ||
290 | <entry> | ||
291 | The sequence number of the frame being received. Only valid if the | ||
292 | <constant>V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ</constant> flag was set. | ||
293 | </entry> | ||
294 | </row> | ||
295 | <row> | ||
296 | <entry>__u32</entry> | ||
297 | <entry><structfield>region_mask</structfield></entry> | ||
298 | <entry> | ||
299 | The bitmask of the regions that reported motion. There is at least one | ||
300 | region. If this field is 0, then no motion was detected at all. | ||
301 | If there is no <constant>V4L2_CID_DETECT_MD_REGION_GRID</constant> control | ||
302 | (see <xref linkend="detect-controls" />) to assign a different region | ||
303 | to each cell in the motion detection grid, then that all cells | ||
304 | are automatically assigned to the default region 0. | ||
305 | </entry> | ||
306 | </row> | ||
307 | </tbody> | ||
308 | </tgroup> | ||
309 | </table> | ||
310 | |||
261 | <table pgwide="1" frame="none" id="changes-flags"> | 311 | <table pgwide="1" frame="none" id="changes-flags"> |
262 | <title>Changes</title> | 312 | <title>Changes</title> |
263 | <tgroup cols="3"> | 313 | <tgroup cols="3"> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml index e9f6735c0823..c5bdbfcc42b3 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml | |||
@@ -72,23 +72,30 @@ initialize the <structfield>id</structfield>, | |||
72 | <structfield>size</structfield> and <structfield>reserved2</structfield> fields | 72 | <structfield>size</structfield> and <structfield>reserved2</structfield> fields |
73 | of each &v4l2-ext-control; and call the | 73 | of each &v4l2-ext-control; and call the |
74 | <constant>VIDIOC_G_EXT_CTRLS</constant> ioctl. String controls controls | 74 | <constant>VIDIOC_G_EXT_CTRLS</constant> ioctl. String controls controls |
75 | must also set the <structfield>string</structfield> field.</para> | 75 | must also set the <structfield>string</structfield> field. Controls |
76 | of compound types (<constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is set) | ||
77 | must set the <structfield>ptr</structfield> field.</para> | ||
76 | 78 | ||
77 | <para>If the <structfield>size</structfield> is too small to | 79 | <para>If the <structfield>size</structfield> is too small to |
78 | receive the control result (only relevant for pointer-type controls | 80 | receive the control result (only relevant for pointer-type controls |
79 | like strings), then the driver will set <structfield>size</structfield> | 81 | like strings), then the driver will set <structfield>size</structfield> |
80 | to a valid value and return an &ENOSPC;. You should re-allocate the | 82 | to a valid value and return an &ENOSPC;. You should re-allocate the |
81 | string memory to this new size and try again. It is possible that the | 83 | memory to this new size and try again. For the string type it is possible that |
82 | same issue occurs again if the string has grown in the meantime. It is | 84 | the same issue occurs again if the string has grown in the meantime. It is |
83 | recommended to call &VIDIOC-QUERYCTRL; first and use | 85 | recommended to call &VIDIOC-QUERYCTRL; first and use |
84 | <structfield>maximum</structfield>+1 as the new <structfield>size</structfield> | 86 | <structfield>maximum</structfield>+1 as the new <structfield>size</structfield> |
85 | value. It is guaranteed that that is sufficient memory. | 87 | value. It is guaranteed that that is sufficient memory. |
86 | </para> | 88 | </para> |
87 | 89 | ||
90 | <para>N-dimensional arrays are set and retrieved row-by-row. You cannot set a partial | ||
91 | array, all elements have to be set or retrieved. The total size is calculated | ||
92 | as <structfield>elems</structfield> * <structfield>elem_size</structfield>. | ||
93 | These values can be obtained by calling &VIDIOC-QUERY-EXT-CTRL;.</para> | ||
94 | |||
88 | <para>To change the value of a set of controls applications | 95 | <para>To change the value of a set of controls applications |
89 | initialize the <structfield>id</structfield>, <structfield>size</structfield>, | 96 | initialize the <structfield>id</structfield>, <structfield>size</structfield>, |
90 | <structfield>reserved2</structfield> and | 97 | <structfield>reserved2</structfield> and |
91 | <structfield>value/string</structfield> fields of each &v4l2-ext-control; and | 98 | <structfield>value/value64/string/ptr</structfield> fields of each &v4l2-ext-control; and |
92 | call the <constant>VIDIOC_S_EXT_CTRLS</constant> ioctl. The controls | 99 | call the <constant>VIDIOC_S_EXT_CTRLS</constant> ioctl. The controls |
93 | will only be set if <emphasis>all</emphasis> control values are | 100 | will only be set if <emphasis>all</emphasis> control values are |
94 | valid.</para> | 101 | valid.</para> |
@@ -96,7 +103,7 @@ valid.</para> | |||
96 | <para>To check if a set of controls have correct values applications | 103 | <para>To check if a set of controls have correct values applications |
97 | initialize the <structfield>id</structfield>, <structfield>size</structfield>, | 104 | initialize the <structfield>id</structfield>, <structfield>size</structfield>, |
98 | <structfield>reserved2</structfield> and | 105 | <structfield>reserved2</structfield> and |
99 | <structfield>value/string</structfield> fields of each &v4l2-ext-control; and | 106 | <structfield>value/value64/string/ptr</structfield> fields of each &v4l2-ext-control; and |
100 | call the <constant>VIDIOC_TRY_EXT_CTRLS</constant> ioctl. It is up to | 107 | call the <constant>VIDIOC_TRY_EXT_CTRLS</constant> ioctl. It is up to |
101 | the driver whether wrong values are automatically adjusted to a valid | 108 | the driver whether wrong values are automatically adjusted to a valid |
102 | value or if an error is returned.</para> | 109 | value or if an error is returned.</para> |
@@ -158,19 +165,47 @@ applications must set the array to zero.</entry> | |||
158 | <entry></entry> | 165 | <entry></entry> |
159 | <entry>__s32</entry> | 166 | <entry>__s32</entry> |
160 | <entry><structfield>value</structfield></entry> | 167 | <entry><structfield>value</structfield></entry> |
161 | <entry>New value or current value.</entry> | 168 | <entry>New value or current value. Valid if this control is not of |
169 | type <constant>V4L2_CTRL_TYPE_INTEGER64</constant> and | ||
170 | <constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is not set.</entry> | ||
162 | </row> | 171 | </row> |
163 | <row> | 172 | <row> |
164 | <entry></entry> | 173 | <entry></entry> |
165 | <entry>__s64</entry> | 174 | <entry>__s64</entry> |
166 | <entry><structfield>value64</structfield></entry> | 175 | <entry><structfield>value64</structfield></entry> |
167 | <entry>New value or current value.</entry> | 176 | <entry>New value or current value. Valid if this control is of |
177 | type <constant>V4L2_CTRL_TYPE_INTEGER64</constant> and | ||
178 | <constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is not set.</entry> | ||
168 | </row> | 179 | </row> |
169 | <row> | 180 | <row> |
170 | <entry></entry> | 181 | <entry></entry> |
171 | <entry>char *</entry> | 182 | <entry>char *</entry> |
172 | <entry><structfield>string</structfield></entry> | 183 | <entry><structfield>string</structfield></entry> |
173 | <entry>A pointer to a string.</entry> | 184 | <entry>A pointer to a string. Valid if this control is of |
185 | type <constant>V4L2_CTRL_TYPE_STRING</constant>.</entry> | ||
186 | </row> | ||
187 | <row> | ||
188 | <entry></entry> | ||
189 | <entry>__u8 *</entry> | ||
190 | <entry><structfield>p_u8</structfield></entry> | ||
191 | <entry>A pointer to a matrix control of unsigned 8-bit values. | ||
192 | Valid if this control is of type <constant>V4L2_CTRL_TYPE_U8</constant>.</entry> | ||
193 | </row> | ||
194 | <row> | ||
195 | <entry></entry> | ||
196 | <entry>__u16 *</entry> | ||
197 | <entry><structfield>p_u16</structfield></entry> | ||
198 | <entry>A pointer to a matrix control of unsigned 16-bit values. | ||
199 | Valid if this control is of type <constant>V4L2_CTRL_TYPE_U16</constant>.</entry> | ||
200 | </row> | ||
201 | <row> | ||
202 | <entry></entry> | ||
203 | <entry>void *</entry> | ||
204 | <entry><structfield>ptr</structfield></entry> | ||
205 | <entry>A pointer to a compound type which can be an N-dimensional array and/or a | ||
206 | compound type (the control's type is >= <constant>V4L2_CTRL_COMPOUND_TYPES</constant>). | ||
207 | Valid if <constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is set for this control. | ||
208 | </entry> | ||
174 | </row> | 209 | </row> |
175 | </tbody> | 210 | </tbody> |
176 | </tgroup> | 211 | </tgroup> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml index 7c63815e7afd..20460730b02c 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml | |||
@@ -152,13 +152,10 @@ a valid base address, so applications can find the corresponding Linux | |||
152 | framebuffer device (see <xref linkend="osd" />).</entry> | 152 | framebuffer device (see <xref linkend="osd" />).</entry> |
153 | </row> | 153 | </row> |
154 | <row> | 154 | <row> |
155 | <entry>&v4l2-pix-format;</entry> | 155 | <entry>struct</entry> |
156 | <entry><structfield>fmt</structfield></entry> | 156 | <entry><structfield>fmt</structfield></entry> |
157 | <entry></entry> | 157 | <entry></entry> |
158 | <entry>Layout of the frame buffer. The | 158 | <entry>Layout of the frame buffer.</entry> |
159 | <structname>v4l2_pix_format</structname> structure is defined in <xref | ||
160 | linkend="pixfmt" />, for clarification the fields and acceptable values | ||
161 | are listed below:</entry> | ||
162 | </row> | 159 | </row> |
163 | <row> | 160 | <row> |
164 | <entry></entry> | 161 | <entry></entry> |
@@ -276,9 +273,8 @@ see <xref linkend="colorspaces" />.</entry> | |||
276 | <entry></entry> | 273 | <entry></entry> |
277 | <entry>__u32</entry> | 274 | <entry>__u32</entry> |
278 | <entry><structfield>priv</structfield></entry> | 275 | <entry><structfield>priv</structfield></entry> |
279 | <entry>Reserved for additional information about custom | 276 | <entry>Reserved. Drivers and applications must set this field to |
280 | (driver defined) formats. When not used drivers and applications must | 277 | zero.</entry> |
281 | set this field to zero.</entry> | ||
282 | </row> | 278 | </row> |
283 | </tbody> | 279 | </tbody> |
284 | </tgroup> | 280 | </tgroup> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml index b11ec75e21a1..9c04ac8661b1 100644 --- a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml +++ b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml | |||
@@ -58,17 +58,16 @@ | |||
58 | 58 | ||
59 | <para>The ioctls are used to query and configure selection rectangles.</para> | 59 | <para>The ioctls are used to query and configure selection rectangles.</para> |
60 | 60 | ||
61 | <para> To query the cropping (composing) rectangle set &v4l2-selection; | 61 | <para>To query the cropping (composing) rectangle set &v4l2-selection; |
62 | <structfield> type </structfield> field to the respective buffer type. | 62 | <structfield> type </structfield> field to the respective buffer type. |
63 | Do not use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE | 63 | Do not use multiplanar buffers. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> |
64 | </constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE | 64 | instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>. Use |
65 | </constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of | 65 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of |
66 | <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is | 66 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>. The next step is |
67 | setting the value of &v4l2-selection; <structfield>target</structfield> field | 67 | setting the value of &v4l2-selection; <structfield>target</structfield> field |
68 | to <constant> V4L2_SEL_TGT_CROP </constant> (<constant> | 68 | to <constant>V4L2_SEL_TGT_CROP</constant> (<constant>V4L2_SEL_TGT_COMPOSE</constant>). |
69 | V4L2_SEL_TGT_COMPOSE </constant>). Please refer to table <xref | 69 | Please refer to table <xref linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> |
70 | linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> for additional | 70 | for additional targets. The <structfield>flags</structfield> and <structfield>reserved |
71 | targets. The <structfield>flags</structfield> and <structfield>reserved | ||
72 | </structfield> fields of &v4l2-selection; are ignored and they must be filled | 71 | </structfield> fields of &v4l2-selection; are ignored and they must be filled |
73 | with zeros. The driver fills the rest of the structure or | 72 | with zeros. The driver fills the rest of the structure or |
74 | returns &EINVAL; if incorrect buffer type or target was used. If cropping | 73 | returns &EINVAL; if incorrect buffer type or target was used. If cropping |
@@ -77,19 +76,18 @@ always equal to the bounds rectangle. Finally, the &v4l2-rect; | |||
77 | <structfield>r</structfield> rectangle is filled with the current cropping | 76 | <structfield>r</structfield> rectangle is filled with the current cropping |
78 | (composing) coordinates. The coordinates are expressed in driver-dependent | 77 | (composing) coordinates. The coordinates are expressed in driver-dependent |
79 | units. The only exception are rectangles for images in raw formats, whose | 78 | units. The only exception are rectangles for images in raw formats, whose |
80 | coordinates are always expressed in pixels. </para> | 79 | coordinates are always expressed in pixels.</para> |
81 | 80 | ||
82 | <para> To change the cropping (composing) rectangle set the &v4l2-selection; | 81 | <para>To change the cropping (composing) rectangle set the &v4l2-selection; |
83 | <structfield>type</structfield> field to the respective buffer type. Do not | 82 | <structfield>type</structfield> field to the respective buffer type. Do not |
84 | use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE | 83 | use multiplanar buffers. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> |
85 | </constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE | 84 | instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>. Use |
86 | </constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of | 85 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of |
87 | <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is | 86 | <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>. The next step is |
88 | setting the value of &v4l2-selection; <structfield>target</structfield> to | 87 | setting the value of &v4l2-selection; <structfield>target</structfield> to |
89 | <constant>V4L2_SEL_TGT_CROP</constant> (<constant> | 88 | <constant>V4L2_SEL_TGT_CROP</constant> (<constant>V4L2_SEL_TGT_COMPOSE</constant>). |
90 | V4L2_SEL_TGT_COMPOSE </constant>). Please refer to table <xref | 89 | Please refer to table <xref linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> |
91 | linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> for additional | 90 | for additional targets. The &v4l2-rect; <structfield>r</structfield> rectangle need to be |
92 | targets. The &v4l2-rect; <structfield>r</structfield> rectangle need to be | ||
93 | set to the desired active area. Field &v4l2-selection; <structfield> reserved | 91 | set to the desired active area. Field &v4l2-selection; <structfield> reserved |
94 | </structfield> is ignored and must be filled with zeros. The driver may adjust | 92 | </structfield> is ignored and must be filled with zeros. The driver may adjust |
95 | coordinates of the requested rectangle. An application may | 93 | coordinates of the requested rectangle. An application may |
@@ -149,8 +147,8 @@ On success the &v4l2-rect; <structfield>r</structfield> field contains | |||
149 | the adjusted rectangle. When the parameters are unsuitable the application may | 147 | the adjusted rectangle. When the parameters are unsuitable the application may |
150 | modify the cropping (composing) or image parameters and repeat the cycle until | 148 | modify the cropping (composing) or image parameters and repeat the cycle until |
151 | satisfactory parameters have been negotiated. If constraints flags have to be | 149 | satisfactory parameters have been negotiated. If constraints flags have to be |
152 | violated at then ERANGE is returned. The error indicates that <emphasis> there | 150 | violated at then ERANGE is returned. The error indicates that <emphasis>there |
153 | exist no rectangle </emphasis> that satisfies the constraints.</para> | 151 | exist no rectangle</emphasis> that satisfies the constraints.</para> |
154 | 152 | ||
155 | <para>Selection targets and flags are documented in <xref | 153 | <para>Selection targets and flags are documented in <xref |
156 | linkend="v4l2-selections-common"/>.</para> | 154 | linkend="v4l2-selections-common"/>.</para> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-querycap.xml b/Documentation/DocBook/media/v4l/vidioc-querycap.xml index 370d49d6fb64..d0c5e604f014 100644 --- a/Documentation/DocBook/media/v4l/vidioc-querycap.xml +++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml | |||
@@ -302,6 +302,12 @@ modulator programming see | |||
302 | <link linkend="sdr">SDR Capture</link> interface.</entry> | 302 | <link linkend="sdr">SDR Capture</link> interface.</entry> |
303 | </row> | 303 | </row> |
304 | <row> | 304 | <row> |
305 | <entry><constant>V4L2_CAP_EXT_PIX_FORMAT</constant></entry> | ||
306 | <entry>0x00200000</entry> | ||
307 | <entry>The device supports the &v4l2-pix-format; extended | ||
308 | fields.</entry> | ||
309 | </row> | ||
310 | <row> | ||
305 | <entry><constant>V4L2_CAP_READWRITE</constant></entry> | 311 | <entry><constant>V4L2_CAP_READWRITE</constant></entry> |
306 | <entry>0x01000000</entry> | 312 | <entry>0x01000000</entry> |
307 | <entry>The device supports the <link | 313 | <entry>The device supports the <link |
diff --git a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml index e6645b996558..2bd98fd7a4e5 100644 --- a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml +++ b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml | |||
@@ -1,11 +1,12 @@ | |||
1 | <refentry id="vidioc-queryctrl"> | 1 | <refentry id="vidioc-queryctrl"> |
2 | <refmeta> | 2 | <refmeta> |
3 | <refentrytitle>ioctl VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU</refentrytitle> | 3 | <refentrytitle>ioctl VIDIOC_QUERYCTRL, VIDIOC_QUERY_EXT_CTRL, VIDIOC_QUERYMENU</refentrytitle> |
4 | &manvol; | 4 | &manvol; |
5 | </refmeta> | 5 | </refmeta> |
6 | 6 | ||
7 | <refnamediv> | 7 | <refnamediv> |
8 | <refname>VIDIOC_QUERYCTRL</refname> | 8 | <refname>VIDIOC_QUERYCTRL</refname> |
9 | <refname>VIDIOC_QUERY_EXT_CTRL</refname> | ||
9 | <refname>VIDIOC_QUERYMENU</refname> | 10 | <refname>VIDIOC_QUERYMENU</refname> |
10 | <refpurpose>Enumerate controls and menu control items</refpurpose> | 11 | <refpurpose>Enumerate controls and menu control items</refpurpose> |
11 | </refnamediv> | 12 | </refnamediv> |
@@ -24,6 +25,14 @@ | |||
24 | <funcdef>int <function>ioctl</function></funcdef> | 25 | <funcdef>int <function>ioctl</function></funcdef> |
25 | <paramdef>int <parameter>fd</parameter></paramdef> | 26 | <paramdef>int <parameter>fd</parameter></paramdef> |
26 | <paramdef>int <parameter>request</parameter></paramdef> | 27 | <paramdef>int <parameter>request</parameter></paramdef> |
28 | <paramdef>struct v4l2_query_ext_ctrl *<parameter>argp</parameter></paramdef> | ||
29 | </funcprototype> | ||
30 | </funcsynopsis> | ||
31 | <funcsynopsis> | ||
32 | <funcprototype> | ||
33 | <funcdef>int <function>ioctl</function></funcdef> | ||
34 | <paramdef>int <parameter>fd</parameter></paramdef> | ||
35 | <paramdef>int <parameter>request</parameter></paramdef> | ||
27 | <paramdef>struct v4l2_querymenu *<parameter>argp</parameter></paramdef> | 36 | <paramdef>struct v4l2_querymenu *<parameter>argp</parameter></paramdef> |
28 | </funcprototype> | 37 | </funcprototype> |
29 | </funcsynopsis> | 38 | </funcsynopsis> |
@@ -42,7 +51,7 @@ | |||
42 | <varlistentry> | 51 | <varlistentry> |
43 | <term><parameter>request</parameter></term> | 52 | <term><parameter>request</parameter></term> |
44 | <listitem> | 53 | <listitem> |
45 | <para>VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU</para> | 54 | <para>VIDIOC_QUERYCTRL, VIDIOC_QUERY_EXT_CTRL, VIDIOC_QUERYMENU</para> |
46 | </listitem> | 55 | </listitem> |
47 | </varlistentry> | 56 | </varlistentry> |
48 | <varlistentry> | 57 | <varlistentry> |
@@ -67,7 +76,7 @@ structure. The driver fills the rest of the structure or returns an | |||
67 | <constant>VIDIOC_QUERYCTRL</constant> with successive | 76 | <constant>VIDIOC_QUERYCTRL</constant> with successive |
68 | <structfield>id</structfield> values starting from | 77 | <structfield>id</structfield> values starting from |
69 | <constant>V4L2_CID_BASE</constant> up to and exclusive | 78 | <constant>V4L2_CID_BASE</constant> up to and exclusive |
70 | <constant>V4L2_CID_BASE_LASTP1</constant>. Drivers may return | 79 | <constant>V4L2_CID_LASTP1</constant>. Drivers may return |
71 | <errorcode>EINVAL</errorcode> if a control in this range is not | 80 | <errorcode>EINVAL</errorcode> if a control in this range is not |
72 | supported. Further applications can enumerate private controls, which | 81 | supported. Further applications can enumerate private controls, which |
73 | are not defined in this specification, by starting at | 82 | are not defined in this specification, by starting at |
@@ -89,9 +98,23 @@ prematurely end the enumeration).</para></footnote></para> | |||
89 | 98 | ||
90 | <para>When the application ORs <structfield>id</structfield> with | 99 | <para>When the application ORs <structfield>id</structfield> with |
91 | <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> the driver returns the | 100 | <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> the driver returns the |
92 | next supported control, or <errorcode>EINVAL</errorcode> if there is | 101 | next supported non-compound control, or <errorcode>EINVAL</errorcode> |
93 | none. Drivers which do not support this flag yet always return | 102 | if there is none. In addition, the <constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant> |
94 | <errorcode>EINVAL</errorcode>.</para> | 103 | flag can be specified to enumerate all compound controls (i.e. controls |
104 | with type ≥ <constant>V4L2_CTRL_COMPOUND_TYPES</constant>). Specify both | ||
105 | <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> and | ||
106 | <constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant> in order to enumerate | ||
107 | all controls, compound or not. Drivers which do not support these flags yet | ||
108 | always return <errorcode>EINVAL</errorcode>.</para> | ||
109 | |||
110 | <para>The <constant>VIDIOC_QUERY_EXT_CTRL</constant> ioctl was | ||
111 | introduced in order to better support controls that can use compound | ||
112 | types, and to expose additional control information that cannot be | ||
113 | returned in &v4l2-queryctrl; since that structure is full.</para> | ||
114 | |||
115 | <para><constant>VIDIOC_QUERY_EXT_CTRL</constant> is used in the | ||
116 | same way as <constant>VIDIOC_QUERYCTRL</constant>, except that the | ||
117 | <structfield>reserved</structfield> array must be zeroed as well.</para> | ||
95 | 118 | ||
96 | <para>Additional information is required for menu controls: the | 119 | <para>Additional information is required for menu controls: the |
97 | names of the menu items. To query them applications set the | 120 | names of the menu items. To query them applications set the |
@@ -142,38 +165,23 @@ string. This information is intended for the user.</entry> | |||
142 | <entry>__s32</entry> | 165 | <entry>__s32</entry> |
143 | <entry><structfield>minimum</structfield></entry> | 166 | <entry><structfield>minimum</structfield></entry> |
144 | <entry>Minimum value, inclusive. This field gives a lower | 167 | <entry>Minimum value, inclusive. This field gives a lower |
145 | bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the | 168 | bound for the control. See &v4l2-ctrl-type; how the minimum value is to |
146 | lowest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> controls. | 169 | be used for each possible control type. Note that this a signed 32-bit value.</entry> |
147 | For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the minimum value | ||
148 | gives the minimum length of the string. This length <emphasis>does not include the terminating | ||
149 | zero</emphasis>. It may not be valid for any other type of control, including | ||
150 | <constant>V4L2_CTRL_TYPE_INTEGER64</constant> controls. Note that this is a | ||
151 | signed value.</entry> | ||
152 | </row> | 170 | </row> |
153 | <row> | 171 | <row> |
154 | <entry>__s32</entry> | 172 | <entry>__s32</entry> |
155 | <entry><structfield>maximum</structfield></entry> | 173 | <entry><structfield>maximum</structfield></entry> |
156 | <entry>Maximum value, inclusive. This field gives an upper | 174 | <entry>Maximum value, inclusive. This field gives an upper |
157 | bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the | 175 | bound for the control. See &v4l2-ctrl-type; how the maximum value is to |
158 | highest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> | 176 | be used for each possible control type. Note that this a signed 32-bit value.</entry> |
159 | controls. For <constant>V4L2_CTRL_TYPE_BITMASK</constant> controls it is the | ||
160 | set of usable bits. | ||
161 | For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the maximum value | ||
162 | gives the maximum length of the string. This length <emphasis>does not include the terminating | ||
163 | zero</emphasis>. It may not be valid for any other type of control, including | ||
164 | <constant>V4L2_CTRL_TYPE_INTEGER64</constant> controls. Note that this is a | ||
165 | signed value.</entry> | ||
166 | </row> | 177 | </row> |
167 | <row> | 178 | <row> |
168 | <entry>__s32</entry> | 179 | <entry>__s32</entry> |
169 | <entry><structfield>step</structfield></entry> | 180 | <entry><structfield>step</structfield></entry> |
170 | <entry><para>This field gives a step size for | 181 | <entry><para>This field gives a step size for the control. |
171 | <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls. For | 182 | See &v4l2-ctrl-type; how the step value is to be used for each possible |
172 | <constant>V4L2_CTRL_TYPE_STRING</constant> controls this field refers to | 183 | control type. Note that this an unsigned 32-bit value. |
173 | the string length that has to be a multiple of this step size. | 184 | </para><para>Generally drivers should not scale hardware |
174 | It may not be valid for any other type of control, including | ||
175 | <constant>V4L2_CTRL_TYPE_INTEGER64</constant> | ||
176 | controls.</para><para>Generally drivers should not scale hardware | ||
177 | control values. It may be necessary for example when the | 185 | control values. It may be necessary for example when the |
178 | <structfield>name</structfield> or <structfield>id</structfield> imply | 186 | <structfield>name</structfield> or <structfield>id</structfield> imply |
179 | a particular unit and the hardware actually accepts only multiples of | 187 | a particular unit and the hardware actually accepts only multiples of |
@@ -192,10 +200,11 @@ be always positive.</para></entry> | |||
192 | <entry><structfield>default_value</structfield></entry> | 200 | <entry><structfield>default_value</structfield></entry> |
193 | <entry>The default value of a | 201 | <entry>The default value of a |
194 | <constant>V4L2_CTRL_TYPE_INTEGER</constant>, | 202 | <constant>V4L2_CTRL_TYPE_INTEGER</constant>, |
195 | <constant>_BOOLEAN</constant> or <constant>_MENU</constant> control. | 203 | <constant>_BOOLEAN</constant>, <constant>_BITMASK</constant>, |
196 | Not valid for other types of controls. Drivers reset controls only | 204 | <constant>_MENU</constant> or <constant>_INTEGER_MENU</constant> control. |
197 | when the driver is loaded, not later, in particular not when the | 205 | Not valid for other types of controls. |
198 | func-open; is called.</entry> | 206 | Note that drivers reset controls to their default value only when the |
207 | driver is first loaded, never afterwards.</entry> | ||
199 | </row> | 208 | </row> |
200 | <row> | 209 | <row> |
201 | <entry>__u32</entry> | 210 | <entry>__u32</entry> |
@@ -213,6 +222,126 @@ the array to zero.</entry> | |||
213 | </tgroup> | 222 | </tgroup> |
214 | </table> | 223 | </table> |
215 | 224 | ||
225 | <table pgwide="1" frame="none" id="v4l2-query-ext-ctrl"> | ||
226 | <title>struct <structname>v4l2_query_ext_ctrl</structname></title> | ||
227 | <tgroup cols="3"> | ||
228 | &cs-str; | ||
229 | <tbody valign="top"> | ||
230 | <row> | ||
231 | <entry>__u32</entry> | ||
232 | <entry><structfield>id</structfield></entry> | ||
233 | <entry>Identifies the control, set by the application. See | ||
234 | <xref linkend="control-id" /> for predefined IDs. When the ID is ORed | ||
235 | with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> the driver clears the | ||
236 | flag and returns the first non-compound control with a higher ID. When the | ||
237 | ID is ORed with <constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant> the driver | ||
238 | clears the flag and returns the first compound control with a higher ID. | ||
239 | Set both to get the first control (compound or not) with a higher ID.</entry> | ||
240 | </row> | ||
241 | <row> | ||
242 | <entry>__u32</entry> | ||
243 | <entry><structfield>type</structfield></entry> | ||
244 | <entry>Type of control, see <xref | ||
245 | linkend="v4l2-ctrl-type" />.</entry> | ||
246 | </row> | ||
247 | <row> | ||
248 | <entry>char</entry> | ||
249 | <entry><structfield>name</structfield>[32]</entry> | ||
250 | <entry>Name of the control, a NUL-terminated ASCII | ||
251 | string. This information is intended for the user.</entry> | ||
252 | </row> | ||
253 | <row> | ||
254 | <entry>__s64</entry> | ||
255 | <entry><structfield>minimum</structfield></entry> | ||
256 | <entry>Minimum value, inclusive. This field gives a lower | ||
257 | bound for the control. See &v4l2-ctrl-type; how the minimum value is to | ||
258 | be used for each possible control type. Note that this a signed 64-bit value.</entry> | ||
259 | </row> | ||
260 | <row> | ||
261 | <entry>__s64</entry> | ||
262 | <entry><structfield>maximum</structfield></entry> | ||
263 | <entry>Maximum value, inclusive. This field gives an upper | ||
264 | bound for the control. See &v4l2-ctrl-type; how the maximum value is to | ||
265 | be used for each possible control type. Note that this a signed 64-bit value.</entry> | ||
266 | </row> | ||
267 | <row> | ||
268 | <entry>__u64</entry> | ||
269 | <entry><structfield>step</structfield></entry> | ||
270 | <entry><para>This field gives a step size for the control. | ||
271 | See &v4l2-ctrl-type; how the step value is to be used for each possible | ||
272 | control type. Note that this an unsigned 64-bit value. | ||
273 | </para><para>Generally drivers should not scale hardware | ||
274 | control values. It may be necessary for example when the | ||
275 | <structfield>name</structfield> or <structfield>id</structfield> imply | ||
276 | a particular unit and the hardware actually accepts only multiples of | ||
277 | said unit. If so, drivers must take care values are properly rounded | ||
278 | when scaling, such that errors will not accumulate on repeated | ||
279 | read-write cycles.</para><para>This field gives the smallest change of | ||
280 | an integer control actually affecting hardware. Often the information | ||
281 | is needed when the user can change controls by keyboard or GUI | ||
282 | buttons, rather than a slider. When for example a hardware register | ||
283 | accepts values 0-511 and the driver reports 0-65535, step should be | ||
284 | 128.</para></entry> | ||
285 | </row> | ||
286 | <row> | ||
287 | <entry>__s64</entry> | ||
288 | <entry><structfield>default_value</structfield></entry> | ||
289 | <entry>The default value of a | ||
290 | <constant>V4L2_CTRL_TYPE_INTEGER</constant>, <constant>_INTEGER64</constant>, | ||
291 | <constant>_BOOLEAN</constant>, <constant>_BITMASK</constant>, | ||
292 | <constant>_MENU</constant>, <constant>_INTEGER_MENU</constant>, | ||
293 | <constant>_U8</constant> or <constant>_U16</constant> control. | ||
294 | Not valid for other types of controls. | ||
295 | Note that drivers reset controls to their default value only when the | ||
296 | driver is first loaded, never afterwards. | ||
297 | </entry> | ||
298 | </row> | ||
299 | <row> | ||
300 | <entry>__u32</entry> | ||
301 | <entry><structfield>flags</structfield></entry> | ||
302 | <entry>Control flags, see <xref | ||
303 | linkend="control-flags" />.</entry> | ||
304 | </row> | ||
305 | <row> | ||
306 | <entry>__u32</entry> | ||
307 | <entry><structfield>elem_size</structfield></entry> | ||
308 | <entry>The size in bytes of a single element of the array. | ||
309 | Given a char pointer <constant>p</constant> to a 3-dimensional array you can find the | ||
310 | position of cell <constant>(z, y, x)</constant> as follows: | ||
311 | <constant>p + ((z * dims[1] + y) * dims[0] + x) * elem_size</constant>. <structfield>elem_size</structfield> | ||
312 | is always valid, also when the control isn't an array. For string controls | ||
313 | <structfield>elem_size</structfield> is equal to <structfield>maximum + 1</structfield>. | ||
314 | </entry> | ||
315 | </row> | ||
316 | <row> | ||
317 | <entry>__u32</entry> | ||
318 | <entry><structfield>elems</structfield></entry> | ||
319 | <entry>The number of elements in the N-dimensional array. If this control | ||
320 | is not an array, then <structfield>elems</structfield> is 1. The <structfield>elems</structfield> | ||
321 | field can never be 0.</entry> | ||
322 | </row> | ||
323 | <row> | ||
324 | <entry>__u32</entry> | ||
325 | <entry><structfield>nr_of_dims</structfield></entry> | ||
326 | <entry>The number of dimension in the N-dimensional array. If this control | ||
327 | is not an array, then this field is 0.</entry> | ||
328 | </row> | ||
329 | <row> | ||
330 | <entry>__u32</entry> | ||
331 | <entry><structfield>dims[V4L2_CTRL_MAX_DIMS]</structfield></entry> | ||
332 | <entry>The size of each dimension. The first <structfield>nr_of_dims</structfield> | ||
333 | elements of this array must be non-zero, all remaining elements must be zero.</entry> | ||
334 | </row> | ||
335 | <row> | ||
336 | <entry>__u32</entry> | ||
337 | <entry><structfield>reserved</structfield>[32]</entry> | ||
338 | <entry>Reserved for future extensions. Applications and drivers | ||
339 | must set the array to zero.</entry> | ||
340 | </row> | ||
341 | </tbody> | ||
342 | </tgroup> | ||
343 | </table> | ||
344 | |||
216 | <table pgwide="1" frame="none" id="v4l2-querymenu"> | 345 | <table pgwide="1" frame="none" id="v4l2-querymenu"> |
217 | <title>struct <structname>v4l2_querymenu</structname></title> | 346 | <title>struct <structname>v4l2_querymenu</structname></title> |
218 | <tgroup cols="4"> | 347 | <tgroup cols="4"> |
@@ -347,11 +476,14 @@ Drivers must ignore the value passed with | |||
347 | </row> | 476 | </row> |
348 | <row> | 477 | <row> |
349 | <entry><constant>V4L2_CTRL_TYPE_INTEGER64</constant></entry> | 478 | <entry><constant>V4L2_CTRL_TYPE_INTEGER64</constant></entry> |
350 | <entry>n/a</entry> | 479 | <entry>any</entry> |
351 | <entry>n/a</entry> | 480 | <entry>any</entry> |
352 | <entry>n/a</entry> | 481 | <entry>any</entry> |
353 | <entry>A 64-bit integer valued control. Minimum, maximum | 482 | <entry>A 64-bit integer valued control. Minimum, maximum |
354 | and step size cannot be queried.</entry> | 483 | and step size cannot be queried using <constant>VIDIOC_QUERYCTRL</constant>. |
484 | Only <constant>VIDIOC_QUERY_EXT_CTRL</constant> can retrieve the 64-bit | ||
485 | min/max/step values, they should be interpreted as n/a when using | ||
486 | <constant>VIDIOC_QUERYCTRL</constant>.</entry> | ||
355 | </row> | 487 | </row> |
356 | <row> | 488 | <row> |
357 | <entry><constant>V4L2_CTRL_TYPE_STRING</constant></entry> | 489 | <entry><constant>V4L2_CTRL_TYPE_STRING</constant></entry> |
@@ -379,6 +511,26 @@ ioctl returns the name of the control class and this control type. | |||
379 | Older drivers which do not support this feature return an | 511 | Older drivers which do not support this feature return an |
380 | &EINVAL;.</entry> | 512 | &EINVAL;.</entry> |
381 | </row> | 513 | </row> |
514 | <row> | ||
515 | <entry><constant>V4L2_CTRL_TYPE_U8</constant></entry> | ||
516 | <entry>any</entry> | ||
517 | <entry>any</entry> | ||
518 | <entry>any</entry> | ||
519 | <entry>An unsigned 8-bit valued control ranging from minimum to | ||
520 | maximum inclusive. The step value indicates the increment between | ||
521 | values which are actually different on the hardware. | ||
522 | </entry> | ||
523 | </row> | ||
524 | <row> | ||
525 | <entry><constant>V4L2_CTRL_TYPE_U16</constant></entry> | ||
526 | <entry>any</entry> | ||
527 | <entry>any</entry> | ||
528 | <entry>any</entry> | ||
529 | <entry>An unsigned 16-bit valued control ranging from minimum to | ||
530 | maximum inclusive. The step value indicates the increment between | ||
531 | values which are actually different on the hardware. | ||
532 | </entry> | ||
533 | </row> | ||
382 | </tbody> | 534 | </tbody> |
383 | </tgroup> | 535 | </tgroup> |
384 | </table> | 536 | </table> |
@@ -450,6 +602,14 @@ is in auto-gain mode. In such a case the hardware calculates the gain value base | |||
450 | the lighting conditions which can change over time. Note that setting a new value for | 602 | the lighting conditions which can change over time. Note that setting a new value for |
451 | a volatile control will have no effect. The new value will just be ignored.</entry> | 603 | a volatile control will have no effect. The new value will just be ignored.</entry> |
452 | </row> | 604 | </row> |
605 | <row> | ||
606 | <entry><constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant></entry> | ||
607 | <entry>0x0100</entry> | ||
608 | <entry>This control has a pointer type, so its value has to be accessed | ||
609 | using one of the pointer fields of &v4l2-ext-control;. This flag is set for controls | ||
610 | that are an array, string, or have a compound type. In all cases you have to set a | ||
611 | pointer to memory containing the payload of the control.</entry> | ||
612 | </row> | ||
453 | </tbody> | 613 | </tbody> |
454 | </tgroup> | 614 | </tgroup> |
455 | </table> | 615 | </table> |
diff --git a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml index 17efa870d4d2..9f6095608837 100644 --- a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml +++ b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml | |||
@@ -175,6 +175,14 @@ | |||
175 | </entry> | 175 | </entry> |
176 | </row> | 176 | </row> |
177 | <row> | 177 | <row> |
178 | <entry><constant>V4L2_EVENT_MOTION_DET</constant></entry> | ||
179 | <entry>5</entry> | ||
180 | <entry> | ||
181 | <para>Triggered whenever the motion detection state for one or more of the regions | ||
182 | changes. This event has a &v4l2-event-motion-det; associated with it.</para> | ||
183 | </entry> | ||
184 | </row> | ||
185 | <row> | ||
178 | <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry> | 186 | <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry> |
179 | <entry>0x08000000</entry> | 187 | <entry>0x08000000</entry> |
180 | <entry>Base event number for driver-private events.</entry> | 188 | <entry>Base event number for driver-private events.</entry> |
diff --git a/Documentation/PCI/MSI-HOWTO.txt b/Documentation/PCI/MSI-HOWTO.txt index 10a93696e55a..0d920d54536d 100644 --- a/Documentation/PCI/MSI-HOWTO.txt +++ b/Documentation/PCI/MSI-HOWTO.txt | |||
@@ -576,7 +576,7 @@ Some devices are known to have faulty MSI implementations. Usually this | |||
576 | is handled in the individual device driver, but occasionally it's necessary | 576 | is handled in the individual device driver, but occasionally it's necessary |
577 | to handle this with a quirk. Some drivers have an option to disable use | 577 | to handle this with a quirk. Some drivers have an option to disable use |
578 | of MSI. While this is a convenient workaround for the driver author, | 578 | of MSI. While this is a convenient workaround for the driver author, |
579 | it is not good practise, and should not be emulated. | 579 | it is not good practice, and should not be emulated. |
580 | 580 | ||
581 | 5.4. Finding why MSIs are disabled on a device | 581 | 5.4. Finding why MSIs are disabled on a device |
582 | 582 | ||
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt index 2f0fcb2112d2..f29bcbc463e7 100644 --- a/Documentation/RCU/RTFP.txt +++ b/Documentation/RCU/RTFP.txt | |||
@@ -2451,8 +2451,8 @@ lot of {Linux} into your technology!!!" | |||
2451 | ,month="February" | 2451 | ,month="February" |
2452 | ,year="2010" | 2452 | ,year="2010" |
2453 | ,note="Available: | 2453 | ,note="Available: |
2454 | \url{http://kerneltrap.com/mailarchive/linux-netdev/2010/2/26/6270589} | 2454 | \url{http://thread.gmane.org/gmane.linux.network/153338} |
2455 | [Viewed March 20, 2011]" | 2455 | [Viewed June 9, 2014]" |
2456 | ,annotation={ | 2456 | ,annotation={ |
2457 | Use a pair of list_head structures to support RCU-protected | 2457 | Use a pair of list_head structures to support RCU-protected |
2458 | resizable hash tables. | 2458 | resizable hash tables. |
diff --git a/Documentation/RCU/rcuref.txt b/Documentation/RCU/rcuref.txt index 141d531aa14b..613033ff2b9b 100644 --- a/Documentation/RCU/rcuref.txt +++ b/Documentation/RCU/rcuref.txt | |||
@@ -1,5 +1,14 @@ | |||
1 | Reference-count design for elements of lists/arrays protected by RCU. | 1 | Reference-count design for elements of lists/arrays protected by RCU. |
2 | 2 | ||
3 | |||
4 | Please note that the percpu-ref feature is likely your first | ||
5 | stop if you need to combine reference counts and RCU. Please see | ||
6 | include/linux/percpu-refcount.h for more information. However, in | ||
7 | those unusual cases where percpu-ref would consume too much memory, | ||
8 | please read on. | ||
9 | |||
10 | ------------------------------------------------------------------------ | ||
11 | |||
3 | Reference counting on elements of lists which are protected by traditional | 12 | Reference counting on elements of lists which are protected by traditional |
4 | reader/writer spinlocks or semaphores are straightforward: | 13 | reader/writer spinlocks or semaphores are straightforward: |
5 | 14 | ||
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt index 49b8551a3b68..e48c57f1943b 100644 --- a/Documentation/RCU/whatisRCU.txt +++ b/Documentation/RCU/whatisRCU.txt | |||
@@ -818,7 +818,7 @@ RCU pointer/list update: | |||
818 | list_add_tail_rcu | 818 | list_add_tail_rcu |
819 | list_del_rcu | 819 | list_del_rcu |
820 | list_replace_rcu | 820 | list_replace_rcu |
821 | hlist_add_after_rcu | 821 | hlist_add_behind_rcu |
822 | hlist_add_before_rcu | 822 | hlist_add_before_rcu |
823 | hlist_add_head_rcu | 823 | hlist_add_head_rcu |
824 | hlist_del_rcu | 824 | hlist_del_rcu |
diff --git a/Documentation/SubmittingDrivers b/Documentation/SubmittingDrivers index 36d16bbf72c6..31d372609ac0 100644 --- a/Documentation/SubmittingDrivers +++ b/Documentation/SubmittingDrivers | |||
@@ -146,10 +146,6 @@ LWN.net: | |||
146 | Porting drivers from prior kernels to 2.6: | 146 | Porting drivers from prior kernels to 2.6: |
147 | http://lwn.net/Articles/driver-porting/ | 147 | http://lwn.net/Articles/driver-porting/ |
148 | 148 | ||
149 | KernelTrap: | ||
150 | Occasional Linux kernel articles and developer interviews | ||
151 | http://kerneltrap.org/ | ||
152 | |||
153 | KernelNewbies: | 149 | KernelNewbies: |
154 | Documentation and assistance for new kernel programmers | 150 | Documentation and assistance for new kernel programmers |
155 | http://kernelnewbies.org/ | 151 | http://kernelnewbies.org/ |
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 7e9abb8a276b..0a523c9a5ff4 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
@@ -84,18 +84,42 @@ is another popular alternative. | |||
84 | 84 | ||
85 | 2) Describe your changes. | 85 | 2) Describe your changes. |
86 | 86 | ||
87 | Describe the technical detail of the change(s) your patch includes. | 87 | Describe your problem. Whether your patch is a one-line bug fix or |
88 | 88 | 5000 lines of a new feature, there must be an underlying problem that | |
89 | Be as specific as possible. The WORST descriptions possible include | 89 | motivated you to do this work. Convince the reviewer that there is a |
90 | things like "update driver X", "bug fix for driver X", or "this patch | 90 | problem worth fixing and that it makes sense for them to read past the |
91 | includes updates for subsystem X. Please apply." | 91 | first paragraph. |
92 | |||
93 | Describe user-visible impact. Straight up crashes and lockups are | ||
94 | pretty convincing, but not all bugs are that blatant. Even if the | ||
95 | problem was spotted during code review, describe the impact you think | ||
96 | it can have on users. Keep in mind that the majority of Linux | ||
97 | installations run kernels from secondary stable trees or | ||
98 | vendor/product-specific trees that cherry-pick only specific patches | ||
99 | from upstream, so include anything that could help route your change | ||
100 | downstream: provoking circumstances, excerpts from dmesg, crash | ||
101 | descriptions, performance regressions, latency spikes, lockups, etc. | ||
102 | |||
103 | Quantify optimizations and trade-offs. If you claim improvements in | ||
104 | performance, memory consumption, stack footprint, or binary size, | ||
105 | include numbers that back them up. But also describe non-obvious | ||
106 | costs. Optimizations usually aren't free but trade-offs between CPU, | ||
107 | memory, and readability; or, when it comes to heuristics, between | ||
108 | different workloads. Describe the expected downsides of your | ||
109 | optimization so that the reviewer can weigh costs against benefits. | ||
110 | |||
111 | Once the problem is established, describe what you are actually doing | ||
112 | about it in technical detail. It's important to describe the change | ||
113 | in plain English for the reviewer to verify that the code is behaving | ||
114 | as you intend it to. | ||
92 | 115 | ||
93 | The maintainer will thank you if you write your patch description in a | 116 | The maintainer will thank you if you write your patch description in a |
94 | form which can be easily pulled into Linux's source code management | 117 | form which can be easily pulled into Linux's source code management |
95 | system, git, as a "commit log". See #15, below. | 118 | system, git, as a "commit log". See #15, below. |
96 | 119 | ||
97 | If your description starts to get long, that's a sign that you probably | 120 | Solve only one problem per patch. If your description starts to get |
98 | need to split up your patch. See #3, next. | 121 | long, that's a sign that you probably need to split up your patch. |
122 | See #3, next. | ||
99 | 123 | ||
100 | When you submit or resubmit a patch or patch series, include the | 124 | When you submit or resubmit a patch or patch series, include the |
101 | complete patch description and justification for it. Don't just | 125 | complete patch description and justification for it. Don't just |
@@ -396,13 +420,13 @@ you are responsible for last-minute changes. Example : | |||
396 | [lucky@maintainer.example.org: struct foo moved from foo.c to foo.h] | 420 | [lucky@maintainer.example.org: struct foo moved from foo.c to foo.h] |
397 | Signed-off-by: Lucky K Maintainer <lucky@maintainer.example.org> | 421 | Signed-off-by: Lucky K Maintainer <lucky@maintainer.example.org> |
398 | 422 | ||
399 | This practise is particularly helpful if you maintain a stable branch and | 423 | This practice is particularly helpful if you maintain a stable branch and |
400 | want at the same time to credit the author, track changes, merge the fix, | 424 | want at the same time to credit the author, track changes, merge the fix, |
401 | and protect the submitter from complaints. Note that under no circumstances | 425 | and protect the submitter from complaints. Note that under no circumstances |
402 | can you change the author's identity (the From header), as it is the one | 426 | can you change the author's identity (the From header), as it is the one |
403 | which appears in the changelog. | 427 | which appears in the changelog. |
404 | 428 | ||
405 | Special note to back-porters: It seems to be a common and useful practise | 429 | Special note to back-porters: It seems to be a common and useful practice |
406 | to insert an indication of the origin of a patch at the top of the commit | 430 | to insert an indication of the origin of a patch at the top of the commit |
407 | message (just after the subject line) to facilitate tracking. For instance, | 431 | message (just after the subject line) to facilitate tracking. For instance, |
408 | here's what we see in 2.6-stable : | 432 | here's what we see in 2.6-stable : |
diff --git a/Documentation/arm/CCN.txt b/Documentation/arm/CCN.txt new file mode 100644 index 000000000000..0632b3aad83e --- /dev/null +++ b/Documentation/arm/CCN.txt | |||
@@ -0,0 +1,52 @@ | |||
1 | ARM Cache Coherent Network | ||
2 | ========================== | ||
3 | |||
4 | CCN-504 is a ring-bus interconnect consisting of 11 crosspoints | ||
5 | (XPs), with each crosspoint supporting up to two device ports, | ||
6 | so nodes (devices) 0 and 1 are connected to crosspoint 0, | ||
7 | nodes 2 and 3 to crosspoint 1 etc. | ||
8 | |||
9 | PMU (perf) driver | ||
10 | ----------------- | ||
11 | |||
12 | The CCN driver registers a perf PMU driver, which provides | ||
13 | description of available events and configuration options | ||
14 | in sysfs, see /sys/bus/event_source/devices/ccn*. | ||
15 | |||
16 | The "format" directory describes format of the config, config1 | ||
17 | and config2 fields of the perf_event_attr structure. The "events" | ||
18 | directory provides configuration templates for all documented | ||
19 | events, that can be used with perf tool. For example "xp_valid_flit" | ||
20 | is an equivalent of "type=0x8,event=0x4". Other parameters must be | ||
21 | explicitly specified. For events originating from device, "node" | ||
22 | defines its index. All crosspoint events require "xp" (index), | ||
23 | "port" (device port number) and "vc" (virtual channel ID) and | ||
24 | "dir" (direction). Watchpoints (special "event" value 0xfe) also | ||
25 | require comparator values ("cmp_l" and "cmp_h") and "mask", being | ||
26 | index of the comparator mask. | ||
27 | |||
28 | Masks are defined separately from the event description | ||
29 | (due to limited number of the config values) in the "cmp_mask" | ||
30 | directory, with first 8 configurable by user and additional | ||
31 | 4 hardcoded for the most frequent use cases. | ||
32 | |||
33 | Cycle counter is described by a "type" value 0xff and does | ||
34 | not require any other settings. | ||
35 | |||
36 | Example of perf tool use: | ||
37 | |||
38 | / # perf list | grep ccn | ||
39 | ccn/cycles/ [Kernel PMU event] | ||
40 | <...> | ||
41 | ccn/xp_valid_flit/ [Kernel PMU event] | ||
42 | <...> | ||
43 | |||
44 | / # perf stat -C 0 -e ccn/cycles/,ccn/xp_valid_flit,xp=1,port=0,vc=1,dir=1/ \ | ||
45 | sleep 1 | ||
46 | |||
47 | The driver does not support sampling, therefore "perf record" will | ||
48 | not work. Also notice that only single cpu is being selected | ||
49 | ("-C 0") - this is because perf framework does not support | ||
50 | "non-CPU related" counters (yet?) so system-wide session ("-a") | ||
51 | would try (and in most cases fail) to set up the same event | ||
52 | per each CPU. | ||
diff --git a/Documentation/arm/Marvell/README b/Documentation/arm/Marvell/README index 2cce5401e323..4dc66c173e10 100644 --- a/Documentation/arm/Marvell/README +++ b/Documentation/arm/Marvell/README | |||
@@ -53,8 +53,8 @@ Kirkwood family | |||
53 | Functional Spec: http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf | 53 | Functional Spec: http://www.marvell.com/embedded-processors/kirkwood/assets/FS_88F6180_9x_6281_OpenSource.pdf |
54 | Homepage: http://www.marvell.com/embedded-processors/kirkwood/ | 54 | Homepage: http://www.marvell.com/embedded-processors/kirkwood/ |
55 | Core: Feroceon ARMv5 compatible | 55 | Core: Feroceon ARMv5 compatible |
56 | Linux kernel mach directory: arch/arm/mach-kirkwood | 56 | Linux kernel mach directory: arch/arm/mach-mvebu |
57 | Linux kernel plat directory: arch/arm/plat-orion | 57 | Linux kernel plat directory: none |
58 | 58 | ||
59 | Discovery family | 59 | Discovery family |
60 | ---------------- | 60 | ---------------- |
@@ -83,7 +83,9 @@ EBU Armada family | |||
83 | 88F6710 | 83 | 88F6710 |
84 | 88F6707 | 84 | 88F6707 |
85 | 88F6W11 | 85 | 88F6W11 |
86 | Product Brief: http://www.marvell.com/embedded-processors/armada-300/assets/Marvell_ARMADA_370_SoC.pdf | 86 | Product Brief: http://www.marvell.com/embedded-processors/armada-300/assets/Marvell_ARMADA_370_SoC.pdf |
87 | Hardware Spec: http://www.marvell.com/embedded-processors/armada-300/assets/ARMADA370-datasheet.pdf | ||
88 | Functional Spec: http://www.marvell.com/embedded-processors/armada-300/assets/ARMADA370-FunctionalSpec-datasheet.pdf | ||
87 | 89 | ||
88 | Armada 375 Flavors: | 90 | Armada 375 Flavors: |
89 | 88F6720 | 91 | 88F6720 |
@@ -100,8 +102,7 @@ EBU Armada family | |||
100 | MV78460 | 102 | MV78460 |
101 | NOTE: not to be confused with the non-SMP 78xx0 SoCs | 103 | NOTE: not to be confused with the non-SMP 78xx0 SoCs |
102 | Product Brief: http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf | 104 | Product Brief: http://www.marvell.com/embedded-processors/armada-xp/assets/Marvell-ArmadaXP-SoC-product%20brief.pdf |
103 | 105 | Functional Spec: http://www.marvell.com/embedded-processors/armada-xp/assets/ARMADA-XP-Functional-SpecDatasheet.pdf | |
104 | No public datasheet available. | ||
105 | 106 | ||
106 | Core: Sheeva ARMv7 compatible | 107 | Core: Sheeva ARMv7 compatible |
107 | 108 | ||
@@ -135,7 +136,9 @@ Dove family (application processor) | |||
135 | Functional Spec : http://www.marvell.com/application-processors/armada-500/assets/Armada-510-Functional-Spec.pdf | 136 | Functional Spec : http://www.marvell.com/application-processors/armada-500/assets/Armada-510-Functional-Spec.pdf |
136 | Homepage: http://www.marvell.com/application-processors/armada-500/ | 137 | Homepage: http://www.marvell.com/application-processors/armada-500/ |
137 | Core: ARMv7 compatible | 138 | Core: ARMv7 compatible |
138 | Directory: arch/arm/mach-dove | 139 | |
140 | Directory: arch/arm/mach-mvebu (DT enabled platforms) | ||
141 | arch/arm/mach-dove (non-DT enabled platforms) | ||
139 | 142 | ||
140 | PXA 2xx/3xx/93x/95x family | 143 | PXA 2xx/3xx/93x/95x family |
141 | -------------------------- | 144 | -------------------------- |
@@ -253,10 +256,10 @@ Berlin family (Digital Entertainment) | |||
253 | Long-term plans | 256 | Long-term plans |
254 | --------------- | 257 | --------------- |
255 | 258 | ||
256 | * Unify the mach-dove/, mach-mv78xx0/, mach-orion5x/ and | 259 | * Unify the mach-dove/, mach-mv78xx0/, mach-orion5x/ into the |
257 | mach-kirkwood/ into the mach-mvebu/ to support all SoCs from the | 260 | mach-mvebu/ to support all SoCs from the Marvell EBU (Engineering |
258 | Marvell EBU (Engineering Business Unit) in a single mach-<foo> | 261 | Business Unit) in a single mach-<foo> directory. The plat-orion/ |
259 | directory. The plat-orion/ would therefore disappear. | 262 | would therefore disappear. |
260 | 263 | ||
261 | * Unify the mach-mmp/ and mach-pxa/ into the same mach-pxa | 264 | * Unify the mach-mmp/ and mach-pxa/ into the same mach-pxa |
262 | directory. The plat-pxa/ would therefore disappear. | 265 | directory. The plat-pxa/ would therefore disappear. |
diff --git a/Documentation/arm/Samsung/Overview.txt b/Documentation/arm/Samsung/Overview.txt index 658abb258cef..8f7309bad460 100644 --- a/Documentation/arm/Samsung/Overview.txt +++ b/Documentation/arm/Samsung/Overview.txt | |||
@@ -13,8 +13,6 @@ Introduction | |||
13 | 13 | ||
14 | - S3C24XX: See Documentation/arm/Samsung-S3C24XX/Overview.txt for full list | 14 | - S3C24XX: See Documentation/arm/Samsung-S3C24XX/Overview.txt for full list |
15 | - S3C64XX: S3C6400 and S3C6410 | 15 | - S3C64XX: S3C6400 and S3C6410 |
16 | - S5P6440 | ||
17 | - S5PC100 | ||
18 | - S5PC110 / S5PV210 | 16 | - S5PC110 / S5PV210 |
19 | 17 | ||
20 | 18 | ||
@@ -34,8 +32,6 @@ Configuration | |||
34 | A number of configurations are supplied, as there is no current way of | 32 | A number of configurations are supplied, as there is no current way of |
35 | unifying all the SoCs into one kernel. | 33 | unifying all the SoCs into one kernel. |
36 | 34 | ||
37 | s5p6440_defconfig - S5P6440 specific default configuration | ||
38 | s5pc100_defconfig - S5PC100 specific default configuration | ||
39 | s5pc110_defconfig - S5PC110 specific default configuration | 35 | s5pc110_defconfig - S5PC110 specific default configuration |
40 | s5pv210_defconfig - S5PV210 specific default configuration | 36 | s5pv210_defconfig - S5PV210 specific default configuration |
41 | 37 | ||
@@ -67,13 +63,6 @@ Layout changes | |||
67 | where to simplify the include and dependency issues involved with having | 63 | where to simplify the include and dependency issues involved with having |
68 | so many different platform directories. | 64 | so many different platform directories. |
69 | 65 | ||
70 | It was decided to remove plat-s5pc1xx as some of the support was already | ||
71 | in plat-s5p or plat-samsung, with the S5PC110 support added with S5PV210 | ||
72 | the only user was the S5PC100. The S5PC100 specific items where moved to | ||
73 | arch/arm/mach-s5pc100. | ||
74 | |||
75 | |||
76 | |||
77 | 66 | ||
78 | Port Contributors | 67 | Port Contributors |
79 | ----------------- | 68 | ----------------- |
diff --git a/Documentation/arm/Samsung/clksrc-change-registers.awk b/Documentation/arm/Samsung/clksrc-change-registers.awk index 0c50220851fb..d9174fabe37e 100755 --- a/Documentation/arm/Samsung/clksrc-change-registers.awk +++ b/Documentation/arm/Samsung/clksrc-change-registers.awk | |||
@@ -68,7 +68,6 @@ BEGIN { | |||
68 | 68 | ||
69 | while (getline line < ARGV[1] > 0) { | 69 | while (getline line < ARGV[1] > 0) { |
70 | if (line ~ /\#define.*_MASK/ && | 70 | if (line ~ /\#define.*_MASK/ && |
71 | !(line ~ /S5PC100_EPLL_MASK/) && | ||
72 | !(line ~ /USB_SIG_MASK/)) { | 71 | !(line ~ /USB_SIG_MASK/)) { |
73 | splitdefine(line, fields) | 72 | splitdefine(line, fields) |
74 | name = fields[0] | 73 | name = fields[0] |
diff --git a/Documentation/arm64/booting.txt b/Documentation/arm64/booting.txt index 37fc4f632176..f3c05b5f9f08 100644 --- a/Documentation/arm64/booting.txt +++ b/Documentation/arm64/booting.txt | |||
@@ -72,27 +72,54 @@ The decompressed kernel image contains a 64-byte header as follows: | |||
72 | 72 | ||
73 | u32 code0; /* Executable code */ | 73 | u32 code0; /* Executable code */ |
74 | u32 code1; /* Executable code */ | 74 | u32 code1; /* Executable code */ |
75 | u64 text_offset; /* Image load offset */ | 75 | u64 text_offset; /* Image load offset, little endian */ |
76 | u64 res0 = 0; /* reserved */ | 76 | u64 image_size; /* Effective Image size, little endian */ |
77 | u64 res1 = 0; /* reserved */ | 77 | u64 flags; /* kernel flags, little endian */ |
78 | u64 res2 = 0; /* reserved */ | 78 | u64 res2 = 0; /* reserved */ |
79 | u64 res3 = 0; /* reserved */ | 79 | u64 res3 = 0; /* reserved */ |
80 | u64 res4 = 0; /* reserved */ | 80 | u64 res4 = 0; /* reserved */ |
81 | u32 magic = 0x644d5241; /* Magic number, little endian, "ARM\x64" */ | 81 | u32 magic = 0x644d5241; /* Magic number, little endian, "ARM\x64" */ |
82 | u32 res5 = 0; /* reserved */ | 82 | u32 res5; /* reserved (used for PE COFF offset) */ |
83 | 83 | ||
84 | 84 | ||
85 | Header notes: | 85 | Header notes: |
86 | 86 | ||
87 | - As of v3.17, all fields are little endian unless stated otherwise. | ||
88 | |||
87 | - code0/code1 are responsible for branching to stext. | 89 | - code0/code1 are responsible for branching to stext. |
90 | |||
88 | - when booting through EFI, code0/code1 are initially skipped. | 91 | - when booting through EFI, code0/code1 are initially skipped. |
89 | res5 is an offset to the PE header and the PE header has the EFI | 92 | res5 is an offset to the PE header and the PE header has the EFI |
90 | entry point (efi_stub_entry). When the stub has done its work, it | 93 | entry point (efi_stub_entry). When the stub has done its work, it |
91 | jumps to code0 to resume the normal boot process. | 94 | jumps to code0 to resume the normal boot process. |
92 | 95 | ||
93 | The image must be placed at the specified offset (currently 0x80000) | 96 | - Prior to v3.17, the endianness of text_offset was not specified. In |
94 | from the start of the system RAM and called there. The start of the | 97 | these cases image_size is zero and text_offset is 0x80000 in the |
95 | system RAM must be aligned to 2MB. | 98 | endianness of the kernel. Where image_size is non-zero image_size is |
99 | little-endian and must be respected. Where image_size is zero, | ||
100 | text_offset can be assumed to be 0x80000. | ||
101 | |||
102 | - The flags field (introduced in v3.17) is a little-endian 64-bit field | ||
103 | composed as follows: | ||
104 | Bit 0: Kernel endianness. 1 if BE, 0 if LE. | ||
105 | Bits 1-63: Reserved. | ||
106 | |||
107 | - When image_size is zero, a bootloader should attempt to keep as much | ||
108 | memory as possible free for use by the kernel immediately after the | ||
109 | end of the kernel image. The amount of space required will vary | ||
110 | depending on selected features, and is effectively unbound. | ||
111 | |||
112 | The Image must be placed text_offset bytes from a 2MB aligned base | ||
113 | address near the start of usable system RAM and called there. Memory | ||
114 | below that base address is currently unusable by Linux, and therefore it | ||
115 | is strongly recommended that this location is the start of system RAM. | ||
116 | At least image_size bytes from the start of the image must be free for | ||
117 | use by the kernel. | ||
118 | |||
119 | Any memory described to the kernel (even that below the 2MB aligned base | ||
120 | address) which is not marked as reserved from the kernel e.g. with a | ||
121 | memreserve region in the device tree) will be considered as available to | ||
122 | the kernel. | ||
96 | 123 | ||
97 | Before jumping into the kernel, the following conditions must be met: | 124 | Before jumping into the kernel, the following conditions must be met: |
98 | 125 | ||
@@ -141,6 +168,14 @@ Before jumping into the kernel, the following conditions must be met: | |||
141 | the kernel image will be entered must be initialised by software at a | 168 | the kernel image will be entered must be initialised by software at a |
142 | higher exception level to prevent execution in an UNKNOWN state. | 169 | higher exception level to prevent execution in an UNKNOWN state. |
143 | 170 | ||
171 | For systems with a GICv3 interrupt controller: | ||
172 | - If EL3 is present: | ||
173 | ICC_SRE_EL3.Enable (bit 3) must be initialiased to 0b1. | ||
174 | ICC_SRE_EL3.SRE (bit 0) must be initialised to 0b1. | ||
175 | - If the kernel is entered at EL1: | ||
176 | ICC.SRE_EL2.Enable (bit 3) must be initialised to 0b1 | ||
177 | ICC_SRE_EL2.SRE (bit 0) must be initialised to 0b1. | ||
178 | |||
144 | The requirements described above for CPU mode, caches, MMUs, architected | 179 | The requirements described above for CPU mode, caches, MMUs, architected |
145 | timers, coherency and system registers apply to all CPUs. All CPUs must | 180 | timers, coherency and system registers apply to all CPUs. All CPUs must |
146 | enter the kernel in the same exception level. | 181 | enter the kernel in the same exception level. |
diff --git a/Documentation/arm64/memory.txt b/Documentation/arm64/memory.txt index d50fa618371b..344e85cc7323 100644 --- a/Documentation/arm64/memory.txt +++ b/Documentation/arm64/memory.txt | |||
@@ -2,18 +2,18 @@ | |||
2 | ============================== | 2 | ============================== |
3 | 3 | ||
4 | Author: Catalin Marinas <catalin.marinas@arm.com> | 4 | Author: Catalin Marinas <catalin.marinas@arm.com> |
5 | Date : 20 February 2012 | ||
6 | 5 | ||
7 | This document describes the virtual memory layout used by the AArch64 | 6 | This document describes the virtual memory layout used by the AArch64 |
8 | Linux kernel. The architecture allows up to 4 levels of translation | 7 | Linux kernel. The architecture allows up to 4 levels of translation |
9 | tables with a 4KB page size and up to 3 levels with a 64KB page size. | 8 | tables with a 4KB page size and up to 3 levels with a 64KB page size. |
10 | 9 | ||
11 | AArch64 Linux uses 3 levels of translation tables with the 4KB page | 10 | AArch64 Linux uses either 3 levels or 4 levels of translation tables |
12 | configuration, allowing 39-bit (512GB) virtual addresses for both user | 11 | with the 4KB page configuration, allowing 39-bit (512GB) or 48-bit |
13 | and kernel. With 64KB pages, only 2 levels of translation tables are | 12 | (256TB) virtual addresses, respectively, for both user and kernel. With |
14 | used but the memory layout is the same. | 13 | 64KB pages, only 2 levels of translation tables, allowing 42-bit (4TB) |
14 | virtual address, are used but the memory layout is the same. | ||
15 | 15 | ||
16 | User addresses have bits 63:39 set to 0 while the kernel addresses have | 16 | User addresses have bits 63:48 set to 0 while the kernel addresses have |
17 | the same bits set to 1. TTBRx selection is given by bit 63 of the | 17 | the same bits set to 1. TTBRx selection is given by bit 63 of the |
18 | virtual address. The swapper_pg_dir contains only kernel (global) | 18 | virtual address. The swapper_pg_dir contains only kernel (global) |
19 | mappings while the user pgd contains only user (non-global) mappings. | 19 | mappings while the user pgd contains only user (non-global) mappings. |
@@ -21,58 +21,40 @@ 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 with 4KB pages: | 24 | AArch64 Linux memory layout with 4KB pages + 3 levels: |
25 | 25 | ||
26 | Start End Size Use | 26 | Start End Size Use |
27 | ----------------------------------------------------------------------- | 27 | ----------------------------------------------------------------------- |
28 | 0000000000000000 0000007fffffffff 512GB user | 28 | 0000000000000000 0000007fffffffff 512GB user |
29 | ffffff8000000000 ffffffffffffffff 512GB kernel | ||
29 | 30 | ||
30 | ffffff8000000000 ffffffbbfffeffff ~240GB vmalloc | ||
31 | 31 | ||
32 | ffffffbbffff0000 ffffffbbffffffff 64KB [guard page] | 32 | AArch64 Linux memory layout with 4KB pages + 4 levels: |
33 | 33 | ||
34 | ffffffbc00000000 ffffffbdffffffff 8GB vmemmap | 34 | Start End Size Use |
35 | 35 | ----------------------------------------------------------------------- | |
36 | ffffffbe00000000 ffffffbffbbfffff ~8GB [guard, future vmmemap] | 36 | 0000000000000000 0000ffffffffffff 256TB user |
37 | 37 | ffff000000000000 ffffffffffffffff 256TB kernel | |
38 | ffffffbffa000000 ffffffbffaffffff 16MB PCI I/O space | ||
39 | |||
40 | ffffffbffb000000 ffffffbffbbfffff 12MB [guard] | ||
41 | |||
42 | ffffffbffbc00000 ffffffbffbdfffff 2MB fixed mappings | ||
43 | |||
44 | ffffffbffbe00000 ffffffbffbffffff 2MB [guard] | ||
45 | |||
46 | ffffffbffc000000 ffffffbfffffffff 64MB modules | ||
47 | |||
48 | ffffffc000000000 ffffffffffffffff 256GB kernel logical memory map | ||
49 | 38 | ||
50 | 39 | ||
51 | AArch64 Linux memory layout with 64KB pages: | 40 | AArch64 Linux memory layout with 64KB pages + 2 levels: |
52 | 41 | ||
53 | Start End Size Use | 42 | Start End Size Use |
54 | ----------------------------------------------------------------------- | 43 | ----------------------------------------------------------------------- |
55 | 0000000000000000 000003ffffffffff 4TB user | 44 | 0000000000000000 000003ffffffffff 4TB user |
45 | fffffc0000000000 ffffffffffffffff 4TB kernel | ||
56 | 46 | ||
57 | fffffc0000000000 fffffdfbfffeffff ~2TB vmalloc | ||
58 | 47 | ||
59 | fffffdfbffff0000 fffffdfbffffffff 64KB [guard page] | 48 | AArch64 Linux memory layout with 64KB pages + 3 levels: |
60 | 49 | ||
61 | fffffdfc00000000 fffffdfdffffffff 8GB vmemmap | 50 | Start End Size Use |
62 | 51 | ----------------------------------------------------------------------- | |
63 | fffffdfe00000000 fffffdfffbbfffff ~8GB [guard, future vmmemap] | 52 | 0000000000000000 0000ffffffffffff 256TB user |
64 | 53 | ffff000000000000 ffffffffffffffff 256TB kernel | |
65 | fffffdfffa000000 fffffdfffaffffff 16MB PCI I/O space | ||
66 | |||
67 | fffffdfffb000000 fffffdfffbbfffff 12MB [guard] | ||
68 | |||
69 | fffffdfffbc00000 fffffdfffbdfffff 2MB fixed mappings | ||
70 | |||
71 | fffffdfffbe00000 fffffdfffbffffff 2MB [guard] | ||
72 | 54 | ||
73 | fffffdfffc000000 fffffdffffffffff 64MB modules | ||
74 | 55 | ||
75 | fffffe0000000000 ffffffffffffffff 2TB kernel logical memory map | 56 | For details of the virtual kernel memory layout please see the kernel |
57 | booting log. | ||
76 | 58 | ||
77 | 59 | ||
78 | Translation table lookup with 4KB pages: | 60 | Translation table lookup with 4KB pages: |
@@ -86,7 +68,7 @@ Translation table lookup with 4KB pages: | |||
86 | | | | | +-> [20:12] L3 index | 68 | | | | | +-> [20:12] L3 index |
87 | | | | +-----------> [29:21] L2 index | 69 | | | | +-----------> [29:21] L2 index |
88 | | | +---------------------> [38:30] L1 index | 70 | | | +---------------------> [38:30] L1 index |
89 | | +-------------------------------> [47:39] L0 index (not used) | 71 | | +-------------------------------> [47:39] L0 index |
90 | +-------------------------------------------------> [63] TTBR0/1 | 72 | +-------------------------------------------------> [63] TTBR0/1 |
91 | 73 | ||
92 | 74 | ||
@@ -99,10 +81,11 @@ Translation table lookup with 64KB pages: | |||
99 | | | | | v | 81 | | | | | v |
100 | | | | | [15:0] in-page offset | 82 | | | | | [15:0] in-page offset |
101 | | | | +----------> [28:16] L3 index | 83 | | | | +----------> [28:16] L3 index |
102 | | | +--------------------------> [41:29] L2 index (only 38:29 used) | 84 | | | +--------------------------> [41:29] L2 index |
103 | | +-------------------------------> [47:42] L1 index (not used) | 85 | | +-------------------------------> [47:42] L1 index |
104 | +-------------------------------------------------> [63] TTBR0/1 | 86 | +-------------------------------------------------> [63] TTBR0/1 |
105 | 87 | ||
88 | |||
106 | When using KVM, the hypervisor maps kernel pages in EL2, at a fixed | 89 | When using KVM, the hypervisor maps kernel pages in EL2, at a fixed |
107 | offset from the kernel VA (top 24bits of the kernel VA set to zero): | 90 | offset from the kernel VA (top 24bits of the kernel VA set to zero): |
108 | 91 | ||
diff --git a/Documentation/cgroups/cgroups.txt b/Documentation/cgroups/cgroups.txt index 821de56d1580..10c949b293e4 100644 --- a/Documentation/cgroups/cgroups.txt +++ b/Documentation/cgroups/cgroups.txt | |||
@@ -599,6 +599,20 @@ fork. If this method returns 0 (success) then this should remain valid | |||
599 | while the caller holds cgroup_mutex and it is ensured that either | 599 | while the caller holds cgroup_mutex and it is ensured that either |
600 | attach() or cancel_attach() will be called in future. | 600 | attach() or cancel_attach() will be called in future. |
601 | 601 | ||
602 | void css_reset(struct cgroup_subsys_state *css) | ||
603 | (cgroup_mutex held by caller) | ||
604 | |||
605 | An optional operation which should restore @css's configuration to the | ||
606 | initial state. This is currently only used on the unified hierarchy | ||
607 | when a subsystem is disabled on a cgroup through | ||
608 | "cgroup.subtree_control" but should remain enabled because other | ||
609 | subsystems depend on it. cgroup core makes such a css invisible by | ||
610 | removing the associated interface files and invokes this callback so | ||
611 | that the hidden subsystem can return to the initial neutral state. | ||
612 | This prevents unexpected resource control from a hidden css and | ||
613 | ensures that the configuration is in the initial state when it is made | ||
614 | visible again later. | ||
615 | |||
602 | void cancel_attach(struct cgroup *cgrp, struct cgroup_taskset *tset) | 616 | void cancel_attach(struct cgroup *cgrp, struct cgroup_taskset *tset) |
603 | (cgroup_mutex held by caller) | 617 | (cgroup_mutex held by caller) |
604 | 618 | ||
diff --git a/Documentation/cgroups/memcg_test.txt b/Documentation/cgroups/memcg_test.txt index 80ac454704b8..8870b0212150 100644 --- a/Documentation/cgroups/memcg_test.txt +++ b/Documentation/cgroups/memcg_test.txt | |||
@@ -24,64 +24,27 @@ Please note that implementation details can be changed. | |||
24 | 24 | ||
25 | a page/swp_entry may be charged (usage += PAGE_SIZE) at | 25 | a page/swp_entry may be charged (usage += PAGE_SIZE) at |
26 | 26 | ||
27 | mem_cgroup_charge_anon() | 27 | mem_cgroup_try_charge() |
28 | Called at new page fault and Copy-On-Write. | ||
29 | |||
30 | mem_cgroup_try_charge_swapin() | ||
31 | Called at do_swap_page() (page fault on swap entry) and swapoff. | ||
32 | Followed by charge-commit-cancel protocol. (With swap accounting) | ||
33 | At commit, a charge recorded in swap_cgroup is removed. | ||
34 | |||
35 | mem_cgroup_charge_file() | ||
36 | Called at add_to_page_cache() | ||
37 | |||
38 | mem_cgroup_cache_charge_swapin() | ||
39 | Called at shmem's swapin. | ||
40 | |||
41 | mem_cgroup_prepare_migration() | ||
42 | Called before migration. "extra" charge is done and followed by | ||
43 | charge-commit-cancel protocol. | ||
44 | At commit, charge against oldpage or newpage will be committed. | ||
45 | 28 | ||
46 | 2. Uncharge | 29 | 2. Uncharge |
47 | a page/swp_entry may be uncharged (usage -= PAGE_SIZE) by | 30 | a page/swp_entry may be uncharged (usage -= PAGE_SIZE) by |
48 | 31 | ||
49 | mem_cgroup_uncharge_page() | 32 | mem_cgroup_uncharge() |
50 | Called when an anonymous page is fully unmapped. I.e., mapcount goes | 33 | Called when a page's refcount goes down to 0. |
51 | to 0. If the page is SwapCache, uncharge is delayed until | ||
52 | mem_cgroup_uncharge_swapcache(). | ||
53 | |||
54 | mem_cgroup_uncharge_cache_page() | ||
55 | Called when a page-cache is deleted from radix-tree. If the page is | ||
56 | SwapCache, uncharge is delayed until mem_cgroup_uncharge_swapcache(). | ||
57 | |||
58 | mem_cgroup_uncharge_swapcache() | ||
59 | Called when SwapCache is removed from radix-tree. The charge itself | ||
60 | is moved to swap_cgroup. (If mem+swap controller is disabled, no | ||
61 | charge to swap occurs.) | ||
62 | 34 | ||
63 | mem_cgroup_uncharge_swap() | 35 | mem_cgroup_uncharge_swap() |
64 | Called when swp_entry's refcnt goes down to 0. A charge against swap | 36 | Called when swp_entry's refcnt goes down to 0. A charge against swap |
65 | disappears. | 37 | disappears. |
66 | 38 | ||
67 | mem_cgroup_end_migration(old, new) | ||
68 | At success of migration old is uncharged (if necessary), a charge | ||
69 | to new page is committed. At failure, charge to old page is committed. | ||
70 | |||
71 | 3. charge-commit-cancel | 39 | 3. charge-commit-cancel |
72 | In some case, we can't know this "charge" is valid or not at charging | 40 | Memcg pages are charged in two steps: |
73 | (because of races). | 41 | mem_cgroup_try_charge() |
74 | To handle such case, there are charge-commit-cancel functions. | 42 | mem_cgroup_commit_charge() or mem_cgroup_cancel_charge() |
75 | mem_cgroup_try_charge_XXX | ||
76 | mem_cgroup_commit_charge_XXX | ||
77 | mem_cgroup_cancel_charge_XXX | ||
78 | these are used in swap-in and migration. | ||
79 | 43 | ||
80 | At try_charge(), there are no flags to say "this page is charged". | 44 | At try_charge(), there are no flags to say "this page is charged". |
81 | at this point, usage += PAGE_SIZE. | 45 | at this point, usage += PAGE_SIZE. |
82 | 46 | ||
83 | At commit(), the function checks the page should be charged or not | 47 | At commit(), the page is associated with the memcg. |
84 | and set flags or avoid charging.(usage -= PAGE_SIZE) | ||
85 | 48 | ||
86 | At cancel(), simply usage -= PAGE_SIZE. | 49 | At cancel(), simply usage -= PAGE_SIZE. |
87 | 50 | ||
@@ -91,18 +54,6 @@ Under below explanation, we assume CONFIG_MEM_RES_CTRL_SWAP=y. | |||
91 | Anonymous page is newly allocated at | 54 | Anonymous page is newly allocated at |
92 | - page fault into MAP_ANONYMOUS mapping. | 55 | - page fault into MAP_ANONYMOUS mapping. |
93 | - Copy-On-Write. | 56 | - Copy-On-Write. |
94 | It is charged right after it's allocated before doing any page table | ||
95 | related operations. Of course, it's uncharged when another page is used | ||
96 | for the fault address. | ||
97 | |||
98 | At freeing anonymous page (by exit() or munmap()), zap_pte() is called | ||
99 | and pages for ptes are freed one by one.(see mm/memory.c). Uncharges | ||
100 | are done at page_remove_rmap() when page_mapcount() goes down to 0. | ||
101 | |||
102 | Another page freeing is by page-reclaim (vmscan.c) and anonymous | ||
103 | pages are swapped out. In this case, the page is marked as | ||
104 | PageSwapCache(). uncharge() routine doesn't uncharge the page marked | ||
105 | as SwapCache(). It's delayed until __delete_from_swap_cache(). | ||
106 | 57 | ||
107 | 4.1 Swap-in. | 58 | 4.1 Swap-in. |
108 | At swap-in, the page is taken from swap-cache. There are 2 cases. | 59 | At swap-in, the page is taken from swap-cache. There are 2 cases. |
@@ -111,41 +62,6 @@ Under below explanation, we assume CONFIG_MEM_RES_CTRL_SWAP=y. | |||
111 | (b) If the SwapCache has been mapped by processes, it has been | 62 | (b) If the SwapCache has been mapped by processes, it has been |
112 | charged already. | 63 | charged already. |
113 | 64 | ||
114 | This swap-in is one of the most complicated work. In do_swap_page(), | ||
115 | following events occur when pte is unchanged. | ||
116 | |||
117 | (1) the page (SwapCache) is looked up. | ||
118 | (2) lock_page() | ||
119 | (3) try_charge_swapin() | ||
120 | (4) reuse_swap_page() (may call delete_swap_cache()) | ||
121 | (5) commit_charge_swapin() | ||
122 | (6) swap_free(). | ||
123 | |||
124 | Considering following situation for example. | ||
125 | |||
126 | (A) The page has not been charged before (2) and reuse_swap_page() | ||
127 | doesn't call delete_from_swap_cache(). | ||
128 | (B) The page has not been charged before (2) and reuse_swap_page() | ||
129 | calls delete_from_swap_cache(). | ||
130 | (C) The page has been charged before (2) and reuse_swap_page() doesn't | ||
131 | call delete_from_swap_cache(). | ||
132 | (D) The page has been charged before (2) and reuse_swap_page() calls | ||
133 | delete_from_swap_cache(). | ||
134 | |||
135 | memory.usage/memsw.usage changes to this page/swp_entry will be | ||
136 | Case (A) (B) (C) (D) | ||
137 | Event | ||
138 | Before (2) 0/ 1 0/ 1 1/ 1 1/ 1 | ||
139 | =========================================== | ||
140 | (3) +1/+1 +1/+1 +1/+1 +1/+1 | ||
141 | (4) - 0/ 0 - -1/ 0 | ||
142 | (5) 0/-1 0/ 0 -1/-1 0/ 0 | ||
143 | (6) - 0/-1 - 0/-1 | ||
144 | =========================================== | ||
145 | Result 1/ 1 1/ 1 1/ 1 1/ 1 | ||
146 | |||
147 | In any cases, charges to this page should be 1/ 1. | ||
148 | |||
149 | 4.2 Swap-out. | 65 | 4.2 Swap-out. |
150 | At swap-out, typical state transition is below. | 66 | At swap-out, typical state transition is below. |
151 | 67 | ||
@@ -158,28 +74,20 @@ Under below explanation, we assume CONFIG_MEM_RES_CTRL_SWAP=y. | |||
158 | swp_entry's refcnt -= 1. | 74 | swp_entry's refcnt -= 1. |
159 | 75 | ||
160 | 76 | ||
161 | At (b), the page is marked as SwapCache and not uncharged. | ||
162 | At (d), the page is removed from SwapCache and a charge in page_cgroup | ||
163 | is moved to swap_cgroup. | ||
164 | |||
165 | Finally, at task exit, | 77 | Finally, at task exit, |
166 | (e) zap_pte() is called and swp_entry's refcnt -=1 -> 0. | 78 | (e) zap_pte() is called and swp_entry's refcnt -=1 -> 0. |
167 | Here, a charge in swap_cgroup disappears. | ||
168 | 79 | ||
169 | 5. Page Cache | 80 | 5. Page Cache |
170 | Page Cache is charged at | 81 | Page Cache is charged at |
171 | - add_to_page_cache_locked(). | 82 | - add_to_page_cache_locked(). |
172 | 83 | ||
173 | uncharged at | ||
174 | - __remove_from_page_cache(). | ||
175 | |||
176 | The logic is very clear. (About migration, see below) | 84 | The logic is very clear. (About migration, see below) |
177 | Note: __remove_from_page_cache() is called by remove_from_page_cache() | 85 | Note: __remove_from_page_cache() is called by remove_from_page_cache() |
178 | and __remove_mapping(). | 86 | and __remove_mapping(). |
179 | 87 | ||
180 | 6. Shmem(tmpfs) Page Cache | 88 | 6. Shmem(tmpfs) Page Cache |
181 | Memcg's charge/uncharge have special handlers of shmem. The best way | 89 | The best way to understand shmem's page state transition is to read |
182 | to understand shmem's page state transition is to read mm/shmem.c. | 90 | mm/shmem.c. |
183 | But brief explanation of the behavior of memcg around shmem will be | 91 | But brief explanation of the behavior of memcg around shmem will be |
184 | helpful to understand the logic. | 92 | helpful to understand the logic. |
185 | 93 | ||
@@ -192,56 +100,10 @@ Under below explanation, we assume CONFIG_MEM_RES_CTRL_SWAP=y. | |||
192 | It's charged when... | 100 | It's charged when... |
193 | - A new page is added to shmem's radix-tree. | 101 | - A new page is added to shmem's radix-tree. |
194 | - A swp page is read. (move a charge from swap_cgroup to page_cgroup) | 102 | - A swp page is read. (move a charge from swap_cgroup to page_cgroup) |
195 | It's uncharged when | ||
196 | - A page is removed from radix-tree and not SwapCache. | ||
197 | - When SwapCache is removed, a charge is moved to swap_cgroup. | ||
198 | - When swp_entry's refcnt goes down to 0, a charge in swap_cgroup | ||
199 | disappears. | ||
200 | 103 | ||
201 | 7. Page Migration | 104 | 7. Page Migration |
202 | One of the most complicated functions is page-migration-handler. | 105 | |
203 | Memcg has 2 routines. Assume that we are migrating a page's contents | 106 | mem_cgroup_migrate() |
204 | from OLDPAGE to NEWPAGE. | ||
205 | |||
206 | Usual migration logic is.. | ||
207 | (a) remove the page from LRU. | ||
208 | (b) allocate NEWPAGE (migration target) | ||
209 | (c) lock by lock_page(). | ||
210 | (d) unmap all mappings. | ||
211 | (e-1) If necessary, replace entry in radix-tree. | ||
212 | (e-2) move contents of a page. | ||
213 | (f) map all mappings again. | ||
214 | (g) pushback the page to LRU. | ||
215 | (-) OLDPAGE will be freed. | ||
216 | |||
217 | Before (g), memcg should complete all necessary charge/uncharge to | ||
218 | NEWPAGE/OLDPAGE. | ||
219 | |||
220 | The point is.... | ||
221 | - If OLDPAGE is anonymous, all charges will be dropped at (d) because | ||
222 | try_to_unmap() drops all mapcount and the page will not be | ||
223 | SwapCache. | ||
224 | |||
225 | - If OLDPAGE is SwapCache, charges will be kept at (g) because | ||
226 | __delete_from_swap_cache() isn't called at (e-1) | ||
227 | |||
228 | - If OLDPAGE is page-cache, charges will be kept at (g) because | ||
229 | remove_from_swap_cache() isn't called at (e-1) | ||
230 | |||
231 | memcg provides following hooks. | ||
232 | |||
233 | - mem_cgroup_prepare_migration(OLDPAGE) | ||
234 | Called after (b) to account a charge (usage += PAGE_SIZE) against | ||
235 | memcg which OLDPAGE belongs to. | ||
236 | |||
237 | - mem_cgroup_end_migration(OLDPAGE, NEWPAGE) | ||
238 | Called after (f) before (g). | ||
239 | If OLDPAGE is used, commit OLDPAGE again. If OLDPAGE is already | ||
240 | charged, a charge by prepare_migration() is automatically canceled. | ||
241 | If NEWPAGE is used, commit NEWPAGE and uncharge OLDPAGE. | ||
242 | |||
243 | But zap_pte() (by exit or munmap) can be called while migration, | ||
244 | we have to check if OLDPAGE/NEWPAGE is a valid page after commit(). | ||
245 | 107 | ||
246 | 8. LRU | 108 | 8. LRU |
247 | Each memcg has its own private LRU. Now, its handling is under global | 109 | Each memcg has its own private LRU. Now, its handling is under global |
diff --git a/Documentation/cgroups/unified-hierarchy.txt b/Documentation/cgroups/unified-hierarchy.txt index 324b182e6000..4f4563277864 100644 --- a/Documentation/cgroups/unified-hierarchy.txt +++ b/Documentation/cgroups/unified-hierarchy.txt | |||
@@ -94,12 +94,35 @@ change soon. | |||
94 | 94 | ||
95 | mount -t cgroup -o __DEVEL__sane_behavior cgroup $MOUNT_POINT | 95 | mount -t cgroup -o __DEVEL__sane_behavior cgroup $MOUNT_POINT |
96 | 96 | ||
97 | All controllers which are not bound to other hierarchies are | 97 | All controllers which support the unified hierarchy and are not bound |
98 | automatically bound to unified hierarchy and show up at the root of | 98 | to other hierarchies are automatically bound to unified hierarchy and |
99 | it. Controllers which are enabled only in the root of unified | 99 | show up at the root of it. Controllers which are enabled only in the |
100 | hierarchy can be bound to other hierarchies at any time. This allows | 100 | root of unified hierarchy can be bound to other hierarchies. This |
101 | mixing unified hierarchy with the traditional multiple hierarchies in | 101 | allows mixing unified hierarchy with the traditional multiple |
102 | a fully backward compatible way. | 102 | hierarchies in a fully backward compatible way. |
103 | |||
104 | For development purposes, the following boot parameter makes all | ||
105 | controllers to appear on the unified hierarchy whether supported or | ||
106 | not. | ||
107 | |||
108 | cgroup__DEVEL__legacy_files_on_dfl | ||
109 | |||
110 | A controller can be moved across hierarchies only after the controller | ||
111 | is no longer referenced in its current hierarchy. Because per-cgroup | ||
112 | controller states are destroyed asynchronously and controllers may | ||
113 | have lingering references, a controller may not show up immediately on | ||
114 | the unified hierarchy after the final umount of the previous | ||
115 | hierarchy. Similarly, a controller should be fully disabled to be | ||
116 | moved out of the unified hierarchy and it may take some time for the | ||
117 | disabled controller to become available for other hierarchies; | ||
118 | furthermore, due to dependencies among controllers, other controllers | ||
119 | may need to be disabled too. | ||
120 | |||
121 | While useful for development and manual configurations, dynamically | ||
122 | moving controllers between the unified and other hierarchies is | ||
123 | strongly discouraged for production use. It is recommended to decide | ||
124 | the hierarchies and controller associations before starting using the | ||
125 | controllers. | ||
103 | 126 | ||
104 | 127 | ||
105 | 2-2. cgroup.subtree_control | 128 | 2-2. cgroup.subtree_control |
diff --git a/Documentation/devicetree/bindings/arm/adapteva.txt b/Documentation/devicetree/bindings/arm/adapteva.txt new file mode 100644 index 000000000000..1d8af9e36065 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/adapteva.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Adapteva Platforms Device Tree Bindings | ||
2 | --------------------------------------- | ||
3 | |||
4 | Parallella board | ||
5 | |||
6 | Required root node properties: | ||
7 | - compatible = "adapteva,parallella"; | ||
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards index 3509707f9320..c554ed3d44fb 100644 --- a/Documentation/devicetree/bindings/arm/arm-boards +++ b/Documentation/devicetree/bindings/arm/arm-boards | |||
@@ -86,3 +86,9 @@ Interrupt controllers: | |||
86 | compatible = "arm,versatile-sic"; | 86 | compatible = "arm,versatile-sic"; |
87 | interrupt-controller; | 87 | interrupt-controller; |
88 | #interrupt-cells = <1>; | 88 | #interrupt-cells = <1>; |
89 | |||
90 | Required nodes: | ||
91 | |||
92 | - core-module: the root node to the Versatile platforms must have | ||
93 | a core-module with regs and the compatible strings | ||
94 | "arm,core-module-versatile", "syscon" | ||
diff --git a/Documentation/devicetree/bindings/arm/armada-380-mpcore-soc-ctrl.txt b/Documentation/devicetree/bindings/arm/armada-380-mpcore-soc-ctrl.txt new file mode 100644 index 000000000000..8781073029e9 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/armada-380-mpcore-soc-ctrl.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | Marvell Armada 38x CA9 MPcore SoC Controller | ||
2 | ============================================ | ||
3 | |||
4 | Required properties: | ||
5 | |||
6 | - compatible: Should be "marvell,armada-380-mpcore-soc-ctrl". | ||
7 | |||
8 | - reg: should be the register base and length as documented in the | ||
9 | datasheet for the CA9 MPcore SoC Control registers | ||
10 | |||
11 | mpcore-soc-ctrl@20d20 { | ||
12 | compatible = "marvell,armada-380-mpcore-soc-ctrl"; | ||
13 | reg = <0x20d20 0x6c>; | ||
14 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/atmel-pmc.txt b/Documentation/devicetree/bindings/arm/atmel-pmc.txt index 389bed5056e8..795cc78543fe 100644 --- a/Documentation/devicetree/bindings/arm/atmel-pmc.txt +++ b/Documentation/devicetree/bindings/arm/atmel-pmc.txt | |||
@@ -1,7 +1,10 @@ | |||
1 | * Power Management Controller (PMC) | 1 | * Power Management Controller (PMC) |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: Should be "atmel,at91rm9200-pmc" | 4 | - compatible: Should be "atmel,<chip>-pmc". |
5 | <chip> can be: at91rm9200, at91sam9260, at91sam9g45, at91sam9n12, | ||
6 | at91sam9x5, sama5d3 | ||
7 | |||
5 | - reg: Should contain PMC registers location and length | 8 | - reg: Should contain PMC registers location and length |
6 | 9 | ||
7 | Examples: | 10 | Examples: |
diff --git a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method new file mode 100644 index 000000000000..8240c023e202 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method | |||
@@ -0,0 +1,36 @@ | |||
1 | Broadcom Kona Family CPU Enable Method | ||
2 | -------------------------------------- | ||
3 | This binding defines the enable method used for starting secondary | ||
4 | CPUs in the following Broadcom SoCs: | ||
5 | BCM11130, BCM11140, BCM11351, BCM28145, BCM28155, BCM21664 | ||
6 | |||
7 | The enable method is specified by defining the following required | ||
8 | properties in the "cpus" device tree node: | ||
9 | - enable-method = "brcm,bcm11351-cpu-method"; | ||
10 | - secondary-boot-reg = <...>; | ||
11 | |||
12 | The secondary-boot-reg property is a u32 value that specifies the | ||
13 | physical address of the register used to request the ROM holding pen | ||
14 | code release a secondary CPU. The value written to the register is | ||
15 | formed by encoding the target CPU id into the low bits of the | ||
16 | physical start address it should jump to. | ||
17 | |||
18 | Example: | ||
19 | cpus { | ||
20 | #address-cells = <1>; | ||
21 | #size-cells = <0>; | ||
22 | enable-method = "brcm,bcm11351-cpu-method"; | ||
23 | secondary-boot-reg = <0x3500417c>; | ||
24 | |||
25 | cpu0: cpu@0 { | ||
26 | device_type = "cpu"; | ||
27 | compatible = "arm,cortex-a9"; | ||
28 | reg = <0>; | ||
29 | }; | ||
30 | |||
31 | cpu1: cpu@1 { | ||
32 | device_type = "cpu"; | ||
33 | compatible = "arm,cortex-a9"; | ||
34 | reg = <1>; | ||
35 | }; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt new file mode 100644 index 000000000000..3c436cc4f35d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt | |||
@@ -0,0 +1,95 @@ | |||
1 | ARM Broadcom STB platforms Device Tree Bindings | ||
2 | ----------------------------------------------- | ||
3 | Boards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants) | ||
4 | SoC shall have the following DT organization: | ||
5 | |||
6 | Required root node properties: | ||
7 | - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb" | ||
8 | |||
9 | example: | ||
10 | / { | ||
11 | #address-cells = <2>; | ||
12 | #size-cells = <2>; | ||
13 | model = "Broadcom STB (bcm7445)"; | ||
14 | compatible = "brcm,bcm7445", "brcm,brcmstb"; | ||
15 | |||
16 | Further, syscon nodes that map platform-specific registers used for general | ||
17 | system control is required: | ||
18 | |||
19 | - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon" | ||
20 | - compatible: "brcm,bcm<chip_id>-hif-cpubiuctrl", "syscon" | ||
21 | - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon" | ||
22 | |||
23 | example: | ||
24 | rdb { | ||
25 | #address-cells = <1>; | ||
26 | #size-cells = <1>; | ||
27 | compatible = "simple-bus"; | ||
28 | ranges = <0 0x00 0xf0000000 0x1000000>; | ||
29 | |||
30 | sun_top_ctrl: syscon@404000 { | ||
31 | compatible = "brcm,bcm7445-sun-top-ctrl", "syscon"; | ||
32 | reg = <0x404000 0x51c>; | ||
33 | }; | ||
34 | |||
35 | hif_cpubiuctrl: syscon@3e2400 { | ||
36 | compatible = "brcm,bcm7445-hif-cpubiuctrl", "syscon"; | ||
37 | reg = <0x3e2400 0x5b4>; | ||
38 | }; | ||
39 | |||
40 | hif_continuation: syscon@452000 { | ||
41 | compatible = "brcm,bcm7445-hif-continuation", "syscon"; | ||
42 | reg = <0x452000 0x100>; | ||
43 | }; | ||
44 | }; | ||
45 | |||
46 | Lastly, nodes that allow for support of SMP initialization and reboot are | ||
47 | required: | ||
48 | |||
49 | smpboot | ||
50 | ------- | ||
51 | Required properties: | ||
52 | |||
53 | - compatible | ||
54 | The string "brcm,brcmstb-smpboot". | ||
55 | |||
56 | - syscon-cpu | ||
57 | A phandle / integer array property which lets the BSP know the location | ||
58 | of certain CPU power-on registers. | ||
59 | |||
60 | The layout of the property is as follows: | ||
61 | o a phandle to the "hif_cpubiuctrl" syscon node | ||
62 | o offset to the base CPU power zone register | ||
63 | o offset to the base CPU reset register | ||
64 | |||
65 | - syscon-cont | ||
66 | A phandle pointing to the syscon node which describes the CPU boot | ||
67 | continuation registers. | ||
68 | o a phandle to the "hif_continuation" syscon node | ||
69 | |||
70 | example: | ||
71 | smpboot { | ||
72 | compatible = "brcm,brcmstb-smpboot"; | ||
73 | syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>; | ||
74 | syscon-cont = <&hif_continuation>; | ||
75 | }; | ||
76 | |||
77 | reboot | ||
78 | ------- | ||
79 | Required properties | ||
80 | |||
81 | - compatible | ||
82 | The string property "brcm,brcmstb-reboot". | ||
83 | |||
84 | - syscon | ||
85 | A phandle / integer array that points to the syscon node which describes | ||
86 | the general system reset registers. | ||
87 | o a phandle to "sun_top_ctrl" | ||
88 | o offset to the "reset source enable" register | ||
89 | o offset to the "software master reset" register | ||
90 | |||
91 | example: | ||
92 | reboot { | ||
93 | compatible = "brcm,brcmstb-reboot"; | ||
94 | syscon = <&sun_top_ctrl 0x304 0x308>; | ||
95 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/ccn.txt b/Documentation/devicetree/bindings/arm/ccn.txt new file mode 100644 index 000000000000..b100d3847d88 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/ccn.txt | |||
@@ -0,0 +1,21 @@ | |||
1 | * ARM CCN (Cache Coherent Network) | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: (standard compatible string) should be one of: | ||
6 | "arm,ccn-504" | ||
7 | "arm,ccn-508" | ||
8 | |||
9 | - reg: (standard registers property) physical address and size | ||
10 | (16MB) of the configuration registers block | ||
11 | |||
12 | - interrupts: (standard interrupt property) single interrupt | ||
13 | generated by the control block | ||
14 | |||
15 | Example: | ||
16 | |||
17 | ccn@0x2000000000 { | ||
18 | compatible = "arm,ccn-504"; | ||
19 | reg = <0x20 0x00000000 0 0x1000000>; | ||
20 | interrupts = <0 181 4>; | ||
21 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,berlin-smp b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,berlin-smp new file mode 100644 index 000000000000..cd236b727e2a --- /dev/null +++ b/Documentation/devicetree/bindings/arm/cpu-enable-method/marvell,berlin-smp | |||
@@ -0,0 +1,41 @@ | |||
1 | ======================================================== | ||
2 | Secondary CPU enable-method "marvell,berlin-smp" binding | ||
3 | ======================================================== | ||
4 | |||
5 | This document describes the "marvell,berlin-smp" method for enabling secondary | ||
6 | CPUs. To apply to all CPUs, a single "marvell,berlin-smp" enable method should | ||
7 | be defined in the "cpus" node. | ||
8 | |||
9 | Enable method name: "marvell,berlin-smp" | ||
10 | Compatible machines: "marvell,berlin2" and "marvell,berlin2q" | ||
11 | Compatible CPUs: "marvell,pj4b" and "arm,cortex-a9" | ||
12 | Related properties: (none) | ||
13 | |||
14 | Note: | ||
15 | This enable method needs valid nodes compatible with "arm,cortex-a9-scu" and | ||
16 | "marvell,berlin-cpu-ctrl"[1]. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | cpus { | ||
21 | #address-cells = <1>; | ||
22 | #size-cells = <0>; | ||
23 | enable-method = "marvell,berlin-smp"; | ||
24 | |||
25 | cpu@0 { | ||
26 | compatible = "marvell,pj4b"; | ||
27 | device_type = "cpu"; | ||
28 | next-level-cache = <&l2>; | ||
29 | reg = <0>; | ||
30 | }; | ||
31 | |||
32 | cpu@1 { | ||
33 | compatible = "marvell,pj4b"; | ||
34 | device_type = "cpu"; | ||
35 | next-level-cache = <&l2>; | ||
36 | reg = <1>; | ||
37 | }; | ||
38 | }; | ||
39 | |||
40 | -- | ||
41 | [1] arm/marvell,berlin.txt | ||
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index 1fe72a0778cd..298e2f6b33c6 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt | |||
@@ -152,7 +152,9 @@ nodes to be present and contain the properties described below. | |||
152 | "arm,cortex-a7" | 152 | "arm,cortex-a7" |
153 | "arm,cortex-a8" | 153 | "arm,cortex-a8" |
154 | "arm,cortex-a9" | 154 | "arm,cortex-a9" |
155 | "arm,cortex-a12" | ||
155 | "arm,cortex-a15" | 156 | "arm,cortex-a15" |
157 | "arm,cortex-a17" | ||
156 | "arm,cortex-a53" | 158 | "arm,cortex-a53" |
157 | "arm,cortex-a57" | 159 | "arm,cortex-a57" |
158 | "arm,cortex-m0" | 160 | "arm,cortex-m0" |
@@ -163,6 +165,7 @@ nodes to be present and contain the properties described below. | |||
163 | "arm,cortex-r4" | 165 | "arm,cortex-r4" |
164 | "arm,cortex-r5" | 166 | "arm,cortex-r5" |
165 | "arm,cortex-r7" | 167 | "arm,cortex-r7" |
168 | "brcm,brahma-b15" | ||
166 | "faraday,fa526" | 169 | "faraday,fa526" |
167 | "intel,sa110" | 170 | "intel,sa110" |
168 | "intel,sa1100" | 171 | "intel,sa1100" |
@@ -184,6 +187,7 @@ nodes to be present and contain the properties described below. | |||
184 | can be one of: | 187 | can be one of: |
185 | "allwinner,sun6i-a31" | 188 | "allwinner,sun6i-a31" |
186 | "arm,psci" | 189 | "arm,psci" |
190 | "brcm,brahma-b15" | ||
187 | "marvell,armada-375-smp" | 191 | "marvell,armada-375-smp" |
188 | "marvell,armada-380-smp" | 192 | "marvell,armada-380-smp" |
189 | "marvell,armada-xp-smp" | 193 | "marvell,armada-xp-smp" |
diff --git a/Documentation/devicetree/bindings/arm/gic-v3.txt b/Documentation/devicetree/bindings/arm/gic-v3.txt new file mode 100644 index 000000000000..33cd05e6c125 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/gic-v3.txt | |||
@@ -0,0 +1,79 @@ | |||
1 | * ARM Generic Interrupt Controller, version 3 | ||
2 | |||
3 | AArch64 SMP cores are often associated with a GICv3, providing Private | ||
4 | Peripheral Interrupts (PPI), Shared Peripheral Interrupts (SPI), | ||
5 | Software Generated Interrupts (SGI), and Locality-specific Peripheral | ||
6 | Interrupts (LPI). | ||
7 | |||
8 | Main node required properties: | ||
9 | |||
10 | - compatible : should at least contain "arm,gic-v3". | ||
11 | - interrupt-controller : Identifies the node as an interrupt controller | ||
12 | - #interrupt-cells : Specifies the number of cells needed to encode an | ||
13 | interrupt source. Must be a single cell with a value of at least 3. | ||
14 | |||
15 | The 1st cell is the interrupt type; 0 for SPI interrupts, 1 for PPI | ||
16 | interrupts. Other values are reserved for future use. | ||
17 | |||
18 | The 2nd cell contains the interrupt number for the interrupt type. | ||
19 | SPI interrupts are in the range [0-987]. PPI interrupts are in the | ||
20 | range [0-15]. | ||
21 | |||
22 | The 3rd cell is the flags, encoded as follows: | ||
23 | bits[3:0] trigger type and level flags. | ||
24 | 1 = edge triggered | ||
25 | 4 = level triggered | ||
26 | |||
27 | Cells 4 and beyond are reserved for future use. When the 1st cell | ||
28 | has a value of 0 or 1, cells 4 and beyond act as padding, and may be | ||
29 | ignored. It is recommended that padding cells have a value of 0. | ||
30 | |||
31 | - reg : Specifies base physical address(s) and size of the GIC | ||
32 | registers, in the following order: | ||
33 | - GIC Distributor interface (GICD) | ||
34 | - GIC Redistributors (GICR), one range per redistributor region | ||
35 | - GIC CPU interface (GICC) | ||
36 | - GIC Hypervisor interface (GICH) | ||
37 | - GIC Virtual CPU interface (GICV) | ||
38 | |||
39 | GICC, GICH and GICV are optional. | ||
40 | |||
41 | - interrupts : Interrupt source of the VGIC maintenance interrupt. | ||
42 | |||
43 | Optional | ||
44 | |||
45 | - redistributor-stride : If using padding pages, specifies the stride | ||
46 | of consecutive redistributors. Must be a multiple of 64kB. | ||
47 | |||
48 | - #redistributor-regions: The number of independent contiguous regions | ||
49 | occupied by the redistributors. Required if more than one such | ||
50 | region is present. | ||
51 | |||
52 | Examples: | ||
53 | |||
54 | gic: interrupt-controller@2cf00000 { | ||
55 | compatible = "arm,gic-v3"; | ||
56 | #interrupt-cells = <3>; | ||
57 | interrupt-controller; | ||
58 | reg = <0x0 0x2f000000 0 0x10000>, // GICD | ||
59 | <0x0 0x2f100000 0 0x200000>, // GICR | ||
60 | <0x0 0x2c000000 0 0x2000>, // GICC | ||
61 | <0x0 0x2c010000 0 0x2000>, // GICH | ||
62 | <0x0 0x2c020000 0 0x2000>; // GICV | ||
63 | interrupts = <1 9 4>; | ||
64 | }; | ||
65 | |||
66 | gic: interrupt-controller@2c010000 { | ||
67 | compatible = "arm,gic-v3"; | ||
68 | #interrupt-cells = <3>; | ||
69 | interrupt-controller; | ||
70 | redistributor-stride = <0x0 0x40000>; // 256kB stride | ||
71 | #redistributor-regions = <2>; | ||
72 | reg = <0x0 0x2c010000 0 0x10000>, // GICD | ||
73 | <0x0 0x2d000000 0 0x800000>, // GICR 1: CPUs 0-31 | ||
74 | <0x0 0x2e000000 0 0x800000>; // GICR 2: CPUs 32-63 | ||
75 | <0x0 0x2c040000 0 0x2000>, // GICC | ||
76 | <0x0 0x2c060000 0 0x2000>, // GICH | ||
77 | <0x0 0x2c080000 0 0x2000>; // GICV | ||
78 | interrupts = <1 9 4>; | ||
79 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index 5573c08d3180..c7d2fa156678 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
@@ -16,6 +16,7 @@ Main node required properties: | |||
16 | "arm,cortex-a9-gic" | 16 | "arm,cortex-a9-gic" |
17 | "arm,cortex-a7-gic" | 17 | "arm,cortex-a7-gic" |
18 | "arm,arm11mp-gic" | 18 | "arm,arm11mp-gic" |
19 | "brcm,brahma-b15-gic" | ||
19 | - interrupt-controller : Identifies the node as an interrupt controller | 20 | - interrupt-controller : Identifies the node as an interrupt controller |
20 | - #interrupt-cells : Specifies the number of cells needed to encode an | 21 | - #interrupt-cells : Specifies the number of cells needed to encode an |
21 | interrupt source. The type shall be a <u32> and the value shall be 3. | 22 | interrupt source. The type shall be a <u32> and the value shall be 3. |
diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt index df0a452b8526..934f00025cc4 100644 --- a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt +++ b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt | |||
@@ -31,6 +31,17 @@ Example: | |||
31 | reboot-offset = <0x4>; | 31 | reboot-offset = <0x4>; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | ----------------------------------------------------------------------- | ||
35 | Hisilicon CPU controller | ||
36 | |||
37 | Required properties: | ||
38 | - compatible : "hisilicon,cpuctrl" | ||
39 | - reg : Register address and size | ||
40 | |||
41 | The clock registers and power registers of secondary cores are defined | ||
42 | in CPU controller, especially in HIX5HD2 SoC. | ||
43 | |||
44 | ----------------------------------------------------------------------- | ||
34 | PCTRL: Peripheral misc control register | 45 | PCTRL: Peripheral misc control register |
35 | 46 | ||
36 | Required Properties: | 47 | Required Properties: |
diff --git a/Documentation/devicetree/bindings/arm/marvell,berlin.txt b/Documentation/devicetree/bindings/arm/marvell,berlin.txt index 94013a9a8769..904de5781f44 100644 --- a/Documentation/devicetree/bindings/arm/marvell,berlin.txt +++ b/Documentation/devicetree/bindings/arm/marvell,berlin.txt | |||
@@ -24,6 +24,22 @@ SoC and board used. Currently known SoC compatibles are: | |||
24 | ... | 24 | ... |
25 | } | 25 | } |
26 | 26 | ||
27 | * Marvell Berlin CPU control bindings | ||
28 | |||
29 | CPU control register allows various operations on CPUs, like resetting them | ||
30 | independently. | ||
31 | |||
32 | Required properties: | ||
33 | - compatible: should be "marvell,berlin-cpu-ctrl" | ||
34 | - reg: address and length of the register set | ||
35 | |||
36 | Example: | ||
37 | |||
38 | cpu-ctrl@f7dd0000 { | ||
39 | compatible = "marvell,berlin-cpu-ctrl"; | ||
40 | reg = <0xf7dd0000 0x10000>; | ||
41 | }; | ||
42 | |||
27 | * Marvell Berlin2 chip control binding | 43 | * Marvell Berlin2 chip control binding |
28 | 44 | ||
29 | Marvell Berlin SoCs have a chip control register set providing several | 45 | Marvell Berlin SoCs have a chip control register set providing several |
diff --git a/Documentation/devicetree/bindings/arm/mediatek.txt b/Documentation/devicetree/bindings/arm/mediatek.txt new file mode 100644 index 000000000000..d6ac71f37314 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/mediatek.txt | |||
@@ -0,0 +1,8 @@ | |||
1 | Mediatek MT6589 Platforms Device Tree Bindings | ||
2 | |||
3 | Boards with a SoC of the Mediatek MT6589 shall have the following property: | ||
4 | |||
5 | Required root node property: | ||
6 | |||
7 | compatible: must contain "mediatek,mt6589" | ||
8 | |||
diff --git a/Documentation/devicetree/bindings/arm/omap/crossbar.txt b/Documentation/devicetree/bindings/arm/omap/crossbar.txt index fb88585cfb93..4139db353d0a 100644 --- a/Documentation/devicetree/bindings/arm/omap/crossbar.txt +++ b/Documentation/devicetree/bindings/arm/omap/crossbar.txt | |||
@@ -10,6 +10,7 @@ Required properties: | |||
10 | - compatible : Should be "ti,irq-crossbar" | 10 | - compatible : Should be "ti,irq-crossbar" |
11 | - reg: Base address and the size of the crossbar registers. | 11 | - reg: Base address and the size of the crossbar registers. |
12 | - ti,max-irqs: Total number of irqs available at the interrupt controller. | 12 | - ti,max-irqs: Total number of irqs available at the interrupt controller. |
13 | - ti,max-crossbar-sources: Maximum number of crossbar sources that can be routed. | ||
13 | - ti,reg-size: Size of a individual register in bytes. Every individual | 14 | - ti,reg-size: Size of a individual register in bytes. Every individual |
14 | register is assumed to be of same size. Valid sizes are 1, 2, 4. | 15 | register is assumed to be of same size. Valid sizes are 1, 2, 4. |
15 | - ti,irqs-reserved: List of the reserved irq lines that are not muxed using | 16 | - ti,irqs-reserved: List of the reserved irq lines that are not muxed using |
@@ -17,11 +18,46 @@ Required properties: | |||
17 | so crossbar bar driver should not consider them as free | 18 | so crossbar bar driver should not consider them as free |
18 | lines. | 19 | lines. |
19 | 20 | ||
21 | Optional properties: | ||
22 | - ti,irqs-skip: This is similar to "ti,irqs-reserved", but these are for | ||
23 | SOC-specific hard-wiring of those irqs which unexpectedly bypasses the | ||
24 | crossbar. These irqs have a crossbar register, but still cannot be used. | ||
25 | |||
26 | - ti,irqs-safe-map: integer which maps to a safe configuration to use | ||
27 | when the interrupt controller irq is unused (when not provided, default is 0) | ||
28 | |||
20 | Examples: | 29 | Examples: |
21 | crossbar_mpu: @4a020000 { | 30 | crossbar_mpu: @4a020000 { |
22 | compatible = "ti,irq-crossbar"; | 31 | compatible = "ti,irq-crossbar"; |
23 | reg = <0x4a002a48 0x130>; | 32 | reg = <0x4a002a48 0x130>; |
24 | ti,max-irqs = <160>; | 33 | ti,max-irqs = <160>; |
34 | ti,max-crossbar-sources = <400>; | ||
25 | ti,reg-size = <2>; | 35 | ti,reg-size = <2>; |
26 | ti,irqs-reserved = <0 1 2 3 5 6 131 132 139 140>; | 36 | ti,irqs-reserved = <0 1 2 3 5 6 131 132 139 140>; |
37 | ti,irqs-skip = <10 133 139 140>; | ||
27 | }; | 38 | }; |
39 | |||
40 | Consumer: | ||
41 | ======== | ||
42 | See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt and | ||
43 | Documentation/devicetree/bindings/arm/gic.txt for further details. | ||
44 | |||
45 | An interrupt consumer on an SoC using crossbar will use: | ||
46 | interrupts = <GIC_SPI request_number interrupt_level> | ||
47 | When the request number is between 0 to that described by | ||
48 | "ti,max-crossbar-sources", it is assumed to be a crossbar mapping. If the | ||
49 | request_number is greater than "ti,max-crossbar-sources", then it is mapped as a | ||
50 | quirky hardware mapping direct to GIC. | ||
51 | |||
52 | Example: | ||
53 | device_x@0x4a023000 { | ||
54 | /* Crossbar 8 used */ | ||
55 | interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; | ||
56 | ... | ||
57 | }; | ||
58 | |||
59 | device_y@0x4a033000 { | ||
60 | /* Direct mapped GIC SPI 1 used */ | ||
61 | interrupts = <GIC_SPI DIRECT_IRQ(1) IRQ_TYPE_LEVEL_HIGH>; | ||
62 | ... | ||
63 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt index d22b216f5d23..0edc90305dfe 100644 --- a/Documentation/devicetree/bindings/arm/omap/omap.txt +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt | |||
@@ -129,6 +129,9 @@ Boards: | |||
129 | - AM437x GP EVM | 129 | - AM437x GP EVM |
130 | compatible = "ti,am437x-gp-evm", "ti,am4372", "ti,am43" | 130 | compatible = "ti,am437x-gp-evm", "ti,am4372", "ti,am43" |
131 | 131 | ||
132 | - AM437x SK EVM: AM437x StarterKit Evaluation Module | ||
133 | compatible = "ti,am437x-sk-evm", "ti,am4372", "ti,am43" | ||
134 | |||
132 | - DRA742 EVM: Software Development Board for DRA742 | 135 | - DRA742 EVM: Software Development Board for DRA742 |
133 | compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7" | 136 | compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7" |
134 | 137 | ||
diff --git a/Documentation/devicetree/bindings/arm/omap/prcm.txt b/Documentation/devicetree/bindings/arm/omap/prcm.txt new file mode 100644 index 000000000000..79074dac684a --- /dev/null +++ b/Documentation/devicetree/bindings/arm/omap/prcm.txt | |||
@@ -0,0 +1,65 @@ | |||
1 | OMAP PRCM bindings | ||
2 | |||
3 | Power Reset and Clock Manager lists the device clocks and clockdomains under | ||
4 | a DT hierarchy. Each TI SoC can have multiple PRCM entities listed for it, | ||
5 | each describing one module and the clock hierarchy under it. see [1] for | ||
6 | documentation about the individual clock/clockdomain nodes. | ||
7 | |||
8 | [1] Documentation/devicetree/bindings/clock/ti/* | ||
9 | |||
10 | Required properties: | ||
11 | - compatible: Must be one of: | ||
12 | "ti,am3-prcm" | ||
13 | "ti,am3-scrm" | ||
14 | "ti,am4-prcm" | ||
15 | "ti,am4-scrm" | ||
16 | "ti,omap2-prcm" | ||
17 | "ti,omap2-scrm" | ||
18 | "ti,omap3-prm" | ||
19 | "ti,omap3-cm" | ||
20 | "ti,omap3-scrm" | ||
21 | "ti,omap4-cm1" | ||
22 | "ti,omap4-prm" | ||
23 | "ti,omap4-cm2" | ||
24 | "ti,omap4-scrm" | ||
25 | "ti,omap5-prm" | ||
26 | "ti,omap5-cm-core-aon" | ||
27 | "ti,omap5-scrm" | ||
28 | "ti,omap5-cm-core" | ||
29 | "ti,dra7-prm" | ||
30 | "ti,dra7-cm-core-aon" | ||
31 | "ti,dra7-cm-core" | ||
32 | - reg: Contains PRCM module register address range | ||
33 | (base address and length) | ||
34 | - clocks: clocks for this module | ||
35 | - clockdomains: clockdomains for this module | ||
36 | |||
37 | Example: | ||
38 | |||
39 | cm: cm@48004000 { | ||
40 | compatible = "ti,omap3-cm"; | ||
41 | reg = <0x48004000 0x4000>; | ||
42 | |||
43 | cm_clocks: clocks { | ||
44 | #address-cells = <1>; | ||
45 | #size-cells = <0>; | ||
46 | }; | ||
47 | |||
48 | cm_clockdomains: clockdomains { | ||
49 | }; | ||
50 | } | ||
51 | |||
52 | &cm_clocks { | ||
53 | omap2_32k_fck: omap_32k_fck { | ||
54 | #clock-cells = <0>; | ||
55 | compatible = "fixed-clock"; | ||
56 | clock-frequency = <32768>; | ||
57 | }; | ||
58 | }; | ||
59 | |||
60 | &cm_clockdomains { | ||
61 | core_l3_clkdm: core_l3_clkdm { | ||
62 | compatible = "ti,clockdomain"; | ||
63 | clocks = <&sdrc_ick>; | ||
64 | }; | ||
65 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt index 832fe8cc24d7..adc61b095bd1 100644 --- a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt +++ b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt | |||
@@ -14,14 +14,21 @@ Required properties: | |||
14 | for exynos4412/5250 controllers. | 14 | for exynos4412/5250 controllers. |
15 | Must be "samsung,exynos-adc-v2" for | 15 | Must be "samsung,exynos-adc-v2" for |
16 | future controllers. | 16 | future controllers. |
17 | Must be "samsung,exynos3250-adc" for | ||
18 | controllers compatible with ADC of Exynos3250. | ||
17 | - reg: Contains ADC register address range (base address and | 19 | - reg: Contains ADC register address range (base address and |
18 | length) and the address of the phy enable register. | 20 | length) and the address of the phy enable register. |
19 | - interrupts: Contains the interrupt information for the timer. The | 21 | - interrupts: Contains the interrupt information for the timer. The |
20 | format is being dependent on which interrupt controller | 22 | format is being dependent on which interrupt controller |
21 | the Samsung device uses. | 23 | the Samsung device uses. |
22 | - #io-channel-cells = <1>; As ADC has multiple outputs | 24 | - #io-channel-cells = <1>; As ADC has multiple outputs |
23 | - clocks From common clock binding: handle to adc clock. | 25 | - clocks From common clock bindings: handles to clocks specified |
24 | - clock-names From common clock binding: Shall be "adc". | 26 | in "clock-names" property, in the same order. |
27 | - clock-names From common clock bindings: list of clock input names | ||
28 | used by ADC block: | ||
29 | - "adc" : ADC bus clock | ||
30 | - "sclk" : ADC special clock (only for Exynos3250 and | ||
31 | compatible ADC block) | ||
25 | - vdd-supply VDD input supply. | 32 | - vdd-supply VDD input supply. |
26 | 33 | ||
27 | Note: child nodes can be added for auto probing from device tree. | 34 | Note: child nodes can be added for auto probing from device tree. |
@@ -41,6 +48,20 @@ adc: adc@12D10000 { | |||
41 | vdd-supply = <&buck5_reg>; | 48 | vdd-supply = <&buck5_reg>; |
42 | }; | 49 | }; |
43 | 50 | ||
51 | Example: adding device info in dtsi file for Exynos3250 with additional sclk | ||
52 | |||
53 | adc: adc@126C0000 { | ||
54 | compatible = "samsung,exynos3250-adc", "samsung,exynos-adc-v2; | ||
55 | reg = <0x126C0000 0x100>, <0x10020718 0x4>; | ||
56 | interrupts = <0 137 0>; | ||
57 | #io-channel-cells = <1>; | ||
58 | io-channel-ranges; | ||
59 | |||
60 | clocks = <&cmu CLK_TSADC>, <&cmu CLK_SCLK_TSADC>; | ||
61 | clock-names = "adc", "sclk"; | ||
62 | |||
63 | vdd-supply = <&buck5_reg>; | ||
64 | }; | ||
44 | 65 | ||
45 | Example: Adding child nodes in dts file | 66 | Example: Adding child nodes in dts file |
46 | 67 | ||
diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt b/Documentation/devicetree/bindings/arm/samsung/pmu.txt index 2a4ab046a8a1..1e1979b229ff 100644 --- a/Documentation/devicetree/bindings/arm/samsung/pmu.txt +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.txt | |||
@@ -7,13 +7,45 @@ Properties: | |||
7 | - "samsung,exynos4212-pmu" - for Exynos4212 SoC, | 7 | - "samsung,exynos4212-pmu" - for Exynos4212 SoC, |
8 | - "samsung,exynos4412-pmu" - for Exynos4412 SoC, | 8 | - "samsung,exynos4412-pmu" - for Exynos4412 SoC, |
9 | - "samsung,exynos5250-pmu" - for Exynos5250 SoC, | 9 | - "samsung,exynos5250-pmu" - for Exynos5250 SoC, |
10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. | ||
11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, | ||
10 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. | 12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. |
11 | second value must be always "syscon". | 13 | second value must be always "syscon". |
12 | 14 | ||
13 | - reg : offset and length of the register set. | 15 | - reg : offset and length of the register set. |
14 | 16 | ||
17 | - #clock-cells : must be <1>, since PMU requires once cell as clock specifier. | ||
18 | The single specifier cell is used as index to list of clocks | ||
19 | provided by PMU, which is currently: | ||
20 | 0 : SoC clock output (CLKOUT pin) | ||
21 | |||
22 | - clock-names : list of clock names for particular CLKOUT mux inputs in | ||
23 | following format: | ||
24 | "clkoutN", where N is a decimal number corresponding to | ||
25 | CLKOUT mux control bits value for given input, e.g. | ||
26 | "clkout0", "clkout7", "clkout15". | ||
27 | |||
28 | - clocks : list of phandles and specifiers to all input clocks listed in | ||
29 | clock-names property. | ||
30 | |||
15 | Example : | 31 | Example : |
16 | pmu_system_controller: system-controller@10040000 { | 32 | pmu_system_controller: system-controller@10040000 { |
17 | compatible = "samsung,exynos5250-pmu", "syscon"; | 33 | compatible = "samsung,exynos5250-pmu", "syscon"; |
18 | reg = <0x10040000 0x5000>; | 34 | reg = <0x10040000 0x5000>; |
35 | #clock-cells = <1>; | ||
36 | clock-names = "clkout0", "clkout1", "clkout2", "clkout3", | ||
37 | "clkout4", "clkout8", "clkout9"; | ||
38 | clocks = <&clock CLK_OUT_DMC>, <&clock CLK_OUT_TOP>, | ||
39 | <&clock CLK_OUT_LEFTBUS>, <&clock CLK_OUT_RIGHTBUS>, | ||
40 | <&clock CLK_OUT_CPU>, <&clock CLK_XXTI>, | ||
41 | <&clock CLK_XUSBXTI>; | ||
42 | }; | ||
43 | |||
44 | Example of clock consumer : | ||
45 | |||
46 | usb3503: usb3503@08 { | ||
47 | /* ... */ | ||
48 | clock-names = "refclk"; | ||
49 | clocks = <&pmu_system_controller 0>; | ||
50 | /* ... */ | ||
19 | }; | 51 | }; |
diff --git a/Documentation/devicetree/bindings/arm/spear-misc.txt b/Documentation/devicetree/bindings/arm/spear-misc.txt new file mode 100644 index 000000000000..cf649827ffcd --- /dev/null +++ b/Documentation/devicetree/bindings/arm/spear-misc.txt | |||
@@ -0,0 +1,9 @@ | |||
1 | SPEAr Misc configuration | ||
2 | =========================== | ||
3 | SPEAr SOCs have some miscellaneous registers which are used to configure | ||
4 | few properties of different peripheral controllers. | ||
5 | |||
6 | misc node required properties: | ||
7 | |||
8 | - compatible Should be "st,spear1340-misc", "syscon". | ||
9 | - reg: Address range of misc space upto 8K | ||
diff --git a/Documentation/devicetree/bindings/arm/tegra.txt b/Documentation/devicetree/bindings/arm/tegra.txt index 558ed4b4ef39..73278c6d2dc3 100644 --- a/Documentation/devicetree/bindings/arm/tegra.txt +++ b/Documentation/devicetree/bindings/arm/tegra.txt | |||
@@ -30,6 +30,8 @@ board-specific compatible values: | |||
30 | nvidia,seaboard | 30 | nvidia,seaboard |
31 | nvidia,ventana | 31 | nvidia,ventana |
32 | nvidia,whistler | 32 | nvidia,whistler |
33 | toradex,apalis_t30 | ||
34 | toradex,apalis_t30-eval | ||
33 | toradex,colibri_t20-512 | 35 | toradex,colibri_t20-512 |
34 | toradex,iris | 36 | toradex,iris |
35 | 37 | ||
diff --git a/Documentation/devicetree/bindings/arm/xilinx.txt b/Documentation/devicetree/bindings/arm/xilinx.txt index 6f1ed830b4f7..1f7995357888 100644 --- a/Documentation/devicetree/bindings/arm/xilinx.txt +++ b/Documentation/devicetree/bindings/arm/xilinx.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Xilinx Zynq EP107 Emulation Platform board | 1 | Xilinx Zynq Platforms Device Tree Bindings |
2 | 2 | ||
3 | This board is an emulation platform for the Zynq product which is | 3 | Boards with Zynq-7000 SOC based on an ARM Cortex A9 processor |
4 | based on an ARM Cortex A9 processor. | 4 | shall have the following properties. |
5 | 5 | ||
6 | Required root node properties: | 6 | Required root node properties: |
7 | - compatible = "xlnx,zynq-ep107"; | 7 | - compatible = "xlnx,zynq-7000"; |
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt index c96d8dcf98fd..4ab09f2202d4 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt | |||
@@ -3,28 +3,43 @@ | |||
3 | SATA nodes are defined to describe on-chip Serial ATA controllers. | 3 | 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 | It is possible, but not required, to represent each port as a sub-node. | ||
7 | It allows to enable each port independently when dealing with multiple | ||
8 | PHYs. | ||
9 | |||
6 | Required properties: | 10 | Required properties: |
7 | - compatible : compatible string, one of: | 11 | - compatible : compatible string, one of: |
8 | - "allwinner,sun4i-a10-ahci" | 12 | - "allwinner,sun4i-a10-ahci" |
9 | - "fsl,imx53-ahci" | ||
10 | - "fsl,imx6q-ahci" | ||
11 | - "hisilicon,hisi-ahci" | 13 | - "hisilicon,hisi-ahci" |
12 | - "ibm,476gtr-ahci" | 14 | - "ibm,476gtr-ahci" |
13 | - "marvell,armada-380-ahci" | 15 | - "marvell,armada-380-ahci" |
14 | - "snps,dwc-ahci" | 16 | - "snps,dwc-ahci" |
15 | - "snps,exynos5440-ahci" | 17 | - "snps,exynos5440-ahci" |
16 | - "snps,spear-ahci" | 18 | - "snps,spear-ahci" |
19 | - "generic-ahci" | ||
17 | - interrupts : <interrupt mapping for SATA IRQ> | 20 | - interrupts : <interrupt mapping for SATA IRQ> |
18 | - reg : <registers mapping> | 21 | - reg : <registers mapping> |
19 | 22 | ||
23 | Please note that when using "generic-ahci" you must also specify a SoC specific | ||
24 | compatible: | ||
25 | compatible = "manufacturer,soc-model-ahci", "generic-ahci"; | ||
26 | |||
20 | Optional properties: | 27 | Optional properties: |
21 | - dma-coherent : Present if dma operations are coherent | 28 | - dma-coherent : Present if dma operations are coherent |
22 | - clocks : a list of phandle + clock specifier pairs | 29 | - clocks : a list of phandle + clock specifier pairs |
23 | - target-supply : regulator for SATA target power | 30 | - target-supply : regulator for SATA target power |
31 | - phys : reference to the SATA PHY node | ||
32 | - phy-names : must be "sata-phy" | ||
33 | |||
34 | Required properties when using sub-nodes: | ||
35 | - #address-cells : number of cells to encode an address | ||
36 | - #size-cells : number of cells representing the size of an address | ||
37 | |||
38 | |||
39 | Sub-nodes required properties: | ||
40 | - reg : the port number | ||
41 | - phys : reference to the SATA PHY node | ||
24 | 42 | ||
25 | "fsl,imx53-ahci", "fsl,imx6q-ahci" required properties: | ||
26 | - clocks : must contain the sata, sata_ref and ahb clocks | ||
27 | - clock-names : must contain "ahb" for the ahb clock | ||
28 | 43 | ||
29 | Examples: | 44 | Examples: |
30 | sata@ffe08000 { | 45 | sata@ffe08000 { |
@@ -40,3 +55,23 @@ Examples: | |||
40 | clocks = <&pll6 0>, <&ahb_gates 25>; | 55 | clocks = <&pll6 0>, <&ahb_gates 25>; |
41 | target-supply = <®_ahci_5v>; | 56 | target-supply = <®_ahci_5v>; |
42 | }; | 57 | }; |
58 | |||
59 | With sub-nodes: | ||
60 | sata@f7e90000 { | ||
61 | compatible = "marvell,berlin2q-achi", "generic-ahci"; | ||
62 | reg = <0xe90000 0x1000>; | ||
63 | interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; | ||
64 | clocks = <&chip CLKID_SATA>; | ||
65 | #address-cells = <1>; | ||
66 | #size-cells = <0>; | ||
67 | |||
68 | sata0: sata-port@0 { | ||
69 | reg = <0>; | ||
70 | phys = <&sata_phy 0>; | ||
71 | }; | ||
72 | |||
73 | sata1: sata-port@1 { | ||
74 | reg = <1>; | ||
75 | phys = <&sata_phy 1>; | ||
76 | }; | ||
77 | }; | ||
diff --git a/Documentation/devicetree/bindings/ata/ahci-st.txt b/Documentation/devicetree/bindings/ata/ahci-st.txt new file mode 100644 index 000000000000..0574a77a0b9f --- /dev/null +++ b/Documentation/devicetree/bindings/ata/ahci-st.txt | |||
@@ -0,0 +1,31 @@ | |||
1 | STMicroelectronics STi SATA controller | ||
2 | |||
3 | This binding describes a SATA device. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible : Must be "st,sti-ahci" | ||
7 | - reg : Physical base addresses and length of register sets | ||
8 | - interrupts : Interrupt associated with the SATA device | ||
9 | - interrupt-names : Associated name must be; "hostc" | ||
10 | - resets : The power-down and soft-reset lines of SATA IP | ||
11 | - reset-names : Associated names must be; "pwr-dwn" and "sw-rst" | ||
12 | - clocks : The phandle for the clock | ||
13 | - clock-names : Associated name must be; "ahci_clk" | ||
14 | - phys : The phandle for the PHY device | ||
15 | - phy-names : Associated name must be; "ahci_phy" | ||
16 | |||
17 | Example: | ||
18 | |||
19 | sata0: sata@fe380000 { | ||
20 | compatible = "st,sti-ahci"; | ||
21 | reg = <0xfe380000 0x1000>; | ||
22 | interrupts = <GIC_SPI 157 IRQ_TYPE_NONE>; | ||
23 | interrupt-names = "hostc"; | ||
24 | phys = <&miphy365x_phy MIPHY_PORT_0 MIPHY_TYPE_SATA>; | ||
25 | phy-names = "ahci_phy"; | ||
26 | resets = <&powerdown STIH416_SATA0_POWERDOWN>, | ||
27 | <&softreset STIH416_SATA0_SOFTRESET>; | ||
28 | reset-names = "pwr-dwn", "sw-rst"; | ||
29 | clocks = <&clk_s_a0_ls CLK_ICN_REG>; | ||
30 | clock-names = "ahci_clk"; | ||
31 | }; | ||
diff --git a/Documentation/devicetree/bindings/ata/imx-sata.txt b/Documentation/devicetree/bindings/ata/imx-sata.txt new file mode 100644 index 000000000000..fa511db18408 --- /dev/null +++ b/Documentation/devicetree/bindings/ata/imx-sata.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | * Freescale i.MX AHCI SATA Controller | ||
2 | |||
3 | The Freescale i.MX SATA controller mostly conforms to the AHCI interface | ||
4 | with some special extensions at integration level. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : should be one of the following: | ||
8 | - "fsl,imx53-ahci" for i.MX53 SATA controller | ||
9 | - "fsl,imx6q-ahci" for i.MX6Q SATA controller | ||
10 | - interrupts : interrupt mapping for SATA IRQ | ||
11 | - reg : registers mapping | ||
12 | - clocks : list of clock specifiers, must contain an entry for each | ||
13 | required entry in clock-names | ||
14 | - clock-names : should include "sata", "sata_ref" and "ahb" entries | ||
15 | |||
16 | Optional properties: | ||
17 | - fsl,transmit-level-mV : transmit voltage level, in millivolts. | ||
18 | - fsl,transmit-boost-mdB : transmit boost level, in milli-decibels | ||
19 | - fsl,transmit-atten-16ths : transmit attenuation, in 16ths | ||
20 | - fsl,receive-eq-mdB : receive equalisation, in milli-decibels | ||
21 | Please refer to the technical documentation or the driver source code | ||
22 | for the list of legal values for these options. | ||
23 | - fsl,no-spread-spectrum : disable spread-spectrum clocking on the SATA | ||
24 | link. | ||
25 | |||
26 | Examples: | ||
27 | |||
28 | sata@02200000 { | ||
29 | compatible = "fsl,imx6q-ahci"; | ||
30 | reg = <0x02200000 0x4000>; | ||
31 | interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; | ||
32 | clocks = <&clks IMX6QDL_CLK_SATA>, | ||
33 | <&clks IMX6QDL_CLK_SATA_REF_100M>, | ||
34 | <&clks IMX6QDL_CLK_AHB>; | ||
35 | clock-names = "sata", "sata_ref", "ahb"; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/ata/tegra-sata.txt b/Documentation/devicetree/bindings/ata/tegra-sata.txt new file mode 100644 index 000000000000..946f2072570b --- /dev/null +++ b/Documentation/devicetree/bindings/ata/tegra-sata.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | Tegra124 SoC SATA AHCI controller | ||
2 | |||
3 | Required properties : | ||
4 | - compatible : "nvidia,tegra124-ahci". | ||
5 | - reg : Should contain 2 entries: | ||
6 | - AHCI register set (SATA BAR5) | ||
7 | - SATA register set | ||
8 | - interrupts : Defines the interrupt used by SATA | ||
9 | - clocks : Must contain an entry for each entry in clock-names. | ||
10 | See ../clocks/clock-bindings.txt for details. | ||
11 | - clock-names : Must include the following entries: | ||
12 | - sata | ||
13 | - sata-oob | ||
14 | - cml1 | ||
15 | - pll_e | ||
16 | - resets : Must contain an entry for each entry in reset-names. | ||
17 | See ../reset/reset.txt for details. | ||
18 | - reset-names : Must include the following entries: | ||
19 | - sata | ||
20 | - sata-oob | ||
21 | - sata-cold | ||
22 | - phys : Must contain an entry for each entry in phy-names. | ||
23 | See ../phy/phy-bindings.txt for details. | ||
24 | - phy-names : Must include the following entries: | ||
25 | - sata-phy : XUSB PADCTL SATA PHY | ||
26 | - hvdd-supply : Defines the SATA HVDD regulator | ||
27 | - vddio-supply : Defines the SATA VDDIO regulator | ||
28 | - avdd-supply : Defines the SATA AVDD regulator | ||
29 | - target-5v-supply : Defines the SATA 5V power regulator | ||
30 | - target-12v-supply : Defines the SATA 12V power regulator | ||
diff --git a/Documentation/devicetree/bindings/clock/arm-integrator.txt b/Documentation/devicetree/bindings/clock/arm-integrator.txt index 652914b17b95..ecc69520bcea 100644 --- a/Documentation/devicetree/bindings/clock/arm-integrator.txt +++ b/Documentation/devicetree/bindings/clock/arm-integrator.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | Clock bindings for ARM Integrator Core Module clocks | 1 | Clock bindings for ARM Integrator and Versatile Core Module clocks |
2 | 2 | ||
3 | Auxilary Oscillator Clock | 3 | Auxilary Oscillator Clock |
4 | 4 | ||
@@ -12,7 +12,7 @@ parent node. | |||
12 | 12 | ||
13 | 13 | ||
14 | Required properties: | 14 | Required properties: |
15 | - compatible: must be "arm,integrator-cm-auxosc" | 15 | - compatible: must be "arm,integrator-cm-auxosc" or "arm,versatile-cm-auxosc" |
16 | - #clock-cells: must be <0> | 16 | - #clock-cells: must be <0> |
17 | 17 | ||
18 | Optional properties: | 18 | Optional properties: |
diff --git a/Documentation/devicetree/bindings/clock/clk-palmas-clk32kg-clocks.txt b/Documentation/devicetree/bindings/clock/clk-palmas-clk32kg-clocks.txt new file mode 100644 index 000000000000..4208886d834a --- /dev/null +++ b/Documentation/devicetree/bindings/clock/clk-palmas-clk32kg-clocks.txt | |||
@@ -0,0 +1,35 @@ | |||
1 | * Palmas 32KHz clocks * | ||
2 | |||
3 | Palmas device has two clock output pins for 32KHz, KG and KG_AUDIO. | ||
4 | |||
5 | This binding uses the common clock binding ./clock-bindings.txt. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible : "ti,palmas-clk32kg" for clk32kg clock | ||
9 | "ti,palmas-clk32kgaudio" for clk32kgaudio clock | ||
10 | - #clock-cells : shall be set to 0. | ||
11 | |||
12 | Optional property: | ||
13 | - ti,external-sleep-control: The external enable input pins controlled the | ||
14 | enable/disable of clocks. The external enable input pins ENABLE1, | ||
15 | ENABLE2 and NSLEEP. The valid values for the external pins are: | ||
16 | PALMAS_EXT_CONTROL_PIN_ENABLE1 for ENABLE1 pin | ||
17 | PALMAS_EXT_CONTROL_PIN_ENABLE2 for ENABLE2 pin | ||
18 | PALMAS_EXT_CONTROL_PIN_NSLEEP for NSLEEP pin | ||
19 | Option 0 or missing this property means the clock is enabled/disabled | ||
20 | via register access and these pins do not have any control. | ||
21 | The macros of external control pins for DTS is defined at | ||
22 | dt-bindings/mfd/palmas.h | ||
23 | |||
24 | Example: | ||
25 | #include <dt-bindings/mfd/palmas.h> | ||
26 | ... | ||
27 | palmas: tps65913@58 { | ||
28 | ... | ||
29 | clk32kg: palmas_clk32k@0 { | ||
30 | compatible = "ti,palmas-clk32kg"; | ||
31 | #clock-cells = <0>; | ||
32 | ti,external-sleep-control = <PALMAS_EXT_CONTROL_PIN_NSLEEP>; | ||
33 | }; | ||
34 | ... | ||
35 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/clk-s5pv210-audss.txt b/Documentation/devicetree/bindings/clock/clk-s5pv210-audss.txt new file mode 100644 index 000000000000..4fc869b69d4a --- /dev/null +++ b/Documentation/devicetree/bindings/clock/clk-s5pv210-audss.txt | |||
@@ -0,0 +1,53 @@ | |||
1 | * Samsung Audio Subsystem Clock Controller | ||
2 | |||
3 | The Samsung Audio Subsystem clock controller generates and supplies clocks | ||
4 | to Audio Subsystem block available in the S5PV210 and compatible SoCs. | ||
5 | |||
6 | Required Properties: | ||
7 | |||
8 | - compatible: should be "samsung,s5pv210-audss-clock". | ||
9 | - reg: physical base address and length of the controller's register set. | ||
10 | |||
11 | - #clock-cells: should be 1. | ||
12 | |||
13 | - clocks: | ||
14 | - hclk: AHB bus clock of the Audio Subsystem. | ||
15 | - xxti: Optional fixed rate PLL reference clock, parent of mout_audss. If | ||
16 | not specified (i.e. xusbxti is used for PLL reference), it is fixed to | ||
17 | a clock named "xxti". | ||
18 | - fout_epll: Input PLL to the AudioSS block, parent of mout_audss. | ||
19 | - iiscdclk0: Optional external i2s clock, parent of mout_i2s. If not | ||
20 | specified, it is fixed to a clock named "iiscdclk0". | ||
21 | - sclk_audio0: Audio bus clock, parent of mout_i2s. | ||
22 | |||
23 | - clock-names: Aliases for the above clocks. They should be "hclk", | ||
24 | "xxti", "fout_epll", "iiscdclk0", and "sclk_audio0" respectively. | ||
25 | |||
26 | All available clocks are defined as preprocessor macros in | ||
27 | dt-bindings/clock/s5pv210-audss-clk.h header and can be used in device | ||
28 | tree sources. | ||
29 | |||
30 | Example: Clock controller node. | ||
31 | |||
32 | clk_audss: clock-controller@c0900000 { | ||
33 | compatible = "samsung,s5pv210-audss-clock"; | ||
34 | reg = <0xc0900000 0x1000>; | ||
35 | #clock-cells = <1>; | ||
36 | clock-names = "hclk", "xxti", | ||
37 | "fout_epll", "sclk_audio0"; | ||
38 | clocks = <&clocks DOUT_HCLKP>, <&xxti>, | ||
39 | <&clocks FOUT_EPLL>, <&clocks SCLK_AUDIO0>; | ||
40 | }; | ||
41 | |||
42 | Example: I2S controller node that consumes the clock generated by the clock | ||
43 | controller. Refer to the standard clock bindings for information | ||
44 | about 'clocks' and 'clock-names' property. | ||
45 | |||
46 | i2s0: i2s@03830000 { | ||
47 | /* ... */ | ||
48 | clock-names = "iis", "i2s_opclk0", | ||
49 | "i2s_opclk1"; | ||
50 | clocks = <&clk_audss CLK_I2S>, <&clk_audss CLK_I2S>, | ||
51 | <&clk_audss CLK_DOUT_AUD_BUS>; | ||
52 | /* ... */ | ||
53 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/clock-bindings.txt b/Documentation/devicetree/bindings/clock/clock-bindings.txt index f15787817d6b..06fc6d541c89 100644 --- a/Documentation/devicetree/bindings/clock/clock-bindings.txt +++ b/Documentation/devicetree/bindings/clock/clock-bindings.txt | |||
@@ -131,3 +131,39 @@ clock signal, and a UART. | |||
131 | ("pll" and "pll-switched"). | 131 | ("pll" and "pll-switched"). |
132 | * The UART has its baud clock connected the external oscillator and its | 132 | * The UART has its baud clock connected the external oscillator and its |
133 | register clock connected to the PLL clock (the "pll-switched" signal) | 133 | register clock connected to the PLL clock (the "pll-switched" signal) |
134 | |||
135 | ==Assigned clock parents and rates== | ||
136 | |||
137 | Some platforms may require initial configuration of default parent clocks | ||
138 | and clock frequencies. Such a configuration can be specified in a device tree | ||
139 | node through assigned-clocks, assigned-clock-parents and assigned-clock-rates | ||
140 | properties. The assigned-clock-parents property should contain a list of parent | ||
141 | clocks in form of phandle and clock specifier pairs, the assigned-clock-parents | ||
142 | property the list of assigned clock frequency values - corresponding to clocks | ||
143 | listed in the assigned-clocks property. | ||
144 | |||
145 | To skip setting parent or rate of a clock its corresponding entry should be | ||
146 | set to 0, or can be omitted if it is not followed by any non-zero entry. | ||
147 | |||
148 | uart@a000 { | ||
149 | compatible = "fsl,imx-uart"; | ||
150 | reg = <0xa000 0x1000>; | ||
151 | ... | ||
152 | clocks = <&osc 0>, <&pll 1>; | ||
153 | clock-names = "baud", "register"; | ||
154 | |||
155 | assigned-clocks = <&clkcon 0>, <&pll 2>; | ||
156 | assigned-clock-parents = <&pll 2>; | ||
157 | assigned-clock-rates = <0>, <460800>; | ||
158 | }; | ||
159 | |||
160 | In this example the <&pll 2> clock is set as parent of clock <&clkcon 0> and | ||
161 | the <&pll 2> clock is assigned a frequency value of 460800 Hz. | ||
162 | |||
163 | Configuring a clock's parent and rate through the device node that consumes | ||
164 | the clock can be done only for clocks that have a single user. Specifying | ||
165 | conflicting parent or rate configuration in multiple consumer nodes for | ||
166 | a shared clock is forbidden. | ||
167 | |||
168 | Configuration of common clocks, which affect multiple consumer devices can | ||
169 | be similarly specified in the clock provider node. | ||
diff --git a/Documentation/devicetree/bindings/clock/clps711x-clock.txt b/Documentation/devicetree/bindings/clock/clps711x-clock.txt new file mode 100644 index 000000000000..ce5a7476f05d --- /dev/null +++ b/Documentation/devicetree/bindings/clock/clps711x-clock.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * Clock bindings for the Cirrus Logic CLPS711X CPUs | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Shall contain "cirrus,clps711x-clk". | ||
5 | - reg : Address of the internal register set. | ||
6 | - startup-frequency: Factory set CPU startup frequency in HZ. | ||
7 | - #clock-cells : Should be <1>. | ||
8 | |||
9 | The clock consumer should specify the desired clock by having the clock | ||
10 | ID in its "clocks" phandle cell. See include/dt-bindings/clock/clps711x-clock.h | ||
11 | for the full list of CLPS711X clock IDs. | ||
12 | |||
13 | Example: | ||
14 | clks: clks@80000000 { | ||
15 | #clock-cells = <1>; | ||
16 | compatible = "cirrus,ep7312-clk", "cirrus,clps711x-clk"; | ||
17 | reg = <0x80000000 0xc000>; | ||
18 | startup-frequency = <73728000>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/imx1-clock.txt b/Documentation/devicetree/bindings/clock/imx1-clock.txt new file mode 100644 index 000000000000..b7adf4e3ea98 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/imx1-clock.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | * Clock bindings for Freescale i.MX1 CPUs | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "fsl,imx1-ccm". | ||
5 | - reg: Address and length of the register set. | ||
6 | - #clock-cells: Should be <1>. | ||
7 | |||
8 | The clock consumer should specify the desired clock by having the clock | ||
9 | ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx1-clock.h | ||
10 | for the full list of i.MX1 clock IDs. | ||
11 | |||
12 | Examples: | ||
13 | clks: ccm@0021b000 { | ||
14 | #clock-cells = <1>; | ||
15 | compatible = "fsl,imx1-ccm"; | ||
16 | reg = <0x0021b000 0x1000>; | ||
17 | }; | ||
18 | |||
19 | pwm: pwm@00208000 { | ||
20 | #pwm-cells = <2>; | ||
21 | compatible = "fsl,imx1-pwm"; | ||
22 | reg = <0x00208000 0x1000>; | ||
23 | interrupts = <34>; | ||
24 | clocks = <&clks IMX1_CLK_DUMMY>, <&clks IMX1_CLK_PER1>; | ||
25 | clock-names = "ipg", "per"; | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/imx21-clock.txt b/Documentation/devicetree/bindings/clock/imx21-clock.txt new file mode 100644 index 000000000000..c3b0db437c48 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/imx21-clock.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | * Clock bindings for Freescale i.MX21 | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : Should be "fsl,imx21-ccm". | ||
5 | - reg : Address and length of the register set. | ||
6 | - interrupts : Should contain CCM interrupt. | ||
7 | - #clock-cells: Should be <1>. | ||
8 | |||
9 | The clock consumer should specify the desired clock by having the clock | ||
10 | ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx21-clock.h | ||
11 | for the full list of i.MX21 clock IDs. | ||
12 | |||
13 | Examples: | ||
14 | clks: ccm@10027000{ | ||
15 | compatible = "fsl,imx21-ccm"; | ||
16 | reg = <0x10027000 0x800>; | ||
17 | #clock-cells = <1>; | ||
18 | }; | ||
19 | |||
20 | uart1: serial@1000a000 { | ||
21 | compatible = "fsl,imx21-uart"; | ||
22 | reg = <0x1000a000 0x1000>; | ||
23 | interrupts = <20>; | ||
24 | clocks = <&clks IMX21_CLK_UART1_IPG_GATE>, | ||
25 | <&clks IMX21_CLK_PER1>; | ||
26 | clock-names = "ipg", "per"; | ||
27 | status = "disabled"; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/imx27-clock.txt b/Documentation/devicetree/bindings/clock/imx27-clock.txt index 6bc9fd2c6631..cc05de9ec393 100644 --- a/Documentation/devicetree/bindings/clock/imx27-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx27-clock.txt | |||
@@ -7,117 +7,22 @@ Required properties: | |||
7 | - #clock-cells: Should be <1> | 7 | - #clock-cells: Should be <1> |
8 | 8 | ||
9 | The clock consumer should specify the desired clock by having the clock | 9 | The clock consumer should specify the desired clock by having the clock |
10 | ID in its "clocks" phandle cell. The following is a full list of i.MX27 | 10 | ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx27-clock.h |
11 | clocks and IDs. | 11 | for the full list of i.MX27 clock IDs. |
12 | |||
13 | Clock ID | ||
14 | ----------------------- | ||
15 | dummy 0 | ||
16 | ckih 1 | ||
17 | ckil 2 | ||
18 | mpll 3 | ||
19 | spll 4 | ||
20 | mpll_main2 5 | ||
21 | ahb 6 | ||
22 | ipg 7 | ||
23 | nfc_div 8 | ||
24 | per1_div 9 | ||
25 | per2_div 10 | ||
26 | per3_div 11 | ||
27 | per4_div 12 | ||
28 | vpu_sel 13 | ||
29 | vpu_div 14 | ||
30 | usb_div 15 | ||
31 | cpu_sel 16 | ||
32 | clko_sel 17 | ||
33 | cpu_div 18 | ||
34 | clko_div 19 | ||
35 | ssi1_sel 20 | ||
36 | ssi2_sel 21 | ||
37 | ssi1_div 22 | ||
38 | ssi2_div 23 | ||
39 | clko_en 24 | ||
40 | ssi2_ipg_gate 25 | ||
41 | ssi1_ipg_gate 26 | ||
42 | slcdc_ipg_gate 27 | ||
43 | sdhc3_ipg_gate 28 | ||
44 | sdhc2_ipg_gate 29 | ||
45 | sdhc1_ipg_gate 30 | ||
46 | scc_ipg_gate 31 | ||
47 | sahara_ipg_gate 32 | ||
48 | rtc_ipg_gate 33 | ||
49 | pwm_ipg_gate 34 | ||
50 | owire_ipg_gate 35 | ||
51 | lcdc_ipg_gate 36 | ||
52 | kpp_ipg_gate 37 | ||
53 | iim_ipg_gate 38 | ||
54 | i2c2_ipg_gate 39 | ||
55 | i2c1_ipg_gate 40 | ||
56 | gpt6_ipg_gate 41 | ||
57 | gpt5_ipg_gate 42 | ||
58 | gpt4_ipg_gate 43 | ||
59 | gpt3_ipg_gate 44 | ||
60 | gpt2_ipg_gate 45 | ||
61 | gpt1_ipg_gate 46 | ||
62 | gpio_ipg_gate 47 | ||
63 | fec_ipg_gate 48 | ||
64 | emma_ipg_gate 49 | ||
65 | dma_ipg_gate 50 | ||
66 | cspi3_ipg_gate 51 | ||
67 | cspi2_ipg_gate 52 | ||
68 | cspi1_ipg_gate 53 | ||
69 | nfc_baud_gate 54 | ||
70 | ssi2_baud_gate 55 | ||
71 | ssi1_baud_gate 56 | ||
72 | vpu_baud_gate 57 | ||
73 | per4_gate 58 | ||
74 | per3_gate 59 | ||
75 | per2_gate 60 | ||
76 | per1_gate 61 | ||
77 | usb_ahb_gate 62 | ||
78 | slcdc_ahb_gate 63 | ||
79 | sahara_ahb_gate 64 | ||
80 | lcdc_ahb_gate 65 | ||
81 | vpu_ahb_gate 66 | ||
82 | fec_ahb_gate 67 | ||
83 | emma_ahb_gate 68 | ||
84 | emi_ahb_gate 69 | ||
85 | dma_ahb_gate 70 | ||
86 | csi_ahb_gate 71 | ||
87 | brom_ahb_gate 72 | ||
88 | ata_ahb_gate 73 | ||
89 | wdog_ipg_gate 74 | ||
90 | usb_ipg_gate 75 | ||
91 | uart6_ipg_gate 76 | ||
92 | uart5_ipg_gate 77 | ||
93 | uart4_ipg_gate 78 | ||
94 | uart3_ipg_gate 79 | ||
95 | uart2_ipg_gate 80 | ||
96 | uart1_ipg_gate 81 | ||
97 | ckih_div1p5 82 | ||
98 | fpm 83 | ||
99 | mpll_osc_sel 84 | ||
100 | mpll_sel 85 | ||
101 | spll_gate 86 | ||
102 | mshc_div 87 | ||
103 | rtic_ipg_gate 88 | ||
104 | mshc_ipg_gate 89 | ||
105 | rtic_ahb_gate 90 | ||
106 | mshc_baud_gate 91 | ||
107 | 12 | ||
108 | Examples: | 13 | Examples: |
14 | clks: ccm@10027000{ | ||
15 | compatible = "fsl,imx27-ccm"; | ||
16 | reg = <0x10027000 0x1000>; | ||
17 | #clock-cells = <1>; | ||
18 | }; | ||
109 | 19 | ||
110 | clks: ccm@10027000{ | 20 | uart1: serial@1000a000 { |
111 | compatible = "fsl,imx27-ccm"; | 21 | compatible = "fsl,imx27-uart", "fsl,imx21-uart"; |
112 | reg = <0x10027000 0x1000>; | 22 | reg = <0x1000a000 0x1000>; |
113 | #clock-cells = <1>; | 23 | interrupts = <20>; |
114 | }; | 24 | clocks = <&clks IMX27_CLK_UART1_IPG_GATE>, |
115 | 25 | <&clks IMX27_CLK_PER1_GATE>; | |
116 | uart1: serial@1000a000 { | 26 | clock-names = "ipg", "per"; |
117 | compatible = "fsl,imx27-uart", "fsl,imx21-uart"; | 27 | status = "disabled"; |
118 | reg = <0x1000a000 0x1000>; | 28 | }; |
119 | interrupts = <20>; | ||
120 | clocks = <&clks 81>, <&clks 61>; | ||
121 | clock-names = "ipg", "per"; | ||
122 | status = "disabled"; | ||
123 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt index 90ec91fe5ce0..9252912a5b0e 100644 --- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt | |||
@@ -7,223 +7,13 @@ Required properties: | |||
7 | - #clock-cells: Should be <1> | 7 | - #clock-cells: Should be <1> |
8 | 8 | ||
9 | The clock consumer should specify the desired clock by having the clock | 9 | The clock consumer should specify the desired clock by having the clock |
10 | ID in its "clocks" phandle cell. The following is a full list of i.MX6Q | 10 | ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx6qdl-clock.h |
11 | clocks and IDs. | 11 | for the full list of i.MX6 Quad and DualLite clock IDs. |
12 | |||
13 | Clock ID | ||
14 | --------------------------- | ||
15 | dummy 0 | ||
16 | ckil 1 | ||
17 | ckih 2 | ||
18 | osc 3 | ||
19 | pll2_pfd0_352m 4 | ||
20 | pll2_pfd1_594m 5 | ||
21 | pll2_pfd2_396m 6 | ||
22 | pll3_pfd0_720m 7 | ||
23 | pll3_pfd1_540m 8 | ||
24 | pll3_pfd2_508m 9 | ||
25 | pll3_pfd3_454m 10 | ||
26 | pll2_198m 11 | ||
27 | pll3_120m 12 | ||
28 | pll3_80m 13 | ||
29 | pll3_60m 14 | ||
30 | twd 15 | ||
31 | step 16 | ||
32 | pll1_sw 17 | ||
33 | periph_pre 18 | ||
34 | periph2_pre 19 | ||
35 | periph_clk2_sel 20 | ||
36 | periph2_clk2_sel 21 | ||
37 | axi_sel 22 | ||
38 | esai_sel 23 | ||
39 | asrc_sel 24 | ||
40 | spdif_sel 25 | ||
41 | gpu2d_axi 26 | ||
42 | gpu3d_axi 27 | ||
43 | gpu2d_core_sel 28 | ||
44 | gpu3d_core_sel 29 | ||
45 | gpu3d_shader_sel 30 | ||
46 | ipu1_sel 31 | ||
47 | ipu2_sel 32 | ||
48 | ldb_di0_sel 33 | ||
49 | ldb_di1_sel 34 | ||
50 | ipu1_di0_pre_sel 35 | ||
51 | ipu1_di1_pre_sel 36 | ||
52 | ipu2_di0_pre_sel 37 | ||
53 | ipu2_di1_pre_sel 38 | ||
54 | ipu1_di0_sel 39 | ||
55 | ipu1_di1_sel 40 | ||
56 | ipu2_di0_sel 41 | ||
57 | ipu2_di1_sel 42 | ||
58 | hsi_tx_sel 43 | ||
59 | pcie_axi_sel 44 | ||
60 | ssi1_sel 45 | ||
61 | ssi2_sel 46 | ||
62 | ssi3_sel 47 | ||
63 | usdhc1_sel 48 | ||
64 | usdhc2_sel 49 | ||
65 | usdhc3_sel 50 | ||
66 | usdhc4_sel 51 | ||
67 | enfc_sel 52 | ||
68 | emi_sel 53 | ||
69 | emi_slow_sel 54 | ||
70 | vdo_axi_sel 55 | ||
71 | vpu_axi_sel 56 | ||
72 | cko1_sel 57 | ||
73 | periph 58 | ||
74 | periph2 59 | ||
75 | periph_clk2 60 | ||
76 | periph2_clk2 61 | ||
77 | ipg 62 | ||
78 | ipg_per 63 | ||
79 | esai_pred 64 | ||
80 | esai_podf 65 | ||
81 | asrc_pred 66 | ||
82 | asrc_podf 67 | ||
83 | spdif_pred 68 | ||
84 | spdif_podf 69 | ||
85 | can_root 70 | ||
86 | ecspi_root 71 | ||
87 | gpu2d_core_podf 72 | ||
88 | gpu3d_core_podf 73 | ||
89 | gpu3d_shader 74 | ||
90 | ipu1_podf 75 | ||
91 | ipu2_podf 76 | ||
92 | ldb_di0_podf 77 | ||
93 | ldb_di1_podf 78 | ||
94 | ipu1_di0_pre 79 | ||
95 | ipu1_di1_pre 80 | ||
96 | ipu2_di0_pre 81 | ||
97 | ipu2_di1_pre 82 | ||
98 | hsi_tx_podf 83 | ||
99 | ssi1_pred 84 | ||
100 | ssi1_podf 85 | ||
101 | ssi2_pred 86 | ||
102 | ssi2_podf 87 | ||
103 | ssi3_pred 88 | ||
104 | ssi3_podf 89 | ||
105 | uart_serial_podf 90 | ||
106 | usdhc1_podf 91 | ||
107 | usdhc2_podf 92 | ||
108 | usdhc3_podf 93 | ||
109 | usdhc4_podf 94 | ||
110 | enfc_pred 95 | ||
111 | enfc_podf 96 | ||
112 | emi_podf 97 | ||
113 | emi_slow_podf 98 | ||
114 | vpu_axi_podf 99 | ||
115 | cko1_podf 100 | ||
116 | axi 101 | ||
117 | mmdc_ch0_axi_podf 102 | ||
118 | mmdc_ch1_axi_podf 103 | ||
119 | arm 104 | ||
120 | ahb 105 | ||
121 | apbh_dma 106 | ||
122 | asrc 107 | ||
123 | can1_ipg 108 | ||
124 | can1_serial 109 | ||
125 | can2_ipg 110 | ||
126 | can2_serial 111 | ||
127 | ecspi1 112 | ||
128 | ecspi2 113 | ||
129 | ecspi3 114 | ||
130 | ecspi4 115 | ||
131 | ecspi5 116 | ||
132 | enet 117 | ||
133 | esai 118 | ||
134 | gpt_ipg 119 | ||
135 | gpt_ipg_per 120 | ||
136 | gpu2d_core 121 | ||
137 | gpu3d_core 122 | ||
138 | hdmi_iahb 123 | ||
139 | hdmi_isfr 124 | ||
140 | i2c1 125 | ||
141 | i2c2 126 | ||
142 | i2c3 127 | ||
143 | iim 128 | ||
144 | enfc 129 | ||
145 | ipu1 130 | ||
146 | ipu1_di0 131 | ||
147 | ipu1_di1 132 | ||
148 | ipu2 133 | ||
149 | ipu2_di0 134 | ||
150 | ldb_di0 135 | ||
151 | ldb_di1 136 | ||
152 | ipu2_di1 137 | ||
153 | hsi_tx 138 | ||
154 | mlb 139 | ||
155 | mmdc_ch0_axi 140 | ||
156 | mmdc_ch1_axi 141 | ||
157 | ocram 142 | ||
158 | openvg_axi 143 | ||
159 | pcie_axi 144 | ||
160 | pwm1 145 | ||
161 | pwm2 146 | ||
162 | pwm3 147 | ||
163 | pwm4 148 | ||
164 | per1_bch 149 | ||
165 | gpmi_bch_apb 150 | ||
166 | gpmi_bch 151 | ||
167 | gpmi_io 152 | ||
168 | gpmi_apb 153 | ||
169 | sata 154 | ||
170 | sdma 155 | ||
171 | spba 156 | ||
172 | ssi1 157 | ||
173 | ssi2 158 | ||
174 | ssi3 159 | ||
175 | uart_ipg 160 | ||
176 | uart_serial 161 | ||
177 | usboh3 162 | ||
178 | usdhc1 163 | ||
179 | usdhc2 164 | ||
180 | usdhc3 165 | ||
181 | usdhc4 166 | ||
182 | vdo_axi 167 | ||
183 | vpu_axi 168 | ||
184 | cko1 169 | ||
185 | pll1_sys 170 | ||
186 | pll2_bus 171 | ||
187 | pll3_usb_otg 172 | ||
188 | pll4_audio 173 | ||
189 | pll5_video 174 | ||
190 | pll8_mlb 175 | ||
191 | pll7_usb_host 176 | ||
192 | pll6_enet 177 | ||
193 | ssi1_ipg 178 | ||
194 | ssi2_ipg 179 | ||
195 | ssi3_ipg 180 | ||
196 | rom 181 | ||
197 | usbphy1 182 | ||
198 | usbphy2 183 | ||
199 | ldb_di0_div_3_5 184 | ||
200 | ldb_di1_div_3_5 185 | ||
201 | sata_ref 186 | ||
202 | sata_ref_100m 187 | ||
203 | pcie_ref 188 | ||
204 | pcie_ref_125m 189 | ||
205 | enet_ref 190 | ||
206 | usbphy1_gate 191 | ||
207 | usbphy2_gate 192 | ||
208 | pll4_post_div 193 | ||
209 | pll5_post_div 194 | ||
210 | pll5_video_div 195 | ||
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 | ||
223 | esai_ahb 208 | ||
224 | 12 | ||
225 | Examples: | 13 | Examples: |
226 | 14 | ||
15 | #include <dt-bindings/clock/imx6qdl-clock.h> | ||
16 | |||
227 | clks: ccm@020c4000 { | 17 | clks: ccm@020c4000 { |
228 | compatible = "fsl,imx6q-ccm"; | 18 | compatible = "fsl,imx6q-ccm"; |
229 | reg = <0x020c4000 0x4000>; | 19 | reg = <0x020c4000 0x4000>; |
@@ -235,7 +25,7 @@ uart1: serial@02020000 { | |||
235 | compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; | 25 | compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; |
236 | reg = <0x02020000 0x4000>; | 26 | reg = <0x02020000 0x4000>; |
237 | interrupts = <0 26 0x04>; | 27 | interrupts = <0 26 0x04>; |
238 | clocks = <&clks 160>, <&clks 161>; | 28 | clocks = <&clks IMX6QDL_CLK_UART_IPG>, <&clks IMX6QDL_CLK_UART_SERIAL>; |
239 | clock-names = "ipg", "per"; | 29 | clock-names = "ipg", "per"; |
240 | status = "disabled"; | 30 | status = "disabled"; |
241 | }; | 31 | }; |
diff --git a/Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt index feb830130714..99c214660bdc 100644 --- a/Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt +++ b/Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt | |||
@@ -3,14 +3,15 @@ Device Tree Clock bindings for cpu clock of Marvell EBU platforms | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : shall be one of the following: | 4 | - compatible : shall be one of the following: |
5 | "marvell,armada-xp-cpu-clock" - cpu clocks for Armada XP | 5 | "marvell,armada-xp-cpu-clock" - cpu clocks for Armada XP |
6 | - reg : Address and length of the clock complex register set | 6 | - reg : Address and length of the clock complex register set, followed |
7 | by address and length of the PMU DFS registers | ||
7 | - #clock-cells : should be set to 1. | 8 | - #clock-cells : should be set to 1. |
8 | - clocks : shall be the input parent clock phandle for the clock. | 9 | - clocks : shall be the input parent clock phandle for the clock. |
9 | 10 | ||
10 | cpuclk: clock-complex@d0018700 { | 11 | cpuclk: clock-complex@d0018700 { |
11 | #clock-cells = <1>; | 12 | #clock-cells = <1>; |
12 | compatible = "marvell,armada-xp-cpu-clock"; | 13 | compatible = "marvell,armada-xp-cpu-clock"; |
13 | reg = <0xd0018700 0xA0>; | 14 | reg = <0xd0018700 0xA0>, <0x1c054 0x10>; |
14 | clocks = <&coreclk 1>; | 15 | clocks = <&coreclk 1>; |
15 | } | 16 | } |
16 | 17 | ||
diff --git a/Documentation/devicetree/bindings/clock/qcom,gcc.txt b/Documentation/devicetree/bindings/clock/qcom,gcc.txt index 9cfcb4f2bc97..aba3d254e037 100644 --- a/Documentation/devicetree/bindings/clock/qcom,gcc.txt +++ b/Documentation/devicetree/bindings/clock/qcom,gcc.txt | |||
@@ -5,6 +5,8 @@ Required properties : | |||
5 | - compatible : shall contain only one of the following: | 5 | - compatible : shall contain only one of the following: |
6 | 6 | ||
7 | "qcom,gcc-apq8064" | 7 | "qcom,gcc-apq8064" |
8 | "qcom,gcc-apq8084" | ||
9 | "qcom,gcc-ipq8064" | ||
8 | "qcom,gcc-msm8660" | 10 | "qcom,gcc-msm8660" |
9 | "qcom,gcc-msm8960" | 11 | "qcom,gcc-msm8960" |
10 | "qcom,gcc-msm8974" | 12 | "qcom,gcc-msm8974" |
diff --git a/Documentation/devicetree/bindings/clock/qcom,mmcc.txt b/Documentation/devicetree/bindings/clock/qcom,mmcc.txt index d572e9964c54..29ebf84d25af 100644 --- a/Documentation/devicetree/bindings/clock/qcom,mmcc.txt +++ b/Documentation/devicetree/bindings/clock/qcom,mmcc.txt | |||
@@ -4,6 +4,8 @@ Qualcomm Multimedia Clock & Reset Controller Binding | |||
4 | Required properties : | 4 | Required properties : |
5 | - compatible : shall contain only one of the following: | 5 | - compatible : shall contain only one of the following: |
6 | 6 | ||
7 | "qcom,mmcc-apq8064" | ||
8 | "qcom,mmcc-apq8084" | ||
7 | "qcom,mmcc-msm8660" | 9 | "qcom,mmcc-msm8660" |
8 | "qcom,mmcc-msm8960" | 10 | "qcom,mmcc-msm8960" |
9 | "qcom,mmcc-msm8974" | 11 | "qcom,mmcc-msm8974" |
diff --git a/Documentation/devicetree/bindings/clock/rockchip,rk3188-cru.txt b/Documentation/devicetree/bindings/clock/rockchip,rk3188-cru.txt new file mode 100644 index 000000000000..0c2bf5eba43e --- /dev/null +++ b/Documentation/devicetree/bindings/clock/rockchip,rk3188-cru.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | * Rockchip RK3188/RK3066 Clock and Reset Unit | ||
2 | |||
3 | The RK3188/RK3066 clock controller generates and supplies clock to various | ||
4 | controllers within the SoC and also implements a reset controller for SoC | ||
5 | peripherals. | ||
6 | |||
7 | Required Properties: | ||
8 | |||
9 | - compatible: should be "rockchip,rk3188-cru", "rockchip,rk3188a-cru" or | ||
10 | "rockchip,rk3066a-cru" | ||
11 | - reg: physical base address of the controller and length of memory mapped | ||
12 | region. | ||
13 | - #clock-cells: should be 1. | ||
14 | - #reset-cells: should be 1. | ||
15 | |||
16 | Optional Properties: | ||
17 | |||
18 | - rockchip,grf: phandle to the syscon managing the "general register files" | ||
19 | If missing pll rates are not changable, due to the missing pll lock status. | ||
20 | |||
21 | Each clock is assigned an identifier and client nodes can use this identifier | ||
22 | to specify the clock which they consume. All available clocks are defined as | ||
23 | preprocessor macros in the dt-bindings/clock/rk3188-cru.h and | ||
24 | dt-bindings/clock/rk3066-cru.h headers and can be used in device tree sources. | ||
25 | Similar macros exist for the reset sources in these files. | ||
26 | |||
27 | External clocks: | ||
28 | |||
29 | There are several clocks that are generated outside the SoC. It is expected | ||
30 | that they are defined using standard clock bindings with following | ||
31 | clock-output-names: | ||
32 | - "xin24m" - crystal input - required, | ||
33 | - "xin32k" - rtc clock - optional, | ||
34 | - "xin27m" - 27mhz crystal input on rk3066 - optional, | ||
35 | - "ext_hsadc" - external HSADC clock - optional, | ||
36 | - "ext_cif0" - external camera clock - optional, | ||
37 | - "ext_rmii" - external RMII clock - optional, | ||
38 | - "ext_jtag" - externalJTAG clock - optional | ||
39 | |||
40 | Example: Clock controller node: | ||
41 | |||
42 | cru: cru@20000000 { | ||
43 | compatible = "rockchip,rk3188-cru"; | ||
44 | reg = <0x20000000 0x1000>; | ||
45 | rockchip,grf = <&grf>; | ||
46 | |||
47 | #clock-cells = <1>; | ||
48 | #reset-cells = <1>; | ||
49 | }; | ||
50 | |||
51 | Example: UART controller node that consumes the clock generated by the clock | ||
52 | controller: | ||
53 | |||
54 | uart0: serial@10124000 { | ||
55 | compatible = "snps,dw-apb-uart"; | ||
56 | reg = <0x10124000 0x400>; | ||
57 | interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; | ||
58 | reg-shift = <2>; | ||
59 | reg-io-width = <1>; | ||
60 | clocks = <&cru SCLK_UART0>; | ||
61 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/rockchip,rk3288-cru.txt b/Documentation/devicetree/bindings/clock/rockchip,rk3288-cru.txt new file mode 100644 index 000000000000..c9fbb76573e1 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/rockchip,rk3288-cru.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | * Rockchip RK3288 Clock and Reset Unit | ||
2 | |||
3 | The RK3288 clock controller generates and supplies clock to various | ||
4 | controllers within the SoC and also implements a reset controller for SoC | ||
5 | peripherals. | ||
6 | |||
7 | Required Properties: | ||
8 | |||
9 | - compatible: should be "rockchip,rk3288-cru" | ||
10 | - reg: physical base address of the controller and length of memory mapped | ||
11 | region. | ||
12 | - #clock-cells: should be 1. | ||
13 | - #reset-cells: should be 1. | ||
14 | |||
15 | Optional Properties: | ||
16 | |||
17 | - rockchip,grf: phandle to the syscon managing the "general register files" | ||
18 | If missing pll rates are not changable, due to the missing pll lock status. | ||
19 | |||
20 | Each clock is assigned an identifier and client nodes can use this identifier | ||
21 | to specify the clock which they consume. All available clocks are defined as | ||
22 | preprocessor macros in the dt-bindings/clock/rk3288-cru.h headers and can be | ||
23 | used in device tree sources. Similar macros exist for the reset sources in | ||
24 | these files. | ||
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 | - "xin24m" - crystal input - required, | ||
32 | - "xin32k" - rtc clock - optional, | ||
33 | - "ext_i2s" - external I2S clock - optional, | ||
34 | - "ext_hsadc" - external HSADC clock - optional, | ||
35 | - "ext_edp_24m" - external display port clock - optional, | ||
36 | - "ext_vip" - external VIP clock - optional, | ||
37 | - "ext_isp" - external ISP clock - optional, | ||
38 | - "ext_jtag" - external JTAG clock - optional | ||
39 | |||
40 | Example: Clock controller node: | ||
41 | |||
42 | cru: cru@20000000 { | ||
43 | compatible = "rockchip,rk3188-cru"; | ||
44 | reg = <0x20000000 0x1000>; | ||
45 | rockchip,grf = <&grf>; | ||
46 | |||
47 | #clock-cells = <1>; | ||
48 | #reset-cells = <1>; | ||
49 | }; | ||
50 | |||
51 | Example: UART controller node that consumes the clock generated by the clock | ||
52 | controller: | ||
53 | |||
54 | uart0: serial@10124000 { | ||
55 | compatible = "snps,dw-apb-uart"; | ||
56 | reg = <0x10124000 0x400>; | ||
57 | interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; | ||
58 | reg-shift = <2>; | ||
59 | reg-io-width = <1>; | ||
60 | clocks = <&cru SCLK_UART0>; | ||
61 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/rockchip.txt b/Documentation/devicetree/bindings/clock/rockchip.txt index a891c823ed44..22f6769e5d4a 100644 --- a/Documentation/devicetree/bindings/clock/rockchip.txt +++ b/Documentation/devicetree/bindings/clock/rockchip.txt | |||
@@ -6,6 +6,9 @@ This binding uses the common clock binding[1]. | |||
6 | 6 | ||
7 | == Gate clocks == | 7 | == Gate clocks == |
8 | 8 | ||
9 | These bindings are deprecated! | ||
10 | Please use the soc specific CRU bindings instead. | ||
11 | |||
9 | The gate registers form a continuos block which makes the dt node | 12 | The gate registers form a continuos block which makes the dt node |
10 | structure a matter of taste, as either all gates can be put into | 13 | structure a matter of taste, as either all gates can be put into |
11 | one gate clock spanning all registers or they can be divided into | 14 | one gate clock spanning all registers or they can be divided into |
diff --git a/Documentation/devicetree/bindings/clock/samsung,s5pv210-clock.txt b/Documentation/devicetree/bindings/clock/samsung,s5pv210-clock.txt new file mode 100644 index 000000000000..effd9401c133 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/samsung,s5pv210-clock.txt | |||
@@ -0,0 +1,78 @@ | |||
1 | * Samsung S5P6442/S5PC110/S5PV210 Clock Controller | ||
2 | |||
3 | Samsung S5P6442, S5PC110 and S5PV210 SoCs contain integrated clock | ||
4 | controller, which generates and supplies clock to various controllers | ||
5 | within the SoC. | ||
6 | |||
7 | Required Properties: | ||
8 | |||
9 | - compatible: should be one of following: | ||
10 | - "samsung,s5pv210-clock" : for clock controller of Samsung | ||
11 | S5PC110/S5PV210 SoCs, | ||
12 | - "samsung,s5p6442-clock" : for clock controller of Samsung | ||
13 | S5P6442 SoC. | ||
14 | |||
15 | - reg: physical base address of the controller and length of memory mapped | ||
16 | region. | ||
17 | |||
18 | - #clock-cells: should be 1. | ||
19 | |||
20 | All available clocks are defined as preprocessor macros in | ||
21 | dt-bindings/clock/s5pv210.h header and can be used in device tree sources. | ||
22 | |||
23 | External clocks: | ||
24 | |||
25 | There are several clocks that are generated outside the SoC. It is expected | ||
26 | that they are defined using standard clock bindings with following | ||
27 | clock-output-names: | ||
28 | - "xxti": external crystal oscillator connected to XXTI and XXTO pins of | ||
29 | the SoC, | ||
30 | - "xusbxti": external crystal oscillator connected to XUSBXTI and XUSBXTO | ||
31 | pins of the SoC, | ||
32 | |||
33 | A subset of above clocks available on given board shall be specified in | ||
34 | board device tree, including the system base clock, as selected by XOM[0] | ||
35 | pin of the SoC. Refer to generic fixed rate clock bindings | ||
36 | documentation[1] for more information how to specify these clocks. | ||
37 | |||
38 | [1] Documentation/devicetree/bindings/clock/fixed-clock.txt | ||
39 | |||
40 | Example: Clock controller node: | ||
41 | |||
42 | clock: clock-controller@7e00f000 { | ||
43 | compatible = "samsung,s5pv210-clock"; | ||
44 | reg = <0x7e00f000 0x1000>; | ||
45 | #clock-cells = <1>; | ||
46 | }; | ||
47 | |||
48 | Example: Required external clocks: | ||
49 | |||
50 | xxti: clock-xxti { | ||
51 | compatible = "fixed-clock"; | ||
52 | clock-output-names = "xxti"; | ||
53 | clock-frequency = <24000000>; | ||
54 | #clock-cells = <0>; | ||
55 | }; | ||
56 | |||
57 | xusbxti: clock-xusbxti { | ||
58 | compatible = "fixed-clock"; | ||
59 | clock-output-names = "xusbxti"; | ||
60 | clock-frequency = <24000000>; | ||
61 | #clock-cells = <0>; | ||
62 | }; | ||
63 | |||
64 | Example: UART controller node that consumes the clock generated by the clock | ||
65 | controller (refer to the standard clock bindings for information about | ||
66 | "clocks" and "clock-names" properties): | ||
67 | |||
68 | uart0: serial@e2900000 { | ||
69 | compatible = "samsung,s5pv210-uart"; | ||
70 | reg = <0xe2900000 0x400>; | ||
71 | interrupt-parent = <&vic1>; | ||
72 | interrupts = <10>; | ||
73 | clock-names = "uart", "clk_uart_baud0", | ||
74 | "clk_uart_baud1"; | ||
75 | clocks = <&clocks UART0>, <&clocks UART0>, | ||
76 | <&clocks SCLK_UART0>; | ||
77 | status = "disabled"; | ||
78 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-divmux.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-divmux.txt index ae56315fcec5..6247652044a0 100644 --- a/Documentation/devicetree/bindings/clock/st/st,clkgen-divmux.txt +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-divmux.txt | |||
@@ -24,26 +24,26 @@ Required properties: | |||
24 | 24 | ||
25 | Example: | 25 | Example: |
26 | 26 | ||
27 | clockgenA@fd345000 { | 27 | clockgen-a@fd345000 { |
28 | reg = <0xfd345000 0xb50>; | 28 | reg = <0xfd345000 0xb50>; |
29 | 29 | ||
30 | CLK_M_A1_DIV1: CLK_M_A1_DIV1 { | 30 | clk_m_a1_div1: clk-m-a1-div1 { |
31 | #clock-cells = <1>; | 31 | #clock-cells = <1>; |
32 | compatible = "st,clkgena-divmux-c32-odf1", | 32 | compatible = "st,clkgena-divmux-c32-odf1", |
33 | "st,clkgena-divmux"; | 33 | "st,clkgena-divmux"; |
34 | 34 | ||
35 | clocks = <&CLK_M_A1_OSC_PREDIV>, | 35 | clocks = <&clk_m_a1_osc_prediv>, |
36 | <&CLK_M_A1_PLL0 1>, /* PLL0 PHI1 */ | 36 | <&clk_m_a1_pll0 1>, /* PLL0 PHI1 */ |
37 | <&CLK_M_A1_PLL1 1>; /* PLL1 PHI1 */ | 37 | <&clk_m_a1_pll1 1>; /* PLL1 PHI1 */ |
38 | 38 | ||
39 | clock-output-names = "CLK_M_RX_ICN_TS", | 39 | clock-output-names = "clk-m-rx-icn-ts", |
40 | "CLK_M_RX_ICN_VDP_0", | 40 | "clk-m-rx-icn-vdp-0", |
41 | "", /* Unused */ | 41 | "", /* unused */ |
42 | "CLK_M_PRV_T1_BUS", | 42 | "clk-m-prv-t1-bus", |
43 | "CLK_M_ICN_REG_12", | 43 | "clk-m-icn-reg-12", |
44 | "CLK_M_ICN_REG_10", | 44 | "clk-m-icn-reg-10", |
45 | "", /* Unused */ | 45 | "", /* unused */ |
46 | "CLK_M_ICN_ST231"; | 46 | "clk-m-icn-st231"; |
47 | }; | 47 | }; |
48 | }; | 48 | }; |
49 | 49 | ||
diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt index 943e0808e212..f1fa91c68768 100644 --- a/Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt | |||
@@ -17,7 +17,7 @@ Required properties: | |||
17 | "st,stih416-clkgenf-vcc-sd", "st,clkgen-mux" | 17 | "st,stih416-clkgenf-vcc-sd", "st,clkgen-mux" |
18 | "st,stih415-clkgen-a9-mux", "st,clkgen-mux" | 18 | "st,stih415-clkgen-a9-mux", "st,clkgen-mux" |
19 | "st,stih416-clkgen-a9-mux", "st,clkgen-mux" | 19 | "st,stih416-clkgen-a9-mux", "st,clkgen-mux" |
20 | 20 | "st,stih407-clkgen-a9-mux", "st,clkgen-mux" | |
21 | 21 | ||
22 | - #clock-cells : from common clock binding; shall be set to 0. | 22 | - #clock-cells : from common clock binding; shall be set to 0. |
23 | 23 | ||
@@ -27,10 +27,10 @@ Required properties: | |||
27 | 27 | ||
28 | Example: | 28 | Example: |
29 | 29 | ||
30 | CLK_M_HVA: CLK_M_HVA { | 30 | clk_m_hva: clk-m-hva@fd690868 { |
31 | #clock-cells = <0>; | 31 | #clock-cells = <0>; |
32 | compatible = "st,stih416-clkgenf-vcc-hva", "st,clkgen-mux"; | 32 | compatible = "st,stih416-clkgenf-vcc-hva", "st,clkgen-mux"; |
33 | reg = <0xfd690868 4>; | 33 | reg = <0xfd690868 4>; |
34 | 34 | ||
35 | clocks = <&CLOCKGEN_F 1>, <&CLK_M_A1_DIV0 3>; | 35 | clocks = <&clockgen_f 1>, <&clk_m_a1_div0 3>; |
36 | }; | 36 | }; |
diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt index 81eb3855ab92..efb51cf0c845 100644 --- a/Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt | |||
@@ -19,11 +19,14 @@ Required properties: | |||
19 | "st,stih415-plls-c32-ddr", "st,clkgen-plls-c32" | 19 | "st,stih415-plls-c32-ddr", "st,clkgen-plls-c32" |
20 | "st,stih416-plls-c32-a9", "st,clkgen-plls-c32" | 20 | "st,stih416-plls-c32-a9", "st,clkgen-plls-c32" |
21 | "st,stih416-plls-c32-ddr", "st,clkgen-plls-c32" | 21 | "st,stih416-plls-c32-ddr", "st,clkgen-plls-c32" |
22 | "st,stih407-plls-c32-a0", "st,clkgen-plls-c32" | ||
23 | "st,stih407-plls-c32-a9", "st,clkgen-plls-c32" | ||
24 | "st,stih407-plls-c32-c0_0", "st,clkgen-plls-c32" | ||
25 | "st,stih407-plls-c32-c0_1", "st,clkgen-plls-c32" | ||
22 | 26 | ||
23 | "st,stih415-gpu-pll-c32", "st,clkgengpu-pll-c32" | 27 | "st,stih415-gpu-pll-c32", "st,clkgengpu-pll-c32" |
24 | "st,stih416-gpu-pll-c32", "st,clkgengpu-pll-c32" | 28 | "st,stih416-gpu-pll-c32", "st,clkgengpu-pll-c32" |
25 | 29 | ||
26 | |||
27 | - #clock-cells : From common clock binding; shall be set to 1. | 30 | - #clock-cells : From common clock binding; shall be set to 1. |
28 | 31 | ||
29 | - clocks : From common clock binding | 32 | - clocks : From common clock binding |
@@ -32,17 +35,17 @@ Required properties: | |||
32 | 35 | ||
33 | Example: | 36 | Example: |
34 | 37 | ||
35 | clockgenA@fee62000 { | 38 | clockgen-a@fee62000 { |
36 | reg = <0xfee62000 0xb48>; | 39 | reg = <0xfee62000 0xb48>; |
37 | 40 | ||
38 | CLK_S_A0_PLL: CLK_S_A0_PLL { | 41 | clk_s_a0_pll: clk-s-a0-pll { |
39 | #clock-cells = <1>; | 42 | #clock-cells = <1>; |
40 | compatible = "st,clkgena-plls-c65"; | 43 | compatible = "st,clkgena-plls-c65"; |
41 | 44 | ||
42 | clocks = <&CLK_SYSIN>; | 45 | clocks = <&clk_sysin>; |
43 | 46 | ||
44 | clock-output-names = "CLK_S_A0_PLL0_HS", | 47 | clock-output-names = "clk-s-a0-pll0-hs", |
45 | "CLK_S_A0_PLL0_LS", | 48 | "clk-s-a0-pll0-ls", |
46 | "CLK_S_A0_PLL1"; | 49 | "clk-s-a0-pll1"; |
47 | }; | 50 | }; |
48 | }; | 51 | }; |
diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-prediv.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-prediv.txt index 566c9d79ed32..604766c2619e 100644 --- a/Documentation/devicetree/bindings/clock/st/st,clkgen-prediv.txt +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-prediv.txt | |||
@@ -20,17 +20,17 @@ Required properties: | |||
20 | 20 | ||
21 | Example: | 21 | Example: |
22 | 22 | ||
23 | clockgenA@fd345000 { | 23 | clockgen-a@fd345000 { |
24 | reg = <0xfd345000 0xb50>; | 24 | reg = <0xfd345000 0xb50>; |
25 | 25 | ||
26 | CLK_M_A2_OSC_PREDIV: CLK_M_A2_OSC_PREDIV { | 26 | clk_m_a2_osc_prediv: clk-m-a2-osc-prediv { |
27 | #clock-cells = <0>; | 27 | #clock-cells = <0>; |
28 | compatible = "st,clkgena-prediv-c32", | 28 | compatible = "st,clkgena-prediv-c32", |
29 | "st,clkgena-prediv"; | 29 | "st,clkgena-prediv"; |
30 | 30 | ||
31 | clocks = <&CLK_SYSIN>; | 31 | clocks = <&clk_sysin>; |
32 | 32 | ||
33 | clock-output-names = "CLK_M_A2_OSC_PREDIV"; | 33 | clock-output-names = "clk-m-a2-osc-prediv"; |
34 | }; | 34 | }; |
35 | }; | 35 | }; |
36 | 36 | ||
diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-vcc.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-vcc.txt index 4e3ff28b04c3..109b3eddcb17 100644 --- a/Documentation/devicetree/bindings/clock/st/st,clkgen-vcc.txt +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-vcc.txt | |||
@@ -32,22 +32,30 @@ Required properties: | |||
32 | 32 | ||
33 | Example: | 33 | Example: |
34 | 34 | ||
35 | CLOCKGEN_C_VCC: CLOCKGEN_C_VCC { | 35 | clockgen_c_vcc: clockgen-c-vcc@0xfe8308ac { |
36 | #clock-cells = <1>; | 36 | #clock-cells = <1>; |
37 | compatible = "st,stih416-clkgenc", "st,clkgen-vcc"; | 37 | compatible = "st,stih416-clkgenc", "st,clkgen-vcc"; |
38 | reg = <0xfe8308ac 12>; | 38 | reg = <0xfe8308ac 12>; |
39 | 39 | ||
40 | clocks = <&CLK_S_VCC_HD>, <&CLOCKGEN_C 1>, | 40 | clocks = <&clk_s_vcc_hd>, |
41 | <&CLK_S_TMDS_FROMPHY>, <&CLOCKGEN_C 2>; | 41 | <&clockgen_c 1>, |
42 | 42 | <&clk_s_tmds_fromphy>, | |
43 | clock-output-names = | 43 | <&clockgen_c 2>; |
44 | "CLK_S_PIX_HDMI", "CLK_S_PIX_DVO", | 44 | |
45 | "CLK_S_OUT_DVO", "CLK_S_PIX_HD", | 45 | clock-output-names = "clk-s-pix-hdmi", |
46 | "CLK_S_HDDAC", "CLK_S_DENC", | 46 | "clk-s-pix-dvo", |
47 | "CLK_S_SDDAC", "CLK_S_PIX_MAIN", | 47 | "clk-s-out-dvo", |
48 | "CLK_S_PIX_AUX", "CLK_S_STFE_FRC_0", | 48 | "clk-s-pix-hd", |
49 | "CLK_S_REF_MCRU", "CLK_S_SLAVE_MCRU", | 49 | "clk-s-hddac", |
50 | "CLK_S_TMDS_HDMI", "CLK_S_HDMI_REJECT_PLL", | 50 | "clk-s-denc", |
51 | "CLK_S_THSENS"; | 51 | "clk-s-sddac", |
52 | "clk-s-pix-main", | ||
53 | "clk-s-pix-aux", | ||
54 | "clk-s-stfe-frc-0", | ||
55 | "clk-s-ref-mcru", | ||
56 | "clk-s-slave-mcru", | ||
57 | "clk-s-tmds-hdmi", | ||
58 | "clk-s-hdmi-reject-pll", | ||
59 | "clk-s-thsens"; | ||
52 | }; | 60 | }; |
53 | 61 | ||
diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen.txt index 49ec5ae18b5b..78978f1f5158 100644 --- a/Documentation/devicetree/bindings/clock/st/st,clkgen.txt +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen.txt | |||
@@ -24,60 +24,77 @@ address is common of all subnode. | |||
24 | quadfs_node { | 24 | quadfs_node { |
25 | ... | 25 | ... |
26 | }; | 26 | }; |
27 | |||
28 | mux_node { | ||
29 | ... | ||
30 | }; | ||
31 | |||
32 | vcc_node { | ||
33 | ... | ||
34 | }; | ||
35 | |||
36 | flexgen_node { | ||
37 | ... | ||
38 | }; | ||
27 | ... | 39 | ... |
28 | }; | 40 | }; |
29 | 41 | ||
30 | This binding uses the common clock binding[1]. | 42 | This binding uses the common clock binding[1]. |
31 | Each subnode should use the binding discribe in [2]..[4] | 43 | Each subnode should use the binding discribe in [2]..[7] |
32 | 44 | ||
33 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | 45 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt |
34 | [2] Documentation/devicetree/bindings/clock/st,quadfs.txt | 46 | [2] Documentation/devicetree/bindings/clock/st,clkgen-divmux.txt |
35 | [3] Documentation/devicetree/bindings/clock/st,quadfs.txt | 47 | [3] Documentation/devicetree/bindings/clock/st,clkgen-mux.txt |
36 | [4] Documentation/devicetree/bindings/clock/st,quadfs.txt | 48 | [4] Documentation/devicetree/bindings/clock/st,clkgen-pll.txt |
49 | [5] Documentation/devicetree/bindings/clock/st,clkgen-prediv.txt | ||
50 | [6] Documentation/devicetree/bindings/clock/st,vcc.txt | ||
51 | [7] Documentation/devicetree/bindings/clock/st,quadfs.txt | ||
52 | [8] Documentation/devicetree/bindings/clock/st,flexgen.txt | ||
53 | |||
37 | 54 | ||
38 | Required properties: | 55 | Required properties: |
39 | - reg : A Base address and length of the register set. | 56 | - reg : A Base address and length of the register set. |
40 | 57 | ||
41 | Example: | 58 | Example: |
42 | 59 | ||
43 | clockgenA@fee62000 { | 60 | clockgen-a@fee62000 { |
44 | 61 | ||
45 | reg = <0xfee62000 0xb48>; | 62 | reg = <0xfee62000 0xb48>; |
46 | 63 | ||
47 | CLK_S_A0_PLL: CLK_S_A0_PLL { | 64 | clk_s_a0_pll: clk-s-a0-pll { |
48 | #clock-cells = <1>; | 65 | #clock-cells = <1>; |
49 | compatible = "st,clkgena-plls-c65"; | 66 | compatible = "st,clkgena-plls-c65"; |
50 | 67 | ||
51 | clocks = <&CLK_SYSIN>; | 68 | clocks = <&clk-sysin>; |
52 | 69 | ||
53 | clock-output-names = "CLK_S_A0_PLL0_HS", | 70 | clock-output-names = "clk-s-a0-pll0-hs", |
54 | "CLK_S_A0_PLL0_LS", | 71 | "clk-s-a0-pll0-ls", |
55 | "CLK_S_A0_PLL1"; | 72 | "clk-s-a0-pll1"; |
56 | }; | 73 | }; |
57 | 74 | ||
58 | CLK_S_A0_OSC_PREDIV: CLK_S_A0_OSC_PREDIV { | 75 | clk_s_a0_osc_prediv: clk-s-a0-osc-prediv { |
59 | #clock-cells = <0>; | 76 | #clock-cells = <0>; |
60 | compatible = "st,clkgena-prediv-c65", | 77 | compatible = "st,clkgena-prediv-c65", |
61 | "st,clkgena-prediv"; | 78 | "st,clkgena-prediv"; |
62 | 79 | ||
63 | clocks = <&CLK_SYSIN>; | 80 | clocks = <&clk_sysin>; |
64 | 81 | ||
65 | clock-output-names = "CLK_S_A0_OSC_PREDIV"; | 82 | clock-output-names = "clk-s-a0-osc-prediv"; |
66 | }; | 83 | }; |
67 | 84 | ||
68 | CLK_S_A0_HS: CLK_S_A0_HS { | 85 | clk_s_a0_hs: clk-s-a0-hs { |
69 | #clock-cells = <1>; | 86 | #clock-cells = <1>; |
70 | compatible = "st,clkgena-divmux-c65-hs", | 87 | compatible = "st,clkgena-divmux-c65-hs", |
71 | "st,clkgena-divmux"; | 88 | "st,clkgena-divmux"; |
72 | 89 | ||
73 | clocks = <&CLK_S_A0_OSC_PREDIV>, | 90 | clocks = <&clk-s_a0_osc_prediv>, |
74 | <&CLK_S_A0_PLL 0>, /* PLL0 HS */ | 91 | <&clk-s_a0_pll 0>, /* pll0 hs */ |
75 | <&CLK_S_A0_PLL 2>; /* PLL1 */ | 92 | <&clk-s_a0_pll 2>; /* pll1 */ |
76 | 93 | ||
77 | clock-output-names = "CLK_S_FDMA_0", | 94 | clock-output-names = "clk-s-fdma-0", |
78 | "CLK_S_FDMA_1", | 95 | "clk-s-fdma-1", |
79 | ""; /* CLK_S_JIT_SENSE */ | 96 | ""; /* clk-s-jit-sense */ |
80 | /* Fourth output unused */ | 97 | /* fourth output unused */ |
81 | }; | 98 | }; |
82 | }; | 99 | }; |
83 | 100 | ||
diff --git a/Documentation/devicetree/bindings/clock/st/st,flexgen.txt b/Documentation/devicetree/bindings/clock/st/st,flexgen.txt new file mode 100644 index 000000000000..1d3ace088172 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,flexgen.txt | |||
@@ -0,0 +1,119 @@ | |||
1 | Binding for a type of flexgen structure found on certain | ||
2 | STMicroelectronics consumer electronics SoC devices | ||
3 | |||
4 | This structure includes: | ||
5 | - a clock cross bar (represented by a mux element) | ||
6 | - a pre and final dividers (represented by a divider and gate elements) | ||
7 | |||
8 | Flexgen structure is a part of Clockgen[1]. | ||
9 | |||
10 | Please find an example below: | ||
11 | |||
12 | Clockgen block diagram | ||
13 | ------------------------------------------------------------------- | ||
14 | | Flexgen stucture | | ||
15 | | --------------------------------------------- | | ||
16 | | | ------- -------- -------- | | | ||
17 | clk_sysin | | | | | | | | | | ||
18 | ---|-----------------|-->| | | | | | | | | ||
19 | | | | | | | | | | | | | ||
20 | | | ------- | | | |Pre | |Final | | | | ||
21 | | | |PLL0 | | | | |Dividers| |Dividers| | | | ||
22 | | |->| | | | | | x32 | | x32 | | | | ||
23 | | | | odf_0|----|-->| | | | | | | | | ||
24 | | | | | | | | | | | | | | | ||
25 | | | | | | | | | | | | | | | ||
26 | | | | | | | | | | | | | | | ||
27 | | | | | | | | | | | | | | | ||
28 | | | ------- | | | | | | | | | | ||
29 | | | | | | | | | | | | | ||
30 | | | ------- | | Clock | | | | | | | | ||
31 | | | |PLL1 | | | | | | | | | | | ||
32 | | |->| | | | Cross | | | | | | | | ||
33 | | | | odf_0|----|-->| | | | | | CLK_DIV[31:0] | ||
34 | | | | | | | Bar |====>| |====>| |===|=========> | ||
35 | | | | | | | | | | | | | | | ||
36 | | | | | | | | | | | | | | | ||
37 | | | | | | | | | | | | | | | ||
38 | | | ------- | | | | | | | | | | ||
39 | | | | | | | | | | | | | ||
40 | | | ------- | | | | | | | | | | ||
41 | | | |QUADFS | | | | | | | | | | | ||
42 | | |->| ch0|----|-->| | | | | | | | | ||
43 | | | | | | | | | | | | | | ||
44 | | | ch1|----|-->| | | | | | | | | ||
45 | | | | | | | | | | | | | | ||
46 | | | ch2|----|-->| | | DIV | | DIV | | | | ||
47 | | | | | | | | 1 to | | 1 to | | | | ||
48 | | | ch3|----|-->| | | 1024 | | 64 | | | | ||
49 | | ------- | | | | | | | | | | ||
50 | | | ------- -------- -------- | | | ||
51 | | -------------------------------------------- | | ||
52 | | | | ||
53 | ------------------------------------------------------------------- | ||
54 | |||
55 | This binding uses the common clock binding[2]. | ||
56 | |||
57 | [1] Documentation/devicetree/bindings/clock/st/st,clkgen.txt | ||
58 | [2] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
59 | |||
60 | Required properties: | ||
61 | - compatible : shall be: | ||
62 | "st,flexgen" | ||
63 | |||
64 | - #clock-cells : from common clock binding; shall be set to 1 (multiple clock | ||
65 | outputs). | ||
66 | |||
67 | - clocks : must be set to the parent's phandle. it's could be output clocks of | ||
68 | a quadsfs or/and a pll or/and clk_sysin (up to 7 clocks) | ||
69 | |||
70 | - clock-output-names : List of strings used to name the clock outputs. | ||
71 | |||
72 | Example: | ||
73 | |||
74 | clk_s_c0_flexgen: clk-s-c0-flexgen { | ||
75 | |||
76 | #clock-cells = <1>; | ||
77 | compatible = "st,flexgen"; | ||
78 | |||
79 | clocks = <&clk_s_c0_pll0 0>, | ||
80 | <&clk_s_c0_pll1 0>, | ||
81 | <&clk_s_c0_quadfs 0>, | ||
82 | <&clk_s_c0_quadfs 1>, | ||
83 | <&clk_s_c0_quadfs 2>, | ||
84 | <&clk_s_c0_quadfs 3>, | ||
85 | <&clk_sysin>; | ||
86 | |||
87 | clock-output-names = "clk-icn-gpu", | ||
88 | "clk-fdma", | ||
89 | "clk-nand", | ||
90 | "clk-hva", | ||
91 | "clk-proc-stfe", | ||
92 | "clk-proc-tp", | ||
93 | "clk-rx-icn-dmu", | ||
94 | "clk-rx-icn-hva", | ||
95 | "clk-icn-cpu", | ||
96 | "clk-tx-icn-dmu", | ||
97 | "clk-mmc-0", | ||
98 | "clk-mmc-1", | ||
99 | "clk-jpegdec", | ||
100 | "clk-ext2fa9", | ||
101 | "clk-ic-bdisp-0", | ||
102 | "clk-ic-bdisp-1", | ||
103 | "clk-pp-dmu", | ||
104 | "clk-vid-dmu", | ||
105 | "clk-dss-lpc", | ||
106 | "clk-st231-aud-0", | ||
107 | "clk-st231-gp-1", | ||
108 | "clk-st231-dmu", | ||
109 | "clk-icn-lmi", | ||
110 | "clk-tx-icn-disp-1", | ||
111 | "clk-icn-sbc", | ||
112 | "clk-stfe-frc2", | ||
113 | "clk-eth-phy", | ||
114 | "clk-eth-ref-phyclk", | ||
115 | "clk-flash-promip", | ||
116 | "clk-main-disp", | ||
117 | "clk-aux-disp", | ||
118 | "clk-compo-dvp"; | ||
119 | }; | ||
diff --git a/Documentation/devicetree/bindings/clock/st/st,quadfs.txt b/Documentation/devicetree/bindings/clock/st/st,quadfs.txt index ec86d62ca283..cedeb9cc8208 100644 --- a/Documentation/devicetree/bindings/clock/st/st,quadfs.txt +++ b/Documentation/devicetree/bindings/clock/st/st,quadfs.txt | |||
@@ -15,6 +15,9 @@ Required properties: | |||
15 | "st,stih416-quadfs432", "st,quadfs" | 15 | "st,stih416-quadfs432", "st,quadfs" |
16 | "st,stih416-quadfs660-E", "st,quadfs" | 16 | "st,stih416-quadfs660-E", "st,quadfs" |
17 | "st,stih416-quadfs660-F", "st,quadfs" | 17 | "st,stih416-quadfs660-F", "st,quadfs" |
18 | "st,stih407-quadfs660-C", "st,quadfs" | ||
19 | "st,stih407-quadfs660-D", "st,quadfs" | ||
20 | |||
18 | 21 | ||
19 | - #clock-cells : from common clock binding; shall be set to 1. | 22 | - #clock-cells : from common clock binding; shall be set to 1. |
20 | 23 | ||
@@ -32,14 +35,14 @@ Required properties: | |||
32 | 35 | ||
33 | Example: | 36 | Example: |
34 | 37 | ||
35 | CLOCKGEN_E: CLOCKGEN_E { | 38 | clockgen_e: clockgen-e@fd3208bc { |
36 | #clock-cells = <1>; | 39 | #clock-cells = <1>; |
37 | compatible = "st,stih416-quadfs660-E", "st,quadfs"; | 40 | compatible = "st,stih416-quadfs660-E", "st,quadfs"; |
38 | reg = <0xfd3208bc 0xB0>; | 41 | reg = <0xfd3208bc 0xB0>; |
39 | 42 | ||
40 | clocks = <&CLK_SYSIN>; | 43 | clocks = <&clk_sysin>; |
41 | clock-output-names = "CLK_M_PIX_MDTP_0", | 44 | clock-output-names = "clk-m-pix-mdtp-0", |
42 | "CLK_M_PIX_MDTP_1", | 45 | "clk-m-pix-mdtp-1", |
43 | "CLK_M_PIX_MDTP_2", | 46 | "clk-m-pix-mdtp-2", |
44 | "CLK_M_MPELPC"; | 47 | "clk-m-mpelpc"; |
45 | }; | 48 | }; |
diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt index b9ec668bfe62..d3a5c3c6d677 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt | |||
@@ -9,11 +9,13 @@ Required properties: | |||
9 | "allwinner,sun4i-a10-osc-clk" - for a gatable oscillator | 9 | "allwinner,sun4i-a10-osc-clk" - for a gatable oscillator |
10 | "allwinner,sun4i-a10-pll1-clk" - for the main PLL clock and PLL4 | 10 | "allwinner,sun4i-a10-pll1-clk" - for the main PLL clock and PLL4 |
11 | "allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31 | 11 | "allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31 |
12 | "allwinner,sun8i-a23-pll1-clk" - for the main PLL clock on A23 | ||
12 | "allwinner,sun4i-a10-pll5-clk" - for the PLL5 clock | 13 | "allwinner,sun4i-a10-pll5-clk" - for the PLL5 clock |
13 | "allwinner,sun4i-a10-pll6-clk" - for the PLL6 clock | 14 | "allwinner,sun4i-a10-pll6-clk" - for the PLL6 clock |
14 | "allwinner,sun6i-a31-pll6-clk" - for the PLL6 clock on A31 | 15 | "allwinner,sun6i-a31-pll6-clk" - for the PLL6 clock on A31 |
15 | "allwinner,sun4i-a10-cpu-clk" - for the CPU multiplexer clock | 16 | "allwinner,sun4i-a10-cpu-clk" - for the CPU multiplexer clock |
16 | "allwinner,sun4i-a10-axi-clk" - for the AXI clock | 17 | "allwinner,sun4i-a10-axi-clk" - for the AXI clock |
18 | "allwinner,sun8i-a23-axi-clk" - for the AXI clock on A23 | ||
17 | "allwinner,sun4i-a10-axi-gates-clk" - for the AXI gates | 19 | "allwinner,sun4i-a10-axi-gates-clk" - for the AXI gates |
18 | "allwinner,sun4i-a10-ahb-clk" - for the AHB clock | 20 | "allwinner,sun4i-a10-ahb-clk" - for the AHB clock |
19 | "allwinner,sun4i-a10-ahb-gates-clk" - for the AHB gates on A10 | 21 | "allwinner,sun4i-a10-ahb-gates-clk" - for the AHB gates on A10 |
@@ -23,13 +25,16 @@ Required properties: | |||
23 | "allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 | 25 | "allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 |
24 | "allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31 | 26 | "allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31 |
25 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 | 27 | "allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 |
28 | "allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 | ||
26 | "allwinner,sun4i-a10-apb0-clk" - for the APB0 clock | 29 | "allwinner,sun4i-a10-apb0-clk" - for the APB0 clock |
27 | "allwinner,sun6i-a31-apb0-clk" - for the APB0 clock on A31 | 30 | "allwinner,sun6i-a31-apb0-clk" - for the APB0 clock on A31 |
31 | "allwinner,sun8i-a23-apb0-clk" - for the APB0 clock on A23 | ||
28 | "allwinner,sun4i-a10-apb0-gates-clk" - for the APB0 gates on A10 | 32 | "allwinner,sun4i-a10-apb0-gates-clk" - for the APB0 gates on A10 |
29 | "allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13 | 33 | "allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13 |
30 | "allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s | 34 | "allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s |
31 | "allwinner,sun6i-a31-apb0-gates-clk" - for the APB0 gates on A31 | 35 | "allwinner,sun6i-a31-apb0-gates-clk" - for the APB0 gates on A31 |
32 | "allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20 | 36 | "allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20 |
37 | "allwinner,sun8i-a23-apb0-gates-clk" - for the APB0 gates on A23 | ||
33 | "allwinner,sun4i-a10-apb1-clk" - for the APB1 clock | 38 | "allwinner,sun4i-a10-apb1-clk" - for the APB1 clock |
34 | "allwinner,sun4i-a10-apb1-mux-clk" - for the APB1 clock muxing | 39 | "allwinner,sun4i-a10-apb1-mux-clk" - for the APB1 clock muxing |
35 | "allwinner,sun4i-a10-apb1-gates-clk" - for the APB1 gates on A10 | 40 | "allwinner,sun4i-a10-apb1-gates-clk" - for the APB1 gates on A10 |
@@ -37,8 +42,10 @@ Required properties: | |||
37 | "allwinner,sun5i-a10s-apb1-gates-clk" - for the APB1 gates on A10s | 42 | "allwinner,sun5i-a10s-apb1-gates-clk" - for the APB1 gates on A10s |
38 | "allwinner,sun6i-a31-apb1-gates-clk" - for the APB1 gates on A31 | 43 | "allwinner,sun6i-a31-apb1-gates-clk" - for the APB1 gates on A31 |
39 | "allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20 | 44 | "allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20 |
45 | "allwinner,sun8i-a23-apb1-gates-clk" - for the APB1 gates on A23 | ||
40 | "allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31 | 46 | "allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31 |
41 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 | 47 | "allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 |
48 | "allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 | ||
42 | "allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks | 49 | "allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks |
43 | "allwinner,sun7i-a20-out-clk" - for the external output clocks | 50 | "allwinner,sun7i-a20-out-clk" - for the external output clocks |
44 | "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 | 51 | "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 |
diff --git a/Documentation/devicetree/bindings/crypto/amd-ccp.txt b/Documentation/devicetree/bindings/crypto/amd-ccp.txt new file mode 100644 index 000000000000..8c61183b41e0 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/amd-ccp.txt | |||
@@ -0,0 +1,19 @@ | |||
1 | * AMD Cryptographic Coprocessor driver (ccp) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "amd,ccp-seattle-v1a" | ||
5 | - reg: Address and length of the register set for the device | ||
6 | - interrupt-parent: Should be the phandle for the interrupt controller | ||
7 | that services interrupts for this device | ||
8 | - interrupts: Should contain the CCP interrupt | ||
9 | |||
10 | Optional properties: | ||
11 | - dma-coherent: Present if dma operations are coherent | ||
12 | |||
13 | Example: | ||
14 | ccp@e0100000 { | ||
15 | compatible = "amd,ccp-seattle-v1a"; | ||
16 | reg = <0 0xe0100000 0 0x10000>; | ||
17 | interrupt-parent = <&gic>; | ||
18 | interrupts = <0 3 4>; | ||
19 | }; | ||
diff --git a/Documentation/devicetree/bindings/crypto/qcom-qce.txt b/Documentation/devicetree/bindings/crypto/qcom-qce.txt new file mode 100644 index 000000000000..fdd53b184ba8 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/qcom-qce.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | Qualcomm crypto engine driver | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : should be "qcom,crypto-v5.1" | ||
6 | - reg : specifies base physical address and size of the registers map | ||
7 | - clocks : phandle to clock-controller plus clock-specifier pair | ||
8 | - clock-names : "iface" clocks register interface | ||
9 | "bus" clocks data transfer interface | ||
10 | "core" clocks rest of the crypto block | ||
11 | - dmas : DMA specifiers for tx and rx dma channels. For more see | ||
12 | Documentation/devicetree/bindings/dma/dma.txt | ||
13 | - dma-names : DMA request names should be "rx" and "tx" | ||
14 | |||
15 | Example: | ||
16 | crypto@fd45a000 { | ||
17 | compatible = "qcom,crypto-v5.1"; | ||
18 | reg = <0xfd45a000 0x6000>; | ||
19 | clocks = <&gcc GCC_CE2_AHB_CLK>, | ||
20 | <&gcc GCC_CE2_AXI_CLK>, | ||
21 | <&gcc GCC_CE2_CLK>; | ||
22 | clock-names = "iface", "bus", "core"; | ||
23 | dmas = <&cryptobam 2>, <&cryptobam 3>; | ||
24 | dma-names = "rx", "tx"; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt index e577196a12c0..4659fd952301 100644 --- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt | |||
@@ -47,6 +47,7 @@ The full ID of peripheral types can be found below. | |||
47 | 20 ASRC | 47 | 20 ASRC |
48 | 21 ESAI | 48 | 21 ESAI |
49 | 22 SSI Dual FIFO (needs firmware ver >= 2) | 49 | 22 SSI Dual FIFO (needs firmware ver >= 2) |
50 | 23 Shared ASRC | ||
50 | 51 | ||
51 | The third cell specifies the transfer priority as below. | 52 | The third cell specifies the transfer priority as below. |
52 | 53 | ||
diff --git a/Documentation/devicetree/bindings/dma/mpc512x-dma.txt b/Documentation/devicetree/bindings/dma/mpc512x-dma.txt new file mode 100644 index 000000000000..a6511df165c5 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/mpc512x-dma.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | * Freescale MPC512x and MPC8308 DMA Controller | ||
2 | |||
3 | The DMA controller in Freescale MPC512x and MPC8308 SoCs can move | ||
4 | blocks of memory contents between memory and peripherals or | ||
5 | from memory to memory. | ||
6 | |||
7 | Refer to "Generic DMA Controller and DMA request bindings" in | ||
8 | the dma/dma.txt file for a more detailed description of binding. | ||
9 | |||
10 | Required properties: | ||
11 | - compatible: should be "fsl,mpc5121-dma" or "fsl,mpc8308-dma"; | ||
12 | - reg: should contain the DMA controller registers location and length; | ||
13 | - interrupt for the DMA controller: syntax of interrupt client node | ||
14 | is described in interrupt-controller/interrupts.txt file. | ||
15 | - #dma-cells: the length of the DMA specifier, must be <1>. | ||
16 | Each channel of this DMA controller has a peripheral request line, | ||
17 | the assignment is fixed in hardware. This one cell | ||
18 | in dmas property of a client device represents the channel number. | ||
19 | |||
20 | Example: | ||
21 | |||
22 | dma0: dma@14000 { | ||
23 | compatible = "fsl,mpc5121-dma"; | ||
24 | reg = <0x14000 0x1800>; | ||
25 | interrupts = <65 0x8>; | ||
26 | #dma-cells = <1>; | ||
27 | }; | ||
28 | |||
29 | DMA clients must use the format described in dma/dma.txt file. | ||
diff --git a/Documentation/devicetree/bindings/dma/nbpfaxi.txt b/Documentation/devicetree/bindings/dma/nbpfaxi.txt new file mode 100644 index 000000000000..d5e2522b9ec1 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/nbpfaxi.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | * Renesas "Type-AXI" NBPFAXI* DMA controllers | ||
2 | |||
3 | * DMA controller | ||
4 | |||
5 | Required properties | ||
6 | |||
7 | - compatible: must be one of | ||
8 | "renesas,nbpfaxi64dmac1b4" | ||
9 | "renesas,nbpfaxi64dmac1b8" | ||
10 | "renesas,nbpfaxi64dmac1b16" | ||
11 | "renesas,nbpfaxi64dmac4b4" | ||
12 | "renesas,nbpfaxi64dmac4b8" | ||
13 | "renesas,nbpfaxi64dmac4b16" | ||
14 | "renesas,nbpfaxi64dmac8b4" | ||
15 | "renesas,nbpfaxi64dmac8b8" | ||
16 | "renesas,nbpfaxi64dmac8b16" | ||
17 | - #dma-cells: must be 2: the first integer is a terminal number, to which this | ||
18 | slave is connected, the second one is flags. Flags is a bitmask | ||
19 | with the following bits defined: | ||
20 | |||
21 | #define NBPF_SLAVE_RQ_HIGH 1 | ||
22 | #define NBPF_SLAVE_RQ_LOW 2 | ||
23 | #define NBPF_SLAVE_RQ_LEVEL 4 | ||
24 | |||
25 | Optional properties: | ||
26 | |||
27 | You can use dma-channels and dma-requests as described in dma.txt, although they | ||
28 | won't be used, this information is derived from the compatibility string. | ||
29 | |||
30 | Example: | ||
31 | |||
32 | dma: dma-controller@48000000 { | ||
33 | compatible = "renesas,nbpfaxi64dmac8b4"; | ||
34 | reg = <0x48000000 0x400>; | ||
35 | interrupts = <0 12 0x4 | ||
36 | 0 13 0x4 | ||
37 | 0 14 0x4 | ||
38 | 0 15 0x4 | ||
39 | 0 16 0x4 | ||
40 | 0 17 0x4 | ||
41 | 0 18 0x4 | ||
42 | 0 19 0x4>; | ||
43 | #dma-cells = <2>; | ||
44 | dma-channels = <8>; | ||
45 | dma-requests = <8>; | ||
46 | }; | ||
47 | |||
48 | * DMA client | ||
49 | |||
50 | Required properties: | ||
51 | |||
52 | dmas and dma-names are required, as described in dma.txt. | ||
53 | |||
54 | Example: | ||
55 | |||
56 | #include <dt-bindings/dma/nbpfaxi.h> | ||
57 | |||
58 | ... | ||
59 | dmas = <&dma 0 (NBPF_SLAVE_RQ_HIGH | NBPF_SLAVE_RQ_LEVEL) | ||
60 | &dma 1 (NBPF_SLAVE_RQ_HIGH | NBPF_SLAVE_RQ_LEVEL)>; | ||
61 | dma-names = "rx", "tx"; | ||
diff --git a/Documentation/devicetree/bindings/dma/rcar-audmapp.txt b/Documentation/devicetree/bindings/dma/rcar-audmapp.txt new file mode 100644 index 000000000000..9f1d750d76de --- /dev/null +++ b/Documentation/devicetree/bindings/dma/rcar-audmapp.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | * R-Car Audio DMAC peri peri Device Tree bindings | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "renesas,rcar-audmapp" | ||
5 | - #dma-cells: should be <1>, see "dmas" property below | ||
6 | |||
7 | Example: | ||
8 | audmapp: audio-dma-pp@0xec740000 { | ||
9 | compatible = "renesas,rcar-audmapp"; | ||
10 | #dma-cells = <1>; | ||
11 | |||
12 | reg = <0 0xec740000 0 0x200>; | ||
13 | }; | ||
14 | |||
15 | |||
16 | * DMA client | ||
17 | |||
18 | Required properties: | ||
19 | - dmas: a list of <[DMA multiplexer phandle] [SRS/DRS value]> pairs, | ||
20 | where SRS/DRS values are fixed handles, specified in the SoC | ||
21 | manual as the value that would be written into the PDMACHCR. | ||
22 | - dma-names: a list of DMA channel names, one per "dmas" entry | ||
23 | |||
24 | Example: | ||
25 | |||
26 | dmas = <&audmapp 0x2d00 | ||
27 | &audmapp 0x3700>; | ||
28 | dma-names = "src0_ssiu0", | ||
29 | "dvc0_ssiu0"; | ||
diff --git a/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt new file mode 100644 index 000000000000..df0f48bcf75a --- /dev/null +++ b/Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt | |||
@@ -0,0 +1,98 @@ | |||
1 | * Renesas R-Car DMA Controller Device Tree bindings | ||
2 | |||
3 | Renesas R-Car Generation 2 SoCs have have multiple multi-channel DMA | ||
4 | controller instances named DMAC capable of serving multiple clients. Channels | ||
5 | can be dedicated to specific clients or shared between a large number of | ||
6 | clients. | ||
7 | |||
8 | DMA clients are connected to the DMAC ports referenced by an 8-bit identifier | ||
9 | called MID/RID. | ||
10 | |||
11 | Each DMA client is connected to one dedicated port of the DMAC, identified by | ||
12 | an 8-bit port number called the MID/RID. A DMA controller can thus serve up to | ||
13 | 256 clients in total. When the number of hardware channels is lower than the | ||
14 | number of clients to be served, channels must be shared between multiple DMA | ||
15 | clients. The association of DMA clients to DMAC channels is fully dynamic and | ||
16 | not described in these device tree bindings. | ||
17 | |||
18 | Required Properties: | ||
19 | |||
20 | - compatible: must contain "renesas,rcar-dmac" | ||
21 | |||
22 | - reg: base address and length of the registers block for the DMAC | ||
23 | |||
24 | - interrupts: interrupt specifiers for the DMAC, one for each entry in | ||
25 | interrupt-names. | ||
26 | - interrupt-names: one entry per channel, named "ch%u", where %u is the | ||
27 | channel number ranging from zero to the number of channels minus one. | ||
28 | |||
29 | - clock-names: "fck" for the functional clock | ||
30 | - clocks: a list of phandle + clock-specifier pairs, one for each entry | ||
31 | in clock-names. | ||
32 | - clock-names: must contain "fck" for the functional clock. | ||
33 | |||
34 | - #dma-cells: must be <1>, the cell specifies the MID/RID of the DMAC port | ||
35 | connected to the DMA client | ||
36 | - dma-channels: number of DMA channels | ||
37 | |||
38 | Example: R8A7790 (R-Car H2) SYS-DMACs | ||
39 | |||
40 | dmac0: dma-controller@e6700000 { | ||
41 | compatible = "renesas,rcar-dmac"; | ||
42 | reg = <0 0xe6700000 0 0x20000>; | ||
43 | interrupts = <0 197 IRQ_TYPE_LEVEL_HIGH | ||
44 | 0 200 IRQ_TYPE_LEVEL_HIGH | ||
45 | 0 201 IRQ_TYPE_LEVEL_HIGH | ||
46 | 0 202 IRQ_TYPE_LEVEL_HIGH | ||
47 | 0 203 IRQ_TYPE_LEVEL_HIGH | ||
48 | 0 204 IRQ_TYPE_LEVEL_HIGH | ||
49 | 0 205 IRQ_TYPE_LEVEL_HIGH | ||
50 | 0 206 IRQ_TYPE_LEVEL_HIGH | ||
51 | 0 207 IRQ_TYPE_LEVEL_HIGH | ||
52 | 0 208 IRQ_TYPE_LEVEL_HIGH | ||
53 | 0 209 IRQ_TYPE_LEVEL_HIGH | ||
54 | 0 210 IRQ_TYPE_LEVEL_HIGH | ||
55 | 0 211 IRQ_TYPE_LEVEL_HIGH | ||
56 | 0 212 IRQ_TYPE_LEVEL_HIGH | ||
57 | 0 213 IRQ_TYPE_LEVEL_HIGH | ||
58 | 0 214 IRQ_TYPE_LEVEL_HIGH>; | ||
59 | interrupt-names = "error", | ||
60 | "ch0", "ch1", "ch2", "ch3", | ||
61 | "ch4", "ch5", "ch6", "ch7", | ||
62 | "ch8", "ch9", "ch10", "ch11", | ||
63 | "ch12", "ch13", "ch14"; | ||
64 | clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC0>; | ||
65 | clock-names = "fck"; | ||
66 | #dma-cells = <1>; | ||
67 | dma-channels = <15>; | ||
68 | }; | ||
69 | |||
70 | dmac1: dma-controller@e6720000 { | ||
71 | compatible = "renesas,rcar-dmac"; | ||
72 | reg = <0 0xe6720000 0 0x20000>; | ||
73 | interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH | ||
74 | 0 216 IRQ_TYPE_LEVEL_HIGH | ||
75 | 0 217 IRQ_TYPE_LEVEL_HIGH | ||
76 | 0 218 IRQ_TYPE_LEVEL_HIGH | ||
77 | 0 219 IRQ_TYPE_LEVEL_HIGH | ||
78 | 0 308 IRQ_TYPE_LEVEL_HIGH | ||
79 | 0 309 IRQ_TYPE_LEVEL_HIGH | ||
80 | 0 310 IRQ_TYPE_LEVEL_HIGH | ||
81 | 0 311 IRQ_TYPE_LEVEL_HIGH | ||
82 | 0 312 IRQ_TYPE_LEVEL_HIGH | ||
83 | 0 313 IRQ_TYPE_LEVEL_HIGH | ||
84 | 0 314 IRQ_TYPE_LEVEL_HIGH | ||
85 | 0 315 IRQ_TYPE_LEVEL_HIGH | ||
86 | 0 316 IRQ_TYPE_LEVEL_HIGH | ||
87 | 0 317 IRQ_TYPE_LEVEL_HIGH | ||
88 | 0 318 IRQ_TYPE_LEVEL_HIGH>; | ||
89 | interrupt-names = "error", | ||
90 | "ch0", "ch1", "ch2", "ch3", | ||
91 | "ch4", "ch5", "ch6", "ch7", | ||
92 | "ch8", "ch9", "ch10", "ch11", | ||
93 | "ch12", "ch13", "ch14"; | ||
94 | clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC1>; | ||
95 | clock-names = "fck"; | ||
96 | #dma-cells = <1>; | ||
97 | dma-channels = <15>; | ||
98 | }; | ||
diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt index 1f5729f10621..95800ab37bb0 100644 --- a/Documentation/devicetree/bindings/dma/ste-dma40.txt +++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt | |||
@@ -35,9 +35,11 @@ Required properties: | |||
35 | 35 | ||
36 | Each dmas request consists of 4 cells: | 36 | 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 signal number, the signal line for single and burst requests |
39 | connected from the device to the DMA40 engine | ||
39 | 3. The DMA request line number (only when 'use fixed channel' is set) | 40 | 3. The DMA request line number (only when 'use fixed channel' is set) |
40 | 4. A 32bit mask specifying; mode, direction and endianness [NB: This list will grow] | 41 | 4. A 32bit mask specifying; mode, direction and endianness |
42 | [NB: This list will grow] | ||
41 | 0x00000001: Mode: | 43 | 0x00000001: Mode: |
42 | Logical channel when unset | 44 | Logical channel when unset |
43 | Physical channel when set | 45 | Physical channel when set |
@@ -54,6 +56,74 @@ Each dmas request consists of 4 cells: | |||
54 | Normal priority when unset | 56 | Normal priority when unset |
55 | High priority when set | 57 | High priority when set |
56 | 58 | ||
59 | Existing signal numbers for the DB8500 ASIC. Unless specified, the signals are | ||
60 | bidirectional, i.e. the same for RX and TX operations: | ||
61 | |||
62 | 0: SPI controller 0 | ||
63 | 1: SD/MMC controller 0 (unused) | ||
64 | 2: SD/MMC controller 1 (unused) | ||
65 | 3: SD/MMC controller 2 (unused) | ||
66 | 4: I2C port 1 | ||
67 | 5: I2C port 3 | ||
68 | 6: I2C port 2 | ||
69 | 7: I2C port 4 | ||
70 | 8: Synchronous Serial Port SSP0 | ||
71 | 9: Synchronous Serial Port SSP1 | ||
72 | 10: Multi-Channel Display Engine MCDE RX | ||
73 | 11: UART port 2 | ||
74 | 12: UART port 1 | ||
75 | 13: UART port 0 | ||
76 | 14: Multirate Serial Port MSP2 | ||
77 | 15: I2C port 0 | ||
78 | 16: USB OTG in/out endpoints 7 & 15 | ||
79 | 17: USB OTG in/out endpoints 6 & 14 | ||
80 | 18: USB OTG in/out endpoints 5 & 13 | ||
81 | 19: USB OTG in/out endpoints 4 & 12 | ||
82 | 20: SLIMbus or HSI channel 0 | ||
83 | 21: SLIMbus or HSI channel 1 | ||
84 | 22: SLIMbus or HSI channel 2 | ||
85 | 23: SLIMbus or HSI channel 3 | ||
86 | 24: Multimedia DSP SXA0 | ||
87 | 25: Multimedia DSP SXA1 | ||
88 | 26: Multimedia DSP SXA2 | ||
89 | 27: Multimedia DSP SXA3 | ||
90 | 28: SD/MM controller 2 | ||
91 | 29: SD/MM controller 0 | ||
92 | 30: MSP port 1 on DB8500 v1, MSP port 3 on DB8500 v2 | ||
93 | 31: MSP port 0 or SLIMbus channel 0 | ||
94 | 32: SD/MM controller 1 | ||
95 | 33: SPI controller 2 | ||
96 | 34: i2c3 RX2 TX2 | ||
97 | 35: SPI controller 1 | ||
98 | 36: USB OTG in/out endpoints 3 & 11 | ||
99 | 37: USB OTG in/out endpoints 2 & 10 | ||
100 | 38: USB OTG in/out endpoints 1 & 9 | ||
101 | 39: USB OTG in/out endpoints 8 | ||
102 | 40: SPI controller 3 | ||
103 | 41: SD/MM controller 3 | ||
104 | 42: SD/MM controller 4 | ||
105 | 43: SD/MM controller 5 | ||
106 | 44: Multimedia DSP SXA4 | ||
107 | 45: Multimedia DSP SXA5 | ||
108 | 46: SLIMbus channel 8 or Multimedia DSP SXA6 | ||
109 | 47: SLIMbus channel 9 or Multimedia DSP SXA7 | ||
110 | 48: Crypto Accelerator 1 | ||
111 | 49: Crypto Accelerator 1 TX or Hash Accelerator 1 TX | ||
112 | 50: Hash Accelerator 1 TX | ||
113 | 51: memcpy TX (to be used by the DMA driver for memcpy operations) | ||
114 | 52: SLIMbus or HSI channel 4 | ||
115 | 53: SLIMbus or HSI channel 5 | ||
116 | 54: SLIMbus or HSI channel 6 | ||
117 | 55: SLIMbus or HSI channel 7 | ||
118 | 56: memcpy (to be used by the DMA driver for memcpy operations) | ||
119 | 57: memcpy (to be used by the DMA driver for memcpy operations) | ||
120 | 58: memcpy (to be used by the DMA driver for memcpy operations) | ||
121 | 59: memcpy (to be used by the DMA driver for memcpy operations) | ||
122 | 60: memcpy (to be used by the DMA driver for memcpy operations) | ||
123 | 61: Crypto Accelerator 0 | ||
124 | 62: Crypto Accelerator 0 TX or Hash Accelerator 0 TX | ||
125 | 63: Hash Accelerator 0 TX | ||
126 | |||
57 | Example: | 127 | Example: |
58 | 128 | ||
59 | uart@80120000 { | 129 | uart@80120000 { |
diff --git a/Documentation/devicetree/bindings/dma/sun6i-dma.txt b/Documentation/devicetree/bindings/dma/sun6i-dma.txt new file mode 100644 index 000000000000..3e145c1675b1 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/sun6i-dma.txt | |||
@@ -0,0 +1,45 @@ | |||
1 | Allwinner A31 DMA Controller | ||
2 | |||
3 | This driver follows the generic DMA bindings defined in dma.txt. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible: Must be "allwinner,sun6i-a31-dma" | ||
8 | - reg: Should contain the registers base address and length | ||
9 | - interrupts: Should contain a reference to the interrupt used by this device | ||
10 | - clocks: Should contain a reference to the parent AHB clock | ||
11 | - resets: Should contain a reference to the reset controller asserting | ||
12 | this device in reset | ||
13 | - #dma-cells : Should be 1, a single cell holding a line request number | ||
14 | |||
15 | Example: | ||
16 | dma: dma-controller@01c02000 { | ||
17 | compatible = "allwinner,sun6i-a31-dma"; | ||
18 | reg = <0x01c02000 0x1000>; | ||
19 | interrupts = <0 50 4>; | ||
20 | clocks = <&ahb1_gates 6>; | ||
21 | resets = <&ahb1_rst 6>; | ||
22 | #dma-cells = <1>; | ||
23 | }; | ||
24 | |||
25 | Clients: | ||
26 | |||
27 | DMA clients connected to the A31 DMA controller must use the format | ||
28 | described in the dma.txt file, using a two-cell specifier for each | ||
29 | channel: a phandle plus one integer cells. | ||
30 | The two cells in order are: | ||
31 | |||
32 | 1. A phandle pointing to the DMA controller. | ||
33 | 2. The port ID as specified in the datasheet | ||
34 | |||
35 | Example: | ||
36 | spi2: spi@01c6a000 { | ||
37 | compatible = "allwinner,sun6i-a31-spi"; | ||
38 | reg = <0x01c6a000 0x1000>; | ||
39 | interrupts = <0 67 4>; | ||
40 | clocks = <&ahb1_gates 22>, <&spi2_clk>; | ||
41 | clock-names = "ahb", "mod"; | ||
42 | dmas = <&dma 25>, <&dma 25>; | ||
43 | dma-names = "rx", "tx"; | ||
44 | resets = <&ahb1_rst 22>; | ||
45 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/armada/marvell,dove-lcd.txt b/Documentation/devicetree/bindings/drm/armada/marvell,dove-lcd.txt new file mode 100644 index 000000000000..46525ea3e646 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/armada/marvell,dove-lcd.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | Device Tree bindings for Armada DRM CRTC driver | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: value should be "marvell,dove-lcd". | ||
5 | - reg: base address and size of the LCD controller | ||
6 | - interrupts: single interrupt number for the LCD controller | ||
7 | - port: video output port with endpoints, as described by graph.txt | ||
8 | |||
9 | Optional properties: | ||
10 | |||
11 | - clocks: as described by clock-bindings.txt | ||
12 | - clock-names: as described by clock-bindings.txt | ||
13 | "axiclk" - axi bus clock for pixel clock | ||
14 | "plldivider" - pll divider clock for pixel clock | ||
15 | "ext_ref_clk0" - external clock 0 for pixel clock | ||
16 | "ext_ref_clk1" - external clock 1 for pixel clock | ||
17 | |||
18 | Note: all clocks are optional but at least one must be specified. | ||
19 | Further clocks may be added in the future according to requirements of | ||
20 | different SoCs. | ||
21 | |||
22 | Example: | ||
23 | |||
24 | lcd0: lcd-controller@820000 { | ||
25 | compatible = "marvell,dove-lcd"; | ||
26 | reg = <0x820000 0x1000>; | ||
27 | interrupts = <47>; | ||
28 | clocks = <&si5351 0>; | ||
29 | clock-names = "ext_ref_clk_1"; | ||
30 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/i2c/tda998x.txt b/Documentation/devicetree/bindings/drm/i2c/tda998x.txt index d7df01c5bb3a..e9e4bce40760 100644 --- a/Documentation/devicetree/bindings/drm/i2c/tda998x.txt +++ b/Documentation/devicetree/bindings/drm/i2c/tda998x.txt | |||
@@ -3,6 +3,8 @@ Device-Tree bindings for the NXP TDA998x HDMI transmitter | |||
3 | Required properties; | 3 | Required properties; |
4 | - compatible: must be "nxp,tda998x" | 4 | - compatible: must be "nxp,tda998x" |
5 | 5 | ||
6 | - reg: I2C address | ||
7 | |||
6 | Optional properties: | 8 | Optional properties: |
7 | - interrupts: interrupt number and trigger type | 9 | - interrupts: interrupt number and trigger type |
8 | default: polling | 10 | default: polling |
diff --git a/Documentation/devicetree/bindings/drm/msm/gpu.txt b/Documentation/devicetree/bindings/drm/msm/gpu.txt new file mode 100644 index 000000000000..67d0a58dbb77 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/msm/gpu.txt | |||
@@ -0,0 +1,52 @@ | |||
1 | Qualcomm adreno/snapdragon GPU | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "qcom,adreno-3xx" | ||
5 | - reg: Physical base address and length of the controller's registers. | ||
6 | - interrupts: The interrupt signal from the gpu. | ||
7 | - clocks: device clocks | ||
8 | See ../clocks/clock-bindings.txt for details. | ||
9 | - clock-names: the following clocks are required: | ||
10 | * "core_clk" | ||
11 | * "iface_clk" | ||
12 | * "mem_iface_clk" | ||
13 | - qcom,chipid: gpu chip-id. Note this may become optional for future | ||
14 | devices if we can reliably read the chipid from hw | ||
15 | - qcom,gpu-pwrlevels: list of operating points | ||
16 | - compatible: "qcom,gpu-pwrlevels" | ||
17 | - for each qcom,gpu-pwrlevel: | ||
18 | - qcom,gpu-freq: requested gpu clock speed | ||
19 | - NOTE: downstream android driver defines additional parameters to | ||
20 | configure memory bandwidth scaling per OPP. | ||
21 | |||
22 | Example: | ||
23 | |||
24 | / { | ||
25 | ... | ||
26 | |||
27 | gpu: qcom,kgsl-3d0@4300000 { | ||
28 | compatible = "qcom,adreno-3xx"; | ||
29 | reg = <0x04300000 0x20000>; | ||
30 | reg-names = "kgsl_3d0_reg_memory"; | ||
31 | interrupts = <GIC_SPI 80 0>; | ||
32 | interrupt-names = "kgsl_3d0_irq"; | ||
33 | clock-names = | ||
34 | "core_clk", | ||
35 | "iface_clk", | ||
36 | "mem_iface_clk"; | ||
37 | clocks = | ||
38 | <&mmcc GFX3D_CLK>, | ||
39 | <&mmcc GFX3D_AHB_CLK>, | ||
40 | <&mmcc MMSS_IMEM_AHB_CLK>; | ||
41 | qcom,chipid = <0x03020100>; | ||
42 | qcom,gpu-pwrlevels { | ||
43 | compatible = "qcom,gpu-pwrlevels"; | ||
44 | qcom,gpu-pwrlevel@0 { | ||
45 | qcom,gpu-freq = <450000000>; | ||
46 | }; | ||
47 | qcom,gpu-pwrlevel@1 { | ||
48 | qcom,gpu-freq = <27000000>; | ||
49 | }; | ||
50 | }; | ||
51 | }; | ||
52 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/msm/hdmi.txt b/Documentation/devicetree/bindings/drm/msm/hdmi.txt new file mode 100644 index 000000000000..aca917fe2ba7 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/msm/hdmi.txt | |||
@@ -0,0 +1,46 @@ | |||
1 | Qualcomm adreno/snapdragon hdmi output | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: one of the following | ||
5 | * "qcom,hdmi-tx-8660" | ||
6 | * "qcom,hdmi-tx-8960" | ||
7 | - reg: Physical base address and length of the controller's registers | ||
8 | - reg-names: "core_physical" | ||
9 | - interrupts: The interrupt signal from the hdmi block. | ||
10 | - clocks: device clocks | ||
11 | See ../clocks/clock-bindings.txt for details. | ||
12 | - qcom,hdmi-tx-ddc-clk-gpio: ddc clk pin | ||
13 | - qcom,hdmi-tx-ddc-data-gpio: ddc data pin | ||
14 | - qcom,hdmi-tx-hpd-gpio: hpd pin | ||
15 | - core-vdda-supply: phandle to supply regulator | ||
16 | - hdmi-mux-supply: phandle to mux regulator | ||
17 | |||
18 | Optional properties: | ||
19 | - qcom,hdmi-tx-mux-en-gpio: hdmi mux enable pin | ||
20 | - qcom,hdmi-tx-mux-sel-gpio: hdmi mux select pin | ||
21 | |||
22 | Example: | ||
23 | |||
24 | / { | ||
25 | ... | ||
26 | |||
27 | hdmi: qcom,hdmi-tx-8960@4a00000 { | ||
28 | compatible = "qcom,hdmi-tx-8960"; | ||
29 | reg-names = "core_physical"; | ||
30 | reg = <0x04a00000 0x1000>; | ||
31 | interrupts = <GIC_SPI 79 0>; | ||
32 | clock-names = | ||
33 | "core_clk", | ||
34 | "master_iface_clk", | ||
35 | "slave_iface_clk"; | ||
36 | clocks = | ||
37 | <&mmcc HDMI_APP_CLK>, | ||
38 | <&mmcc HDMI_M_AHB_CLK>, | ||
39 | <&mmcc HDMI_S_AHB_CLK>; | ||
40 | qcom,hdmi-tx-ddc-clk = <&msmgpio 70 GPIO_ACTIVE_HIGH>; | ||
41 | qcom,hdmi-tx-ddc-data = <&msmgpio 71 GPIO_ACTIVE_HIGH>; | ||
42 | qcom,hdmi-tx-hpd = <&msmgpio 72 GPIO_ACTIVE_HIGH>; | ||
43 | core-vdda-supply = <&pm8921_hdmi_mvs>; | ||
44 | hdmi-mux-supply = <&ext_3p3v>; | ||
45 | }; | ||
46 | }; | ||
diff --git a/Documentation/devicetree/bindings/drm/msm/mdp.txt b/Documentation/devicetree/bindings/drm/msm/mdp.txt new file mode 100644 index 000000000000..1a0598e5279d --- /dev/null +++ b/Documentation/devicetree/bindings/drm/msm/mdp.txt | |||
@@ -0,0 +1,48 @@ | |||
1 | Qualcomm adreno/snapdragon display controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: | ||
5 | * "qcom,mdp" - mdp4 | ||
6 | - reg: Physical base address and length of the controller's registers. | ||
7 | - interrupts: The interrupt signal from the display controller. | ||
8 | - connectors: array of phandles for output device(s) | ||
9 | - clocks: device clocks | ||
10 | See ../clocks/clock-bindings.txt for details. | ||
11 | - clock-names: the following clocks are required: | ||
12 | * "core_clk" | ||
13 | * "iface_clk" | ||
14 | * "lut_clk" | ||
15 | * "src_clk" | ||
16 | * "hdmi_clk" | ||
17 | * "mpd_clk" | ||
18 | |||
19 | Optional properties: | ||
20 | - gpus: phandle for gpu device | ||
21 | |||
22 | Example: | ||
23 | |||
24 | / { | ||
25 | ... | ||
26 | |||
27 | mdp: qcom,mdp@5100000 { | ||
28 | compatible = "qcom,mdp"; | ||
29 | reg = <0x05100000 0xf0000>; | ||
30 | interrupts = <GIC_SPI 75 0>; | ||
31 | connectors = <&hdmi>; | ||
32 | gpus = <&gpu>; | ||
33 | clock-names = | ||
34 | "core_clk", | ||
35 | "iface_clk", | ||
36 | "lut_clk", | ||
37 | "src_clk", | ||
38 | "hdmi_clk", | ||
39 | "mdp_clk"; | ||
40 | clocks = | ||
41 | <&mmcc MDP_SRC>, | ||
42 | <&mmcc MDP_AHB_CLK>, | ||
43 | <&mmcc MDP_LUT_CLK>, | ||
44 | <&mmcc TV_SRC>, | ||
45 | <&mmcc HDMI_TV_CLK>, | ||
46 | <&mmcc MDP_TV_CLK>; | ||
47 | }; | ||
48 | }; | ||
diff --git a/Documentation/devicetree/bindings/extcon/extcon-sm5502.txt b/Documentation/devicetree/bindings/extcon/extcon-sm5502.txt new file mode 100644 index 000000000000..4ecda224955f --- /dev/null +++ b/Documentation/devicetree/bindings/extcon/extcon-sm5502.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | |||
2 | * SM5502 MUIC (Micro-USB Interface Controller) device | ||
3 | |||
4 | The Silicon Mitus SM5502 is a MUIC (Micro-USB Interface Controller) device | ||
5 | which can detect the state of external accessory when external accessory is | ||
6 | attached or detached and button is pressed or released. It is interfaced to | ||
7 | the host controller using an I2C interface. | ||
8 | |||
9 | Required properties: | ||
10 | - compatible: Should be "siliconmitus,sm5502-muic" | ||
11 | - reg: Specifies the I2C slave address of the MUIC block. It should be 0x25 | ||
12 | - interrupt-parent: Specifies the phandle of the interrupt controller to which | ||
13 | the interrupts from sm5502 are delivered to. | ||
14 | - interrupts: Interrupt specifiers for detection interrupt sources. | ||
15 | |||
16 | Example: | ||
17 | |||
18 | sm5502@25 { | ||
19 | compatible = "siliconmitus,sm5502-muic"; | ||
20 | interrupt-parent = <&gpx1>; | ||
21 | interrupts = <5 0>; | ||
22 | reg = <0x25>; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt new file mode 100644 index 000000000000..d8c98c7614d0 --- /dev/null +++ b/Documentation/devicetree/bindings/fuse/nvidia,tegra20-fuse.txt | |||
@@ -0,0 +1,40 @@ | |||
1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 fuse block. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be: | ||
5 | "nvidia,tegra20-efuse" | ||
6 | "nvidia,tegra30-efuse" | ||
7 | "nvidia,tegra114-efuse" | ||
8 | "nvidia,tegra124-efuse" | ||
9 | Details: | ||
10 | nvidia,tegra20-efuse: Tegra20 requires using APB DMA to read the fuse data | ||
11 | due to a hardware bug. Tegra20 also lacks certain information which is | ||
12 | available in later generations such as fab code, lot code, wafer id,.. | ||
13 | nvidia,tegra30-efuse, nvidia,tegra114-efuse and nvidia,tegra124-efuse: | ||
14 | The differences between these SoCs are the size of the efuse array, | ||
15 | the location of the spare (OEM programmable) bits and the location of | ||
16 | the speedo data. | ||
17 | - reg: Should contain 1 entry: the entry gives the physical address and length | ||
18 | of the fuse registers. | ||
19 | - clocks: Must contain an entry for each entry in clock-names. | ||
20 | See ../clocks/clock-bindings.txt for details. | ||
21 | - clock-names: Must include the following entries: | ||
22 | - fuse | ||
23 | - resets: Must contain an entry for each entry in reset-names. | ||
24 | See ../reset/reset.txt for details. | ||
25 | - reset-names: Must include the following entries: | ||
26 | - fuse | ||
27 | |||
28 | Example: | ||
29 | |||
30 | fuse@7000f800 { | ||
31 | compatible = "nvidia,tegra20-efuse"; | ||
32 | reg = <0x7000F800 0x400>, | ||
33 | <0x70000000 0x400>; | ||
34 | clocks = <&tegra_car TEGRA20_CLK_FUSE>; | ||
35 | clock-names = "fuse"; | ||
36 | resets = <&tegra_car 39>; | ||
37 | reset-names = "fuse"; | ||
38 | }; | ||
39 | |||
40 | |||
diff --git a/Documentation/devicetree/bindings/gpio/gpio-zynq.txt b/Documentation/devicetree/bindings/gpio/gpio-zynq.txt new file mode 100644 index 000000000000..986371a4be2c --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-zynq.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | Xilinx Zynq GPIO controller Device Tree Bindings | ||
2 | ------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - #gpio-cells : Should be two | ||
6 | - First cell is the GPIO line number | ||
7 | - Second cell is used to specify optional | ||
8 | parameters (unused) | ||
9 | - compatible : Should be "xlnx,zynq-gpio-1.0" | ||
10 | - clocks : Clock specifier (see clock bindings for details) | ||
11 | - gpio-controller : Marks the device node as a GPIO controller. | ||
12 | - interrupts : Interrupt specifier (see interrupt bindings for | ||
13 | details) | ||
14 | - interrupt-parent : Must be core interrupt controller | ||
15 | - reg : Address and length of the register set for the device | ||
16 | |||
17 | Example: | ||
18 | gpio@e000a000 { | ||
19 | #gpio-cells = <2>; | ||
20 | compatible = "xlnx,zynq-gpio-1.0"; | ||
21 | clocks = <&clkc 42>; | ||
22 | gpio-controller; | ||
23 | interrupt-parent = <&intc>; | ||
24 | interrupts = <0 20 4>; | ||
25 | reg = <0xe000a000 0x1000>; | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpu/nvidia,gk20a.txt b/Documentation/devicetree/bindings/gpu/nvidia,gk20a.txt new file mode 100644 index 000000000000..23bfe8e1f7cc --- /dev/null +++ b/Documentation/devicetree/bindings/gpu/nvidia,gk20a.txt | |||
@@ -0,0 +1,43 @@ | |||
1 | NVIDIA GK20A Graphics Processing Unit | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "nvidia,<chip>-<gpu>" | ||
5 | Currently recognized values: | ||
6 | - nvidia,tegra124-gk20a | ||
7 | - reg: Physical base address and length of the controller's registers. | ||
8 | Must contain two entries: | ||
9 | - first entry for bar0 | ||
10 | - second entry for bar1 | ||
11 | - interrupts: Must contain an entry for each entry in interrupt-names. | ||
12 | See ../interrupt-controller/interrupts.txt for details. | ||
13 | - interrupt-names: Must include the following entries: | ||
14 | - stall | ||
15 | - nonstall | ||
16 | - vdd-supply: regulator for supply voltage. | ||
17 | - clocks: Must contain an entry for each entry in clock-names. | ||
18 | See ../clocks/clock-bindings.txt for details. | ||
19 | - clock-names: Must include the following entries: | ||
20 | - gpu | ||
21 | - pwr | ||
22 | - resets: Must contain an entry for each entry in reset-names. | ||
23 | See ../reset/reset.txt for details. | ||
24 | - reset-names: Must include the following entries: | ||
25 | - gpu | ||
26 | |||
27 | Example: | ||
28 | |||
29 | gpu@0,57000000 { | ||
30 | compatible = "nvidia,gk20a"; | ||
31 | reg = <0x0 0x57000000 0x0 0x01000000>, | ||
32 | <0x0 0x58000000 0x0 0x01000000>; | ||
33 | interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>, | ||
34 | <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>; | ||
35 | interrupt-names = "stall", "nonstall"; | ||
36 | vdd-supply = <&vdd_gpu>; | ||
37 | clocks = <&tegra_car TEGRA124_CLK_GPU>, | ||
38 | <&tegra_car TEGRA124_CLK_PLL_P_OUT5>; | ||
39 | clock-names = "gpu", "pwr"; | ||
40 | resets = <&tegra_car 184>; | ||
41 | reset-names = "gpu"; | ||
42 | status = "disabled"; | ||
43 | }; | ||
diff --git a/Documentation/devicetree/bindings/gpu/st,stih4xx.txt b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt new file mode 100644 index 000000000000..2d150c311a05 --- /dev/null +++ b/Documentation/devicetree/bindings/gpu/st,stih4xx.txt | |||
@@ -0,0 +1,189 @@ | |||
1 | STMicroelectronics stih4xx platforms | ||
2 | |||
3 | - sti-vtg: video timing generator | ||
4 | Required properties: | ||
5 | - compatible: "st,vtg" | ||
6 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
7 | Optional properties: | ||
8 | - interrupts : VTG interrupt number to the CPU. | ||
9 | - st,slave: phandle on a slave vtg | ||
10 | |||
11 | - sti-vtac: video timing advanced inter dye communication Rx and TX | ||
12 | Required properties: | ||
13 | - compatible: "st,vtac-main" or "st,vtac-aux" | ||
14 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
15 | - clocks: from common clock binding: handle hardware IP needed clocks, the | ||
16 | number of clocks may depend of the SoC type. | ||
17 | See ../clocks/clock-bindings.txt for details. | ||
18 | - clock-names: names of the clocks listed in clocks property in the same | ||
19 | order. | ||
20 | |||
21 | - sti-display-subsystem: Master device for DRM sub-components | ||
22 | This device must be the parent of all the sub-components and is responsible | ||
23 | of bind them. | ||
24 | Required properties: | ||
25 | - compatible: "st,sti-display-subsystem" | ||
26 | - ranges: to allow probing of subdevices | ||
27 | |||
28 | - sti-compositor: frame compositor engine | ||
29 | must be a child of sti-display-subsystem | ||
30 | Required properties: | ||
31 | - compatible: "st,stih<chip>-compositor" | ||
32 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
33 | - clocks: from common clock binding: handle hardware IP needed clocks, the | ||
34 | number of clocks may depend of the SoC type. | ||
35 | See ../clocks/clock-bindings.txt for details. | ||
36 | - clock-names: names of the clocks listed in clocks property in the same | ||
37 | order. | ||
38 | - resets: resets to be used by the device | ||
39 | See ../reset/reset.txt for details. | ||
40 | - reset-names: names of the resets listed in resets property in the same | ||
41 | order. | ||
42 | - st,vtg: phandle(s) on vtg device (main and aux) nodes. | ||
43 | |||
44 | - sti-tvout: video out hardware block | ||
45 | must be a child of sti-display-subsystem | ||
46 | Required properties: | ||
47 | - compatible: "st,stih<chip>-tvout" | ||
48 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
49 | - reg-names: names of the mapped memory regions listed in regs property in | ||
50 | the same order. | ||
51 | - resets: resets to be used by the device | ||
52 | See ../reset/reset.txt for details. | ||
53 | - reset-names: names of the resets listed in resets property in the same | ||
54 | order. | ||
55 | - ranges: to allow probing of subdevices | ||
56 | |||
57 | - sti-hdmi: hdmi output block | ||
58 | must be a child of sti-tvout | ||
59 | Required properties: | ||
60 | - compatible: "st,stih<chip>-hdmi"; | ||
61 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
62 | - reg-names: names of the mapped memory regions listed in regs property in | ||
63 | the same order. | ||
64 | - interrupts : HDMI interrupt number to the CPU. | ||
65 | - interrupt-names: name of the interrupts listed in interrupts property in | ||
66 | the same order | ||
67 | - clocks: from common clock binding: handle hardware IP needed clocks, the | ||
68 | number of clocks may depend of the SoC type. | ||
69 | - clock-names: names of the clocks listed in clocks property in the same | ||
70 | order. | ||
71 | - hdmi,hpd-gpio: gpio id to detect if an hdmi cable is plugged or not. | ||
72 | |||
73 | sti-hda: | ||
74 | Required properties: | ||
75 | must be a child of sti-tvout | ||
76 | - compatible: "st,stih<chip>-hda" | ||
77 | - reg: Physical base address of the IP registers and length of memory mapped region. | ||
78 | - reg-names: names of the mapped memory regions listed in regs property in | ||
79 | the same order. | ||
80 | - clocks: from common clock binding: handle hardware IP needed clocks, the | ||
81 | number of clocks may depend of the SoC type. | ||
82 | See ../clocks/clock-bindings.txt for details. | ||
83 | - clock-names: names of the clocks listed in clocks property in the same | ||
84 | order. | ||
85 | |||
86 | Example: | ||
87 | |||
88 | / { | ||
89 | ... | ||
90 | |||
91 | vtg_main_slave: sti-vtg-main-slave@fe85A800 { | ||
92 | compatible = "st,vtg"; | ||
93 | reg = <0xfe85A800 0x300>; | ||
94 | interrupts = <GIC_SPI 175 IRQ_TYPE_NONE>; | ||
95 | }; | ||
96 | |||
97 | vtg_main: sti-vtg-main-master@fd348000 { | ||
98 | compatible = "st,vtg"; | ||
99 | reg = <0xfd348000 0x400>; | ||
100 | st,slave = <&vtg_main_slave>; | ||
101 | }; | ||
102 | |||
103 | vtg_aux_slave: sti-vtg-aux-slave@fd348400 { | ||
104 | compatible = "st,vtg"; | ||
105 | reg = <0xfe858200 0x300>; | ||
106 | interrupts = <GIC_SPI 176 IRQ_TYPE_NONE>; | ||
107 | }; | ||
108 | |||
109 | vtg_aux: sti-vtg-aux-master@fd348400 { | ||
110 | compatible = "st,vtg"; | ||
111 | reg = <0xfd348400 0x400>; | ||
112 | st,slave = <&vtg_aux_slave>; | ||
113 | }; | ||
114 | |||
115 | |||
116 | sti-vtac-rx-main@fee82800 { | ||
117 | compatible = "st,vtac-main"; | ||
118 | reg = <0xfee82800 0x200>; | ||
119 | clock-names = "vtac"; | ||
120 | clocks = <&clk_m_a2_div0 CLK_M_VTAC_MAIN_PHY>; | ||
121 | }; | ||
122 | |||
123 | sti-vtac-rx-aux@fee82a00 { | ||
124 | compatible = "st,vtac-aux"; | ||
125 | reg = <0xfee82a00 0x200>; | ||
126 | clock-names = "vtac"; | ||
127 | clocks = <&clk_m_a2_div0 CLK_M_VTAC_AUX_PHY>; | ||
128 | }; | ||
129 | |||
130 | sti-vtac-tx-main@fd349000 { | ||
131 | compatible = "st,vtac-main"; | ||
132 | reg = <0xfd349000 0x200>, <0xfd320000 0x10000>; | ||
133 | clock-names = "vtac"; | ||
134 | clocks = <&clk_s_a1_hs CLK_S_VTAC_TX_PHY>; | ||
135 | }; | ||
136 | |||
137 | sti-vtac-tx-aux@fd349200 { | ||
138 | compatible = "st,vtac-aux"; | ||
139 | reg = <0xfd349200 0x200>, <0xfd320000 0x10000>; | ||
140 | clock-names = "vtac"; | ||
141 | clocks = <&clk_s_a1_hs CLK_S_VTAC_TX_PHY>; | ||
142 | }; | ||
143 | |||
144 | sti-display-subsystem { | ||
145 | compatible = "st,sti-display-subsystem"; | ||
146 | ranges; | ||
147 | |||
148 | sti-compositor@fd340000 { | ||
149 | compatible = "st,stih416-compositor"; | ||
150 | reg = <0xfd340000 0x1000>; | ||
151 | clock-names = "compo_main", "compo_aux", | ||
152 | "pix_main", "pix_aux"; | ||
153 | clocks = <&clk_m_a2_div1 CLK_M_COMPO_MAIN>, <&clk_m_a2_div1 CLK_M_COMPO_AUX>, | ||
154 | <&clockgen_c_vcc CLK_S_PIX_MAIN>, <&clockgen_c_vcc CLK_S_PIX_AUX>; | ||
155 | reset-names = "compo-main", "compo-aux"; | ||
156 | resets = <&softreset STIH416_COMPO_M_SOFTRESET>, <&softreset STIH416_COMPO_A_SOFTRESET>; | ||
157 | st,vtg = <&vtg_main>, <&vtg_aux>; | ||
158 | }; | ||
159 | |||
160 | sti-tvout@fe000000 { | ||
161 | compatible = "st,stih416-tvout"; | ||
162 | reg = <0xfe000000 0x1000>, <0xfe85a000 0x400>, <0xfe830000 0x10000>; | ||
163 | reg-names = "tvout-reg", "hda-reg", "syscfg"; | ||
164 | reset-names = "tvout"; | ||
165 | resets = <&softreset STIH416_HDTVOUT_SOFTRESET>; | ||
166 | ranges; | ||
167 | |||
168 | sti-hdmi@fe85c000 { | ||
169 | compatible = "st,stih416-hdmi"; | ||
170 | reg = <0xfe85c000 0x1000>, <0xfe830000 0x10000>; | ||
171 | reg-names = "hdmi-reg", "syscfg"; | ||
172 | interrupts = <GIC_SPI 173 IRQ_TYPE_NONE>; | ||
173 | interrupt-names = "irq"; | ||
174 | clock-names = "pix", "tmds", "phy", "audio"; | ||
175 | clocks = <&clockgen_c_vcc CLK_S_PIX_HDMI>, <&clockgen_c_vcc CLK_S_TMDS_HDMI>, <&clockgen_c_vcc CLK_S_HDMI_REJECT_PLL>, <&clockgen_b1 CLK_S_PCM_0>; | ||
176 | hdmi,hpd-gpio = <&PIO2 5>; | ||
177 | }; | ||
178 | |||
179 | sti-hda@fe85a000 { | ||
180 | compatible = "st,stih416-hda"; | ||
181 | reg = <0xfe85a000 0x400>, <0xfe83085c 0x4>; | ||
182 | reg-names = "hda-reg", "video-dacs-ctrl"; | ||
183 | clock-names = "pix", "hddac"; | ||
184 | clocks = <&clockgen_c_vcc CLK_S_PIX_HD>, <&clockgen_c_vcc CLK_S_HDDAC>; | ||
185 | }; | ||
186 | }; | ||
187 | }; | ||
188 | ... | ||
189 | }; | ||
diff --git a/Documentation/devicetree/bindings/hwmon/ibmpowernv.txt b/Documentation/devicetree/bindings/hwmon/ibmpowernv.txt new file mode 100644 index 000000000000..f93242be60a1 --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/ibmpowernv.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | IBM POWERNV platform sensors | ||
2 | ---------------------------- | ||
3 | |||
4 | Required node properties: | ||
5 | - compatible: must be one of | ||
6 | "ibm,opal-sensor-cooling-fan" | ||
7 | "ibm,opal-sensor-amb-temp" | ||
8 | "ibm,opal-sensor-power-supply" | ||
9 | "ibm,opal-sensor-power" | ||
10 | - sensor-id: an opaque id provided by the firmware to the kernel, identifies a | ||
11 | given sensor and its attribute data | ||
12 | |||
13 | Example sensors node: | ||
14 | |||
15 | cooling-fan#8-data { | ||
16 | sensor-id = <0x7052107>; | ||
17 | compatible = "ibm,opal-sensor-cooling-fan"; | ||
18 | }; | ||
19 | |||
20 | amb-temp#1-thrs { | ||
21 | sensor-id = <0x5096000>; | ||
22 | compatible = "ibm,opal-sensor-amb-temp"; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt index b117b2e9e1a7..2391e5c41999 100644 --- a/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt +++ b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt | |||
@@ -3,6 +3,7 @@ NTC Thermistor hwmon sensors | |||
3 | 3 | ||
4 | Requires node properties: | 4 | Requires node properties: |
5 | - "compatible" value : one of | 5 | - "compatible" value : one of |
6 | "epcos,b57330v2103" | ||
6 | "murata,ncp15wb473" | 7 | "murata,ncp15wb473" |
7 | "murata,ncp18wb473" | 8 | "murata,ncp18wb473" |
8 | "murata,ncp21wb473" | 9 | "murata,ncp21wb473" |
diff --git a/Documentation/devicetree/bindings/hwmon/pwm-fan.txt b/Documentation/devicetree/bindings/hwmon/pwm-fan.txt new file mode 100644 index 000000000000..610757ce4492 --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/pwm-fan.txt | |||
@@ -0,0 +1,12 @@ | |||
1 | Bindings for a fan connected to the PWM lines | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "pwm-fan" | ||
5 | - pwms : the PWM that is used to control the PWM fan | ||
6 | |||
7 | Example: | ||
8 | pwm-fan { | ||
9 | compatible = "pwm-fan"; | ||
10 | status = "okay"; | ||
11 | pwms = <&pwm 0 10000 0>; | ||
12 | }; | ||
diff --git a/Documentation/devicetree/bindings/i2c/i2c-efm32.txt b/Documentation/devicetree/bindings/i2c/i2c-efm32.txt index fc15ac519437..50b25c3da186 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-efm32.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-efm32.txt | |||
@@ -10,7 +10,7 @@ Required properties : | |||
10 | Recommended properties : | 10 | Recommended properties : |
11 | 11 | ||
12 | - clock-frequency : maximal I2C bus clock frequency in Hz. | 12 | - clock-frequency : maximal I2C bus clock frequency in Hz. |
13 | - efm32,location : Decides the location of the USART I/O pins. | 13 | - energymicro,location : Decides the location of the USART I/O pins. |
14 | Allowed range : [0 .. 6] | 14 | Allowed range : [0 .. 6] |
15 | 15 | ||
16 | Example: | 16 | Example: |
@@ -23,7 +23,7 @@ Example: | |||
23 | clocks = <&cmu clk_HFPERCLKI2C0>; | 23 | clocks = <&cmu clk_HFPERCLKI2C0>; |
24 | clock-frequency = <100000>; | 24 | clock-frequency = <100000>; |
25 | status = "ok"; | 25 | status = "ok"; |
26 | efm32,location = <3>; | 26 | energymicro,location = <3>; |
27 | 27 | ||
28 | eeprom@50 { | 28 | eeprom@50 { |
29 | compatible = "microchip,24c02"; | 29 | compatible = "microchip,24c02"; |
diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt index bef86e57c388..6af570ec53b4 100644 --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt | |||
@@ -50,6 +50,7 @@ epson,rx8581 I2C-BUS INTERFACE REAL TIME CLOCK MODULE | |||
50 | fsl,mag3110 MAG3110: Xtrinsic High Accuracy, 3D Magnetometer | 50 | fsl,mag3110 MAG3110: Xtrinsic High Accuracy, 3D Magnetometer |
51 | fsl,mc13892 MC13892: Power Management Integrated Circuit (PMIC) for i.MX35/51 | 51 | fsl,mc13892 MC13892: Power Management Integrated Circuit (PMIC) for i.MX35/51 |
52 | fsl,mma8450 MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer | 52 | fsl,mma8450 MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer |
53 | fsl,mma8452 MMA8452Q: 3-axis 12-bit / 8-bit Digital Accelerometer | ||
53 | fsl,mpr121 MPR121: Proximity Capacitive Touch Sensor Controller | 54 | fsl,mpr121 MPR121: Proximity Capacitive Touch Sensor Controller |
54 | fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec | 55 | fsl,sgtl5000 SGTL5000: Ultra Low-Power Audio Codec |
55 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface | 56 | gmt,g751 G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface |
@@ -69,6 +70,7 @@ nuvoton,npct501 i2c trusted platform module (TPM) | |||
69 | nxp,pca9556 Octal SMBus and I2C registered interface | 70 | nxp,pca9556 Octal SMBus and I2C registered interface |
70 | nxp,pca9557 8-bit I2C-bus and SMBus I/O port with reset | 71 | nxp,pca9557 8-bit I2C-bus and SMBus I/O port with reset |
71 | nxp,pcf8563 Real-time clock/calendar | 72 | nxp,pcf8563 Real-time clock/calendar |
73 | nxp,pcf85063 Tiny Real-Time Clock | ||
72 | ovti,ov5642 OV5642: Color CMOS QSXGA (5-megapixel) Image Sensor with OmniBSI and Embedded TrueFocus | 74 | ovti,ov5642 OV5642: Color CMOS QSXGA (5-megapixel) Image Sensor with OmniBSI and Embedded TrueFocus |
73 | pericom,pt7c4338 Real-time Clock Module | 75 | pericom,pt7c4338 Real-time Clock Module |
74 | plx,pex8648 48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch | 76 | plx,pex8648 48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch |
@@ -83,5 +85,6 @@ stm,m41t80 M41T80 - SERIAL ACCESS RTC WITH ALARMS | |||
83 | taos,tsl2550 Ambient Light Sensor with SMBUS/Two Wire Serial Interface | 85 | taos,tsl2550 Ambient Light Sensor with SMBUS/Two Wire Serial Interface |
84 | ti,tsc2003 I2C Touch-Screen Controller | 86 | ti,tsc2003 I2C Touch-Screen Controller |
85 | ti,tmp102 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface | 87 | ti,tmp102 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface |
88 | ti,tmp103 Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface | ||
86 | ti,tmp275 Digital Temperature Sensor | 89 | ti,tmp275 Digital Temperature Sensor |
87 | winbond,wpct301 i2c trusted platform module (TPM) | 90 | winbond,wpct301 i2c trusted platform module (TPM) |
diff --git a/Documentation/devicetree/bindings/iio/adc/max1027-adc.txt b/Documentation/devicetree/bindings/iio/adc/max1027-adc.txt new file mode 100644 index 000000000000..a8770cc6bcad --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/max1027-adc.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | * Maxim 1027/1029/1031 Analog to Digital Converter (ADC) | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "maxim,max1027" or "maxim,max1029" or "maxim,max1031" | ||
5 | - reg: SPI chip select number for the device | ||
6 | - interrupt-parent: phandle to the parent interrupt controller | ||
7 | see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | ||
8 | - interrupts: IRQ line for the ADC | ||
9 | see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | ||
10 | |||
11 | Recommended properties: | ||
12 | - spi-max-frequency: Definition as per | ||
13 | Documentation/devicetree/bindings/spi/spi-bus.txt | ||
14 | |||
15 | Example: | ||
16 | adc@0 { | ||
17 | compatible = "maxim,max1027"; | ||
18 | reg = <0>; | ||
19 | interrupt-parent = <&gpio5>; | ||
20 | interrupts = <15 IRQ_TYPE_EDGE_RISING>; | ||
21 | spi-max-frequency = <1000000>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt b/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt index 90d5f34db04e..8e191eef014e 100644 --- a/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt +++ b/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt | |||
@@ -3,6 +3,10 @@ | |||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible : should be "honeywell,hmc5843" | 5 | - compatible : should be "honeywell,hmc5843" |
6 | Other models which are supported with driver are: | ||
7 | "honeywell,hmc5883" | ||
8 | "honeywell,hmc5883l" | ||
9 | "honeywell,hmc5983" | ||
6 | - reg : the I2C address of the magnetometer - typically 0x1e | 10 | - reg : the I2C address of the magnetometer - typically 0x1e |
7 | 11 | ||
8 | Optional properties: | 12 | Optional properties: |
diff --git a/Documentation/devicetree/bindings/iio/st-sensors.txt b/Documentation/devicetree/bindings/iio/st-sensors.txt new file mode 100644 index 000000000000..a7a0a15913ad --- /dev/null +++ b/Documentation/devicetree/bindings/iio/st-sensors.txt | |||
@@ -0,0 +1,54 @@ | |||
1 | STMicroelectronics MEMS sensors | ||
2 | |||
3 | The STMicroelectronics sensor devices are pretty straight-forward I2C or | ||
4 | SPI devices, all sharing the same device tree descriptions no matter what | ||
5 | type of sensor it is. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: see the list of valid compatible strings below | ||
9 | - reg: the I2C or SPI address the device will respond to | ||
10 | |||
11 | Optional properties: | ||
12 | - vdd-supply: an optional regulator that needs to be on to provide VDD | ||
13 | power to the sensor. | ||
14 | - vddio-supply: an optional regulator that needs to be on to provide the | ||
15 | VDD IO power to the sensor. | ||
16 | - st,drdy-int-pin: the pin on the package that will be used to signal | ||
17 | "data ready" (valid values: 1 or 2). This property is not configurable | ||
18 | on all sensors. | ||
19 | |||
20 | Sensors may also have applicable pin control settings, those use the | ||
21 | standard bindings from pinctrl/pinctrl-bindings.txt. | ||
22 | |||
23 | Valid compatible strings: | ||
24 | |||
25 | Accelerometers: | ||
26 | - st,lsm303dlh-accel | ||
27 | - st,lsm303dlhc-accel | ||
28 | - st,lis3dh-accel | ||
29 | - st,lsm330d-accel | ||
30 | - st,lsm330dl-accel | ||
31 | - st,lsm330dlc-accel | ||
32 | - st,lis331dlh-accel | ||
33 | - st,lsm303dl-accel | ||
34 | - st,lsm303dlm-accel | ||
35 | - st,lsm330-accel | ||
36 | |||
37 | Gyroscopes: | ||
38 | - st,l3g4200d-gyro | ||
39 | - st,lsm330d-gyro | ||
40 | - st,lsm330dl-gyro | ||
41 | - st,lsm330dlc-gyro | ||
42 | - st,l3gd20-gyro | ||
43 | - st,l3g4is-gyro | ||
44 | - st,lsm330-gyro | ||
45 | |||
46 | Magnetometers: | ||
47 | - st,lsm303dlhc-magn | ||
48 | - st,lsm303dlm-magn | ||
49 | - st,lis3mdl-magn | ||
50 | |||
51 | Pressure sensors: | ||
52 | - st,lps001wp-press | ||
53 | - st,lps25h-press | ||
54 | - st,lps331ap-press | ||
diff --git a/Documentation/devicetree/bindings/input/atmel,maxtouch.txt b/Documentation/devicetree/bindings/input/atmel,maxtouch.txt new file mode 100644 index 000000000000..baef432e8369 --- /dev/null +++ b/Documentation/devicetree/bindings/input/atmel,maxtouch.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | Atmel maXTouch touchscreen/touchpad | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: | ||
5 | atmel,maxtouch | ||
6 | |||
7 | - reg: The I2C address of the device | ||
8 | |||
9 | - interrupts: The sink for the touchpad's IRQ output | ||
10 | See ../interrupt-controller/interrupts.txt | ||
11 | |||
12 | Optional properties for main touchpad device: | ||
13 | |||
14 | - linux,gpio-keymap: An array of up to 4 entries indicating the Linux | ||
15 | keycode generated by each GPIO. Linux keycodes are defined in | ||
16 | <dt-bindings/input/input.h>. | ||
17 | |||
18 | Example: | ||
19 | |||
20 | touch@4b { | ||
21 | compatible = "atmel,maxtouch"; | ||
22 | reg = <0x4b>; | ||
23 | interrupt-parent = <&gpio>; | ||
24 | interrupts = <TEGRA_GPIO(W, 3) IRQ_TYPE_LEVEL_LOW>; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/cap1106.txt b/Documentation/devicetree/bindings/input/cap1106.txt new file mode 100644 index 000000000000..4b463904cba0 --- /dev/null +++ b/Documentation/devicetree/bindings/input/cap1106.txt | |||
@@ -0,0 +1,53 @@ | |||
1 | Device tree bindings for Microchip CAP1106, 6 channel capacitive touch sensor | ||
2 | |||
3 | The node for this driver must be a child of a I2C controller node, as the | ||
4 | device communication via I2C only. | ||
5 | |||
6 | Required properties: | ||
7 | |||
8 | compatible: Must be "microchip,cap1106" | ||
9 | |||
10 | reg: The I2C slave address of the device. | ||
11 | Only 0x28 is valid. | ||
12 | |||
13 | interrupts: Property describing the interrupt line the | ||
14 | device's ALERT#/CM_IRQ# pin is connected to. | ||
15 | The device only has one interrupt source. | ||
16 | |||
17 | Optional properties: | ||
18 | |||
19 | autorepeat: Enables the Linux input system's autorepeat | ||
20 | feature on the input device. | ||
21 | |||
22 | microchip,sensor-gain: Defines the gain of the sensor circuitry. This | ||
23 | effectively controls the sensitivity, as a | ||
24 | smaller delta capacitance is required to | ||
25 | generate the same delta count values. | ||
26 | Valid values are 1, 2, 4, and 8. | ||
27 | By default, a gain of 1 is set. | ||
28 | |||
29 | linux,keycodes: Specifies an array of numeric keycode values to | ||
30 | be used for the channels. If this property is | ||
31 | omitted, KEY_A, KEY_B, etc are used as | ||
32 | defaults. The array must have exactly six | ||
33 | entries. | ||
34 | |||
35 | Example: | ||
36 | |||
37 | i2c_controller { | ||
38 | cap1106@28 { | ||
39 | compatible = "microchip,cap1106"; | ||
40 | interrupt-parent = <&gpio1>; | ||
41 | interrupts = <0 0>; | ||
42 | reg = <0x28>; | ||
43 | autorepeat; | ||
44 | microchip,sensor-gain = <2>; | ||
45 | |||
46 | linux,keycodes = <103 /* KEY_UP */ | ||
47 | 106 /* KEY_RIGHT */ | ||
48 | 108 /* KEY_DOWN */ | ||
49 | 105 /* KEY_LEFT */ | ||
50 | 109 /* KEY_PAGEDOWN */ | ||
51 | 104>; /* KEY_PAGEUP */ | ||
52 | }; | ||
53 | } | ||
diff --git a/Documentation/devicetree/bindings/input/touchscreen/pixcir_i2c_ts.txt b/Documentation/devicetree/bindings/input/touchscreen/pixcir_i2c_ts.txt new file mode 100644 index 000000000000..6e551090f465 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/pixcir_i2c_ts.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | * Pixcir I2C touchscreen controllers | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: must be "pixcir,pixcir_ts" or "pixcir,pixcir_tangoc" | ||
5 | - reg: I2C address of the chip | ||
6 | - interrupts: interrupt to which the chip is connected | ||
7 | - attb-gpio: GPIO connected to the ATTB line of the chip | ||
8 | - touchscreen-size-x: horizontal resolution of touchscreen (in pixels) | ||
9 | - touchscreen-size-y: vertical resolution of touchscreen (in pixels) | ||
10 | |||
11 | Example: | ||
12 | |||
13 | i2c@00000000 { | ||
14 | /* ... */ | ||
15 | |||
16 | pixcir_ts@5c { | ||
17 | compatible = "pixcir,pixcir_ts"; | ||
18 | reg = <0x5c>; | ||
19 | interrupts = <2 0>; | ||
20 | attb-gpio = <&gpf 2 0 2>; | ||
21 | touchscreen-size-x = <800>; | ||
22 | touchscreen-size-y = <600>; | ||
23 | }; | ||
24 | |||
25 | /* ... */ | ||
26 | }; | ||
diff --git a/Documentation/devicetree/bindings/input/touchscreen/zforce_ts.txt b/Documentation/devicetree/bindings/input/touchscreen/zforce_ts.txt index 2faf1f1fa39e..80c37df940a7 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/zforce_ts.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/zforce_ts.txt | |||
@@ -9,6 +9,9 @@ Required properties: | |||
9 | - x-size: horizontal resolution of touchscreen | 9 | - x-size: horizontal resolution of touchscreen |
10 | - y-size: vertical resolution of touchscreen | 10 | - y-size: vertical resolution of touchscreen |
11 | 11 | ||
12 | Optional properties: | ||
13 | - vdd-supply: Regulator controlling the controller supply | ||
14 | |||
12 | Example: | 15 | Example: |
13 | 16 | ||
14 | i2c@00000000 { | 17 | i2c@00000000 { |
@@ -18,6 +21,7 @@ Example: | |||
18 | compatible = "neonode,zforce"; | 21 | compatible = "neonode,zforce"; |
19 | reg = <0x50>; | 22 | reg = <0x50>; |
20 | interrupts = <2 0>; | 23 | interrupts = <2 0>; |
24 | vdd-supply = <®_zforce_vdd>; | ||
21 | 25 | ||
22 | gpios = <&gpio5 6 0>, /* INT */ | 26 | gpios = <&gpio5 6 0>, /* INT */ |
23 | <&gpio5 9 0>; /* RST */ | 27 | <&gpio5 9 0>; /* RST */ |
diff --git a/Documentation/devicetree/bindings/arm/atmel-aic.txt b/Documentation/devicetree/bindings/interrupt-controller/atmel,aic.txt index 2742e9cfd6b1..2742e9cfd6b1 100644 --- a/Documentation/devicetree/bindings/arm/atmel-aic.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/atmel,aic.txt | |||
diff --git a/Documentation/devicetree/bindings/interrupt-controller/opencores,or1k-pic.txt b/Documentation/devicetree/bindings/interrupt-controller/opencores,or1k-pic.txt new file mode 100644 index 000000000000..55c04faa3f3f --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/opencores,or1k-pic.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | OpenRISC 1000 Programmable Interrupt Controller | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible : should be "opencores,or1k-pic-level" for variants with | ||
6 | level triggered interrupt lines, "opencores,or1k-pic-edge" for variants with | ||
7 | edge triggered interrupt lines or "opencores,or1200-pic" for machines | ||
8 | with the non-spec compliant or1200 type implementation. | ||
9 | |||
10 | "opencores,or1k-pic" is also provided as an alias to "opencores,or1200-pic", | ||
11 | but this is only for backwards compatibility. | ||
12 | |||
13 | - interrupt-controller : Identifies the node as an interrupt controller | ||
14 | - #interrupt-cells : Specifies the number of cells needed to encode an | ||
15 | interrupt source. The value shall be 1. | ||
16 | |||
17 | Example: | ||
18 | |||
19 | intc: interrupt-controller { | ||
20 | compatible = "opencores,or1k-pic-level"; | ||
21 | interrupt-controller; | ||
22 | #interrupt-cells = <1>; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.txt b/Documentation/devicetree/bindings/iommu/arm,smmu.txt index f284b99402bc..2d0f7cd867ea 100644 --- a/Documentation/devicetree/bindings/iommu/arm,smmu.txt +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.txt | |||
@@ -42,12 +42,6 @@ conditions. | |||
42 | 42 | ||
43 | ** System MMU optional properties: | 43 | ** System MMU optional properties: |
44 | 44 | ||
45 | - smmu-parent : When multiple SMMUs are chained together, this | ||
46 | property can be used to provide a phandle to the | ||
47 | parent SMMU (that is the next SMMU on the path going | ||
48 | from the mmu-masters towards memory) node for this | ||
49 | SMMU. | ||
50 | |||
51 | - calxeda,smmu-secure-config-access : Enable proper handling of buggy | 45 | - calxeda,smmu-secure-config-access : Enable proper handling of buggy |
52 | implementations that always use secure access to | 46 | implementations that always use secure access to |
53 | SMMU configuration registers. In this case non-secure | 47 | SMMU configuration registers. In this case non-secure |
diff --git a/Documentation/devicetree/bindings/iommu/iommu.txt b/Documentation/devicetree/bindings/iommu/iommu.txt new file mode 100644 index 000000000000..5a8b4624defc --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/iommu.txt | |||
@@ -0,0 +1,182 @@ | |||
1 | This document describes the generic device tree binding for IOMMUs and their | ||
2 | master(s). | ||
3 | |||
4 | |||
5 | IOMMU device node: | ||
6 | ================== | ||
7 | |||
8 | An IOMMU can provide the following services: | ||
9 | |||
10 | * Remap address space to allow devices to access physical memory ranges that | ||
11 | they otherwise wouldn't be capable of accessing. | ||
12 | |||
13 | Example: 32-bit DMA to 64-bit physical addresses | ||
14 | |||
15 | * Implement scatter-gather at page level granularity so that the device does | ||
16 | not have to. | ||
17 | |||
18 | * Provide system protection against "rogue" DMA by forcing all accesses to go | ||
19 | through the IOMMU and faulting when encountering accesses to unmapped | ||
20 | address regions. | ||
21 | |||
22 | * Provide address space isolation between multiple contexts. | ||
23 | |||
24 | Example: Virtualization | ||
25 | |||
26 | Device nodes compatible with this binding represent hardware with some of the | ||
27 | above capabilities. | ||
28 | |||
29 | IOMMUs can be single-master or multiple-master. Single-master IOMMU devices | ||
30 | typically have a fixed association to the master device, whereas multiple- | ||
31 | master IOMMU devices can translate accesses from more than one master. | ||
32 | |||
33 | The device tree node of the IOMMU device's parent bus must contain a valid | ||
34 | "dma-ranges" property that describes how the physical address space of the | ||
35 | IOMMU maps to memory. An empty "dma-ranges" property means that there is a | ||
36 | 1:1 mapping from IOMMU to memory. | ||
37 | |||
38 | Required properties: | ||
39 | -------------------- | ||
40 | - #iommu-cells: The number of cells in an IOMMU specifier needed to encode an | ||
41 | address. | ||
42 | |||
43 | The meaning of the IOMMU specifier is defined by the device tree binding of | ||
44 | the specific IOMMU. Below are a few examples of typical use-cases: | ||
45 | |||
46 | - #iommu-cells = <0>: Single master IOMMU devices are not configurable and | ||
47 | therefore no additional information needs to be encoded in the specifier. | ||
48 | This may also apply to multiple master IOMMU devices that do not allow the | ||
49 | association of masters to be configured. Note that an IOMMU can by design | ||
50 | be multi-master yet only expose a single master in a given configuration. | ||
51 | In such cases the number of cells will usually be 1 as in the next case. | ||
52 | - #iommu-cells = <1>: Multiple master IOMMU devices may need to be configured | ||
53 | in order to enable translation for a given master. In such cases the single | ||
54 | address cell corresponds to the master device's ID. In some cases more than | ||
55 | one cell can be required to represent a single master ID. | ||
56 | - #iommu-cells = <4>: Some IOMMU devices allow the DMA window for masters to | ||
57 | be configured. The first cell of the address in this may contain the master | ||
58 | device's ID for example, while the second cell could contain the start of | ||
59 | the DMA window for the given device. The length of the DMA window is given | ||
60 | by the third and fourth cells. | ||
61 | |||
62 | Note that these are merely examples and real-world use-cases may use different | ||
63 | definitions to represent their individual needs. Always refer to the specific | ||
64 | IOMMU binding for the exact meaning of the cells that make up the specifier. | ||
65 | |||
66 | |||
67 | IOMMU master node: | ||
68 | ================== | ||
69 | |||
70 | Devices that access memory through an IOMMU are called masters. A device can | ||
71 | have multiple master interfaces (to one or more IOMMU devices). | ||
72 | |||
73 | Required properties: | ||
74 | -------------------- | ||
75 | - iommus: A list of phandle and IOMMU specifier pairs that describe the IOMMU | ||
76 | master interfaces of the device. One entry in the list describes one master | ||
77 | interface of the device. | ||
78 | |||
79 | When an "iommus" property is specified in a device tree node, the IOMMU will | ||
80 | be used for address translation. If a "dma-ranges" property exists in the | ||
81 | device's parent node it will be ignored. An exception to this rule is if the | ||
82 | referenced IOMMU is disabled, in which case the "dma-ranges" property of the | ||
83 | parent shall take effect. Note that merely disabling a device tree node does | ||
84 | not guarantee that the IOMMU is really disabled since the hardware may not | ||
85 | have a means to turn off translation. But it is invalid in such cases to | ||
86 | disable the IOMMU's device tree node in the first place because it would | ||
87 | prevent any driver from properly setting up the translations. | ||
88 | |||
89 | |||
90 | Notes: | ||
91 | ====== | ||
92 | |||
93 | One possible extension to the above is to use an "iommus" property along with | ||
94 | a "dma-ranges" property in a bus device node (such as PCI host bridges). This | ||
95 | can be useful to describe how children on the bus relate to the IOMMU if they | ||
96 | are not explicitly listed in the device tree (e.g. PCI devices). However, the | ||
97 | requirements of that use-case haven't been fully determined yet. Implementing | ||
98 | this is therefore not recommended without further discussion and extension of | ||
99 | this binding. | ||
100 | |||
101 | |||
102 | Examples: | ||
103 | ========= | ||
104 | |||
105 | Single-master IOMMU: | ||
106 | -------------------- | ||
107 | |||
108 | iommu { | ||
109 | #iommu-cells = <0>; | ||
110 | }; | ||
111 | |||
112 | master { | ||
113 | iommus = <&{/iommu}>; | ||
114 | }; | ||
115 | |||
116 | Multiple-master IOMMU with fixed associations: | ||
117 | ---------------------------------------------- | ||
118 | |||
119 | /* multiple-master IOMMU */ | ||
120 | iommu { | ||
121 | /* | ||
122 | * Masters are statically associated with this IOMMU and share | ||
123 | * the same address translations because the IOMMU does not | ||
124 | * have sufficient information to distinguish between masters. | ||
125 | * | ||
126 | * Consequently address translation is always on or off for | ||
127 | * all masters at any given point in time. | ||
128 | */ | ||
129 | #iommu-cells = <0>; | ||
130 | }; | ||
131 | |||
132 | /* static association with IOMMU */ | ||
133 | master@1 { | ||
134 | reg = <1>; | ||
135 | iommus = <&{/iommu}>; | ||
136 | }; | ||
137 | |||
138 | /* static association with IOMMU */ | ||
139 | master@2 { | ||
140 | reg = <2>; | ||
141 | iommus = <&{/iommu}>; | ||
142 | }; | ||
143 | |||
144 | Multiple-master IOMMU: | ||
145 | ---------------------- | ||
146 | |||
147 | iommu { | ||
148 | /* the specifier represents the ID of the master */ | ||
149 | #iommu-cells = <1>; | ||
150 | }; | ||
151 | |||
152 | master@1 { | ||
153 | /* device has master ID 42 in the IOMMU */ | ||
154 | iommus = <&{/iommu} 42>; | ||
155 | }; | ||
156 | |||
157 | master@2 { | ||
158 | /* device has master IDs 23 and 24 in the IOMMU */ | ||
159 | iommus = <&{/iommu} 23>, <&{/iommu} 24>; | ||
160 | }; | ||
161 | |||
162 | Multiple-master IOMMU with configurable DMA window: | ||
163 | --------------------------------------------------- | ||
164 | |||
165 | / { | ||
166 | iommu { | ||
167 | /* | ||
168 | * One cell for the master ID and one cell for the | ||
169 | * address of the DMA window. The length of the DMA | ||
170 | * window is encoded in two cells. | ||
171 | * | ||
172 | * The DMA window is the range addressable by the | ||
173 | * master (i.e. the I/O virtual address space). | ||
174 | */ | ||
175 | #iommu-cells = <4>; | ||
176 | }; | ||
177 | |||
178 | master { | ||
179 | /* master ID 42, 4 GiB DMA window starting at 0 */ | ||
180 | iommus = <&{/iommu} 42 0 0x1 0x0>; | ||
181 | }; | ||
182 | }; | ||
diff --git a/Documentation/devicetree/bindings/leds/pca963x.txt b/Documentation/devicetree/bindings/leds/pca963x.txt index aece3eac1b63..dafbe9931c2b 100644 --- a/Documentation/devicetree/bindings/leds/pca963x.txt +++ b/Documentation/devicetree/bindings/leds/pca963x.txt | |||
@@ -1,18 +1,19 @@ | |||
1 | LEDs connected to pca9632, pca9633 or pca9634 | 1 | LEDs connected to pca9632, pca9633 or pca9634 |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : should be : "nxp,pca9632", "nxp,pca9633" or "nxp,pca9634" | 4 | - compatible : should be : "nxp,pca9632", "nxp,pca9633", "nxp,pca9634" or "nxp,pca9635" |
5 | 5 | ||
6 | Optional properties: | 6 | Optional properties: |
7 | - nxp,totem-pole : use totem pole (push-pull) instead of default open-drain | 7 | - nxp,totem-pole : use totem pole (push-pull) instead of open-drain (pca9632 defaults |
8 | to open-drain, newer chips to totem pole) | ||
8 | - nxp,hw-blink : use hardware blinking instead of software blinking | 9 | - nxp,hw-blink : use hardware blinking instead of software blinking |
9 | 10 | ||
10 | Each led is represented as a sub-node of the nxp,pca963x device. | 11 | Each led is represented as a sub-node of the nxp,pca963x device. |
11 | 12 | ||
12 | LED sub-node properties: | 13 | LED sub-node properties: |
13 | - label : (optional) see Documentation/devicetree/bindings/leds/common.txt | 14 | - 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 | - reg : number of LED line (could be from 0 to 3 in pca9632 or pca9633, |
15 | or 0 to 7 in pca9634) | 16 | 0 to 7 in pca9634, or 0 to 15 in pca9635) |
16 | - linux,default-trigger : (optional) | 17 | - linux,default-trigger : (optional) |
17 | see Documentation/devicetree/bindings/leds/common.txt | 18 | see Documentation/devicetree/bindings/leds/common.txt |
18 | 19 | ||
diff --git a/Documentation/devicetree/bindings/leds/tca6507.txt b/Documentation/devicetree/bindings/leds/tca6507.txt index d7221b84987c..bad9102796f3 100644 --- a/Documentation/devicetree/bindings/leds/tca6507.txt +++ b/Documentation/devicetree/bindings/leds/tca6507.txt | |||
@@ -8,7 +8,7 @@ Required properties: | |||
8 | 8 | ||
9 | Optional properties: | 9 | Optional properties: |
10 | - gpio-controller: allows lines to be used as output-only GPIOs. | 10 | - gpio-controller: allows lines to be used as output-only GPIOs. |
11 | - #gpio-cells: if present, must be 0. | 11 | - #gpio-cells: if present, must not be 0. |
12 | 12 | ||
13 | Each led is represented as a sub-node of the ti,tca6507 device. | 13 | Each led is represented as a sub-node of the ti,tca6507 device. |
14 | 14 | ||
diff --git a/Documentation/devicetree/bindings/media/atmel-isi.txt b/Documentation/devicetree/bindings/media/atmel-isi.txt new file mode 100644 index 000000000000..17e71b7b44c6 --- /dev/null +++ b/Documentation/devicetree/bindings/media/atmel-isi.txt | |||
@@ -0,0 +1,51 @@ | |||
1 | Atmel Image Sensor Interface (ISI) SoC Camera Subsystem | ||
2 | ---------------------------------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: must be "atmel,at91sam9g45-isi" | ||
6 | - reg: physical base address and length of the registers set for the device; | ||
7 | - interrupts: should contain IRQ line for the ISI; | ||
8 | - clocks: list of clock specifiers, corresponding to entries in | ||
9 | the clock-names property; | ||
10 | - clock-names: must contain "isi_clk", which is the isi peripherial clock. | ||
11 | |||
12 | ISI supports a single port node with parallel bus. It should contain one | ||
13 | 'port' child node with child 'endpoint' node. Please refer to the bindings | ||
14 | defined in Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
15 | |||
16 | Example: | ||
17 | isi: isi@f0034000 { | ||
18 | compatible = "atmel,at91sam9g45-isi"; | ||
19 | reg = <0xf0034000 0x4000>; | ||
20 | interrupts = <37 IRQ_TYPE_LEVEL_HIGH 5>; | ||
21 | |||
22 | clocks = <&isi_clk>; | ||
23 | clock-names = "isi_clk"; | ||
24 | |||
25 | pinctrl-names = "default"; | ||
26 | pinctrl-0 = <&pinctrl_isi>; | ||
27 | |||
28 | port { | ||
29 | #address-cells = <1>; | ||
30 | #size-cells = <0>; | ||
31 | |||
32 | isi_0: endpoint { | ||
33 | remote-endpoint = <&ov2640_0>; | ||
34 | bus-width = <8>; | ||
35 | }; | ||
36 | }; | ||
37 | }; | ||
38 | |||
39 | i2c1: i2c@f0018000 { | ||
40 | ov2640: camera@0x30 { | ||
41 | compatible = "omnivision,ov2640"; | ||
42 | reg = <0x30>; | ||
43 | |||
44 | port { | ||
45 | ov2640_0: endpoint { | ||
46 | remote-endpoint = <&isi_0>; | ||
47 | bus-width = <8>; | ||
48 | }; | ||
49 | }; | ||
50 | }; | ||
51 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt b/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt index 937b755baf8f..bf52ed4a5067 100644 --- a/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt +++ b/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt | |||
@@ -3,9 +3,13 @@ Samsung S5P/EXYNOS SoC series JPEG codec | |||
3 | Required properties: | 3 | Required properties: |
4 | 4 | ||
5 | - compatible : should be one of: | 5 | - compatible : should be one of: |
6 | "samsung,s5pv210-jpeg", "samsung,exynos4210-jpeg"; | 6 | "samsung,s5pv210-jpeg", "samsung,exynos4210-jpeg", |
7 | "samsung,exynos3250-jpeg"; | ||
7 | - reg : address and length of the JPEG codec IP register set; | 8 | - reg : address and length of the JPEG codec IP register set; |
8 | - interrupts : specifies the JPEG codec IP interrupt; | 9 | - interrupts : specifies the JPEG codec IP interrupt; |
9 | - clocks : should contain the JPEG codec IP gate clock specifier, from the | 10 | - clock-names : should contain: |
10 | common clock bindings; | 11 | - "jpeg" for the core gate clock, |
11 | - clock-names : should contain "jpeg" entry. | 12 | - "sclk" for the special clock (optional). |
13 | - clocks : should contain the clock specifier and clock ID list | ||
14 | matching entries in the clock-names property; from | ||
15 | the common clock bindings. | ||
diff --git a/Documentation/devicetree/bindings/media/i2c/mt9m111.txt b/Documentation/devicetree/bindings/media/i2c/mt9m111.txt new file mode 100644 index 000000000000..ed5a334b1e57 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/mt9m111.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | Micron 1.3Mp CMOS Digital Image Sensor | ||
2 | |||
3 | The Micron MT9M111 is a CMOS active pixel digital image sensor with an active | ||
4 | array size of 1280H x 1024V. It is programmable through a simple two-wire serial | ||
5 | interface. | ||
6 | |||
7 | Required Properties: | ||
8 | - compatible: value should be "micron,mt9m111" | ||
9 | |||
10 | For further reading on port node refer to | ||
11 | Documentation/devicetree/bindings/media/video-interfaces.txt. | ||
12 | |||
13 | Example: | ||
14 | |||
15 | i2c_master { | ||
16 | mt9m111@5d { | ||
17 | compatible = "micron,mt9m111"; | ||
18 | reg = <0x5d>; | ||
19 | |||
20 | remote = <&pxa_camera>; | ||
21 | port { | ||
22 | mt9m111_1: endpoint { | ||
23 | bus-width = <8>; | ||
24 | remote-endpoint = <&pxa_camera>; | ||
25 | }; | ||
26 | }; | ||
27 | }; | ||
28 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/pxa-camera.txt b/Documentation/devicetree/bindings/media/pxa-camera.txt new file mode 100644 index 000000000000..11f5b5d51af8 --- /dev/null +++ b/Documentation/devicetree/bindings/media/pxa-camera.txt | |||
@@ -0,0 +1,43 @@ | |||
1 | Marvell PXA camera host interface | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "marvell,pxa270-qci" | ||
5 | - reg: register base and size | ||
6 | - interrupts: the interrupt number | ||
7 | - any required generic properties defined in video-interfaces.txt | ||
8 | |||
9 | Optional properties: | ||
10 | - clocks: input clock (see clock-bindings.txt) | ||
11 | - clock-output-names: should contain the name of the clock driving the | ||
12 | sensor master clock MCLK | ||
13 | - clock-frequency: host interface is driving MCLK, and MCLK rate is this rate | ||
14 | |||
15 | Example: | ||
16 | |||
17 | pxa_camera: pxa_camera@50000000 { | ||
18 | compatible = "marvell,pxa270-qci"; | ||
19 | reg = <0x50000000 0x1000>; | ||
20 | interrupts = <33>; | ||
21 | |||
22 | clocks = <&pxa2xx_clks 24>; | ||
23 | clock-names = "ciclk"; | ||
24 | clock-frequency = <50000000>; | ||
25 | clock-output-names = "qci_mclk"; | ||
26 | |||
27 | status = "okay"; | ||
28 | |||
29 | port { | ||
30 | #address-cells = <1>; | ||
31 | #size-cells = <0>; | ||
32 | |||
33 | /* Parallel bus endpoint */ | ||
34 | qci: endpoint@0 { | ||
35 | reg = <0>; /* Local endpoint # */ | ||
36 | remote-endpoint = <&mt9m111_1>; | ||
37 | bus-width = <8>; /* Used data lines */ | ||
38 | hsync-active = <0>; /* Active low */ | ||
39 | vsync-active = <0>; /* Active low */ | ||
40 | pclk-sample = <1>; /* Rising */ | ||
41 | }; | ||
42 | }; | ||
43 | }; | ||
diff --git a/Documentation/devicetree/bindings/media/rcar_vin.txt b/Documentation/devicetree/bindings/media/rcar_vin.txt new file mode 100644 index 000000000000..ba61782c2af9 --- /dev/null +++ b/Documentation/devicetree/bindings/media/rcar_vin.txt | |||
@@ -0,0 +1,86 @@ | |||
1 | Renesas RCar Video Input driver (rcar_vin) | ||
2 | ------------------------------------------ | ||
3 | |||
4 | The rcar_vin device provides video input capabilities for the Renesas R-Car | ||
5 | family of devices. The current blocks are always slaves and suppot one input | ||
6 | channel which can be either RGB, YUYV or BT656. | ||
7 | |||
8 | - compatible: Must be one of the following | ||
9 | - "renesas,vin-r8a7791" for the R8A7791 device | ||
10 | - "renesas,vin-r8a7790" for the R8A7790 device | ||
11 | - "renesas,vin-r8a7779" for the R8A7779 device | ||
12 | - "renesas,vin-r8a7778" for the R8A7778 device | ||
13 | - reg: the register base and size for the device registers | ||
14 | - interrupts: the interrupt for the device | ||
15 | - clocks: Reference to the parent clock | ||
16 | |||
17 | Additionally, an alias named vinX will need to be created to specify | ||
18 | which video input device this is. | ||
19 | |||
20 | The per-board settings: | ||
21 | - port sub-node describing a single endpoint connected to the vin | ||
22 | as described in video-interfaces.txt[1]. Only the first one will | ||
23 | be considered as each vin interface has one input port. | ||
24 | |||
25 | These settings are used to work out video input format and widths | ||
26 | into the system. | ||
27 | |||
28 | |||
29 | Device node example | ||
30 | ------------------- | ||
31 | |||
32 | aliases { | ||
33 | vin0 = &vin0; | ||
34 | }; | ||
35 | |||
36 | vin0: vin@0xe6ef0000 { | ||
37 | compatible = "renesas,vin-r8a7790"; | ||
38 | clocks = <&mstp8_clks R8A7790_CLK_VIN0>; | ||
39 | reg = <0 0xe6ef0000 0 0x1000>; | ||
40 | interrupts = <0 188 IRQ_TYPE_LEVEL_HIGH>; | ||
41 | status = "disabled"; | ||
42 | }; | ||
43 | |||
44 | Board setup example (vin1 composite video input) | ||
45 | ------------------------------------------------ | ||
46 | |||
47 | &i2c2 { | ||
48 | status = "ok"; | ||
49 | pinctrl-0 = <&i2c2_pins>; | ||
50 | pinctrl-names = "default"; | ||
51 | |||
52 | adv7180@20 { | ||
53 | compatible = "adi,adv7180"; | ||
54 | reg = <0x20>; | ||
55 | remote = <&vin1>; | ||
56 | |||
57 | port { | ||
58 | adv7180: endpoint { | ||
59 | bus-width = <8>; | ||
60 | remote-endpoint = <&vin1ep0>; | ||
61 | }; | ||
62 | }; | ||
63 | }; | ||
64 | }; | ||
65 | |||
66 | /* composite video input */ | ||
67 | &vin1 { | ||
68 | pinctrl-0 = <&vin1_pins>; | ||
69 | pinctrl-names = "default"; | ||
70 | |||
71 | status = "ok"; | ||
72 | |||
73 | port { | ||
74 | #address-cells = <1>; | ||
75 | #size-cells = <0>; | ||
76 | |||
77 | vin1ep0: endpoint { | ||
78 | remote-endpoint = <&adv7180>; | ||
79 | bus-width = <8>; | ||
80 | }; | ||
81 | }; | ||
82 | }; | ||
83 | |||
84 | |||
85 | |||
86 | [1] video-interfaces.txt common video media interface | ||
diff --git a/Documentation/devicetree/bindings/media/sunxi-ir.txt b/Documentation/devicetree/bindings/media/sunxi-ir.txt new file mode 100644 index 000000000000..23dd5ad07b7c --- /dev/null +++ b/Documentation/devicetree/bindings/media/sunxi-ir.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | Device-Tree bindings for SUNXI IR controller found in sunXi SoC family | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "allwinner,sun4i-a10-ir"; | ||
5 | - clocks : list of clock specifiers, corresponding to | ||
6 | entries in clock-names property; | ||
7 | - clock-names : should contain "apb" and "ir" entries; | ||
8 | - interrupts : should contain IR IRQ number; | ||
9 | - reg : should contain IO map address for IR. | ||
10 | |||
11 | Optional properties: | ||
12 | - linux,rc-map-name : Remote control map name. | ||
13 | |||
14 | Example: | ||
15 | |||
16 | ir0: ir@01c21800 { | ||
17 | compatible = "allwinner,sun4i-a10-ir"; | ||
18 | clocks = <&apb0_gates 6>, <&ir0_clk>; | ||
19 | clock-names = "apb", "ir"; | ||
20 | interrupts = <0 5 1>; | ||
21 | reg = <0x01C21800 0x40>; | ||
22 | linux,rc-map-name = "rc-rc6-mce"; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/mfd/arizona.txt b/Documentation/devicetree/bindings/mfd/arizona.txt index 36a0c3d8c726..5c7e7230984a 100644 --- a/Documentation/devicetree/bindings/mfd/arizona.txt +++ b/Documentation/devicetree/bindings/mfd/arizona.txt | |||
@@ -42,6 +42,16 @@ Optional properties: | |||
42 | the chip default will be used. If present exactly five values must | 42 | the chip default will be used. If present exactly five values must |
43 | be specified. | 43 | be specified. |
44 | 44 | ||
45 | - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if | ||
46 | they are being externally supplied. As covered in | ||
47 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
48 | |||
49 | Optional subnodes: | ||
50 | - ldo1 : Initial data for the LDO1 regulator, as covered in | ||
51 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
52 | - micvdd : Initial data for the MICVDD regulator, as covered in | ||
53 | Documentation/devicetree/bindings/regulator/regulator.txt | ||
54 | |||
45 | Example: | 55 | Example: |
46 | 56 | ||
47 | codec: wm5102@1a { | 57 | codec: wm5102@1a { |
diff --git a/Documentation/devicetree/bindings/mfd/as3722.txt b/Documentation/devicetree/bindings/mfd/as3722.txt index 8edcb9bd873b..4f64b2a73169 100644 --- a/Documentation/devicetree/bindings/mfd/as3722.txt +++ b/Documentation/devicetree/bindings/mfd/as3722.txt | |||
@@ -13,6 +13,14 @@ Required properties: | |||
13 | The second cell is the flags, encoded as the trigger masks from binding document | 13 | The second cell is the flags, encoded as the trigger masks from binding document |
14 | interrupts.txt, using dt-bindings/irq. | 14 | interrupts.txt, using dt-bindings/irq. |
15 | 15 | ||
16 | Optional properties: | ||
17 | -------------------- | ||
18 | - ams,enable-internal-int-pullup: Boolean property, to enable internal pullup on | ||
19 | interrupt pin. Missing this will disable internal pullup on INT pin. | ||
20 | - ams,enable-internal-i2c-pullup: Boolean property, to enable internal pullup on | ||
21 | i2c scl/sda pins. Missing this will disable internal pullup on i2c | ||
22 | scl/sda lines. | ||
23 | |||
16 | Optional submodule and their properties: | 24 | Optional submodule and their properties: |
17 | ======================================= | 25 | ======================================= |
18 | 26 | ||
diff --git a/Documentation/devicetree/bindings/mfd/palmas.txt b/Documentation/devicetree/bindings/mfd/palmas.txt index e5f0f8303461..eda898978d33 100644 --- a/Documentation/devicetree/bindings/mfd/palmas.txt +++ b/Documentation/devicetree/bindings/mfd/palmas.txt | |||
@@ -6,6 +6,7 @@ twl6037 (palmas) | |||
6 | tps65913 (palmas) | 6 | tps65913 (palmas) |
7 | tps65914 (palmas) | 7 | tps65914 (palmas) |
8 | tps659038 | 8 | tps659038 |
9 | tps65917 | ||
9 | 10 | ||
10 | Required properties: | 11 | Required properties: |
11 | - compatible : Should be from the list | 12 | - compatible : Should be from the list |
@@ -16,6 +17,7 @@ Required properties: | |||
16 | ti,tps65914 | 17 | ti,tps65914 |
17 | ti,tps80036 | 18 | ti,tps80036 |
18 | ti,tps659038 | 19 | ti,tps659038 |
20 | ti,tps65917 | ||
19 | and also the generic series names | 21 | and also the generic series names |
20 | ti,palmas | 22 | ti,palmas |
21 | - interrupt-controller : palmas has its own internal IRQs | 23 | - interrupt-controller : palmas has its own internal IRQs |
diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt index d81ba30c0d8b..ba2d7f0f9c5f 100644 --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt | |||
@@ -1,5 +1,5 @@ | |||
1 | 1 | ||
2 | * Samsung S2MPS11 and S2MPS14 Voltage and Current Regulator | 2 | * Samsung S2MPS11, S2MPS14 and S2MPU02 Voltage and Current Regulator |
3 | 3 | ||
4 | The Samsung S2MPS11 is a multi-function device which includes voltage and | 4 | The Samsung S2MPS11 is a multi-function device which includes voltage and |
5 | current regulators, RTC, charger controller and other sub-blocks. It is | 5 | current regulators, RTC, charger controller and other sub-blocks. It is |
@@ -7,7 +7,8 @@ interfaced to the host controller using an I2C interface. Each sub-block is | |||
7 | addressed by the host system using different I2C slave addresses. | 7 | addressed by the host system using different I2C slave addresses. |
8 | 8 | ||
9 | Required properties: | 9 | Required properties: |
10 | - compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic". | 10 | - compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic" |
11 | or "samsung,s2mpu02-pmic". | ||
11 | - reg: Specifies the I2C slave address of the pmic block. It should be 0x66. | 12 | - reg: Specifies the I2C slave address of the pmic block. It should be 0x66. |
12 | 13 | ||
13 | Optional properties: | 14 | Optional properties: |
@@ -81,11 +82,13 @@ as per the datasheet of s2mps11. | |||
81 | - valid values for n are: | 82 | - valid values for n are: |
82 | - S2MPS11: 1 to 38 | 83 | - S2MPS11: 1 to 38 |
83 | - S2MPS14: 1 to 25 | 84 | - S2MPS14: 1 to 25 |
84 | - Example: LDO1, LD02, LDO28 | 85 | - S2MPU02: 1 to 28 |
86 | - Example: LDO1, LDO2, LDO28 | ||
85 | - BUCKn | 87 | - BUCKn |
86 | - valid values for n are: | 88 | - valid values for n are: |
87 | - S2MPS11: 1 to 10 | 89 | - S2MPS11: 1 to 10 |
88 | - S2MPS14: 1 to 5 | 90 | - S2MPS14: 1 to 5 |
91 | - S2MPU02: 1 to 7 | ||
89 | - Example: BUCK1, BUCK2, BUCK9 | 92 | - Example: BUCK1, BUCK2, BUCK9 |
90 | 93 | ||
91 | Example: | 94 | Example: |
@@ -96,7 +99,7 @@ Example: | |||
96 | 99 | ||
97 | s2m_osc: clocks { | 100 | s2m_osc: clocks { |
98 | compatible = "samsung,s2mps11-clk"; | 101 | compatible = "samsung,s2mps11-clk"; |
99 | #clock-cells = 1; | 102 | #clock-cells = <1>; |
100 | clock-output-names = "xx", "yy", "zz"; | 103 | clock-output-names = "xx", "yy", "zz"; |
101 | }; | 104 | }; |
102 | 105 | ||
diff --git a/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt b/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt index 1f5a31fef907..03c5a551da55 100644 --- a/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt +++ b/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt | |||
@@ -4,7 +4,7 @@ PRCM is an MFD device exposing several Power Management related devices | |||
4 | (like clks and reset controllers). | 4 | (like clks and reset controllers). |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: "allwinner,sun6i-a31-prcm" | 7 | - compatible: "allwinner,sun6i-a31-prcm" or "allwinner,sun8i-a23-prcm" |
8 | - reg: The PRCM registers range | 8 | - reg: The PRCM registers range |
9 | 9 | ||
10 | The prcm node may contain several subdevices definitions: | 10 | The prcm node may contain several subdevices definitions: |
diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt new file mode 100644 index 000000000000..b97b8bef1fe5 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/nvidia,tegra20-apbmisc.txt | |||
@@ -0,0 +1,13 @@ | |||
1 | NVIDIA Tegra20/Tegra30/Tegr114/Tegra124 apbmisc block | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be: | ||
5 | "nvidia,tegra20-apbmisc" | ||
6 | "nvidia,tegra30-apbmisc" | ||
7 | "nvidia,tegra114-apbmisc" | ||
8 | "nvidia,tegra124-apbmisc" | ||
9 | - reg: Should contain 2 entries: the first entry gives the physical address | ||
10 | and length of the registers which contain revision and debug features. | ||
11 | The second entry gives the physical address and length of the | ||
12 | registers indicating the strapping options. | ||
13 | |||
diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt index 458d59634688..a011fdf61dbf 100644 --- a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt +++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt | |||
@@ -25,6 +25,16 @@ Optional properties: | |||
25 | discoverable or this property is not enabled, | 25 | discoverable or this property is not enabled, |
26 | the software may chooses an implementation-defined | 26 | the software may chooses an implementation-defined |
27 | ECC scheme. | 27 | ECC scheme. |
28 | - fsl,no-blockmark-swap: Don't swap the bad block marker from the OOB | ||
29 | area with the byte in the data area but rely on the | ||
30 | flash based BBT for identifying bad blocks. | ||
31 | NOTE: this is only valid in conjunction with | ||
32 | 'nand-on-flash-bbt'. | ||
33 | WARNING: on i.MX28 blockmark swapping cannot be | ||
34 | disabled for the BootROM in the FCB. Thus, | ||
35 | partitions written from Linux with this feature | ||
36 | turned on may not be accessible by the BootROM | ||
37 | code. | ||
28 | 38 | ||
29 | The device tree may optionally contain sub-nodes describing partitions of the | 39 | The device tree may optionally contain sub-nodes describing partitions of the |
30 | address space. See partition.txt for more detail. | 40 | address space. See partition.txt for more detail. |
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt index d01ed63d3ebb..42409bfe04c4 100644 --- a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt +++ b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt | |||
@@ -8,10 +8,16 @@ Required properties: | |||
8 | - SerDes integration registers (1/2) | 8 | - SerDes integration registers (1/2) |
9 | - SerDes integration registers (2/2) | 9 | - SerDes integration registers (2/2) |
10 | 10 | ||
11 | Optional properties: | ||
12 | - amd,speed-set: Speed capabilities of the device | ||
13 | 0 - 1GbE and 10GbE (default) | ||
14 | 1 - 2.5GbE and 10GbE | ||
15 | |||
11 | Example: | 16 | Example: |
12 | xgbe_phy@e1240800 { | 17 | xgbe_phy@e1240800 { |
13 | compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; | 18 | compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; |
14 | reg = <0 0xe1240800 0 0x00400>, | 19 | reg = <0 0xe1240800 0 0x00400>, |
15 | <0 0xe1250000 0 0x00060>, | 20 | <0 0xe1250000 0 0x00060>, |
16 | <0 0xe1250080 0 0x00004>; | 21 | <0 0xe1250080 0 0x00004>; |
22 | amd,speed-set = <0>; | ||
17 | }; | 23 | }; |
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe.txt b/Documentation/devicetree/bindings/net/amd-xgbe.txt index ea0c7908a3b8..41354f730beb 100644 --- a/Documentation/devicetree/bindings/net/amd-xgbe.txt +++ b/Documentation/devicetree/bindings/net/amd-xgbe.txt | |||
@@ -8,16 +8,21 @@ Required properties: | |||
8 | - interrupt-parent: Should be the phandle for the interrupt controller | 8 | - interrupt-parent: Should be the phandle for the interrupt controller |
9 | that services interrupts for this device | 9 | that services interrupts for this device |
10 | - interrupts: Should contain the amd-xgbe interrupt | 10 | - interrupts: Should contain the amd-xgbe interrupt |
11 | - clocks: Should be the DMA clock for the amd-xgbe device (used for | 11 | - clocks: |
12 | calculating the correct Rx interrupt watchdog timer value on a DMA | 12 | - DMA clock for the amd-xgbe device (used for calculating the |
13 | channel for coalescing) | 13 | correct Rx interrupt watchdog timer value on a DMA channel |
14 | - clock-names: Should be the name of the DMA clock, "dma_clk" | 14 | for coalescing) |
15 | - PTP clock for the amd-xgbe device | ||
16 | - clock-names: Should be the names of the clocks | ||
17 | - "dma_clk" for the DMA clock | ||
18 | - "ptp_clk" for the PTP clock | ||
15 | - phy-handle: See ethernet.txt file in the same directory | 19 | - phy-handle: See ethernet.txt file in the same directory |
16 | - phy-mode: See ethernet.txt file in the same directory | 20 | - phy-mode: See ethernet.txt file in the same directory |
17 | 21 | ||
18 | Optional properties: | 22 | Optional properties: |
19 | - mac-address: mac address to be assigned to the device. Can be overridden | 23 | - mac-address: mac address to be assigned to the device. Can be overridden |
20 | by UEFI. | 24 | by UEFI. |
25 | - dma-coherent: Present if dma operations are coherent | ||
21 | 26 | ||
22 | Example: | 27 | Example: |
23 | xgbe@e0700000 { | 28 | xgbe@e0700000 { |
@@ -26,8 +31,8 @@ Example: | |||
26 | <0 0xe0780000 0 0x80000>; | 31 | <0 0xe0780000 0 0x80000>; |
27 | interrupt-parent = <&gic>; | 32 | interrupt-parent = <&gic>; |
28 | interrupts = <0 325 4>; | 33 | interrupts = <0 325 4>; |
29 | clocks = <&xgbe_clk>; | 34 | clocks = <&xgbe_dma_clk>, <&xgbe_ptp_clk>; |
30 | clock-names = "dma_clk"; | 35 | clock-names = "dma_clk", "ptp_clk"; |
31 | phy-handle = <&phy>; | 36 | phy-handle = <&phy>; |
32 | phy-mode = "xgmii"; | 37 | phy-mode = "xgmii"; |
33 | mac-address = [ 02 a1 a2 a3 a4 a5 ]; | 38 | mac-address = [ 02 a1 a2 a3 a4 a5 ]; |
diff --git a/Documentation/devicetree/bindings/net/broadcom-systemport.txt b/Documentation/devicetree/bindings/net/broadcom-systemport.txt index c183ea90d9bc..aa7ad622259d 100644 --- a/Documentation/devicetree/bindings/net/broadcom-systemport.txt +++ b/Documentation/devicetree/bindings/net/broadcom-systemport.txt | |||
@@ -4,7 +4,8 @@ Required properties: | |||
4 | - compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" | 4 | - compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" |
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: interrupts for the device, first cell must be for the the rx | 6 | - interrupts: interrupts for the device, first cell must be for the the rx |
7 | interrupts, and the second cell should be for the transmit queues | 7 | interrupts, and the second cell should be for the transmit queues. An |
8 | optional third interrupt cell for Wake-on-LAN can be specified | ||
8 | - local-mac-address: Ethernet MAC address (48 bits) of this adapter | 9 | - local-mac-address: Ethernet MAC address (48 bits) of this adapter |
9 | - phy-mode: Should be a string describing the PHY interface to the | 10 | - phy-mode: Should be a string describing the PHY interface to the |
10 | Ethernet switch/PHY, see Documentation/devicetree/bindings/net/ethernet.txt | 11 | Ethernet switch/PHY, see Documentation/devicetree/bindings/net/ethernet.txt |
diff --git a/Documentation/devicetree/bindings/net/davinci-mdio.txt b/Documentation/devicetree/bindings/net/davinci-mdio.txt index 72efaaf764f7..0369e25aabd2 100644 --- a/Documentation/devicetree/bindings/net/davinci-mdio.txt +++ b/Documentation/devicetree/bindings/net/davinci-mdio.txt | |||
@@ -1,8 +1,8 @@ | |||
1 | TI SoC Davinci MDIO Controller Device Tree Bindings | 1 | TI SoC Davinci/Keystone2 MDIO Controller Device Tree Bindings |
2 | --------------------------------------------------- | 2 | --------------------------------------------------- |
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible : Should be "ti,davinci_mdio" | 5 | - compatible : Should be "ti,davinci_mdio" or "ti,keystone_mdio" |
6 | - reg : physical base address and size of the davinci mdio | 6 | - reg : physical base address and size of the davinci mdio |
7 | registers map | 7 | registers map |
8 | - bus_freq : Mdio Bus frequency | 8 | - bus_freq : Mdio Bus frequency |
@@ -19,7 +19,7 @@ file. | |||
19 | Examples: | 19 | Examples: |
20 | 20 | ||
21 | mdio: davinci_mdio@4A101000 { | 21 | mdio: davinci_mdio@4A101000 { |
22 | compatible = "ti,cpsw"; | 22 | compatible = "ti,davinci_mdio"; |
23 | reg = <0x4A101000 0x1000>; | 23 | reg = <0x4A101000 0x1000>; |
24 | bus_freq = <1000000>; | 24 | bus_freq = <1000000>; |
25 | }; | 25 | }; |
@@ -27,7 +27,7 @@ Examples: | |||
27 | (or) | 27 | (or) |
28 | 28 | ||
29 | mdio: davinci_mdio@4A101000 { | 29 | mdio: davinci_mdio@4A101000 { |
30 | compatible = "ti,cpsw"; | 30 | compatible = "ti,davinci_mdio"; |
31 | ti,hwmods = "davinci_mdio"; | 31 | ti,hwmods = "davinci_mdio"; |
32 | bus_freq = <1000000>; | 32 | bus_freq = <1000000>; |
33 | }; | 33 | }; |
diff --git a/Documentation/devicetree/bindings/net/ieee802154/cc2520.txt b/Documentation/devicetree/bindings/net/ieee802154/cc2520.txt new file mode 100644 index 000000000000..0071883c08d8 --- /dev/null +++ b/Documentation/devicetree/bindings/net/ieee802154/cc2520.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | *CC2520 IEEE 802.15.4 Compatible Radio* | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "ti,cc2520" | ||
5 | - spi-max-frequency: maximal bus speed (8000000), should be set to 4000000 depends | ||
6 | sync or async operation mode | ||
7 | - reg: the chipselect index | ||
8 | - pinctrl-0: pin control group to be used for this controller. | ||
9 | - pinctrl-names: must contain a "default" entry. | ||
10 | - fifo-gpio: GPIO spec for the FIFO pin | ||
11 | - fifop-gpio: GPIO spec for the FIFOP pin | ||
12 | - sfd-gpio: GPIO spec for the SFD pin | ||
13 | - cca-gpio: GPIO spec for the CCA pin | ||
14 | - vreg-gpio: GPIO spec for the VREG pin | ||
15 | - reset-gpio: GPIO spec for the RESET pin | ||
16 | Example: | ||
17 | cc2520@0 { | ||
18 | compatible = "ti,cc2520"; | ||
19 | reg = <0>; | ||
20 | spi-max-frequency = <4000000>; | ||
21 | pinctrl-names = "default"; | ||
22 | pinctrl-0 = <&cc2520_cape_pins>; | ||
23 | fifo-gpio = <&gpio1 18 0>; | ||
24 | fifop-gpio = <&gpio1 19 0>; | ||
25 | sfd-gpio = <&gpio1 13 0>; | ||
26 | cca-gpio = <&gpio1 16 0>; | ||
27 | vreg-gpio = <&gpio0 31 0>; | ||
28 | reset-gpio = <&gpio1 12 0>; | ||
29 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/marvell-pp2.txt b/Documentation/devicetree/bindings/net/marvell-pp2.txt new file mode 100644 index 000000000000..aa4f4230bfd7 --- /dev/null +++ b/Documentation/devicetree/bindings/net/marvell-pp2.txt | |||
@@ -0,0 +1,61 @@ | |||
1 | * Marvell Armada 375 Ethernet Controller (PPv2) | ||
2 | |||
3 | Required properties: | ||
4 | |||
5 | - compatible: should be "marvell,armada-375-pp2" | ||
6 | - reg: addresses and length of the register sets for the device. | ||
7 | Must contain the following register sets: | ||
8 | - common controller registers | ||
9 | - LMS registers | ||
10 | In addition, at least one port register set is required. | ||
11 | - clocks: a pointer to the reference clocks for this device, consequently: | ||
12 | - main controller clock | ||
13 | - GOP clock | ||
14 | - clock-names: names of used clocks, must be "pp_clk" and "gop_clk". | ||
15 | |||
16 | The ethernet ports are represented by subnodes. At least one port is | ||
17 | required. | ||
18 | |||
19 | Required properties (port): | ||
20 | |||
21 | - interrupts: interrupt for the port | ||
22 | - port-id: should be '0' or '1' for ethernet ports, and '2' for the | ||
23 | loopback port | ||
24 | - phy-mode: See ethernet.txt file in the same directory | ||
25 | |||
26 | Optional properties (port): | ||
27 | |||
28 | - marvell,loopback: port is loopback mode | ||
29 | - phy: a phandle to a phy node defining the PHY address (as the reg | ||
30 | property, a single integer). Note: if this property isn't present, | ||
31 | then fixed link is assumed, and the 'fixed-link' property is | ||
32 | mandatory. | ||
33 | |||
34 | Example: | ||
35 | |||
36 | ethernet@f0000 { | ||
37 | compatible = "marvell,armada-375-pp2"; | ||
38 | reg = <0xf0000 0xa000>, | ||
39 | <0xc0000 0x3060>, | ||
40 | <0xc4000 0x100>, | ||
41 | <0xc5000 0x100>; | ||
42 | clocks = <&gateclk 3>, <&gateclk 19>; | ||
43 | clock-names = "pp_clk", "gop_clk"; | ||
44 | status = "okay"; | ||
45 | |||
46 | eth0: eth0@c4000 { | ||
47 | interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; | ||
48 | port-id = <0>; | ||
49 | status = "okay"; | ||
50 | phy = <&phy0>; | ||
51 | phy-mode = "gmii"; | ||
52 | }; | ||
53 | |||
54 | eth1: eth1@c5000 { | ||
55 | interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; | ||
56 | port-id = <1>; | ||
57 | status = "okay"; | ||
58 | phy = <&phy3>; | ||
59 | phy-mode = "gmii"; | ||
60 | }; | ||
61 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt new file mode 100644 index 000000000000..3b58ae480344 --- /dev/null +++ b/Documentation/devicetree/bindings/net/nfc/st21nfcb.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | * STMicroelectronics SAS. ST21NFCB NFC Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Should be "st,st21nfcb_i2c". | ||
5 | - clock-frequency: I²C work frequency. | ||
6 | - reg: address on the bus | ||
7 | - interrupt-parent: phandle for the interrupt gpio controller | ||
8 | - interrupts: GPIO interrupt to which the chip is connected | ||
9 | - reset-gpios: Output GPIO pin used to reset the ST21NFCB | ||
10 | |||
11 | Optional SoC Specific Properties: | ||
12 | - pinctrl-names: Contains only one value - "default". | ||
13 | - pintctrl-0: Specifies the pin control groups used for this controller. | ||
14 | |||
15 | Example (for ARM-based BeagleBoard xM with ST21NFCB on I2C2): | ||
16 | |||
17 | &i2c2 { | ||
18 | |||
19 | status = "okay"; | ||
20 | |||
21 | st21nfcb: st21nfcb@8 { | ||
22 | |||
23 | compatible = "st,st21nfcb_i2c"; | ||
24 | |||
25 | reg = <0x08>; | ||
26 | clock-frequency = <400000>; | ||
27 | |||
28 | interrupt-parent = <&gpio5>; | ||
29 | interrupts = <2 IRQ_TYPE_LEVEL_LOW>; | ||
30 | |||
31 | reset-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; | ||
32 | }; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/net/sh_eth.txt b/Documentation/devicetree/bindings/net/sh_eth.txt index e7106b50dbdc..34d4db1a4e25 100644 --- a/Documentation/devicetree/bindings/net/sh_eth.txt +++ b/Documentation/devicetree/bindings/net/sh_eth.txt | |||
@@ -9,6 +9,7 @@ Required properties: | |||
9 | "renesas,ether-r8a7779" if the device is a part of R8A7779 SoC. | 9 | "renesas,ether-r8a7779" if the device is a part of R8A7779 SoC. |
10 | "renesas,ether-r8a7790" if the device is a part of R8A7790 SoC. | 10 | "renesas,ether-r8a7790" if the device is a part of R8A7790 SoC. |
11 | "renesas,ether-r8a7791" if the device is a part of R8A7791 SoC. | 11 | "renesas,ether-r8a7791" if the device is a part of R8A7791 SoC. |
12 | "renesas,ether-r8a7794" if the device is a part of R8A7794 SoC. | ||
12 | "renesas,ether-r7s72100" if the device is a part of R7S72100 SoC. | 13 | "renesas,ether-r7s72100" if the device is a part of R7S72100 SoC. |
13 | - reg: offset and length of (1) the E-DMAC/feLic register block (required), | 14 | - reg: offset and length of (1) the E-DMAC/feLic register block (required), |
14 | (2) the TSU register block (optional). | 15 | (2) the TSU register block (optional). |
diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt index a2acd2b26baf..9b03c57563a4 100644 --- a/Documentation/devicetree/bindings/net/stmmac.txt +++ b/Documentation/devicetree/bindings/net/stmmac.txt | |||
@@ -25,6 +25,10 @@ Required properties: | |||
25 | - snps,force_sf_dma_mode Force DMA to use the Store and Forward | 25 | - snps,force_sf_dma_mode Force DMA to use the Store and Forward |
26 | mode for both tx and rx. This flag is | 26 | mode for both tx and rx. This flag is |
27 | ignored if force_thresh_dma_mode is set. | 27 | ignored if force_thresh_dma_mode is set. |
28 | - snps,multicast-filter-bins: Number of multicast filter hash bins | ||
29 | supported by this device instance | ||
30 | - snps,perfect-filter-entries: Number of perfect filter entries supported | ||
31 | by this device instance | ||
28 | 32 | ||
29 | Optional properties: | 33 | Optional properties: |
30 | - resets: Should contain a phandle to the STMMAC reset signal, if any | 34 | - resets: Should contain a phandle to the STMMAC reset signal, if any |
@@ -47,6 +51,8 @@ Examples: | |||
47 | mac-address = [000000000000]; /* Filled in by U-Boot */ | 51 | mac-address = [000000000000]; /* Filled in by U-Boot */ |
48 | max-frame-size = <3800>; | 52 | max-frame-size = <3800>; |
49 | phy-mode = "gmii"; | 53 | phy-mode = "gmii"; |
54 | snps,multicast-filter-bins = <256>; | ||
55 | snps,perfect-filter-entries = <128>; | ||
50 | clocks = <&clock>; | 56 | clocks = <&clock>; |
51 | clock-names = "stmmaceth">; | 57 | clock-names = "stmmaceth">; |
52 | }; | 58 | }; |
diff --git a/Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt b/Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt new file mode 100644 index 000000000000..5dbf169cd81c --- /dev/null +++ b/Documentation/devicetree/bindings/net/wireless/brcm,bcm43xx-fmac.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | Broadcom BCM43xx Fullmac wireless SDIO devices | ||
2 | |||
3 | This node provides properties for controlling the Broadcom wireless device. The | ||
4 | node is expected to be specified as a child node to the SDIO controller that | ||
5 | connects the device to the system. | ||
6 | |||
7 | Required properties: | ||
8 | |||
9 | - compatible : Should be "brcm,bcm4329-fmac". | ||
10 | |||
11 | Optional properties: | ||
12 | - brcm,drive-strength : drive strength used for SDIO pins on device in mA | ||
13 | (default = 6). | ||
14 | - interrupt-parent : the phandle for the interrupt controller to which the | ||
15 | device interrupts are connected. | ||
16 | - interrupts : specifies attributes for the out-of-band interrupt (host-wake). | ||
17 | When not specified the device will use in-band SDIO interrupts. | ||
18 | - interrupt-names : name of the out-of-band interrupt, which must be set | ||
19 | to "host-wake". | ||
20 | |||
21 | Example: | ||
22 | |||
23 | mmc3: mmc@01c12000 { | ||
24 | #address-cells = <1>; | ||
25 | #size-cells = <0>; | ||
26 | |||
27 | pinctrl-names = "default"; | ||
28 | pinctrl-0 = <&mmc3_pins_a>; | ||
29 | vmmc-supply = <®_vmmc3>; | ||
30 | bus-width = <4>; | ||
31 | non-removable; | ||
32 | status = "okay"; | ||
33 | |||
34 | brcmf: bcrmf@1 { | ||
35 | reg = <1>; | ||
36 | compatible = "brcm,bcm4329-fmac"; | ||
37 | interrupt-parent = <&pio>; | ||
38 | interrupts = <10 8>; /* PH10 / EINT10 */ | ||
39 | interrupt-names = "host-wake"; | ||
40 | }; | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/panel/auo,b133htn01.txt b/Documentation/devicetree/bindings/panel/auo,b133htn01.txt new file mode 100644 index 000000000000..302226b5bb55 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/auo,b133htn01.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | AU Optronics Corporation 13.3" FHD (1920x1080) color TFT-LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "auo,b133htn01" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/foxlink,fl500wvr00-a0t.txt b/Documentation/devicetree/bindings/panel/foxlink,fl500wvr00-a0t.txt new file mode 100644 index 000000000000..b47f9d87bc19 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/foxlink,fl500wvr00-a0t.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Foxlink Group 5" WVGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "foxlink,fl500wvr00-a0t" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/innolux,n116bge.txt b/Documentation/devicetree/bindings/panel/innolux,n116bge.txt new file mode 100644 index 000000000000..081bb939ed31 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/innolux,n116bge.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | Innolux Corporation 11.6" WXGA (1366x768) TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "innolux,n116bge" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/panel/innolux,n156bge-l21.txt b/Documentation/devicetree/bindings/panel/innolux,n156bge-l21.txt new file mode 100644 index 000000000000..7825844aafdf --- /dev/null +++ b/Documentation/devicetree/bindings/panel/innolux,n156bge-l21.txt | |||
@@ -0,0 +1,7 @@ | |||
1 | InnoLux 15.6" WXGA TFT LCD panel | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "innolux,n156bge-l21" | ||
5 | |||
6 | This binding is compatible with the simple-panel binding, which is specified | ||
7 | in simple-panel.txt in this directory. | ||
diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt index c300391e8d3e..0823362548dc 100644 --- a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt +++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt | |||
@@ -14,9 +14,6 @@ Required properties: | |||
14 | - interrupt-names: Must include the following entries: | 14 | - interrupt-names: Must include the following entries: |
15 | "intr": The Tegra interrupt that is asserted for controller interrupts | 15 | "intr": The Tegra interrupt that is asserted for controller interrupts |
16 | "msi": The Tegra interrupt that is asserted when an MSI is received | 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 | 17 | - bus-range: Range of bus numbers associated with this controller |
21 | - #address-cells: Address representation for root ports (must be 3) | 18 | - #address-cells: Address representation for root ports (must be 3) |
22 | - cell 0 specifies the bus and device numbers of the root port: | 19 | - cell 0 specifies the bus and device numbers of the root port: |
@@ -60,6 +57,33 @@ Required properties: | |||
60 | - afi | 57 | - afi |
61 | - pcie_x | 58 | - pcie_x |
62 | 59 | ||
60 | Power supplies for Tegra20: | ||
61 | - avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. | ||
62 | - vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. | ||
63 | - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must | ||
64 | supply 1.05 V. | ||
65 | - avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must | ||
66 | supply 1.05 V. | ||
67 | - vddio-pex-clk-supply: Power supply for PCIe clock. Must supply 3.3 V. | ||
68 | |||
69 | Power supplies for Tegra30: | ||
70 | - Required: | ||
71 | - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must | ||
72 | supply 1.05 V. | ||
73 | - avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must | ||
74 | supply 1.05 V. | ||
75 | - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must | ||
76 | supply 1.8 V. | ||
77 | - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. | ||
78 | Must supply 3.3 V. | ||
79 | - Optional: | ||
80 | - If lanes 0 to 3 are used: | ||
81 | - avdd-pexa-supply: Power supply for analog PCIe logic. Must supply 1.05 V. | ||
82 | - vdd-pexa-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. | ||
83 | - If lanes 4 or 5 are used: | ||
84 | - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V. | ||
85 | - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. | ||
86 | |||
63 | Root ports are defined as subnodes of the PCIe controller node. | 87 | Root ports are defined as subnodes of the PCIe controller node. |
64 | 88 | ||
65 | Required properties: | 89 | Required properties: |
diff --git a/Documentation/devicetree/bindings/pci/spear13xx-pcie.txt b/Documentation/devicetree/bindings/pci/spear13xx-pcie.txt new file mode 100644 index 000000000000..49ea76da7718 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/spear13xx-pcie.txt | |||
@@ -0,0 +1,14 @@ | |||
1 | SPEAr13XX PCIe DT detail: | ||
2 | ================================ | ||
3 | |||
4 | SPEAr13XX uses synopsis designware PCIe controller and ST MiPHY as phy | ||
5 | controller. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible : should be "st,spear1340-pcie", "snps,dw-pcie". | ||
9 | - phys : phandle to phy node associated with pcie controller | ||
10 | - phy-names : must be "pcie-phy" | ||
11 | - All other definitions as per generic PCI bindings | ||
12 | |||
13 | Optional properties: | ||
14 | - st,pcie-is-gen1 indicates that forced gen1 initialization is needed. | ||
diff --git a/Documentation/devicetree/bindings/phy/berlin-sata-phy.txt b/Documentation/devicetree/bindings/phy/berlin-sata-phy.txt new file mode 100644 index 000000000000..88f8c23384c0 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/berlin-sata-phy.txt | |||
@@ -0,0 +1,34 @@ | |||
1 | Berlin SATA PHY | ||
2 | --------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: should be "marvell,berlin2q-sata-phy" | ||
6 | - address-cells: should be 1 | ||
7 | - size-cells: should be 0 | ||
8 | - phy-cells: from the generic PHY bindings, must be 1 | ||
9 | - reg: address and length of the register | ||
10 | - clocks: reference to the clock entry | ||
11 | |||
12 | Sub-nodes: | ||
13 | Each PHY should be represented as a sub-node. | ||
14 | |||
15 | Sub-nodes required properties: | ||
16 | - reg: the PHY number | ||
17 | |||
18 | Example: | ||
19 | sata_phy: phy@f7e900a0 { | ||
20 | compatible = "marvell,berlin2q-sata-phy"; | ||
21 | reg = <0xf7e900a0 0x200>; | ||
22 | clocks = <&chip CLKID_SATA>; | ||
23 | #address-cells = <1>; | ||
24 | #size-cells = <0>; | ||
25 | #phy-cells = <1>; | ||
26 | |||
27 | sata-phy@0 { | ||
28 | reg = <0>; | ||
29 | }; | ||
30 | |||
31 | sata-phy@1 { | ||
32 | reg = <1>; | ||
33 | }; | ||
34 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/hix5hd2-phy.txt b/Documentation/devicetree/bindings/phy/hix5hd2-phy.txt new file mode 100644 index 000000000000..296168b74d24 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/hix5hd2-phy.txt | |||
@@ -0,0 +1,22 @@ | |||
1 | Hisilicon hix5hd2 SATA PHY | ||
2 | ----------------------- | ||
3 | |||
4 | Required properties: | ||
5 | - compatible: should be "hisilicon,hix5hd2-sata-phy" | ||
6 | - reg: offset and length of the PHY registers | ||
7 | - #phy-cells: must be 0 | ||
8 | Refer to phy/phy-bindings.txt for the generic PHY binding properties | ||
9 | |||
10 | Optional Properties: | ||
11 | - hisilicon,peripheral-syscon: phandle of syscon used to control peripheral. | ||
12 | - hisilicon,power-reg: offset and bit number within peripheral-syscon, | ||
13 | register of controlling sata power supply. | ||
14 | |||
15 | Example: | ||
16 | sata_phy: phy@f9900000 { | ||
17 | compatible = "hisilicon,hix5hd2-sata-phy"; | ||
18 | reg = <0xf9900000 0x10000>; | ||
19 | #phy-cells = <0>; | ||
20 | hisilicon,peripheral-syscon = <&peripheral_ctrl>; | ||
21 | hisilicon,power-reg = <0x8 10>; | ||
22 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/phy-bindings.txt b/Documentation/devicetree/bindings/phy/phy-bindings.txt index 8ae844fc0c60..2aa1840200ed 100644 --- a/Documentation/devicetree/bindings/phy/phy-bindings.txt +++ b/Documentation/devicetree/bindings/phy/phy-bindings.txt | |||
@@ -10,6 +10,10 @@ Required Properties: | |||
10 | provider can use the values in cells to find the appropriate | 10 | provider can use the values in cells to find the appropriate |
11 | PHY. | 11 | PHY. |
12 | 12 | ||
13 | Optional Properties: | ||
14 | phy-supply: Phandle to a regulator that provides power to the PHY. This | ||
15 | regulator will be managed during the PHY power on/off sequence. | ||
16 | |||
13 | For example: | 17 | For example: |
14 | 18 | ||
15 | phys: phy { | 19 | phys: phy { |
diff --git a/Documentation/devicetree/bindings/phy/phy-miphy365x.txt b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt new file mode 100644 index 000000000000..42c880886cf7 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/phy-miphy365x.txt | |||
@@ -0,0 +1,76 @@ | |||
1 | STMicroelectronics STi MIPHY365x PHY binding | ||
2 | ============================================ | ||
3 | |||
4 | This binding describes a miphy device that is used to control PHY hardware | ||
5 | for SATA and PCIe. | ||
6 | |||
7 | Required properties (controller (parent) node): | ||
8 | - compatible : Should be "st,miphy365x-phy" | ||
9 | - st,syscfg : Should be a phandle of the system configuration register group | ||
10 | which contain the SATA, PCIe mode setting bits | ||
11 | |||
12 | Required nodes : A sub-node is required for each channel the controller | ||
13 | provides. Address range information including the usual | ||
14 | 'reg' and 'reg-names' properties are used inside these | ||
15 | nodes to describe the controller's topology. These nodes | ||
16 | are translated by the driver's .xlate() function. | ||
17 | |||
18 | Required properties (port (child) node): | ||
19 | - #phy-cells : Should be 1 (See second example) | ||
20 | Cell after port phandle is device type from: | ||
21 | - MIPHY_TYPE_SATA | ||
22 | - MIPHY_TYPE_PCI | ||
23 | - reg : Address and length of register sets for each device in | ||
24 | "reg-names" | ||
25 | - reg-names : The names of the register addresses corresponding to the | ||
26 | registers filled in "reg": | ||
27 | - sata: For SATA devices | ||
28 | - pcie: For PCIe devices | ||
29 | - syscfg: To specify the syscfg based config register | ||
30 | |||
31 | Optional properties (port (child) node): | ||
32 | - st,sata-gen : Generation of locally attached SATA IP. Expected values | ||
33 | are {1,2,3). If not supplied generation 1 hardware will | ||
34 | be expected | ||
35 | - st,pcie-tx-pol-inv : Bool property to invert the polarity PCIe Tx (Txn/Txp) | ||
36 | - st,sata-tx-pol-inv : Bool property to invert the polarity SATA Tx (Txn/Txp) | ||
37 | |||
38 | Example: | ||
39 | |||
40 | miphy365x_phy: miphy365x@fe382000 { | ||
41 | compatible = "st,miphy365x-phy"; | ||
42 | st,syscfg = <&syscfg_rear>; | ||
43 | #address-cells = <1>; | ||
44 | #size-cells = <1>; | ||
45 | ranges; | ||
46 | |||
47 | phy_port0: port@fe382000 { | ||
48 | reg = <0xfe382000 0x100>, <0xfe394000 0x100>, <0x824 0x4>; | ||
49 | reg-names = "sata", "pcie", "syscfg"; | ||
50 | #phy-cells = <1>; | ||
51 | st,sata-gen = <3>; | ||
52 | }; | ||
53 | |||
54 | phy_port1: port@fe38a000 { | ||
55 | reg = <0xfe38a000 0x100>, <0xfe804000 0x100>, <0x828 0x4>;; | ||
56 | reg-names = "sata", "pcie", "syscfg"; | ||
57 | #phy-cells = <1>; | ||
58 | st,pcie-tx-pol-inv; | ||
59 | }; | ||
60 | }; | ||
61 | |||
62 | Specifying phy control of devices | ||
63 | ================================= | ||
64 | |||
65 | Device nodes should specify the configuration required in their "phys" | ||
66 | property, containing a phandle to the phy port node and a device type. | ||
67 | |||
68 | Example: | ||
69 | |||
70 | #include <dt-bindings/phy/phy-miphy365x.h> | ||
71 | |||
72 | sata0: sata@fe380000 { | ||
73 | ... | ||
74 | phys = <&phy_port0 MIPHY_TYPE_SATA>; | ||
75 | ... | ||
76 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/qcom-apq8064-sata-phy.txt b/Documentation/devicetree/bindings/phy/qcom-apq8064-sata-phy.txt new file mode 100644 index 000000000000..952f6c96bab9 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/qcom-apq8064-sata-phy.txt | |||
@@ -0,0 +1,24 @@ | |||
1 | Qualcomm APQ8064 SATA PHY Controller | ||
2 | ------------------------------------ | ||
3 | |||
4 | SATA PHY nodes are defined to describe on-chip SATA Physical layer controllers. | ||
5 | Each SATA PHY controller should have its own node. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: compatible list, contains "qcom,apq8064-sata-phy". | ||
9 | - reg: offset and length of the SATA PHY register set; | ||
10 | - #phy-cells: must be zero | ||
11 | - clocks: a list of phandles and clock-specifier pairs, one for each entry in | ||
12 | clock-names. | ||
13 | - clock-names: must be "cfg" for phy config clock. | ||
14 | |||
15 | Example: | ||
16 | sata_phy: sata-phy@1b400000 { | ||
17 | compatible = "qcom,apq8064-sata-phy"; | ||
18 | reg = <0x1b400000 0x200>; | ||
19 | |||
20 | clocks = <&gcc SATA_PHY_CFG_CLK>; | ||
21 | clock-names = "cfg"; | ||
22 | |||
23 | #phy-cells = <0>; | ||
24 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/qcom-ipq806x-sata-phy.txt b/Documentation/devicetree/bindings/phy/qcom-ipq806x-sata-phy.txt new file mode 100644 index 000000000000..76bfbd056202 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/qcom-ipq806x-sata-phy.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | Qualcomm IPQ806x SATA PHY Controller | ||
2 | ------------------------------------ | ||
3 | |||
4 | SATA PHY nodes are defined to describe on-chip SATA Physical layer controllers. | ||
5 | Each SATA PHY controller should have its own node. | ||
6 | |||
7 | Required properties: | ||
8 | - compatible: compatible list, contains "qcom,ipq806x-sata-phy" | ||
9 | - reg: offset and length of the SATA PHY register set; | ||
10 | - #phy-cells: must be zero | ||
11 | - clocks: must be exactly one entry | ||
12 | - clock-names: must be "cfg" | ||
13 | |||
14 | Example: | ||
15 | sata_phy: sata-phy@1b400000 { | ||
16 | compatible = "qcom,ipq806x-sata-phy"; | ||
17 | reg = <0x1b400000 0x200>; | ||
18 | |||
19 | clocks = <&gcc SATA_PHY_CFG_CLK>; | ||
20 | clock-names = "cfg"; | ||
21 | |||
22 | #phy-cells = <0>; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index 2049261d8c31..7a6feea2a48b 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt | |||
@@ -26,9 +26,11 @@ Samsung S5P/EXYNOS SoC series USB PHY | |||
26 | 26 | ||
27 | Required properties: | 27 | Required properties: |
28 | - compatible : should be one of the listed compatibles: | 28 | - compatible : should be one of the listed compatibles: |
29 | - "samsung,exynos3250-usb2-phy" | ||
29 | - "samsung,exynos4210-usb2-phy" | 30 | - "samsung,exynos4210-usb2-phy" |
30 | - "samsung,exynos4x12-usb2-phy" | 31 | - "samsung,exynos4x12-usb2-phy" |
31 | - "samsung,exynos5250-usb2-phy" | 32 | - "samsung,exynos5250-usb2-phy" |
33 | - "samsung,s5pv210-usb2-phy" | ||
32 | - reg : a list of registers used by phy driver | 34 | - reg : a list of registers used by phy driver |
33 | - first and obligatory is the location of phy modules registers | 35 | - first and obligatory is the location of phy modules registers |
34 | - samsung,sysreg-phandle - handle to syscon used to control the system registers | 36 | - samsung,sysreg-phandle - handle to syscon used to control the system registers |
@@ -46,6 +48,7 @@ and Exynos 4212) it is as follows: | |||
46 | 1 - USB host ("host"), | 48 | 1 - USB host ("host"), |
47 | 2 - HSIC0 ("hsic0"), | 49 | 2 - HSIC0 ("hsic0"), |
48 | 3 - HSIC1 ("hsic1"), | 50 | 3 - HSIC1 ("hsic1"), |
51 | Exynos3250 has only USB device phy available as phy 0. | ||
49 | 52 | ||
50 | Exynos 4210 and Exynos 4212 use mode switching and require that mode switch | 53 | Exynos 4210 and Exynos 4212 use mode switching and require that mode switch |
51 | register is supplied. | 54 | register is supplied. |
diff --git a/Documentation/devicetree/bindings/phy/st-spear-miphy.txt b/Documentation/devicetree/bindings/phy/st-spear-miphy.txt new file mode 100644 index 000000000000..2a6bfdcc09b3 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/st-spear-miphy.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | ST SPEAr miphy DT details | ||
2 | ========================= | ||
3 | |||
4 | ST Microelectronics SPEAr miphy is a phy controller supporting PCIe and SATA. | ||
5 | |||
6 | Required properties: | ||
7 | - compatible : should be "st,spear1310-miphy" or "st,spear1340-miphy" | ||
8 | - reg : offset and length of the PHY register set. | ||
9 | - misc: phandle for the syscon node to access misc registers | ||
10 | - #phy-cells : from the generic PHY bindings, must be 1. | ||
11 | - cell[1]: 0 if phy used for SATA, 1 for PCIe. | ||
12 | |||
13 | Optional properties: | ||
14 | - phy-id: Instance id of the phy. Only required when there are multiple phys | ||
15 | present on a implementation. | ||
diff --git a/Documentation/devicetree/bindings/phy/ti-phy.txt b/Documentation/devicetree/bindings/phy/ti-phy.txt index 9ce458f32945..305e3df3d9b1 100644 --- a/Documentation/devicetree/bindings/phy/ti-phy.txt +++ b/Documentation/devicetree/bindings/phy/ti-phy.txt | |||
@@ -9,15 +9,17 @@ Required properties: | |||
9 | e.g. USB2_PHY on OMAP5. | 9 | e.g. USB2_PHY on OMAP5. |
10 | "ti,control-phy-pipe3" - if it has DPLL and individual Rx & Tx power control | 10 | "ti,control-phy-pipe3" - if it has DPLL and individual Rx & Tx power control |
11 | e.g. USB3 PHY and SATA PHY on OMAP5. | 11 | e.g. USB3 PHY and SATA PHY on OMAP5. |
12 | "ti,control-phy-pcie" - for pcie to support external clock for pcie and to | ||
13 | set PCS delay value. | ||
14 | e.g. PCIE PHY in DRA7x | ||
12 | "ti,control-phy-usb2-dra7" - if it has power down register like USB2 PHY on | 15 | "ti,control-phy-usb2-dra7" - if it has power down register like USB2 PHY on |
13 | DRA7 platform. | 16 | DRA7 platform. |
14 | "ti,control-phy-usb2-am437" - if it has power down register like USB2 PHY on | 17 | "ti,control-phy-usb2-am437" - if it has power down register like USB2 PHY on |
15 | AM437 platform. | 18 | AM437 platform. |
16 | - reg : Address and length of the register set for the device. It contains | 19 | - reg : register ranges as listed in the reg-names property |
17 | the address of "otghs_control" for control-phy-otghs or "power" register | 20 | - reg-names: "otghs_control" for control-phy-otghs |
18 | for other types. | 21 | "power", "pcie_pcs" and "control_sma" for control-phy-pcie |
19 | - reg-names: should be "otghs_control" control-phy-otghs and "power" for | 22 | "power" for all other types |
20 | other types. | ||
21 | 23 | ||
22 | omap_control_usb: omap-control-usb@4a002300 { | 24 | omap_control_usb: omap-control-usb@4a002300 { |
23 | compatible = "ti,control-phy-otghs"; | 25 | compatible = "ti,control-phy-otghs"; |
@@ -56,8 +58,8 @@ usb2phy@4a0ad080 { | |||
56 | TI PIPE3 PHY | 58 | TI PIPE3 PHY |
57 | 59 | ||
58 | Required properties: | 60 | Required properties: |
59 | - compatible: Should be "ti,phy-usb3" or "ti,phy-pipe3-sata". | 61 | - compatible: Should be "ti,phy-usb3", "ti,phy-pipe3-sata" or |
60 | "ti,omap-usb3" is deprecated. | 62 | "ti,phy-pipe3-pcie. "ti,omap-usb3" is deprecated. |
61 | - reg : Address and length of the register set for the device. | 63 | - reg : Address and length of the register set for the device. |
62 | - reg-names: The names of the register addresses corresponding to the registers | 64 | - reg-names: The names of the register addresses corresponding to the registers |
63 | filled in "reg". | 65 | filled in "reg". |
@@ -69,10 +71,17 @@ Required properties: | |||
69 | * "wkupclk" - wakeup clock. | 71 | * "wkupclk" - wakeup clock. |
70 | * "sysclk" - system clock. | 72 | * "sysclk" - system clock. |
71 | * "refclk" - reference clock. | 73 | * "refclk" - reference clock. |
74 | * "dpll_ref" - external dpll ref clk | ||
75 | * "dpll_ref_m2" - external dpll ref clk | ||
76 | * "phy-div" - divider for apll | ||
77 | * "div-clk" - apll clock | ||
72 | 78 | ||
73 | Optional properties: | 79 | Optional properties: |
74 | - ctrl-module : phandle of the control module used by PHY driver to power on | 80 | - ctrl-module : phandle of the control module used by PHY driver to power on |
75 | the PHY. | 81 | the PHY. |
82 | - id: If there are multiple instance of the same type, in order to | ||
83 | differentiate between each instance "id" can be used (e.g., multi-lane PCIe | ||
84 | PHY). If "id" is not provided, it is set to default value of '1'. | ||
76 | 85 | ||
77 | This is usually a subnode of ocp2scp to which it is connected. | 86 | This is usually a subnode of ocp2scp to which it is connected. |
78 | 87 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt index d8d065608ec0..93ce12eb422a 100644 --- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt | |||
@@ -13,6 +13,8 @@ Required properties: | |||
13 | "allwinner,sun6i-a31-pinctrl" | 13 | "allwinner,sun6i-a31-pinctrl" |
14 | "allwinner,sun6i-a31-r-pinctrl" | 14 | "allwinner,sun6i-a31-r-pinctrl" |
15 | "allwinner,sun7i-a20-pinctrl" | 15 | "allwinner,sun7i-a20-pinctrl" |
16 | "allwinner,sun8i-a23-pinctrl" | ||
17 | "allwinner,sun8i-a23-r-pinctrl" | ||
16 | - reg: Should contain the register physical address and length for the | 18 | - reg: Should contain the register physical address and length for the |
17 | pin controller. | 19 | pin controller. |
18 | 20 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt new file mode 100644 index 000000000000..2f9c0bd66457 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt | |||
@@ -0,0 +1,127 @@ | |||
1 | Device tree binding for NVIDIA Tegra XUSB pad controller | ||
2 | ======================================================== | ||
3 | |||
4 | The Tegra XUSB pad controller manages a set of lanes, each of which can be | ||
5 | assigned to one out of a set of different pads. Some of these pads have an | ||
6 | associated PHY that must be powered up before the pad can be used. | ||
7 | |||
8 | This document defines the device-specific binding for the XUSB pad controller. | ||
9 | |||
10 | Refer to pinctrl-bindings.txt in this directory for generic information about | ||
11 | pin controller device tree bindings and ../phy/phy-bindings.txt for details on | ||
12 | how to describe and reference PHYs in device trees. | ||
13 | |||
14 | Required properties: | ||
15 | -------------------- | ||
16 | - compatible: should be "nvidia,tegra124-xusb-padctl" | ||
17 | - reg: Physical base address and length of the controller's registers. | ||
18 | - resets: Must contain an entry for each entry in reset-names. | ||
19 | See ../reset/reset.txt for details. | ||
20 | - reset-names: Must include the following entries: | ||
21 | - padctl | ||
22 | - #phy-cells: Should be 1. The specifier is the index of the PHY to reference. | ||
23 | See <dt-bindings/pinctrl/pinctrl-tegra-xusb.h> for the list of valid values. | ||
24 | |||
25 | Lane muxing: | ||
26 | ------------ | ||
27 | |||
28 | Child nodes contain the pinmux configurations following the conventions from | ||
29 | the pinctrl-bindings.txt document. Typically a single, static configuration is | ||
30 | given and applied at boot time. | ||
31 | |||
32 | Each subnode describes groups of lanes along with parameters and pads that | ||
33 | they should be assigned to. The name of these subnodes is not important. All | ||
34 | subnodes should be parsed solely based on their content. | ||
35 | |||
36 | Each subnode only applies the parameters that are explicitly listed. In other | ||
37 | words, if a subnode that lists a function but no pin configuration parameters | ||
38 | implies no information about any pin configuration parameters. Similarly, a | ||
39 | subnode that describes only an IDDQ parameter implies no information about | ||
40 | what function the pins are assigned to. For this reason even seemingly boolean | ||
41 | values are actually tristates in this binding: unspecified, off or on. | ||
42 | Unspecified is represented as an absent property, and off/on are represented | ||
43 | as integer values 0 and 1. | ||
44 | |||
45 | Required properties: | ||
46 | - nvidia,lanes: An array of strings. Each string is the name of a lane. | ||
47 | |||
48 | Optional properties: | ||
49 | - nvidia,function: A string that is the name of the function (pad) that the | ||
50 | pin or group should be assigned to. Valid values for function names are | ||
51 | listed below. | ||
52 | - nvidia,iddq: Enables IDDQ mode of the lane. (0: no, 1: yes) | ||
53 | |||
54 | Note that not all of these properties are valid for all lanes. Lanes can be | ||
55 | divided into three groups: | ||
56 | |||
57 | - otg-0, otg-1, otg-2: | ||
58 | |||
59 | Valid functions for this group are: "snps", "xusb", "uart", "rsvd". | ||
60 | |||
61 | The nvidia,iddq property does not apply to this group. | ||
62 | |||
63 | - ulpi-0, hsic-0, hsic-1: | ||
64 | |||
65 | Valid functions for this group are: "snps", "xusb". | ||
66 | |||
67 | The nvidia,iddq property does not apply to this group. | ||
68 | |||
69 | - pcie-0, pcie-1, pcie-2, pcie-3, pcie-4, sata-0: | ||
70 | |||
71 | Valid functions for this group are: "pcie", "usb3", "sata", "rsvd". | ||
72 | |||
73 | |||
74 | Example: | ||
75 | ======== | ||
76 | |||
77 | SoC file extract: | ||
78 | ----------------- | ||
79 | |||
80 | padctl@0,7009f000 { | ||
81 | compatible = "nvidia,tegra124-xusb-padctl"; | ||
82 | reg = <0x0 0x7009f000 0x0 0x1000>; | ||
83 | resets = <&tegra_car 142>; | ||
84 | reset-names = "padctl"; | ||
85 | |||
86 | #phy-cells = <1>; | ||
87 | }; | ||
88 | |||
89 | Board file extract: | ||
90 | ------------------- | ||
91 | |||
92 | pcie-controller@0,01003000 { | ||
93 | ... | ||
94 | |||
95 | phys = <&padctl 0>; | ||
96 | phy-names = "pcie"; | ||
97 | |||
98 | ... | ||
99 | }; | ||
100 | |||
101 | ... | ||
102 | |||
103 | padctl: padctl@0,7009f000 { | ||
104 | pinctrl-0 = <&padctl_default>; | ||
105 | pinctrl-names = "default"; | ||
106 | |||
107 | padctl_default: pinmux { | ||
108 | usb3 { | ||
109 | nvidia,lanes = "pcie-0", "pcie-1"; | ||
110 | nvidia,function = "usb3"; | ||
111 | nvidia,iddq = <0>; | ||
112 | }; | ||
113 | |||
114 | pcie { | ||
115 | nvidia,lanes = "pcie-2", "pcie-3", | ||
116 | "pcie-4"; | ||
117 | nvidia,function = "pcie"; | ||
118 | nvidia,iddq = <0>; | ||
119 | }; | ||
120 | |||
121 | sata { | ||
122 | nvidia,lanes = "sata-0"; | ||
123 | nvidia,function = "sata"; | ||
124 | nvidia,iddq = <0>; | ||
125 | }; | ||
126 | }; | ||
127 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt index 7181f925acaa..0211c6d8a522 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt | |||
@@ -46,7 +46,7 @@ Valid values for pins are: | |||
46 | gpio0-gpio89 | 46 | gpio0-gpio89 |
47 | 47 | ||
48 | Valid values for function are: | 48 | Valid values for function are: |
49 | cam_mclk, codec_mic_i2s, codec_spkr_i2s, gsbi1, gsbi2, gsbi3, gsbi4, | 49 | cam_mclk, codec_mic_i2s, codec_spkr_i2s, gpio, gsbi1, gsbi2, gsbi3, gsbi4, |
50 | gsbi4_cam_i2c, gsbi5, gsbi5_spi_cs1, gsbi5_spi_cs2, gsbi5_spi_cs3, gsbi6, | 50 | gsbi4_cam_i2c, gsbi5, gsbi5_spi_cs1, gsbi5_spi_cs2, gsbi5_spi_cs3, gsbi6, |
51 | gsbi6_spi_cs1, gsbi6_spi_cs2, gsbi6_spi_cs3, gsbi7, gsbi7_spi_cs1, | 51 | gsbi6_spi_cs1, gsbi6_spi_cs2, gsbi6_spi_cs3, gsbi7, gsbi7_spi_cs1, |
52 | gsbi7_spi_cs2, gsbi7_spi_cs3, gsbi_cam_i2c, hdmi, mi2s, riva_bt, riva_fm, | 52 | gsbi7_spi_cs2, gsbi7_spi_cs3, gsbi_cam_i2c, hdmi, mi2s, riva_bt, riva_fm, |
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt index e0d35a40981b..e33e4dcdce79 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt | |||
@@ -51,7 +51,7 @@ Valid values for qcom,pins are: | |||
51 | 51 | ||
52 | 52 | ||
53 | Valid values for function are: | 53 | Valid values for function are: |
54 | mdio, mi2s, pdm, ssbi, spmi, audio_pcm, gsbi1, gsbi2, gsbi4, gsbi5, | 54 | mdio, mi2s, pdm, ssbi, spmi, audio_pcm, gpio, gsbi1, gsbi2, gsbi4, gsbi5, |
55 | gsbi5_spi_cs1, gsbi5_spi_cs2, gsbi5_spi_cs3, gsbi6, gsbi7, nss_spi, sdc1, | 55 | gsbi5_spi_cs1, gsbi5_spi_cs2, gsbi5_spi_cs3, gsbi6, gsbi7, nss_spi, sdc1, |
56 | spdif, nand, tsif1, tsif2, usb_fs_n, usb_fs, usb2_hsic, rgmii2, sata, | 56 | spdif, nand, tsif1, tsif2, usb_fs_n, usb_fs, usb2_hsic, rgmii2, sata, |
57 | pcie1_rst, pcie1_prsnt, pcie1_pwren_n, pcie1_pwren, pcie1_pwrflt, | 57 | pcie1_rst, pcie1_prsnt, pcie1_pwren_n, pcie1_pwren, pcie1_pwrflt, |
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8960-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8960-pinctrl.txt new file mode 100644 index 000000000000..93b7de91b9f6 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8960-pinctrl.txt | |||
@@ -0,0 +1,181 @@ | |||
1 | Qualcomm MSM8960 TLMM block | ||
2 | |||
3 | This binding describes the Top Level Mode Multiplexer block found in the | ||
4 | MSM8960 platform. | ||
5 | |||
6 | - compatible: | ||
7 | Usage: required | ||
8 | Value type: <string> | ||
9 | Definition: must be "qcom,msm8960-pinctrl" | ||
10 | |||
11 | - reg: | ||
12 | Usage: required | ||
13 | Value type: <prop-encoded-array> | ||
14 | Definition: the base address and size of the TLMM register space. | ||
15 | |||
16 | - interrupts: | ||
17 | Usage: required | ||
18 | Value type: <prop-encoded-array> | ||
19 | Definition: should specify the TLMM summary IRQ. | ||
20 | |||
21 | - interrupt-controller: | ||
22 | Usage: required | ||
23 | Value type: <none> | ||
24 | Definition: identifies this node as an interrupt controller | ||
25 | |||
26 | - #interrupt-cells: | ||
27 | Usage: required | ||
28 | Value type: <u32> | ||
29 | Definition: must be 2. Specifying the pin number and flags, as defined | ||
30 | in <dt-bindings/interrupt-controller/irq.h> | ||
31 | |||
32 | - gpio-controller: | ||
33 | Usage: required | ||
34 | Value type: <none> | ||
35 | Definition: identifies this node as a gpio controller | ||
36 | |||
37 | - #gpio-cells: | ||
38 | Usage: required | ||
39 | Value type: <u32> | ||
40 | Definition: must be 2. Specifying the pin number and flags, as defined | ||
41 | in <dt-bindings/gpio/gpio.h> | ||
42 | |||
43 | Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for | ||
44 | a general description of GPIO and interrupt bindings. | ||
45 | |||
46 | Please refer to pinctrl-bindings.txt in this directory for details of the | ||
47 | common pinctrl bindings used by client devices, including the meaning of the | ||
48 | phrase "pin configuration node". | ||
49 | |||
50 | The pin configuration nodes act as a container for an abitrary number of | ||
51 | subnodes. Each of these subnodes represents some desired configuration for a | ||
52 | pin, a group, or a list of pins or groups. This configuration can include the | ||
53 | mux function to select on those pin(s)/group(s), and various pin configuration | ||
54 | parameters, such as pull-up, drive strength, etc. | ||
55 | |||
56 | |||
57 | PIN CONFIGURATION NODES: | ||
58 | |||
59 | The name of each subnode is not important; all subnodes should be enumerated | ||
60 | and processed purely based on their content. | ||
61 | |||
62 | Each subnode only affects those parameters that are explicitly listed. In | ||
63 | other words, a subnode that lists a mux function but no pin configuration | ||
64 | parameters implies no information about any pin configuration parameters. | ||
65 | Similarly, a pin subnode that describes a pullup parameter implies no | ||
66 | information about e.g. the mux function. | ||
67 | |||
68 | |||
69 | The following generic properties as defined in pinctrl-bindings.txt are valid | ||
70 | to specify in a pin configuration subnode: | ||
71 | |||
72 | - pins: | ||
73 | Usage: required | ||
74 | Value type: <string-array> | ||
75 | Definition: List of gpio pins affected by the properties specified in | ||
76 | this subnode. Valid pins are: | ||
77 | gpio0-gpio151, | ||
78 | sdc1_clk, | ||
79 | sdc1_cmd, | ||
80 | sdc1_data | ||
81 | sdc3_clk, | ||
82 | sdc3_cmd, | ||
83 | sdc3_data | ||
84 | |||
85 | - function: | ||
86 | Usage: required | ||
87 | Value type: <string> | ||
88 | Definition: Specify the alternative function to be configured for the | ||
89 | specified pins. Functions are only valid for gpio pins. | ||
90 | Valid values are: | ||
91 | audio_pcm, bt, cam_mclk0, cam_mclk1, cam_mclk2, | ||
92 | codec_mic_i2s, codec_spkr_i2s, ext_gps, fm, gps_blanking, | ||
93 | gps_pps_in, gps_pps_out, gp_clk_0a, gp_clk_0b, gp_clk_1a, | ||
94 | gp_clk_1b, gp_clk_2a, gp_clk_2b, gp_mn, gp_pdm_0a, | ||
95 | gp_pdm_0b, gp_pdm_1a, gp_pdm_1b, gp_pdm_2a, gp_pdm_2b, gpio, | ||
96 | gsbi1, gsbi1_spi_cs1_n, gsbi1_spi_cs2a_n, gsbi1_spi_cs2b_n, | ||
97 | gsbi1_spi_cs3_n, gsbi2, gsbi2_spi_cs1_n, gsbi2_spi_cs2_n, | ||
98 | gsbi2_spi_cs3_n, gsbi3, gsbi4, gsbi4_3d_cam_i2c_l, | ||
99 | gsbi4_3d_cam_i2c_r, gsbi5, gsbi5_3d_cam_i2c_l, | ||
100 | gsbi5_3d_cam_i2c_r, gsbi6, gsbi7, gsbi8, gsbi9, gsbi10, | ||
101 | gsbi11, gsbi11_spi_cs1a_n, gsbi11_spi_cs1b_n, | ||
102 | gsbi11_spi_cs2a_n, gsbi11_spi_cs2b_n, gsbi11_spi_cs3_n, | ||
103 | gsbi12, hdmi_cec, hdmi_ddc_clock, hdmi_ddc_data, | ||
104 | hdmi_hot_plug_detect, hsic, mdp_vsync, mi2s, mic_i2s, | ||
105 | pmb_clk, pmb_ext_ctrl, ps_hold, rpm_wdog, sdc2, sdc4, sdc5, | ||
106 | slimbus1, slimbus2, spkr_i2s, ssbi1, ssbi2, ssbi_ext_gps, | ||
107 | ssbi_pmic2, ssbi_qpa1, ssbi_ts, tsif1, tsif2, ts_eoc, | ||
108 | usb_fs1, usb_fs1_oe, usb_fs1_oe_n, usb_fs2, usb_fs2_oe, | ||
109 | usb_fs2_oe_n, vfe_camif_timer1_a, vfe_camif_timer1_b, | ||
110 | vfe_camif_timer2, vfe_camif_timer3_a, vfe_camif_timer3_b, | ||
111 | vfe_camif_timer4_a, vfe_camif_timer4_b, vfe_camif_timer4_c, | ||
112 | vfe_camif_timer5_a, vfe_camif_timer5_b, vfe_camif_timer6_a, | ||
113 | vfe_camif_timer6_b, vfe_camif_timer6_c, vfe_camif_timer7_a, | ||
114 | vfe_camif_timer7_b, vfe_camif_timer7_c, wlan | ||
115 | |||
116 | - bias-disable: | ||
117 | Usage: optional | ||
118 | Value type: <none> | ||
119 | Definition: The specified pins should be configued as no pull. | ||
120 | |||
121 | - bias-pull-down: | ||
122 | Usage: optional | ||
123 | Value type: <none> | ||
124 | Definition: The specified pins should be configued as pull down. | ||
125 | |||
126 | - bias-pull-up: | ||
127 | Usage: optional | ||
128 | Value type: <none> | ||
129 | Definition: The specified pins should be configued as pull up. | ||
130 | |||
131 | - output-high: | ||
132 | Usage: optional | ||
133 | Value type: <none> | ||
134 | Definition: The specified pins are configured in output mode, driven | ||
135 | high. | ||
136 | Not valid for sdc pins. | ||
137 | |||
138 | - output-low: | ||
139 | Usage: optional | ||
140 | Value type: <none> | ||
141 | Definition: The specified pins are configured in output mode, driven | ||
142 | low. | ||
143 | Not valid for sdc pins. | ||
144 | |||
145 | - drive-strength: | ||
146 | Usage: optional | ||
147 | Value type: <u32> | ||
148 | Definition: Selects the drive strength for the specified pins, in mA. | ||
149 | Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16 | ||
150 | |||
151 | Example: | ||
152 | |||
153 | msmgpio: pinctrl@800000 { | ||
154 | compatible = "qcom,msm8960-pinctrl"; | ||
155 | reg = <0x800000 0x4000>; | ||
156 | |||
157 | gpio-controller; | ||
158 | #gpio-cells = <2>; | ||
159 | interrupt-controller; | ||
160 | #interrupt-cells = <2>; | ||
161 | interrupts = <0 16 0x4>; | ||
162 | |||
163 | gsbi8_uart: gsbi8-uart { | ||
164 | mux { | ||
165 | pins = "gpio34", "gpio35"; | ||
166 | function = "gsbi8"; | ||
167 | }; | ||
168 | |||
169 | tx { | ||
170 | pins = "gpio34"; | ||
171 | drive-strength = <4>; | ||
172 | bias-disable; | ||
173 | }; | ||
174 | |||
175 | rx { | ||
176 | pins = "gpio35"; | ||
177 | drive-strength = <2>; | ||
178 | bias-pull-up; | ||
179 | }; | ||
180 | }; | ||
181 | }; | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt index 73262b575dfc..d2ea80dc43eb 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt | |||
@@ -70,7 +70,7 @@ Valid values for function are: | |||
70 | cam_mckl0, cam_mclk1, cam_mclk2, cam_mclk3, mdp_vsync, hdmi_cec, hdmi_ddc, | 70 | cam_mckl0, cam_mclk1, cam_mclk2, cam_mclk3, mdp_vsync, hdmi_cec, hdmi_ddc, |
71 | hdmi_hpd, edp_hpd, gp_pdm0, gp_pdm1, gp_pdm2, gp_pdm3, gp0_clk, gp1_clk, | 71 | hdmi_hpd, edp_hpd, gp_pdm0, gp_pdm1, gp_pdm2, gp_pdm3, gp0_clk, gp1_clk, |
72 | gp_mn, tsif1, tsif2, hsic, grfc, audio_ref_clk, qua_mi2s, pri_mi2s, spkr_mi2s, | 72 | gp_mn, tsif1, tsif2, hsic, grfc, audio_ref_clk, qua_mi2s, pri_mi2s, spkr_mi2s, |
73 | ter_mi2s, sec_mi2s, bt, fm, wlan, slimbus | 73 | ter_mi2s, sec_mi2s, bt, fm, wlan, slimbus, gpio |
74 | 74 | ||
75 | (Note that this is not yet the complete list of functions) | 75 | (Note that this is not yet the complete list of functions) |
76 | 76 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt index 35d2e1f186f0..daef6fad6a5f 100644 --- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt | |||
@@ -15,6 +15,7 @@ Required Properties: | |||
15 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. | 15 | - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. |
16 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. | 16 | - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. |
17 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. | 17 | - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. |
18 | - "renesas,pfc-r8a7791": for R8A7791 (R-Car M2) compatible pin-controller. | ||
18 | - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller. | 19 | - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller. |
19 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. | 20 | - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. |
20 | 21 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt index cefef741a40b..4658b69d4f4d 100644 --- a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt | |||
@@ -21,6 +21,7 @@ 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 | "rockchip,rk3288-pinctrl" | ||
24 | - rockchip,grf: phandle referencing a syscon providing the | 25 | - rockchip,grf: phandle referencing a syscon providing the |
25 | "general register files" | 26 | "general register files" |
26 | 27 | ||
@@ -36,7 +37,7 @@ Deprecated properties for iomux controller: | |||
36 | Use rockchip,grf and rockchip,pmu described above instead. | 37 | Use rockchip,grf and rockchip,pmu described above instead. |
37 | 38 | ||
38 | Required properties for gpio sub nodes: | 39 | Required properties for gpio sub nodes: |
39 | - compatible: "rockchip,gpio-bank", "rockchip,rk3188-gpio-bank0" | 40 | - compatible: "rockchip,gpio-bank" |
40 | - reg: register of the gpio bank (different than the iomux registerset) | 41 | - reg: register of the gpio bank (different than the iomux registerset) |
41 | - interrupts: base interrupt of the gpio bank in the interrupt controller | 42 | - interrupts: base interrupt of the gpio bank in the interrupt controller |
42 | - clocks: clock that drives this bank | 43 | - clocks: clock that drives this bank |
@@ -50,6 +51,7 @@ Required properties for gpio sub nodes: | |||
50 | bindings/interrupt-controller/interrupts.txt | 51 | bindings/interrupt-controller/interrupts.txt |
51 | 52 | ||
52 | Deprecated properties for gpio sub nodes: | 53 | Deprecated properties for gpio sub nodes: |
54 | - compatible: "rockchip,rk3188-gpio-bank0" | ||
53 | - reg: second element: separate pull register for rk3188 bank0, use | 55 | - reg: second element: separate pull register for rk3188 bank0, use |
54 | rockchip,pmu described above instead | 56 | rockchip,pmu described above instead |
55 | 57 | ||
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt index 2b32783ba821..e82aaf492517 100644 --- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt | |||
@@ -44,7 +44,11 @@ Required Properties: | |||
44 | - Pin mux/config groups as child nodes: The pin mux (selecting pin function | 44 | - Pin mux/config groups as child nodes: The pin mux (selecting pin function |
45 | mode) and pin config (pull up/down, driver strength) settings are represented | 45 | mode) and pin config (pull up/down, driver strength) settings are represented |
46 | as child nodes of the pin-controller node. There should be atleast one | 46 | as child nodes of the pin-controller node. There should be atleast one |
47 | child node and there is no limit on the count of these child nodes. | 47 | child node and there is no limit on the count of these child nodes. It is |
48 | also possible for a child node to consist of several further child nodes | ||
49 | to allow grouping multiple pinctrl groups into one. The format of second | ||
50 | level child nodes is exactly the same as for first level ones and is | ||
51 | described below. | ||
48 | 52 | ||
49 | The child node should contain a list of pin(s) on which a particular pin | 53 | The child node should contain a list of pin(s) on which a particular pin |
50 | function selection or pin configuration (or both) have to applied. This | 54 | function selection or pin configuration (or both) have to applied. This |
@@ -71,6 +75,7 @@ Required Properties: | |||
71 | "samsung,pins" property of the child node. The following pin configuration | 75 | "samsung,pins" property of the child node. The following pin configuration |
72 | properties are supported. | 76 | properties are supported. |
73 | 77 | ||
78 | - samsung,pin-val: Initial value of pin output buffer. | ||
74 | - samsung,pin-pud: Pull up/down configuration. | 79 | - samsung,pin-pud: Pull up/down configuration. |
75 | - samsung,pin-drv: Drive strength configuration. | 80 | - samsung,pin-drv: Drive strength configuration. |
76 | - samsung,pin-pud-pdn: Pull up/down configuration in power down mode. | 81 | - samsung,pin-pud-pdn: Pull up/down configuration in power down mode. |
@@ -249,6 +254,23 @@ Example 1: A pin-controller node with pin groups. | |||
249 | samsung,pin-pud = <3>; | 254 | samsung,pin-pud = <3>; |
250 | samsung,pin-drv = <0>; | 255 | samsung,pin-drv = <0>; |
251 | }; | 256 | }; |
257 | |||
258 | sd4_bus8: sd4-bus-width8 { | ||
259 | part-1 { | ||
260 | samsung,pins = "gpk0-3", "gpk0-4", | ||
261 | "gpk0-5", "gpk0-6"; | ||
262 | samsung,pin-function = <3>; | ||
263 | samsung,pin-pud = <3>; | ||
264 | samsung,pin-drv = <3>; | ||
265 | }; | ||
266 | part-2 { | ||
267 | samsung,pins = "gpk1-3", "gpk1-4", | ||
268 | "gpk1-5", "gpk1-6"; | ||
269 | samsung,pin-function = <4>; | ||
270 | samsung,pin-pud = <4>; | ||
271 | samsung,pin-drv = <3>; | ||
272 | }; | ||
273 | }; | ||
252 | }; | 274 | }; |
253 | 275 | ||
254 | Example 2: A pin-controller node with external wakeup interrupt controller node. | 276 | Example 2: A pin-controller node with external wakeup interrupt controller node. |
diff --git a/Documentation/devicetree/bindings/power/rx51-battery.txt b/Documentation/devicetree/bindings/power/rx51-battery.txt new file mode 100644 index 000000000000..90438453db58 --- /dev/null +++ b/Documentation/devicetree/bindings/power/rx51-battery.txt | |||
@@ -0,0 +1,25 @@ | |||
1 | Binding for Nokia N900 battery | ||
2 | |||
3 | The Nokia N900 battery status can be read via the TWL4030's A/D converter. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: Should contain one of the following: | ||
7 | * "nokia,n900-battery" | ||
8 | - io-channels: Should contain IIO channel specifiers | ||
9 | for each element in io-channel-names. | ||
10 | - io-channel-names: Should contain the following values: | ||
11 | * "temp" - The ADC channel for temperature reading | ||
12 | * "bsi" - The ADC channel for battery size identification | ||
13 | * "vbat" - The ADC channel to measure the battery voltage | ||
14 | |||
15 | Example from Nokia N900: | ||
16 | |||
17 | battery: n900-battery { | ||
18 | compatible = "nokia,n900-battery"; | ||
19 | io-channels = <&twl4030_madc 0>, | ||
20 | <&twl4030_madc 4>, | ||
21 | <&twl4030_madc 12>; | ||
22 | io-channel-names = "temp", | ||
23 | "bsi", | ||
24 | "vbat"; | ||
25 | }; | ||
diff --git a/Documentation/devicetree/bindings/powerpc/fsl/board.txt b/Documentation/devicetree/bindings/powerpc/fsl/board.txt index 700dec4774fa..cff38bdbc0e4 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/board.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/board.txt | |||
@@ -84,3 +84,19 @@ Example: | |||
84 | compatible = "fsl,bsc9132qds-fpga", "fsl,fpga-qixis-i2c"; | 84 | compatible = "fsl,bsc9132qds-fpga", "fsl,fpga-qixis-i2c"; |
85 | reg = <0x66>; | 85 | reg = <0x66>; |
86 | }; | 86 | }; |
87 | |||
88 | * Freescale on-board CPLD | ||
89 | |||
90 | Some Freescale boards like T1040RDB have an on board CPLD connected. | ||
91 | |||
92 | Required properties: | ||
93 | - compatible: Should be a board-specific string like "fsl,<board>-cpld" | ||
94 | Example: | ||
95 | "fsl,t1040rdb-cpld", "fsl,t1042rdb-cpld", "fsl,t1042rdb_pi-cpld" | ||
96 | - reg: should describe CPLD registers | ||
97 | |||
98 | Example: | ||
99 | cpld@3,0 { | ||
100 | compatible = "fsl,t1040rdb-cpld"; | ||
101 | reg = <3 0 0x300>; | ||
102 | }; | ||
diff --git a/Documentation/devicetree/bindings/pwm/pwm-rockchip.txt b/Documentation/devicetree/bindings/pwm/pwm-rockchip.txt new file mode 100644 index 000000000000..d47d15a6a298 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-rockchip.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | Rockchip PWM controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: should be "rockchip,<name>-pwm" | ||
5 | "rockchip,rk2928-pwm": found on RK29XX,RK3066 and RK3188 SoCs | ||
6 | "rockchip,rk3288-pwm": found on RK3288 SoC | ||
7 | "rockchip,vop-pwm": found integrated in VOP on RK3288 SoC | ||
8 | - reg: physical base address and length of the controller's registers | ||
9 | - clocks: phandle and clock specifier of the PWM reference clock | ||
10 | - #pwm-cells: should be 2. See pwm.txt in this directory for a | ||
11 | description of the cell format. | ||
12 | |||
13 | Example: | ||
14 | |||
15 | pwm0: pwm@20030000 { | ||
16 | compatible = "rockchip,rk2928-pwm"; | ||
17 | reg = <0x20030000 0x10>; | ||
18 | clocks = <&cru PCLK_PWM01>; | ||
19 | #pwm-cells = <2>; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/pwm/pwm-st.txt b/Documentation/devicetree/bindings/pwm/pwm-st.txt new file mode 100644 index 000000000000..84d2fb807d3c --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-st.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | STMicroelectronics PWM driver bindings | ||
2 | -------------------------------------- | ||
3 | |||
4 | Required parameters: | ||
5 | - compatible : "st,pwm" | ||
6 | - #pwm-cells : Number of cells used to specify a PWM. First cell | ||
7 | specifies the per-chip index of the PWM to use and the | ||
8 | second cell is the period in nanoseconds - fixed to 2 | ||
9 | for STiH41x. | ||
10 | - reg : Physical base address and length of the controller's | ||
11 | registers. | ||
12 | - pinctrl-names: Set to "default". | ||
13 | - pinctrl-0: List of phandles pointing to pin configuration nodes | ||
14 | for PWM module. | ||
15 | For Pinctrl properties, please refer to [1]. | ||
16 | - clock-names: Set to "pwm". | ||
17 | - clocks: phandle of the clock used by the PWM module. | ||
18 | For Clk properties, please refer to [2]. | ||
19 | |||
20 | Optional properties: | ||
21 | - st,pwm-num-chan: Number of available channels. If not passed, the driver | ||
22 | will consider single channel by default. | ||
23 | |||
24 | [1] Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt | ||
25 | [2] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
26 | |||
27 | Example: | ||
28 | |||
29 | pwm1: pwm@fe510000 { | ||
30 | compatible = "st,pwm"; | ||
31 | reg = <0xfe510000 0x68>; | ||
32 | #pwm-cells = <2>; | ||
33 | pinctrl-names = "default"; | ||
34 | pinctrl-0 = <&pinctrl_pwm1_chan0_default | ||
35 | &pinctrl_pwm1_chan1_default | ||
36 | &pinctrl_pwm1_chan2_default | ||
37 | &pinctrl_pwm1_chan3_default>; | ||
38 | clocks = <&clk_sysin>; | ||
39 | clock-names = "pwm"; | ||
40 | st,pwm-num-chan = <4>; | ||
41 | }; | ||
diff --git a/Documentation/devicetree/bindings/regulator/act8865-regulator.txt b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt index bef1fbb647ca..865614b34d6f 100644 --- a/Documentation/devicetree/bindings/regulator/act8865-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt | |||
@@ -1,13 +1,16 @@ | |||
1 | ACT8865 regulator | 1 | ACT88xx regulators |
2 | ------------------- | 2 | ------------------- |
3 | 3 | ||
4 | Required properties: | 4 | Required properties: |
5 | - compatible: "active-semi,act8865" | 5 | - compatible: "active-semi,act8846" or "active-semi,act8865" |
6 | - reg: I2C slave address | 6 | - reg: I2C slave address |
7 | 7 | ||
8 | Any standard regulator properties can be used to configure the single regulator. | 8 | Any standard regulator properties can be used to configure the single regulator. |
9 | 9 | ||
10 | The valid names for regulators are: | 10 | The valid names for regulators are: |
11 | - for act8846: | ||
12 | REG1, REG2, REG3, REG4, REG5, REG6, REG7, REG8, REG9, REG10, REG11, REG12 | ||
13 | - for act8865: | ||
11 | DCDC_REG1, DCDC_REG2, DCDC_REG3, LDO_REG1, LDO_REG2, LDO_REG3, LDO_REG4. | 14 | DCDC_REG1, DCDC_REG2, DCDC_REG3, LDO_REG1, LDO_REG2, LDO_REG3, LDO_REG4. |
12 | 15 | ||
13 | Example: | 16 | Example: |
diff --git a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt index 42e6b6bc48ff..725393c8a7f2 100644 --- a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt +++ b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt | |||
@@ -7,6 +7,7 @@ Required properties: | |||
7 | ti,twl6037-pmic | 7 | ti,twl6037-pmic |
8 | ti,tps65913-pmic | 8 | ti,tps65913-pmic |
9 | ti,tps65914-pmic | 9 | ti,tps65914-pmic |
10 | ti,tps65917-pmic | ||
10 | and also the generic series names | 11 | and also the generic series names |
11 | ti,palmas-pmic | 12 | ti,palmas-pmic |
12 | - interrupt-parent : The parent interrupt controller which is palmas. | 13 | - interrupt-parent : The parent interrupt controller which is palmas. |
diff --git a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt index d290988ed975..20191315e444 100644 --- a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt | |||
@@ -86,7 +86,7 @@ as per the datasheet of s5m8767. | |||
86 | 86 | ||
87 | - LDOn | 87 | - LDOn |
88 | - valid values for n are 1 to 28 | 88 | - valid values for n are 1 to 28 |
89 | - Example: LDO1, LD02, LDO28 | 89 | - Example: LDO1, LDO2, LDO28 |
90 | - BUCKn | 90 | - BUCKn |
91 | - valid values for n are 1 to 9. | 91 | - valid values for n are 1 to 9. |
92 | - Example: BUCK1, BUCK2, BUCK9 | 92 | - Example: BUCK1, BUCK2, BUCK9 |
diff --git a/Documentation/devicetree/bindings/regulator/tps65218.txt b/Documentation/devicetree/bindings/regulator/tps65218.txt new file mode 100644 index 000000000000..fccc1d24af58 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/tps65218.txt | |||
@@ -0,0 +1,23 @@ | |||
1 | TPS65218 family of regulators | ||
2 | |||
3 | Required properties: | ||
4 | For tps65218 regulators/LDOs | ||
5 | - compatible: | ||
6 | - "ti,tps65218-dcdc1" for DCDC1 | ||
7 | - "ti,tps65218-dcdc2" for DCDC2 | ||
8 | - "ti,tps65218-dcdc3" for DCDC3 | ||
9 | - "ti,tps65218-dcdc4" for DCDC4 | ||
10 | - "ti,tps65218-dcdc5" for DCDC5 | ||
11 | - "ti,tps65218-dcdc6" for DCDC6 | ||
12 | - "ti,tps65218-ldo1" for LDO1 | ||
13 | |||
14 | Optional properties: | ||
15 | - Any optional property defined in bindings/regulator/regulator.txt | ||
16 | |||
17 | Example: | ||
18 | |||
19 | xyz: regulator@0 { | ||
20 | compatible = "ti,tps65218-dcdc1"; | ||
21 | regulator-min-microvolt = <1000000>; | ||
22 | regulator-max-microvolt = <3000000>; | ||
23 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/cdns,uart.txt b/Documentation/devicetree/bindings/serial/cdns,uart.txt new file mode 100644 index 000000000000..a3eb154c32ca --- /dev/null +++ b/Documentation/devicetree/bindings/serial/cdns,uart.txt | |||
@@ -0,0 +1,20 @@ | |||
1 | Binding for Cadence UART Controller | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : should be "cdns,uart-r1p8", or "xlnx,xuartps" | ||
5 | - reg: Should contain UART controller registers location and length. | ||
6 | - interrupts: Should contain UART controller interrupts. | ||
7 | - clocks: Must contain phandles to the UART clocks | ||
8 | See ../clocks/clock-bindings.txt for details. | ||
9 | - clock-names: Tuple to identify input clocks, must contain "uart_clk" and "pclk" | ||
10 | See ../clocks/clock-bindings.txt for details. | ||
11 | |||
12 | |||
13 | Example: | ||
14 | uart@e0000000 { | ||
15 | compatible = "cdns,uart-r1p8"; | ||
16 | clocks = <&clkc 23>, <&clkc 40>; | ||
17 | clock-names = "uart_clk", "pclk"; | ||
18 | reg = <0xE0000000 0x1000>; | ||
19 | interrupts = <0 27 4>; | ||
20 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/efm32-uart.txt b/Documentation/devicetree/bindings/serial/efm32-uart.txt index 3ca01336b837..8adbab268ca3 100644 --- a/Documentation/devicetree/bindings/serial/efm32-uart.txt +++ b/Documentation/devicetree/bindings/serial/efm32-uart.txt | |||
@@ -6,7 +6,7 @@ Required properties: | |||
6 | - interrupts : Should contain uart interrupt | 6 | - interrupts : Should contain uart interrupt |
7 | 7 | ||
8 | Optional properties: | 8 | Optional properties: |
9 | - efm32,location : Decides the location of the USART I/O pins. | 9 | - energymicro,location : Decides the location of the USART I/O pins. |
10 | Allowed range : [0 .. 5] | 10 | Allowed range : [0 .. 5] |
11 | Default: 0 | 11 | Default: 0 |
12 | 12 | ||
@@ -16,5 +16,5 @@ uart@0x4000c400 { | |||
16 | compatible = "energymicro,efm32-uart"; | 16 | compatible = "energymicro,efm32-uart"; |
17 | reg = <0x4000c400 0x400>; | 17 | reg = <0x4000c400 0x400>; |
18 | interrupts = <15>; | 18 | interrupts = <15>; |
19 | efm32,location = <0>; | 19 | energymicro,location = <0>; |
20 | }; | 20 | }; |
diff --git a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt index a1d1205d8185..c95005efbcb8 100644 --- a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt +++ b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt | |||
@@ -1,7 +1,11 @@ | |||
1 | * Freescale low power universal asynchronous receiver/transmitter (lpuart) | 1 | * Freescale low power universal asynchronous receiver/transmitter (lpuart) |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Should be "fsl,<soc>-lpuart" | 4 | - compatible : |
5 | - "fsl,vf610-lpuart" for lpuart compatible with the one integrated | ||
6 | on Vybrid vf610 SoC with 8-bit register organization | ||
7 | - "fsl,ls1021a-lpuart" for lpuart compatible with the one integrated | ||
8 | on LS1021A SoC with 32-bit big-endian register organization | ||
5 | - reg : Address and length of the register set for the device | 9 | - reg : Address and length of the register set for the device |
6 | - interrupts : Should contain uart interrupt | 10 | - interrupts : Should contain uart interrupt |
7 | - clocks : phandle + clock specifier pairs, one for each entry in clock-names | 11 | - clocks : phandle + clock specifier pairs, one for each entry in clock-names |
diff --git a/Documentation/devicetree/bindings/serial/samsung_uart.txt b/Documentation/devicetree/bindings/serial/samsung_uart.txt index 2c8a17cf5cb5..e85f37ec33f0 100644 --- a/Documentation/devicetree/bindings/serial/samsung_uart.txt +++ b/Documentation/devicetree/bindings/serial/samsung_uart.txt | |||
@@ -1,14 +1,58 @@ | |||
1 | * Samsung's UART Controller | 1 | * Samsung's UART Controller |
2 | 2 | ||
3 | The Samsung's UART controller is used for interfacing SoC with serial communicaion | 3 | The Samsung's UART controller is used for interfacing SoC with serial |
4 | devices. | 4 | communicaion devices. |
5 | 5 | ||
6 | Required properties: | 6 | Required properties: |
7 | - compatible: should be | 7 | - compatible: should be one of following: |
8 | - "samsung,exynos4210-uart", for UART's compatible with Exynos4210 uart ports. | 8 | - "samsung,exynos4210-uart" - Exynos4210 SoC, |
9 | - "samsung,s3c2410-uart" - compatible with ports present on S3C2410 SoC, | ||
10 | - "samsung,s3c2412-uart" - compatible with ports present on S3C2412 SoC, | ||
11 | - "samsung,s3c2440-uart" - compatible with ports present on S3C2440 SoC, | ||
12 | - "samsung,s3c6400-uart" - compatible with ports present on S3C6400 SoC, | ||
13 | - "samsung,s5pv210-uart" - compatible with ports present on S5PV210 SoC. | ||
9 | 14 | ||
10 | - reg: base physical address of the controller and length of memory mapped | 15 | - reg: base physical address of the controller and length of memory mapped |
11 | region. | 16 | region. |
12 | 17 | ||
13 | - interrupts: interrupt number to the cpu. The interrupt specifier format depends | 18 | - interrupts: a single interrupt signal to SoC interrupt controller, |
14 | on the interrupt controller parent. | 19 | according to interrupt bindings documentation [1]. |
20 | |||
21 | - clock-names: input names of clocks used by the controller: | ||
22 | - "uart" - controller bus clock, | ||
23 | - "clk_uart_baudN" - Nth baud base clock input (N = 0, 1, ...), | ||
24 | according to SoC User's Manual (only N = 0 is allowedfor SoCs without | ||
25 | internal baud clock mux). | ||
26 | - clocks: phandles and specifiers for all clocks specified in "clock-names" | ||
27 | property, in the same order, according to clock bindings documentation [2]. | ||
28 | |||
29 | [1] Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | ||
30 | [2] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
31 | |||
32 | Optional properties: | ||
33 | - samsung,uart-fifosize: The fifo size supported by the UART channel | ||
34 | |||
35 | Note: Each Samsung UART should have an alias correctly numbered in the | ||
36 | "aliases" node, according to serialN format, where N is the port number | ||
37 | (non-negative decimal integer) as specified by User's Manual of respective | ||
38 | SoC. | ||
39 | |||
40 | Example: | ||
41 | aliases { | ||
42 | serial0 = &uart0; | ||
43 | serial1 = &uart1; | ||
44 | serial2 = &uart2; | ||
45 | }; | ||
46 | |||
47 | Example: | ||
48 | uart1: serial@7f005400 { | ||
49 | compatible = "samsung,s3c6400-uart"; | ||
50 | reg = <0x7f005400 0x100>; | ||
51 | interrupt-parent = <&vic1>; | ||
52 | interrupts = <6>; | ||
53 | clock-names = "uart", "clk_uart_baud2", | ||
54 | "clk_uart_baud3"; | ||
55 | clocks = <&clocks PCLK_UART1>, <&clocks PCLK_UART1>, | ||
56 | <&clocks SCLK_UART>; | ||
57 | samsung,uart-fifosize = <16>; | ||
58 | }; | ||
diff --git a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt index f13f1c5be91c..7f76214f728a 100644 --- a/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt +++ b/Documentation/devicetree/bindings/serial/snps-dw-apb-uart.txt | |||
@@ -4,9 +4,18 @@ Required properties: | |||
4 | - compatible : "snps,dw-apb-uart" | 4 | - compatible : "snps,dw-apb-uart" |
5 | - reg : offset and length of the register set for the device. | 5 | - reg : offset and length of the register set for the device. |
6 | - interrupts : should contain uart interrupt. | 6 | - interrupts : should contain uart interrupt. |
7 | |||
8 | Clock handling: | ||
9 | The clock rate of the input clock needs to be supplied by one of | ||
7 | - clock-frequency : the input clock frequency for the UART. | 10 | - clock-frequency : the input clock frequency for the UART. |
11 | - clocks : phandle to the input clock | ||
12 | |||
13 | The supplying peripheral clock can also be handled, needing a second property | ||
14 | - clock-names: tuple listing input clock names. | ||
15 | Required elements: "baudclk", "apb_pclk" | ||
8 | 16 | ||
9 | Optional properties: | 17 | Optional properties: |
18 | - resets : phandle to the parent reset controller. | ||
10 | - reg-shift : quantity to shift the register offsets by. If this property is | 19 | - reg-shift : quantity to shift the register offsets by. If this property is |
11 | not present then the register offsets are not shifted. | 20 | not present then the register offsets are not shifted. |
12 | - reg-io-width : the size (in bytes) of the IO accesses that should be | 21 | - reg-io-width : the size (in bytes) of the IO accesses that should be |
@@ -23,3 +32,26 @@ Example: | |||
23 | reg-shift = <2>; | 32 | reg-shift = <2>; |
24 | reg-io-width = <4>; | 33 | reg-io-width = <4>; |
25 | }; | 34 | }; |
35 | |||
36 | Example with one clock: | ||
37 | |||
38 | uart@80230000 { | ||
39 | compatible = "snps,dw-apb-uart"; | ||
40 | reg = <0x80230000 0x100>; | ||
41 | clocks = <&baudclk>; | ||
42 | interrupts = <10>; | ||
43 | reg-shift = <2>; | ||
44 | reg-io-width = <4>; | ||
45 | }; | ||
46 | |||
47 | Example with two clocks: | ||
48 | |||
49 | uart@80230000 { | ||
50 | compatible = "snps,dw-apb-uart"; | ||
51 | reg = <0x80230000 0x100>; | ||
52 | clocks = <&baudclk>, <&apb_pclk>; | ||
53 | clock-names = "baudclk", "apb_pclk"; | ||
54 | interrupts = <10>; | ||
55 | reg-shift = <2>; | ||
56 | reg-io-width = <4>; | ||
57 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/ak5386.txt b/Documentation/devicetree/bindings/sound/ak5386.txt index dc3914fe6ce8..ec3df3abba0c 100644 --- a/Documentation/devicetree/bindings/sound/ak5386.txt +++ b/Documentation/devicetree/bindings/sound/ak5386.txt | |||
@@ -10,10 +10,14 @@ Optional properties: | |||
10 | 10 | ||
11 | - reset-gpio : a GPIO spec for the reset/power down pin. | 11 | - reset-gpio : a GPIO spec for the reset/power down pin. |
12 | If specified, it will be deasserted at probe time. | 12 | If specified, it will be deasserted at probe time. |
13 | - va-supply : a regulator spec, providing 5.0V | ||
14 | - vd-supply : a regulator spec, providing 3.3V | ||
13 | 15 | ||
14 | Example: | 16 | Example: |
15 | 17 | ||
16 | spdif: ak5386@0 { | 18 | spdif: ak5386@0 { |
17 | compatible = "asahi-kasei,ak5386"; | 19 | compatible = "asahi-kasei,ak5386"; |
18 | reset-gpio = <&gpio0 23>; | 20 | reset-gpio = <&gpio0 23>; |
21 | va-supply = <&vdd_5v0_reg>; | ||
22 | vd-supply = <&vdd_3v3_reg>; | ||
19 | }; | 23 | }; |
diff --git a/Documentation/devicetree/bindings/sound/cs4265.txt b/Documentation/devicetree/bindings/sound/cs4265.txt new file mode 100644 index 000000000000..380fff8e4e83 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs4265.txt | |||
@@ -0,0 +1,29 @@ | |||
1 | CS4265 audio CODEC | ||
2 | |||
3 | This device supports I2C only. | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible : "cirrus,cs4265" | ||
8 | |||
9 | - reg : the I2C address of the device for I2C. The I2C address depends on | ||
10 | the state of the AD0 pin. If AD0 is high, the i2c address is 0x4f. | ||
11 | If it is low, the i2c address is 0x4e. | ||
12 | |||
13 | Optional properties: | ||
14 | |||
15 | - reset-gpios : a GPIO spec for the reset pin. If specified, it will be | ||
16 | deasserted before communication to the codec starts. | ||
17 | |||
18 | Examples: | ||
19 | |||
20 | codec_ad0_high: cs4265@4f { /* AD0 Pin is high */ | ||
21 | compatible = "cirrus,cs4265"; | ||
22 | reg = <0x4f>; | ||
23 | }; | ||
24 | |||
25 | |||
26 | codec_ad0_low: cs4265@4e { /* AD0 Pin is low */ | ||
27 | compatible = "cirrus,cs4265"; | ||
28 | reg = <0x4e>; | ||
29 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/fsl,asrc.txt b/Documentation/devicetree/bindings/sound/fsl,asrc.txt new file mode 100644 index 000000000000..b93362a570be --- /dev/null +++ b/Documentation/devicetree/bindings/sound/fsl,asrc.txt | |||
@@ -0,0 +1,60 @@ | |||
1 | Freescale Asynchronous Sample Rate Converter (ASRC) Controller | ||
2 | |||
3 | The Asynchronous Sample Rate Converter (ASRC) converts the sampling rate of a | ||
4 | signal associated with an input clock into a signal associated with a different | ||
5 | output clock. The driver currently works as a Front End of DPCM with other Back | ||
6 | Ends Audio controller such as ESAI, SSI and SAI. It has three pairs to support | ||
7 | three substreams within totally 10 channels. | ||
8 | |||
9 | Required properties: | ||
10 | |||
11 | - compatible : Contains "fsl,imx35-asrc" or "fsl,imx53-asrc". | ||
12 | |||
13 | - reg : Offset and length of the register set for the device. | ||
14 | |||
15 | - interrupts : Contains the spdif interrupt. | ||
16 | |||
17 | - dmas : Generic dma devicetree binding as described in | ||
18 | Documentation/devicetree/bindings/dma/dma.txt. | ||
19 | |||
20 | - dma-names : Contains "rxa", "rxb", "rxc", "txa", "txb" and "txc". | ||
21 | |||
22 | - clocks : Contains an entry for each entry in clock-names. | ||
23 | |||
24 | - clock-names : Contains the following entries | ||
25 | "mem" Peripheral access clock to access registers. | ||
26 | "ipg" Peripheral clock to driver module. | ||
27 | "asrck_<0-f>" Clock sources for input and output clock. | ||
28 | |||
29 | - big-endian : If this property is absent, the little endian mode | ||
30 | will be in use as default. Otherwise, the big endian | ||
31 | mode will be in use for all the device registers. | ||
32 | |||
33 | - fsl,asrc-rate : Defines a mutual sample rate used by DPCM Back Ends. | ||
34 | |||
35 | - fsl,asrc-width : Defines a mutual sample width used by DPCM Back Ends. | ||
36 | |||
37 | Example: | ||
38 | |||
39 | asrc: asrc@02034000 { | ||
40 | compatible = "fsl,imx53-asrc"; | ||
41 | reg = <0x02034000 0x4000>; | ||
42 | interrupts = <0 50 IRQ_TYPE_LEVEL_HIGH>; | ||
43 | clocks = <&clks 107>, <&clks 107>, <&clks 0>, | ||
44 | <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>, | ||
45 | <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>, | ||
46 | <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>, | ||
47 | <&clks 107>, <&clks 0>, <&clks 0>; | ||
48 | clock-names = "mem", "ipg", "asrck0", | ||
49 | "asrck_1", "asrck_2", "asrck_3", "asrck_4", | ||
50 | "asrck_5", "asrck_6", "asrck_7", "asrck_8", | ||
51 | "asrck_9", "asrck_a", "asrck_b", "asrck_c", | ||
52 | "asrck_d", "asrck_e", "asrck_f"; | ||
53 | dmas = <&sdma 17 23 1>, <&sdma 18 23 1>, <&sdma 19 23 1>, | ||
54 | <&sdma 20 23 1>, <&sdma 21 23 1>, <&sdma 22 23 1>; | ||
55 | dma-names = "rxa", "rxb", "rxc", | ||
56 | "txa", "txb", "txc"; | ||
57 | fsl,asrc-rate = <48000>; | ||
58 | fsl,asrc-width = <16>; | ||
59 | status = "okay"; | ||
60 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/max98090.txt b/Documentation/devicetree/bindings/sound/max98090.txt index a5e63fa47dc5..c454e67f54bb 100644 --- a/Documentation/devicetree/bindings/sound/max98090.txt +++ b/Documentation/devicetree/bindings/sound/max98090.txt | |||
@@ -4,7 +4,7 @@ This device supports I2C only. | |||
4 | 4 | ||
5 | Required properties: | 5 | Required properties: |
6 | 6 | ||
7 | - compatible : "maxim,max98090". | 7 | - compatible : "maxim,max98090" or "maxim,max98091". |
8 | 8 | ||
9 | - reg : The I2C address of the device. | 9 | - reg : The I2C address of the device. |
10 | 10 | ||
diff --git a/Documentation/devicetree/bindings/sound/renesas,rsnd.txt b/Documentation/devicetree/bindings/sound/renesas,rsnd.txt index 8346cab046cd..aa697abf337e 100644 --- a/Documentation/devicetree/bindings/sound/renesas,rsnd.txt +++ b/Documentation/devicetree/bindings/sound/renesas,rsnd.txt | |||
@@ -13,6 +13,9 @@ Required properties: | |||
13 | - rcar_sound,src : Should contain SRC feature. | 13 | - rcar_sound,src : Should contain SRC feature. |
14 | The number of SRC subnode should be same as HW. | 14 | The number of SRC subnode should be same as HW. |
15 | see below for detail. | 15 | see below for detail. |
16 | - rcar_sound,dvc : Should contain DVC feature. | ||
17 | The number of DVC subnode should be same as HW. | ||
18 | see below for detail. | ||
16 | - rcar_sound,dai : DAI contents. | 19 | - rcar_sound,dai : DAI contents. |
17 | The number of DAI subnode should be same as HW. | 20 | The number of DAI subnode should be same as HW. |
18 | see below for detail. | 21 | see below for detail. |
@@ -21,6 +24,7 @@ SSI subnode properties: | |||
21 | - interrupts : Should contain SSI interrupt for PIO transfer | 24 | - interrupts : Should contain SSI interrupt for PIO transfer |
22 | - shared-pin : if shared clock pin | 25 | - shared-pin : if shared clock pin |
23 | - pio-transfer : use PIO transfer mode | 26 | - pio-transfer : use PIO transfer mode |
27 | - no-busif : BUSIF is not ussed when [mem -> SSI] via DMA case | ||
24 | 28 | ||
25 | SRC subnode properties: | 29 | SRC subnode properties: |
26 | no properties at this point | 30 | no properties at this point |
@@ -39,6 +43,11 @@ rcar_sound: rcar_sound@0xffd90000 { | |||
39 | <0 0xec540000 0 0x1000>, /* SSIU */ | 43 | <0 0xec540000 0 0x1000>, /* SSIU */ |
40 | <0 0xec541000 0 0x1280>; /* SSI */ | 44 | <0 0xec541000 0 0x1280>; /* SSI */ |
41 | 45 | ||
46 | rcar_sound,dvc { | ||
47 | dvc0: dvc@0 { }; | ||
48 | dvc1: dvc@1 { }; | ||
49 | }; | ||
50 | |||
42 | rcar_sound,src { | 51 | rcar_sound,src { |
43 | src0: src@0 { }; | 52 | src0: src@0 { }; |
44 | src1: src@1 { }; | 53 | src1: src@1 { }; |
diff --git a/Documentation/devicetree/bindings/sound/rockchip-i2s.txt b/Documentation/devicetree/bindings/sound/rockchip-i2s.txt new file mode 100644 index 000000000000..6c55fcfe5e1d --- /dev/null +++ b/Documentation/devicetree/bindings/sound/rockchip-i2s.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | * Rockchip I2S controller | ||
2 | |||
3 | The I2S bus (Inter-IC sound bus) is a serial link for digital | ||
4 | audio data transfer between devices in the system. | ||
5 | |||
6 | Required properties: | ||
7 | |||
8 | - compatible: should be one of the followings | ||
9 | - "rockchip,rk3066-i2s": for rk3066 | ||
10 | - "rockchip,rk3188-i2s", "rockchip,rk3066-i2s": for rk3188 | ||
11 | - "rockchip,rk3288-i2s", "rockchip,rk3066-i2s": for rk3288 | ||
12 | - reg: physical base address of the controller and length of memory mapped | ||
13 | region. | ||
14 | - interrupts: should contain the I2S interrupt. | ||
15 | - #address-cells: should be 1. | ||
16 | - #size-cells: should be 0. | ||
17 | - dmas: DMA specifiers for tx and rx dma. See the DMA client binding, | ||
18 | Documentation/devicetree/bindings/dma/dma.txt | ||
19 | - dma-names: should include "tx" and "rx". | ||
20 | - clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names. | ||
21 | - clock-names: should contain followings: | ||
22 | - "i2s_hclk": clock for I2S BUS | ||
23 | - "i2s_clk" : clock for I2S controller | ||
24 | |||
25 | Example for rk3288 I2S controller: | ||
26 | |||
27 | i2s@ff890000 { | ||
28 | compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s"; | ||
29 | reg = <0xff890000 0x10000>; | ||
30 | interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; | ||
31 | #address-cells = <1>; | ||
32 | #size-cells = <0>; | ||
33 | dmas = <&pdma1 0>, <&pdma1 1>; | ||
34 | dma-names = "rx", "tx"; | ||
35 | clock-names = "i2s_hclk", "i2s_clk"; | ||
36 | clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>; | ||
37 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/samsung,odroidx2-max98090.txt b/Documentation/devicetree/bindings/sound/samsung,odroidx2-max98090.txt new file mode 100644 index 000000000000..9148f72319e1 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/samsung,odroidx2-max98090.txt | |||
@@ -0,0 +1,35 @@ | |||
1 | Samsung Exynos Odroid X2/U3 audio complex with MAX98090 codec | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "samsung,odroidx2-audio" - for Odroid X2 board, | ||
5 | "samsung,odroidu3-audio" - for Odroid U3 board | ||
6 | - samsung,model : the user-visible name of this sound complex | ||
7 | - samsung,i2s-controller : the phandle of the I2S controller | ||
8 | - samsung,audio-codec : the phandle of the MAX98090 audio codec | ||
9 | - samsung,audio-routing : a list of the connections between audio | ||
10 | components; each entry is a pair of strings, the first being the | ||
11 | connection's sink, the second being the connection's source; | ||
12 | valid names for sources and sinks are the MAX98090's pins (as | ||
13 | documented in its binding), and the jacks on the board | ||
14 | For Odroid X2: | ||
15 | * Headphone Jack | ||
16 | * Mic Jack | ||
17 | * DMIC | ||
18 | |||
19 | For Odroid U3: | ||
20 | * Headphone Jack | ||
21 | * Speakers | ||
22 | |||
23 | Example: | ||
24 | |||
25 | sound { | ||
26 | compatible = "samsung,odroidu3-audio"; | ||
27 | samsung,i2s-controller = <&i2s0>; | ||
28 | samsung,audio-codec = <&max98090>; | ||
29 | samsung,model = "Odroid-X2"; | ||
30 | samsung,audio-routing = | ||
31 | "Headphone Jack", "HPL", | ||
32 | "Headphone Jack", "HPR", | ||
33 | "IN1", "Mic Jack", | ||
34 | "Mic Jack", "MICBIAS"; | ||
35 | }; | ||
diff --git a/Documentation/devicetree/bindings/sound/sirf-usp.txt b/Documentation/devicetree/bindings/sound/sirf-usp.txt new file mode 100644 index 000000000000..02f85b32d359 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/sirf-usp.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | * SiRF SoC USP module | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "sirf,prima2-usp-pcm" | ||
5 | - reg: Base address and size entries: | ||
6 | - dmas: List of DMA controller phandle and DMA request line ordered pairs. | ||
7 | - dma-names: Identifier string for each DMA request line in the dmas property. | ||
8 | These strings correspond 1:1 with the ordered pairs in dmas. | ||
9 | |||
10 | One of the DMA channels will be responsible for transmission (should be | ||
11 | named "tx") and one for reception (should be named "rx"). | ||
12 | |||
13 | - clocks: USP controller clock source | ||
14 | - pinctrl-names: Must contain a "default" entry. | ||
15 | - pinctrl-NNN: One property must exist for each entry in pinctrl-names. | ||
16 | |||
17 | Example: | ||
18 | usp0: usp@b0080000 { | ||
19 | compatible = "sirf,prima2-usp-pcm"; | ||
20 | reg = <0xb0080000 0x10000>; | ||
21 | clocks = <&clks 28>; | ||
22 | dmas = <&dmac1 1>, <&dmac1 2>; | ||
23 | dma-names = "rx", "tx"; | ||
24 | pinctrl-names = "default"; | ||
25 | pinctrl-0 = <&usp0_only_utfs_pins_a>; | ||
26 | }; | ||
27 | |||
diff --git a/Documentation/devicetree/bindings/sound/snow.txt b/Documentation/devicetree/bindings/sound/snow.txt index 678b191c37b8..6df74f15687f 100644 --- a/Documentation/devicetree/bindings/sound/snow.txt +++ b/Documentation/devicetree/bindings/sound/snow.txt | |||
@@ -3,15 +3,20 @@ Audio Binding for Snow boards | |||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : Can be one of the following, | 4 | - compatible : Can be one of the following, |
5 | "google,snow-audio-max98090" or | 5 | "google,snow-audio-max98090" or |
6 | "google,snow-audio-max98091" or | ||
6 | "google,snow-audio-max98095" | 7 | "google,snow-audio-max98095" |
7 | - samsung,i2s-controller: The phandle of the Samsung I2S controller | 8 | - samsung,i2s-controller: The phandle of the Samsung I2S controller |
8 | - samsung,audio-codec: The phandle of the audio codec | 9 | - samsung,audio-codec: The phandle of the audio codec |
9 | 10 | ||
11 | Optional: | ||
12 | - samsung,model: The name of the sound-card | ||
13 | |||
10 | Example: | 14 | Example: |
11 | 15 | ||
12 | sound { | 16 | sound { |
13 | compatible = "google,snow-audio-max98095"; | 17 | compatible = "google,snow-audio-max98095"; |
14 | 18 | ||
19 | samsung,model = "Snow-I2S-MAX98095"; | ||
15 | samsung,i2s-controller = <&i2s0>; | 20 | samsung,i2s-controller = <&i2s0>; |
16 | samsung,audio-codec = <&max98095>; | 21 | samsung,audio-codec = <&max98095>; |
17 | }; | 22 | }; |
diff --git a/Documentation/devicetree/bindings/sound/tas2552.txt b/Documentation/devicetree/bindings/sound/tas2552.txt new file mode 100644 index 000000000000..55e2a0af5645 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tas2552.txt | |||
@@ -0,0 +1,26 @@ | |||
1 | Texas Instruments - tas2552 Codec module | ||
2 | |||
3 | The tas2552 serial control bus communicates through I2C protocols | ||
4 | |||
5 | Required properties: | ||
6 | - compatible - One of: | ||
7 | "ti,tas2552" - TAS2552 | ||
8 | - reg - I2C slave address | ||
9 | - supply-*: Required supply regulators are: | ||
10 | "vbat" battery voltage | ||
11 | "iovdd" I/O Voltage | ||
12 | "avdd" Analog DAC Voltage | ||
13 | |||
14 | Optional properties: | ||
15 | - enable-gpio - gpio pin to enable/disable the device | ||
16 | |||
17 | Example: | ||
18 | |||
19 | tas2552: tas2552@41 { | ||
20 | compatible = "ti,tas2552"; | ||
21 | reg = <0x41>; | ||
22 | enable-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; | ||
23 | }; | ||
24 | |||
25 | For more product information please see the link below: | ||
26 | http://www.ti.com/product/TAS2552 | ||
diff --git a/Documentation/devicetree/bindings/sound/ti,tas5086.txt b/Documentation/devicetree/bindings/sound/ti,tas5086.txt index d2866a0d6a26..234dad296da7 100644 --- a/Documentation/devicetree/bindings/sound/ti,tas5086.txt +++ b/Documentation/devicetree/bindings/sound/ti,tas5086.txt | |||
@@ -31,6 +31,9 @@ Optional properties: | |||
31 | 31 | ||
32 | Most systems should not set any of these properties. | 32 | Most systems should not set any of these properties. |
33 | 33 | ||
34 | - avdd-supply: Power supply for AVDD, providing 3.3V | ||
35 | - dvdd-supply: Power supply for DVDD, providing 3.3V | ||
36 | |||
34 | Examples: | 37 | Examples: |
35 | 38 | ||
36 | i2c_bus { | 39 | i2c_bus { |
@@ -39,5 +42,7 @@ Examples: | |||
39 | reg = <0x1b>; | 42 | reg = <0x1b>; |
40 | reset-gpio = <&gpio 23 0>; | 43 | reset-gpio = <&gpio 23 0>; |
41 | ti,charge-period = <156000>; | 44 | ti,charge-period = <156000>; |
45 | avdd-supply = <&vdd_3v3_reg>; | ||
46 | dvdd-supply = <&vdd_3v3_reg>; | ||
42 | }; | 47 | }; |
43 | }; | 48 | }; |
diff --git a/Documentation/devicetree/bindings/sound/wm8904.txt b/Documentation/devicetree/bindings/sound/wm8904.txt new file mode 100644 index 000000000000..e99f4097c83c --- /dev/null +++ b/Documentation/devicetree/bindings/sound/wm8904.txt | |||
@@ -0,0 +1,33 @@ | |||
1 | WM8904 audio CODEC | ||
2 | |||
3 | This device supports I2C only. | ||
4 | |||
5 | Required properties: | ||
6 | - compatible: "wlf,wm8904" | ||
7 | - reg: the I2C address of the device. | ||
8 | - clock-names: "mclk" | ||
9 | - clocks: reference to | ||
10 | <Documentation/devicetree/bindings/clock/clock-bindings.txt> | ||
11 | |||
12 | Pins on the device (for linking into audio routes): | ||
13 | |||
14 | * IN1L | ||
15 | * IN1R | ||
16 | * IN2L | ||
17 | * IN2R | ||
18 | * IN3L | ||
19 | * IN3R | ||
20 | * HPOUTL | ||
21 | * HPOUTR | ||
22 | * LINEOUTL | ||
23 | * LINEOUTR | ||
24 | * MICBIAS | ||
25 | |||
26 | Examples: | ||
27 | |||
28 | codec: wm8904@1a { | ||
29 | compatible = "wlf,wm8904"; | ||
30 | reg = <0x1a>; | ||
31 | clocks = <&pck0>; | ||
32 | clock-names = "mclk"; | ||
33 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/efm32-spi.txt b/Documentation/devicetree/bindings/spi/efm32-spi.txt index 130cd17e3680..750e29aff9bc 100644 --- a/Documentation/devicetree/bindings/spi/efm32-spi.txt +++ b/Documentation/devicetree/bindings/spi/efm32-spi.txt | |||
@@ -10,11 +10,12 @@ Required properties: | |||
10 | - cs-gpios: see spi-bus.txt | 10 | - cs-gpios: see spi-bus.txt |
11 | 11 | ||
12 | Recommended properties : | 12 | Recommended properties : |
13 | - efm32,location: Value to write to the ROUTE register's LOCATION bitfield to | 13 | - energymicro,location: Value to write to the ROUTE register's LOCATION |
14 | configure the pinmux for the device, see datasheet for values. | 14 | bitfield to configure the pinmux for the device, see |
15 | If "efm32,location" property is not provided, keeping what is | 15 | datasheet for values. |
16 | already configured in the hardware, so its either the reset | 16 | If this property is not provided, keeping what is |
17 | default 0 or whatever the bootloader did. | 17 | already configured in the hardware, so its either the |
18 | reset default 0 or whatever the bootloader did. | ||
18 | 19 | ||
19 | Example: | 20 | Example: |
20 | 21 | ||
@@ -26,7 +27,7 @@ spi1: spi@0x4000c400 { /* USART1 */ | |||
26 | interrupts = <15 16>; | 27 | interrupts = <15 16>; |
27 | clocks = <&cmu 20>; | 28 | clocks = <&cmu 20>; |
28 | cs-gpios = <&gpio 51 1>; // D3 | 29 | cs-gpios = <&gpio 51 1>; // D3 |
29 | efm32,location = <1>; | 30 | energymicro,location = <1>; |
30 | status = "ok"; | 31 | status = "ok"; |
31 | 32 | ||
32 | ks8851@0 { | 33 | ks8851@0 { |
diff --git a/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt b/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt index bee6ff204baf..e2c88df2cc15 100644 --- a/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt +++ b/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt | |||
@@ -7,7 +7,11 @@ SPI in master mode supports up to 50MHz, up to four chip selects, programmable | |||
7 | data path from 4 bits to 32 bits and numerous protocol variants. | 7 | data path from 4 bits to 32 bits and numerous protocol variants. |
8 | 8 | ||
9 | Required properties: | 9 | Required properties: |
10 | - compatible: Should contain "qcom,spi-qup-v2.1.1" or "qcom,spi-qup-v2.2.1" | 10 | - compatible: Should contain: |
11 | "qcom,spi-qup-v1.1.1" for 8660, 8960 and 8064. | ||
12 | "qcom,spi-qup-v2.1.1" for 8974 and later | ||
13 | "qcom,spi-qup-v2.2.1" for 8974 v2 and later. | ||
14 | |||
11 | - reg: Should contain base register location and length | 15 | - reg: Should contain base register location and length |
12 | - interrupts: Interrupt number used by this controller | 16 | - interrupts: Interrupt number used by this controller |
13 | 17 | ||
diff --git a/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.txt b/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.txt new file mode 100644 index 000000000000..bd99193e87b9 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.txt | |||
@@ -0,0 +1,28 @@ | |||
1 | Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface. | ||
2 | |||
3 | Required properties: | ||
4 | - compatible : "snps,dw-apb-ssi" | ||
5 | - reg : The register base for the controller. | ||
6 | - interrupts : One interrupt, used by the controller. | ||
7 | - #address-cells : <1>, as required by generic SPI binding. | ||
8 | - #size-cells : <0>, also as required by generic SPI binding. | ||
9 | |||
10 | Optional properties: | ||
11 | - cs-gpios : Specifies the gpio pis to be used for chipselects. | ||
12 | - num-cs : The number of chipselects. If omitted, this will default to 4. | ||
13 | |||
14 | Child nodes as per the generic SPI binding. | ||
15 | |||
16 | Example: | ||
17 | |||
18 | spi@fff00000 { | ||
19 | compatible = "snps,dw-apb-ssi"; | ||
20 | reg = <0xfff00000 0x1000>; | ||
21 | interrupts = <0 154 4>; | ||
22 | #address-cells = <1>; | ||
23 | #size-cells = <0>; | ||
24 | num-cs = <2>; | ||
25 | cs-gpios = <&gpio0 13 0>, | ||
26 | <&gpio0 14 0>; | ||
27 | }; | ||
28 | |||
diff --git a/Documentation/devicetree/bindings/spi/spi-davinci.txt b/Documentation/devicetree/bindings/spi/spi-davinci.txt index 6d0ac8d0ad9b..f80887bca0d6 100644 --- a/Documentation/devicetree/bindings/spi/spi-davinci.txt +++ b/Documentation/devicetree/bindings/spi/spi-davinci.txt | |||
@@ -8,7 +8,8 @@ Required properties: | |||
8 | - "ti,dm6441-spi" for SPI used similar to that on DM644x SoC family | 8 | - "ti,dm6441-spi" for SPI used similar to that on DM644x SoC family |
9 | - "ti,da830-spi" for SPI used similar to that on DA8xx SoC family | 9 | - "ti,da830-spi" for SPI used similar to that on DA8xx SoC family |
10 | - reg: Offset and length of SPI controller register space | 10 | - reg: Offset and length of SPI controller register space |
11 | - num-cs: Number of chip selects | 11 | - num-cs: Number of chip selects. This includes internal as well as |
12 | GPIO chip selects. | ||
12 | - ti,davinci-spi-intr-line: interrupt line used to connect the SPI | 13 | - ti,davinci-spi-intr-line: interrupt line used to connect the SPI |
13 | IP to the interrupt controller within the SoC. Possible values | 14 | IP to the interrupt controller within the SoC. Possible values |
14 | are 0 and 1. Manual says one of the two possible interrupt | 15 | are 0 and 1. Manual says one of the two possible interrupt |
@@ -17,6 +18,12 @@ Required properties: | |||
17 | - interrupts: interrupt number mapped to CPU. | 18 | - interrupts: interrupt number mapped to CPU. |
18 | - clocks: spi clk phandle | 19 | - clocks: spi clk phandle |
19 | 20 | ||
21 | Optional: | ||
22 | - cs-gpios: gpio chip selects | ||
23 | For example to have 3 internal CS and 2 GPIO CS, user could define | ||
24 | cs-gpios = <0>, <0>, <0>, <&gpio1 30 0>, <&gpio1 31 0>; | ||
25 | where first three are internal CS and last two are GPIO CS. | ||
26 | |||
20 | Example of a NOR flash slave device (n25q032) connected to DaVinci | 27 | Example of a NOR flash slave device (n25q032) connected to DaVinci |
21 | SPI controller device over the SPI bus. | 28 | SPI controller device over the SPI bus. |
22 | 29 | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-rockchip.txt b/Documentation/devicetree/bindings/spi/spi-rockchip.txt new file mode 100644 index 000000000000..7bab35575817 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-rockchip.txt | |||
@@ -0,0 +1,37 @@ | |||
1 | * Rockchip SPI Controller | ||
2 | |||
3 | The Rockchip SPI controller is used to interface with various devices such as flash | ||
4 | and display controllers using the SPI communication interface. | ||
5 | |||
6 | Required Properties: | ||
7 | |||
8 | - compatible: should be one of the following. | ||
9 | "rockchip,rk3066-spi" for rk3066. | ||
10 | "rockchip,rk3188-spi", "rockchip,rk3066-spi" for rk3188. | ||
11 | "rockchip,rk3288-spi", "rockchip,rk3066-spi" for rk3288. | ||
12 | - reg: physical base address of the controller and length of memory mapped | ||
13 | region. | ||
14 | - interrupts: The interrupt number to the cpu. The interrupt specifier format | ||
15 | depends on the interrupt controller. | ||
16 | - clocks: Must contain an entry for each entry in clock-names. | ||
17 | - clock-names: Shall be "spiclk" for the transfer-clock, and "apb_pclk" for | ||
18 | the peripheral clock. | ||
19 | - dmas: DMA specifiers for tx and rx dma. See the DMA client binding, | ||
20 | Documentation/devicetree/bindings/dma/dma.txt | ||
21 | - dma-names: DMA request names should include "tx" and "rx" if present. | ||
22 | - #address-cells: should be 1. | ||
23 | - #size-cells: should be 0. | ||
24 | |||
25 | Example: | ||
26 | |||
27 | spi0: spi@ff110000 { | ||
28 | compatible = "rockchip,rk3066-spi"; | ||
29 | reg = <0xff110000 0x1000>; | ||
30 | dmas = <&pdma1 11>, <&pdma1 12>; | ||
31 | dma-names = "tx", "rx"; | ||
32 | #address-cells = <1>; | ||
33 | #size-cells = <0>; | ||
34 | interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>; | ||
35 | clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>; | ||
36 | clock-names = "spiclk", "apb_pclk"; | ||
37 | }; | ||
diff --git a/Documentation/devicetree/bindings/spi/spi-samsung.txt b/Documentation/devicetree/bindings/spi/spi-samsung.txt index 86aa061f069f..1e8a8578148f 100644 --- a/Documentation/devicetree/bindings/spi/spi-samsung.txt +++ b/Documentation/devicetree/bindings/spi/spi-samsung.txt | |||
@@ -8,7 +8,6 @@ Required SoC Specific Properties: | |||
8 | - compatible: should be one of the following. | 8 | - compatible: should be one of the following. |
9 | - samsung,s3c2443-spi: for s3c2443, s3c2416 and s3c2450 platforms | 9 | - samsung,s3c2443-spi: for s3c2443, s3c2416 and s3c2450 platforms |
10 | - samsung,s3c6410-spi: for s3c6410 platforms | 10 | - samsung,s3c6410-spi: for s3c6410 platforms |
11 | - samsung,s5p6440-spi: for s5p6440 and s5p6450 platforms | ||
12 | - samsung,s5pv210-spi: for s5pv210 and s5pc110 platforms | 11 | - samsung,s5pv210-spi: for s5pv210 and s5pc110 platforms |
13 | - samsung,exynos4210-spi: for exynos4 and exynos5 platforms | 12 | - samsung,exynos4210-spi: for exynos4 and exynos5 platforms |
14 | 13 | ||
@@ -18,14 +17,11 @@ Required SoC Specific Properties: | |||
18 | - interrupts: The interrupt number to the cpu. The interrupt specifier format | 17 | - interrupts: The interrupt number to the cpu. The interrupt specifier format |
19 | depends on the interrupt controller. | 18 | depends on the interrupt controller. |
20 | 19 | ||
21 | [PRELIMINARY: the dma channel allocation will change once there are | 20 | - dmas : Two or more DMA channel specifiers following the convention outlined |
22 | official DMA bindings] | 21 | in bindings/dma/dma.txt |
23 | 22 | ||
24 | - tx-dma-channel: The dma channel specifier for tx operations. The format of | 23 | - dma-names: Names for the dma channels. There must be at least one channel |
25 | the dma specifier depends on the dma controller. | 24 | named "tx" for transmit and named "rx" for receive. |
26 | |||
27 | - rx-dma-channel: The dma channel specifier for rx operations. The format of | ||
28 | the dma specifier depends on the dma controller. | ||
29 | 25 | ||
30 | Required Board Specific Properties: | 26 | Required Board Specific Properties: |
31 | 27 | ||
@@ -42,15 +38,13 @@ Optional Board Specific Properties: | |||
42 | - num-cs: Specifies the number of chip select lines supported. If | 38 | - num-cs: Specifies the number of chip select lines supported. If |
43 | not specified, the default number of chip select lines is set to 1. | 39 | not specified, the default number of chip select lines is set to 1. |
44 | 40 | ||
41 | - cs-gpios: should specify GPIOs used for chipselects (see spi-bus.txt) | ||
42 | |||
45 | SPI Controller specific data in SPI slave nodes: | 43 | SPI Controller specific data in SPI slave nodes: |
46 | 44 | ||
47 | - The spi slave nodes should provide the following information which is required | 45 | - The spi slave nodes should provide the following information which is required |
48 | by the spi controller. | 46 | by the spi controller. |
49 | 47 | ||
50 | - cs-gpio: A gpio specifier that specifies the gpio line used as | ||
51 | the slave select line by the spi controller. The format of the gpio | ||
52 | specifier depends on the gpio controller. | ||
53 | |||
54 | - samsung,spi-feedback-delay: The sampling phase shift to be applied on the | 48 | - samsung,spi-feedback-delay: The sampling phase shift to be applied on the |
55 | miso line (to account for any lag in the miso line). The following are the | 49 | miso line (to account for any lag in the miso line). The following are the |
56 | valid values. | 50 | valid values. |
@@ -74,8 +68,11 @@ Example: | |||
74 | compatible = "samsung,exynos4210-spi"; | 68 | compatible = "samsung,exynos4210-spi"; |
75 | reg = <0x12d20000 0x100>; | 69 | reg = <0x12d20000 0x100>; |
76 | interrupts = <0 66 0>; | 70 | interrupts = <0 66 0>; |
77 | tx-dma-channel = <&pdma0 5>; | 71 | dmas = <&pdma0 5 |
78 | rx-dma-channel = <&pdma0 4>; | 72 | &pdma0 4>; |
73 | dma-names = "tx", "rx"; | ||
74 | #address-cells = <1>; | ||
75 | #size-cells = <0>; | ||
79 | }; | 76 | }; |
80 | 77 | ||
81 | - Board Specific Portion: | 78 | - Board Specific Portion: |
@@ -85,6 +82,7 @@ Example: | |||
85 | #size-cells = <0>; | 82 | #size-cells = <0>; |
86 | pinctrl-names = "default"; | 83 | pinctrl-names = "default"; |
87 | pinctrl-0 = <&spi0_bus>; | 84 | pinctrl-0 = <&spi0_bus>; |
85 | cs-gpios = <&gpa2 5 0>; | ||
88 | 86 | ||
89 | w25q80bw@0 { | 87 | w25q80bw@0 { |
90 | #address-cells = <1>; | 88 | #address-cells = <1>; |
@@ -94,7 +92,6 @@ Example: | |||
94 | spi-max-frequency = <10000>; | 92 | spi-max-frequency = <10000>; |
95 | 93 | ||
96 | controller-data { | 94 | controller-data { |
97 | cs-gpio = <&gpa2 5 1 0 3>; | ||
98 | samsung,spi-feedback-delay = <0>; | 95 | samsung,spi-feedback-delay = <0>; |
99 | }; | 96 | }; |
100 | 97 | ||
diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt index c94909215c07..ae738f562acc 100644 --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt | |||
@@ -3,6 +3,7 @@ | |||
3 | ** Required properties: | 3 | ** Required properties: |
4 | 4 | ||
5 | - compatible : One of the following: | 5 | - compatible : One of the following: |
6 | "samsung,exynos3250-tmu" | ||
6 | "samsung,exynos4412-tmu" | 7 | "samsung,exynos4412-tmu" |
7 | "samsung,exynos4210-tmu" | 8 | "samsung,exynos4210-tmu" |
8 | "samsung,exynos5250-tmu" | 9 | "samsung,exynos5250-tmu" |
diff --git a/Documentation/devicetree/bindings/thermal/rcar-thermal.txt b/Documentation/devicetree/bindings/thermal/rcar-thermal.txt index 28ef498a66e5..0ef00be44b01 100644 --- a/Documentation/devicetree/bindings/thermal/rcar-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/rcar-thermal.txt | |||
@@ -1,7 +1,13 @@ | |||
1 | * Renesas R-Car Thermal | 1 | * Renesas R-Car Thermal |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible : "renesas,rcar-thermal" | 4 | - compatible : "renesas,thermal-<soctype>", "renesas,rcar-thermal" |
5 | as fallback. | ||
6 | Examples with soctypes are: | ||
7 | - "renesas,thermal-r8a73a4" (R-Mobile AP6) | ||
8 | - "renesas,thermal-r8a7779" (R-Car H1) | ||
9 | - "renesas,thermal-r8a7790" (R-Car H2) | ||
10 | - "renesas,thermal-r8a7791" (R-Car M2) | ||
5 | - reg : Address range of the thermal registers. | 11 | - reg : Address range of the thermal registers. |
6 | The 1st reg will be recognized as common register | 12 | The 1st reg will be recognized as common register |
7 | if it has "interrupts". | 13 | if it has "interrupts". |
@@ -12,18 +18,18 @@ Option properties: | |||
12 | 18 | ||
13 | Example (non interrupt support): | 19 | Example (non interrupt support): |
14 | 20 | ||
15 | thermal@e61f0100 { | 21 | thermal@ffc48000 { |
16 | compatible = "renesas,rcar-thermal"; | 22 | compatible = "renesas,thermal-r8a7779", "renesas,rcar-thermal"; |
17 | reg = <0xe61f0100 0x38>; | 23 | reg = <0xffc48000 0x38>; |
18 | }; | 24 | }; |
19 | 25 | ||
20 | Example (interrupt support): | 26 | Example (interrupt support): |
21 | 27 | ||
22 | thermal@e61f0000 { | 28 | thermal@e61f0000 { |
23 | compatible = "renesas,rcar-thermal"; | 29 | compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal"; |
24 | reg = <0xe61f0000 0x14 | 30 | reg = <0xe61f0000 0x14 |
25 | 0xe61f0100 0x38 | 31 | 0xe61f0100 0x38 |
26 | 0xe61f0200 0x38 | 32 | 0xe61f0200 0x38 |
27 | 0xe61f0300 0x38>; | 33 | 0xe61f0300 0x38>; |
28 | interrupts = <0 69 4>; | 34 | interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>; |
29 | }; | 35 | }; |
diff --git a/Documentation/devicetree/bindings/thermal/st-thermal.txt b/Documentation/devicetree/bindings/thermal/st-thermal.txt new file mode 100644 index 000000000000..3b9251b4a145 --- /dev/null +++ b/Documentation/devicetree/bindings/thermal/st-thermal.txt | |||
@@ -0,0 +1,42 @@ | |||
1 | Binding for Thermal Sensor driver for STMicroelectronics STi series of SoCs. | ||
2 | |||
3 | Required parameters: | ||
4 | ------------------- | ||
5 | |||
6 | compatible : st,<SoC>-<module>-thermal; should be one of: | ||
7 | "st,stih415-sas-thermal", | ||
8 | "st,stih415-mpe-thermal", | ||
9 | "st,stih416-sas-thermal" | ||
10 | "st,stih416-mpe-thermal" | ||
11 | "st,stid127-thermal" or | ||
12 | "st,stih407-thermal" | ||
13 | according to the SoC type (stih415, stih416, stid127, stih407) | ||
14 | and module type (sas or mpe). On stid127 & stih407 there is only | ||
15 | one die/module, so there is no module type in the compatible | ||
16 | string. | ||
17 | clock-names : Should be "thermal". | ||
18 | See: Documentation/devicetree/bindings/resource-names.txt | ||
19 | clocks : Phandle of the clock used by the thermal sensor. | ||
20 | See: Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
21 | |||
22 | Optional parameters: | ||
23 | ------------------- | ||
24 | |||
25 | reg : For non-sysconf based sensors, this should be the physical base | ||
26 | address and length of the sensor's registers. | ||
27 | interrupts : Standard way to define interrupt number. | ||
28 | Interrupt is mandatory to be defined when compatible is | ||
29 | "stih416-mpe-thermal". | ||
30 | NB: For thermal sensor's for which no interrupt has been | ||
31 | defined, a polling delay of 1000ms will be used to read the | ||
32 | temperature from device. | ||
33 | |||
34 | Example: | ||
35 | |||
36 | temp1@fdfe8000 { | ||
37 | compatible = "st,stih416-mpe-thermal"; | ||
38 | reg = <0xfdfe8000 0x10>; | ||
39 | clock-names = "thermal"; | ||
40 | clocks = <&clk_m_mpethsens>; | ||
41 | interrupts = <GIC_SPI 23 IRQ_TYPE_NONE>; | ||
42 | }; | ||
diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt index a6a32cb7f777..1bae71e9ad47 100644 --- a/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt | |||
@@ -4,6 +4,7 @@ Required properties: | |||
4 | - compatible: Should be "fsl,imx27-usb" | 4 | - compatible: Should be "fsl,imx27-usb" |
5 | - reg: Should contain registers location and length | 5 | - reg: Should contain registers location and length |
6 | - interrupts: Should contain controller interrupt | 6 | - interrupts: Should contain controller interrupt |
7 | - fsl,usbphy: phandle of usb phy that connects to the port | ||
7 | 8 | ||
8 | Recommended properies: | 9 | Recommended properies: |
9 | - phy_type: the type of the phy connected to the core. Should be one | 10 | - phy_type: the type of the phy connected to the core. Should be one |
@@ -12,7 +13,6 @@ Recommended properies: | |||
12 | - dr_mode: One of "host", "peripheral" or "otg". Defaults to "otg" | 13 | - dr_mode: One of "host", "peripheral" or "otg". Defaults to "otg" |
13 | 14 | ||
14 | Optional properties: | 15 | Optional properties: |
15 | - fsl,usbphy: phandler of usb phy that connects to the only one port | ||
16 | - fsl,usbmisc: phandler of non-core register device, with one argument | 16 | - fsl,usbmisc: phandler of non-core register device, with one argument |
17 | that indicate usb controller index | 17 | that indicate usb controller index |
18 | - vbus-supply: regulator for vbus | 18 | - vbus-supply: regulator for vbus |
diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt index ba797d3e6326..c9205fbf26e2 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-usb-phy.txt | |||
@@ -20,6 +20,12 @@ Required properties : | |||
20 | Present if phy_type == utmi. | 20 | Present if phy_type == utmi. |
21 | - ulpi-link: The clock Tegra provides to the ULPI PHY (cdev2). | 21 | - ulpi-link: The clock Tegra provides to the ULPI PHY (cdev2). |
22 | Present if phy_type == ulpi, and ULPI link mode is in use. | 22 | Present if phy_type == ulpi, and ULPI link mode is in use. |
23 | - resets : Must contain an entry for each entry in reset-names. | ||
24 | See ../reset/reset.txt for details. | ||
25 | - reset-names : Must include the following entries: | ||
26 | - usb: The PHY's own reset signal. | ||
27 | - utmi-pads: The reset of the PHY containing the chip-wide UTMI pad control | ||
28 | registers. Required even if phy_type == ulpi. | ||
23 | 29 | ||
24 | Required properties for phy_type == ulpi: | 30 | Required properties for phy_type == ulpi: |
25 | - nvidia,phy-reset-gpio : The GPIO used to reset the PHY. | 31 | - nvidia,phy-reset-gpio : The GPIO used to reset the PHY. |
@@ -56,6 +62,8 @@ Optional properties: | |||
56 | host means this is a host controller | 62 | host means this is a host controller |
57 | peripheral means it is device controller | 63 | peripheral means it is device controller |
58 | otg means it can operate as either ("on the go") | 64 | otg means it can operate as either ("on the go") |
65 | - nvidia,has-utmi-pad-registers : boolean indicates whether this controller | ||
66 | contains the UTMI pad control registers common to all USB controllers. | ||
59 | 67 | ||
60 | VBUS control (required for dr_mode == otg, optional for dr_mode == host): | 68 | VBUS control (required for dr_mode == otg, optional for dr_mode == host): |
61 | - vbus-supply: regulator for VBUS | 69 | - vbus-supply: regulator for VBUS |
diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt index 5a79377c6a96..86f67f0886bc 100644 --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt | |||
@@ -9,8 +9,9 @@ Required properties: | |||
9 | register set for the device. | 9 | register set for the device. |
10 | - interrupts: one XHCI interrupt should be described here. | 10 | - interrupts: one XHCI interrupt should be described here. |
11 | 11 | ||
12 | Optional property: | 12 | Optional properties: |
13 | - clocks: reference to a clock | 13 | - clocks: reference to a clock |
14 | - usb3-lpm-capable: determines if platform is USB3 LPM capable | ||
14 | 15 | ||
15 | Example: | 16 | Example: |
16 | usb@f0931000 { | 17 | usb@f0931000 { |
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index dd5bce848cef..ac7269f90764 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt | |||
@@ -6,6 +6,7 @@ using them to avoid name-space collisions. | |||
6 | abilis Abilis Systems | 6 | abilis Abilis Systems |
7 | active-semi Active-Semi International Inc | 7 | active-semi Active-Semi International Inc |
8 | ad Avionic Design GmbH | 8 | ad Avionic Design GmbH |
9 | adapteva Adapteva, Inc. | ||
9 | adi Analog Devices, Inc. | 10 | adi Analog Devices, Inc. |
10 | aeroflexgaisler Aeroflex Gaisler AB | 11 | aeroflexgaisler Aeroflex Gaisler AB |
11 | ak Asahi Kasei Corp. | 12 | ak Asahi Kasei Corp. |
@@ -42,6 +43,7 @@ dmo Data Modul AG | |||
42 | ebv EBV Elektronik | 43 | ebv EBV Elektronik |
43 | edt Emerging Display Technologies | 44 | edt Emerging Display Technologies |
44 | emmicro EM Microelectronic | 45 | emmicro EM Microelectronic |
46 | epcos EPCOS AG | ||
45 | epfl Ecole Polytechnique Fédérale de Lausanne | 47 | epfl Ecole Polytechnique Fédérale de Lausanne |
46 | epson Seiko Epson Corp. | 48 | epson Seiko Epson Corp. |
47 | est ESTeem Wireless Modems | 49 | est ESTeem Wireless Modems |
@@ -71,6 +73,7 @@ karo Ka-Ro electronics GmbH | |||
71 | keymile Keymile GmbH | 73 | keymile Keymile GmbH |
72 | lacie LaCie | 74 | lacie LaCie |
73 | lantiq Lantiq Semiconductor | 75 | lantiq Lantiq Semiconductor |
76 | lenovo Lenovo Group Ltd. | ||
74 | lg LG Corporation | 77 | lg LG Corporation |
75 | linux Linux-specific binding | 78 | linux Linux-specific binding |
76 | lsi LSI Corp. (LSI Logic) | 79 | lsi LSI Corp. (LSI Logic) |
@@ -100,6 +103,7 @@ panasonic Panasonic Corporation | |||
100 | phytec PHYTEC Messtechnik GmbH | 103 | phytec PHYTEC Messtechnik GmbH |
101 | picochip Picochip Ltd | 104 | picochip Picochip Ltd |
102 | plathome Plat'Home Co., Ltd. | 105 | plathome Plat'Home Co., Ltd. |
106 | pixcir PIXCIR MICROELECTRONICS Co., Ltd | ||
103 | powervr PowerVR (deprecated, use img) | 107 | powervr PowerVR (deprecated, use img) |
104 | qca Qualcomm Atheros, Inc. | 108 | qca Qualcomm Atheros, Inc. |
105 | qcom Qualcomm Technologies, Inc | 109 | qcom Qualcomm Technologies, Inc |
@@ -123,6 +127,7 @@ sii Seiko Instruments, Inc. | |||
123 | sirf SiRF Technology, Inc. | 127 | sirf SiRF Technology, Inc. |
124 | smsc Standard Microsystems Corporation | 128 | smsc Standard Microsystems Corporation |
125 | snps Synopsys, Inc. | 129 | snps Synopsys, Inc. |
130 | solidrun SolidRun | ||
126 | spansion Spansion Inc. | 131 | spansion Spansion Inc. |
127 | st STMicroelectronics | 132 | st STMicroelectronics |
128 | ste ST-Ericsson | 133 | ste ST-Ericsson |
diff --git a/Documentation/devicetree/bindings/video/arm,pl11x.txt b/Documentation/devicetree/bindings/video/arm,pl11x.txt new file mode 100644 index 000000000000..3e3039a8a253 --- /dev/null +++ b/Documentation/devicetree/bindings/video/arm,pl11x.txt | |||
@@ -0,0 +1,109 @@ | |||
1 | * ARM PrimeCell Color LCD Controller PL110/PL111 | ||
2 | |||
3 | See also Documentation/devicetree/bindings/arm/primecell.txt | ||
4 | |||
5 | Required properties: | ||
6 | |||
7 | - compatible: must be one of: | ||
8 | "arm,pl110", "arm,primecell" | ||
9 | "arm,pl111", "arm,primecell" | ||
10 | |||
11 | - reg: base address and size of the control registers block | ||
12 | |||
13 | - interrupt-names: either the single entry "combined" representing a | ||
14 | combined interrupt output (CLCDINTR), or the four entries | ||
15 | "mbe", "vcomp", "lnbu", "fuf" representing the individual | ||
16 | CLCDMBEINTR, CLCDVCOMPINTR, CLCDLNBUINTR, CLCDFUFINTR interrupts | ||
17 | |||
18 | - interrupts: contains an interrupt specifier for each entry in | ||
19 | interrupt-names | ||
20 | |||
21 | - clock-names: should contain "clcdclk" and "apb_pclk" | ||
22 | |||
23 | - clocks: contains phandle and clock specifier pairs for the entries | ||
24 | in the clock-names property. See | ||
25 | Documentation/devicetree/binding/clock/clock-bindings.txt | ||
26 | |||
27 | Optional properties: | ||
28 | |||
29 | - memory-region: phandle to a node describing memory (see | ||
30 | Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt) | ||
31 | to be used for the framebuffer; if not present, the framebuffer | ||
32 | may be located anywhere in the memory | ||
33 | |||
34 | - max-memory-bandwidth: maximum bandwidth in bytes per second that the | ||
35 | cell's memory interface can handle; if not present, the memory | ||
36 | interface is fast enough to handle all possible video modes | ||
37 | |||
38 | Required sub-nodes: | ||
39 | |||
40 | - port: describes LCD panel signals, following the common binding | ||
41 | for video transmitter interfaces; see | ||
42 | Documentation/devicetree/bindings/media/video-interfaces.txt; | ||
43 | when it is a TFT panel, the port's endpoint must define the | ||
44 | following property: | ||
45 | |||
46 | - arm,pl11x,tft-r0g0b0-pads: an array of three 32-bit values, | ||
47 | defining the way CLD pads are wired up; first value | ||
48 | contains index of the "CLD" external pin (pad) used | ||
49 | as R0 (first bit of the red component), second value | ||
50 | index of the pad used as G0, third value index of the | ||
51 | pad used as B0, see also "LCD panel signal multiplexing | ||
52 | details" paragraphs in the PL110/PL111 Technical | ||
53 | Reference Manuals; this implicitly defines available | ||
54 | color modes, for example: | ||
55 | - PL111 TFT 4:4:4 panel: | ||
56 | arm,pl11x,tft-r0g0b0-pads = <4 15 20>; | ||
57 | - PL110 TFT (1:)5:5:5 panel: | ||
58 | arm,pl11x,tft-r0g0b0-pads = <1 7 13>; | ||
59 | - PL111 TFT (1:)5:5:5 panel: | ||
60 | arm,pl11x,tft-r0g0b0-pads = <3 11 19>; | ||
61 | - PL111 TFT 5:6:5 panel: | ||
62 | arm,pl11x,tft-r0g0b0-pads = <3 10 19>; | ||
63 | - PL110 and PL111 TFT 8:8:8 panel: | ||
64 | arm,pl11x,tft-r0g0b0-pads = <0 8 16>; | ||
65 | - PL110 and PL111 TFT 8:8:8 panel, R & B components swapped: | ||
66 | arm,pl11x,tft-r0g0b0-pads = <16 8 0>; | ||
67 | |||
68 | |||
69 | Example: | ||
70 | |||
71 | clcd@10020000 { | ||
72 | compatible = "arm,pl111", "arm,primecell"; | ||
73 | reg = <0x10020000 0x1000>; | ||
74 | interrupt-names = "combined"; | ||
75 | interrupts = <0 44 4>; | ||
76 | clocks = <&oscclk1>, <&oscclk2>; | ||
77 | clock-names = "clcdclk", "apb_pclk"; | ||
78 | max-memory-bandwidth = <94371840>; /* Bps, 1024x768@60 16bpp */ | ||
79 | |||
80 | port { | ||
81 | clcd_pads: endpoint { | ||
82 | remote-endpoint = <&clcd_panel>; | ||
83 | arm,pl11x,tft-r0g0b0-pads = <0 8 16>; | ||
84 | }; | ||
85 | }; | ||
86 | |||
87 | }; | ||
88 | |||
89 | panel { | ||
90 | compatible = "panel-dpi"; | ||
91 | |||
92 | port { | ||
93 | clcd_panel: endpoint { | ||
94 | remote-endpoint = <&clcd_pads>; | ||
95 | }; | ||
96 | }; | ||
97 | |||
98 | panel-timing { | ||
99 | clock-frequency = <25175000>; | ||
100 | hactive = <640>; | ||
101 | hback-porch = <40>; | ||
102 | hfront-porch = <24>; | ||
103 | hsync-len = <96>; | ||
104 | vactive = <480>; | ||
105 | vback-porch = <32>; | ||
106 | vfront-porch = <11>; | ||
107 | vsync-len = <2>; | ||
108 | }; | ||
109 | }; | ||
diff --git a/Documentation/devicetree/bindings/video/atmel,lcdc.txt b/Documentation/devicetree/bindings/video/atmel,lcdc.txt index 1ec175eddca8..b75af94a5e52 100644 --- a/Documentation/devicetree/bindings/video/atmel,lcdc.txt +++ b/Documentation/devicetree/bindings/video/atmel,lcdc.txt | |||
@@ -46,6 +46,7 @@ Required properties (as per of_videomode_helper): | |||
46 | 46 | ||
47 | Optional properties (as per of_videomode_helper): | 47 | Optional properties (as per of_videomode_helper): |
48 | - atmel,lcdcon-backlight: enable backlight | 48 | - atmel,lcdcon-backlight: enable backlight |
49 | - atmel,lcdcon-backlight-inverted: invert backlight PWM polarity | ||
49 | - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG" | 50 | - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG" |
50 | - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed) | 51 | - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed) |
51 | 52 | ||
diff --git a/Documentation/devicetree/bindings/video/cirrus,clps711x-fb.txt b/Documentation/devicetree/bindings/video/cirrus,clps711x-fb.txt new file mode 100644 index 000000000000..6fc3c6adeefa --- /dev/null +++ b/Documentation/devicetree/bindings/video/cirrus,clps711x-fb.txt | |||
@@ -0,0 +1,47 @@ | |||
1 | * Currus Logic CLPS711X Framebuffer | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: Shall contain "cirrus,clps711x-fb". | ||
5 | - reg : Physical base address and length of the controller's registers + | ||
6 | location and size of the framebuffer memory. | ||
7 | - clocks : phandle + clock specifier pair of the FB reference clock. | ||
8 | - display : phandle to a display node as described in | ||
9 | Documentation/devicetree/bindings/video/display-timing.txt. | ||
10 | Additionally, the display node has to define properties: | ||
11 | - bits-per-pixel: Bits per pixel. | ||
12 | - ac-prescale : LCD AC bias frequency. This frequency is the required | ||
13 | AC bias frequency for a given manufacturer's LCD plate. | ||
14 | - cmap-invert : Invert the color levels (Optional). | ||
15 | |||
16 | Optional properties: | ||
17 | - lcd-supply: Regulator for LCD supply voltage. | ||
18 | |||
19 | Example: | ||
20 | fb: fb@800002c0 { | ||
21 | compatible = "cirrus,ep7312-fb", "cirrus,clps711x-fb"; | ||
22 | reg = <0x800002c0 0xd44>, <0x60000000 0xc000>; | ||
23 | clocks = <&clks 2>; | ||
24 | lcd-supply = <®5v0>; | ||
25 | display = <&display>; | ||
26 | }; | ||
27 | |||
28 | display: display { | ||
29 | model = "320x240x4"; | ||
30 | native-mode = <&timing0>; | ||
31 | bits-per-pixel = <4>; | ||
32 | ac-prescale = <17>; | ||
33 | |||
34 | display-timings { | ||
35 | timing0: 320x240 { | ||
36 | hactive = <320>; | ||
37 | hback-porch = <0>; | ||
38 | hfront-porch = <0>; | ||
39 | hsync-len = <0>; | ||
40 | vactive = <240>; | ||
41 | vback-porch = <0>; | ||
42 | vfront-porch = <0>; | ||
43 | vsync-len = <0>; | ||
44 | clock-frequency = <6500000>; | ||
45 | }; | ||
46 | }; | ||
47 | }; | ||
diff --git a/Documentation/devicetree/bindings/video/exynos_dsim.txt b/Documentation/devicetree/bindings/video/exynos_dsim.txt index 33b5730d07ba..31036c667d54 100644 --- a/Documentation/devicetree/bindings/video/exynos_dsim.txt +++ b/Documentation/devicetree/bindings/video/exynos_dsim.txt | |||
@@ -1,7 +1,9 @@ | |||
1 | Exynos MIPI DSI Master | 1 | Exynos MIPI DSI Master |
2 | 2 | ||
3 | Required properties: | 3 | Required properties: |
4 | - compatible: "samsung,exynos4210-mipi-dsi" | 4 | - compatible: value should be one of the following |
5 | "samsung,exynos4210-mipi-dsi" /* for Exynos4 SoCs */ | ||
6 | "samsung,exynos5410-mipi-dsi" /* for Exynos5410/5420/5440 SoCs */ | ||
5 | - reg: physical base address and length of the registers set for the device | 7 | - reg: physical base address and length of the registers set for the device |
6 | - interrupts: should contain DSI interrupt | 8 | - interrupts: should contain DSI interrupt |
7 | - clocks: list of clock specifiers, must contain an entry for each required | 9 | - clocks: list of clock specifiers, must contain an entry for each required |
diff --git a/Documentation/devicetree/bindings/video/exynos_mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt index 7bfde9c9d658..08b394b1edbf 100644 --- a/Documentation/devicetree/bindings/video/exynos_mixer.txt +++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt | |||
@@ -4,8 +4,9 @@ Required properties: | |||
4 | - compatible: value should be one of the following: | 4 | - compatible: value should be one of the following: |
5 | 1) "samsung,exynos5-mixer" <DEPRECATED> | 5 | 1) "samsung,exynos5-mixer" <DEPRECATED> |
6 | 2) "samsung,exynos4210-mixer" | 6 | 2) "samsung,exynos4210-mixer" |
7 | 3) "samsung,exynos5250-mixer" | 7 | 3) "samsung,exynos4212-mixer" |
8 | 4) "samsung,exynos5420-mixer" | 8 | 4) "samsung,exynos5250-mixer" |
9 | 5) "samsung,exynos5420-mixer" | ||
9 | 10 | ||
10 | - reg: physical base address of the mixer and length of memory mapped | 11 | - reg: physical base address of the mixer and length of memory mapped |
11 | region. | 12 | region. |
diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt b/Documentation/devicetree/bindings/video/samsung-fimd.txt index 2dad41b689af..ecc899b9817b 100644 --- a/Documentation/devicetree/bindings/video/samsung-fimd.txt +++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt | |||
@@ -8,8 +8,6 @@ Required properties: | |||
8 | - compatible: value should be one of the following | 8 | - compatible: value should be one of the following |
9 | "samsung,s3c2443-fimd"; /* for S3C24XX SoCs */ | 9 | "samsung,s3c2443-fimd"; /* for S3C24XX SoCs */ |
10 | "samsung,s3c6400-fimd"; /* for S3C64XX SoCs */ | 10 | "samsung,s3c6400-fimd"; /* for S3C64XX SoCs */ |
11 | "samsung,s5p6440-fimd"; /* for S5P64X0 SoCs */ | ||
12 | "samsung,s5pc100-fimd"; /* for S5PC100 SoC */ | ||
13 | "samsung,s5pv210-fimd"; /* for S5PV210 SoC */ | 11 | "samsung,s5pv210-fimd"; /* for S5PV210 SoC */ |
14 | "samsung,exynos4210-fimd"; /* for Exynos4 SoCs */ | 12 | "samsung,exynos4210-fimd"; /* for Exynos4 SoCs */ |
15 | "samsung,exynos5250-fimd"; /* for Exynos5 SoCs */ | 13 | "samsung,exynos5250-fimd"; /* for Exynos5 SoCs */ |
@@ -44,6 +42,34 @@ Optional Properties: | |||
44 | - display-timings: timing settings for FIMD, as described in document [1]. | 42 | - display-timings: timing settings for FIMD, as described in document [1]. |
45 | Can be used in case timings cannot be provided otherwise | 43 | Can be used in case timings cannot be provided otherwise |
46 | or to override timings provided by the panel. | 44 | or to override timings provided by the panel. |
45 | - samsung,sysreg: handle to syscon used to control the system registers | ||
46 | - i80-if-timings: timing configuration for lcd i80 interface support. | ||
47 | - cs-setup: clock cycles for the active period of address signal is enabled | ||
48 | until chip select is enabled. | ||
49 | If not specified, the default value(0) will be used. | ||
50 | - wr-setup: clock cycles for the active period of CS signal is enabled until | ||
51 | write signal is enabled. | ||
52 | If not specified, the default value(0) will be used. | ||
53 | - wr-active: clock cycles for the active period of CS is enabled. | ||
54 | If not specified, the default value(1) will be used. | ||
55 | - wr-hold: clock cycles for the active period of CS is disabled until write | ||
56 | signal is disabled. | ||
57 | If not specified, the default value(0) will be used. | ||
58 | |||
59 | The parameters are defined as: | ||
60 | |||
61 | VCLK(internal) __|??????|_____|??????|_____|??????|_____|??????|_____|?? | ||
62 | : : : : : | ||
63 | Address Output --:<XXXXXXXXXXX:XXXXXXXXXXXX:XXXXXXXXXXXX:XXXXXXXXXXXX:XX | ||
64 | | cs-setup+1 | : : : | ||
65 | |<---------->| : : : | ||
66 | Chip Select ???????????????|____________:____________:____________|?? | ||
67 | | wr-setup+1 | | wr-hold+1 | | ||
68 | |<---------->| |<---------->| | ||
69 | Write Enable ????????????????????????????|____________|??????????????? | ||
70 | | wr-active+1| | ||
71 | |<---------->| | ||
72 | Video Data ----------------------------<XXXXXXXXXXXXXXXXXXXXXXXXX>-- | ||
47 | 73 | ||
48 | The device node can contain 'port' child nodes according to the bindings defined | 74 | The device node can contain 'port' child nodes according to the bindings defined |
49 | in [2]. The following are properties specific to those nodes: | 75 | in [2]. The following are properties specific to those nodes: |
diff --git a/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt b/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt index 2144af1a5264..e52ba2da868c 100644 --- a/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.txt | |||
@@ -5,10 +5,15 @@ Required properties: | |||
5 | - reg : Should contain WDT registers location and length | 5 | - reg : Should contain WDT registers location and length |
6 | - interrupts : Should contain WDT interrupt | 6 | - interrupts : Should contain WDT interrupt |
7 | 7 | ||
8 | Optional property: | ||
9 | - big-endian: If present the watchdog device's registers are implemented | ||
10 | in big endian mode, otherwise in little mode. | ||
11 | |||
8 | Examples: | 12 | Examples: |
9 | 13 | ||
10 | wdt@73f98000 { | 14 | wdt@73f98000 { |
11 | compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; | 15 | compatible = "fsl,imx51-wdt", "fsl,imx21-wdt"; |
12 | reg = <0x73f98000 0x4000>; | 16 | reg = <0x73f98000 0x4000>; |
13 | interrupts = <58>; | 17 | interrupts = <58>; |
18 | big-endian; | ||
14 | }; | 19 | }; |
diff --git a/Documentation/dmaengine.txt b/Documentation/dmaengine.txt index 879b6e31e2da..573e28ce9751 100644 --- a/Documentation/dmaengine.txt +++ b/Documentation/dmaengine.txt | |||
@@ -84,31 +84,32 @@ The slave DMA usage consists of following steps: | |||
84 | the given transaction. | 84 | the given transaction. |
85 | 85 | ||
86 | Interface: | 86 | Interface: |
87 | struct dma_async_tx_descriptor *(*chan->device->device_prep_slave_sg)( | 87 | struct dma_async_tx_descriptor *dmaengine_prep_slave_sg( |
88 | struct dma_chan *chan, struct scatterlist *sgl, | 88 | struct dma_chan *chan, struct scatterlist *sgl, |
89 | unsigned int sg_len, enum dma_data_direction direction, | 89 | unsigned int sg_len, enum dma_data_direction direction, |
90 | unsigned long flags); | 90 | unsigned long flags); |
91 | 91 | ||
92 | struct dma_async_tx_descriptor *(*chan->device->device_prep_dma_cyclic)( | 92 | struct dma_async_tx_descriptor *dmaengine_prep_dma_cyclic( |
93 | struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, | 93 | struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, |
94 | size_t period_len, enum dma_data_direction direction); | 94 | size_t period_len, enum dma_data_direction direction); |
95 | 95 | ||
96 | struct dma_async_tx_descriptor *(*device_prep_interleaved_dma)( | 96 | struct dma_async_tx_descriptor *dmaengine_prep_interleaved_dma( |
97 | struct dma_chan *chan, struct dma_interleaved_template *xt, | 97 | struct dma_chan *chan, struct dma_interleaved_template *xt, |
98 | unsigned long flags); | 98 | unsigned long flags); |
99 | 99 | ||
100 | The peripheral driver is expected to have mapped the scatterlist for | 100 | The peripheral driver is expected to have mapped the scatterlist for |
101 | the DMA operation prior to calling device_prep_slave_sg, and must | 101 | the DMA operation prior to calling device_prep_slave_sg, and must |
102 | keep the scatterlist mapped until the DMA operation has completed. | 102 | keep the scatterlist mapped until the DMA operation has completed. |
103 | The scatterlist must be mapped using the DMA struct device. So, | 103 | The scatterlist must be mapped using the DMA struct device. |
104 | normal setup should look like this: | 104 | If a mapping needs to be synchronized later, dma_sync_*_for_*() must be |
105 | called using the DMA struct device, too. | ||
106 | So, normal setup should look like this: | ||
105 | 107 | ||
106 | nr_sg = dma_map_sg(chan->device->dev, sgl, sg_len); | 108 | nr_sg = dma_map_sg(chan->device->dev, sgl, sg_len); |
107 | if (nr_sg == 0) | 109 | if (nr_sg == 0) |
108 | /* error */ | 110 | /* error */ |
109 | 111 | ||
110 | desc = chan->device->device_prep_slave_sg(chan, sgl, nr_sg, | 112 | desc = dmaengine_prep_slave_sg(chan, sgl, nr_sg, direction, flags); |
111 | direction, flags); | ||
112 | 113 | ||
113 | Once a descriptor has been obtained, the callback information can be | 114 | Once a descriptor has been obtained, the callback information can be |
114 | added and the descriptor must then be submitted. Some DMA engine | 115 | added and the descriptor must then be submitted. Some DMA engine |
@@ -188,7 +189,7 @@ Further APIs: | |||
188 | description of this API. | 189 | description of this API. |
189 | 190 | ||
190 | This can be used in conjunction with dma_async_is_complete() and | 191 | This can be used in conjunction with dma_async_is_complete() and |
191 | the cookie returned from 'descriptor->submit()' to check for | 192 | the cookie returned from dmaengine_submit() to check for |
192 | completion of a specific DMA transaction. | 193 | completion of a specific DMA transaction. |
193 | 194 | ||
194 | Note: | 195 | Note: |
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt index 1525e30483fd..d14710b04439 100644 --- a/Documentation/driver-model/devres.txt +++ b/Documentation/driver-model/devres.txt | |||
@@ -233,66 +233,78 @@ certainly invest a bit more effort into libata core layer). | |||
233 | 6. List of managed interfaces | 233 | 6. List of managed interfaces |
234 | ----------------------------- | 234 | ----------------------------- |
235 | 235 | ||
236 | MEM | 236 | CLOCK |
237 | devm_kzalloc() | 237 | devm_clk_get() |
238 | devm_kfree() | 238 | devm_clk_put() |
239 | devm_kmemdup() | 239 | |
240 | devm_get_free_pages() | 240 | DMA |
241 | devm_free_pages() | 241 | dmam_alloc_coherent() |
242 | dmam_alloc_noncoherent() | ||
243 | dmam_declare_coherent_memory() | ||
244 | dmam_free_coherent() | ||
245 | dmam_free_noncoherent() | ||
246 | dmam_pool_create() | ||
247 | dmam_pool_destroy() | ||
248 | |||
249 | GPIO | ||
250 | devm_gpiod_get() | ||
251 | devm_gpiod_get_index() | ||
252 | devm_gpiod_get_index_optional() | ||
253 | devm_gpiod_get_optional() | ||
254 | devm_gpiod_put() | ||
242 | 255 | ||
243 | IIO | 256 | IIO |
244 | devm_iio_device_alloc() | 257 | devm_iio_device_alloc() |
245 | devm_iio_device_free() | 258 | devm_iio_device_free() |
246 | devm_iio_trigger_alloc() | ||
247 | devm_iio_trigger_free() | ||
248 | devm_iio_device_register() | 259 | devm_iio_device_register() |
249 | devm_iio_device_unregister() | 260 | devm_iio_device_unregister() |
261 | devm_iio_trigger_alloc() | ||
262 | devm_iio_trigger_free() | ||
250 | 263 | ||
251 | IO region | 264 | IO region |
252 | devm_request_region() | ||
253 | devm_request_mem_region() | ||
254 | devm_release_region() | ||
255 | devm_release_mem_region() | 265 | devm_release_mem_region() |
256 | 266 | devm_release_region() | |
257 | IRQ | 267 | devm_request_mem_region() |
258 | devm_request_irq() | 268 | devm_request_region() |
259 | devm_free_irq() | ||
260 | |||
261 | DMA | ||
262 | dmam_alloc_coherent() | ||
263 | dmam_free_coherent() | ||
264 | dmam_alloc_noncoherent() | ||
265 | dmam_free_noncoherent() | ||
266 | dmam_declare_coherent_memory() | ||
267 | dmam_pool_create() | ||
268 | dmam_pool_destroy() | ||
269 | |||
270 | PCI | ||
271 | pcim_enable_device() : after success, all PCI ops become managed | ||
272 | pcim_pin_device() : keep PCI device enabled after release | ||
273 | 269 | ||
274 | IOMAP | 270 | IOMAP |
275 | devm_ioport_map() | 271 | devm_ioport_map() |
276 | devm_ioport_unmap() | 272 | devm_ioport_unmap() |
277 | devm_ioremap() | 273 | devm_ioremap() |
278 | devm_ioremap_nocache() | 274 | devm_ioremap_nocache() |
279 | devm_iounmap() | ||
280 | devm_ioremap_resource() : checks resource, requests memory region, ioremaps | 275 | devm_ioremap_resource() : checks resource, requests memory region, ioremaps |
281 | devm_request_and_ioremap() : obsoleted by devm_ioremap_resource() | 276 | devm_iounmap() |
282 | pcim_iomap() | 277 | pcim_iomap() |
283 | pcim_iounmap() | ||
284 | pcim_iomap_table() : array of mapped addresses indexed by BAR | ||
285 | pcim_iomap_regions() : do request_region() and iomap() on multiple BARs | 278 | pcim_iomap_regions() : do request_region() and iomap() on multiple BARs |
279 | pcim_iomap_table() : array of mapped addresses indexed by BAR | ||
280 | pcim_iounmap() | ||
286 | 281 | ||
287 | REGULATOR | 282 | IRQ |
288 | devm_regulator_get() | 283 | devm_free_irq() |
289 | devm_regulator_put() | 284 | devm_request_irq() |
290 | devm_regulator_bulk_get() | ||
291 | devm_regulator_register() | ||
292 | 285 | ||
293 | CLOCK | 286 | MDIO |
294 | devm_clk_get() | 287 | devm_mdiobus_alloc() |
295 | devm_clk_put() | 288 | devm_mdiobus_alloc_size() |
289 | devm_mdiobus_free() | ||
290 | |||
291 | MEM | ||
292 | devm_free_pages() | ||
293 | devm_get_free_pages() | ||
294 | devm_kcalloc() | ||
295 | devm_kfree() | ||
296 | devm_kmalloc() | ||
297 | devm_kmalloc_array() | ||
298 | devm_kmemdup() | ||
299 | devm_kzalloc() | ||
300 | |||
301 | PCI | ||
302 | pcim_enable_device() : after success, all PCI ops become managed | ||
303 | pcim_pin_device() : keep PCI device enabled after release | ||
304 | |||
305 | PHY | ||
306 | devm_usb_get_phy() | ||
307 | devm_usb_put_phy() | ||
296 | 308 | ||
297 | PINCTRL | 309 | PINCTRL |
298 | devm_pinctrl_get() | 310 | devm_pinctrl_get() |
@@ -302,24 +314,14 @@ PWM | |||
302 | devm_pwm_get() | 314 | devm_pwm_get() |
303 | devm_pwm_put() | 315 | devm_pwm_put() |
304 | 316 | ||
305 | PHY | 317 | REGULATOR |
306 | devm_usb_get_phy() | 318 | devm_regulator_bulk_get() |
307 | devm_usb_put_phy() | 319 | devm_regulator_get() |
320 | devm_regulator_put() | ||
321 | devm_regulator_register() | ||
308 | 322 | ||
309 | SLAVE DMA ENGINE | 323 | SLAVE DMA ENGINE |
310 | devm_acpi_dma_controller_register() | 324 | devm_acpi_dma_controller_register() |
311 | 325 | ||
312 | SPI | 326 | SPI |
313 | devm_spi_register_master() | 327 | devm_spi_register_master() |
314 | |||
315 | GPIO | ||
316 | devm_gpiod_get() | ||
317 | devm_gpiod_get_index() | ||
318 | devm_gpiod_get_optional() | ||
319 | devm_gpiod_get_index_optional() | ||
320 | devm_gpiod_put() | ||
321 | |||
322 | MDIO | ||
323 | devm_mdiobus_alloc() | ||
324 | devm_mdiobus_alloc_size() | ||
325 | devm_mdiobus_free() | ||
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index d91b8be80b66..26c623dd3aa3 100755 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware | |||
@@ -29,7 +29,7 @@ use IO::Handle; | |||
29 | "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", | 29 | "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", |
30 | "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", | 30 | "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", |
31 | "drxk_hauppauge_hvr930c", "tda10071", "it9135", "drxk_pctv", | 31 | "drxk_hauppauge_hvr930c", "tda10071", "it9135", "drxk_pctv", |
32 | "drxk_terratec_htc_stick", "sms1xxx_hcw"); | 32 | "drxk_terratec_htc_stick", "sms1xxx_hcw", "si2165"); |
33 | 33 | ||
34 | # Check args | 34 | # Check args |
35 | syntax() if (scalar(@ARGV) != 1); | 35 | syntax() if (scalar(@ARGV) != 1); |
@@ -783,6 +783,37 @@ sub sms1xxx_hcw { | |||
783 | $allfiles; | 783 | $allfiles; |
784 | } | 784 | } |
785 | 785 | ||
786 | sub si2165 { | ||
787 | my $sourcefile = "model_111xxx_122xxx_driver_6_0_119_31191_WHQL.zip"; | ||
788 | my $url = "http://www.hauppauge.de/files/drivers/"; | ||
789 | my $hash = "76633e7c76b0edee47c3ba18ded99336"; | ||
790 | my $fwfile = "dvb-demod-si2165.fw"; | ||
791 | my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); | ||
792 | |||
793 | checkstandard(); | ||
794 | |||
795 | wgetfile($sourcefile, $url . $sourcefile); | ||
796 | verify($sourcefile, $hash); | ||
797 | unzip($sourcefile, $tmpdir); | ||
798 | extract("$tmpdir/Driver10/Hcw10bda.sys", 0x80788, 0x81E08-0x80788, "$tmpdir/fw1"); | ||
799 | |||
800 | delzero("$tmpdir/fw1","$tmpdir/fw1-1"); | ||
801 | #verify("$tmpdir/fw1","5e0909858fdf0b5b09ad48b9fe622e70"); | ||
802 | |||
803 | my $CRC="\x0A\xCC"; | ||
804 | my $BLOCKS_MAIN="\x27"; | ||
805 | open FW,">$fwfile"; | ||
806 | print FW "\x01\x00"; # just a version id for the driver itself | ||
807 | print FW "\x9A"; # fw version | ||
808 | print FW "\x00"; # padding | ||
809 | print FW "$BLOCKS_MAIN"; # number of blocks of main part | ||
810 | print FW "\x00"; # padding | ||
811 | print FW "$CRC"; # 16bit crc value of main part | ||
812 | appendfile(FW,"$tmpdir/fw1"); | ||
813 | |||
814 | "$fwfile"; | ||
815 | } | ||
816 | |||
786 | # --------------------------------------------------------------- | 817 | # --------------------------------------------------------------- |
787 | # Utilities | 818 | # Utilities |
788 | 819 | ||
diff --git a/Documentation/filesystems/caching/operations.txt b/Documentation/filesystems/caching/operations.txt index bee2a5f93d60..a1c052cbba35 100644 --- a/Documentation/filesystems/caching/operations.txt +++ b/Documentation/filesystems/caching/operations.txt | |||
@@ -90,7 +90,7 @@ operations: | |||
90 | to be cleared before proceeding: | 90 | to be cleared before proceeding: |
91 | 91 | ||
92 | wait_on_bit(&op->flags, FSCACHE_OP_WAITING, | 92 | wait_on_bit(&op->flags, FSCACHE_OP_WAITING, |
93 | fscache_wait_bit, TASK_UNINTERRUPTIBLE); | 93 | TASK_UNINTERRUPTIBLE); |
94 | 94 | ||
95 | 95 | ||
96 | (2) The operation may be fast asynchronous (FSCACHE_OP_FAST), in which case it | 96 | (2) The operation may be fast asynchronous (FSCACHE_OP_FAST), in which case it |
diff --git a/Documentation/filesystems/cifs/AUTHORS b/Documentation/filesystems/cifs/AUTHORS index ca4a67a0bb1e..c98800df677f 100644 --- a/Documentation/filesystems/cifs/AUTHORS +++ b/Documentation/filesystems/cifs/AUTHORS | |||
@@ -40,6 +40,7 @@ Gunter Kukkukk (testing and suggestions for support of old servers) | |||
40 | Igor Mammedov (DFS support) | 40 | Igor Mammedov (DFS support) |
41 | Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code) | 41 | Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code) |
42 | Scott Lovenberg | 42 | Scott Lovenberg |
43 | Pavel Shilovsky (for great work adding SMB2 support, and various SMB3 features) | ||
43 | 44 | ||
44 | Test case and Bug Report contributors | 45 | Test case and Bug Report contributors |
45 | ------------------------------------- | 46 | ------------------------------------- |
diff --git a/Documentation/filesystems/cifs/TODO b/Documentation/filesystems/cifs/TODO index 355abcdcda98..066ffddc3964 100644 --- a/Documentation/filesystems/cifs/TODO +++ b/Documentation/filesystems/cifs/TODO | |||
@@ -1,4 +1,4 @@ | |||
1 | Version 1.53 May 20, 2008 | 1 | Version 2.03 August 1, 2014 |
2 | 2 | ||
3 | A Partial List of Missing Features | 3 | A Partial List of Missing Features |
4 | ================================== | 4 | ================================== |
@@ -7,63 +7,49 @@ Contributions are welcome. There are plenty of opportunities | |||
7 | for visible, important contributions to this module. Here | 7 | for visible, important contributions to this module. Here |
8 | is a partial list of the known problems and missing features: | 8 | is a partial list of the known problems and missing features: |
9 | 9 | ||
10 | a) Support for SecurityDescriptors(Windows/CIFS ACLs) for chmod/chgrp/chown | 10 | a) SMB3 (and SMB3.02) missing optional features: |
11 | so that these operations can be supported to Windows servers | 11 | - RDMA |
12 | - multichannel (started) | ||
13 | - directory leases (improved metadata caching) | ||
14 | - T10 copy offload (copy chunk is only mechanism supported) | ||
15 | - encrypted shares | ||
12 | 16 | ||
13 | b) Mapping POSIX ACLs (and eventually NFSv4 ACLs) to CIFS | 17 | b) improved sparse file support |
14 | SecurityDescriptors | ||
15 | 18 | ||
16 | c) Better pam/winbind integration (e.g. to handle uid mapping | 19 | c) Directory entry caching relies on a 1 second timer, rather than |
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) | 20 | using FindNotify or equivalent. - (started) |
28 | 21 | ||
29 | g) quota support (needs minor kernel change since quota calls | 22 | d) quota support (needs minor kernel change since quota calls |
30 | to make it to network filesystems or deviceless filesystems) | 23 | to make it to network filesystems or deviceless filesystems) |
31 | 24 | ||
32 | h) investigate sync behavior (including syncpage) and check | 25 | e) improve support for very old servers (OS/2 and Win9x for example) |
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). | 26 | Including support for changing the time remotely (utimes command). |
37 | 27 | ||
38 | j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the | 28 | f) 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. | 29 | extra copy in/out of the socket buffers in some cases. |
40 | 30 | ||
41 | k) Better optimize open (and pathbased setfilesize) to reduce the | 31 | g) Better optimize open (and pathbased setfilesize) to reduce the |
42 | oplock breaks coming from windows srv. Piggyback identical file | 32 | oplock breaks coming from windows srv. Piggyback identical file |
43 | opens on top of each other by incrementing reference count rather | 33 | opens on top of each other by incrementing reference count rather |
44 | than resending (helps reduce server resource utilization and avoid | 34 | than resending (helps reduce server resource utilization and avoid |
45 | spurious oplock breaks). | 35 | spurious oplock breaks). |
46 | 36 | ||
47 | l) Improve performance of readpages by sending more than one read | 37 | h) Add support for storing symlink info to Windows servers |
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. | 38 | in the Extended Attribute format their SFU clients would recognize. |
53 | 39 | ||
54 | n) Finish fcntl D_NOTIFY support so kde and gnome file list windows | 40 | i) Finish inotify support so kde and gnome file list windows |
55 | will autorefresh (partially complete by Asser). Needs minor kernel | 41 | will autorefresh (partially complete by Asser). Needs minor kernel |
56 | vfs change to support removing D_NOTIFY on a file. | 42 | vfs change to support removing D_NOTIFY on a file. |
57 | 43 | ||
58 | o) Add GUI tool to configure /proc/fs/cifs settings and for display of | 44 | j) Add GUI tool to configure /proc/fs/cifs settings and for display of |
59 | the CIFS statistics (started) | 45 | the CIFS statistics (started) |
60 | 46 | ||
61 | p) implement support for security and trusted categories of xattrs | 47 | k) implement support for security and trusted categories of xattrs |
62 | (requires minor protocol extension) to enable better support for SELINUX | 48 | (requires minor protocol extension) to enable better support for SELINUX |
63 | 49 | ||
64 | q) Implement O_DIRECT flag on open (already supported on mount) | 50 | l) Implement O_DIRECT flag on open (already supported on mount) |
65 | 51 | ||
66 | r) Create UID mapping facility so server UIDs can be mapped on a per | 52 | m) 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 | 53 | 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 | 54 | exists. This is helpful when Unix extensions are negotiated to |
69 | allow better permission checking when UIDs differ on the server | 55 | allow better permission checking when UIDs differ on the server |
@@ -71,28 +57,29 @@ and client. Add new protocol request to the CIFS protocol | |||
71 | standard for asking the server for the corresponding name of a | 57 | standard for asking the server for the corresponding name of a |
72 | particular uid. | 58 | particular uid. |
73 | 59 | ||
74 | s) Add support for CIFS Unix and also the newer POSIX extensions to the | 60 | n) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for this too) |
75 | server side for Samba 4. | 61 | |
62 | o) mount check for unmatched uids | ||
76 | 63 | ||
77 | t) In support for OS/2 (LANMAN 1.2 and LANMAN2.1 based SMB servers) | 64 | p) Add support for new vfs entry point for fallocate |
78 | need to add ability to set time to server (utimes command) | ||
79 | 65 | ||
80 | u) DOS attrs - returned as pseudo-xattr in Samba format (check VFAT and NTFS for this too) | 66 | q) Add tools to take advantage of cifs/smb3 specific ioctls and features |
67 | such as "CopyChunk" (fast server side file copy) | ||
81 | 68 | ||
82 | v) mount check for unmatched uids | 69 | r) encrypted file support |
83 | 70 | ||
84 | w) Add support for new vfs entry point for fallocate | 71 | s) improved stats gathering, tools (perhaps integration with nfsometer?) |
85 | 72 | ||
86 | x) Fix Samba 3 server to handle Linux kernel aio so dbench with lots of | 73 | t) allow setting more NTFS/SMB3 file attributes remotely (currently limited to compressed |
87 | processes can proceed better in parallel (on the server) | 74 | file attribute via chflags) |
88 | 75 | ||
89 | y) Fix Samba 3 to handle reads/writes over 127K (and remove the cifs mount | 76 | u) mount helper GUI (to simplify the various configuration options on mount) |
90 | restriction of wsize max being 127K) | ||
91 | 77 | ||
92 | KNOWN BUGS (updated April 24, 2007) | 78 | |
79 | KNOWN BUGS | ||
93 | ==================================== | 80 | ==================================== |
94 | See http://bugzilla.samba.org - search on product "CifsVFS" for | 81 | See http://bugzilla.samba.org - search on product "CifsVFS" for |
95 | current bug list. | 82 | current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS) |
96 | 83 | ||
97 | 1) existing symbolic links (Windows reparse points) are recognized but | 84 | 1) existing symbolic links (Windows reparse points) are recognized but |
98 | can not be created remotely. They are implemented for Samba and those that | 85 | can not be created remotely. They are implemented for Samba and those that |
@@ -100,30 +87,18 @@ support the CIFS Unix extensions, although earlier versions of Samba | |||
100 | overly restrict the pathnames. | 87 | overly restrict the pathnames. |
101 | 2) follow_link and readdir code does not follow dfs junctions | 88 | 2) follow_link and readdir code does not follow dfs junctions |
102 | but recognizes them | 89 | 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 | 90 | ||
114 | Misc testing to do | 91 | Misc testing to do |
115 | ================== | 92 | ================== |
116 | 1) check out max path names and max path name components against various server | 93 | 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 | 94 | types. Try nested symlinks (8 deep). Return max path name in stat -f information |
118 | 95 | ||
119 | 2) Modify file portion of ltp so it can run against a mounted network | 96 | 2) Improve xfstest's cifs enablement and adapt xfstests where needed to test |
120 | share and run it against cifs vfs in automated fashion. | 97 | cifs better |
121 | 98 | ||
122 | 3) Additional performance testing and optimization using iozone and similar - | 99 | 3) Additional performance testing and optimization using iozone and similar - |
123 | there are some easy changes that can be done to parallelize sequential writes, | 100 | 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 | 101 | and when signing is disabled to request larger read sizes (larger than |
125 | negotiated size) and send larger write sizes to modern servers. | 102 | negotiated size) and send larger write sizes to modern servers. |
126 | 103 | ||
127 | 4) More exhaustively test against less common servers. More testing | 104 | 4) More exhaustively test against less common servers |
128 | against Windows 9x, Windows ME servers. | ||
129 | |||
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt index 51afba17bbae..a2046a7d0a9d 100644 --- a/Documentation/filesystems/f2fs.txt +++ b/Documentation/filesystems/f2fs.txt | |||
@@ -126,6 +126,11 @@ flush_merge Merge concurrent cache_flush commands as much as possible | |||
126 | to eliminate redundant command issues. If the underlying | 126 | to eliminate redundant command issues. If the underlying |
127 | device handles the cache_flush command relatively slowly, | 127 | device handles the cache_flush command relatively slowly, |
128 | recommend to enable this option. | 128 | recommend to enable this option. |
129 | nobarrier This option can be used if underlying storage guarantees | ||
130 | its cached data should be written to the novolatile area. | ||
131 | If this option is set, no cache_flush commands are issued | ||
132 | but f2fs still guarantees the write ordering of all the | ||
133 | data writes. | ||
129 | 134 | ||
130 | ================================================================================ | 135 | ================================================================================ |
131 | DEBUGFS ENTRIES | 136 | DEBUGFS ENTRIES |
diff --git a/Documentation/firmware_class/README b/Documentation/firmware_class/README index 43fada989e65..71f86859d7d8 100644 --- a/Documentation/firmware_class/README +++ b/Documentation/firmware_class/README | |||
@@ -64,7 +64,7 @@ | |||
64 | 64 | ||
65 | if(request_firmware(&fw_entry, $FIRMWARE, device) == 0) | 65 | if(request_firmware(&fw_entry, $FIRMWARE, device) == 0) |
66 | copy_fw_to_device(fw_entry->data, fw_entry->size); | 66 | copy_fw_to_device(fw_entry->data, fw_entry->size); |
67 | release(fw_entry); | 67 | release_firmware(fw_entry); |
68 | 68 | ||
69 | Sample/simple hotplug script: | 69 | Sample/simple hotplug script: |
70 | ============================ | 70 | ============================ |
@@ -74,7 +74,7 @@ | |||
74 | HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/ | 74 | HOTPLUG_FW_DIR=/usr/lib/hotplug/firmware/ |
75 | 75 | ||
76 | echo 1 > /sys/$DEVPATH/loading | 76 | echo 1 > /sys/$DEVPATH/loading |
77 | cat $HOTPLUG_FW_DIR/$FIRMWARE > /sysfs/$DEVPATH/data | 77 | cat $HOTPLUG_FW_DIR/$FIRMWARE > /sys/$DEVPATH/data |
78 | echo 0 > /sys/$DEVPATH/loading | 78 | echo 0 > /sys/$DEVPATH/loading |
79 | 79 | ||
80 | Random notes: | 80 | Random notes: |
@@ -123,6 +123,6 @@ | |||
123 | -------------------- | 123 | -------------------- |
124 | After firmware cache mechanism is introduced during system sleep, | 124 | After firmware cache mechanism is introduced during system sleep, |
125 | request_firmware can be called safely inside device's suspend and | 125 | request_firmware can be called safely inside device's suspend and |
126 | resume callback, and callers need't cache the firmware by | 126 | resume callback, and callers needn't cache the firmware by |
127 | themselves any more for dealing with firmware loss during system | 127 | themselves any more for dealing with firmware loss during system |
128 | resume. | 128 | resume. |
diff --git a/Documentation/gpio/board.txt b/Documentation/gpio/board.txt index ba169faad5c6..4452786225b8 100644 --- a/Documentation/gpio/board.txt +++ b/Documentation/gpio/board.txt | |||
@@ -60,7 +60,7 @@ Platform Data | |||
60 | Finally, GPIOs can be bound to devices and functions using platform data. Board | 60 | Finally, GPIOs can be bound to devices and functions using platform data. Board |
61 | files that desire to do so need to include the following header: | 61 | files that desire to do so need to include the following header: |
62 | 62 | ||
63 | #include <linux/gpio/driver.h> | 63 | #include <linux/gpio/machine.h> |
64 | 64 | ||
65 | GPIOs are mapped by the means of tables of lookups, containing instances of the | 65 | GPIOs are mapped by the means of tables of lookups, containing instances of the |
66 | gpiod_lookup structure. Two macros are defined to help declaring such mappings: | 66 | gpiod_lookup structure. Two macros are defined to help declaring such mappings: |
diff --git a/Documentation/gpio/consumer.txt b/Documentation/gpio/consumer.txt index d8abfc31abbe..76546324e968 100644 --- a/Documentation/gpio/consumer.txt +++ b/Documentation/gpio/consumer.txt | |||
@@ -29,13 +29,24 @@ gpiod_get() functions. Like many other kernel subsystems, gpiod_get() takes the | |||
29 | device that will use the GPIO and the function the requested GPIO is supposed to | 29 | device that will use the GPIO and the function the requested GPIO is supposed to |
30 | fulfill: | 30 | fulfill: |
31 | 31 | ||
32 | struct gpio_desc *gpiod_get(struct device *dev, const char *con_id) | 32 | struct gpio_desc *gpiod_get(struct device *dev, const char *con_id, |
33 | enum gpiod_flags flags) | ||
33 | 34 | ||
34 | If a function is implemented by using several GPIOs together (e.g. a simple LED | 35 | If a function is implemented by using several GPIOs together (e.g. a simple LED |
35 | device that displays digits), an additional index argument can be specified: | 36 | device that displays digits), an additional index argument can be specified: |
36 | 37 | ||
37 | struct gpio_desc *gpiod_get_index(struct device *dev, | 38 | struct gpio_desc *gpiod_get_index(struct device *dev, |
38 | const char *con_id, unsigned int idx) | 39 | const char *con_id, unsigned int idx, |
40 | enum gpiod_flags flags) | ||
41 | |||
42 | The flags parameter is used to optionally specify a direction and initial value | ||
43 | for the GPIO. Values can be: | ||
44 | |||
45 | * GPIOD_ASIS or 0 to not initialize the GPIO at all. The direction must be set | ||
46 | later with one of the dedicated functions. | ||
47 | * GPIOD_IN to initialize the GPIO as input. | ||
48 | * GPIOD_OUT_LOW to initialize the GPIO as output with a value of 0. | ||
49 | * GPIOD_OUT_HIGH to initialize the GPIO as output with a value of 1. | ||
39 | 50 | ||
40 | Both functions return either a valid GPIO descriptor, or an error code checkable | 51 | Both functions return either a valid GPIO descriptor, or an error code checkable |
41 | with IS_ERR() (they will never return a NULL pointer). -ENOENT will be returned | 52 | with IS_ERR() (they will never return a NULL pointer). -ENOENT will be returned |
@@ -46,11 +57,13 @@ errors and an absence of GPIO for optional GPIO parameters. | |||
46 | 57 | ||
47 | Device-managed variants of these functions are also defined: | 58 | Device-managed variants of these functions are also defined: |
48 | 59 | ||
49 | struct gpio_desc *devm_gpiod_get(struct device *dev, const char *con_id) | 60 | struct gpio_desc *devm_gpiod_get(struct device *dev, const char *con_id, |
61 | enum gpiod_flags flags) | ||
50 | 62 | ||
51 | struct gpio_desc *devm_gpiod_get_index(struct device *dev, | 63 | struct gpio_desc *devm_gpiod_get_index(struct device *dev, |
52 | const char *con_id, | 64 | const char *con_id, |
53 | unsigned int idx) | 65 | unsigned int idx, |
66 | enum gpiod_flags flags) | ||
54 | 67 | ||
55 | A GPIO descriptor can be disposed of using the gpiod_put() function: | 68 | A GPIO descriptor can be disposed of using the gpiod_put() function: |
56 | 69 | ||
@@ -67,8 +80,9 @@ Using GPIOs | |||
67 | 80 | ||
68 | Setting Direction | 81 | Setting Direction |
69 | ----------------- | 82 | ----------------- |
70 | The first thing a driver must do with a GPIO is setting its direction. This is | 83 | The first thing a driver must do with a GPIO is setting its direction. If no |
71 | done by invoking one of the gpiod_direction_*() functions: | 84 | direction-setting flags have been given to gpiod_get*(), this is done by |
85 | invoking one of the gpiod_direction_*() functions: | ||
72 | 86 | ||
73 | int gpiod_direction_input(struct gpio_desc *desc) | 87 | int gpiod_direction_input(struct gpio_desc *desc) |
74 | int gpiod_direction_output(struct gpio_desc *desc, int value) | 88 | int gpiod_direction_output(struct gpio_desc *desc, int value) |
diff --git a/Documentation/gpio/driver.txt b/Documentation/gpio/driver.txt index fa9a0a8b3734..18790c237977 100644 --- a/Documentation/gpio/driver.txt +++ b/Documentation/gpio/driver.txt | |||
@@ -157,13 +157,34 @@ Locking IRQ usage | |||
157 | Input GPIOs can be used as IRQ signals. When this happens, a driver is requested | 157 | Input GPIOs can be used as IRQ signals. When this happens, a driver is requested |
158 | to mark the GPIO as being used as an IRQ: | 158 | to mark the GPIO as being used as an IRQ: |
159 | 159 | ||
160 | int gpiod_lock_as_irq(struct gpio_desc *desc) | 160 | int gpio_lock_as_irq(struct gpio_chip *chip, unsigned int offset) |
161 | 161 | ||
162 | This will prevent the use of non-irq related GPIO APIs until the GPIO IRQ lock | 162 | This will prevent the use of non-irq related GPIO APIs until the GPIO IRQ lock |
163 | is released: | 163 | is released: |
164 | 164 | ||
165 | void gpiod_unlock_as_irq(struct gpio_desc *desc) | 165 | void gpio_unlock_as_irq(struct gpio_chip *chip, unsigned int offset) |
166 | 166 | ||
167 | When implementing an irqchip inside a GPIO driver, these two functions should | 167 | When implementing an irqchip inside a GPIO driver, these two functions should |
168 | typically be called in the .startup() and .shutdown() callbacks from the | 168 | typically be called in the .startup() and .shutdown() callbacks from the |
169 | irqchip. | 169 | irqchip. |
170 | |||
171 | |||
172 | Requesting self-owned GPIO pins | ||
173 | ------------------------------- | ||
174 | |||
175 | Sometimes it is useful to allow a GPIO chip driver to request its own GPIO | ||
176 | descriptors through the gpiolib API. Using gpio_request() for this purpose | ||
177 | does not help since it pins the module to the kernel forever (it calls | ||
178 | try_module_get()). A GPIO driver can use the following functions instead | ||
179 | to request and free descriptors without being pinned to the kernel forever. | ||
180 | |||
181 | int gpiochip_request_own_desc(struct gpio_desc *desc, const char *label) | ||
182 | |||
183 | void gpiochip_free_own_desc(struct gpio_desc *desc) | ||
184 | |||
185 | Descriptors requested with gpiochip_request_own_desc() must be released with | ||
186 | gpiochip_free_own_desc(). | ||
187 | |||
188 | These functions must be used with care since they do not affect module use | ||
189 | count. Do not use the functions to request gpio descriptors not owned by the | ||
190 | calling driver. | ||
diff --git a/Documentation/hwmon/ibmpowernv b/Documentation/hwmon/ibmpowernv new file mode 100644 index 000000000000..8826ba29db36 --- /dev/null +++ b/Documentation/hwmon/ibmpowernv | |||
@@ -0,0 +1,41 @@ | |||
1 | Kernel Driver IBMPOWERNV | ||
2 | ======================== | ||
3 | |||
4 | Supported systems: | ||
5 | * Any recent IBM P servers based on POWERNV platform | ||
6 | |||
7 | Author: Neelesh Gupta | ||
8 | |||
9 | Description | ||
10 | ----------- | ||
11 | |||
12 | This driver implements reading the platform sensors data like temperature/fan/ | ||
13 | voltage/power for 'POWERNV' platform. | ||
14 | |||
15 | The driver uses the platform device infrastructure. It probes the device tree | ||
16 | for sensor devices during the __init phase and registers them with the 'hwmon'. | ||
17 | 'hwmon' populates the 'sysfs' tree having attribute files, each for a given | ||
18 | sensor type and its attribute data. | ||
19 | |||
20 | All the nodes in the DT appear under "/ibm,opal/sensors" and each valid node in | ||
21 | the DT maps to an attribute file in 'sysfs'. The node exports unique 'sensor-id' | ||
22 | which the driver uses to make an OPAL call to the firmware. | ||
23 | |||
24 | Usage notes | ||
25 | ----------- | ||
26 | The driver is built statically with the kernel by enabling the config | ||
27 | CONFIG_SENSORS_IBMPOWERNV. It can also be built as module 'ibmpowernv'. | ||
28 | |||
29 | Sysfs attributes | ||
30 | ---------------- | ||
31 | |||
32 | fanX_input Measured RPM value. | ||
33 | fanX_min Threshold RPM for alert generation. | ||
34 | fanX_fault 0: No fail condition | ||
35 | 1: Failing fan | ||
36 | tempX_input Measured ambient temperature. | ||
37 | tempX_max Threshold ambient temperature for alert generation. | ||
38 | inX_input Measured power supply voltage | ||
39 | inX_fault 0: No fail condition. | ||
40 | 1: Failing power supply. | ||
41 | power1_input System power consumption (microWatt) | ||
diff --git a/Documentation/hwmon/lm75 b/Documentation/hwmon/lm75 index 2560a9c6d445..c6a5ff1b4641 100644 --- a/Documentation/hwmon/lm75 +++ b/Documentation/hwmon/lm75 | |||
@@ -42,13 +42,14 @@ Supported chips: | |||
42 | Addresses scanned: none | 42 | Addresses scanned: none |
43 | Datasheet: Publicly available at the ST website | 43 | Datasheet: Publicly available at the ST website |
44 | http://www.st.com/internet/analog/product/121769.jsp | 44 | http://www.st.com/internet/analog/product/121769.jsp |
45 | * Texas Instruments TMP100, TMP101, TMP105, TMP75, TMP175, TMP275 | 45 | * Texas Instruments TMP100, TMP101, TMP105, TMP112, TMP75, TMP175, TMP275 |
46 | Prefixes: 'tmp100', 'tmp101', 'tmp105', 'tmp175', 'tmp75', 'tmp275' | 46 | Prefixes: 'tmp100', 'tmp101', 'tmp105', 'tmp112', 'tmp175', 'tmp75', 'tmp275' |
47 | Addresses scanned: none | 47 | Addresses scanned: none |
48 | Datasheet: Publicly available at the Texas Instruments website | 48 | Datasheet: Publicly available at the Texas Instruments website |
49 | http://www.ti.com/product/tmp100 | 49 | http://www.ti.com/product/tmp100 |
50 | http://www.ti.com/product/tmp101 | 50 | http://www.ti.com/product/tmp101 |
51 | http://www.ti.com/product/tmp105 | 51 | http://www.ti.com/product/tmp105 |
52 | http://www.ti.com/product/tmp112 | ||
52 | http://www.ti.com/product/tmp75 | 53 | http://www.ti.com/product/tmp75 |
53 | http://www.ti.com/product/tmp175 | 54 | http://www.ti.com/product/tmp175 |
54 | http://www.ti.com/product/tmp275 | 55 | http://www.ti.com/product/tmp275 |
diff --git a/Documentation/hwmon/ntc_thermistor b/Documentation/hwmon/ntc_thermistor index 057b77029f26..c5e05e2900a3 100644 --- a/Documentation/hwmon/ntc_thermistor +++ b/Documentation/hwmon/ntc_thermistor | |||
@@ -6,6 +6,11 @@ Supported thermistors from Murata: | |||
6 | Prefixes: 'ncp15wb473', 'ncp18wb473', 'ncp21wb473', 'ncp03wb473', 'ncp15wl333' | 6 | Prefixes: 'ncp15wb473', 'ncp18wb473', 'ncp21wb473', 'ncp03wb473', 'ncp15wl333' |
7 | Datasheet: Publicly available at Murata | 7 | Datasheet: Publicly available at Murata |
8 | 8 | ||
9 | Supported thermistors from EPCOS: | ||
10 | * EPCOS NTC Thermistors B57330V2103 | ||
11 | Prefixes: b57330v2103 | ||
12 | Datasheet: Publicly available at EPCOS | ||
13 | |||
9 | Other NTC thermistors can be supported simply by adding compensation | 14 | Other NTC thermistors can be supported simply by adding compensation |
10 | tables; e.g., NCP15WL333 support is added by the table ncpXXwl333. | 15 | tables; e.g., NCP15WL333 support is added by the table ncpXXwl333. |
11 | 16 | ||
diff --git a/Documentation/hwmon/pmbus b/Documentation/hwmon/pmbus index cf756ed48ff9..a3557da8f5b4 100644 --- a/Documentation/hwmon/pmbus +++ b/Documentation/hwmon/pmbus | |||
@@ -23,12 +23,11 @@ Supported chips: | |||
23 | http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf | 23 | http://www.lineagepower.com/oem/pdf/PDT012A0X.pdf |
24 | http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf | 24 | http://www.lineagepower.com/oem/pdf/UDT020A0X.pdf |
25 | http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf | 25 | http://www.lineagepower.com/oem/pdf/MDT040A0X.pdf |
26 | * Texas Instruments TPS40400, TPS40422 | 26 | * Texas Instruments TPS40400 |
27 | Prefixes: 'tps40400', 'tps40422' | 27 | Prefixes: 'tps40400' |
28 | Addresses scanned: - | 28 | Addresses scanned: - |
29 | Datasheets: | 29 | Datasheets: |
30 | http://www.ti.com/lit/gpn/tps40400 | 30 | http://www.ti.com/lit/gpn/tps40400 |
31 | http://www.ti.com/lit/gpn/tps40422 | ||
32 | * Generic PMBus devices | 31 | * Generic PMBus devices |
33 | Prefix: 'pmbus' | 32 | Prefix: 'pmbus' |
34 | Addresses scanned: - | 33 | Addresses scanned: - |
diff --git a/Documentation/hwmon/powr1220 b/Documentation/hwmon/powr1220 new file mode 100644 index 000000000000..21e44f71ae6e --- /dev/null +++ b/Documentation/hwmon/powr1220 | |||
@@ -0,0 +1,45 @@ | |||
1 | Kernel driver powr1220 | ||
2 | ================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Lattice POWR1220AT8 | ||
6 | Prefix: 'powr1220' | ||
7 | Addresses scanned: none | ||
8 | Datasheet: Publicly available at the Lattice website | ||
9 | http://www.latticesemi.com/ | ||
10 | |||
11 | Author: Scott Kanowitz <scott.kanowitz@gmail.com> | ||
12 | |||
13 | Description | ||
14 | ----------- | ||
15 | |||
16 | This driver supports the Lattice POWR1220AT8 chip. The POWR1220 | ||
17 | includes voltage monitoring for 14 inputs as well as trim settings | ||
18 | for output voltages and GPIOs. This driver implements the voltage | ||
19 | monitoring portion of the chip. | ||
20 | |||
21 | Voltages are sampled by a 12-bit ADC with a step size of 2 mV. | ||
22 | An in-line attenuator allows measurements from 0 to 6 V. The | ||
23 | attenuator is enabled or disabled depending on the setting of the | ||
24 | input's max value. The driver will enable the attenuator for any | ||
25 | value over the low measurement range maximum of 2 V. | ||
26 | |||
27 | The input naming convention is as follows: | ||
28 | |||
29 | driver name pin name | ||
30 | in0 VMON1 | ||
31 | in1 VMON2 | ||
32 | in2 VMON3 | ||
33 | in2 VMON4 | ||
34 | in4 VMON5 | ||
35 | in5 VMON6 | ||
36 | in6 VMON7 | ||
37 | in7 VMON8 | ||
38 | in8 VMON9 | ||
39 | in9 VMON10 | ||
40 | in10 VMON11 | ||
41 | in11 VMON12 | ||
42 | in12 VCCA | ||
43 | in13 VCCINP | ||
44 | |||
45 | The ADC readings are updated on request with a minimum period of 1s. | ||
diff --git a/Documentation/hwmon/pwm-fan b/Documentation/hwmon/pwm-fan new file mode 100644 index 000000000000..18529d2e3bcf --- /dev/null +++ b/Documentation/hwmon/pwm-fan | |||
@@ -0,0 +1,17 @@ | |||
1 | Kernel driver pwm-fan | ||
2 | ===================== | ||
3 | |||
4 | This driver enables the use of a PWM module to drive a fan. It uses the | ||
5 | generic PWM interface thus it is hardware independent. It can be used on | ||
6 | many SoCs, as long as the SoC supplies a PWM line driver that exposes | ||
7 | the generic PWM API. | ||
8 | |||
9 | Author: Kamil Debski <k.debski@samsung.com> | ||
10 | |||
11 | Description | ||
12 | ----------- | ||
13 | |||
14 | The driver implements a simple interface for driving a fan connected to | ||
15 | a PWM output. It uses the generic PWM interface, thus it can be used with | ||
16 | a range of SoCs. The driver exposes the fan to the user space through | ||
17 | the hwmon's sysfs interface. | ||
diff --git a/Documentation/hwmon/tmp103 b/Documentation/hwmon/tmp103 new file mode 100644 index 000000000000..ec00a15645ba --- /dev/null +++ b/Documentation/hwmon/tmp103 | |||
@@ -0,0 +1,28 @@ | |||
1 | Kernel driver tmp103 | ||
2 | ==================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Texas Instruments TMP103 | ||
6 | Prefix: 'tmp103' | ||
7 | Addresses scanned: none | ||
8 | Product info and datasheet: http://www.ti.com/product/tmp103 | ||
9 | |||
10 | Author: | ||
11 | Heiko Schocher <hs@denx.de> | ||
12 | |||
13 | Description | ||
14 | ----------- | ||
15 | |||
16 | The TMP103 is a digital output temperature sensor in a four-ball | ||
17 | wafer chip-scale package (WCSP). The TMP103 is capable of reading | ||
18 | temperatures to a resolution of 1°C. The TMP103 is specified for | ||
19 | operation over a temperature range of –40°C to +125°C. | ||
20 | |||
21 | Resolution: 8 Bits | ||
22 | Accuracy: ±1°C Typ (–10°C to +100°C) | ||
23 | |||
24 | The driver provides the common sysfs-interface for temperatures (see | ||
25 | Documentation/hwmon/sysfs-interface under Temperatures). | ||
26 | |||
27 | Please refer how to instantiate this driver: | ||
28 | Documentation/i2c/instantiating-devices | ||
diff --git a/Documentation/hwmon/tmp421 b/Documentation/hwmon/tmp421 index 0cf07f824741..9e6fe5549ca1 100644 --- a/Documentation/hwmon/tmp421 +++ b/Documentation/hwmon/tmp421 | |||
@@ -8,12 +8,20 @@ Supported chips: | |||
8 | Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html | 8 | Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html |
9 | * Texas Instruments TMP422 | 9 | * Texas Instruments TMP422 |
10 | Prefix: 'tmp422' | 10 | Prefix: 'tmp422' |
11 | Addresses scanned: I2C 0x2a, 0x4c, 0x4d, 0x4e and 0x4f | 11 | Addresses scanned: I2C 0x4c, 0x4d, 0x4e and 0x4f |
12 | Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html | 12 | Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html |
13 | * Texas Instruments TMP423 | 13 | * Texas Instruments TMP423 |
14 | Prefix: 'tmp423' | 14 | Prefix: 'tmp423' |
15 | Addresses scanned: I2C 0x2a, 0x4c, 0x4d, 0x4e and 0x4f | 15 | Addresses scanned: I2C 0x4c and 0x4d |
16 | Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html | 16 | Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp421.html |
17 | * Texas Instruments TMP441 | ||
18 | Prefix: 'tmp441' | ||
19 | Addresses scanned: I2C 0x2a, 0x4c, 0x4d, 0x4e and 0x4f | ||
20 | Datasheet: http://www.ti.com/product/tmp441 | ||
21 | * Texas Instruments TMP442 | ||
22 | Prefix: 'tmp442' | ||
23 | Addresses scanned: I2C 0x4c and 0x4d | ||
24 | Datasheet: http://www.ti.com/product/tmp442 | ||
17 | 25 | ||
18 | Authors: | 26 | Authors: |
19 | Andre Prendel <andre.prendel@gmx.de> | 27 | Andre Prendel <andre.prendel@gmx.de> |
@@ -21,13 +29,13 @@ Authors: | |||
21 | Description | 29 | Description |
22 | ----------- | 30 | ----------- |
23 | 31 | ||
24 | This driver implements support for Texas Instruments TMP421, TMP422 | 32 | This driver implements support for Texas Instruments TMP421, TMP422, |
25 | and TMP423 temperature sensor chips. These chips implement one local | 33 | TMP423, TMP441, and TMP442 temperature sensor chips. These chips |
26 | and up to one (TMP421), up to two (TMP422) or up to three (TMP423) | 34 | implement one local and up to one (TMP421, TMP441), up to two (TMP422, |
27 | remote sensors. Temperature is measured in degrees Celsius. The chips | 35 | TMP442) or up to three (TMP423) remote sensors. Temperature is measured |
28 | are wired over I2C/SMBus and specified over a temperature range of -40 | 36 | in degrees Celsius. The chips are wired over I2C/SMBus and specified |
29 | to +125 degrees Celsius. Resolution for both the local and remote | 37 | over a temperature range of -40 to +125 degrees Celsius. Resolution |
30 | channels is 0.0625 degree C. | 38 | for both the local and remote channels is 0.0625 degree C. |
31 | 39 | ||
32 | The chips support only temperature measurement. The driver exports | 40 | The chips support only temperature measurement. The driver exports |
33 | the temperature values via the following sysfs files: | 41 | the temperature values via the following sysfs files: |
diff --git a/Documentation/hwmon/tps40422 b/Documentation/hwmon/tps40422 new file mode 100644 index 000000000000..24bb0688d515 --- /dev/null +++ b/Documentation/hwmon/tps40422 | |||
@@ -0,0 +1,64 @@ | |||
1 | Kernel driver tps40422 | ||
2 | ====================== | ||
3 | |||
4 | Supported chips: | ||
5 | * TI TPS40422 | ||
6 | Prefix: 'tps40422' | ||
7 | Addresses scanned: - | ||
8 | Datasheet: http://www.ti.com/lit/gpn/tps40422 | ||
9 | |||
10 | Author: Zhu Laiwen <richard.zhu@nsn.com> | ||
11 | |||
12 | |||
13 | Description | ||
14 | ----------- | ||
15 | |||
16 | This driver supports TI TPS40422 Dual-Output or Two-Phase Synchronous Buck | ||
17 | Controller with PMBus | ||
18 | |||
19 | The driver is a client driver to the core PMBus driver. | ||
20 | Please see Documentation/hwmon/pmbus for details on PMBus client drivers. | ||
21 | |||
22 | |||
23 | Usage Notes | ||
24 | ----------- | ||
25 | |||
26 | This driver does not auto-detect devices. You will have to instantiate the | ||
27 | devices explicitly. Please see Documentation/i2c/instantiating-devices for | ||
28 | details. | ||
29 | |||
30 | |||
31 | Platform data support | ||
32 | --------------------- | ||
33 | |||
34 | The driver supports standard PMBus driver platform data. | ||
35 | |||
36 | |||
37 | Sysfs entries | ||
38 | ------------- | ||
39 | |||
40 | The following attributes are supported. | ||
41 | |||
42 | in[1-2]_label "vout[1-2]" | ||
43 | in[1-2]_input Measured voltage. From READ_VOUT register. | ||
44 | in[1-2]_alarm voltage alarm. | ||
45 | |||
46 | curr[1-2]_input Measured current. From READ_IOUT register. | ||
47 | curr[1-2]_label "iout[1-2]" | ||
48 | curr1_max Maximum current. From IOUT_OC_WARN_LIMIT register. | ||
49 | curr1_crit Critical maximum current. From IOUT_OC_FAULT_LIMIT register. | ||
50 | curr1_max_alarm Current high alarm. From IOUT_OC_WARN_LIMIT status. | ||
51 | curr1_crit_alarm Current critical high alarm. From IOUT_OC_FAULT status. | ||
52 | curr2_alarm Current high alarm. From IOUT_OC_WARNING status. | ||
53 | |||
54 | temp1_input Measured temperature. From READ_TEMPERATURE_2 register on page 0. | ||
55 | temp1_max Maximum temperature. From OT_WARN_LIMIT register. | ||
56 | temp1_crit Critical high temperature. From OT_FAULT_LIMIT register. | ||
57 | temp1_max_alarm Chip temperature high alarm. Set by comparing | ||
58 | READ_TEMPERATURE_2 on page 0 with OT_WARN_LIMIT if TEMP_OT_WARNING | ||
59 | status is set. | ||
60 | temp1_crit_alarm Chip temperature critical high alarm. Set by comparing | ||
61 | READ_TEMPERATURE_2 on page 0 with OT_FAULT_LIMIT if TEMP_OT_FAULT | ||
62 | status is set. | ||
63 | temp2_input Measured temperature. From READ_TEMPERATURE_2 register on page 1. | ||
64 | temp2_alarm Chip temperature alarm on page 1. | ||
diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801 index adf5e33e8312..e9c803ea306d 100644 --- a/Documentation/i2c/busses/i2c-i801 +++ b/Documentation/i2c/busses/i2c-i801 | |||
@@ -25,6 +25,7 @@ Supported adapters: | |||
25 | * Intel Avoton (SOC) | 25 | * Intel Avoton (SOC) |
26 | * Intel Wellsburg (PCH) | 26 | * Intel Wellsburg (PCH) |
27 | * Intel Coleto Creek (PCH) | 27 | * Intel Coleto Creek (PCH) |
28 | * Intel Wildcat Point (PCH) | ||
28 | * Intel Wildcat Point-LP (PCH) | 29 | * Intel Wildcat Point-LP (PCH) |
29 | * Intel BayTrail (SOC) | 30 | * Intel BayTrail (SOC) |
30 | Datasheets: Publicly available at the Intel website | 31 | Datasheets: Publicly available at the Intel website |
diff --git a/Documentation/i2c/i2c-stub b/Documentation/i2c/i2c-stub index fa4b669c166b..a16924fbd289 100644 --- a/Documentation/i2c/i2c-stub +++ b/Documentation/i2c/i2c-stub | |||
@@ -2,9 +2,9 @@ MODULE: i2c-stub | |||
2 | 2 | ||
3 | DESCRIPTION: | 3 | DESCRIPTION: |
4 | 4 | ||
5 | This module is a very simple fake I2C/SMBus driver. It implements five | 5 | This module is a very simple fake I2C/SMBus driver. It implements six |
6 | types of SMBus commands: write quick, (r/w) byte, (r/w) byte data, (r/w) | 6 | types of SMBus commands: write quick, (r/w) byte, (r/w) byte data, (r/w) |
7 | word data, and (r/w) I2C block data. | 7 | word data, (r/w) I2C block data, and (r/w) SMBus block data. |
8 | 8 | ||
9 | You need to provide chip addresses as a module parameter when loading this | 9 | You need to provide chip addresses as a module parameter when loading this |
10 | driver, which will then only react to SMBus commands to these addresses. | 10 | driver, which will then only react to SMBus commands to these addresses. |
@@ -19,6 +19,14 @@ A pointer register with auto-increment is implemented for all byte | |||
19 | operations. This allows for continuous byte reads like those supported by | 19 | operations. This allows for continuous byte reads like those supported by |
20 | EEPROMs, among others. | 20 | EEPROMs, among others. |
21 | 21 | ||
22 | SMBus block command support is disabled by default, and must be enabled | ||
23 | explicitly by setting the respective bits (0x03000000) in the functionality | ||
24 | module parameter. | ||
25 | |||
26 | SMBus block commands must be written to configure an SMBus command for | ||
27 | SMBus block operations. Writes can be partial. Block read commands always | ||
28 | return the number of bytes selected with the largest write so far. | ||
29 | |||
22 | The typical use-case is like this: | 30 | The typical use-case is like this: |
23 | 1. load this module | 31 | 1. load this module |
24 | 2. use i2cset (from the i2c-tools project) to pre-load some data | 32 | 2. use i2cset (from the i2c-tools project) to pre-load some data |
@@ -39,15 +47,18 @@ unsigned long functionality: | |||
39 | value 0x1f0000 would only enable the quick, byte and byte data | 47 | value 0x1f0000 would only enable the quick, byte and byte data |
40 | commands. | 48 | commands. |
41 | 49 | ||
50 | u8 bank_reg[10] | ||
51 | u8 bank_mask[10] | ||
52 | u8 bank_start[10] | ||
53 | u8 bank_end[10]: | ||
54 | Optional bank settings. They tell which bits in which register | ||
55 | select the active bank, as well as the range of banked registers. | ||
56 | |||
42 | CAVEATS: | 57 | CAVEATS: |
43 | 58 | ||
44 | If your target driver polls some byte or word waiting for it to change, the | 59 | If your target driver polls some byte or word waiting for it to change, the |
45 | stub could lock it up. Use i2cset to unlock it. | 60 | stub could lock it up. Use i2cset to unlock it. |
46 | 61 | ||
47 | If the hardware for your driver has banked registers (e.g. Winbond sensors | ||
48 | chips) this module will not work well - although it could be extended to | ||
49 | support that pretty easily. | ||
50 | |||
51 | If you spam it hard enough, printk can be lossy. This module really wants | 62 | If you spam it hard enough, printk can be lossy. This module really wants |
52 | something like relayfs. | 63 | something like relayfs. |
53 | 64 | ||
diff --git a/Documentation/ioctl/00-INDEX b/Documentation/ioctl/00-INDEX index d2fe4d4729ef..c1a925787950 100644 --- a/Documentation/ioctl/00-INDEX +++ b/Documentation/ioctl/00-INDEX | |||
@@ -1,5 +1,7 @@ | |||
1 | 00-INDEX | 1 | 00-INDEX |
2 | - this file | 2 | - this file |
3 | botching-up-ioctls.txt | ||
4 | - how to avoid botching up ioctls | ||
3 | cdrom.txt | 5 | cdrom.txt |
4 | - summary of CDROM ioctl calls | 6 | - summary of CDROM ioctl calls |
5 | hdio.txt | 7 | hdio.txt |
diff --git a/Documentation/ioctl/botching-up-ioctls.txt b/Documentation/ioctl/botching-up-ioctls.txt new file mode 100644 index 000000000000..45fe78c58019 --- /dev/null +++ b/Documentation/ioctl/botching-up-ioctls.txt | |||
@@ -0,0 +1,219 @@ | |||
1 | (How to avoid) Botching up ioctls | ||
2 | ================================= | ||
3 | |||
4 | From: http://blog.ffwll.ch/2013/11/botching-up-ioctls.html | ||
5 | |||
6 | By: Daniel Vetter, Copyright © 2013 Intel Corporation | ||
7 | |||
8 | One clear insight kernel graphics hackers gained in the past few years is that | ||
9 | trying to come up with a unified interface to manage the execution units and | ||
10 | memory on completely different GPUs is a futile effort. So nowadays every | ||
11 | driver has its own set of ioctls to allocate memory and submit work to the GPU. | ||
12 | Which is nice, since there's no more insanity in the form of fake-generic, but | ||
13 | actually only used once interfaces. But the clear downside is that there's much | ||
14 | more potential to screw things up. | ||
15 | |||
16 | To avoid repeating all the same mistakes again I've written up some of the | ||
17 | lessons learned while botching the job for the drm/i915 driver. Most of these | ||
18 | only cover technicalities and not the big-picture issues like what the command | ||
19 | submission ioctl exactly should look like. Learning these lessons is probably | ||
20 | something every GPU driver has to do on its own. | ||
21 | |||
22 | |||
23 | Prerequisites | ||
24 | ------------- | ||
25 | |||
26 | First the prerequisites. Without these you have already failed, because you | ||
27 | will need to add a a 32-bit compat layer: | ||
28 | |||
29 | * Only use fixed sized integers. To avoid conflicts with typedefs in userspace | ||
30 | the kernel has special types like __u32, __s64. Use them. | ||
31 | |||
32 | * Align everything to the natural size and use explicit padding. 32-bit | ||
33 | platforms don't necessarily align 64-bit values to 64-bit boundaries, but | ||
34 | 64-bit platforms do. So we always need padding to the natural size to get | ||
35 | this right. | ||
36 | |||
37 | * Pad the entire struct to a multiple of 64-bits - the structure size will | ||
38 | otherwise differ on 32-bit versus 64-bit. Having a different structure size | ||
39 | hurts when passing arrays of structures to the kernel, or if the kernel | ||
40 | checks the structure size, which e.g. the drm core does. | ||
41 | |||
42 | * Pointers are __u64, cast from/to a uintprt_t on the userspace side and | ||
43 | from/to a void __user * in the kernel. Try really hard not to delay this | ||
44 | conversion or worse, fiddle the raw __u64 through your code since that | ||
45 | diminishes the checking tools like sparse can provide. | ||
46 | |||
47 | |||
48 | Basics | ||
49 | ------ | ||
50 | |||
51 | With the joys of writing a compat layer avoided we can take a look at the basic | ||
52 | fumbles. Neglecting these will make backward and forward compatibility a real | ||
53 | pain. And since getting things wrong on the first attempt is guaranteed you | ||
54 | will have a second iteration or at least an extension for any given interface. | ||
55 | |||
56 | * Have a clear way for userspace to figure out whether your new ioctl or ioctl | ||
57 | extension is supported on a given kernel. If you can't rely on old kernels | ||
58 | rejecting the new flags/modes or ioctls (since doing that was botched in the | ||
59 | past) then you need a driver feature flag or revision number somewhere. | ||
60 | |||
61 | * Have a plan for extending ioctls with new flags or new fields at the end of | ||
62 | the structure. The drm core checks the passed-in size for each ioctl call | ||
63 | and zero-extends any mismatches between kernel and userspace. That helps, | ||
64 | but isn't a complete solution since newer userspace on older kernels won't | ||
65 | notice that the newly added fields at the end get ignored. So this still | ||
66 | needs a new driver feature flags. | ||
67 | |||
68 | * Check all unused fields and flags and all the padding for whether it's 0, | ||
69 | and reject the ioctl if that's not the case. Otherwise your nice plan for | ||
70 | future extensions is going right down the gutters since someone will submit | ||
71 | an ioctl struct with random stack garbage in the yet unused parts. Which | ||
72 | then bakes in the ABI that those fields can never be used for anything else | ||
73 | but garbage. | ||
74 | |||
75 | * Have simple testcases for all of the above. | ||
76 | |||
77 | |||
78 | Fun with Error Paths | ||
79 | -------------------- | ||
80 | |||
81 | Nowadays we don't have any excuse left any more for drm drivers being neat | ||
82 | little root exploits. This means we both need full input validation and solid | ||
83 | error handling paths - GPUs will die eventually in the oddmost corner cases | ||
84 | anyway: | ||
85 | |||
86 | * The ioctl must check for array overflows. Also it needs to check for | ||
87 | over/underflows and clamping issues of integer values in general. The usual | ||
88 | example is sprite positioning values fed directly into the hardware with the | ||
89 | hardware just having 12 bits or so. Works nicely until some odd display | ||
90 | server doesn't bother with clamping itself and the cursor wraps around the | ||
91 | screen. | ||
92 | |||
93 | * Have simple testcases for every input validation failure case in your ioctl. | ||
94 | Check that the error code matches your expectations. And finally make sure | ||
95 | that you only test for one single error path in each subtest by submitting | ||
96 | otherwise perfectly valid data. Without this an earlier check might reject | ||
97 | the ioctl already and shadow the codepath you actually want to test, hiding | ||
98 | bugs and regressions. | ||
99 | |||
100 | * Make all your ioctls restartable. First X really loves signals and second | ||
101 | this will allow you to test 90% of all error handling paths by just | ||
102 | interrupting your main test suite constantly with signals. Thanks to X's | ||
103 | love for signal you'll get an excellent base coverage of all your error | ||
104 | paths pretty much for free for graphics drivers. Also, be consistent with | ||
105 | how you handle ioctl restarting - e.g. drm has a tiny drmIoctl helper in its | ||
106 | userspace library. The i915 driver botched this with the set_tiling ioctl, | ||
107 | now we're stuck forever with some arcane semantics in both the kernel and | ||
108 | userspace. | ||
109 | |||
110 | * If you can't make a given codepath restartable make a stuck task at least | ||
111 | killable. GPUs just die and your users won't like you more if you hang their | ||
112 | entire box (by means of an unkillable X process). If the state recovery is | ||
113 | still too tricky have a timeout or hangcheck safety net as a last-ditch | ||
114 | effort in case the hardware has gone bananas. | ||
115 | |||
116 | * Have testcases for the really tricky corner cases in your error recovery code | ||
117 | - it's way too easy to create a deadlock between your hangcheck code and | ||
118 | waiters. | ||
119 | |||
120 | |||
121 | Time, Waiting and Missing it | ||
122 | ---------------------------- | ||
123 | |||
124 | GPUs do most everything asynchronously, so we have a need to time operations and | ||
125 | wait for oustanding ones. This is really tricky business; at the moment none of | ||
126 | the ioctls supported by the drm/i915 get this fully right, which means there's | ||
127 | still tons more lessons to learn here. | ||
128 | |||
129 | * Use CLOCK_MONOTONIC as your reference time, always. It's what alsa, drm and | ||
130 | v4l use by default nowadays. But let userspace know which timestamps are | ||
131 | derived from different clock domains like your main system clock (provided | ||
132 | by the kernel) or some independent hardware counter somewhere else. Clocks | ||
133 | will mismatch if you look close enough, but if performance measuring tools | ||
134 | have this information they can at least compensate. If your userspace can | ||
135 | get at the raw values of some clocks (e.g. through in-command-stream | ||
136 | performance counter sampling instructions) consider exposing those also. | ||
137 | |||
138 | * Use __s64 seconds plus __u64 nanoseconds to specify time. It's not the most | ||
139 | convenient time specification, but it's mostly the standard. | ||
140 | |||
141 | * Check that input time values are normalized and reject them if not. Note | ||
142 | that the kernel native struct ktime has a signed integer for both seconds | ||
143 | and nanoseconds, so beware here. | ||
144 | |||
145 | * For timeouts, use absolute times. If you're a good fellow and made your | ||
146 | ioctl restartable relative timeouts tend to be too coarse and can | ||
147 | indefinitely extend your wait time due to rounding on each restart. | ||
148 | Especially if your reference clock is something really slow like the display | ||
149 | frame counter. With a spec laywer hat on this isn't a bug since timeouts can | ||
150 | always be extended - but users will surely hate you if their neat animations | ||
151 | starts to stutter due to this. | ||
152 | |||
153 | * Consider ditching any synchronous wait ioctls with timeouts and just deliver | ||
154 | an asynchronous event on a pollable file descriptor. It fits much better | ||
155 | into event driven applications' main loop. | ||
156 | |||
157 | * Have testcases for corner-cases, especially whether the return values for | ||
158 | already-completed events, successful waits and timed-out waits are all sane | ||
159 | and suiting to your needs. | ||
160 | |||
161 | |||
162 | Leaking Resources, Not | ||
163 | ---------------------- | ||
164 | |||
165 | A full-blown drm driver essentially implements a little OS, but specialized to | ||
166 | the given GPU platforms. This means a driver needs to expose tons of handles | ||
167 | for different objects and other resources to userspace. Doing that right | ||
168 | entails its own little set of pitfalls: | ||
169 | |||
170 | * Always attach the lifetime of your dynamically created resources to the | ||
171 | lifetime of a file descriptor. Consider using a 1:1 mapping if your resource | ||
172 | needs to be shared across processes - fd-passing over unix domain sockets | ||
173 | also simplifies lifetime management for userspace. | ||
174 | |||
175 | * Always have O_CLOEXEC support. | ||
176 | |||
177 | * Ensure that you have sufficient insulation between different clients. By | ||
178 | default pick a private per-fd namespace which forces any sharing to be done | ||
179 | explictly. Only go with a more global per-device namespace if the objects | ||
180 | are truly device-unique. One counterexample in the drm modeset interfaces is | ||
181 | that the per-device modeset objects like connectors share a namespace with | ||
182 | framebuffer objects, which mostly are not shared at all. A separate | ||
183 | namespace, private by default, for framebuffers would have been more | ||
184 | suitable. | ||
185 | |||
186 | * Think about uniqueness requirements for userspace handles. E.g. for most drm | ||
187 | drivers it's a userspace bug to submit the same object twice in the same | ||
188 | command submission ioctl. But then if objects are shareable userspace needs | ||
189 | to know whether it has seen an imported object from a different process | ||
190 | already or not. I haven't tried this myself yet due to lack of a new class | ||
191 | of objects, but consider using inode numbers on your shared file descriptors | ||
192 | as unique identifiers - it's how real files are told apart, too. | ||
193 | Unfortunately this requires a full-blown virtual filesystem in the kernel. | ||
194 | |||
195 | |||
196 | Last, but not Least | ||
197 | ------------------- | ||
198 | |||
199 | Not every problem needs a new ioctl: | ||
200 | |||
201 | * Think hard whether you really want a driver-private interface. Of course | ||
202 | it's much quicker to push a driver-private interface than engaging in | ||
203 | lengthy discussions for a more generic solution. And occasionally doing a | ||
204 | private interface to spearhead a new concept is what's required. But in the | ||
205 | end, once the generic interface comes around you'll end up maintainer two | ||
206 | interfaces. Indefinitely. | ||
207 | |||
208 | * Consider other interfaces than ioctls. A sysfs attribute is much better for | ||
209 | per-device settings, or for child objects with fairly static lifetimes (like | ||
210 | output connectors in drm with all the detection override attributes). Or | ||
211 | maybe only your testsuite needs this interface, and then debugfs with its | ||
212 | disclaimer of not having a stable ABI would be better. | ||
213 | |||
214 | Finally, the name of the game is to get it right on the first attempt, since if | ||
215 | your driver proves popular and your hardware platforms long-lived then you'll | ||
216 | be stuck with a given ioctl essentially forever. You can try to deprecate | ||
217 | horrible ioctls on newer iterations of your hardware, but generally it takes | ||
218 | years to accomplish this. And then again years until the last user able to | ||
219 | complain about regressions disappears, too. | ||
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index d7e43fa88575..7e240a7c9ab1 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
@@ -197,6 +197,7 @@ Code Seq#(hex) Include File Comments | |||
197 | <mailto:gregkh@linuxfoundation.org> | 197 | <mailto:gregkh@linuxfoundation.org> |
198 | 'a' all linux/atm*.h, linux/sonet.h ATM on linux | 198 | 'a' all linux/atm*.h, linux/sonet.h ATM on linux |
199 | <http://lrcwww.epfl.ch/> | 199 | <http://lrcwww.epfl.ch/> |
200 | 'a' 00-0F drivers/crypto/qat/qat_common/adf_cfg_common.h conflict! qat driver | ||
200 | 'b' 00-FF conflict! bit3 vme host bridge | 201 | 'b' 00-FF conflict! bit3 vme host bridge |
201 | <mailto:natalia@nikhefk.nikhef.nl> | 202 | <mailto:natalia@nikhefk.nikhef.nl> |
202 | 'c' all linux/cm4000_cs.h conflict! | 203 | 'c' all linux/cm4000_cs.h conflict! |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index b7fa2f599459..a8eb6afce6a4 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -566,6 +566,17 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
566 | possible to determine what the correct size should be. | 566 | possible to determine what the correct size should be. |
567 | This option provides an override for these situations. | 567 | This option provides an override for these situations. |
568 | 568 | ||
569 | ca_keys= [KEYS] This parameter identifies a specific key(s) on | ||
570 | the system trusted keyring to be used for certificate | ||
571 | trust validation. | ||
572 | format: { id:<keyid> | builtin } | ||
573 | |||
574 | cca= [MIPS] Override the kernel pages' cache coherency | ||
575 | algorithm. Accepted values range from 0 to 7 | ||
576 | inclusive. See arch/mips/include/asm/pgtable-bits.h | ||
577 | for platform specific values (SB1, Loongson3 and | ||
578 | others). | ||
579 | |||
569 | ccw_timeout_log [S390] | 580 | ccw_timeout_log [S390] |
570 | See Documentation/s390/CommonIO for details. | 581 | See Documentation/s390/CommonIO for details. |
571 | 582 | ||
@@ -1097,6 +1108,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1097 | that can be changed at run time by the | 1108 | that can be changed at run time by the |
1098 | set_graph_function file in the debugfs tracing directory. | 1109 | set_graph_function file in the debugfs tracing directory. |
1099 | 1110 | ||
1111 | ftrace_graph_notrace=[function-list] | ||
1112 | [FTRACE] Do not trace from the functions specified in | ||
1113 | function-list. This list is a comma separated list of | ||
1114 | functions that can be changed at run time by the | ||
1115 | set_graph_notrace file in the debugfs tracing directory. | ||
1116 | |||
1100 | gamecon.map[2|3]= | 1117 | gamecon.map[2|3]= |
1101 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad | 1118 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad |
1102 | support via parallel port (up to 5 devices per port) | 1119 | support via parallel port (up to 5 devices per port) |
@@ -1313,6 +1330,23 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1313 | Formats: { "ima" | "ima-ng" } | 1330 | Formats: { "ima" | "ima-ng" } |
1314 | Default: "ima-ng" | 1331 | Default: "ima-ng" |
1315 | 1332 | ||
1333 | ima.ahash_minsize= [IMA] Minimum file size for asynchronous hash usage | ||
1334 | Format: <min_file_size> | ||
1335 | Set the minimal file size for using asynchronous hash. | ||
1336 | If left unspecified, ahash usage is disabled. | ||
1337 | |||
1338 | ahash performance varies for different data sizes on | ||
1339 | different crypto accelerators. This option can be used | ||
1340 | to achieve the best performance for a particular HW. | ||
1341 | |||
1342 | ima.ahash_bufsize= [IMA] Asynchronous hash buffer size | ||
1343 | Format: <bufsize> | ||
1344 | Set hashing buffer size. Default: 4k. | ||
1345 | |||
1346 | ahash performance varies for different chunk sizes on | ||
1347 | different crypto accelerators. This option can be used | ||
1348 | to achieve best performance for particular HW. | ||
1349 | |||
1316 | init= [KNL] | 1350 | init= [KNL] |
1317 | Format: <full_path> | 1351 | Format: <full_path> |
1318 | Run specified binary instead of /sbin/init as init | 1352 | Run specified binary instead of /sbin/init as init |
@@ -1416,10 +1450,6 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1416 | ip= [IP_PNP] | 1450 | ip= [IP_PNP] |
1417 | See Documentation/filesystems/nfs/nfsroot.txt. | 1451 | See Documentation/filesystems/nfs/nfsroot.txt. |
1418 | 1452 | ||
1419 | ip2= [HW] Set IO/IRQ pairs for up to 4 IntelliPort boards | ||
1420 | See comment before ip2_setup() in | ||
1421 | drivers/char/ip2/ip2base.c. | ||
1422 | |||
1423 | irqfixup [HW] | 1453 | irqfixup [HW] |
1424 | When an interrupt is not handled search all handlers | 1454 | When an interrupt is not handled search all handlers |
1425 | for it. Intended to get systems with badly broken | 1455 | for it. Intended to get systems with badly broken |
@@ -1692,8 +1722,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
1692 | 7 (KERN_DEBUG) debug-level messages | 1722 | 7 (KERN_DEBUG) debug-level messages |
1693 | 1723 | ||
1694 | log_buf_len=n[KMG] Sets the size of the printk ring buffer, | 1724 | log_buf_len=n[KMG] Sets the size of the printk ring buffer, |
1695 | in bytes. n must be a power of two. The default | 1725 | in bytes. n must be a power of two and greater |
1696 | size is set in the kernel config file. | 1726 | than the minimal size. The minimal size is defined |
1727 | by LOG_BUF_SHIFT kernel config parameter. There is | ||
1728 | also CONFIG_LOG_CPU_MAX_BUF_SHIFT config parameter | ||
1729 | that allows to increase the default size depending on | ||
1730 | the number of CPUs. See init/Kconfig for more details. | ||
1697 | 1731 | ||
1698 | logo.nologo [FB] Disables display of the built-in Linux logo. | 1732 | logo.nologo [FB] Disables display of the built-in Linux logo. |
1699 | This may be used to provide more screen space for | 1733 | This may be used to provide more screen space for |
@@ -2807,6 +2841,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
2807 | quiescent states. Units are jiffies, minimum | 2841 | quiescent states. Units are jiffies, minimum |
2808 | value is one, and maximum value is HZ. | 2842 | value is one, and maximum value is HZ. |
2809 | 2843 | ||
2844 | rcutree.rcu_nocb_leader_stride= [KNL] | ||
2845 | Set the number of NOCB kthread groups, which | ||
2846 | defaults to the square root of the number of | ||
2847 | CPUs. Larger numbers reduces the wakeup overhead | ||
2848 | on the per-CPU grace-period kthreads, but increases | ||
2849 | that same overhead on each group's leader. | ||
2850 | |||
2810 | rcutree.qhimark= [KNL] | 2851 | rcutree.qhimark= [KNL] |
2811 | Set threshold of queued RCU callbacks beyond which | 2852 | Set threshold of queued RCU callbacks beyond which |
2812 | batch limiting is disabled. | 2853 | batch limiting is disabled. |
@@ -3023,6 +3064,13 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3023 | 3064 | ||
3024 | S [KNL] Run init in single mode | 3065 | S [KNL] Run init in single mode |
3025 | 3066 | ||
3067 | s390_iommu= [HW,S390] | ||
3068 | Set s390 IOTLB flushing mode | ||
3069 | strict | ||
3070 | With strict flushing every unmap operation will result in | ||
3071 | an IOTLB flush. Default is lazy flushing before reuse, | ||
3072 | which is faster. | ||
3073 | |||
3026 | sa1100ir [NET] | 3074 | sa1100ir [NET] |
3027 | See drivers/net/irda/sa1100_ir.c. | 3075 | See drivers/net/irda/sa1100_ir.c. |
3028 | 3076 | ||
@@ -3697,6 +3745,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. | |||
3697 | Disables the ticketlock slowpath using Xen PV | 3745 | Disables the ticketlock slowpath using Xen PV |
3698 | optimizations. | 3746 | optimizations. |
3699 | 3747 | ||
3748 | xen_nopv [X86] | ||
3749 | Disables the PV optimizations forcing the HVM guest to | ||
3750 | run as generic HVM guest with no PV drivers. | ||
3751 | |||
3700 | xirc2ps_cs= [NET,PCMCIA] | 3752 | xirc2ps_cs= [NET,PCMCIA] |
3701 | Format: | 3753 | Format: |
3702 | <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] | 3754 | <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] |
diff --git a/Documentation/laptops/freefall.c b/Documentation/laptops/freefall.c index aab2ff09e868..5e44b20b1848 100644 --- a/Documentation/laptops/freefall.c +++ b/Documentation/laptops/freefall.c | |||
@@ -29,15 +29,12 @@ static const char app_name[] = "FREE FALL"; | |||
29 | 29 | ||
30 | static int set_unload_heads_path(char *device) | 30 | static int set_unload_heads_path(char *device) |
31 | { | 31 | { |
32 | char devname[64]; | ||
33 | |||
34 | if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0) | 32 | if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0) |
35 | return -EINVAL; | 33 | return -EINVAL; |
36 | strncpy(devname, device + 5, sizeof(devname) - 1); | ||
37 | strncpy(device_path, device, sizeof(device_path) - 1); | 34 | strncpy(device_path, device, sizeof(device_path) - 1); |
38 | 35 | ||
39 | snprintf(unload_heads_path, sizeof(unload_heads_path) - 1, | 36 | snprintf(unload_heads_path, sizeof(unload_heads_path) - 1, |
40 | "/sys/block/%s/device/unload_heads", devname); | 37 | "/sys/block/%s/device/unload_heads", device+5); |
41 | return 0; | 38 | return 0; |
42 | } | 39 | } |
43 | 40 | ||
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index f1dc4a215593..a4de88fb55f0 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt | |||
@@ -757,10 +757,14 @@ SMP BARRIER PAIRING | |||
757 | When dealing with CPU-CPU interactions, certain types of memory barrier should | 757 | When dealing with CPU-CPU interactions, certain types of memory barrier should |
758 | always be paired. A lack of appropriate pairing is almost certainly an error. | 758 | always be paired. A lack of appropriate pairing is almost certainly an error. |
759 | 759 | ||
760 | A write barrier should always be paired with a data dependency barrier or read | 760 | General barriers pair with each other, though they also pair with |
761 | barrier, though a general barrier would also be viable. Similarly a read | 761 | most other types of barriers, albeit without transitivity. An acquire |
762 | barrier or a data dependency barrier should always be paired with at least an | 762 | barrier pairs with a release barrier, but both may also pair with other |
763 | write barrier, though, again, a general barrier is viable: | 763 | barriers, including of course general barriers. A write barrier pairs |
764 | with a data dependency barrier, an acquire barrier, a release barrier, | ||
765 | a read barrier, or a general barrier. Similarly a read barrier or a | ||
766 | data dependency barrier pairs with a write barrier, an acquire barrier, | ||
767 | a release barrier, or a general barrier: | ||
764 | 768 | ||
765 | CPU 1 CPU 2 | 769 | CPU 1 CPU 2 |
766 | =============== =============== | 770 | =============== =============== |
@@ -1893,6 +1897,21 @@ between the STORE to indicate the event and the STORE to set TASK_RUNNING: | |||
1893 | <general barrier> STORE current->state | 1897 | <general barrier> STORE current->state |
1894 | LOAD event_indicated | 1898 | LOAD event_indicated |
1895 | 1899 | ||
1900 | To repeat, this write memory barrier is present if and only if something | ||
1901 | is actually awakened. To see this, consider the following sequence of | ||
1902 | events, where X and Y are both initially zero: | ||
1903 | |||
1904 | CPU 1 CPU 2 | ||
1905 | =============================== =============================== | ||
1906 | X = 1; STORE event_indicated | ||
1907 | smp_mb(); wake_up(); | ||
1908 | Y = 1; wait_event(wq, Y == 1); | ||
1909 | wake_up(); load from Y sees 1, no memory barrier | ||
1910 | load from X might see 0 | ||
1911 | |||
1912 | In contrast, if a wakeup does occur, CPU 2's load from X would be guaranteed | ||
1913 | to see 1. | ||
1914 | |||
1896 | The available waker functions include: | 1915 | The available waker functions include: |
1897 | 1916 | ||
1898 | complete(); | 1917 | complete(); |
diff --git a/Documentation/mic/mic_overview.txt b/Documentation/mic/mic_overview.txt index b41929224804..77c541802ad9 100644 --- a/Documentation/mic/mic_overview.txt +++ b/Documentation/mic/mic_overview.txt | |||
@@ -17,35 +17,50 @@ for applications. A key benefit of our solution is that it leverages | |||
17 | the standard virtio framework for network, disk and console devices, | 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. | 18 | though in our case the virtio framework is used across a PCIe bus. |
19 | 19 | ||
20 | MIC PCIe card has a dma controller with 8 channels. These channels are | ||
21 | shared between the host s/w and the card s/w. 0 to 3 are used by host | ||
22 | and 4 to 7 by card. As the dma device doesn't show up as PCIe device, | ||
23 | a virtual bus called mic bus is created and virtual dma devices are | ||
24 | created on it by the host/card drivers. On host the channels are private | ||
25 | and used only by the host driver to transfer data for the virtio devices. | ||
26 | |||
20 | Here is a block diagram of the various components described above. The | 27 | 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 | 28 | 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 | 29 | 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 | 30 | 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. | 31 | the fact that the virtio block storage backend can only be on the host. |
25 | 32 | ||
26 | | | 33 | | |
27 | +----------+ | +----------+ | 34 | +----------+ | +----------+ |
28 | | Card OS | | | Host OS | | 35 | | Card OS | | | Host OS | |
29 | +----------+ | +----------+ | 36 | +----------+ | +----------+ |
30 | | | 37 | | |
31 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ | 38 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ |
32 | | Virtio| |Virtio | |Virtio| | |Virtio | |Virtio | |Virtio | | 39 | | Virtio| |Virtio | |Virtio| | |Virtio | |Virtio | |Virtio | |
33 | | Net | |Console | |Block | | |Net | |Console | |Block | | 40 | | Net | |Console | |Block | | |Net | |Console | |Block | |
34 | | Driver| |Driver | |Driver| | |backend | |backend | |backend | | 41 | | Driver| |Driver | |Driver| | |backend | |backend | |backend | |
35 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ | 42 | +-------+ +--------+ +------+ | +---------+ +--------+ +--------+ |
36 | | | | | | | | | 43 | | | | | | | | |
37 | | | | |User | | | | 44 | | | | |User | | | |
38 | | | | |------|------------|---------|------- | 45 | | | | |------|------------|---------|------- |
39 | +-------------------+ |Kernel +--------------------------+ | 46 | +-------------------+ |Kernel +--------------------------+ |
40 | | | | Virtio over PCIe IOCTLs | | 47 | | | | Virtio over PCIe IOCTLs | |
41 | | | +--------------------------+ | 48 | | | +--------------------------+ |
42 | +--------------+ | | | 49 | +-----------+ | | | +-----------+ |
43 | |Intel MIC | | +---------------+ | 50 | | MIC DMA | | | | | MIC DMA | |
44 | |Card Driver | | |Intel MIC | | 51 | | Driver | | | | | Driver | |
45 | +--------------+ | |Host Driver | | 52 | +-----------+ | | | +-----------+ |
46 | | | +---------------+ | 53 | | | | | | |
47 | | | | | 54 | +---------------+ | | | +----------------+ |
48 | +-------------------------------------------------------------+ | 55 | |MIC virtual Bus| | | | |MIC virtual Bus | |
49 | | | | 56 | +---------------+ | | | +----------------+ |
50 | | PCIe Bus | | 57 | | | | | | |
51 | +-------------------------------------------------------------+ | 58 | | +--------------+ | +---------------+ | |
59 | | |Intel MIC | | |Intel MIC | | | ||
60 | +---|Card Driver | | |Host Driver | | | ||
61 | +--------------+ | +---------------+-----+ | ||
62 | | | | | ||
63 | +-------------------------------------------------------------+ | ||
64 | | | | ||
65 | | PCIe Bus | | ||
66 | +-------------------------------------------------------------+ | ||
diff --git a/Documentation/mic/mpssd/mpss b/Documentation/mic/mpssd/mpss index 3136c68dad0b..cacbdb0aefb9 100755 --- a/Documentation/mic/mpssd/mpss +++ b/Documentation/mic/mpssd/mpss | |||
@@ -48,18 +48,18 @@ start() | |||
48 | fi | 48 | fi |
49 | 49 | ||
50 | echo -e $"Starting MPSS Stack" | 50 | echo -e $"Starting MPSS Stack" |
51 | echo -e $"Loading MIC_HOST Module" | 51 | echo -e $"Loading MIC_X100_DMA & MIC_HOST Modules" |
52 | 52 | ||
53 | # Ensure the driver is loaded | 53 | for f in "mic_host" "mic_x100_dma" |
54 | if [ ! -d "$sysfs" ]; then | 54 | do |
55 | modprobe mic_host | 55 | modprobe $f |
56 | RETVAL=$? | 56 | RETVAL=$? |
57 | if [ $RETVAL -ne 0 ]; then | 57 | if [ $RETVAL -ne 0 ]; then |
58 | failure | 58 | failure |
59 | echo | 59 | echo |
60 | return $RETVAL | 60 | return $RETVAL |
61 | fi | 61 | fi |
62 | fi | 62 | done |
63 | 63 | ||
64 | # Start the daemon | 64 | # Start the daemon |
65 | echo -n $"Starting MPSSD " | 65 | echo -n $"Starting MPSSD " |
@@ -170,8 +170,8 @@ unload() | |||
170 | stop | 170 | stop |
171 | 171 | ||
172 | sleep 5 | 172 | sleep 5 |
173 | echo -n $"Removing MIC_HOST Module: " | 173 | echo -n $"Removing MIC_HOST & MIC_X100_DMA Modules: " |
174 | modprobe -r mic_host | 174 | modprobe -r mic_host mic_x100_dma |
175 | RETVAL=$? | 175 | RETVAL=$? |
176 | [ $RETVAL -ne 0 ] && failure || success | 176 | [ $RETVAL -ne 0 ] && failure || success |
177 | echo | 177 | echo |
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 9c723ecd0025..eeb5b2e97bed 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -542,10 +542,10 @@ mode | |||
542 | 542 | ||
543 | XOR policy: Transmit based on the selected transmit | 543 | XOR policy: Transmit based on the selected transmit |
544 | hash policy. The default policy is a simple [(source | 544 | hash policy. The default policy is a simple [(source |
545 | MAC address XOR'd with destination MAC address) modulo | 545 | MAC address XOR'd with destination MAC address XOR |
546 | slave count]. Alternate transmit policies may be | 546 | packet type ID) modulo slave count]. Alternate transmit |
547 | selected via the xmit_hash_policy option, described | 547 | policies may be selected via the xmit_hash_policy option, |
548 | below. | 548 | described below. |
549 | 549 | ||
550 | This mode provides load balancing and fault tolerance. | 550 | This mode provides load balancing and fault tolerance. |
551 | 551 | ||
@@ -801,10 +801,11 @@ xmit_hash_policy | |||
801 | 801 | ||
802 | layer2 | 802 | layer2 |
803 | 803 | ||
804 | Uses XOR of hardware MAC addresses to generate the | 804 | Uses XOR of hardware MAC addresses and packet type ID |
805 | hash. The formula is | 805 | field to generate the hash. The formula is |
806 | 806 | ||
807 | (source MAC XOR destination MAC) modulo slave count | 807 | hash = source MAC XOR destination MAC XOR packet type ID |
808 | slave number = hash modulo slave count | ||
808 | 809 | ||
809 | This algorithm will place all traffic to a particular | 810 | This algorithm will place all traffic to a particular |
810 | network peer on the same slave. | 811 | network peer on the same slave. |
@@ -819,7 +820,7 @@ xmit_hash_policy | |||
819 | Uses XOR of hardware MAC addresses and IP addresses to | 820 | Uses XOR of hardware MAC addresses and IP addresses to |
820 | generate the hash. The formula is | 821 | generate the hash. The formula is |
821 | 822 | ||
822 | hash = source MAC XOR destination MAC | 823 | hash = source MAC XOR destination MAC XOR packet type ID |
823 | hash = hash XOR source IP XOR destination IP | 824 | hash = hash XOR source IP XOR destination IP |
824 | hash = hash XOR (hash RSHIFT 16) | 825 | hash = hash XOR (hash RSHIFT 16) |
825 | hash = hash XOR (hash RSHIFT 8) | 826 | hash = hash XOR (hash RSHIFT 8) |
@@ -2301,13 +2302,13 @@ broadcast: Like active-backup, there is not much advantage to this | |||
2301 | bandwidth. | 2302 | bandwidth. |
2302 | 2303 | ||
2303 | Additionally, the linux bonding 802.3ad implementation | 2304 | Additionally, the linux bonding 802.3ad implementation |
2304 | distributes traffic by peer (using an XOR of MAC addresses), | 2305 | distributes traffic by peer (using an XOR of MAC addresses |
2305 | so in a "gatewayed" configuration, all outgoing traffic will | 2306 | and packet type ID), so in a "gatewayed" configuration, all |
2306 | generally use the same device. Incoming traffic may also end | 2307 | outgoing traffic will generally use the same device. Incoming |
2307 | up on a single device, but that is dependent upon the | 2308 | traffic may also end up on a single device, but that is |
2308 | balancing policy of the peer's 8023.ad implementation. In a | 2309 | dependent upon the balancing policy of the peer's 8023.ad |
2309 | "local" configuration, traffic will be distributed across the | 2310 | implementation. In a "local" configuration, traffic will be |
2310 | devices in the bond. | 2311 | distributed across the devices in the bond. |
2311 | 2312 | ||
2312 | Finally, the 802.3ad mode mandates the use of the MII monitor, | 2313 | Finally, the 802.3ad mode mandates the use of the MII monitor, |
2313 | therefore, the ARP monitor is not available in this mode. | 2314 | therefore, the ARP monitor is not available in this mode. |
diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt index ee78eba78a9d..c48a9704bda8 100644 --- a/Documentation/networking/filter.txt +++ b/Documentation/networking/filter.txt | |||
@@ -586,12 +586,12 @@ team driver's classifier for its load-balancing mode, netfilter's xt_bpf | |||
586 | extension, PTP dissector/classifier, and much more. They are all internally | 586 | extension, PTP dissector/classifier, and much more. They are all internally |
587 | converted by the kernel into the new instruction set representation and run | 587 | converted by the kernel into the new instruction set representation and run |
588 | in the eBPF interpreter. For in-kernel handlers, this all works transparently | 588 | in the eBPF interpreter. For in-kernel handlers, this all works transparently |
589 | by using sk_unattached_filter_create() for setting up the filter, resp. | 589 | by using bpf_prog_create() for setting up the filter, resp. |
590 | sk_unattached_filter_destroy() for destroying it. The macro | 590 | bpf_prog_destroy() for destroying it. The macro |
591 | SK_RUN_FILTER(filter, ctx) transparently invokes eBPF interpreter or JITed | 591 | BPF_PROG_RUN(filter, ctx) transparently invokes eBPF interpreter or JITed |
592 | code to run the filter. 'filter' is a pointer to struct sk_filter that we | 592 | code to run the filter. 'filter' is a pointer to struct bpf_prog that we |
593 | got from sk_unattached_filter_create(), and 'ctx' the given context (e.g. | 593 | got from bpf_prog_create(), and 'ctx' the given context (e.g. |
594 | skb pointer). All constraints and restrictions from sk_chk_filter() apply | 594 | skb pointer). All constraints and restrictions from bpf_check_classic() apply |
595 | before a conversion to the new layout is being done behind the scenes! | 595 | before a conversion to the new layout is being done behind the scenes! |
596 | 596 | ||
597 | Currently, the classic BPF format is being used for JITing on most of the | 597 | Currently, the classic BPF format is being used for JITing on most of the |
diff --git a/Documentation/networking/i40e.txt b/Documentation/networking/i40e.txt index f737273c6dc1..a251bf4fe9c9 100644 --- a/Documentation/networking/i40e.txt +++ b/Documentation/networking/i40e.txt | |||
@@ -69,8 +69,11 @@ Additional Configurations | |||
69 | 69 | ||
70 | FCoE | 70 | FCoE |
71 | ---- | 71 | ---- |
72 | Fiber Channel over Ethernet (FCoE) hardware offload is not currently | 72 | The driver supports Fiber Channel over Ethernet (FCoE) and Data Center |
73 | supported. | 73 | Bridging (DCB) functionality. Configuring DCB and FCoE is outside the scope |
74 | of this driver doc. Refer to http://www.open-fcoe.org/ for FCoE project | ||
75 | information and http://www.open-lldp.org/ or email list | ||
76 | e1000-eedc@lists.sourceforge.net for DCB information. | ||
74 | 77 | ||
75 | MAC and VLAN anti-spoofing feature | 78 | MAC and VLAN anti-spoofing feature |
76 | ---------------------------------- | 79 | ---------------------------------- |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index ab42c95f9985..29a93518bf18 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -101,19 +101,17 @@ ipfrag_high_thresh - INTEGER | |||
101 | Maximum memory used to reassemble IP fragments. When | 101 | Maximum memory used to reassemble IP fragments. When |
102 | ipfrag_high_thresh bytes of memory is allocated for this purpose, | 102 | ipfrag_high_thresh bytes of memory is allocated for this purpose, |
103 | the fragment handler will toss packets until ipfrag_low_thresh | 103 | the fragment handler will toss packets until ipfrag_low_thresh |
104 | is reached. | 104 | is reached. This also serves as a maximum limit to namespaces |
105 | different from the initial one. | ||
105 | 106 | ||
106 | ipfrag_low_thresh - INTEGER | 107 | ipfrag_low_thresh - INTEGER |
107 | See ipfrag_high_thresh | 108 | Maximum memory used to reassemble IP fragments before the kernel |
109 | begins to remove incomplete fragment queues to free up resources. | ||
110 | The kernel still accepts new fragments for defragmentation. | ||
108 | 111 | ||
109 | ipfrag_time - INTEGER | 112 | ipfrag_time - INTEGER |
110 | Time in seconds to keep an IP fragment in memory. | 113 | Time in seconds to keep an IP fragment in memory. |
111 | 114 | ||
112 | ipfrag_secret_interval - INTEGER | ||
113 | Regeneration interval (in seconds) of the hash secret (or lifetime | ||
114 | for the hash secret) for IP fragments. | ||
115 | Default: 600 | ||
116 | |||
117 | ipfrag_max_dist - INTEGER | 115 | ipfrag_max_dist - INTEGER |
118 | ipfrag_max_dist is a non-negative integer value which defines the | 116 | ipfrag_max_dist is a non-negative integer value which defines the |
119 | maximum "disorder" which is allowed among fragments which share a | 117 | maximum "disorder" which is allowed among fragments which share a |
@@ -1132,6 +1130,15 @@ flowlabel_consistency - BOOLEAN | |||
1132 | FALSE: disabled | 1130 | FALSE: disabled |
1133 | Default: TRUE | 1131 | Default: TRUE |
1134 | 1132 | ||
1133 | auto_flowlabels - BOOLEAN | ||
1134 | Automatically generate flow labels based based on a flow hash | ||
1135 | of the packet. This allows intermediate devices, such as routers, | ||
1136 | to idenfify packet flows for mechanisms like Equal Cost Multipath | ||
1137 | Routing (see RFC 6438). | ||
1138 | TRUE: enabled | ||
1139 | FALSE: disabled | ||
1140 | Default: false | ||
1141 | |||
1135 | anycast_src_echo_reply - BOOLEAN | 1142 | anycast_src_echo_reply - BOOLEAN |
1136 | Controls the use of anycast addresses as source addresses for ICMPv6 | 1143 | Controls the use of anycast addresses as source addresses for ICMPv6 |
1137 | echo reply | 1144 | echo reply |
@@ -1153,11 +1160,6 @@ ip6frag_low_thresh - INTEGER | |||
1153 | ip6frag_time - INTEGER | 1160 | ip6frag_time - INTEGER |
1154 | Time in seconds to keep an IPv6 fragment in memory. | 1161 | Time in seconds to keep an IPv6 fragment in memory. |
1155 | 1162 | ||
1156 | ip6frag_secret_interval - INTEGER | ||
1157 | Regeneration interval (in seconds) of the hash secret (or lifetime | ||
1158 | for the hash secret) for IPv6 fragments. | ||
1159 | Default: 600 | ||
1160 | |||
1161 | conf/default/*: | 1163 | conf/default/*: |
1162 | Change the interface-specific default settings. | 1164 | Change the interface-specific default settings. |
1163 | 1165 | ||
@@ -1210,6 +1212,18 @@ accept_ra_defrtr - BOOLEAN | |||
1210 | Functional default: enabled if accept_ra is enabled. | 1212 | Functional default: enabled if accept_ra is enabled. |
1211 | disabled if accept_ra is disabled. | 1213 | disabled if accept_ra is disabled. |
1212 | 1214 | ||
1215 | accept_ra_from_local - BOOLEAN | ||
1216 | Accept RA with source-address that is found on local machine | ||
1217 | if the RA is otherwise proper and able to be accepted. | ||
1218 | Default is to NOT accept these as it may be an un-intended | ||
1219 | network loop. | ||
1220 | |||
1221 | Functional default: | ||
1222 | enabled if accept_ra_from_local is enabled | ||
1223 | on a specific interface. | ||
1224 | disabled if accept_ra_from_local is disabled | ||
1225 | on a specific interface. | ||
1226 | |||
1213 | accept_ra_pinfo - BOOLEAN | 1227 | accept_ra_pinfo - BOOLEAN |
1214 | Learn Prefix Information in Router Advertisement. | 1228 | Learn Prefix Information in Router Advertisement. |
1215 | 1229 | ||
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt index 38112d512f47..a6d7cb91069e 100644 --- a/Documentation/networking/packet_mmap.txt +++ b/Documentation/networking/packet_mmap.txt | |||
@@ -1008,14 +1008,9 @@ hardware timestamps to be used. Note: you may need to enable the generation | |||
1008 | of hardware timestamps with SIOCSHWTSTAMP (see related information from | 1008 | of hardware timestamps with SIOCSHWTSTAMP (see related information from |
1009 | Documentation/networking/timestamping.txt). | 1009 | Documentation/networking/timestamping.txt). |
1010 | 1010 | ||
1011 | PACKET_TIMESTAMP accepts the same integer bit field as | 1011 | PACKET_TIMESTAMP accepts the same integer bit field as SO_TIMESTAMPING: |
1012 | SO_TIMESTAMPING. However, only the SOF_TIMESTAMPING_SYS_HARDWARE | 1012 | |
1013 | and SOF_TIMESTAMPING_RAW_HARDWARE values are recognized by | 1013 | int req = SOF_TIMESTAMPING_RAW_HARDWARE; |
1014 | PACKET_TIMESTAMP. SOF_TIMESTAMPING_SYS_HARDWARE takes precedence over | ||
1015 | SOF_TIMESTAMPING_RAW_HARDWARE if both bits are set. | ||
1016 | |||
1017 | int req = 0; | ||
1018 | req |= SOF_TIMESTAMPING_SYS_HARDWARE; | ||
1019 | setsockopt(fd, SOL_PACKET, PACKET_TIMESTAMP, (void *) &req, sizeof(req)) | 1014 | setsockopt(fd, SOL_PACKET, PACKET_TIMESTAMP, (void *) &req, sizeof(req)) |
1020 | 1015 | ||
1021 | For the mmap(2)ed ring buffers, such timestamps are stored in the | 1016 | For the mmap(2)ed ring buffers, such timestamps are stored in the |
@@ -1023,14 +1018,13 @@ tpacket{,2,3}_hdr structure's tp_sec and tp_{n,u}sec members. To determine | |||
1023 | what kind of timestamp has been reported, the tp_status field is binary |'ed | 1018 | what kind of timestamp has been reported, the tp_status field is binary |'ed |
1024 | with the following possible bits ... | 1019 | with the following possible bits ... |
1025 | 1020 | ||
1026 | TP_STATUS_TS_SYS_HARDWARE | ||
1027 | TP_STATUS_TS_RAW_HARDWARE | 1021 | TP_STATUS_TS_RAW_HARDWARE |
1028 | TP_STATUS_TS_SOFTWARE | 1022 | TP_STATUS_TS_SOFTWARE |
1029 | 1023 | ||
1030 | ... that are equivalent to its SOF_TIMESTAMPING_* counterparts. For the | 1024 | ... that are equivalent to its SOF_TIMESTAMPING_* counterparts. For the |
1031 | RX_RING, if none of those 3 are set (i.e. PACKET_TIMESTAMP is not set), | 1025 | RX_RING, if neither is set (i.e. PACKET_TIMESTAMP is not set), then a |
1032 | then this means that a software fallback was invoked *within* PF_PACKET's | 1026 | software fallback was invoked *within* PF_PACKET's processing code (less |
1033 | processing code (less precise). | 1027 | precise). |
1034 | 1028 | ||
1035 | Getting timestamps for the TX_RING works as follows: i) fill the ring frames, | 1029 | Getting timestamps for the TX_RING works as follows: i) fill the ring frames, |
1036 | ii) call sendto() e.g. in blocking mode, iii) wait for status of relevant | 1030 | ii) call sendto() e.g. in blocking mode, iii) wait for status of relevant |
diff --git a/Documentation/networking/phy.txt b/Documentation/networking/phy.txt index 3544c98401fd..e839e7efc835 100644 --- a/Documentation/networking/phy.txt +++ b/Documentation/networking/phy.txt | |||
@@ -272,6 +272,8 @@ Writing a PHY driver | |||
272 | txtsamp: Requests a transmit timestamp at the PHY level for a 'skb' | 272 | txtsamp: Requests a transmit timestamp at the PHY level for a 'skb' |
273 | set_wol: Enable Wake-on-LAN at the PHY level | 273 | set_wol: Enable Wake-on-LAN at the PHY level |
274 | get_wol: Get the Wake-on-LAN status at the PHY level | 274 | get_wol: Get the Wake-on-LAN status at the PHY level |
275 | read_mmd_indirect: Read PHY MMD indirect register | ||
276 | write_mmd_indirect: Write PHY MMD indirect register | ||
275 | 277 | ||
276 | Of these, only config_aneg and read_status are required to be | 278 | Of these, only config_aneg and read_status are required to be |
277 | assigned by the driver code. The rest are optional. Also, it is | 279 | assigned by the driver code. The rest are optional. Also, it is |
@@ -284,7 +286,21 @@ Writing a PHY driver | |||
284 | 286 | ||
285 | Feel free to look at the Marvell, Cicada, and Davicom drivers in | 287 | Feel free to look at the Marvell, Cicada, and Davicom drivers in |
286 | drivers/net/phy/ for examples (the lxt and qsemi drivers have | 288 | drivers/net/phy/ for examples (the lxt and qsemi drivers have |
287 | not been tested as of this writing) | 289 | not been tested as of this writing). |
290 | |||
291 | The PHY's MMD register accesses are handled by the PAL framework | ||
292 | by default, but can be overridden by a specific PHY driver if | ||
293 | required. This could be the case if a PHY was released for | ||
294 | manufacturing before the MMD PHY register definitions were | ||
295 | standardized by the IEEE. Most modern PHYs will be able to use | ||
296 | the generic PAL framework for accessing the PHY's MMD registers. | ||
297 | An example of such usage is for Energy Efficient Ethernet support, | ||
298 | implemented in the PAL. This support uses the PAL to access MMD | ||
299 | registers for EEE query and configuration if the PHY supports | ||
300 | the IEEE standard access mechanisms, or can use the PHY's specific | ||
301 | access interfaces if overridden by the specific PHY driver. See | ||
302 | the Micrel driver in drivers/net/phy/ for an example of how this | ||
303 | can be implemented. | ||
288 | 304 | ||
289 | Board Fixups | 305 | Board Fixups |
290 | 306 | ||
diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index 0e30c7845b2b..0dffc6e37902 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt | |||
@@ -24,6 +24,34 @@ For monitoring and control pktgen creates: | |||
24 | /proc/net/pktgen/ethX | 24 | /proc/net/pktgen/ethX |
25 | 25 | ||
26 | 26 | ||
27 | Tuning NIC for max performance | ||
28 | ============================== | ||
29 | |||
30 | The default NIC setting are (likely) not tuned for pktgen's artificial | ||
31 | overload type of benchmarking, as this could hurt the normal use-case. | ||
32 | |||
33 | Specifically increasing the TX ring buffer in the NIC: | ||
34 | # ethtool -G ethX tx 1024 | ||
35 | |||
36 | A larger TX ring can improve pktgen's performance, while it can hurt | ||
37 | in the general case, 1) because the TX ring buffer might get larger | ||
38 | than the CPUs L1/L2 cache, 2) because it allow more queueing in the | ||
39 | NIC HW layer (which is bad for bufferbloat). | ||
40 | |||
41 | One should be careful to conclude, that packets/descriptors in the HW | ||
42 | TX ring cause delay. Drivers usually delay cleaning up the | ||
43 | ring-buffers (for various performance reasons), thus packets stalling | ||
44 | the TX ring, might just be waiting for cleanup. | ||
45 | |||
46 | This cleanup issues is specifically the case, for the driver ixgbe | ||
47 | (Intel 82599 chip). This driver (ixgbe) combine TX+RX ring cleanups, | ||
48 | and the cleanup interval is affected by the ethtool --coalesce setting | ||
49 | of parameter "rx-usecs". | ||
50 | |||
51 | For ixgbe use e.g "30" resulting in approx 33K interrupts/sec (1/30*10^6): | ||
52 | # ethtool -C ethX rx-usecs 30 | ||
53 | |||
54 | |||
27 | Viewing threads | 55 | Viewing threads |
28 | =============== | 56 | =============== |
29 | /proc/net/pktgen/kpktgend_0 | 57 | /proc/net/pktgen/kpktgend_0 |
diff --git a/Documentation/networking/timestamping.txt b/Documentation/networking/timestamping.txt index bc3554124903..897f942b976b 100644 --- a/Documentation/networking/timestamping.txt +++ b/Documentation/networking/timestamping.txt | |||
@@ -40,7 +40,7 @@ the set bits correspond to data that is available, then the control | |||
40 | message will not be generated: | 40 | message will not be generated: |
41 | 41 | ||
42 | SOF_TIMESTAMPING_SOFTWARE: report systime if available | 42 | SOF_TIMESTAMPING_SOFTWARE: report systime if available |
43 | SOF_TIMESTAMPING_SYS_HARDWARE: report hwtimetrans if available | 43 | SOF_TIMESTAMPING_SYS_HARDWARE: report hwtimetrans if available (deprecated) |
44 | SOF_TIMESTAMPING_RAW_HARDWARE: report hwtimeraw if available | 44 | SOF_TIMESTAMPING_RAW_HARDWARE: report hwtimeraw if available |
45 | 45 | ||
46 | It is worth noting that timestamps may be collected for reasons other | 46 | It is worth noting that timestamps may be collected for reasons other |
@@ -88,13 +88,12 @@ hwtimeraw is the original hardware time stamp. Filled in if | |||
88 | SOF_TIMESTAMPING_RAW_HARDWARE is set. No assumptions about its | 88 | SOF_TIMESTAMPING_RAW_HARDWARE is set. No assumptions about its |
89 | relation to system time should be made. | 89 | relation to system time should be made. |
90 | 90 | ||
91 | hwtimetrans is the hardware time stamp transformed so that it | 91 | hwtimetrans is always zero. This field is deprecated. It used to hold |
92 | corresponds as good as possible to system time. This correlation is | 92 | hw timestamps converted to system time. Instead, expose the hardware |
93 | not perfect; as a consequence, sorting packets received via different | 93 | clock device on the NIC directly as a HW PTP clock source, to allow |
94 | NICs by their hwtimetrans may differ from the order in which they were | 94 | time conversion in userspace and optionally synchronize system time |
95 | received. hwtimetrans may be non-monotonic even for the same NIC. | 95 | with a userspace PTP stack such as linuxptp. For the PTP clock API, |
96 | Filled in if SOF_TIMESTAMPING_SYS_HARDWARE is set. Requires support | 96 | see Documentation/ptp/ptp.txt. |
97 | by the network device and will be empty without that support. | ||
98 | 97 | ||
99 | 98 | ||
100 | SIOCSHWTSTAMP, SIOCGHWTSTAMP: | 99 | SIOCSHWTSTAMP, SIOCGHWTSTAMP: |
@@ -185,7 +184,6 @@ struct skb_shared_hwtstamps { | |||
185 | * since arbitrary point in time | 184 | * since arbitrary point in time |
186 | */ | 185 | */ |
187 | ktime_t hwtstamp; | 186 | ktime_t hwtstamp; |
188 | ktime_t syststamp; /* hwtstamp transformed to system time base */ | ||
189 | }; | 187 | }; |
190 | 188 | ||
191 | Time stamps for outgoing packets are to be generated as follows: | 189 | Time stamps for outgoing packets are to be generated as follows: |
diff --git a/Documentation/networking/timestamping/timestamping.c b/Documentation/networking/timestamping/timestamping.c index 8ba82bfe6a33..5cdfd743447b 100644 --- a/Documentation/networking/timestamping/timestamping.c +++ b/Documentation/networking/timestamping/timestamping.c | |||
@@ -76,7 +76,6 @@ static void usage(const char *error) | |||
76 | " SOF_TIMESTAMPING_RX_HARDWARE - hardware time stamping of incoming packets\n" | 76 | " SOF_TIMESTAMPING_RX_HARDWARE - hardware time stamping of incoming packets\n" |
77 | " SOF_TIMESTAMPING_RX_SOFTWARE - software fallback for incoming packets\n" | 77 | " SOF_TIMESTAMPING_RX_SOFTWARE - software fallback for incoming packets\n" |
78 | " SOF_TIMESTAMPING_SOFTWARE - request reporting of software time stamps\n" | 78 | " SOF_TIMESTAMPING_SOFTWARE - request reporting of software time stamps\n" |
79 | " SOF_TIMESTAMPING_SYS_HARDWARE - request reporting of transformed HW time stamps\n" | ||
80 | " SOF_TIMESTAMPING_RAW_HARDWARE - request reporting of raw HW time stamps\n" | 79 | " SOF_TIMESTAMPING_RAW_HARDWARE - request reporting of raw HW time stamps\n" |
81 | " SIOCGSTAMP - check last socket time stamp\n" | 80 | " SIOCGSTAMP - check last socket time stamp\n" |
82 | " SIOCGSTAMPNS - more accurate socket time stamp\n"); | 81 | " SIOCGSTAMPNS - more accurate socket time stamp\n"); |
@@ -202,9 +201,7 @@ static void printpacket(struct msghdr *msg, int res, | |||
202 | (long)stamp->tv_sec, | 201 | (long)stamp->tv_sec, |
203 | (long)stamp->tv_nsec); | 202 | (long)stamp->tv_nsec); |
204 | stamp++; | 203 | stamp++; |
205 | printf("HW transformed %ld.%09ld ", | 204 | /* skip deprecated HW transformed */ |
206 | (long)stamp->tv_sec, | ||
207 | (long)stamp->tv_nsec); | ||
208 | stamp++; | 205 | stamp++; |
209 | printf("HW raw %ld.%09ld", | 206 | printf("HW raw %ld.%09ld", |
210 | (long)stamp->tv_sec, | 207 | (long)stamp->tv_sec, |
@@ -361,8 +358,6 @@ int main(int argc, char **argv) | |||
361 | so_timestamping_flags |= SOF_TIMESTAMPING_RX_SOFTWARE; | 358 | so_timestamping_flags |= SOF_TIMESTAMPING_RX_SOFTWARE; |
362 | else if (!strcasecmp(argv[i], "SOF_TIMESTAMPING_SOFTWARE")) | 359 | else if (!strcasecmp(argv[i], "SOF_TIMESTAMPING_SOFTWARE")) |
363 | so_timestamping_flags |= SOF_TIMESTAMPING_SOFTWARE; | 360 | so_timestamping_flags |= SOF_TIMESTAMPING_SOFTWARE; |
364 | else if (!strcasecmp(argv[i], "SOF_TIMESTAMPING_SYS_HARDWARE")) | ||
365 | so_timestamping_flags |= SOF_TIMESTAMPING_SYS_HARDWARE; | ||
366 | else if (!strcasecmp(argv[i], "SOF_TIMESTAMPING_RAW_HARDWARE")) | 361 | else if (!strcasecmp(argv[i], "SOF_TIMESTAMPING_RAW_HARDWARE")) |
367 | so_timestamping_flags |= SOF_TIMESTAMPING_RAW_HARDWARE; | 362 | so_timestamping_flags |= SOF_TIMESTAMPING_RAW_HARDWARE; |
368 | else | 363 | else |
diff --git a/Documentation/oops-tracing.txt b/Documentation/oops-tracing.txt index e3155995ddd8..beefb9f82902 100644 --- a/Documentation/oops-tracing.txt +++ b/Documentation/oops-tracing.txt | |||
@@ -268,6 +268,8 @@ characters, each representing a particular tainted value. | |||
268 | 14: 'E' if an unsigned module has been loaded in a kernel supporting | 268 | 14: 'E' if an unsigned module has been loaded in a kernel supporting |
269 | module signature. | 269 | module signature. |
270 | 270 | ||
271 | 15: 'L' if a soft lockup has previously occurred on the system. | ||
272 | |||
271 | The primary reason for the 'Tainted: ' string is to tell kernel | 273 | The primary reason for the 'Tainted: ' string is to tell kernel |
272 | debuggers if this is a clean kernel or if anything unusual has | 274 | debuggers if this is a clean kernel or if anything unusual has |
273 | occurred. Tainting is permanent: even if an offending module is | 275 | occurred. Tainting is permanent: even if an offending module is |
diff --git a/Documentation/phy.txt b/Documentation/phy.txt index ebff6ee52441..c6594af94d25 100644 --- a/Documentation/phy.txt +++ b/Documentation/phy.txt | |||
@@ -53,10 +53,12 @@ unregister the PHY. | |||
53 | The PHY driver should create the PHY in order for other peripheral controllers | 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. | 54 | to make use of it. The PHY framework provides 2 APIs to create the PHY. |
55 | 55 | ||
56 | struct phy *phy_create(struct device *dev, const struct phy_ops *ops, | 56 | struct phy *phy_create(struct device *dev, struct device_node *node, |
57 | struct phy_init_data *init_data); | 57 | const struct phy_ops *ops, |
58 | struct phy *devm_phy_create(struct device *dev, const struct phy_ops *ops, | 58 | struct phy_init_data *init_data); |
59 | struct phy_init_data *init_data); | 59 | struct phy *devm_phy_create(struct device *dev, struct device_node *node, |
60 | const struct phy_ops *ops, | ||
61 | struct phy_init_data *init_data); | ||
60 | 62 | ||
61 | The PHY drivers can use one of the above 2 APIs to create the PHY by passing | 63 | 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. | 64 | the device pointer, phy ops and init_data. |
diff --git a/Documentation/power/opp.txt b/Documentation/power/opp.txt index a9adad828cdc..c6279c2be47c 100644 --- a/Documentation/power/opp.txt +++ b/Documentation/power/opp.txt | |||
@@ -51,9 +51,6 @@ Typical usage of the OPP library is as follows: | |||
51 | SoC framework -> modifies on required cases certain OPPs -> OPP layer | 51 | SoC framework -> modifies on required cases certain OPPs -> OPP layer |
52 | -> queries to search/retrieve information -> | 52 | -> queries to search/retrieve information -> |
53 | 53 | ||
54 | Architectures that provide a SoC framework for OPP should select ARCH_HAS_OPP | ||
55 | to make the OPP layer available. | ||
56 | |||
57 | OPP layer expects each domain to be represented by a unique device pointer. SoC | 54 | OPP layer expects each domain to be represented by a unique device pointer. SoC |
58 | framework registers a set of initial OPPs per device with the OPP layer. This | 55 | framework registers a set of initial OPPs per device with the OPP layer. This |
59 | list is expected to be an optimally small number typically around 5 per device. | 56 | list is expected to be an optimally small number typically around 5 per device. |
diff --git a/Documentation/power/power_supply_class.txt b/Documentation/power/power_supply_class.txt index 89a8816990ff..48cff881cb8a 100644 --- a/Documentation/power/power_supply_class.txt +++ b/Documentation/power/power_supply_class.txt | |||
@@ -118,6 +118,10 @@ relative, time-based measurements. | |||
118 | CONSTANT_CHARGE_CURRENT - constant charge current programmed by charger. | 118 | CONSTANT_CHARGE_CURRENT - constant charge current programmed by charger. |
119 | CONSTANT_CHARGE_CURRENT_MAX - maximum charge current supported by the | 119 | CONSTANT_CHARGE_CURRENT_MAX - maximum charge current supported by the |
120 | power supply object. | 120 | power supply object. |
121 | INPUT_CURRENT_LIMIT - input current limit programmed by charger. Indicates | ||
122 | the current drawn from a charging source. | ||
123 | CHARGE_TERM_CURRENT - Charge termination current used to detect the end of charge | ||
124 | condition. | ||
121 | 125 | ||
122 | CONSTANT_CHARGE_VOLTAGE - constant charge voltage programmed by charger. | 126 | CONSTANT_CHARGE_VOLTAGE - constant charge voltage programmed by charger. |
123 | CONSTANT_CHARGE_VOLTAGE_MAX - maximum charge voltage supported by the | 127 | CONSTANT_CHARGE_VOLTAGE_MAX - maximum charge voltage supported by the |
@@ -140,6 +144,8 @@ TEMP_ALERT_MAX - maximum battery temperature alert. | |||
140 | TEMP_AMBIENT - ambient temperature. | 144 | TEMP_AMBIENT - ambient temperature. |
141 | TEMP_AMBIENT_ALERT_MIN - minimum ambient temperature alert. | 145 | TEMP_AMBIENT_ALERT_MIN - minimum ambient temperature alert. |
142 | TEMP_AMBIENT_ALERT_MAX - maximum ambient temperature alert. | 146 | TEMP_AMBIENT_ALERT_MAX - maximum ambient temperature alert. |
147 | TEMP_MIN - minimum operatable temperature | ||
148 | TEMP_MAX - maximum operatable temperature | ||
143 | 149 | ||
144 | TIME_TO_EMPTY - seconds left for battery to be considered empty (i.e. | 150 | TIME_TO_EMPTY - seconds left for battery to be considered empty (i.e. |
145 | while battery powers a load) | 151 | while battery powers a load) |
diff --git a/Documentation/power/regulator/consumer.txt b/Documentation/power/regulator/consumer.txt index 55c4175d8099..81c0e2b49cd8 100644 --- a/Documentation/power/regulator/consumer.txt +++ b/Documentation/power/regulator/consumer.txt | |||
@@ -180,3 +180,38 @@ int regulator_unregister_notifier(struct regulator *regulator, | |||
180 | 180 | ||
181 | Regulators use the kernel notifier framework to send event to their interested | 181 | Regulators use the kernel notifier framework to send event to their interested |
182 | consumers. | 182 | consumers. |
183 | |||
184 | 7. Regulator Direct Register Access | ||
185 | =================================== | ||
186 | Some kinds of power management hardware or firmware are designed such that | ||
187 | they need to do low-level hardware access to regulators, with no involvement | ||
188 | from the kernel. Examples of such devices are: | ||
189 | |||
190 | - clocksource with a voltage-controlled oscillator and control logic to change | ||
191 | the supply voltage over I2C to achieve a desired output clock rate | ||
192 | - thermal management firmware that can issue an arbitrary I2C transaction to | ||
193 | perform system poweroff during overtemperature conditions | ||
194 | |||
195 | To set up such a device/firmware, various parameters like I2C address of the | ||
196 | regulator, addresses of various regulator registers etc. need to be configured | ||
197 | to it. The regulator framework provides the following helpers for querying | ||
198 | these details. | ||
199 | |||
200 | Bus-specific details, like I2C addresses or transfer rates are handled by the | ||
201 | regmap framework. To get the regulator's regmap (if supported), use :- | ||
202 | |||
203 | struct regmap *regulator_get_regmap(struct regulator *regulator); | ||
204 | |||
205 | To obtain the hardware register offset and bitmask for the regulator's voltage | ||
206 | selector register, use :- | ||
207 | |||
208 | int regulator_get_hardware_vsel_register(struct regulator *regulator, | ||
209 | unsigned *vsel_reg, | ||
210 | unsigned *vsel_mask); | ||
211 | |||
212 | To convert a regulator framework voltage selector code (used by | ||
213 | regulator_list_voltage) to a hardware-specific voltage selector that can be | ||
214 | directly written to the voltage selector register, use :- | ||
215 | |||
216 | int regulator_list_hardware_vsel(struct regulator *regulator, | ||
217 | unsigned selector); | ||
diff --git a/Documentation/powerpc/00-INDEX b/Documentation/powerpc/00-INDEX index 6db73df04278..a68784d0a1ee 100644 --- a/Documentation/powerpc/00-INDEX +++ b/Documentation/powerpc/00-INDEX | |||
@@ -17,8 +17,6 @@ firmware-assisted-dump.txt | |||
17 | - Documentation on the firmware assisted dump mechanism "fadump". | 17 | - Documentation on the firmware assisted dump mechanism "fadump". |
18 | hvcs.txt | 18 | hvcs.txt |
19 | - 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. | ||
22 | mpc52xx.txt | 20 | mpc52xx.txt |
23 | - Linux 2.6.x on MPC52xx family | 21 | - Linux 2.6.x on MPC52xx family |
24 | pmu-ebb.txt | 22 | pmu-ebb.txt |
diff --git a/Documentation/powerpc/kvm_440.txt b/Documentation/powerpc/kvm_440.txt deleted file mode 100644 index c02a003fa03a..000000000000 --- a/Documentation/powerpc/kvm_440.txt +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | Hollis Blanchard <hollisb@us.ibm.com> | ||
2 | 15 Apr 2008 | ||
3 | |||
4 | Various notes on the implementation of KVM for PowerPC 440: | ||
5 | |||
6 | To enforce isolation, host userspace, guest kernel, and guest userspace all | ||
7 | run at user privilege level. Only the host kernel runs in supervisor mode. | ||
8 | Executing privileged instructions in the guest traps into KVM (in the host | ||
9 | kernel), where we decode and emulate them. Through this technique, unmodified | ||
10 | 440 Linux kernels can be run (slowly) as guests. Future performance work will | ||
11 | focus on reducing the overhead and frequency of these traps. | ||
12 | |||
13 | The usual code flow is started from userspace invoking an "run" ioctl, which | ||
14 | causes KVM to switch into guest context. We use IVPR to hijack the host | ||
15 | interrupt vectors while running the guest, which allows us to direct all | ||
16 | interrupts to kvmppc_handle_interrupt(). At this point, we could either | ||
17 | - handle the interrupt completely (e.g. emulate "mtspr SPRG0"), or | ||
18 | - let the host interrupt handler run (e.g. when the decrementer fires), or | ||
19 | - return to host userspace (e.g. when the guest performs device MMIO) | ||
20 | |||
21 | Address spaces: We take advantage of the fact that Linux doesn't use the AS=1 | ||
22 | address space (in host or guest), which gives us virtual address space to use | ||
23 | for guest mappings. While the guest is running, the host kernel remains mapped | ||
24 | in AS=0, but the guest can only use AS=1 mappings. | ||
25 | |||
26 | TLB entries: The TLB entries covering the host linear mapping remain | ||
27 | present while running the guest. This reduces the overhead of lightweight | ||
28 | exits, which are handled by KVM running in the host kernel. We keep three | ||
29 | copies of the TLB: | ||
30 | - guest TLB: contents of the TLB as the guest sees it | ||
31 | - shadow TLB: the TLB that is actually in hardware while guest is running | ||
32 | - host TLB: to restore TLB state when context switching guest -> host | ||
33 | When a TLB miss occurs because a mapping was not present in the shadow TLB, | ||
34 | but was present in the guest TLB, KVM handles the fault without invoking the | ||
35 | guest. Large guest pages are backed by multiple 4KB shadow pages through this | ||
36 | mechanism. | ||
37 | |||
38 | IO: MMIO and DCR accesses are emulated by userspace. We use virtio for network | ||
39 | and block IO, so those drivers must be enabled in the guest. It's possible | ||
40 | that some qemu device emulation (e.g. e1000 or rtl8139) may also work with | ||
41 | little effort. | ||
diff --git a/Documentation/rapidio/tsi721.txt b/Documentation/rapidio/tsi721.txt index 335f3c6087dc..626052f403bb 100644 --- a/Documentation/rapidio/tsi721.txt +++ b/Documentation/rapidio/tsi721.txt | |||
@@ -20,13 +20,26 @@ II. Known problems | |||
20 | 20 | ||
21 | None. | 21 | None. |
22 | 22 | ||
23 | III. To do | 23 | III. DMA Engine Support |
24 | 24 | ||
25 | Add DMA data transfers (non-messaging). | 25 | Tsi721 mport driver supports DMA data transfers between local system memory and |
26 | Add inbound region (SRIO-to-PCIe) mapping. | 26 | remote RapidIO devices. This functionality is implemented according to SLAVE |
27 | mode API defined by common Linux kernel DMA Engine framework. | ||
28 | |||
29 | Depending on system requirements RapidIO DMA operations can be included/excluded | ||
30 | by setting CONFIG_RAPIDIO_DMA_ENGINE option. Tsi721 miniport driver uses seven | ||
31 | out of eight available BDMA channels to support DMA data transfers. | ||
32 | One BDMA channel is reserved for generation of maintenance read/write requests. | ||
33 | |||
34 | If Tsi721 mport driver have been built with RAPIDIO_DMA_ENGINE support included, | ||
35 | this driver will accept DMA-specific module parameter: | ||
36 | "dma_desc_per_channel" - defines number of hardware buffer descriptors used by | ||
37 | each BDMA channel of Tsi721 (by default - 128). | ||
27 | 38 | ||
28 | IV. Version History | 39 | IV. Version History |
29 | 40 | ||
41 | 1.1.0 - DMA operations re-worked to support data scatter/gather lists larger | ||
42 | than hardware buffer descriptors ring. | ||
30 | 1.0.0 - Initial driver release. | 43 | 1.0.0 - Initial driver release. |
31 | 44 | ||
32 | V. License | 45 | V. License |
diff --git a/Documentation/scsi/ncr53c8xx.txt b/Documentation/scsi/ncr53c8xx.txt index cda5f8fa2c66..1d508dcbf859 100644 --- a/Documentation/scsi/ncr53c8xx.txt +++ b/Documentation/scsi/ncr53c8xx.txt | |||
@@ -1095,7 +1095,7 @@ SCSI_NCR_SETUP_FORCE_SYNC_NEGO (default: not defined) | |||
1095 | SCSI_NCR_SETUP_MASTER_PARITY (default: defined) | 1095 | SCSI_NCR_SETUP_MASTER_PARITY (default: defined) |
1096 | If defined, master parity checking is enabled. | 1096 | If defined, master parity checking is enabled. |
1097 | 1097 | ||
1098 | SCSI_NCR_SETUP_MASTER_PARITY (default: defined) | 1098 | SCSI_NCR_SETUP_SCSI_PARITY (default: defined) |
1099 | If defined, SCSI parity checking is enabled. | 1099 | If defined, SCSI parity checking is enabled. |
1100 | 1100 | ||
1101 | SCSI_NCR_PROFILE_SUPPORT (default: not defined) | 1101 | SCSI_NCR_PROFILE_SUPPORT (default: not defined) |
diff --git a/Documentation/scsi/tmscsim.txt b/Documentation/scsi/tmscsim.txt index 3303d218b32e..0810132772a8 100644 --- a/Documentation/scsi/tmscsim.txt +++ b/Documentation/scsi/tmscsim.txt | |||
@@ -317,8 +317,6 @@ Each of the parameters is a number, containing the described information: | |||
317 | 4 0x10 16 Immediate return on BIOS seek command. (Not used) | 317 | 4 0x10 16 Immediate return on BIOS seek command. (Not used) |
318 | (*)5 0x20 32 Check for LUNs >= 1. | 318 | (*)5 0x20 32 Check for LUNs >= 1. |
319 | 319 | ||
320 | The default for LUN Check depends on CONFIG_SCSI_MULTI_LUN. | ||
321 | |||
322 | * TaggedCmnds is a number indicating the maximum number of Tagged Commands. | 320 | * TaggedCmnds is a number indicating the maximum number of Tagged Commands. |
323 | It is the binary logarithm - 1 of the actual number. Max is 4 (32). | 321 | It is the binary logarithm - 1 of the actual number. Max is 4 (32). |
324 | Value Number of Tagged Commands | 322 | Value Number of Tagged Commands |
diff --git a/Documentation/security/LSM.txt b/Documentation/security/LSM.txt index c335a763a2ed..3db7e671c440 100644 --- a/Documentation/security/LSM.txt +++ b/Documentation/security/LSM.txt | |||
@@ -22,7 +22,7 @@ system, building their checks on top of the defined capability hooks. | |||
22 | For more details on capabilities, see capabilities(7) in the Linux | 22 | For more details on capabilities, see capabilities(7) in the Linux |
23 | man-pages project. | 23 | man-pages project. |
24 | 24 | ||
25 | Based on http://kerneltrap.org/Linux/Documenting_Security_Module_Intent, | 25 | Based on https://lkml.org/lkml/2007/10/26/215, |
26 | a new LSM is accepted into the kernel when its intent (a description of | 26 | a new LSM is accepted into the kernel when its intent (a description of |
27 | what it tries to protect against and in what cases one would expect to | 27 | what it tries to protect against and in what cases one would expect to |
28 | use it) has been appropriately documented in Documentation/security/. | 28 | use it) has been appropriately documented in Documentation/security/. |
diff --git a/Documentation/security/keys.txt b/Documentation/security/keys.txt index a4c33f1a7c6d..8727c194ca16 100644 --- a/Documentation/security/keys.txt +++ b/Documentation/security/keys.txt | |||
@@ -1150,20 +1150,24 @@ The structure has a number of fields, some of which are mandatory: | |||
1150 | const void *data; | 1150 | const void *data; |
1151 | size_t datalen; | 1151 | size_t datalen; |
1152 | size_t quotalen; | 1152 | size_t quotalen; |
1153 | time_t expiry; | ||
1153 | }; | 1154 | }; |
1154 | 1155 | ||
1155 | Before calling the method, the caller will fill in data and datalen with | 1156 | Before calling the method, the caller will fill in data and datalen with |
1156 | the payload blob parameters; quotalen will be filled in with the default | 1157 | the payload blob parameters; quotalen will be filled in with the default |
1157 | quota size from the key type and the rest will be cleared. | 1158 | quota size from the key type; expiry will be set to TIME_T_MAX and the |
1159 | rest will be cleared. | ||
1158 | 1160 | ||
1159 | If a description can be proposed from the payload contents, that should be | 1161 | If a description can be proposed from the payload contents, that should be |
1160 | attached as a string to the description field. This will be used for the | 1162 | attached as a string to the description field. This will be used for the |
1161 | key description if the caller of add_key() passes NULL or "". | 1163 | key description if the caller of add_key() passes NULL or "". |
1162 | 1164 | ||
1163 | The method can attach anything it likes to type_data[] and payload. These | 1165 | The method can attach anything it likes to type_data[] and payload. These |
1164 | are merely passed along to the instantiate() or update() operations. | 1166 | are merely passed along to the instantiate() or update() operations. If |
1167 | set, the expiry time will be applied to the key if it is instantiated from | ||
1168 | this data. | ||
1165 | 1169 | ||
1166 | The method should return 0 if success ful or a negative error code | 1170 | The method should return 0 if successful or a negative error code |
1167 | otherwise. | 1171 | otherwise. |
1168 | 1172 | ||
1169 | 1173 | ||
@@ -1172,7 +1176,9 @@ The structure has a number of fields, some of which are mandatory: | |||
1172 | This method is only required if the preparse() method is provided, | 1176 | This method is only required if the preparse() method is provided, |
1173 | otherwise it is unused. It cleans up anything attached to the | 1177 | otherwise it is unused. It cleans up anything attached to the |
1174 | description, type_data and payload fields of the key_preparsed_payload | 1178 | description, type_data and payload fields of the key_preparsed_payload |
1175 | struct as filled in by the preparse() method. | 1179 | struct as filled in by the preparse() method. It will always be called |
1180 | after preparse() returns successfully, even if instantiate() or update() | ||
1181 | succeed. | ||
1176 | 1182 | ||
1177 | 1183 | ||
1178 | (*) int (*instantiate)(struct key *key, struct key_preparsed_payload *prep); | 1184 | (*) int (*instantiate)(struct key *key, struct key_preparsed_payload *prep); |
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 7ccf933bfbe0..48148d6d9307 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -2026,8 +2026,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
2026 | ------------------- | 2026 | ------------------- |
2027 | 2027 | ||
2028 | Module for sound cards based on the Asus AV66/AV100/AV200 chips, | 2028 | Module for sound cards based on the Asus AV66/AV100/AV200 chips, |
2029 | i.e., Xonar D1, DX, D2, D2X, DS, Essence ST (Deluxe), Essence STX, | 2029 | i.e., Xonar D1, DX, D2, D2X, DS, DSX, Essence ST (Deluxe), |
2030 | HDAV1.3 (Deluxe), and HDAV1.3 Slim. | 2030 | Essence STX (II), HDAV1.3 (Deluxe), and HDAV1.3 Slim. |
2031 | 2031 | ||
2032 | This module supports autoprobe and multiple cards. | 2032 | This module supports autoprobe and multiple cards. |
2033 | 2033 | ||
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index d1ab5e17eb13..a5e754714344 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -284,6 +284,11 @@ STAC92HD83* | |||
284 | hp-zephyr HP Zephyr | 284 | hp-zephyr HP Zephyr |
285 | hp-led HP with broken BIOS for mute LED | 285 | hp-led HP with broken BIOS for mute LED |
286 | hp-inv-led HP with broken BIOS for inverted mute LED | 286 | hp-inv-led HP with broken BIOS for inverted mute LED |
287 | hp-mic-led HP with mic-mute LED | ||
288 | headset-jack Dell Latitude with a 4-pin headset jack | ||
289 | hp-envy-bass Pin fixup for HP Envy bass speaker (NID 0x0f) | ||
290 | hp-envy-ts-bass Pin fixup for HP Envy TS bass speaker (NID 0x10) | ||
291 | hp-bnb13-eq Hardware equalizer setup for HP laptops | ||
287 | auto BIOS setup (default) | 292 | auto BIOS setup (default) |
288 | 293 | ||
289 | STAC92HD95 | 294 | STAC92HD95 |
diff --git a/Documentation/stable_kernel_rules.txt b/Documentation/stable_kernel_rules.txt index cbc2f03056bd..aee73e78c7d4 100644 --- a/Documentation/stable_kernel_rules.txt +++ b/Documentation/stable_kernel_rules.txt | |||
@@ -29,6 +29,9 @@ Rules on what kind of patches are accepted, and which ones are not, into the | |||
29 | 29 | ||
30 | Procedure for submitting patches to the -stable tree: | 30 | Procedure for submitting patches to the -stable tree: |
31 | 31 | ||
32 | - If the patch covers files in net/ or drivers/net please follow netdev stable | ||
33 | submission guidelines as described in | ||
34 | Documentation/networking/netdev-FAQ.txt | ||
32 | - Send the patch, after verifying that it follows the above rules, to | 35 | - Send the patch, after verifying that it follows the above rules, to |
33 | stable@vger.kernel.org. You must note the upstream commit ID in the | 36 | stable@vger.kernel.org. You must note the upstream commit ID in the |
34 | changelog of your submission, as well as the kernel version you wish | 37 | changelog of your submission, as well as the kernel version you wish |
diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index c14374e71775..f79eb9666379 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt | |||
@@ -826,6 +826,7 @@ can be ORed together: | |||
826 | 4096 - An out-of-tree module has been loaded. | 826 | 4096 - An out-of-tree module has been loaded. |
827 | 8192 - An unsigned module has been loaded in a kernel supporting module | 827 | 8192 - An unsigned module has been loaded in a kernel supporting module |
828 | signature. | 828 | signature. |
829 | 16384 - A soft lockup has previously occurred on the system. | ||
829 | 830 | ||
830 | ============================================================== | 831 | ============================================================== |
831 | 832 | ||
diff --git a/Documentation/timers/00-INDEX b/Documentation/timers/00-INDEX index 6d042dc1cce0..ee212a27772f 100644 --- a/Documentation/timers/00-INDEX +++ b/Documentation/timers/00-INDEX | |||
@@ -12,6 +12,8 @@ Makefile | |||
12 | - Build and link hpet_example | 12 | - Build and link hpet_example |
13 | NO_HZ.txt | 13 | NO_HZ.txt |
14 | - Summary of the different methods for the scheduler clock-interrupts management. | 14 | - Summary of the different methods for the scheduler clock-interrupts management. |
15 | timekeeping.txt | ||
16 | - Clock sources, clock events, sched_clock() and delay timer notes | ||
15 | timers-howto.txt | 17 | timers-howto.txt |
16 | - how to insert delays in the kernel the right (tm) way. | 18 | - how to insert delays in the kernel the right (tm) way. |
17 | timer_stats.txt | 19 | timer_stats.txt |
diff --git a/Documentation/timers/timekeeping.txt b/Documentation/timers/timekeeping.txt new file mode 100644 index 000000000000..f3a8cf28f802 --- /dev/null +++ b/Documentation/timers/timekeeping.txt | |||
@@ -0,0 +1,179 @@ | |||
1 | Clock sources, Clock events, sched_clock() and delay timers | ||
2 | ----------------------------------------------------------- | ||
3 | |||
4 | This document tries to briefly explain some basic kernel timekeeping | ||
5 | abstractions. It partly pertains to the drivers usually found in | ||
6 | drivers/clocksource in the kernel tree, but the code may be spread out | ||
7 | across the kernel. | ||
8 | |||
9 | If you grep through the kernel source you will find a number of architecture- | ||
10 | specific implementations of clock sources, clockevents and several likewise | ||
11 | architecture-specific overrides of the sched_clock() function and some | ||
12 | delay timers. | ||
13 | |||
14 | To provide timekeeping for your platform, the clock source provides | ||
15 | the basic timeline, whereas clock events shoot interrupts on certain points | ||
16 | on this timeline, providing facilities such as high-resolution timers. | ||
17 | sched_clock() is used for scheduling and timestamping, and delay timers | ||
18 | provide an accurate delay source using hardware counters. | ||
19 | |||
20 | |||
21 | Clock sources | ||
22 | ------------- | ||
23 | |||
24 | The purpose of the clock source is to provide a timeline for the system that | ||
25 | tells you where you are in time. For example issuing the command 'date' on | ||
26 | a Linux system will eventually read the clock source to determine exactly | ||
27 | what time it is. | ||
28 | |||
29 | Typically the clock source is a monotonic, atomic counter which will provide | ||
30 | n bits which count from 0 to 2^(n-1) and then wraps around to 0 and start over. | ||
31 | It will ideally NEVER stop ticking as long as the system is running. It | ||
32 | may stop during system suspend. | ||
33 | |||
34 | The clock source shall have as high resolution as possible, and the frequency | ||
35 | shall be as stable and correct as possible as compared to a real-world wall | ||
36 | clock. It should not move unpredictably back and forth in time or miss a few | ||
37 | cycles here and there. | ||
38 | |||
39 | It must be immune to the kind of effects that occur in hardware where e.g. | ||
40 | the counter register is read in two phases on the bus lowest 16 bits first | ||
41 | and the higher 16 bits in a second bus cycle with the counter bits | ||
42 | potentially being updated in between leading to the risk of very strange | ||
43 | values from the counter. | ||
44 | |||
45 | When the wall-clock accuracy of the clock source isn't satisfactory, there | ||
46 | are various quirks and layers in the timekeeping code for e.g. synchronizing | ||
47 | the user-visible time to RTC clocks in the system or against networked time | ||
48 | servers using NTP, but all they do basically is update an offset against | ||
49 | the clock source, which provides the fundamental timeline for the system. | ||
50 | These measures does not affect the clock source per se, they only adapt the | ||
51 | system to the shortcomings of it. | ||
52 | |||
53 | The clock source struct shall provide means to translate the provided counter | ||
54 | into a nanosecond value as an unsigned long long (unsigned 64 bit) number. | ||
55 | Since this operation may be invoked very often, doing this in a strict | ||
56 | mathematical sense is not desirable: instead the number is taken as close as | ||
57 | possible to a nanosecond value using only the arithmetic operations | ||
58 | multiply and shift, so in clocksource_cyc2ns() you find: | ||
59 | |||
60 | ns ~= (clocksource * mult) >> shift | ||
61 | |||
62 | You will find a number of helper functions in the clock source code intended | ||
63 | to aid in providing these mult and shift values, such as | ||
64 | clocksource_khz2mult(), clocksource_hz2mult() that help determine the | ||
65 | mult factor from a fixed shift, and clocksource_register_hz() and | ||
66 | clocksource_register_khz() which will help out assigning both shift and mult | ||
67 | factors using the frequency of the clock source as the only input. | ||
68 | |||
69 | For real simple clock sources accessed from a single I/O memory location | ||
70 | there is nowadays even clocksource_mmio_init() which will take a memory | ||
71 | location, bit width, a parameter telling whether the counter in the | ||
72 | register counts up or down, and the timer clock rate, and then conjure all | ||
73 | necessary parameters. | ||
74 | |||
75 | Since a 32-bit counter at say 100 MHz will wrap around to zero after some 43 | ||
76 | seconds, the code handling the clock source will have to compensate for this. | ||
77 | That is the reason why the clock source struct also contains a 'mask' | ||
78 | member telling how many bits of the source are valid. This way the timekeeping | ||
79 | code knows when the counter will wrap around and can insert the necessary | ||
80 | compensation code on both sides of the wrap point so that the system timeline | ||
81 | remains monotonic. | ||
82 | |||
83 | |||
84 | Clock events | ||
85 | ------------ | ||
86 | |||
87 | Clock events are the conceptual reverse of clock sources: they take a | ||
88 | desired time specification value and calculate the values to poke into | ||
89 | hardware timer registers. | ||
90 | |||
91 | Clock events are orthogonal to clock sources. The same hardware | ||
92 | and register range may be used for the clock event, but it is essentially | ||
93 | a different thing. The hardware driving clock events has to be able to | ||
94 | fire interrupts, so as to trigger events on the system timeline. On an SMP | ||
95 | system, it is ideal (and customary) to have one such event driving timer per | ||
96 | CPU core, so that each core can trigger events independently of any other | ||
97 | core. | ||
98 | |||
99 | You will notice that the clock event device code is based on the same basic | ||
100 | idea about translating counters to nanoseconds using mult and shift | ||
101 | arithmetic, and you find the same family of helper functions again for | ||
102 | assigning these values. The clock event driver does not need a 'mask' | ||
103 | attribute however: the system will not try to plan events beyond the time | ||
104 | horizon of the clock event. | ||
105 | |||
106 | |||
107 | sched_clock() | ||
108 | ------------- | ||
109 | |||
110 | In addition to the clock sources and clock events there is a special weak | ||
111 | function in the kernel called sched_clock(). This function shall return the | ||
112 | number of nanoseconds since the system was started. An architecture may or | ||
113 | may not provide an implementation of sched_clock() on its own. If a local | ||
114 | implementation is not provided, the system jiffy counter will be used as | ||
115 | sched_clock(). | ||
116 | |||
117 | As the name suggests, sched_clock() is used for scheduling the system, | ||
118 | determining the absolute timeslice for a certain process in the CFS scheduler | ||
119 | for example. It is also used for printk timestamps when you have selected to | ||
120 | include time information in printk for things like bootcharts. | ||
121 | |||
122 | Compared to clock sources, sched_clock() has to be very fast: it is called | ||
123 | much more often, especially by the scheduler. If you have to do trade-offs | ||
124 | between accuracy compared to the clock source, you may sacrifice accuracy | ||
125 | for speed in sched_clock(). It however requires some of the same basic | ||
126 | characteristics as the clock source, i.e. it should be monotonic. | ||
127 | |||
128 | The sched_clock() function may wrap only on unsigned long long boundaries, | ||
129 | i.e. after 64 bits. Since this is a nanosecond value this will mean it wraps | ||
130 | after circa 585 years. (For most practical systems this means "never".) | ||
131 | |||
132 | If an architecture does not provide its own implementation of this function, | ||
133 | it will fall back to using jiffies, making its maximum resolution 1/HZ of the | ||
134 | jiffy frequency for the architecture. This will affect scheduling accuracy | ||
135 | and will likely show up in system benchmarks. | ||
136 | |||
137 | The clock driving sched_clock() may stop or reset to zero during system | ||
138 | suspend/sleep. This does not matter to the function it serves of scheduling | ||
139 | events on the system. However it may result in interesting timestamps in | ||
140 | printk(). | ||
141 | |||
142 | The sched_clock() function should be callable in any context, IRQ- and | ||
143 | NMI-safe and return a sane value in any context. | ||
144 | |||
145 | Some architectures may have a limited set of time sources and lack a nice | ||
146 | counter to derive a 64-bit nanosecond value, so for example on the ARM | ||
147 | architecture, special helper functions have been created to provide a | ||
148 | sched_clock() nanosecond base from a 16- or 32-bit counter. Sometimes the | ||
149 | same counter that is also used as clock source is used for this purpose. | ||
150 | |||
151 | On SMP systems, it is crucial for performance that sched_clock() can be called | ||
152 | independently on each CPU without any synchronization performance hits. | ||
153 | Some hardware (such as the x86 TSC) will cause the sched_clock() function to | ||
154 | drift between the CPUs on the system. The kernel can work around this by | ||
155 | enabling the CONFIG_HAVE_UNSTABLE_SCHED_CLOCK option. This is another aspect | ||
156 | that makes sched_clock() different from the ordinary clock source. | ||
157 | |||
158 | |||
159 | Delay timers (some architectures only) | ||
160 | -------------------------------------- | ||
161 | |||
162 | On systems with variable CPU frequency, the various kernel delay() functions | ||
163 | will sometimes behave strangely. Basically these delays usually use a hard | ||
164 | loop to delay a certain number of jiffy fractions using a "lpj" (loops per | ||
165 | jiffy) value, calibrated on boot. | ||
166 | |||
167 | Let's hope that your system is running on maximum frequency when this value | ||
168 | is calibrated: as an effect when the frequency is geared down to half the | ||
169 | full frequency, any delay() will be twice as long. Usually this does not | ||
170 | hurt, as you're commonly requesting that amount of delay *or more*. But | ||
171 | basically the semantics are quite unpredictable on such systems. | ||
172 | |||
173 | Enter timer-based delays. Using these, a timer read may be used instead of | ||
174 | a hard-coded loop for providing the desired delay. | ||
175 | |||
176 | This is done by declaring a struct delay_timer and assigning the appropriate | ||
177 | function pointers and rate settings for this delay timer. | ||
178 | |||
179 | This is available on some architectures like OpenRISC or ARM. | ||
diff --git a/Documentation/trace/ftrace-design.txt b/Documentation/trace/ftrace-design.txt index 3f669b9e8852..dd5f916b351d 100644 --- a/Documentation/trace/ftrace-design.txt +++ b/Documentation/trace/ftrace-design.txt | |||
@@ -102,30 +102,6 @@ extern void mcount(void); | |||
102 | EXPORT_SYMBOL(mcount); | 102 | EXPORT_SYMBOL(mcount); |
103 | 103 | ||
104 | 104 | ||
105 | HAVE_FUNCTION_TRACE_MCOUNT_TEST | ||
106 | ------------------------------- | ||
107 | |||
108 | This is an optional optimization for the normal case when tracing is turned off | ||
109 | in the system. If you do not enable this Kconfig option, the common ftrace | ||
110 | code will take care of doing the checking for you. | ||
111 | |||
112 | To support this feature, you only need to check the function_trace_stop | ||
113 | variable in the mcount function. If it is non-zero, there is no tracing to be | ||
114 | done at all, so you can return. | ||
115 | |||
116 | This additional pseudo code would simply be: | ||
117 | void mcount(void) | ||
118 | { | ||
119 | /* save any bare state needed in order to do initial checking */ | ||
120 | |||
121 | + if (function_trace_stop) | ||
122 | + return; | ||
123 | |||
124 | extern void (*ftrace_trace_function)(unsigned long, unsigned long); | ||
125 | if (ftrace_trace_function != ftrace_stub) | ||
126 | ... | ||
127 | |||
128 | |||
129 | HAVE_FUNCTION_GRAPH_TRACER | 105 | HAVE_FUNCTION_GRAPH_TRACER |
130 | -------------------------- | 106 | -------------------------- |
131 | 107 | ||
@@ -328,8 +304,6 @@ void mcount(void) | |||
328 | 304 | ||
329 | void ftrace_caller(void) | 305 | void ftrace_caller(void) |
330 | { | 306 | { |
331 | /* implement HAVE_FUNCTION_TRACE_MCOUNT_TEST if you desire */ | ||
332 | |||
333 | /* save all state needed by the ABI (see paragraph above) */ | 307 | /* save all state needed by the ABI (see paragraph above) */ |
334 | 308 | ||
335 | unsigned long frompc = ...; | 309 | unsigned long frompc = ...; |
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt index 2479b2a0c77c..4da42616939f 100644 --- a/Documentation/trace/ftrace.txt +++ b/Documentation/trace/ftrace.txt | |||
@@ -1515,7 +1515,7 @@ Doing the same with chrt -r 5 and function-trace set. | |||
1515 | <idle>-0 3d.h4 1us+: 0:120:R + [003] 2448: 94:R sleep | 1515 | <idle>-0 3d.h4 1us+: 0:120:R + [003] 2448: 94:R sleep |
1516 | <idle>-0 3d.h4 2us : ttwu_do_activate.constprop.87 <-try_to_wake_up | 1516 | <idle>-0 3d.h4 2us : ttwu_do_activate.constprop.87 <-try_to_wake_up |
1517 | <idle>-0 3d.h3 3us : check_preempt_curr <-ttwu_do_wakeup | 1517 | <idle>-0 3d.h3 3us : check_preempt_curr <-ttwu_do_wakeup |
1518 | <idle>-0 3d.h3 3us : resched_task <-check_preempt_curr | 1518 | <idle>-0 3d.h3 3us : resched_curr <-check_preempt_curr |
1519 | <idle>-0 3dNh3 4us : task_woken_rt <-ttwu_do_wakeup | 1519 | <idle>-0 3dNh3 4us : task_woken_rt <-ttwu_do_wakeup |
1520 | <idle>-0 3dNh3 4us : _raw_spin_unlock <-try_to_wake_up | 1520 | <idle>-0 3dNh3 4us : _raw_spin_unlock <-try_to_wake_up |
1521 | <idle>-0 3dNh3 4us : sub_preempt_count <-_raw_spin_unlock | 1521 | <idle>-0 3dNh3 4us : sub_preempt_count <-_raw_spin_unlock |
diff --git a/Documentation/trace/postprocess/trace-vmscan-postprocess.pl b/Documentation/trace/postprocess/trace-vmscan-postprocess.pl index 78c9a7b2b58f..8f961ef2b457 100644 --- a/Documentation/trace/postprocess/trace-vmscan-postprocess.pl +++ b/Documentation/trace/postprocess/trace-vmscan-postprocess.pl | |||
@@ -47,6 +47,10 @@ use constant HIGH_KSWAPD_REWAKEUP => 21; | |||
47 | use constant HIGH_NR_SCANNED => 22; | 47 | use constant HIGH_NR_SCANNED => 22; |
48 | use constant HIGH_NR_TAKEN => 23; | 48 | use constant HIGH_NR_TAKEN => 23; |
49 | use constant HIGH_NR_RECLAIMED => 24; | 49 | use constant HIGH_NR_RECLAIMED => 24; |
50 | use constant HIGH_NR_FILE_SCANNED => 25; | ||
51 | use constant HIGH_NR_ANON_SCANNED => 26; | ||
52 | use constant HIGH_NR_FILE_RECLAIMED => 27; | ||
53 | use constant HIGH_NR_ANON_RECLAIMED => 28; | ||
50 | 54 | ||
51 | my %perprocesspid; | 55 | my %perprocesspid; |
52 | my %perprocess; | 56 | my %perprocess; |
@@ -56,14 +60,18 @@ my $opt_read_procstat; | |||
56 | 60 | ||
57 | my $total_wakeup_kswapd; | 61 | my $total_wakeup_kswapd; |
58 | my ($total_direct_reclaim, $total_direct_nr_scanned); | 62 | my ($total_direct_reclaim, $total_direct_nr_scanned); |
63 | my ($total_direct_nr_file_scanned, $total_direct_nr_anon_scanned); | ||
59 | my ($total_direct_latency, $total_kswapd_latency); | 64 | my ($total_direct_latency, $total_kswapd_latency); |
60 | my ($total_direct_nr_reclaimed); | 65 | my ($total_direct_nr_reclaimed); |
66 | my ($total_direct_nr_file_reclaimed, $total_direct_nr_anon_reclaimed); | ||
61 | my ($total_direct_writepage_file_sync, $total_direct_writepage_file_async); | 67 | my ($total_direct_writepage_file_sync, $total_direct_writepage_file_async); |
62 | my ($total_direct_writepage_anon_sync, $total_direct_writepage_anon_async); | 68 | my ($total_direct_writepage_anon_sync, $total_direct_writepage_anon_async); |
63 | my ($total_kswapd_nr_scanned, $total_kswapd_wake); | 69 | my ($total_kswapd_nr_scanned, $total_kswapd_wake); |
70 | my ($total_kswapd_nr_file_scanned, $total_kswapd_nr_anon_scanned); | ||
64 | my ($total_kswapd_writepage_file_sync, $total_kswapd_writepage_file_async); | 71 | my ($total_kswapd_writepage_file_sync, $total_kswapd_writepage_file_async); |
65 | my ($total_kswapd_writepage_anon_sync, $total_kswapd_writepage_anon_async); | 72 | my ($total_kswapd_writepage_anon_sync, $total_kswapd_writepage_anon_async); |
66 | my ($total_kswapd_nr_reclaimed); | 73 | my ($total_kswapd_nr_reclaimed); |
74 | my ($total_kswapd_nr_file_reclaimed, $total_kswapd_nr_anon_reclaimed); | ||
67 | 75 | ||
68 | # Catch sigint and exit on request | 76 | # Catch sigint and exit on request |
69 | my $sigint_report = 0; | 77 | my $sigint_report = 0; |
@@ -374,6 +382,7 @@ EVENT_PROCESS: | |||
374 | } | 382 | } |
375 | my $isolate_mode = $1; | 383 | my $isolate_mode = $1; |
376 | my $nr_scanned = $4; | 384 | my $nr_scanned = $4; |
385 | my $file = $6; | ||
377 | 386 | ||
378 | # To closer match vmstat scanning statistics, only count isolate_both | 387 | # To closer match vmstat scanning statistics, only count isolate_both |
379 | # and isolate_inactive as scanning. isolate_active is rotation | 388 | # and isolate_inactive as scanning. isolate_active is rotation |
@@ -382,6 +391,11 @@ EVENT_PROCESS: | |||
382 | # isolate_both == 3 | 391 | # isolate_both == 3 |
383 | if ($isolate_mode != 2) { | 392 | if ($isolate_mode != 2) { |
384 | $perprocesspid{$process_pid}->{HIGH_NR_SCANNED} += $nr_scanned; | 393 | $perprocesspid{$process_pid}->{HIGH_NR_SCANNED} += $nr_scanned; |
394 | if ($file == 1) { | ||
395 | $perprocesspid{$process_pid}->{HIGH_NR_FILE_SCANNED} += $nr_scanned; | ||
396 | } else { | ||
397 | $perprocesspid{$process_pid}->{HIGH_NR_ANON_SCANNED} += $nr_scanned; | ||
398 | } | ||
385 | } | 399 | } |
386 | } elsif ($tracepoint eq "mm_vmscan_lru_shrink_inactive") { | 400 | } elsif ($tracepoint eq "mm_vmscan_lru_shrink_inactive") { |
387 | $details = $6; | 401 | $details = $6; |
@@ -391,8 +405,19 @@ EVENT_PROCESS: | |||
391 | print " $regex_lru_shrink_inactive/o\n"; | 405 | print " $regex_lru_shrink_inactive/o\n"; |
392 | next; | 406 | next; |
393 | } | 407 | } |
408 | |||
394 | my $nr_reclaimed = $4; | 409 | my $nr_reclaimed = $4; |
410 | my $flags = $6; | ||
411 | my $file = 0; | ||
412 | if ($flags =~ /RECLAIM_WB_FILE/) { | ||
413 | $file = 1; | ||
414 | } | ||
395 | $perprocesspid{$process_pid}->{HIGH_NR_RECLAIMED} += $nr_reclaimed; | 415 | $perprocesspid{$process_pid}->{HIGH_NR_RECLAIMED} += $nr_reclaimed; |
416 | if ($file) { | ||
417 | $perprocesspid{$process_pid}->{HIGH_NR_FILE_RECLAIMED} += $nr_reclaimed; | ||
418 | } else { | ||
419 | $perprocesspid{$process_pid}->{HIGH_NR_ANON_RECLAIMED} += $nr_reclaimed; | ||
420 | } | ||
396 | } elsif ($tracepoint eq "mm_vmscan_writepage") { | 421 | } elsif ($tracepoint eq "mm_vmscan_writepage") { |
397 | $details = $6; | 422 | $details = $6; |
398 | if ($details !~ /$regex_writepage/o) { | 423 | if ($details !~ /$regex_writepage/o) { |
@@ -493,7 +518,11 @@ sub dump_stats { | |||
493 | $total_direct_reclaim += $stats{$process_pid}->{MM_VMSCAN_DIRECT_RECLAIM_BEGIN}; | 518 | $total_direct_reclaim += $stats{$process_pid}->{MM_VMSCAN_DIRECT_RECLAIM_BEGIN}; |
494 | $total_wakeup_kswapd += $stats{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}; | 519 | $total_wakeup_kswapd += $stats{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}; |
495 | $total_direct_nr_scanned += $stats{$process_pid}->{HIGH_NR_SCANNED}; | 520 | $total_direct_nr_scanned += $stats{$process_pid}->{HIGH_NR_SCANNED}; |
521 | $total_direct_nr_file_scanned += $stats{$process_pid}->{HIGH_NR_FILE_SCANNED}; | ||
522 | $total_direct_nr_anon_scanned += $stats{$process_pid}->{HIGH_NR_ANON_SCANNED}; | ||
496 | $total_direct_nr_reclaimed += $stats{$process_pid}->{HIGH_NR_RECLAIMED}; | 523 | $total_direct_nr_reclaimed += $stats{$process_pid}->{HIGH_NR_RECLAIMED}; |
524 | $total_direct_nr_file_reclaimed += $stats{$process_pid}->{HIGH_NR_FILE_RECLAIMED}; | ||
525 | $total_direct_nr_anon_reclaimed += $stats{$process_pid}->{HIGH_NR_ANON_RECLAIMED}; | ||
497 | $total_direct_writepage_file_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC}; | 526 | $total_direct_writepage_file_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC}; |
498 | $total_direct_writepage_anon_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}; | 527 | $total_direct_writepage_anon_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}; |
499 | $total_direct_writepage_file_async += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC}; | 528 | $total_direct_writepage_file_async += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC}; |
@@ -513,7 +542,11 @@ sub dump_stats { | |||
513 | $stats{$process_pid}->{MM_VMSCAN_DIRECT_RECLAIM_BEGIN}, | 542 | $stats{$process_pid}->{MM_VMSCAN_DIRECT_RECLAIM_BEGIN}, |
514 | $stats{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}, | 543 | $stats{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}, |
515 | $stats{$process_pid}->{HIGH_NR_SCANNED}, | 544 | $stats{$process_pid}->{HIGH_NR_SCANNED}, |
545 | $stats{$process_pid}->{HIGH_NR_FILE_SCANNED}, | ||
546 | $stats{$process_pid}->{HIGH_NR_ANON_SCANNED}, | ||
516 | $stats{$process_pid}->{HIGH_NR_RECLAIMED}, | 547 | $stats{$process_pid}->{HIGH_NR_RECLAIMED}, |
548 | $stats{$process_pid}->{HIGH_NR_FILE_RECLAIMED}, | ||
549 | $stats{$process_pid}->{HIGH_NR_ANON_RECLAIMED}, | ||
517 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}, | 550 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}, |
518 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_ASYNC}, | 551 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_ASYNC}, |
519 | $this_reclaim_delay / 1000); | 552 | $this_reclaim_delay / 1000); |
@@ -552,7 +585,11 @@ sub dump_stats { | |||
552 | 585 | ||
553 | $total_kswapd_wake += $stats{$process_pid}->{MM_VMSCAN_KSWAPD_WAKE}; | 586 | $total_kswapd_wake += $stats{$process_pid}->{MM_VMSCAN_KSWAPD_WAKE}; |
554 | $total_kswapd_nr_scanned += $stats{$process_pid}->{HIGH_NR_SCANNED}; | 587 | $total_kswapd_nr_scanned += $stats{$process_pid}->{HIGH_NR_SCANNED}; |
588 | $total_kswapd_nr_file_scanned += $stats{$process_pid}->{HIGH_NR_FILE_SCANNED}; | ||
589 | $total_kswapd_nr_anon_scanned += $stats{$process_pid}->{HIGH_NR_ANON_SCANNED}; | ||
555 | $total_kswapd_nr_reclaimed += $stats{$process_pid}->{HIGH_NR_RECLAIMED}; | 590 | $total_kswapd_nr_reclaimed += $stats{$process_pid}->{HIGH_NR_RECLAIMED}; |
591 | $total_kswapd_nr_file_reclaimed += $stats{$process_pid}->{HIGH_NR_FILE_RECLAIMED}; | ||
592 | $total_kswapd_nr_anon_reclaimed += $stats{$process_pid}->{HIGH_NR_ANON_RECLAIMED}; | ||
556 | $total_kswapd_writepage_file_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC}; | 593 | $total_kswapd_writepage_file_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC}; |
557 | $total_kswapd_writepage_anon_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}; | 594 | $total_kswapd_writepage_anon_sync += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}; |
558 | $total_kswapd_writepage_file_async += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC}; | 595 | $total_kswapd_writepage_file_async += $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC}; |
@@ -563,7 +600,11 @@ sub dump_stats { | |||
563 | $stats{$process_pid}->{MM_VMSCAN_KSWAPD_WAKE}, | 600 | $stats{$process_pid}->{MM_VMSCAN_KSWAPD_WAKE}, |
564 | $stats{$process_pid}->{HIGH_KSWAPD_REWAKEUP}, | 601 | $stats{$process_pid}->{HIGH_KSWAPD_REWAKEUP}, |
565 | $stats{$process_pid}->{HIGH_NR_SCANNED}, | 602 | $stats{$process_pid}->{HIGH_NR_SCANNED}, |
603 | $stats{$process_pid}->{HIGH_NR_FILE_SCANNED}, | ||
604 | $stats{$process_pid}->{HIGH_NR_ANON_SCANNED}, | ||
566 | $stats{$process_pid}->{HIGH_NR_RECLAIMED}, | 605 | $stats{$process_pid}->{HIGH_NR_RECLAIMED}, |
606 | $stats{$process_pid}->{HIGH_NR_FILE_RECLAIMED}, | ||
607 | $stats{$process_pid}->{HIGH_NR_ANON_RECLAIMED}, | ||
567 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}, | 608 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}, |
568 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_ASYNC}); | 609 | $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC} + $stats{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_ASYNC}); |
569 | 610 | ||
@@ -594,7 +635,11 @@ sub dump_stats { | |||
594 | print "\nSummary\n"; | 635 | print "\nSummary\n"; |
595 | print "Direct reclaims: $total_direct_reclaim\n"; | 636 | print "Direct reclaims: $total_direct_reclaim\n"; |
596 | print "Direct reclaim pages scanned: $total_direct_nr_scanned\n"; | 637 | print "Direct reclaim pages scanned: $total_direct_nr_scanned\n"; |
638 | print "Direct reclaim file pages scanned: $total_direct_nr_file_scanned\n"; | ||
639 | print "Direct reclaim anon pages scanned: $total_direct_nr_anon_scanned\n"; | ||
597 | print "Direct reclaim pages reclaimed: $total_direct_nr_reclaimed\n"; | 640 | print "Direct reclaim pages reclaimed: $total_direct_nr_reclaimed\n"; |
641 | print "Direct reclaim file pages reclaimed: $total_direct_nr_file_reclaimed\n"; | ||
642 | print "Direct reclaim anon pages reclaimed: $total_direct_nr_anon_reclaimed\n"; | ||
598 | print "Direct reclaim write file sync I/O: $total_direct_writepage_file_sync\n"; | 643 | print "Direct reclaim write file sync I/O: $total_direct_writepage_file_sync\n"; |
599 | print "Direct reclaim write anon sync I/O: $total_direct_writepage_anon_sync\n"; | 644 | print "Direct reclaim write anon sync I/O: $total_direct_writepage_anon_sync\n"; |
600 | print "Direct reclaim write file async I/O: $total_direct_writepage_file_async\n"; | 645 | print "Direct reclaim write file async I/O: $total_direct_writepage_file_async\n"; |
@@ -604,7 +649,11 @@ sub dump_stats { | |||
604 | print "\n"; | 649 | print "\n"; |
605 | print "Kswapd wakeups: $total_kswapd_wake\n"; | 650 | print "Kswapd wakeups: $total_kswapd_wake\n"; |
606 | print "Kswapd pages scanned: $total_kswapd_nr_scanned\n"; | 651 | print "Kswapd pages scanned: $total_kswapd_nr_scanned\n"; |
652 | print "Kswapd file pages scanned: $total_kswapd_nr_file_scanned\n"; | ||
653 | print "Kswapd anon pages scanned: $total_kswapd_nr_anon_scanned\n"; | ||
607 | print "Kswapd pages reclaimed: $total_kswapd_nr_reclaimed\n"; | 654 | print "Kswapd pages reclaimed: $total_kswapd_nr_reclaimed\n"; |
655 | print "Kswapd file pages reclaimed: $total_kswapd_nr_file_reclaimed\n"; | ||
656 | print "Kswapd anon pages reclaimed: $total_kswapd_nr_anon_reclaimed\n"; | ||
608 | print "Kswapd reclaim write file sync I/O: $total_kswapd_writepage_file_sync\n"; | 657 | print "Kswapd reclaim write file sync I/O: $total_kswapd_writepage_file_sync\n"; |
609 | print "Kswapd reclaim write anon sync I/O: $total_kswapd_writepage_anon_sync\n"; | 658 | print "Kswapd reclaim write anon sync I/O: $total_kswapd_writepage_anon_sync\n"; |
610 | print "Kswapd reclaim write file async I/O: $total_kswapd_writepage_file_async\n"; | 659 | print "Kswapd reclaim write file async I/O: $total_kswapd_writepage_file_async\n"; |
@@ -629,7 +678,11 @@ sub aggregate_perprocesspid() { | |||
629 | $perprocess{$process}->{MM_VMSCAN_WAKEUP_KSWAPD} += $perprocesspid{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}; | 678 | $perprocess{$process}->{MM_VMSCAN_WAKEUP_KSWAPD} += $perprocesspid{$process_pid}->{MM_VMSCAN_WAKEUP_KSWAPD}; |
630 | $perprocess{$process}->{HIGH_KSWAPD_REWAKEUP} += $perprocesspid{$process_pid}->{HIGH_KSWAPD_REWAKEUP}; | 679 | $perprocess{$process}->{HIGH_KSWAPD_REWAKEUP} += $perprocesspid{$process_pid}->{HIGH_KSWAPD_REWAKEUP}; |
631 | $perprocess{$process}->{HIGH_NR_SCANNED} += $perprocesspid{$process_pid}->{HIGH_NR_SCANNED}; | 680 | $perprocess{$process}->{HIGH_NR_SCANNED} += $perprocesspid{$process_pid}->{HIGH_NR_SCANNED}; |
681 | $perprocess{$process}->{HIGH_NR_FILE_SCANNED} += $perprocesspid{$process_pid}->{HIGH_NR_FILE_SCANNED}; | ||
682 | $perprocess{$process}->{HIGH_NR_ANON_SCANNED} += $perprocesspid{$process_pid}->{HIGH_NR_ANON_SCANNED}; | ||
632 | $perprocess{$process}->{HIGH_NR_RECLAIMED} += $perprocesspid{$process_pid}->{HIGH_NR_RECLAIMED}; | 683 | $perprocess{$process}->{HIGH_NR_RECLAIMED} += $perprocesspid{$process_pid}->{HIGH_NR_RECLAIMED}; |
684 | $perprocess{$process}->{HIGH_NR_FILE_RECLAIMED} += $perprocesspid{$process_pid}->{HIGH_NR_FILE_RECLAIMED}; | ||
685 | $perprocess{$process}->{HIGH_NR_ANON_RECLAIMED} += $perprocesspid{$process_pid}->{HIGH_NR_ANON_RECLAIMED}; | ||
633 | $perprocess{$process}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC} += $perprocesspid{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC}; | 686 | $perprocess{$process}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC} += $perprocesspid{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_SYNC}; |
634 | $perprocess{$process}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC} += $perprocesspid{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}; | 687 | $perprocess{$process}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC} += $perprocesspid{$process_pid}->{MM_VMSCAN_WRITEPAGE_ANON_SYNC}; |
635 | $perprocess{$process}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC} += $perprocesspid{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC}; | 688 | $perprocess{$process}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC} += $perprocesspid{$process_pid}->{MM_VMSCAN_WRITEPAGE_FILE_ASYNC}; |
diff --git a/Documentation/usb/hotplug.txt b/Documentation/usb/hotplug.txt index 6424b130485c..a80b0e9a7a0b 100644 --- a/Documentation/usb/hotplug.txt +++ b/Documentation/usb/hotplug.txt | |||
@@ -105,13 +105,13 @@ macros such as these, and use driver_info to store more information. | |||
105 | A short example, for a driver that supports several specific USB devices | 105 | A short example, for a driver that supports several specific USB devices |
106 | and their quirks, might have a MODULE_DEVICE_TABLE like this: | 106 | and their quirks, might have a MODULE_DEVICE_TABLE like this: |
107 | 107 | ||
108 | static const struct usb_device_id mydriver_id_table = { | 108 | static const struct usb_device_id mydriver_id_table[] = { |
109 | { USB_DEVICE (0x9999, 0xaaaa), driver_info: QUIRK_X }, | 109 | { USB_DEVICE (0x9999, 0xaaaa), driver_info: QUIRK_X }, |
110 | { USB_DEVICE (0xbbbb, 0x8888), driver_info: QUIRK_Y|QUIRK_Z }, | 110 | { USB_DEVICE (0xbbbb, 0x8888), driver_info: QUIRK_Y|QUIRK_Z }, |
111 | ... | 111 | ... |
112 | { } /* end with an all-zeroes entry */ | 112 | { } /* end with an all-zeroes entry */ |
113 | } | 113 | }; |
114 | MODULE_DEVICE_TABLE (usb, mydriver_id_table); | 114 | MODULE_DEVICE_TABLE(usb, mydriver_id_table); |
115 | 115 | ||
116 | Most USB device drivers should pass these tables to the USB subsystem as | 116 | Most USB device drivers should pass these tables to the USB subsystem as |
117 | well as to the module management subsystem. Not all, though: some driver | 117 | well as to the module management subsystem. Not all, though: some driver |
@@ -134,7 +134,7 @@ something like this: | |||
134 | if exposing any operations through usbdevfs: | 134 | if exposing any operations through usbdevfs: |
135 | .ioctl = my_ioctl, | 135 | .ioctl = my_ioctl, |
136 | */ | 136 | */ |
137 | } | 137 | }; |
138 | 138 | ||
139 | When the USB subsystem knows about a driver's device ID table, it's used when | 139 | When the USB subsystem knows about a driver's device ID table, it's used when |
140 | choosing drivers to probe(). The thread doing new device processing checks | 140 | choosing drivers to probe(). The thread doing new device processing checks |
diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt index 1392b61d6ebe..7b90fe034c4b 100644 --- a/Documentation/usb/power-management.txt +++ b/Documentation/usb/power-management.txt | |||
@@ -2,8 +2,27 @@ | |||
2 | 2 | ||
3 | Alan Stern <stern@rowland.harvard.edu> | 3 | Alan Stern <stern@rowland.harvard.edu> |
4 | 4 | ||
5 | October 28, 2010 | 5 | Last-updated: February 2014 |
6 | 6 | ||
7 | |||
8 | Contents: | ||
9 | --------- | ||
10 | * What is Power Management? | ||
11 | * What is Remote Wakeup? | ||
12 | * When is a USB device idle? | ||
13 | * Forms of dynamic PM | ||
14 | * The user interface for dynamic PM | ||
15 | * Changing the default idle-delay time | ||
16 | * Warnings | ||
17 | * The driver interface for Power Management | ||
18 | * The driver interface for autosuspend and autoresume | ||
19 | * Other parts of the driver interface | ||
20 | * Mutual exclusion | ||
21 | * Interaction between dynamic PM and system PM | ||
22 | * xHCI hardware link PM | ||
23 | * USB Port Power Control | ||
24 | * User Interface for Port Power Control | ||
25 | * Suggested Userspace Port Power Policy | ||
7 | 26 | ||
8 | 27 | ||
9 | What is Power Management? | 28 | What is Power Management? |
@@ -516,3 +535,225 @@ relevant attribute files is usb2_hardware_lpm. | |||
516 | driver will enable hardware LPM for the device. You | 535 | driver will enable hardware LPM for the device. You |
517 | can write y/Y/1 or n/N/0 to the file to enable/disable | 536 | can write y/Y/1 or n/N/0 to the file to enable/disable |
518 | USB2 hardware LPM manually. This is for test purpose mainly. | 537 | USB2 hardware LPM manually. This is for test purpose mainly. |
538 | |||
539 | |||
540 | USB Port Power Control | ||
541 | ---------------------- | ||
542 | |||
543 | In addition to suspending endpoint devices and enabling hardware | ||
544 | controlled link power management, the USB subsystem also has the | ||
545 | capability to disable power to ports under some conditions. Power is | ||
546 | controlled through Set/ClearPortFeature(PORT_POWER) requests to a hub. | ||
547 | In the case of a root or platform-internal hub the host controller | ||
548 | driver translates PORT_POWER requests into platform firmware (ACPI) | ||
549 | method calls to set the port power state. For more background see the | ||
550 | Linux Plumbers Conference 2012 slides [1] and video [2]: | ||
551 | |||
552 | Upon receiving a ClearPortFeature(PORT_POWER) request a USB port is | ||
553 | logically off, and may trigger the actual loss of VBUS to the port [3]. | ||
554 | VBUS may be maintained in the case where a hub gangs multiple ports into | ||
555 | a shared power well causing power to remain until all ports in the gang | ||
556 | are turned off. VBUS may also be maintained by hub ports configured for | ||
557 | a charging application. In any event a logically off port will lose | ||
558 | connection with its device, not respond to hotplug events, and not | ||
559 | respond to remote wakeup events*. | ||
560 | |||
561 | WARNING: turning off a port may result in the inability to hot add a device. | ||
562 | Please see "User Interface for Port Power Control" for details. | ||
563 | |||
564 | As far as the effect on the device itself it is similar to what a device | ||
565 | goes through during system suspend, i.e. the power session is lost. Any | ||
566 | USB device or driver that misbehaves with system suspend will be | ||
567 | similarly affected by a port power cycle event. For this reason the | ||
568 | implementation shares the same device recovery path (and honors the same | ||
569 | quirks) as the system resume path for the hub. | ||
570 | |||
571 | [1]: http://dl.dropbox.com/u/96820575/sarah-sharp-lpt-port-power-off2-mini.pdf | ||
572 | [2]: http://linuxplumbers.ubicast.tv/videos/usb-port-power-off-kerneluserspace-api/ | ||
573 | [3]: USB 3.1 Section 10.12 | ||
574 | * wakeup note: if a device is configured to send wakeup events the port | ||
575 | power control implementation will block poweroff attempts on that | ||
576 | port. | ||
577 | |||
578 | |||
579 | User Interface for Port Power Control | ||
580 | ------------------------------------- | ||
581 | |||
582 | The port power control mechanism uses the PM runtime system. Poweroff is | ||
583 | requested by clearing the power/pm_qos_no_power_off flag of the port device | ||
584 | (defaults to 1). If the port is disconnected it will immediately receive a | ||
585 | ClearPortFeature(PORT_POWER) request. Otherwise, it will honor the pm runtime | ||
586 | rules and require the attached child device and all descendants to be suspended. | ||
587 | This mechanism is dependent on the hub advertising port power switching in its | ||
588 | hub descriptor (wHubCharacteristics logical power switching mode field). | ||
589 | |||
590 | Note, some interface devices/drivers do not support autosuspend. Userspace may | ||
591 | need to unbind the interface drivers before the usb_device will suspend. An | ||
592 | unbound interface device is suspended by default. When unbinding, be careful | ||
593 | to unbind interface drivers, not the driver of the parent usb device. Also, | ||
594 | leave hub interface drivers bound. If the driver for the usb device (not | ||
595 | interface) is unbound the kernel is no longer able to resume the device. If a | ||
596 | hub interface driver is unbound, control of its child ports is lost and all | ||
597 | attached child-devices will disconnect. A good rule of thumb is that if the | ||
598 | 'driver/module' link for a device points to /sys/module/usbcore then unbinding | ||
599 | it will interfere with port power control. | ||
600 | |||
601 | Example of the relevant files for port power control. Note, in this example | ||
602 | these files are relative to a usb hub device (prefix). | ||
603 | |||
604 | prefix=/sys/devices/pci0000:00/0000:00:14.0/usb3/3-1 | ||
605 | |||
606 | attached child device + | ||
607 | hub port device + | | ||
608 | hub interface device + | | | ||
609 | v v v | ||
610 | $prefix/3-1:1.0/3-1-port1/device | ||
611 | |||
612 | $prefix/3-1:1.0/3-1-port1/power/pm_qos_no_power_off | ||
613 | $prefix/3-1:1.0/3-1-port1/device/power/control | ||
614 | $prefix/3-1:1.0/3-1-port1/device/3-1.1:<intf0>/driver/unbind | ||
615 | $prefix/3-1:1.0/3-1-port1/device/3-1.1:<intf1>/driver/unbind | ||
616 | ... | ||
617 | $prefix/3-1:1.0/3-1-port1/device/3-1.1:<intfN>/driver/unbind | ||
618 | |||
619 | In addition to these files some ports may have a 'peer' link to a port on | ||
620 | another hub. The expectation is that all superspeed ports have a | ||
621 | hi-speed peer. | ||
622 | |||
623 | $prefix/3-1:1.0/3-1-port1/peer -> ../../../../usb2/2-1/2-1:1.0/2-1-port1 | ||
624 | ../../../../usb2/2-1/2-1:1.0/2-1-port1/peer -> ../../../../usb3/3-1/3-1:1.0/3-1-port1 | ||
625 | |||
626 | Distinct from 'companion ports', or 'ehci/xhci shared switchover ports' | ||
627 | peer ports are simply the hi-speed and superspeed interface pins that | ||
628 | are combined into a single usb3 connector. Peer ports share the same | ||
629 | ancestor XHCI device. | ||
630 | |||
631 | While a superspeed port is powered off a device may downgrade its | ||
632 | connection and attempt to connect to the hi-speed pins. The | ||
633 | implementation takes steps to prevent this: | ||
634 | |||
635 | 1/ Port suspend is sequenced to guarantee that hi-speed ports are powered-off | ||
636 | before their superspeed peer is permitted to power-off. The implication is | ||
637 | that the setting pm_qos_no_power_off to zero on a superspeed port may not cause | ||
638 | the port to power-off until its highspeed peer has gone to its runtime suspend | ||
639 | state. Userspace must take care to order the suspensions if it wants to | ||
640 | guarantee that a superspeed port will power-off. | ||
641 | |||
642 | 2/ Port resume is sequenced to force a superspeed port to power-on prior to its | ||
643 | highspeed peer. | ||
644 | |||
645 | 3/ Port resume always triggers an attached child device to resume. After a | ||
646 | power session is lost the device may have been removed, or need reset. | ||
647 | Resuming the child device when the parent port regains power resolves those | ||
648 | states and clamps the maximum port power cycle frequency at the rate the child | ||
649 | device can suspend (autosuspend-delay) and resume (reset-resume latency). | ||
650 | |||
651 | Sysfs files relevant for port power control: | ||
652 | <hubdev-portX>/power/pm_qos_no_power_off: | ||
653 | This writable flag controls the state of an idle port. | ||
654 | Once all children and descendants have suspended the | ||
655 | port may suspend/poweroff provided that | ||
656 | pm_qos_no_power_off is '0'. If pm_qos_no_power_off is | ||
657 | '1' the port will remain active/powered regardless of | ||
658 | the stats of descendants. Defaults to 1. | ||
659 | |||
660 | <hubdev-portX>/power/runtime_status: | ||
661 | This file reflects whether the port is 'active' (power is on) | ||
662 | or 'suspended' (logically off). There is no indication to | ||
663 | userspace whether VBUS is still supplied. | ||
664 | |||
665 | <hubdev-portX>/connect_type: | ||
666 | An advisory read-only flag to userspace indicating the | ||
667 | location and connection type of the port. It returns | ||
668 | one of four values 'hotplug', 'hardwired', 'not used', | ||
669 | and 'unknown'. All values, besides unknown, are set by | ||
670 | platform firmware. | ||
671 | |||
672 | "hotplug" indicates an externally connectable/visible | ||
673 | port on the platform. Typically userspace would choose | ||
674 | to keep such a port powered to handle new device | ||
675 | connection events. | ||
676 | |||
677 | "hardwired" refers to a port that is not visible but | ||
678 | connectable. Examples are internal ports for USB | ||
679 | bluetooth that can be disconnected via an external | ||
680 | switch or a port with a hardwired USB camera. It is | ||
681 | expected to be safe to allow these ports to suspend | ||
682 | provided pm_qos_no_power_off is coordinated with any | ||
683 | switch that gates connections. Userspace must arrange | ||
684 | for the device to be connected prior to the port | ||
685 | powering off, or to activate the port prior to enabling | ||
686 | connection via a switch. | ||
687 | |||
688 | "not used" refers to an internal port that is expected | ||
689 | to never have a device connected to it. These may be | ||
690 | empty internal ports, or ports that are not physically | ||
691 | exposed on a platform. Considered safe to be | ||
692 | powered-off at all times. | ||
693 | |||
694 | "unknown" means platform firmware does not provide | ||
695 | information for this port. Most commonly refers to | ||
696 | external hub ports which should be considered 'hotplug' | ||
697 | for policy decisions. | ||
698 | |||
699 | NOTE1: since we are relying on the BIOS to get this ACPI | ||
700 | information correct, the USB port descriptions may be | ||
701 | missing or wrong. | ||
702 | |||
703 | NOTE2: Take care in clearing pm_qos_no_power_off. Once | ||
704 | power is off this port will | ||
705 | not respond to new connect events. | ||
706 | |||
707 | Once a child device is attached additional constraints are | ||
708 | applied before the port is allowed to poweroff. | ||
709 | |||
710 | <child>/power/control: | ||
711 | Must be 'auto', and the port will not | ||
712 | power down until <child>/power/runtime_status | ||
713 | reflects the 'suspended' state. Default | ||
714 | value is controlled by child device driver. | ||
715 | |||
716 | <child>/power/persist: | ||
717 | This defaults to '1' for most devices and indicates if | ||
718 | kernel can persist the device's configuration across a | ||
719 | power session loss (suspend / port-power event). When | ||
720 | this value is '0' (quirky devices), port poweroff is | ||
721 | disabled. | ||
722 | |||
723 | <child>/driver/unbind: | ||
724 | Wakeup capable devices will block port poweroff. At | ||
725 | this time the only mechanism to clear the usb-internal | ||
726 | wakeup-capability for an interface device is to unbind | ||
727 | its driver. | ||
728 | |||
729 | Summary of poweroff pre-requisite settings relative to a port device: | ||
730 | |||
731 | echo 0 > power/pm_qos_no_power_off | ||
732 | echo 0 > peer/power/pm_qos_no_power_off # if it exists | ||
733 | echo auto > power/control # this is the default value | ||
734 | echo auto > <child>/power/control | ||
735 | echo 1 > <child>/power/persist # this is the default value | ||
736 | |||
737 | Suggested Userspace Port Power Policy | ||
738 | ------------------------------------- | ||
739 | |||
740 | As noted above userspace needs to be careful and deliberate about what | ||
741 | ports are enabled for poweroff. | ||
742 | |||
743 | The default configuration is that all ports start with | ||
744 | power/pm_qos_no_power_off set to '1' causing ports to always remain | ||
745 | active. | ||
746 | |||
747 | Given confidence in the platform firmware's description of the ports | ||
748 | (ACPI _PLD record for a port populates 'connect_type') userspace can | ||
749 | clear pm_qos_no_power_off for all 'not used' ports. The same can be | ||
750 | done for 'hardwired' ports provided poweroff is coordinated with any | ||
751 | connection switch for the port. | ||
752 | |||
753 | A more aggressive userspace policy is to enable USB port power off for | ||
754 | all ports (set <hubdev-portX>/power/pm_qos_no_power_off to '0') when | ||
755 | some external factor indicates the user has stopped interacting with the | ||
756 | system. For example, a distro may want to enable power off all USB | ||
757 | ports when the screen blanks, and re-power them when the screen becomes | ||
758 | active. Smart phones and tablets may want to power off USB ports when | ||
759 | the user pushes the power button. | ||
diff --git a/Documentation/vfio.txt b/Documentation/vfio.txt index b9ca02370d46..96978eced341 100644 --- a/Documentation/vfio.txt +++ b/Documentation/vfio.txt | |||
@@ -305,7 +305,15 @@ faster, the map/unmap handling has been implemented in real mode which provides | |||
305 | an excellent performance which has limitations such as inability to do | 305 | an excellent performance which has limitations such as inability to do |
306 | locked pages accounting in real time. | 306 | locked pages accounting in real time. |
307 | 307 | ||
308 | So 3 additional ioctls have been added: | 308 | 4) According to sPAPR specification, A Partitionable Endpoint (PE) is an I/O |
309 | subtree that can be treated as a unit for the purposes of partitioning and | ||
310 | error recovery. A PE may be a single or multi-function IOA (IO Adapter), a | ||
311 | function of a multi-function IOA, or multiple IOAs (possibly including switch | ||
312 | and bridge structures above the multiple IOAs). PPC64 guests detect PCI errors | ||
313 | and recover from them via EEH RTAS services, which works on the basis of | ||
314 | additional ioctl commands. | ||
315 | |||
316 | So 4 additional ioctls have been added: | ||
309 | 317 | ||
310 | VFIO_IOMMU_SPAPR_TCE_GET_INFO - returns the size and the start | 318 | VFIO_IOMMU_SPAPR_TCE_GET_INFO - returns the size and the start |
311 | of the DMA window on the PCI bus. | 319 | of the DMA window on the PCI bus. |
@@ -316,9 +324,12 @@ So 3 additional ioctls have been added: | |||
316 | 324 | ||
317 | VFIO_IOMMU_DISABLE - disables the container. | 325 | VFIO_IOMMU_DISABLE - disables the container. |
318 | 326 | ||
327 | VFIO_EEH_PE_OP - provides an API for EEH setup, error detection and recovery. | ||
319 | 328 | ||
320 | The code flow from the example above should be slightly changed: | 329 | The code flow from the example above should be slightly changed: |
321 | 330 | ||
331 | struct vfio_eeh_pe_op pe_op = { .argsz = sizeof(pe_op), .flags = 0 }; | ||
332 | |||
322 | ..... | 333 | ..... |
323 | /* Add the group to the container */ | 334 | /* Add the group to the container */ |
324 | ioctl(group, VFIO_GROUP_SET_CONTAINER, &container); | 335 | ioctl(group, VFIO_GROUP_SET_CONTAINER, &container); |
@@ -342,9 +353,79 @@ The code flow from the example above should be slightly changed: | |||
342 | dma_map.flags = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE; | 353 | dma_map.flags = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE; |
343 | 354 | ||
344 | /* Check here is .iova/.size are within DMA window from spapr_iommu_info */ | 355 | /* Check here is .iova/.size are within DMA window from spapr_iommu_info */ |
345 | |||
346 | ioctl(container, VFIO_IOMMU_MAP_DMA, &dma_map); | 356 | ioctl(container, VFIO_IOMMU_MAP_DMA, &dma_map); |
347 | ..... | 357 | |
358 | /* Get a file descriptor for the device */ | ||
359 | device = ioctl(group, VFIO_GROUP_GET_DEVICE_FD, "0000:06:0d.0"); | ||
360 | |||
361 | .... | ||
362 | |||
363 | /* Gratuitous device reset and go... */ | ||
364 | ioctl(device, VFIO_DEVICE_RESET); | ||
365 | |||
366 | /* Make sure EEH is supported */ | ||
367 | ioctl(container, VFIO_CHECK_EXTENSION, VFIO_EEH); | ||
368 | |||
369 | /* Enable the EEH functionality on the device */ | ||
370 | pe_op.op = VFIO_EEH_PE_ENABLE; | ||
371 | ioctl(container, VFIO_EEH_PE_OP, &pe_op); | ||
372 | |||
373 | /* You're suggested to create additional data struct to represent | ||
374 | * PE, and put child devices belonging to same IOMMU group to the | ||
375 | * PE instance for later reference. | ||
376 | */ | ||
377 | |||
378 | /* Check the PE's state and make sure it's in functional state */ | ||
379 | pe_op.op = VFIO_EEH_PE_GET_STATE; | ||
380 | ioctl(container, VFIO_EEH_PE_OP, &pe_op); | ||
381 | |||
382 | /* Save device state using pci_save_state(). | ||
383 | * EEH should be enabled on the specified device. | ||
384 | */ | ||
385 | |||
386 | .... | ||
387 | |||
388 | /* When 0xFF's returned from reading PCI config space or IO BARs | ||
389 | * of the PCI device. Check the PE's state to see if that has been | ||
390 | * frozen. | ||
391 | */ | ||
392 | ioctl(container, VFIO_EEH_PE_OP, &pe_op); | ||
393 | |||
394 | /* Waiting for pending PCI transactions to be completed and don't | ||
395 | * produce any more PCI traffic from/to the affected PE until | ||
396 | * recovery is finished. | ||
397 | */ | ||
398 | |||
399 | /* Enable IO for the affected PE and collect logs. Usually, the | ||
400 | * standard part of PCI config space, AER registers are dumped | ||
401 | * as logs for further analysis. | ||
402 | */ | ||
403 | pe_op.op = VFIO_EEH_PE_UNFREEZE_IO; | ||
404 | ioctl(container, VFIO_EEH_PE_OP, &pe_op); | ||
405 | |||
406 | /* | ||
407 | * Issue PE reset: hot or fundamental reset. Usually, hot reset | ||
408 | * is enough. However, the firmware of some PCI adapters would | ||
409 | * require fundamental reset. | ||
410 | */ | ||
411 | pe_op.op = VFIO_EEH_PE_RESET_HOT; | ||
412 | ioctl(container, VFIO_EEH_PE_OP, &pe_op); | ||
413 | pe_op.op = VFIO_EEH_PE_RESET_DEACTIVATE; | ||
414 | ioctl(container, VFIO_EEH_PE_OP, &pe_op); | ||
415 | |||
416 | /* Configure the PCI bridges for the affected PE */ | ||
417 | pe_op.op = VFIO_EEH_PE_CONFIGURE; | ||
418 | ioctl(container, VFIO_EEH_PE_OP, &pe_op); | ||
419 | |||
420 | /* Restored state we saved at initialization time. pci_restore_state() | ||
421 | * is good enough as an example. | ||
422 | */ | ||
423 | |||
424 | /* Hopefully, error is recovered successfully. Now, you can resume to | ||
425 | * start PCI traffic to/from the affected PE. | ||
426 | */ | ||
427 | |||
428 | .... | ||
348 | 429 | ||
349 | ------------------------------------------------------------------------------- | 430 | ------------------------------------------------------------------------------- |
350 | 431 | ||
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885 index fc009d0ee7d6..a74eeccfe700 100644 --- a/Documentation/video4linux/CARDLIST.cx23885 +++ b/Documentation/video4linux/CARDLIST.cx23885 | |||
@@ -41,3 +41,5 @@ | |||
41 | 40 -> TurboSight TBS 6981 [6981:8888] | 41 | 40 -> TurboSight TBS 6981 [6981:8888] |
42 | 41 -> TurboSight TBS 6980 [6980:8888] | 42 | 41 -> TurboSight TBS 6980 [6980:8888] |
43 | 42 -> Leadtek Winfast PxPVR2200 [107d:6f21] | 43 | 42 -> Leadtek Winfast PxPVR2200 [107d:6f21] |
44 | 43 -> Hauppauge ImpactVCB-e [0070:7133] | ||
45 | 44 -> DViCO FusionHDTV DVB-T Dual Express2 [18ac:db98] | ||
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index 5a3ddcd340d3..bc3351bb48b4 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -77,7 +77,7 @@ | |||
77 | 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] | 77 | 76 -> KWorld PlusTV 340U or UB435-Q (ATSC) (em2870) [1b80:a340] |
78 | 77 -> EM2874 Leadership ISDBT (em2874) | 78 | 77 -> EM2874 Leadership ISDBT (em2874) |
79 | 78 -> PCTV nanoStick T2 290e (em28174) | 79 | 78 -> PCTV nanoStick T2 290e (em28174) |
80 | 79 -> Terratec Cinergy H5 (em2884) [0ccd:10a2,0ccd:10ad,0ccd:10b6] | 80 | 79 -> Terratec Cinergy H5 (em2884) [eb1a:2885,0ccd:10a2,0ccd:10ad,0ccd:10b6] |
81 | 80 -> PCTV DVB-S2 Stick (460e) (em28174) | 81 | 80 -> PCTV DVB-S2 Stick (460e) (em28174) |
82 | 81 -> Hauppauge WinTV HVR 930C (em2884) [2040:1605] | 82 | 81 -> Hauppauge WinTV HVR 930C (em2884) [2040:1605] |
83 | 82 -> Terratec Cinergy HTC Stick (em2884) [0ccd:00b2] | 83 | 82 -> Terratec Cinergy HTC Stick (em2884) [0ccd:00b2] |
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt index 06cf3ac83631..0f84ce8c9a7b 100644 --- a/Documentation/video4linux/v4l2-controls.txt +++ b/Documentation/video4linux/v4l2-controls.txt | |||
@@ -77,9 +77,9 @@ Basic usage for V4L2 and sub-device drivers | |||
77 | 77 | ||
78 | Where foo->v4l2_dev is of type struct v4l2_device. | 78 | Where foo->v4l2_dev is of type struct v4l2_device. |
79 | 79 | ||
80 | Finally, remove all control functions from your v4l2_ioctl_ops: | 80 | Finally, remove all control functions from your v4l2_ioctl_ops (if any): |
81 | vidioc_queryctrl, vidioc_querymenu, vidioc_g_ctrl, vidioc_s_ctrl, | 81 | vidioc_queryctrl, vidioc_query_ext_ctrl, vidioc_querymenu, vidioc_g_ctrl, |
82 | vidioc_g_ext_ctrls, vidioc_try_ext_ctrls and vidioc_s_ext_ctrls. | 82 | vidioc_s_ctrl, vidioc_g_ext_ctrls, vidioc_try_ext_ctrls and vidioc_s_ext_ctrls. |
83 | Those are now no longer needed. | 83 | Those are now no longer needed. |
84 | 84 | ||
85 | 1.3.2) For sub-device drivers do this: | 85 | 1.3.2) For sub-device drivers do this: |
@@ -258,8 +258,8 @@ The new control value has already been validated, so all you need to do is | |||
258 | to actually update the hardware registers. | 258 | to actually update the hardware registers. |
259 | 259 | ||
260 | You're done! And this is sufficient for most of the drivers we have. No need | 260 | You're done! And this is sufficient for most of the drivers we have. No need |
261 | to do any validation of control values, or implement QUERYCTRL/QUERYMENU. And | 261 | to do any validation of control values, or implement QUERYCTRL, QUERY_EXT_CTRL |
262 | G/S_CTRL as well as G/TRY/S_EXT_CTRLS are automatically supported. | 262 | and QUERYMENU. And G/S_CTRL as well as G/TRY/S_EXT_CTRLS are automatically supported. |
263 | 263 | ||
264 | 264 | ||
265 | ============================================================================== | 265 | ============================================================================== |
@@ -288,30 +288,45 @@ of v4l2_device. | |||
288 | Accessing Control Values | 288 | Accessing Control Values |
289 | ======================== | 289 | ======================== |
290 | 290 | ||
291 | The v4l2_ctrl struct contains these two unions: | 291 | The following union is used inside the control framework to access control |
292 | values: | ||
292 | 293 | ||
293 | /* The current control value. */ | 294 | union v4l2_ctrl_ptr { |
294 | union { | 295 | s32 *p_s32; |
296 | s64 *p_s64; | ||
297 | char *p_char; | ||
298 | void *p; | ||
299 | }; | ||
300 | |||
301 | The v4l2_ctrl struct contains these fields that can be used to access both | ||
302 | current and new values: | ||
303 | |||
304 | s32 val; | ||
305 | struct { | ||
295 | s32 val; | 306 | s32 val; |
296 | s64 val64; | ||
297 | char *string; | ||
298 | } cur; | 307 | } cur; |
299 | 308 | ||
300 | /* The new control value. */ | ||
301 | union { | ||
302 | s32 val; | ||
303 | s64 val64; | ||
304 | char *string; | ||
305 | }; | ||
306 | 309 | ||
307 | Within the control ops you can freely use these. The val and val64 speak for | 310 | union v4l2_ctrl_ptr p_new; |
308 | themselves. The string pointers point to character buffers of length | 311 | union v4l2_ctrl_ptr p_cur; |
312 | |||
313 | If the control has a simple s32 type type, then: | ||
314 | |||
315 | &ctrl->val == ctrl->p_new.p_s32 | ||
316 | &ctrl->cur.val == ctrl->p_cur.p_s32 | ||
317 | |||
318 | For all other types use ctrl->p_cur.p<something>. Basically the val | ||
319 | and cur.val fields can be considered an alias since these are used so often. | ||
320 | |||
321 | Within the control ops you can freely use these. The val and cur.val speak for | ||
322 | themselves. The p_char pointers point to character buffers of length | ||
309 | ctrl->maximum + 1, and are always 0-terminated. | 323 | ctrl->maximum + 1, and are always 0-terminated. |
310 | 324 | ||
311 | In most cases 'cur' contains the current cached control value. When you create | 325 | Unless the control is marked volatile the p_cur field points to the the |
312 | a new control this value is made identical to the default value. After calling | 326 | current cached control value. When you create a new control this value is made |
313 | v4l2_ctrl_handler_setup() this value is passed to the hardware. It is generally | 327 | identical to the default value. After calling v4l2_ctrl_handler_setup() this |
314 | a good idea to call this function. | 328 | value is passed to the hardware. It is generally a good idea to call this |
329 | function. | ||
315 | 330 | ||
316 | Whenever a new value is set that new value is automatically cached. This means | 331 | Whenever a new value is set that new value is automatically cached. This means |
317 | that most drivers do not need to implement the g_volatile_ctrl() op. The | 332 | that most drivers do not need to implement the g_volatile_ctrl() op. The |
@@ -362,8 +377,8 @@ will result in a deadlock since these helpers lock the handler as well. | |||
362 | You can also take the handler lock yourself: | 377 | You can also take the handler lock yourself: |
363 | 378 | ||
364 | mutex_lock(&state->ctrl_handler.lock); | 379 | mutex_lock(&state->ctrl_handler.lock); |
365 | printk(KERN_INFO "String value is '%s'\n", ctrl1->cur.string); | 380 | pr_info("String value is '%s'\n", ctrl1->p_cur.p_char); |
366 | printk(KERN_INFO "Integer value is '%s'\n", ctrl2->cur.val); | 381 | pr_info("Integer value is '%s'\n", ctrl2->cur.val); |
367 | mutex_unlock(&state->ctrl_handler.lock); | 382 | mutex_unlock(&state->ctrl_handler.lock); |
368 | 383 | ||
369 | 384 | ||
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt index 667a43361706..a11dff07ef71 100644 --- a/Documentation/video4linux/v4l2-framework.txt +++ b/Documentation/video4linux/v4l2-framework.txt | |||
@@ -675,11 +675,6 @@ You should also set these fields: | |||
675 | video_device is initialized you *do* know which parent PCI device to use and | 675 | video_device is initialized you *do* know which parent PCI device to use and |
676 | so you set dev_device to the correct PCI device. | 676 | so you set dev_device to the correct PCI device. |
677 | 677 | ||
678 | - flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework | ||
679 | handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct | ||
680 | v4l2_fh. Eventually this flag will disappear once all drivers use the core | ||
681 | priority handling. But for now it has to be set explicitly. | ||
682 | |||
683 | If you use v4l2_ioctl_ops, then you should set .unlocked_ioctl to video_ioctl2 | 678 | If you use v4l2_ioctl_ops, then you should set .unlocked_ioctl to video_ioctl2 |
684 | in your v4l2_file_operations struct. | 679 | in your v4l2_file_operations struct. |
685 | 680 | ||
@@ -909,8 +904,7 @@ struct v4l2_fh | |||
909 | 904 | ||
910 | struct v4l2_fh provides a way to easily keep file handle specific data | 905 | struct v4l2_fh provides a way to easily keep file handle specific data |
911 | that is used by the V4L2 framework. New drivers must use struct v4l2_fh | 906 | that is used by the V4L2 framework. New drivers must use struct v4l2_fh |
912 | since it is also used to implement priority handling (VIDIOC_G/S_PRIORITY) | 907 | since it is also used to implement priority handling (VIDIOC_G/S_PRIORITY). |
913 | if the video_device flag V4L2_FL_USE_FH_PRIO is also set. | ||
914 | 908 | ||
915 | The users of v4l2_fh (in the V4L2 framework, not the driver) know | 909 | The users of v4l2_fh (in the V4L2 framework, not the driver) know |
916 | whether a driver uses v4l2_fh as its file->private_data pointer by | 910 | whether a driver uses v4l2_fh as its file->private_data pointer by |
diff --git a/Documentation/video4linux/v4l2-pci-skeleton.c b/Documentation/video4linux/v4l2-pci-skeleton.c index 46904fe49609..006721e43b2a 100644 --- a/Documentation/video4linux/v4l2-pci-skeleton.c +++ b/Documentation/video4linux/v4l2-pci-skeleton.c | |||
@@ -883,11 +883,6 @@ static int skeleton_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
883 | vdev->v4l2_dev = &skel->v4l2_dev; | 883 | vdev->v4l2_dev = &skel->v4l2_dev; |
884 | /* Supported SDTV standards, if any */ | 884 | /* Supported SDTV standards, if any */ |
885 | vdev->tvnorms = SKEL_TVNORMS; | 885 | vdev->tvnorms = SKEL_TVNORMS; |
886 | /* If this bit is set, then the v4l2 core will provide the support | ||
887 | * for the VIDIOC_G/S_PRIORITY ioctls. This flag will eventually | ||
888 | * go away once all drivers have been converted to use struct v4l2_fh. | ||
889 | */ | ||
890 | set_bit(V4L2_FL_USE_FH_PRIO, &vdev->flags); | ||
891 | video_set_drvdata(vdev, skel); | 886 | video_set_drvdata(vdev, skel); |
892 | 887 | ||
893 | ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1); | 888 | ret = video_register_device(vdev, VFL_TYPE_GRABBER, -1); |
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index 0fe36497642c..beae3fde075e 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -148,9 +148,9 @@ of banks, as set via the KVM_X86_SETUP_MCE ioctl. | |||
148 | 148 | ||
149 | 4.4 KVM_CHECK_EXTENSION | 149 | 4.4 KVM_CHECK_EXTENSION |
150 | 150 | ||
151 | Capability: basic | 151 | Capability: basic, KVM_CAP_CHECK_EXTENSION_VM for vm ioctl |
152 | Architectures: all | 152 | Architectures: all |
153 | Type: system ioctl | 153 | Type: system ioctl, vm ioctl |
154 | Parameters: extension identifier (KVM_CAP_*) | 154 | Parameters: extension identifier (KVM_CAP_*) |
155 | Returns: 0 if unsupported; 1 (or some other positive integer) if supported | 155 | Returns: 0 if unsupported; 1 (or some other positive integer) if supported |
156 | 156 | ||
@@ -160,6 +160,9 @@ receives an integer that describes the extension availability. | |||
160 | Generally 0 means no and 1 means yes, but some extensions may report | 160 | Generally 0 means no and 1 means yes, but some extensions may report |
161 | additional information in the integer return value. | 161 | additional information in the integer return value. |
162 | 162 | ||
163 | Based on their initialization different VMs may have different capabilities. | ||
164 | It is thus encouraged to use the vm ioctl to query for capabilities (available | ||
165 | with KVM_CAP_CHECK_EXTENSION_VM on the vm fd) | ||
163 | 166 | ||
164 | 4.5 KVM_GET_VCPU_MMAP_SIZE | 167 | 4.5 KVM_GET_VCPU_MMAP_SIZE |
165 | 168 | ||
@@ -297,6 +300,15 @@ struct kvm_regs { | |||
297 | __u64 rip, rflags; | 300 | __u64 rip, rflags; |
298 | }; | 301 | }; |
299 | 302 | ||
303 | /* mips */ | ||
304 | struct kvm_regs { | ||
305 | /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */ | ||
306 | __u64 gpr[32]; | ||
307 | __u64 hi; | ||
308 | __u64 lo; | ||
309 | __u64 pc; | ||
310 | }; | ||
311 | |||
300 | 312 | ||
301 | 4.12 KVM_SET_REGS | 313 | 4.12 KVM_SET_REGS |
302 | 314 | ||
@@ -378,7 +390,7 @@ struct kvm_translation { | |||
378 | 4.16 KVM_INTERRUPT | 390 | 4.16 KVM_INTERRUPT |
379 | 391 | ||
380 | Capability: basic | 392 | Capability: basic |
381 | Architectures: x86, ppc | 393 | Architectures: x86, ppc, mips |
382 | Type: vcpu ioctl | 394 | Type: vcpu ioctl |
383 | Parameters: struct kvm_interrupt (in) | 395 | Parameters: struct kvm_interrupt (in) |
384 | Returns: 0 on success, -1 on error | 396 | Returns: 0 on success, -1 on error |
@@ -423,6 +435,11 @@ c) KVM_INTERRUPT_SET_LEVEL | |||
423 | Note that any value for 'irq' other than the ones stated above is invalid | 435 | Note that any value for 'irq' other than the ones stated above is invalid |
424 | and incurs unexpected behavior. | 436 | and incurs unexpected behavior. |
425 | 437 | ||
438 | MIPS: | ||
439 | |||
440 | Queues an external interrupt to be injected into the virtual CPU. A negative | ||
441 | interrupt number dequeues the interrupt. | ||
442 | |||
426 | 443 | ||
427 | 4.17 KVM_DEBUG_GUEST | 444 | 4.17 KVM_DEBUG_GUEST |
428 | 445 | ||
@@ -512,7 +529,7 @@ struct kvm_cpuid { | |||
512 | 4.21 KVM_SET_SIGNAL_MASK | 529 | 4.21 KVM_SET_SIGNAL_MASK |
513 | 530 | ||
514 | Capability: basic | 531 | Capability: basic |
515 | Architectures: x86 | 532 | Architectures: all |
516 | Type: vcpu ioctl | 533 | Type: vcpu ioctl |
517 | Parameters: struct kvm_signal_mask (in) | 534 | Parameters: struct kvm_signal_mask (in) |
518 | Returns: 0 on success, -1 on error | 535 | Returns: 0 on success, -1 on error |
@@ -974,7 +991,7 @@ for vm-wide capabilities. | |||
974 | 4.38 KVM_GET_MP_STATE | 991 | 4.38 KVM_GET_MP_STATE |
975 | 992 | ||
976 | Capability: KVM_CAP_MP_STATE | 993 | Capability: KVM_CAP_MP_STATE |
977 | Architectures: x86, ia64 | 994 | Architectures: x86, ia64, s390 |
978 | Type: vcpu ioctl | 995 | Type: vcpu ioctl |
979 | Parameters: struct kvm_mp_state (out) | 996 | Parameters: struct kvm_mp_state (out) |
980 | Returns: 0 on success; -1 on error | 997 | Returns: 0 on success; -1 on error |
@@ -988,24 +1005,32 @@ uniprocessor guests). | |||
988 | 1005 | ||
989 | Possible values are: | 1006 | Possible values are: |
990 | 1007 | ||
991 | - KVM_MP_STATE_RUNNABLE: the vcpu is currently running | 1008 | - KVM_MP_STATE_RUNNABLE: the vcpu is currently running [x86, ia64] |
992 | - KVM_MP_STATE_UNINITIALIZED: the vcpu is an application processor (AP) | 1009 | - KVM_MP_STATE_UNINITIALIZED: the vcpu is an application processor (AP) |
993 | which has not yet received an INIT signal | 1010 | which has not yet received an INIT signal [x86, |
1011 | ia64] | ||
994 | - KVM_MP_STATE_INIT_RECEIVED: the vcpu has received an INIT signal, and is | 1012 | - KVM_MP_STATE_INIT_RECEIVED: the vcpu has received an INIT signal, and is |
995 | now ready for a SIPI | 1013 | now ready for a SIPI [x86, ia64] |
996 | - KVM_MP_STATE_HALTED: the vcpu has executed a HLT instruction and | 1014 | - KVM_MP_STATE_HALTED: the vcpu has executed a HLT instruction and |
997 | is waiting for an interrupt | 1015 | is waiting for an interrupt [x86, ia64] |
998 | - KVM_MP_STATE_SIPI_RECEIVED: the vcpu has just received a SIPI (vector | 1016 | - KVM_MP_STATE_SIPI_RECEIVED: the vcpu has just received a SIPI (vector |
999 | accessible via KVM_GET_VCPU_EVENTS) | 1017 | accessible via KVM_GET_VCPU_EVENTS) [x86, ia64] |
1018 | - KVM_MP_STATE_STOPPED: the vcpu is stopped [s390] | ||
1019 | - KVM_MP_STATE_CHECK_STOP: the vcpu is in a special error state [s390] | ||
1020 | - KVM_MP_STATE_OPERATING: the vcpu is operating (running or halted) | ||
1021 | [s390] | ||
1022 | - KVM_MP_STATE_LOAD: the vcpu is in a special load/startup state | ||
1023 | [s390] | ||
1000 | 1024 | ||
1001 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 1025 | On x86 and ia64, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an |
1002 | irqchip, the multiprocessing state must be maintained by userspace. | 1026 | in-kernel irqchip, the multiprocessing state must be maintained by userspace on |
1027 | these architectures. | ||
1003 | 1028 | ||
1004 | 1029 | ||
1005 | 4.39 KVM_SET_MP_STATE | 1030 | 4.39 KVM_SET_MP_STATE |
1006 | 1031 | ||
1007 | Capability: KVM_CAP_MP_STATE | 1032 | Capability: KVM_CAP_MP_STATE |
1008 | Architectures: x86, ia64 | 1033 | Architectures: x86, ia64, s390 |
1009 | Type: vcpu ioctl | 1034 | Type: vcpu ioctl |
1010 | Parameters: struct kvm_mp_state (in) | 1035 | Parameters: struct kvm_mp_state (in) |
1011 | Returns: 0 on success; -1 on error | 1036 | Returns: 0 on success; -1 on error |
@@ -1013,8 +1038,9 @@ Returns: 0 on success; -1 on error | |||
1013 | Sets the vcpu's current "multiprocessing state"; see KVM_GET_MP_STATE for | 1038 | Sets the vcpu's current "multiprocessing state"; see KVM_GET_MP_STATE for |
1014 | arguments. | 1039 | arguments. |
1015 | 1040 | ||
1016 | This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel | 1041 | On x86 and ia64, this ioctl is only useful after KVM_CREATE_IRQCHIP. Without an |
1017 | irqchip, the multiprocessing state must be maintained by userspace. | 1042 | in-kernel irqchip, the multiprocessing state must be maintained by userspace on |
1043 | these architectures. | ||
1018 | 1044 | ||
1019 | 1045 | ||
1020 | 4.40 KVM_SET_IDENTITY_MAP_ADDR | 1046 | 4.40 KVM_SET_IDENTITY_MAP_ADDR |
@@ -1774,122 +1800,152 @@ and architecture specific registers. Each have their own range of operation | |||
1774 | and their own constants and width. To keep track of the implemented | 1800 | and their own constants and width. To keep track of the implemented |
1775 | registers, find a list below: | 1801 | registers, find a list below: |
1776 | 1802 | ||
1777 | Arch | Register | Width (bits) | 1803 | Arch | Register | Width (bits) |
1778 | | | | 1804 | | | |
1779 | PPC | KVM_REG_PPC_HIOR | 64 | 1805 | PPC | KVM_REG_PPC_HIOR | 64 |
1780 | PPC | KVM_REG_PPC_IAC1 | 64 | 1806 | PPC | KVM_REG_PPC_IAC1 | 64 |
1781 | PPC | KVM_REG_PPC_IAC2 | 64 | 1807 | PPC | KVM_REG_PPC_IAC2 | 64 |
1782 | PPC | KVM_REG_PPC_IAC3 | 64 | 1808 | PPC | KVM_REG_PPC_IAC3 | 64 |
1783 | PPC | KVM_REG_PPC_IAC4 | 64 | 1809 | PPC | KVM_REG_PPC_IAC4 | 64 |
1784 | PPC | KVM_REG_PPC_DAC1 | 64 | 1810 | PPC | KVM_REG_PPC_DAC1 | 64 |
1785 | PPC | KVM_REG_PPC_DAC2 | 64 | 1811 | PPC | KVM_REG_PPC_DAC2 | 64 |
1786 | PPC | KVM_REG_PPC_DABR | 64 | 1812 | PPC | KVM_REG_PPC_DABR | 64 |
1787 | PPC | KVM_REG_PPC_DSCR | 64 | 1813 | PPC | KVM_REG_PPC_DSCR | 64 |
1788 | PPC | KVM_REG_PPC_PURR | 64 | 1814 | PPC | KVM_REG_PPC_PURR | 64 |
1789 | PPC | KVM_REG_PPC_SPURR | 64 | 1815 | PPC | KVM_REG_PPC_SPURR | 64 |
1790 | PPC | KVM_REG_PPC_DAR | 64 | 1816 | PPC | KVM_REG_PPC_DAR | 64 |
1791 | PPC | KVM_REG_PPC_DSISR | 32 | 1817 | PPC | KVM_REG_PPC_DSISR | 32 |
1792 | PPC | KVM_REG_PPC_AMR | 64 | 1818 | PPC | KVM_REG_PPC_AMR | 64 |
1793 | PPC | KVM_REG_PPC_UAMOR | 64 | 1819 | PPC | KVM_REG_PPC_UAMOR | 64 |
1794 | PPC | KVM_REG_PPC_MMCR0 | 64 | 1820 | PPC | KVM_REG_PPC_MMCR0 | 64 |
1795 | PPC | KVM_REG_PPC_MMCR1 | 64 | 1821 | PPC | KVM_REG_PPC_MMCR1 | 64 |
1796 | PPC | KVM_REG_PPC_MMCRA | 64 | 1822 | PPC | KVM_REG_PPC_MMCRA | 64 |
1797 | PPC | KVM_REG_PPC_MMCR2 | 64 | 1823 | PPC | KVM_REG_PPC_MMCR2 | 64 |
1798 | PPC | KVM_REG_PPC_MMCRS | 64 | 1824 | PPC | KVM_REG_PPC_MMCRS | 64 |
1799 | PPC | KVM_REG_PPC_SIAR | 64 | 1825 | PPC | KVM_REG_PPC_SIAR | 64 |
1800 | PPC | KVM_REG_PPC_SDAR | 64 | 1826 | PPC | KVM_REG_PPC_SDAR | 64 |
1801 | PPC | KVM_REG_PPC_SIER | 64 | 1827 | PPC | KVM_REG_PPC_SIER | 64 |
1802 | PPC | KVM_REG_PPC_PMC1 | 32 | 1828 | PPC | KVM_REG_PPC_PMC1 | 32 |
1803 | PPC | KVM_REG_PPC_PMC2 | 32 | 1829 | PPC | KVM_REG_PPC_PMC2 | 32 |
1804 | PPC | KVM_REG_PPC_PMC3 | 32 | 1830 | PPC | KVM_REG_PPC_PMC3 | 32 |
1805 | PPC | KVM_REG_PPC_PMC4 | 32 | 1831 | PPC | KVM_REG_PPC_PMC4 | 32 |
1806 | PPC | KVM_REG_PPC_PMC5 | 32 | 1832 | PPC | KVM_REG_PPC_PMC5 | 32 |
1807 | PPC | KVM_REG_PPC_PMC6 | 32 | 1833 | PPC | KVM_REG_PPC_PMC6 | 32 |
1808 | PPC | KVM_REG_PPC_PMC7 | 32 | 1834 | PPC | KVM_REG_PPC_PMC7 | 32 |
1809 | PPC | KVM_REG_PPC_PMC8 | 32 | 1835 | PPC | KVM_REG_PPC_PMC8 | 32 |
1810 | PPC | KVM_REG_PPC_FPR0 | 64 | 1836 | PPC | KVM_REG_PPC_FPR0 | 64 |
1837 | ... | ||
1838 | PPC | KVM_REG_PPC_FPR31 | 64 | ||
1839 | PPC | KVM_REG_PPC_VR0 | 128 | ||
1811 | ... | 1840 | ... |
1812 | PPC | KVM_REG_PPC_FPR31 | 64 | 1841 | PPC | KVM_REG_PPC_VR31 | 128 |
1813 | PPC | KVM_REG_PPC_VR0 | 128 | 1842 | PPC | KVM_REG_PPC_VSR0 | 128 |
1814 | ... | 1843 | ... |
1815 | PPC | KVM_REG_PPC_VR31 | 128 | 1844 | PPC | KVM_REG_PPC_VSR31 | 128 |
1816 | PPC | KVM_REG_PPC_VSR0 | 128 | 1845 | PPC | KVM_REG_PPC_FPSCR | 64 |
1846 | PPC | KVM_REG_PPC_VSCR | 32 | ||
1847 | PPC | KVM_REG_PPC_VPA_ADDR | 64 | ||
1848 | PPC | KVM_REG_PPC_VPA_SLB | 128 | ||
1849 | PPC | KVM_REG_PPC_VPA_DTL | 128 | ||
1850 | PPC | KVM_REG_PPC_EPCR | 32 | ||
1851 | PPC | KVM_REG_PPC_EPR | 32 | ||
1852 | PPC | KVM_REG_PPC_TCR | 32 | ||
1853 | PPC | KVM_REG_PPC_TSR | 32 | ||
1854 | PPC | KVM_REG_PPC_OR_TSR | 32 | ||
1855 | PPC | KVM_REG_PPC_CLEAR_TSR | 32 | ||
1856 | PPC | KVM_REG_PPC_MAS0 | 32 | ||
1857 | PPC | KVM_REG_PPC_MAS1 | 32 | ||
1858 | PPC | KVM_REG_PPC_MAS2 | 64 | ||
1859 | PPC | KVM_REG_PPC_MAS7_3 | 64 | ||
1860 | PPC | KVM_REG_PPC_MAS4 | 32 | ||
1861 | PPC | KVM_REG_PPC_MAS6 | 32 | ||
1862 | PPC | KVM_REG_PPC_MMUCFG | 32 | ||
1863 | PPC | KVM_REG_PPC_TLB0CFG | 32 | ||
1864 | PPC | KVM_REG_PPC_TLB1CFG | 32 | ||
1865 | PPC | KVM_REG_PPC_TLB2CFG | 32 | ||
1866 | PPC | KVM_REG_PPC_TLB3CFG | 32 | ||
1867 | PPC | KVM_REG_PPC_TLB0PS | 32 | ||
1868 | PPC | KVM_REG_PPC_TLB1PS | 32 | ||
1869 | PPC | KVM_REG_PPC_TLB2PS | 32 | ||
1870 | PPC | KVM_REG_PPC_TLB3PS | 32 | ||
1871 | PPC | KVM_REG_PPC_EPTCFG | 32 | ||
1872 | PPC | KVM_REG_PPC_ICP_STATE | 64 | ||
1873 | PPC | KVM_REG_PPC_TB_OFFSET | 64 | ||
1874 | PPC | KVM_REG_PPC_SPMC1 | 32 | ||
1875 | PPC | KVM_REG_PPC_SPMC2 | 32 | ||
1876 | PPC | KVM_REG_PPC_IAMR | 64 | ||
1877 | PPC | KVM_REG_PPC_TFHAR | 64 | ||
1878 | PPC | KVM_REG_PPC_TFIAR | 64 | ||
1879 | PPC | KVM_REG_PPC_TEXASR | 64 | ||
1880 | PPC | KVM_REG_PPC_FSCR | 64 | ||
1881 | PPC | KVM_REG_PPC_PSPB | 32 | ||
1882 | PPC | KVM_REG_PPC_EBBHR | 64 | ||
1883 | PPC | KVM_REG_PPC_EBBRR | 64 | ||
1884 | PPC | KVM_REG_PPC_BESCR | 64 | ||
1885 | PPC | KVM_REG_PPC_TAR | 64 | ||
1886 | PPC | KVM_REG_PPC_DPDES | 64 | ||
1887 | PPC | KVM_REG_PPC_DAWR | 64 | ||
1888 | PPC | KVM_REG_PPC_DAWRX | 64 | ||
1889 | PPC | KVM_REG_PPC_CIABR | 64 | ||
1890 | PPC | KVM_REG_PPC_IC | 64 | ||
1891 | PPC | KVM_REG_PPC_VTB | 64 | ||
1892 | PPC | KVM_REG_PPC_CSIGR | 64 | ||
1893 | PPC | KVM_REG_PPC_TACR | 64 | ||
1894 | PPC | KVM_REG_PPC_TCSCR | 64 | ||
1895 | PPC | KVM_REG_PPC_PID | 64 | ||
1896 | PPC | KVM_REG_PPC_ACOP | 64 | ||
1897 | PPC | KVM_REG_PPC_VRSAVE | 32 | ||
1898 | PPC | KVM_REG_PPC_LPCR | 32 | ||
1899 | PPC | KVM_REG_PPC_LPCR_64 | 64 | ||
1900 | PPC | KVM_REG_PPC_PPR | 64 | ||
1901 | PPC | KVM_REG_PPC_ARCH_COMPAT | 32 | ||
1902 | PPC | KVM_REG_PPC_DABRX | 32 | ||
1903 | PPC | KVM_REG_PPC_WORT | 64 | ||
1904 | PPC | KVM_REG_PPC_TM_GPR0 | 64 | ||
1817 | ... | 1905 | ... |
1818 | PPC | KVM_REG_PPC_VSR31 | 128 | 1906 | PPC | KVM_REG_PPC_TM_GPR31 | 64 |
1819 | PPC | KVM_REG_PPC_FPSCR | 64 | 1907 | PPC | KVM_REG_PPC_TM_VSR0 | 128 |
1820 | PPC | KVM_REG_PPC_VSCR | 32 | ||
1821 | PPC | KVM_REG_PPC_VPA_ADDR | 64 | ||
1822 | PPC | KVM_REG_PPC_VPA_SLB | 128 | ||
1823 | PPC | KVM_REG_PPC_VPA_DTL | 128 | ||
1824 | PPC | KVM_REG_PPC_EPCR | 32 | ||
1825 | PPC | KVM_REG_PPC_EPR | 32 | ||
1826 | PPC | KVM_REG_PPC_TCR | 32 | ||
1827 | PPC | KVM_REG_PPC_TSR | 32 | ||
1828 | PPC | KVM_REG_PPC_OR_TSR | 32 | ||
1829 | PPC | KVM_REG_PPC_CLEAR_TSR | 32 | ||
1830 | PPC | KVM_REG_PPC_MAS0 | 32 | ||
1831 | PPC | KVM_REG_PPC_MAS1 | 32 | ||
1832 | PPC | KVM_REG_PPC_MAS2 | 64 | ||
1833 | PPC | KVM_REG_PPC_MAS7_3 | 64 | ||
1834 | PPC | KVM_REG_PPC_MAS4 | 32 | ||
1835 | PPC | KVM_REG_PPC_MAS6 | 32 | ||
1836 | PPC | KVM_REG_PPC_MMUCFG | 32 | ||
1837 | PPC | KVM_REG_PPC_TLB0CFG | 32 | ||
1838 | PPC | KVM_REG_PPC_TLB1CFG | 32 | ||
1839 | PPC | KVM_REG_PPC_TLB2CFG | 32 | ||
1840 | PPC | KVM_REG_PPC_TLB3CFG | 32 | ||
1841 | PPC | KVM_REG_PPC_TLB0PS | 32 | ||
1842 | PPC | KVM_REG_PPC_TLB1PS | 32 | ||
1843 | PPC | KVM_REG_PPC_TLB2PS | 32 | ||
1844 | PPC | KVM_REG_PPC_TLB3PS | 32 | ||
1845 | PPC | KVM_REG_PPC_EPTCFG | 32 | ||
1846 | PPC | KVM_REG_PPC_ICP_STATE | 64 | ||
1847 | PPC | KVM_REG_PPC_TB_OFFSET | 64 | ||
1848 | PPC | KVM_REG_PPC_SPMC1 | 32 | ||
1849 | PPC | KVM_REG_PPC_SPMC2 | 32 | ||
1850 | PPC | KVM_REG_PPC_IAMR | 64 | ||
1851 | PPC | KVM_REG_PPC_TFHAR | 64 | ||
1852 | PPC | KVM_REG_PPC_TFIAR | 64 | ||
1853 | PPC | KVM_REG_PPC_TEXASR | 64 | ||
1854 | PPC | KVM_REG_PPC_FSCR | 64 | ||
1855 | PPC | KVM_REG_PPC_PSPB | 32 | ||
1856 | PPC | KVM_REG_PPC_EBBHR | 64 | ||
1857 | PPC | KVM_REG_PPC_EBBRR | 64 | ||
1858 | PPC | KVM_REG_PPC_BESCR | 64 | ||
1859 | PPC | KVM_REG_PPC_TAR | 64 | ||
1860 | PPC | KVM_REG_PPC_DPDES | 64 | ||
1861 | PPC | KVM_REG_PPC_DAWR | 64 | ||
1862 | PPC | KVM_REG_PPC_DAWRX | 64 | ||
1863 | PPC | KVM_REG_PPC_CIABR | 64 | ||
1864 | PPC | KVM_REG_PPC_IC | 64 | ||
1865 | PPC | KVM_REG_PPC_VTB | 64 | ||
1866 | PPC | KVM_REG_PPC_CSIGR | 64 | ||
1867 | PPC | KVM_REG_PPC_TACR | 64 | ||
1868 | PPC | KVM_REG_PPC_TCSCR | 64 | ||
1869 | PPC | KVM_REG_PPC_PID | 64 | ||
1870 | PPC | KVM_REG_PPC_ACOP | 64 | ||
1871 | PPC | KVM_REG_PPC_VRSAVE | 32 | ||
1872 | PPC | KVM_REG_PPC_LPCR | 64 | ||
1873 | PPC | KVM_REG_PPC_PPR | 64 | ||
1874 | PPC | KVM_REG_PPC_ARCH_COMPAT 32 | ||
1875 | PPC | KVM_REG_PPC_DABRX | 32 | ||
1876 | PPC | KVM_REG_PPC_WORT | 64 | ||
1877 | PPC | KVM_REG_PPC_TM_GPR0 | 64 | ||
1878 | ... | 1908 | ... |
1879 | PPC | KVM_REG_PPC_TM_GPR31 | 64 | 1909 | PPC | KVM_REG_PPC_TM_VSR63 | 128 |
1880 | PPC | KVM_REG_PPC_TM_VSR0 | 128 | 1910 | PPC | KVM_REG_PPC_TM_CR | 64 |
1911 | PPC | KVM_REG_PPC_TM_LR | 64 | ||
1912 | PPC | KVM_REG_PPC_TM_CTR | 64 | ||
1913 | PPC | KVM_REG_PPC_TM_FPSCR | 64 | ||
1914 | PPC | KVM_REG_PPC_TM_AMR | 64 | ||
1915 | PPC | KVM_REG_PPC_TM_PPR | 64 | ||
1916 | PPC | KVM_REG_PPC_TM_VRSAVE | 64 | ||
1917 | PPC | KVM_REG_PPC_TM_VSCR | 32 | ||
1918 | PPC | KVM_REG_PPC_TM_DSCR | 64 | ||
1919 | PPC | KVM_REG_PPC_TM_TAR | 64 | ||
1920 | | | | ||
1921 | MIPS | KVM_REG_MIPS_R0 | 64 | ||
1881 | ... | 1922 | ... |
1882 | PPC | KVM_REG_PPC_TM_VSR63 | 128 | 1923 | MIPS | KVM_REG_MIPS_R31 | 64 |
1883 | PPC | KVM_REG_PPC_TM_CR | 64 | 1924 | MIPS | KVM_REG_MIPS_HI | 64 |
1884 | PPC | KVM_REG_PPC_TM_LR | 64 | 1925 | MIPS | KVM_REG_MIPS_LO | 64 |
1885 | PPC | KVM_REG_PPC_TM_CTR | 64 | 1926 | MIPS | KVM_REG_MIPS_PC | 64 |
1886 | PPC | KVM_REG_PPC_TM_FPSCR | 64 | 1927 | MIPS | KVM_REG_MIPS_CP0_INDEX | 32 |
1887 | PPC | KVM_REG_PPC_TM_AMR | 64 | 1928 | MIPS | KVM_REG_MIPS_CP0_CONTEXT | 64 |
1888 | PPC | KVM_REG_PPC_TM_PPR | 64 | 1929 | MIPS | KVM_REG_MIPS_CP0_USERLOCAL | 64 |
1889 | PPC | KVM_REG_PPC_TM_VRSAVE | 64 | 1930 | MIPS | KVM_REG_MIPS_CP0_PAGEMASK | 32 |
1890 | PPC | KVM_REG_PPC_TM_VSCR | 32 | 1931 | MIPS | KVM_REG_MIPS_CP0_WIRED | 32 |
1891 | PPC | KVM_REG_PPC_TM_DSCR | 64 | 1932 | MIPS | KVM_REG_MIPS_CP0_HWRENA | 32 |
1892 | PPC | KVM_REG_PPC_TM_TAR | 64 | 1933 | MIPS | KVM_REG_MIPS_CP0_BADVADDR | 64 |
1934 | MIPS | KVM_REG_MIPS_CP0_COUNT | 32 | ||
1935 | MIPS | KVM_REG_MIPS_CP0_ENTRYHI | 64 | ||
1936 | MIPS | KVM_REG_MIPS_CP0_COMPARE | 32 | ||
1937 | MIPS | KVM_REG_MIPS_CP0_STATUS | 32 | ||
1938 | MIPS | KVM_REG_MIPS_CP0_CAUSE | 32 | ||
1939 | MIPS | KVM_REG_MIPS_CP0_EPC | 64 | ||
1940 | MIPS | KVM_REG_MIPS_CP0_CONFIG | 32 | ||
1941 | MIPS | KVM_REG_MIPS_CP0_CONFIG1 | 32 | ||
1942 | MIPS | KVM_REG_MIPS_CP0_CONFIG2 | 32 | ||
1943 | MIPS | KVM_REG_MIPS_CP0_CONFIG3 | 32 | ||
1944 | MIPS | KVM_REG_MIPS_CP0_CONFIG7 | 32 | ||
1945 | MIPS | KVM_REG_MIPS_CP0_ERROREPC | 64 | ||
1946 | MIPS | KVM_REG_MIPS_COUNT_CTL | 64 | ||
1947 | MIPS | KVM_REG_MIPS_COUNT_RESUME | 64 | ||
1948 | MIPS | KVM_REG_MIPS_COUNT_HZ | 64 | ||
1893 | 1949 | ||
1894 | ARM registers are mapped using the lower 32 bits. The upper 16 of that | 1950 | ARM registers are mapped using the lower 32 bits. The upper 16 of that |
1895 | is the register group type, or coprocessor number: | 1951 | is the register group type, or coprocessor number: |
@@ -1928,6 +1984,22 @@ arm64 CCSIDR registers are demultiplexed by CSSELR value: | |||
1928 | arm64 system registers have the following id bit patterns: | 1984 | arm64 system registers have the following id bit patterns: |
1929 | 0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3> | 1985 | 0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3> |
1930 | 1986 | ||
1987 | |||
1988 | MIPS registers are mapped using the lower 32 bits. The upper 16 of that is | ||
1989 | the register group type: | ||
1990 | |||
1991 | MIPS core registers (see above) have the following id bit patterns: | ||
1992 | 0x7030 0000 0000 <reg:16> | ||
1993 | |||
1994 | MIPS CP0 registers (see KVM_REG_MIPS_CP0_* above) have the following id bit | ||
1995 | patterns depending on whether they're 32-bit or 64-bit registers: | ||
1996 | 0x7020 0000 0001 00 <reg:5> <sel:3> (32-bit) | ||
1997 | 0x7030 0000 0001 00 <reg:5> <sel:3> (64-bit) | ||
1998 | |||
1999 | MIPS KVM control registers (see above) have the following id bit patterns: | ||
2000 | 0x7030 0000 0002 <reg:16> | ||
2001 | |||
2002 | |||
1931 | 4.69 KVM_GET_ONE_REG | 2003 | 4.69 KVM_GET_ONE_REG |
1932 | 2004 | ||
1933 | Capability: KVM_CAP_ONE_REG | 2005 | Capability: KVM_CAP_ONE_REG |
@@ -2415,7 +2487,7 @@ in VCPU matching underlying host. | |||
2415 | 4.84 KVM_GET_REG_LIST | 2487 | 4.84 KVM_GET_REG_LIST |
2416 | 2488 | ||
2417 | Capability: basic | 2489 | Capability: basic |
2418 | Architectures: arm, arm64 | 2490 | Architectures: arm, arm64, mips |
2419 | Type: vcpu ioctl | 2491 | Type: vcpu ioctl |
2420 | Parameters: struct kvm_reg_list (in/out) | 2492 | Parameters: struct kvm_reg_list (in/out) |
2421 | Returns: 0 on success; -1 on error | 2493 | Returns: 0 on success; -1 on error |
@@ -2609,8 +2681,8 @@ The 'data' member contains, in its first 'len' bytes, the value as it would | |||
2609 | appear if the VCPU performed a load or store of the appropriate width directly | 2681 | appear if the VCPU performed a load or store of the appropriate width directly |
2610 | to the byte array. | 2682 | to the byte array. |
2611 | 2683 | ||
2612 | NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO, KVM_EXIT_OSI, KVM_EXIT_DCR, | 2684 | NOTE: For KVM_EXIT_IO, KVM_EXIT_MMIO, KVM_EXIT_OSI, KVM_EXIT_PAPR and |
2613 | KVM_EXIT_PAPR and KVM_EXIT_EPR the corresponding | 2685 | KVM_EXIT_EPR the corresponding |
2614 | operations are complete (and guest state is consistent) only after userspace | 2686 | operations are complete (and guest state is consistent) only after userspace |
2615 | has re-entered the kernel with KVM_RUN. The kernel side will first finish | 2687 | has re-entered the kernel with KVM_RUN. The kernel side will first finish |
2616 | incomplete operations and then check for pending signals. Userspace | 2688 | incomplete operations and then check for pending signals. Userspace |
@@ -2681,7 +2753,7 @@ Principles of Operation Book in the Chapter for Dynamic Address Translation | |||
2681 | __u8 is_write; | 2753 | __u8 is_write; |
2682 | } dcr; | 2754 | } dcr; |
2683 | 2755 | ||
2684 | powerpc specific. | 2756 | Deprecated - was used for 440 KVM. |
2685 | 2757 | ||
2686 | /* KVM_EXIT_OSI */ | 2758 | /* KVM_EXIT_OSI */ |
2687 | struct { | 2759 | struct { |
@@ -2863,18 +2935,21 @@ The fields in each entry are defined as follows: | |||
2863 | this function/index combination | 2935 | this function/index combination |
2864 | 2936 | ||
2865 | 2937 | ||
2866 | 6. Capabilities that can be enabled | 2938 | 6. Capabilities that can be enabled on vCPUs |
2867 | ----------------------------------- | 2939 | -------------------------------------------- |
2868 | 2940 | ||
2869 | There are certain capabilities that change the behavior of the virtual CPU when | 2941 | There are certain capabilities that change the behavior of the virtual CPU or |
2870 | enabled. To enable them, please see section 4.37. Below you can find a list of | 2942 | the virtual machine when enabled. To enable them, please see section 4.37. |
2871 | capabilities and what their effect on the vCPU is when enabling them. | 2943 | Below you can find a list of capabilities and what their effect on the vCPU or |
2944 | the virtual machine is when enabling them. | ||
2872 | 2945 | ||
2873 | The following information is provided along with the description: | 2946 | The following information is provided along with the description: |
2874 | 2947 | ||
2875 | Architectures: which instruction set architectures provide this ioctl. | 2948 | Architectures: which instruction set architectures provide this ioctl. |
2876 | x86 includes both i386 and x86_64. | 2949 | x86 includes both i386 and x86_64. |
2877 | 2950 | ||
2951 | Target: whether this is a per-vcpu or per-vm capability. | ||
2952 | |||
2878 | Parameters: what parameters are accepted by the capability. | 2953 | Parameters: what parameters are accepted by the capability. |
2879 | 2954 | ||
2880 | Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) | 2955 | Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) |
@@ -2884,6 +2959,7 @@ The following information is provided along with the description: | |||
2884 | 6.1 KVM_CAP_PPC_OSI | 2959 | 6.1 KVM_CAP_PPC_OSI |
2885 | 2960 | ||
2886 | Architectures: ppc | 2961 | Architectures: ppc |
2962 | Target: vcpu | ||
2887 | Parameters: none | 2963 | Parameters: none |
2888 | Returns: 0 on success; -1 on error | 2964 | Returns: 0 on success; -1 on error |
2889 | 2965 | ||
@@ -2898,6 +2974,7 @@ When this capability is enabled, KVM_EXIT_OSI can occur. | |||
2898 | 6.2 KVM_CAP_PPC_PAPR | 2974 | 6.2 KVM_CAP_PPC_PAPR |
2899 | 2975 | ||
2900 | Architectures: ppc | 2976 | Architectures: ppc |
2977 | Target: vcpu | ||
2901 | Parameters: none | 2978 | Parameters: none |
2902 | Returns: 0 on success; -1 on error | 2979 | Returns: 0 on success; -1 on error |
2903 | 2980 | ||
@@ -2917,6 +2994,7 @@ When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur. | |||
2917 | 6.3 KVM_CAP_SW_TLB | 2994 | 6.3 KVM_CAP_SW_TLB |
2918 | 2995 | ||
2919 | Architectures: ppc | 2996 | Architectures: ppc |
2997 | Target: vcpu | ||
2920 | Parameters: args[0] is the address of a struct kvm_config_tlb | 2998 | Parameters: args[0] is the address of a struct kvm_config_tlb |
2921 | Returns: 0 on success; -1 on error | 2999 | Returns: 0 on success; -1 on error |
2922 | 3000 | ||
@@ -2959,6 +3037,7 @@ For mmu types KVM_MMU_FSL_BOOKE_NOHV and KVM_MMU_FSL_BOOKE_HV: | |||
2959 | 6.4 KVM_CAP_S390_CSS_SUPPORT | 3037 | 6.4 KVM_CAP_S390_CSS_SUPPORT |
2960 | 3038 | ||
2961 | Architectures: s390 | 3039 | Architectures: s390 |
3040 | Target: vcpu | ||
2962 | Parameters: none | 3041 | Parameters: none |
2963 | Returns: 0 on success; -1 on error | 3042 | Returns: 0 on success; -1 on error |
2964 | 3043 | ||
@@ -2970,9 +3049,13 @@ handled in-kernel, while the other I/O instructions are passed to userspace. | |||
2970 | When this capability is enabled, KVM_EXIT_S390_TSCH will occur on TEST | 3049 | When this capability is enabled, KVM_EXIT_S390_TSCH will occur on TEST |
2971 | SUBCHANNEL intercepts. | 3050 | SUBCHANNEL intercepts. |
2972 | 3051 | ||
3052 | Note that even though this capability is enabled per-vcpu, the complete | ||
3053 | virtual machine is affected. | ||
3054 | |||
2973 | 6.5 KVM_CAP_PPC_EPR | 3055 | 6.5 KVM_CAP_PPC_EPR |
2974 | 3056 | ||
2975 | Architectures: ppc | 3057 | Architectures: ppc |
3058 | Target: vcpu | ||
2976 | Parameters: args[0] defines whether the proxy facility is active | 3059 | Parameters: args[0] defines whether the proxy facility is active |
2977 | Returns: 0 on success; -1 on error | 3060 | Returns: 0 on success; -1 on error |
2978 | 3061 | ||
@@ -2998,7 +3081,57 @@ This capability connects the vcpu to an in-kernel MPIC device. | |||
2998 | 6.7 KVM_CAP_IRQ_XICS | 3081 | 6.7 KVM_CAP_IRQ_XICS |
2999 | 3082 | ||
3000 | Architectures: ppc | 3083 | Architectures: ppc |
3084 | Target: vcpu | ||
3001 | Parameters: args[0] is the XICS device fd | 3085 | Parameters: args[0] is the XICS device fd |
3002 | args[1] is the XICS CPU number (server ID) for this vcpu | 3086 | args[1] is the XICS CPU number (server ID) for this vcpu |
3003 | 3087 | ||
3004 | This capability connects the vcpu to an in-kernel XICS device. | 3088 | This capability connects the vcpu to an in-kernel XICS device. |
3089 | |||
3090 | 6.8 KVM_CAP_S390_IRQCHIP | ||
3091 | |||
3092 | Architectures: s390 | ||
3093 | Target: vm | ||
3094 | Parameters: none | ||
3095 | |||
3096 | This capability enables the in-kernel irqchip for s390. Please refer to | ||
3097 | "4.24 KVM_CREATE_IRQCHIP" for details. | ||
3098 | |||
3099 | 7. Capabilities that can be enabled on VMs | ||
3100 | ------------------------------------------ | ||
3101 | |||
3102 | There are certain capabilities that change the behavior of the virtual | ||
3103 | machine when enabled. To enable them, please see section 4.37. Below | ||
3104 | you can find a list of capabilities and what their effect on the VM | ||
3105 | is when enabling them. | ||
3106 | |||
3107 | The following information is provided along with the description: | ||
3108 | |||
3109 | Architectures: which instruction set architectures provide this ioctl. | ||
3110 | x86 includes both i386 and x86_64. | ||
3111 | |||
3112 | Parameters: what parameters are accepted by the capability. | ||
3113 | |||
3114 | Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL) | ||
3115 | are not detailed, but errors with specific meanings are. | ||
3116 | |||
3117 | |||
3118 | 7.1 KVM_CAP_PPC_ENABLE_HCALL | ||
3119 | |||
3120 | Architectures: ppc | ||
3121 | Parameters: args[0] is the sPAPR hcall number | ||
3122 | args[1] is 0 to disable, 1 to enable in-kernel handling | ||
3123 | |||
3124 | This capability controls whether individual sPAPR hypercalls (hcalls) | ||
3125 | get handled by the kernel or not. Enabling or disabling in-kernel | ||
3126 | handling of an hcall is effective across the VM. On creation, an | ||
3127 | initial set of hcalls are enabled for in-kernel handling, which | ||
3128 | consists of those hcalls for which in-kernel handlers were implemented | ||
3129 | before this capability was implemented. If disabled, the kernel will | ||
3130 | not to attempt to handle the hcall, but will always exit to userspace | ||
3131 | to handle it. Note that it may not make sense to enable some and | ||
3132 | disable others of a group of related hcalls, but KVM does not prevent | ||
3133 | userspace from doing that. | ||
3134 | |||
3135 | If the hcall number specified is not one that has an in-kernel | ||
3136 | implementation, the KVM_ENABLE_CAP ioctl will fail with an EINVAL | ||
3137 | error. | ||
diff --git a/Documentation/w1/slaves/w1_ds2406 b/Documentation/w1/slaves/w1_ds2406 new file mode 100644 index 000000000000..8137fe6f6c3d --- /dev/null +++ b/Documentation/w1/slaves/w1_ds2406 | |||
@@ -0,0 +1,25 @@ | |||
1 | w1_ds2406 kernel driver | ||
2 | ======================= | ||
3 | |||
4 | Supported chips: | ||
5 | * Maxim DS2406 (and other family 0x12) addressable switches | ||
6 | |||
7 | Author: Scott Alfter <scott@alfter.us> | ||
8 | |||
9 | Description | ||
10 | ----------- | ||
11 | |||
12 | The w1_ds2406 driver allows connected devices to be switched on and off. | ||
13 | These chips also provide 128 bytes of OTP EPROM, but reading/writing it is | ||
14 | not supported. In TSOC-6 form, the DS2406 provides two switch outputs and | ||
15 | can be provided with power on a dedicated input. In TO-92 form, it provides | ||
16 | one output and uses parasitic power only. | ||
17 | |||
18 | The driver provides two sysfs files. state is readable; it gives the | ||
19 | current state of each switch, with PIO A in bit 0 and PIO B in bit 1. The | ||
20 | driver ORs this state with 0x30, so shell scripts get an ASCII 0/1/2/3 to | ||
21 | work with. output is writable; bits 0 and 1 control PIO A and B, | ||
22 | respectively. Bits 2-7 are ignored, so it's safe to write ASCII data. | ||
23 | |||
24 | CRCs are checked on read and write. Failed checks cause an I/O error to be | ||
25 | returned. On a failed write, the switch status is not changed. | ||
diff --git a/Documentation/watchdog/watchdog-api.txt b/Documentation/watchdog/watchdog-api.txt index eb7132ed8bbc..b3a701f48118 100644 --- a/Documentation/watchdog/watchdog-api.txt +++ b/Documentation/watchdog/watchdog-api.txt | |||
@@ -118,7 +118,7 @@ resets. | |||
118 | Note that the pretimeout is the number of seconds before the time | 118 | Note that the pretimeout is the number of seconds before the time |
119 | when the timeout will go off. It is not the number of seconds until | 119 | when the timeout will go off. It is not the number of seconds until |
120 | the pretimeout. So, for instance, if you set the timeout to 60 seconds | 120 | the pretimeout. So, for instance, if you set the timeout to 60 seconds |
121 | and the pretimeout to 10 seconds, the pretimout will go of in 50 | 121 | and the pretimeout to 10 seconds, the pretimeout will go off in 50 |
122 | seconds. Setting a pretimeout to zero disables it. | 122 | seconds. Setting a pretimeout to zero disables it. |
123 | 123 | ||
124 | There is also a get function for getting the pretimeout: | 124 | There is also a get function for getting the pretimeout: |
diff --git a/Documentation/x86/tlb.txt b/Documentation/x86/tlb.txt new file mode 100644 index 000000000000..2b3a82e69151 --- /dev/null +++ b/Documentation/x86/tlb.txt | |||
@@ -0,0 +1,75 @@ | |||
1 | When the kernel unmaps or modified the attributes of a range of | ||
2 | memory, it has two choices: | ||
3 | 1. Flush the entire TLB with a two-instruction sequence. This is | ||
4 | a quick operation, but it causes collateral damage: TLB entries | ||
5 | from areas other than the one we are trying to flush will be | ||
6 | destroyed and must be refilled later, at some cost. | ||
7 | 2. Use the invlpg instruction to invalidate a single page at a | ||
8 | time. This could potentialy cost many more instructions, but | ||
9 | it is a much more precise operation, causing no collateral | ||
10 | damage to other TLB entries. | ||
11 | |||
12 | Which method to do depends on a few things: | ||
13 | 1. The size of the flush being performed. A flush of the entire | ||
14 | address space is obviously better performed by flushing the | ||
15 | entire TLB than doing 2^48/PAGE_SIZE individual flushes. | ||
16 | 2. The contents of the TLB. If the TLB is empty, then there will | ||
17 | be no collateral damage caused by doing the global flush, and | ||
18 | all of the individual flush will have ended up being wasted | ||
19 | work. | ||
20 | 3. The size of the TLB. The larger the TLB, the more collateral | ||
21 | damage we do with a full flush. So, the larger the TLB, the | ||
22 | more attrative an individual flush looks. Data and | ||
23 | instructions have separate TLBs, as do different page sizes. | ||
24 | 4. The microarchitecture. The TLB has become a multi-level | ||
25 | cache on modern CPUs, and the global flushes have become more | ||
26 | expensive relative to single-page flushes. | ||
27 | |||
28 | There is obviously no way the kernel can know all these things, | ||
29 | especially the contents of the TLB during a given flush. The | ||
30 | sizes of the flush will vary greatly depending on the workload as | ||
31 | well. There is essentially no "right" point to choose. | ||
32 | |||
33 | You may be doing too many individual invalidations if you see the | ||
34 | invlpg instruction (or instructions _near_ it) show up high in | ||
35 | profiles. If you believe that individual invalidations being | ||
36 | called too often, you can lower the tunable: | ||
37 | |||
38 | /sys/debug/kernel/x86/tlb_single_page_flush_ceiling | ||
39 | |||
40 | This will cause us to do the global flush for more cases. | ||
41 | Lowering it to 0 will disable the use of the individual flushes. | ||
42 | Setting it to 1 is a very conservative setting and it should | ||
43 | never need to be 0 under normal circumstances. | ||
44 | |||
45 | Despite the fact that a single individual flush on x86 is | ||
46 | guaranteed to flush a full 2MB [1], hugetlbfs always uses the full | ||
47 | flushes. THP is treated exactly the same as normal memory. | ||
48 | |||
49 | You might see invlpg inside of flush_tlb_mm_range() show up in | ||
50 | profiles, or you can use the trace_tlb_flush() tracepoints. to | ||
51 | determine how long the flush operations are taking. | ||
52 | |||
53 | Essentially, you are balancing the cycles you spend doing invlpg | ||
54 | with the cycles that you spend refilling the TLB later. | ||
55 | |||
56 | You can measure how expensive TLB refills are by using | ||
57 | performance counters and 'perf stat', like this: | ||
58 | |||
59 | perf stat -e | ||
60 | cpu/event=0x8,umask=0x84,name=dtlb_load_misses_walk_duration/, | ||
61 | cpu/event=0x8,umask=0x82,name=dtlb_load_misses_walk_completed/, | ||
62 | cpu/event=0x49,umask=0x4,name=dtlb_store_misses_walk_duration/, | ||
63 | cpu/event=0x49,umask=0x2,name=dtlb_store_misses_walk_completed/, | ||
64 | cpu/event=0x85,umask=0x4,name=itlb_misses_walk_duration/, | ||
65 | cpu/event=0x85,umask=0x2,name=itlb_misses_walk_completed/ | ||
66 | |||
67 | That works on an IvyBridge-era CPU (i5-3320M). Different CPUs | ||
68 | may have differently-named counters, but they should at least | ||
69 | be there in some form. You can use pmu-tools 'ocperf list' | ||
70 | (https://github.com/andikleen/pmu-tools) to find the right | ||
71 | counters for a given CPU. | ||
72 | |||
73 | 1. A footnote in Intel's SDM "4.10.4.2 Recommended Invalidation" | ||
74 | says: "One execution of INVLPG is sufficient even for a page | ||
75 | with size greater than 4 KBytes." | ||
diff --git a/Documentation/zh_CN/SubmittingDrivers b/Documentation/zh_CN/SubmittingDrivers index 5889f8df6312..d313f5d8448d 100644 --- a/Documentation/zh_CN/SubmittingDrivers +++ b/Documentation/zh_CN/SubmittingDrivers | |||
@@ -150,10 +150,6 @@ LWN.net: | |||
150 | 将旧版内核的驱动程序移植到 2.6 版: | 150 | 将旧版内核的驱动程序移植到 2.6 版: |
151 | http://lwn.net/Articles/driver-porting/ | 151 | http://lwn.net/Articles/driver-porting/ |
152 | 152 | ||
153 | KernelTrap: | ||
154 | Linux 内核的最新动态以及开发者访谈 | ||
155 | http://kerneltrap.org/ | ||
156 | |||
157 | 内核新手(KernelNewbies): | 153 | 内核新手(KernelNewbies): |
158 | 为新的内核开发者提供文档和帮助 | 154 | 为新的内核开发者提供文档和帮助 |
159 | http://kernelnewbies.org/ | 155 | http://kernelnewbies.org/ |
diff --git a/Documentation/zh_CN/video4linux/v4l2-framework.txt b/Documentation/zh_CN/video4linux/v4l2-framework.txt index 0da95dbaef34..2b828e631e31 100644 --- a/Documentation/zh_CN/video4linux/v4l2-framework.txt +++ b/Documentation/zh_CN/video4linux/v4l2-framework.txt | |||
@@ -580,11 +580,6 @@ release()回调必须被设置,且在最后一个 video_device 用户退出之 | |||
580 | v4l2_device 无法与特定的 PCI 设备关联,所有没有设置父设备。但当 | 580 | v4l2_device 无法与特定的 PCI 设备关联,所有没有设置父设备。但当 |
581 | video_device 配置后,就知道使用哪个父 PCI 设备了。 | 581 | video_device 配置后,就知道使用哪个父 PCI 设备了。 |
582 | 582 | ||
583 | - flags:可选。如果你要让框架处理设置 VIDIOC_G/S_PRIORITY ioctls, | ||
584 | 请设置 V4L2_FL_USE_FH_PRIO。这要求你使用 v4l2_fh 结构体。 | ||
585 | 一旦所有驱动使用了核心的优先级处理,最终这个标志将消失。但现在它 | ||
586 | 必须被显式设置。 | ||
587 | |||
588 | 如果你使用 v4l2_ioctl_ops,则应该在 v4l2_file_operations 结构体中 | 583 | 如果你使用 v4l2_ioctl_ops,则应该在 v4l2_file_operations 结构体中 |
589 | 设置 .unlocked_ioctl 指向 video_ioctl2。 | 584 | 设置 .unlocked_ioctl 指向 video_ioctl2。 |
590 | 585 | ||
@@ -789,7 +784,7 @@ v4l2_fh 结构体 | |||
789 | ------------- | 784 | ------------- |
790 | 785 | ||
791 | v4l2_fh 结构体提供一个保存用于 V4L2 框架的文件句柄特定数据的简单方法。 | 786 | v4l2_fh 结构体提供一个保存用于 V4L2 框架的文件句柄特定数据的简单方法。 |
792 | 如果 video_device 的 flag 设置了 V4L2_FL_USE_FH_PRIO 标志,新驱动 | 787 | 如果 video_device 标志,新驱动 |
793 | 必须使用 v4l2_fh 结构体,因为它也用于实现优先级处理(VIDIOC_G/S_PRIORITY)。 | 788 | 必须使用 v4l2_fh 结构体,因为它也用于实现优先级处理(VIDIOC_G/S_PRIORITY)。 |
794 | 789 | ||
795 | v4l2_fh 的用户(位于 V4l2 框架中,并非驱动)可通过测试 | 790 | v4l2_fh 的用户(位于 V4l2 框架中,并非驱动)可通过测试 |