Linux 3.12-rc4
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iQEcBAABAgAGBQJSUc9zAAoJEHm+PkMAQRiG9DMH/AtpuAF6LlMRPjrCeuJQ1pyh T0IUO+CsLKO6qtM5IyweP8V6zaasNjIuW1+B6IwVIl8aOrM+M7CwRiKvpey26ldM I8G2ron7hqSOSQqSQs20jN2yGAqQGpYIbTmpdGLAjQ350NNNvEKthbP5SZR5PAmE UuIx5OGEkaOyZXvCZJXU9AZkCxbihlMSt2zFVxybq2pwnGezRUYgCigE81aeyE0I QLwzzMVdkCxtZEpkdJMpLILAz22jN4RoVDbXRa2XC7dA9I2PEEXI9CcLzqCsx2Ii 8eYS+no2K5N2rrpER7JFUB2B/2X8FaVDE+aJBCkfbtwaYTV9UYLq3a/sKVpo1Cs= =xSFJ -----END PGP SIGNATURE----- Merge tag 'v3.12-rc4' into next Merge with mainline to bring in changes to input subsystem that were committed through other trees.
This commit is contained in:
commit
e3c55d406b
15
CREDITS
15
CREDITS
@ -637,14 +637,13 @@ S: 14509 NE 39th Street #1096
|
|||||||
S: Bellevue, Washington 98007
|
S: Bellevue, Washington 98007
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
N: Christopher L. Cheney
|
N: Chris Cheney
|
||||||
E: ccheney@debian.org
|
E: chris.cheney@gmail.com
|
||||||
E: ccheney@cheney.cx
|
E: ccheney@redhat.com
|
||||||
W: http://www.cheney.cx
|
|
||||||
P: 1024D/8E384AF2 2D31 1927 87D7 1F24 9FF9 1BC5 D106 5AB3 8E38 4AF2
|
P: 1024D/8E384AF2 2D31 1927 87D7 1F24 9FF9 1BC5 D106 5AB3 8E38 4AF2
|
||||||
D: Vista Imaging usb webcam driver
|
D: Vista Imaging usb webcam driver
|
||||||
S: 314 Prince of Wales
|
S: 2308 Therrell Way
|
||||||
S: Conroe, TX 77304
|
S: McKinney, TX 75070
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
N: Stuart Cheshire
|
N: Stuart Cheshire
|
||||||
@ -1120,6 +1119,7 @@ D: author of userfs filesystem
|
|||||||
D: Improved mmap and munmap handling
|
D: Improved mmap and munmap handling
|
||||||
D: General mm minor tidyups
|
D: General mm minor tidyups
|
||||||
D: autofs v4 maintainer
|
D: autofs v4 maintainer
|
||||||
|
D: Xen subsystem
|
||||||
S: 987 Alabama St
|
S: 987 Alabama St
|
||||||
S: San Francisco
|
S: San Francisco
|
||||||
S: CA, 94110
|
S: CA, 94110
|
||||||
@ -2808,8 +2808,7 @@ S: Ottawa, Ontario
|
|||||||
S: Canada K2P 0X8
|
S: Canada K2P 0X8
|
||||||
|
|
||||||
N: Mikael Pettersson
|
N: Mikael Pettersson
|
||||||
E: mikpe@it.uu.se
|
E: mikpelinux@gmail.com
|
||||||
W: http://user.it.uu.se/~mikpe/linux/
|
|
||||||
D: Miscellaneous fixes
|
D: Miscellaneous fixes
|
||||||
|
|
||||||
N: Reed H. Petty
|
N: Reed H. Petty
|
||||||
|
@ -40,7 +40,7 @@ IPMI.txt
|
|||||||
IRQ-affinity.txt
|
IRQ-affinity.txt
|
||||||
- how to select which CPU(s) handle which interrupt events on SMP.
|
- how to select which CPU(s) handle which interrupt events on SMP.
|
||||||
IRQ-domain.txt
|
IRQ-domain.txt
|
||||||
- info on inerrupt numbering and setting up IRQ domains.
|
- info on interrupt numbering and setting up IRQ domains.
|
||||||
IRQ.txt
|
IRQ.txt
|
||||||
- description of what an IRQ is.
|
- description of what an IRQ is.
|
||||||
Intel-IOMMU.txt
|
Intel-IOMMU.txt
|
||||||
|
142
Documentation/ABI/stable/sysfs-bus-usb
Normal file
142
Documentation/ABI/stable/sysfs-bus-usb
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
What: /sys/bus/usb/devices/.../power/persist
|
||||||
|
Date: May 2007
|
||||||
|
KernelVersion: 2.6.23
|
||||||
|
Contact: Alan Stern <stern@rowland.harvard.edu>
|
||||||
|
Description:
|
||||||
|
If CONFIG_USB_PERSIST is set, then each USB device directory
|
||||||
|
will contain a file named power/persist. The file holds a
|
||||||
|
boolean value (0 or 1) indicating whether or not the
|
||||||
|
"USB-Persist" facility is enabled for the device. Since the
|
||||||
|
facility is inherently dangerous, it is disabled by default
|
||||||
|
for all devices except hubs. For more information, see
|
||||||
|
Documentation/usb/persist.txt.
|
||||||
|
|
||||||
|
What: /sys/bus/usb/devices/.../power/autosuspend
|
||||||
|
Date: March 2007
|
||||||
|
KernelVersion: 2.6.21
|
||||||
|
Contact: Alan Stern <stern@rowland.harvard.edu>
|
||||||
|
Description:
|
||||||
|
Each USB device directory will contain a file named
|
||||||
|
power/autosuspend. This file holds the time (in seconds)
|
||||||
|
the device must be idle before it will be autosuspended.
|
||||||
|
0 means the device will be autosuspended as soon as
|
||||||
|
possible. Negative values will prevent the device from
|
||||||
|
being autosuspended at all, and writing a negative value
|
||||||
|
will resume the device if it is already suspended.
|
||||||
|
|
||||||
|
The autosuspend delay for newly-created devices is set to
|
||||||
|
the value of the usbcore.autosuspend module parameter.
|
||||||
|
|
||||||
|
What: /sys/bus/usb/device/.../power/connected_duration
|
||||||
|
Date: January 2008
|
||||||
|
KernelVersion: 2.6.25
|
||||||
|
Contact: Sarah Sharp <sarah.a.sharp@intel.com>
|
||||||
|
Description:
|
||||||
|
If CONFIG_PM_RUNTIME is enabled then this file
|
||||||
|
is present. When read, it returns the total time (in msec)
|
||||||
|
that the USB device has been connected to the machine. This
|
||||||
|
file is read-only.
|
||||||
|
Users:
|
||||||
|
PowerTOP <power@bughost.org>
|
||||||
|
http://www.lesswatts.org/projects/powertop/
|
||||||
|
|
||||||
|
What: /sys/bus/usb/device/.../power/active_duration
|
||||||
|
Date: January 2008
|
||||||
|
KernelVersion: 2.6.25
|
||||||
|
Contact: Sarah Sharp <sarah.a.sharp@intel.com>
|
||||||
|
Description:
|
||||||
|
If CONFIG_PM_RUNTIME is enabled then this file
|
||||||
|
is present. When read, it returns the total time (in msec)
|
||||||
|
that the USB device has been active, i.e. not in a suspended
|
||||||
|
state. This file is read-only.
|
||||||
|
|
||||||
|
Tools can use this file and the connected_duration file to
|
||||||
|
compute the percentage of time that a device has been active.
|
||||||
|
For example,
|
||||||
|
echo $((100 * `cat active_duration` / `cat connected_duration`))
|
||||||
|
will give an integer percentage. Note that this does not
|
||||||
|
account for counter wrap.
|
||||||
|
Users:
|
||||||
|
PowerTOP <power@bughost.org>
|
||||||
|
http://www.lesswatts.org/projects/powertop/
|
||||||
|
|
||||||
|
What: /sys/bus/usb/devices/<busnum>-<port[.port]>...:<config num>-<interface num>/supports_autosuspend
|
||||||
|
Date: January 2008
|
||||||
|
KernelVersion: 2.6.27
|
||||||
|
Contact: Sarah Sharp <sarah.a.sharp@intel.com>
|
||||||
|
Description:
|
||||||
|
When read, this file returns 1 if the interface driver
|
||||||
|
for this interface supports autosuspend. It also
|
||||||
|
returns 1 if no driver has claimed this interface, as an
|
||||||
|
unclaimed interface will not stop the device from being
|
||||||
|
autosuspended if all other interface drivers are idle.
|
||||||
|
The file returns 0 if autosuspend support has not been
|
||||||
|
added to the driver.
|
||||||
|
Users:
|
||||||
|
USB PM tool
|
||||||
|
git://git.moblin.org/users/sarah/usb-pm-tool/
|
||||||
|
|
||||||
|
What: /sys/bus/usb/device/.../avoid_reset_quirk
|
||||||
|
Date: December 2009
|
||||||
|
Contact: Oliver Neukum <oliver@neukum.org>
|
||||||
|
Description:
|
||||||
|
Writing 1 to this file tells the kernel that this
|
||||||
|
device will morph into another mode when it is reset.
|
||||||
|
Drivers will not use reset for error handling for
|
||||||
|
such devices.
|
||||||
|
Users:
|
||||||
|
usb_modeswitch
|
||||||
|
|
||||||
|
What: /sys/bus/usb/devices/.../devnum
|
||||||
|
KernelVersion: since at least 2.6.18
|
||||||
|
Description:
|
||||||
|
Device address on the USB bus.
|
||||||
|
Users:
|
||||||
|
libusb
|
||||||
|
|
||||||
|
What: /sys/bus/usb/devices/.../bConfigurationValue
|
||||||
|
KernelVersion: since at least 2.6.18
|
||||||
|
Description:
|
||||||
|
bConfigurationValue of the *active* configuration for the
|
||||||
|
device. Writing 0 or -1 to bConfigurationValue will reset the
|
||||||
|
active configuration (unconfigure the device). Writing
|
||||||
|
another value will change the active configuration.
|
||||||
|
|
||||||
|
Note that some devices, in violation of the USB spec, have a
|
||||||
|
configuration with a value equal to 0. Writing 0 to
|
||||||
|
bConfigurationValue for these devices will install that
|
||||||
|
configuration, rather then unconfigure the device.
|
||||||
|
|
||||||
|
Writing -1 will always unconfigure the device.
|
||||||
|
Users:
|
||||||
|
libusb
|
||||||
|
|
||||||
|
What: /sys/bus/usb/devices/.../busnum
|
||||||
|
KernelVersion: 2.6.22
|
||||||
|
Description:
|
||||||
|
Bus-number of the USB-bus the device is connected to.
|
||||||
|
Users:
|
||||||
|
libusb
|
||||||
|
|
||||||
|
What: /sys/bus/usb/devices/.../descriptors
|
||||||
|
KernelVersion: 2.6.26
|
||||||
|
Description:
|
||||||
|
Binary file containing cached descriptors of the device. The
|
||||||
|
binary data consists of the device descriptor followed by the
|
||||||
|
descriptors for each configuration of the device.
|
||||||
|
Note that the wTotalLength of the config descriptors can not
|
||||||
|
be trusted, as the device may have a smaller config descriptor
|
||||||
|
than it advertises. The bLength field of each (sub) descriptor
|
||||||
|
can be trusted, and can be used to seek forward one (sub)
|
||||||
|
descriptor at a time until the next config descriptor is found.
|
||||||
|
All descriptors read from this file are in bus-endian format
|
||||||
|
Users:
|
||||||
|
libusb
|
||||||
|
|
||||||
|
What: /sys/bus/usb/devices/.../speed
|
||||||
|
KernelVersion: since at least 2.6.18
|
||||||
|
Description:
|
||||||
|
Speed the device is connected with to the usb-host in
|
||||||
|
Mbit / second. IE one of 1.5 / 12 / 480 / 5000.
|
||||||
|
Users:
|
||||||
|
libusb
|
@ -5,20 +5,21 @@ Description:
|
|||||||
The disksize file is read-write and specifies the disk size
|
The disksize file is read-write and specifies the disk size
|
||||||
which represents the limit on the *uncompressed* worth of data
|
which represents the limit on the *uncompressed* worth of data
|
||||||
that can be stored in this disk.
|
that can be stored in this disk.
|
||||||
|
Unit: bytes
|
||||||
|
|
||||||
What: /sys/block/zram<id>/initstate
|
What: /sys/block/zram<id>/initstate
|
||||||
Date: August 2010
|
Date: August 2010
|
||||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||||
Description:
|
Description:
|
||||||
The disksize file is read-only and shows the initialization
|
The initstate file is read-only and shows the initialization
|
||||||
state of the device.
|
state of the device.
|
||||||
|
|
||||||
What: /sys/block/zram<id>/reset
|
What: /sys/block/zram<id>/reset
|
||||||
Date: August 2010
|
Date: August 2010
|
||||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||||
Description:
|
Description:
|
||||||
The disksize file is write-only and allows resetting the
|
The reset file is write-only and allows resetting the
|
||||||
device. The reset operation frees all the memory assocaited
|
device. The reset operation frees all the memory associated
|
||||||
with this device.
|
with this device.
|
||||||
|
|
||||||
What: /sys/block/zram<id>/num_reads
|
What: /sys/block/zram<id>/num_reads
|
||||||
@ -48,7 +49,7 @@ Contact: Nitin Gupta <ngupta@vflare.org>
|
|||||||
Description:
|
Description:
|
||||||
The notify_free file is read-only and specifies the number of
|
The notify_free file is read-only and specifies the number of
|
||||||
swap slot free notifications received by this device. These
|
swap slot free notifications received by this device. These
|
||||||
notifications are send to a swap block device when a swap slot
|
notifications are sent to a swap block device when a swap slot
|
||||||
is freed. This statistic is applicable only when this disk is
|
is freed. This statistic is applicable only when this disk is
|
||||||
being used as a swap disk.
|
being used as a swap disk.
|
||||||
|
|
||||||
|
@ -351,6 +351,7 @@ Description:
|
|||||||
6kohm_to_gnd: connected to ground via a 6kOhm resistor,
|
6kohm_to_gnd: connected to ground via a 6kOhm resistor,
|
||||||
20kohm_to_gnd: connected to ground via a 20kOhm resistor,
|
20kohm_to_gnd: connected to ground via a 20kOhm resistor,
|
||||||
100kohm_to_gnd: connected to ground via an 100kOhm resistor,
|
100kohm_to_gnd: connected to ground via an 100kOhm resistor,
|
||||||
|
500kohm_to_gnd: connected to ground via a 500kOhm resistor,
|
||||||
three_state: left floating.
|
three_state: left floating.
|
||||||
For a list of available output power down options read
|
For a list of available output power down options read
|
||||||
outX_powerdown_mode_available. If Y is not present the
|
outX_powerdown_mode_available. If Y is not present the
|
||||||
@ -792,3 +793,21 @@ Contact: linux-iio@vger.kernel.org
|
|||||||
Description:
|
Description:
|
||||||
This attribute is used to read the amount of quadrature error
|
This attribute is used to read the amount of quadrature error
|
||||||
present in the device at a given time.
|
present in the device at a given time.
|
||||||
|
|
||||||
|
What: /sys/.../iio:deviceX/in_accelX_power_mode
|
||||||
|
KernelVersion: 3.11
|
||||||
|
Contact: linux-iio@vger.kernel.org
|
||||||
|
Description:
|
||||||
|
Specifies the chip power mode.
|
||||||
|
low_noise: reduce noise level from ADC,
|
||||||
|
low_power: enable low current consumption.
|
||||||
|
For a list of available output power modes read
|
||||||
|
in_accel_power_mode_available.
|
||||||
|
|
||||||
|
What: /sys/bus/iio/devices/iio:deviceX/store_eeprom
|
||||||
|
KernelVersion: 3.4.0
|
||||||
|
Contact: linux-iio@vger.kernel.org
|
||||||
|
Description:
|
||||||
|
Writing '1' stores the current device configuration into
|
||||||
|
on-chip EEPROM. After power-up or chip reset the device will
|
||||||
|
automatically load the saved configuration.
|
||||||
|
@ -18,14 +18,6 @@ Description:
|
|||||||
Reading returns either '1' or '0'. '1' means that the
|
Reading returns either '1' or '0'. '1' means that the
|
||||||
pllY is locked.
|
pllY is locked.
|
||||||
|
|
||||||
What: /sys/bus/iio/devices/iio:deviceX/store_eeprom
|
|
||||||
KernelVersion: 3.4.0
|
|
||||||
Contact: linux-iio@vger.kernel.org
|
|
||||||
Description:
|
|
||||||
Writing '1' stores the current device configuration into
|
|
||||||
on-chip EEPROM. After power-up or chip reset the device will
|
|
||||||
automatically load the saved configuration.
|
|
||||||
|
|
||||||
What: /sys/bus/iio/devices/iio:deviceX/sync_dividers
|
What: /sys/bus/iio/devices/iio:deviceX/sync_dividers
|
||||||
KernelVersion: 3.4.0
|
KernelVersion: 3.4.0
|
||||||
Contact: linux-iio@vger.kernel.org
|
Contact: linux-iio@vger.kernel.org
|
||||||
|
@ -18,4 +18,4 @@ Description:
|
|||||||
adjust the reference frequency accordingly.
|
adjust the reference frequency accordingly.
|
||||||
The value written has no effect until out_altvoltageY_frequency
|
The value written has no effect until out_altvoltageY_frequency
|
||||||
is updated. Consider to use out_altvoltageY_powerdown to power
|
is updated. Consider to use out_altvoltageY_powerdown to power
|
||||||
down the PLL and it's RFOut buffers during REFin changes.
|
down the PLL and its RFOut buffers during REFin changes.
|
||||||
|
@ -1,81 +1,3 @@
|
|||||||
What: /sys/bus/usb/devices/.../power/autosuspend
|
|
||||||
Date: March 2007
|
|
||||||
KernelVersion: 2.6.21
|
|
||||||
Contact: Alan Stern <stern@rowland.harvard.edu>
|
|
||||||
Description:
|
|
||||||
Each USB device directory will contain a file named
|
|
||||||
power/autosuspend. This file holds the time (in seconds)
|
|
||||||
the device must be idle before it will be autosuspended.
|
|
||||||
0 means the device will be autosuspended as soon as
|
|
||||||
possible. Negative values will prevent the device from
|
|
||||||
being autosuspended at all, and writing a negative value
|
|
||||||
will resume the device if it is already suspended.
|
|
||||||
|
|
||||||
The autosuspend delay for newly-created devices is set to
|
|
||||||
the value of the usbcore.autosuspend module parameter.
|
|
||||||
|
|
||||||
What: /sys/bus/usb/devices/.../power/persist
|
|
||||||
Date: May 2007
|
|
||||||
KernelVersion: 2.6.23
|
|
||||||
Contact: Alan Stern <stern@rowland.harvard.edu>
|
|
||||||
Description:
|
|
||||||
If CONFIG_USB_PERSIST is set, then each USB device directory
|
|
||||||
will contain a file named power/persist. The file holds a
|
|
||||||
boolean value (0 or 1) indicating whether or not the
|
|
||||||
"USB-Persist" facility is enabled for the device. Since the
|
|
||||||
facility is inherently dangerous, it is disabled by default
|
|
||||||
for all devices except hubs. For more information, see
|
|
||||||
Documentation/usb/persist.txt.
|
|
||||||
|
|
||||||
What: /sys/bus/usb/device/.../power/connected_duration
|
|
||||||
Date: January 2008
|
|
||||||
KernelVersion: 2.6.25
|
|
||||||
Contact: Sarah Sharp <sarah.a.sharp@intel.com>
|
|
||||||
Description:
|
|
||||||
If CONFIG_PM_RUNTIME is enabled then this file
|
|
||||||
is present. When read, it returns the total time (in msec)
|
|
||||||
that the USB device has been connected to the machine. This
|
|
||||||
file is read-only.
|
|
||||||
Users:
|
|
||||||
PowerTOP <power@bughost.org>
|
|
||||||
http://www.lesswatts.org/projects/powertop/
|
|
||||||
|
|
||||||
What: /sys/bus/usb/device/.../power/active_duration
|
|
||||||
Date: January 2008
|
|
||||||
KernelVersion: 2.6.25
|
|
||||||
Contact: Sarah Sharp <sarah.a.sharp@intel.com>
|
|
||||||
Description:
|
|
||||||
If CONFIG_PM_RUNTIME is enabled then this file
|
|
||||||
is present. When read, it returns the total time (in msec)
|
|
||||||
that the USB device has been active, i.e. not in a suspended
|
|
||||||
state. This file is read-only.
|
|
||||||
|
|
||||||
Tools can use this file and the connected_duration file to
|
|
||||||
compute the percentage of time that a device has been active.
|
|
||||||
For example,
|
|
||||||
echo $((100 * `cat active_duration` / `cat connected_duration`))
|
|
||||||
will give an integer percentage. Note that this does not
|
|
||||||
account for counter wrap.
|
|
||||||
Users:
|
|
||||||
PowerTOP <power@bughost.org>
|
|
||||||
http://www.lesswatts.org/projects/powertop/
|
|
||||||
|
|
||||||
What: /sys/bus/usb/device/<busnum>-<devnum>...:<config num>-<interface num>/supports_autosuspend
|
|
||||||
Date: January 2008
|
|
||||||
KernelVersion: 2.6.27
|
|
||||||
Contact: Sarah Sharp <sarah.a.sharp@intel.com>
|
|
||||||
Description:
|
|
||||||
When read, this file returns 1 if the interface driver
|
|
||||||
for this interface supports autosuspend. It also
|
|
||||||
returns 1 if no driver has claimed this interface, as an
|
|
||||||
unclaimed interface will not stop the device from being
|
|
||||||
autosuspended if all other interface drivers are idle.
|
|
||||||
The file returns 0 if autosuspend support has not been
|
|
||||||
added to the driver.
|
|
||||||
Users:
|
|
||||||
USB PM tool
|
|
||||||
git://git.moblin.org/users/sarah/usb-pm-tool/
|
|
||||||
|
|
||||||
What: /sys/bus/usb/device/.../authorized
|
What: /sys/bus/usb/device/.../authorized
|
||||||
Date: July 2008
|
Date: July 2008
|
||||||
KernelVersion: 2.6.26
|
KernelVersion: 2.6.26
|
||||||
@ -172,17 +94,6 @@ Description:
|
|||||||
device IDs, exactly like reading from the entry
|
device IDs, exactly like reading from the entry
|
||||||
"/sys/bus/usb/drivers/.../new_id"
|
"/sys/bus/usb/drivers/.../new_id"
|
||||||
|
|
||||||
What: /sys/bus/usb/device/.../avoid_reset_quirk
|
|
||||||
Date: December 2009
|
|
||||||
Contact: Oliver Neukum <oliver@neukum.org>
|
|
||||||
Description:
|
|
||||||
Writing 1 to this file tells the kernel that this
|
|
||||||
device will morph into another mode when it is reset.
|
|
||||||
Drivers will not use reset for error handling for
|
|
||||||
such devices.
|
|
||||||
Users:
|
|
||||||
usb_modeswitch
|
|
||||||
|
|
||||||
What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm
|
What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm
|
||||||
Date: September 2011
|
Date: September 2011
|
||||||
Contact: Andiry Xu <andiry.xu@amd.com>
|
Contact: Andiry Xu <andiry.xu@amd.com>
|
||||||
|
@ -128,9 +128,8 @@ KernelVersion: 3.4
|
|||||||
Contact: linux-mtd@lists.infradead.org
|
Contact: linux-mtd@lists.infradead.org
|
||||||
Description:
|
Description:
|
||||||
Maximum number of bit errors that the device is capable of
|
Maximum number of bit errors that the device is capable of
|
||||||
correcting within each region covering an ecc step. This will
|
correcting within each region covering an ECC step (see
|
||||||
always be a non-negative integer. Note that some devices will
|
ecc_step_size). This will always be a non-negative integer.
|
||||||
have multiple ecc steps within each writesize region.
|
|
||||||
|
|
||||||
In the case of devices lacking any ECC capability, it is 0.
|
In the case of devices lacking any ECC capability, it is 0.
|
||||||
|
|
||||||
@ -173,3 +172,15 @@ Description:
|
|||||||
This is generally applicable only to NAND flash devices with ECC
|
This is generally applicable only to NAND flash devices with ECC
|
||||||
capability. It is ignored on devices lacking ECC capability;
|
capability. It is ignored on devices lacking ECC capability;
|
||||||
i.e., devices for which ecc_strength is zero.
|
i.e., devices for which ecc_strength is zero.
|
||||||
|
|
||||||
|
What: /sys/class/mtd/mtdX/ecc_step_size
|
||||||
|
Date: May 2013
|
||||||
|
KernelVersion: 3.10
|
||||||
|
Contact: linux-mtd@lists.infradead.org
|
||||||
|
Description:
|
||||||
|
The size of a single region covered by ECC, known as the ECC
|
||||||
|
step. Devices may have several equally sized ECC steps within
|
||||||
|
each writesize region.
|
||||||
|
|
||||||
|
It will always be a non-negative integer. In the case of
|
||||||
|
devices lacking any ECC capability, it is 0.
|
||||||
|
26
Documentation/ABI/testing/sysfs-fs-f2fs
Normal file
26
Documentation/ABI/testing/sysfs-fs-f2fs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
What: /sys/fs/f2fs/<disk>/gc_max_sleep_time
|
||||||
|
Date: July 2013
|
||||||
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
|
Description:
|
||||||
|
Controls the maximun sleep time for gc_thread. Time
|
||||||
|
is in milliseconds.
|
||||||
|
|
||||||
|
What: /sys/fs/f2fs/<disk>/gc_min_sleep_time
|
||||||
|
Date: July 2013
|
||||||
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
|
Description:
|
||||||
|
Controls the minimum sleep time for gc_thread. Time
|
||||||
|
is in milliseconds.
|
||||||
|
|
||||||
|
What: /sys/fs/f2fs/<disk>/gc_no_gc_sleep_time
|
||||||
|
Date: July 2013
|
||||||
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
|
Description:
|
||||||
|
Controls the default sleep time for gc_thread. Time
|
||||||
|
is in milliseconds.
|
||||||
|
|
||||||
|
What: /sys/fs/f2fs/<disk>/gc_idle
|
||||||
|
Date: July 2013
|
||||||
|
Contact: "Namjae Jeon" <namjae.jeon@samsung.com>
|
||||||
|
Description:
|
||||||
|
Controls the victim selection policy for garbage collection.
|
@ -325,6 +325,7 @@
|
|||||||
<title>functions/definitions</title>
|
<title>functions/definitions</title>
|
||||||
!Finclude/net/mac80211.h ieee80211_rx_status
|
!Finclude/net/mac80211.h ieee80211_rx_status
|
||||||
!Finclude/net/mac80211.h mac80211_rx_flags
|
!Finclude/net/mac80211.h mac80211_rx_flags
|
||||||
|
!Finclude/net/mac80211.h mac80211_tx_info_flags
|
||||||
!Finclude/net/mac80211.h mac80211_tx_control_flags
|
!Finclude/net/mac80211.h mac80211_tx_control_flags
|
||||||
!Finclude/net/mac80211.h mac80211_rate_control_flags
|
!Finclude/net/mac80211.h mac80211_rate_control_flags
|
||||||
!Finclude/net/mac80211.h ieee80211_tx_rate
|
!Finclude/net/mac80211.h ieee80211_tx_rate
|
||||||
|
@ -155,13 +155,6 @@
|
|||||||
will become a fatal error.
|
will become a fatal error.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
|
||||||
<term>DRIVER_USE_MTRR</term>
|
|
||||||
<listitem><para>
|
|
||||||
Driver uses MTRR interface for mapping memory, the DRM core will
|
|
||||||
manage MTRR resources. Deprecated.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>DRIVER_PCI_DMA</term>
|
<term>DRIVER_PCI_DMA</term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
@ -194,28 +187,6 @@
|
|||||||
support shared IRQs (note that this is required of PCI drivers).
|
support shared IRQs (note that this is required of PCI drivers).
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
|
||||||
<term>DRIVER_IRQ_VBL</term>
|
|
||||||
<listitem><para>Unused. Deprecated.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>DRIVER_DMA_QUEUE</term>
|
|
||||||
<listitem><para>
|
|
||||||
Should be set if the driver queues DMA requests and completes them
|
|
||||||
asynchronously. Deprecated.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>DRIVER_FB_DMA</term>
|
|
||||||
<listitem><para>
|
|
||||||
Driver supports DMA to/from the framebuffer, mapping of frambuffer
|
|
||||||
DMA buffers to userspace will be supported. Deprecated.
|
|
||||||
</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
|
||||||
<term>DRIVER_IRQ_VBL2</term>
|
|
||||||
<listitem><para>Unused. Deprecated.</para></listitem>
|
|
||||||
</varlistentry>
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>DRIVER_GEM</term>
|
<term>DRIVER_GEM</term>
|
||||||
<listitem><para>
|
<listitem><para>
|
||||||
@ -234,6 +205,12 @@
|
|||||||
Driver implements DRM PRIME buffer sharing.
|
Driver implements DRM PRIME buffer sharing.
|
||||||
</para></listitem>
|
</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>DRIVER_RENDER</term>
|
||||||
|
<listitem><para>
|
||||||
|
Driver supports dedicated render nodes.
|
||||||
|
</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</sect3>
|
</sect3>
|
||||||
<sect3>
|
<sect3>
|
||||||
@ -2212,6 +2189,18 @@ void intel_crt_init(struct drm_device *dev)
|
|||||||
!Iinclude/drm/drm_rect.h
|
!Iinclude/drm/drm_rect.h
|
||||||
!Edrivers/gpu/drm/drm_rect.c
|
!Edrivers/gpu/drm/drm_rect.c
|
||||||
</sect2>
|
</sect2>
|
||||||
|
<sect2>
|
||||||
|
<title>Flip-work Helper Reference</title>
|
||||||
|
!Pinclude/drm/drm_flip_work.h flip utils
|
||||||
|
!Iinclude/drm/drm_flip_work.h
|
||||||
|
!Edrivers/gpu/drm/drm_flip_work.c
|
||||||
|
</sect2>
|
||||||
|
<sect2>
|
||||||
|
<title>VMA Offset Manager</title>
|
||||||
|
!Pdrivers/gpu/drm/drm_vma_manager.c vma offset manager
|
||||||
|
!Edrivers/gpu/drm/drm_vma_manager.c
|
||||||
|
!Iinclude/drm/drm_vma_manager.h
|
||||||
|
</sect2>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<!-- Internals: kms properties -->
|
<!-- Internals: kms properties -->
|
||||||
@ -2422,18 +2411,18 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
|
|||||||
</abstract>
|
</abstract>
|
||||||
<para>
|
<para>
|
||||||
The <methodname>firstopen</methodname> method is called by the DRM core
|
The <methodname>firstopen</methodname> method is called by the DRM core
|
||||||
when an application opens a device that has no other opened file handle.
|
for legacy UMS (User Mode Setting) drivers only when an application
|
||||||
Similarly the <methodname>lastclose</methodname> method is called when
|
opens a device that has no other opened file handle. UMS drivers can
|
||||||
the last application holding a file handle opened on the device closes
|
implement it to acquire device resources. KMS drivers can't use the
|
||||||
it. Both methods are mostly used for UMS (User Mode Setting) drivers to
|
method and must acquire resources in the <methodname>load</methodname>
|
||||||
acquire and release device resources which should be done in the
|
method instead.
|
||||||
<methodname>load</methodname> and <methodname>unload</methodname>
|
|
||||||
methods for KMS drivers.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Note that the <methodname>lastclose</methodname> method is also called
|
Similarly the <methodname>lastclose</methodname> method is called when
|
||||||
at module unload time or, for hot-pluggable devices, when the device is
|
the last application holding a file handle opened on the device closes
|
||||||
unplugged. The <methodname>firstopen</methodname> and
|
it, for both UMS and KMS drivers. Additionally, the method is also
|
||||||
|
called at module unload time or, for hot-pluggable devices, when the
|
||||||
|
device is unplugged. The <methodname>firstopen</methodname> and
|
||||||
<methodname>lastclose</methodname> calls can thus be unbalanced.
|
<methodname>lastclose</methodname> calls can thus be unbalanced.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@ -2462,7 +2451,12 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
|
|||||||
<para>
|
<para>
|
||||||
The <methodname>lastclose</methodname> method should restore CRTC and
|
The <methodname>lastclose</methodname> method should restore CRTC and
|
||||||
plane properties to default value, so that a subsequent open of the
|
plane properties to default value, so that a subsequent open of the
|
||||||
device will not inherit state from the previous user.
|
device will not inherit state from the previous user. It can also be
|
||||||
|
used to execute delayed power switching state changes, e.g. in
|
||||||
|
conjunction with the vga-switcheroo infrastructure. Beyond that KMS
|
||||||
|
drivers should not do any further cleanup. Only legacy UMS drivers might
|
||||||
|
need to clean up device state so that the vga console or an independent
|
||||||
|
fbdev driver could take over.
|
||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
<sect2>
|
<sect2>
|
||||||
@ -2498,7 +2492,6 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
|
|||||||
<programlisting>
|
<programlisting>
|
||||||
.poll = drm_poll,
|
.poll = drm_poll,
|
||||||
.read = drm_read,
|
.read = drm_read,
|
||||||
.fasync = drm_fasync,
|
|
||||||
.llseek = no_llseek,
|
.llseek = no_llseek,
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</para>
|
</para>
|
||||||
@ -2657,6 +2650,69 @@ int (*resume) (struct drm_device *);</synopsis>
|
|||||||
info, since man pages should cover the rest.
|
info, since man pages should cover the rest.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<!-- External: render nodes -->
|
||||||
|
|
||||||
|
<sect1>
|
||||||
|
<title>Render nodes</title>
|
||||||
|
<para>
|
||||||
|
DRM core provides multiple character-devices for user-space to use.
|
||||||
|
Depending on which device is opened, user-space can perform a different
|
||||||
|
set of operations (mainly ioctls). The primary node is always created
|
||||||
|
and called <term>card<num></term>. Additionally, a currently
|
||||||
|
unused control node, called <term>controlD<num></term> is also
|
||||||
|
created. The primary node provides all legacy operations and
|
||||||
|
historically was the only interface used by userspace. With KMS, the
|
||||||
|
control node was introduced. However, the planned KMS control interface
|
||||||
|
has never been written and so the control node stays unused to date.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
With the increased use of offscreen renderers and GPGPU applications,
|
||||||
|
clients no longer require running compositors or graphics servers to
|
||||||
|
make use of a GPU. But the DRM API required unprivileged clients to
|
||||||
|
authenticate to a DRM-Master prior to getting GPU access. To avoid this
|
||||||
|
step and to grant clients GPU access without authenticating, render
|
||||||
|
nodes were introduced. Render nodes solely serve render clients, that
|
||||||
|
is, no modesetting or privileged ioctls can be issued on render nodes.
|
||||||
|
Only non-global rendering commands are allowed. If a driver supports
|
||||||
|
render nodes, it must advertise it via the <term>DRIVER_RENDER</term>
|
||||||
|
DRM driver capability. If not supported, the primary node must be used
|
||||||
|
for render clients together with the legacy drmAuth authentication
|
||||||
|
procedure.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
If a driver advertises render node support, DRM core will create a
|
||||||
|
separate render node called <term>renderD<num></term>. There will
|
||||||
|
be one render node per device. No ioctls except PRIME-related ioctls
|
||||||
|
will be allowed on this node. Especially <term>GEM_OPEN</term> will be
|
||||||
|
explicitly prohibited. Render nodes are designed to avoid the
|
||||||
|
buffer-leaks, which occur if clients guess the flink names or mmap
|
||||||
|
offsets on the legacy interface. Additionally to this basic interface,
|
||||||
|
drivers must mark their driver-dependent render-only ioctls as
|
||||||
|
<term>DRM_RENDER_ALLOW</term> so render clients can use them. Driver
|
||||||
|
authors must be careful not to allow any privileged ioctls on render
|
||||||
|
nodes.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
With render nodes, user-space can now control access to the render node
|
||||||
|
via basic file-system access-modes. A running graphics server which
|
||||||
|
authenticates clients on the privileged primary/legacy node is no longer
|
||||||
|
required. Instead, a client can open the render node and is immediately
|
||||||
|
granted GPU access. Communication between clients (or servers) is done
|
||||||
|
via PRIME. FLINK from render node to legacy node is not supported. New
|
||||||
|
clients must not use the insecure FLINK interface.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Besides dropping all modeset/global ioctls, render nodes also drop the
|
||||||
|
DRM-Master concept. There is no reason to associate render clients with
|
||||||
|
a DRM-Master as they are independent of any graphics server. Besides,
|
||||||
|
they must work without any running master, anyway.
|
||||||
|
Drivers must be able to run without a master object if they support
|
||||||
|
render nodes. If, on the other hand, a driver requires shared state
|
||||||
|
between clients which is visible to user-space and accessible beyond
|
||||||
|
open-file boundaries, they cannot support render nodes.
|
||||||
|
</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
<!-- External: vblank handling -->
|
<!-- External: vblank handling -->
|
||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
|
@ -722,17 +722,22 @@ for more details.</para>
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="mpeg-controls">
|
<section id="mpeg-controls">
|
||||||
<title>MPEG Control Reference</title>
|
<title>Codec Control Reference</title>
|
||||||
|
|
||||||
<para>Below all controls within the MPEG control class are
|
<para>Below all controls within the Codec control class are
|
||||||
described. First the generic controls, then controls specific for
|
described. First the generic controls, then controls specific for
|
||||||
certain hardware.</para>
|
certain hardware.</para>
|
||||||
|
|
||||||
|
<para>Note: These controls are applicable to all codecs and
|
||||||
|
not just MPEG. The defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG
|
||||||
|
as the controls were originally made for MPEG codecs and later
|
||||||
|
extended to cover all encoding formats.</para>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title>Generic MPEG Controls</title>
|
<title>Generic Codec Controls</title>
|
||||||
|
|
||||||
<table pgwide="1" frame="none" id="mpeg-control-id">
|
<table pgwide="1" frame="none" id="mpeg-control-id">
|
||||||
<title>MPEG Control IDs</title>
|
<title>Codec Control IDs</title>
|
||||||
<tgroup cols="4">
|
<tgroup cols="4">
|
||||||
<colspec colname="c1" colwidth="1*" />
|
<colspec colname="c1" colwidth="1*" />
|
||||||
<colspec colname="c2" colwidth="6*" />
|
<colspec colname="c2" colwidth="6*" />
|
||||||
@ -752,7 +757,7 @@ certain hardware.</para>
|
|||||||
<row>
|
<row>
|
||||||
<entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant> </entry>
|
<entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant> </entry>
|
||||||
<entry>class</entry>
|
<entry>class</entry>
|
||||||
</row><row><entry spanname="descr">The MPEG class
|
</row><row><entry spanname="descr">The Codec class
|
||||||
descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
|
descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
|
||||||
description of this control class. This description can be used as the
|
description of this control class. This description can be used as the
|
||||||
caption of a Tab page in a GUI, for example.</entry>
|
caption of a Tab page in a GUI, for example.</entry>
|
||||||
@ -3009,6 +3014,159 @@ in by the application. 0 = do not insert, 1 = insert packets.</entry>
|
|||||||
</tgroup>
|
</tgroup>
|
||||||
</table>
|
</table>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title>VPX Control Reference</title>
|
||||||
|
|
||||||
|
<para>The VPX controls include controls for encoding parameters
|
||||||
|
of VPx video codec.</para>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="vpx-control-id">
|
||||||
|
<title>VPX Control IDs</title>
|
||||||
|
|
||||||
|
<tgroup cols="4">
|
||||||
|
<colspec colname="c1" colwidth="1*" />
|
||||||
|
<colspec colname="c2" colwidth="6*" />
|
||||||
|
<colspec colname="c3" colwidth="2*" />
|
||||||
|
<colspec colname="c4" colwidth="6*" />
|
||||||
|
<spanspec namest="c1" nameend="c2" spanname="id" />
|
||||||
|
<spanspec namest="c2" nameend="c4" spanname="descr" />
|
||||||
|
<thead>
|
||||||
|
<row>
|
||||||
|
<entry spanname="id" align="left">ID</entry>
|
||||||
|
<entry align="left">Type</entry>
|
||||||
|
</row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<row><entry></entry></row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
<row id="v4l2-vpx-num-partitions">
|
||||||
|
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS</constant></entry>
|
||||||
|
<entry>enum v4l2_vp8_num_partitions</entry>
|
||||||
|
</row>
|
||||||
|
<row><entry spanname="descr">The number of token partitions to use in VP8 encoder.
|
||||||
|
Possible values are:</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entrytbl spanname="descr" cols="2">
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION</constant></entry>
|
||||||
|
<entry>1 coefficient partition</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS</constant></entry>
|
||||||
|
<entry>2 coefficient partitions</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS</constant></entry>
|
||||||
|
<entry>4 coefficient partitions</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS</constant></entry>
|
||||||
|
<entry>8 coefficient partitions</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</entrytbl>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
<row>
|
||||||
|
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4</constant></entry>
|
||||||
|
<entry>boolean</entry>
|
||||||
|
</row>
|
||||||
|
<row><entry spanname="descr">Setting this prevents intra 4x4 mode in the intra mode decision.</entry>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
<row id="v4l2-vpx-num-ref-frames">
|
||||||
|
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES</constant></entry>
|
||||||
|
<entry>enum v4l2_vp8_num_ref_frames</entry>
|
||||||
|
</row>
|
||||||
|
<row><entry spanname="descr">The number of reference pictures for encoding P frames.
|
||||||
|
Possible values are:</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entrytbl spanname="descr" cols="2">
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME</constant></entry>
|
||||||
|
<entry>Last encoded frame will be searched</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME</constant></entry>
|
||||||
|
<entry>Two frames will be searched among the last encoded frame, the golden frame
|
||||||
|
and the alternate reference (altref) frame. The encoder implementation will decide which two are chosen.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME</constant></entry>
|
||||||
|
<entry>The last encoded frame, the golden frame and the altref frame will be searched.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</entrytbl>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
<row>
|
||||||
|
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL</constant></entry>
|
||||||
|
<entry>integer</entry>
|
||||||
|
</row>
|
||||||
|
<row><entry spanname="descr">Indicates the loop filter level. The adjustment of the loop
|
||||||
|
filter level is done via a delta value against a baseline loop filter value.</entry>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
<row>
|
||||||
|
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS</constant></entry>
|
||||||
|
<entry>integer</entry>
|
||||||
|
</row>
|
||||||
|
<row><entry spanname="descr">This parameter affects the loop filter. Anything above
|
||||||
|
zero weakens the deblocking effect on the loop filter.</entry>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
<row>
|
||||||
|
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD</constant></entry>
|
||||||
|
<entry>integer</entry>
|
||||||
|
</row>
|
||||||
|
<row><entry spanname="descr">Sets the refresh period for the golden frame. The period is defined
|
||||||
|
in number of frames. For a value of 'n', every nth frame starting from the first key frame will be taken as a golden frame.
|
||||||
|
For eg. for encoding sequence of 0, 1, 2, 3, 4, 5, 6, 7 where the golden frame refresh period is set as 4, the frames
|
||||||
|
0, 4, 8 etc will be taken as the golden frames as frame 0 is always a key frame.</entry>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
<row id="v4l2-vpx-golden-frame-sel">
|
||||||
|
<entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL</constant></entry>
|
||||||
|
<entry>enum v4l2_vp8_golden_frame_sel</entry>
|
||||||
|
</row>
|
||||||
|
<row><entry spanname="descr">Selects the golden frame for encoding.
|
||||||
|
Possible values are:</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entrytbl spanname="descr" cols="2">
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV</constant></entry>
|
||||||
|
<entry>Use the (n-2)th frame as a golden frame, current frame index being 'n'.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD</constant></entry>
|
||||||
|
<entry>Use the previous specific frame indicated by
|
||||||
|
V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a golden frame.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</entrytbl>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row><entry></entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="camera-controls">
|
<section id="camera-controls">
|
||||||
|
@ -46,7 +46,9 @@ describing an IR signal are read from the chardev.</para>
|
|||||||
values. Pulses and spaces are only marked implicitly by their position. The
|
values. Pulses and spaces are only marked implicitly by their position. The
|
||||||
data must start and end with a pulse, therefore, the data must always include
|
data must start and end with a pulse, therefore, the data must always include
|
||||||
an uneven number of samples. The write function must block until the data has
|
an uneven number of samples. The write function must block until the data has
|
||||||
been transmitted by the hardware.</para>
|
been transmitted by the hardware. If more data is provided than the hardware
|
||||||
|
can send, the driver returns EINVAL.</para>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="lirc_ioctl">
|
<section id="lirc_ioctl">
|
||||||
|
171
Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
Normal file
171
Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
<refentry>
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')</refentrytitle>
|
||||||
|
&manvol;
|
||||||
|
</refmeta>
|
||||||
|
<refnamediv>
|
||||||
|
<refname id="V4L2-PIX-FMT-NV16M"><constant>V4L2_PIX_FMT_NV16M</constant></refname>
|
||||||
|
<refname id="V4L2-PIX-FMT-NV61M"><constant>V4L2_PIX_FMT_NV61M</constant></refname>
|
||||||
|
<refpurpose>Variation of <constant>V4L2_PIX_FMT_NV16</constant> and <constant>V4L2_PIX_FMT_NV61</constant> with planes
|
||||||
|
non contiguous in memory. </refpurpose>
|
||||||
|
</refnamediv>
|
||||||
|
<refsect1>
|
||||||
|
<title>Description</title>
|
||||||
|
|
||||||
|
<para>This is a multi-planar, two-plane version of the YUV 4:2:0 format.
|
||||||
|
The three components are separated into two sub-images or planes.
|
||||||
|
<constant>V4L2_PIX_FMT_NV16M</constant> differs from <constant>V4L2_PIX_FMT_NV16
|
||||||
|
</constant> in that the two planes are non-contiguous in memory, i.e. the chroma
|
||||||
|
plane does not necessarily immediately follows the luma plane.
|
||||||
|
The luminance data occupies the first plane. The Y plane has one byte per pixel.
|
||||||
|
In the second plane there is chrominance data with alternating chroma samples.
|
||||||
|
The CbCr plane is the same width and height, in bytes, as the Y plane.
|
||||||
|
Each CbCr pair belongs to four pixels. For example,
|
||||||
|
Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
|
||||||
|
Y'<subscript>00</subscript>, Y'<subscript>01</subscript>,
|
||||||
|
Y'<subscript>10</subscript>, Y'<subscript>11</subscript>.
|
||||||
|
<constant>V4L2_PIX_FMT_NV61M</constant> is the same as <constant>V4L2_PIX_FMT_NV16M</constant>
|
||||||
|
except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para>
|
||||||
|
|
||||||
|
<para><constant>V4L2_PIX_FMT_NV16M</constant> and
|
||||||
|
<constant>V4L2_PIX_FMT_NV61M</constant> are intended to be used only in drivers
|
||||||
|
and applications that support the multi-planar API, described in
|
||||||
|
<xref linkend="planar-apis"/>. </para>
|
||||||
|
|
||||||
|
<example>
|
||||||
|
<title><constant>V4L2_PIX_FMT_NV16M</constant> 4 × 4 pixel image</title>
|
||||||
|
|
||||||
|
<formalpara>
|
||||||
|
<title>Byte Order.</title>
|
||||||
|
<para>Each cell is one byte.
|
||||||
|
<informaltable frame="none">
|
||||||
|
<tgroup cols="5" align="center">
|
||||||
|
<colspec align="left" colwidth="2*" />
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry>start0 + 0:</entry>
|
||||||
|
<entry>Y'<subscript>00</subscript></entry>
|
||||||
|
<entry>Y'<subscript>01</subscript></entry>
|
||||||
|
<entry>Y'<subscript>02</subscript></entry>
|
||||||
|
<entry>Y'<subscript>03</subscript></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>start0 + 4:</entry>
|
||||||
|
<entry>Y'<subscript>10</subscript></entry>
|
||||||
|
<entry>Y'<subscript>11</subscript></entry>
|
||||||
|
<entry>Y'<subscript>12</subscript></entry>
|
||||||
|
<entry>Y'<subscript>13</subscript></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>start0 + 8:</entry>
|
||||||
|
<entry>Y'<subscript>20</subscript></entry>
|
||||||
|
<entry>Y'<subscript>21</subscript></entry>
|
||||||
|
<entry>Y'<subscript>22</subscript></entry>
|
||||||
|
<entry>Y'<subscript>23</subscript></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>start0 + 12:</entry>
|
||||||
|
<entry>Y'<subscript>30</subscript></entry>
|
||||||
|
<entry>Y'<subscript>31</subscript></entry>
|
||||||
|
<entry>Y'<subscript>32</subscript></entry>
|
||||||
|
<entry>Y'<subscript>33</subscript></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>start1 + 0:</entry>
|
||||||
|
<entry>Cb<subscript>00</subscript></entry>
|
||||||
|
<entry>Cr<subscript>00</subscript></entry>
|
||||||
|
<entry>Cb<subscript>02</subscript></entry>
|
||||||
|
<entry>Cr<subscript>02</subscript></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>start1 + 4:</entry>
|
||||||
|
<entry>Cb<subscript>10</subscript></entry>
|
||||||
|
<entry>Cr<subscript>10</subscript></entry>
|
||||||
|
<entry>Cb<subscript>12</subscript></entry>
|
||||||
|
<entry>Cr<subscript>12</subscript></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>start1 + 8:</entry>
|
||||||
|
<entry>Cb<subscript>20</subscript></entry>
|
||||||
|
<entry>Cr<subscript>20</subscript></entry>
|
||||||
|
<entry>Cb<subscript>22</subscript></entry>
|
||||||
|
<entry>Cr<subscript>22</subscript></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>start1 + 12:</entry>
|
||||||
|
<entry>Cb<subscript>30</subscript></entry>
|
||||||
|
<entry>Cr<subscript>30</subscript></entry>
|
||||||
|
<entry>Cb<subscript>32</subscript></entry>
|
||||||
|
<entry>Cr<subscript>32</subscript></entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</informaltable>
|
||||||
|
</para>
|
||||||
|
</formalpara>
|
||||||
|
|
||||||
|
<formalpara>
|
||||||
|
<title>Color Sample Location.</title>
|
||||||
|
<para>
|
||||||
|
<informaltable frame="none">
|
||||||
|
<tgroup cols="7" align="center">
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
<entry>0</entry><entry></entry><entry>1</entry><entry></entry>
|
||||||
|
<entry>2</entry><entry></entry><entry>3</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>0</entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry><entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>1</entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry><entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>2</entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry><entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>3</entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
|
||||||
|
<entry>Y</entry><entry></entry><entry>Y</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry><entry></entry>
|
||||||
|
<entry></entry><entry>C</entry><entry></entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</informaltable>
|
||||||
|
</para>
|
||||||
|
</formalpara>
|
||||||
|
</example>
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
@ -391,9 +391,9 @@ clamp (double x)
|
|||||||
else return r;
|
else return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
y1 = (255 / 219.0) * (Y1 - 16);
|
y1 = (Y1 - 16) / 219.0;
|
||||||
pb = (255 / 224.0) * (Cb - 128);
|
pb = (Cb - 128) / 224.0;
|
||||||
pr = (255 / 224.0) * (Cr - 128);
|
pr = (Cr - 128) / 224.0;
|
||||||
|
|
||||||
r = 1.0 * y1 + 0 * pb + 1.402 * pr;
|
r = 1.0 * y1 + 0 * pb + 1.402 * pr;
|
||||||
g = 1.0 * y1 - 0.344 * pb - 0.714 * pr;
|
g = 1.0 * y1 - 0.344 * pb - 0.714 * pr;
|
||||||
@ -718,6 +718,7 @@ information.</para>
|
|||||||
&sub-nv12m;
|
&sub-nv12m;
|
||||||
&sub-nv12mt;
|
&sub-nv12mt;
|
||||||
&sub-nv16;
|
&sub-nv16;
|
||||||
|
&sub-nv16m;
|
||||||
&sub-nv24;
|
&sub-nv24;
|
||||||
&sub-m420;
|
&sub-m420;
|
||||||
</section>
|
</section>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -62,18 +62,29 @@ addition to the <constant>VIDIOC_REQBUFS</constant> ioctl, when a tighter
|
|||||||
control over buffers is required. This ioctl can be called multiple times to
|
control over buffers is required. This ioctl can be called multiple times to
|
||||||
create buffers of different sizes.</para>
|
create buffers of different sizes.</para>
|
||||||
|
|
||||||
<para>To allocate device buffers applications initialize relevant fields of
|
<para>To allocate the device buffers applications must initialize the
|
||||||
the <structname>v4l2_create_buffers</structname> structure. They set the
|
relevant fields of the <structname>v4l2_create_buffers</structname> structure.
|
||||||
<structfield>type</structfield> field in the
|
The <structfield>count</structfield> field must be set to the number of
|
||||||
&v4l2-format; structure, embedded in this
|
requested buffers, the <structfield>memory</structfield> field specifies the
|
||||||
structure, to the respective stream or buffer type.
|
requested I/O method and the <structfield>reserved</structfield> array must be
|
||||||
<structfield>count</structfield> must be set to the number of required buffers.
|
zeroed.</para>
|
||||||
<structfield>memory</structfield> specifies the required I/O method. The
|
|
||||||
<structfield>format</structfield> field shall typically be filled in using
|
<para>The <structfield>format</structfield> field specifies the image format
|
||||||
either the <constant>VIDIOC_TRY_FMT</constant> or
|
that the buffers must be able to handle. The application has to fill in this
|
||||||
<constant>VIDIOC_G_FMT</constant> ioctl(). Additionally, applications can adjust
|
&v4l2-format;. Usually this will be done using the
|
||||||
<structfield>sizeimage</structfield> fields to fit their specific needs. The
|
<constant>VIDIOC_TRY_FMT</constant> or <constant>VIDIOC_G_FMT</constant> ioctl()
|
||||||
<structfield>reserved</structfield> array must be zeroed.</para>
|
to ensure that the requested format is supported by the driver. Unsupported
|
||||||
|
formats will result in an error.</para>
|
||||||
|
|
||||||
|
<para>The buffers created by this ioctl will have as minimum size the size
|
||||||
|
defined by the <structfield>format.pix.sizeimage</structfield> field. If the
|
||||||
|
<structfield>format.pix.sizeimage</structfield> field is less than the minimum
|
||||||
|
required for the given format, then <structfield>sizeimage</structfield> will be
|
||||||
|
increased by the driver to that minimum to allocate the buffers. If it is
|
||||||
|
larger, then the value will be used as-is. The same applies to the
|
||||||
|
<structfield>sizeimage</structfield> field of the
|
||||||
|
<structname>v4l2_plane_pix_format</structname> structure in the case of
|
||||||
|
multiplanar formats.</para>
|
||||||
|
|
||||||
<para>When the ioctl is called with a pointer to this structure the driver
|
<para>When the ioctl is called with a pointer to this structure the driver
|
||||||
will attempt to allocate up to the requested number of buffers and store the
|
will attempt to allocate up to the requested number of buffers and store the
|
||||||
@ -144,9 +155,9 @@ mapped</link> I/O.</para>
|
|||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><errorcode>EINVAL</errorcode></term>
|
<term><errorcode>EINVAL</errorcode></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>The buffer type (<structfield>type</structfield> field) or the
|
<para>The buffer type (<structfield>format.type</structfield> field),
|
||||||
requested I/O method (<structfield>memory</structfield>) is not
|
requested I/O method (<structfield>memory</structfield>) or format
|
||||||
supported.</para>
|
(<structfield>format</structfield> field) is not valid.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
@ -156,19 +156,19 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
|
|||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>il_vfrontporch</structfield></entry>
|
<entry><structfield>il_vfrontporch</structfield></entry>
|
||||||
<entry>Vertical front porch in lines for the even field (aka field 2) of
|
<entry>Vertical front porch in lines for the even field (aka field 2) of
|
||||||
interlaced field formats.</entry>
|
interlaced field formats. Must be 0 for progressive formats.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>il_vsync</structfield></entry>
|
<entry><structfield>il_vsync</structfield></entry>
|
||||||
<entry>Vertical sync length in lines for the even field (aka field 2) of
|
<entry>Vertical sync length in lines for the even field (aka field 2) of
|
||||||
interlaced field formats.</entry>
|
interlaced field formats. Must be 0 for progressive formats.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>il_vbackporch</structfield></entry>
|
<entry><structfield>il_vbackporch</structfield></entry>
|
||||||
<entry>Vertical back porch in lines for the even field (aka field 2) of
|
<entry>Vertical back porch in lines for the even field (aka field 2) of
|
||||||
interlaced field formats.</entry>
|
interlaced field formats. Must be 0 for progressive formats.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -92,8 +92,8 @@ to add them.</para>
|
|||||||
<entry>int</entry>
|
<entry>int</entry>
|
||||||
<entry><structfield>quality</structfield></entry>
|
<entry><structfield>quality</structfield></entry>
|
||||||
<entry>Deprecated. If <link linkend="jpeg-quality-control"><constant>
|
<entry>Deprecated. If <link linkend="jpeg-quality-control"><constant>
|
||||||
V4L2_CID_JPEG_IMAGE_QUALITY</constant></link> control is exposed by
|
V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></link> control is exposed
|
||||||
a driver applications should use it instead and ignore this field.
|
by a driver applications should use it instead and ignore this field.
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
|
@ -132,7 +132,7 @@ devices.</para>
|
|||||||
<row>
|
<row>
|
||||||
<entry>&v4l2-fract;</entry>
|
<entry>&v4l2-fract;</entry>
|
||||||
<entry><structfield>timeperframe</structfield></entry>
|
<entry><structfield>timeperframe</structfield></entry>
|
||||||
<entry><para>This is is the desired period between
|
<entry><para>This is the desired period between
|
||||||
successive frames captured by the driver, in seconds. The
|
successive frames captured by the driver, in seconds. The
|
||||||
field is intended to skip frames on the driver side, saving I/O
|
field is intended to skip frames on the driver side, saving I/O
|
||||||
bandwidth.</para><para>Applications store here the desired frame
|
bandwidth.</para><para>Applications store here the desired frame
|
||||||
@ -193,7 +193,7 @@ applications must set the array to zero.</entry>
|
|||||||
<row>
|
<row>
|
||||||
<entry>&v4l2-fract;</entry>
|
<entry>&v4l2-fract;</entry>
|
||||||
<entry><structfield>timeperframe</structfield></entry>
|
<entry><structfield>timeperframe</structfield></entry>
|
||||||
<entry>This is is the desired period between
|
<entry>This is the desired period between
|
||||||
successive frames output by the driver, in seconds.</entry>
|
successive frames output by the driver, in seconds.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
|
@ -22,8 +22,14 @@
|
|||||||
|
|
||||||
<!-- LinuxTV v4l-dvb repository. -->
|
<!-- LinuxTV v4l-dvb repository. -->
|
||||||
<!ENTITY v4l-dvb "<ulink url='http://linuxtv.org/repo/'>http://linuxtv.org/repo/</ulink>">
|
<!ENTITY v4l-dvb "<ulink url='http://linuxtv.org/repo/'>http://linuxtv.org/repo/</ulink>">
|
||||||
|
<!ENTITY dash-ent-8 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
<!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
<!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
|
<!ENTITY dash-ent-12 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
|
<!ENTITY dash-ent-14 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
<!ENTITY dash-ent-16 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
<!ENTITY dash-ent-16 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
|
<!ENTITY dash-ent-20 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
|
<!ENTITY dash-ent-22 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
|
<!ENTITY dash-ent-24 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||||
]>
|
]>
|
||||||
|
|
||||||
<book id="media_api">
|
<book id="media_api">
|
||||||
|
@ -1224,8 +1224,6 @@ in this page</entry>
|
|||||||
#define NAND_BBT_CREATE 0x00000200
|
#define NAND_BBT_CREATE 0x00000200
|
||||||
/* Search good / bad pattern through all pages of a block */
|
/* Search good / bad pattern through all pages of a block */
|
||||||
#define NAND_BBT_SCANALLPAGES 0x00000400
|
#define NAND_BBT_SCANALLPAGES 0x00000400
|
||||||
/* Scan block empty during good / bad block scan */
|
|
||||||
#define NAND_BBT_SCANEMPTY 0x00000800
|
|
||||||
/* Write bbt if neccecary */
|
/* Write bbt if neccecary */
|
||||||
#define NAND_BBT_WRITE 0x00001000
|
#define NAND_BBT_WRITE 0x00001000
|
||||||
/* Read and write back block contents when writing bbt */
|
/* Read and write back block contents when writing bbt */
|
||||||
|
@ -57,8 +57,8 @@ i.e counters for the CPU0-3 did not change.
|
|||||||
|
|
||||||
Here is an example of limiting that same irq (44) to cpus 1024 to 1031:
|
Here is an example of limiting that same irq (44) to cpus 1024 to 1031:
|
||||||
|
|
||||||
[root@moon 44]# echo 1024-1031 > smp_affinity
|
[root@moon 44]# echo 1024-1031 > smp_affinity_list
|
||||||
[root@moon 44]# cat smp_affinity
|
[root@moon 44]# cat smp_affinity_list
|
||||||
1024-1031
|
1024-1031
|
||||||
|
|
||||||
Note that to do this with a bitmask would require 32 bitmasks of zero
|
Note that to do this with a bitmask would require 32 bitmasks of zero
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -70,10 +70,14 @@ in realtime kernels in order to avoid excessive scheduling latencies.
|
|||||||
|
|
||||||
rcu_barrier()
|
rcu_barrier()
|
||||||
|
|
||||||
We instead need the rcu_barrier() primitive. This primitive is similar
|
We instead need the rcu_barrier() primitive. Rather than waiting for
|
||||||
to synchronize_rcu(), but instead of waiting solely for a grace
|
a grace period to elapse, rcu_barrier() waits for all outstanding RCU
|
||||||
period to elapse, it also waits for all outstanding RCU callbacks to
|
callbacks to complete. Please note that rcu_barrier() does -not- imply
|
||||||
complete. Pseudo-code using rcu_barrier() is as follows:
|
synchronize_rcu(), in particular, if there are no RCU callbacks queued
|
||||||
|
anywhere, rcu_barrier() is within its rights to return immediately,
|
||||||
|
without waiting for a grace period to elapse.
|
||||||
|
|
||||||
|
Pseudo-code using rcu_barrier() is as follows:
|
||||||
|
|
||||||
1. Prevent any new RCU callbacks from being posted.
|
1. Prevent any new RCU callbacks from being posted.
|
||||||
2. Execute rcu_barrier().
|
2. Execute rcu_barrier().
|
||||||
|
@ -42,6 +42,16 @@ fqs_holdoff Holdoff time (in microseconds) between consecutive calls
|
|||||||
fqs_stutter Wait time (in seconds) between consecutive bursts
|
fqs_stutter Wait time (in seconds) between consecutive bursts
|
||||||
of calls to force_quiescent_state().
|
of calls to force_quiescent_state().
|
||||||
|
|
||||||
|
gp_normal Make the fake writers use normal synchronous grace-period
|
||||||
|
primitives.
|
||||||
|
|
||||||
|
gp_exp Make the fake writers use expedited synchronous grace-period
|
||||||
|
primitives. If both gp_normal and gp_exp are set, or
|
||||||
|
if neither gp_normal nor gp_exp are set, then randomly
|
||||||
|
choose the primitive so that about 50% are normal and
|
||||||
|
50% expedited. By default, neither are set, which
|
||||||
|
gives best overall test coverage.
|
||||||
|
|
||||||
irqreader Says to invoke RCU readers from irq level. This is currently
|
irqreader Says to invoke RCU readers from irq level. This is currently
|
||||||
done via timers. Defaults to "1" for variants of RCU that
|
done via timers. Defaults to "1" for variants of RCU that
|
||||||
permit this. (Or, more accurately, variants of RCU that do
|
permit this. (Or, more accurately, variants of RCU that do
|
||||||
|
@ -109,6 +109,16 @@ probably didn't even receive earlier versions of the patch.
|
|||||||
If the patch fixes a logged bug entry, refer to that bug entry by
|
If the patch fixes a logged bug entry, refer to that bug entry by
|
||||||
number and URL.
|
number and URL.
|
||||||
|
|
||||||
|
If you want to refer to a specific commit, don't just refer to the
|
||||||
|
SHA-1 ID of the commit. Please also include the oneline summary of
|
||||||
|
the commit, to make it easier for reviewers to know what it is about.
|
||||||
|
Example:
|
||||||
|
|
||||||
|
Commit e21d2170f36602ae2708 ("video: remove unnecessary
|
||||||
|
platform_set_drvdata()") removed the unnecessary
|
||||||
|
platform_set_drvdata(), but left the variable "dev" unused,
|
||||||
|
delete it.
|
||||||
|
|
||||||
|
|
||||||
3) Separate your changes.
|
3) Separate your changes.
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ passing those. One idea is to return this in _DSM method like:
|
|||||||
Return (Local0)
|
Return (Local0)
|
||||||
}
|
}
|
||||||
|
|
||||||
Then the at25 SPI driver can get this configation by calling _DSM on its
|
Then the at25 SPI driver can get this configuration by calling _DSM on its
|
||||||
ACPI handle like:
|
ACPI handle like:
|
||||||
|
|
||||||
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
|
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||||
@ -228,19 +228,9 @@ ACPI handle like:
|
|||||||
I2C serial bus support
|
I2C serial bus support
|
||||||
~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
The slaves behind I2C bus controller only need to add the ACPI IDs like
|
The slaves behind I2C bus controller only need to add the ACPI IDs like
|
||||||
with the platform and SPI drivers. However the I2C bus controller driver
|
with the platform and SPI drivers. The I2C core automatically enumerates
|
||||||
needs to call acpi_i2c_register_devices() after it has added the adapter.
|
any slave devices behind the controller device once the adapter is
|
||||||
|
registered.
|
||||||
An I2C bus (controller) driver does:
|
|
||||||
|
|
||||||
...
|
|
||||||
ret = i2c_add_numbered_adapter(adapter);
|
|
||||||
if (ret)
|
|
||||||
/* handle error */
|
|
||||||
|
|
||||||
of_i2c_register_devices(adapter);
|
|
||||||
/* Enumerate the slave devices behind this bus via ACPI */
|
|
||||||
acpi_i2c_register_devices(adapter);
|
|
||||||
|
|
||||||
Below is an example of how to add ACPI support to the existing mpu3050
|
Below is an example of how to add ACPI support to the existing mpu3050
|
||||||
input driver:
|
input driver:
|
||||||
|
@ -23,4 +23,4 @@ SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k", GROUP="disk", MODE="02
|
|||||||
SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220"
|
SUBSYSTEM=="aoe", KERNEL=="flush", NAME="etherd/%k", GROUP="disk", MODE="0220"
|
||||||
|
|
||||||
# aoe block devices
|
# aoe block devices
|
||||||
KERNEL=="etherd*", NAME="%k", GROUP="disk"
|
KERNEL=="etherd*", GROUP="disk"
|
||||||
|
@ -18,7 +18,8 @@ following:
|
|||||||
2. Initialise one serial port.
|
2. Initialise one serial port.
|
||||||
3. Detect the machine type.
|
3. Detect the machine type.
|
||||||
4. Setup the kernel tagged list.
|
4. Setup the kernel tagged list.
|
||||||
5. Call the kernel image.
|
5. Load initramfs.
|
||||||
|
6. Call the kernel image.
|
||||||
|
|
||||||
|
|
||||||
1. Setup and initialise RAM
|
1. Setup and initialise RAM
|
||||||
@ -120,12 +121,27 @@ tagged list.
|
|||||||
The boot loader must pass at a minimum the size and location of the
|
The boot loader must pass at a minimum the size and location of the
|
||||||
system memory, and the root filesystem location. The dtb must be
|
system memory, and the root filesystem location. The dtb must be
|
||||||
placed in a region of memory where the kernel decompressor will not
|
placed in a region of memory where the kernel decompressor will not
|
||||||
overwrite it. The recommended placement is in the first 16KiB of RAM
|
overwrite it, whilst remaining within the region which will be covered
|
||||||
with the caveat that it may not be located at physical address 0 since
|
by the kernel's low-memory mapping.
|
||||||
the kernel interprets a value of 0 in r2 to mean neither a tagged list
|
|
||||||
nor a dtb were passed.
|
|
||||||
|
|
||||||
5. Calling the kernel image
|
A safe location is just above the 128MiB boundary from start of RAM.
|
||||||
|
|
||||||
|
5. Load initramfs.
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Existing boot loaders: OPTIONAL
|
||||||
|
New boot loaders: OPTIONAL
|
||||||
|
|
||||||
|
If an initramfs is in use then, as with the dtb, it must be placed in
|
||||||
|
a region of memory where the kernel decompressor will not overwrite it
|
||||||
|
while also with the region which will be covered by the kernel's
|
||||||
|
low-memory mapping.
|
||||||
|
|
||||||
|
A safe location is just above the device tree blob which itself will
|
||||||
|
be loaded just above the 128MiB boundary from the start of RAM as
|
||||||
|
recommended above.
|
||||||
|
|
||||||
|
6. Calling the kernel image
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
Existing boot loaders: MANDATORY
|
Existing boot loaders: MANDATORY
|
||||||
@ -136,11 +152,17 @@ is stored in flash, and is linked correctly to be run from flash,
|
|||||||
then it is legal for the boot loader to call the zImage in flash
|
then it is legal for the boot loader to call the zImage in flash
|
||||||
directly.
|
directly.
|
||||||
|
|
||||||
The zImage may also be placed in system RAM (at any location) and
|
The zImage may also be placed in system RAM and called there. The
|
||||||
called there. Note that the kernel uses 16K of RAM below the image
|
kernel should be placed in the first 128MiB of RAM. It is recommended
|
||||||
to store page tables. The recommended placement is 32KiB into RAM.
|
that it is loaded above 32MiB in order to avoid the need to relocate
|
||||||
|
prior to decompression, which will make the boot process slightly
|
||||||
|
faster.
|
||||||
|
|
||||||
In either case, the following conditions must be met:
|
When booting a raw (non-zImage) kernel the constraints are tighter.
|
||||||
|
In this case the kernel must be loaded at an offset into system equal
|
||||||
|
to TEXT_OFFSET - PAGE_OFFSET.
|
||||||
|
|
||||||
|
In any case, the following conditions must be met:
|
||||||
|
|
||||||
- Quiesce all DMA capable devices so that memory does not get
|
- Quiesce all DMA capable devices so that memory does not get
|
||||||
corrupted by bogus network packets or disk data. This will save
|
corrupted by bogus network packets or disk data. This will save
|
||||||
|
@ -78,7 +78,7 @@ to NULL. Drivers should use the following idiom:
|
|||||||
The most common usage of these functions will probably be to specify
|
The most common usage of these functions will probably be to specify
|
||||||
the maximum time from when an interrupt occurs, to when the device
|
the maximum time from when an interrupt occurs, to when the device
|
||||||
becomes accessible. To accomplish this, driver writers should use the
|
becomes accessible. To accomplish this, driver writers should use the
|
||||||
set_max_mpu_wakeup_lat() function to to constrain the MPU wakeup
|
set_max_mpu_wakeup_lat() function to constrain the MPU wakeup
|
||||||
latency, and the set_max_dev_wakeup_lat() function to constrain the
|
latency, and the set_max_dev_wakeup_lat() function to constrain the
|
||||||
device wakeup latency (from clk_enable() to accessibility). For
|
device wakeup latency (from clk_enable() to accessibility). For
|
||||||
example,
|
example,
|
||||||
|
121
Documentation/arm/kernel_mode_neon.txt
Normal file
121
Documentation/arm/kernel_mode_neon.txt
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
Kernel mode NEON
|
||||||
|
================
|
||||||
|
|
||||||
|
TL;DR summary
|
||||||
|
-------------
|
||||||
|
* Use only NEON instructions, or VFP instructions that don't rely on support
|
||||||
|
code
|
||||||
|
* Isolate your NEON code in a separate compilation unit, and compile it with
|
||||||
|
'-mfpu=neon -mfloat-abi=softfp'
|
||||||
|
* Put kernel_neon_begin() and kernel_neon_end() calls around the calls into your
|
||||||
|
NEON code
|
||||||
|
* Don't sleep in your NEON code, and be aware that it will be executed with
|
||||||
|
preemption disabled
|
||||||
|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
It is possible to use NEON instructions (and in some cases, VFP instructions) in
|
||||||
|
code that runs in kernel mode. However, for performance reasons, the NEON/VFP
|
||||||
|
register file is not preserved and restored at every context switch or taken
|
||||||
|
exception like the normal register file is, so some manual intervention is
|
||||||
|
required. Furthermore, special care is required for code that may sleep [i.e.,
|
||||||
|
may call schedule()], as NEON or VFP instructions will be executed in a
|
||||||
|
non-preemptible section for reasons outlined below.
|
||||||
|
|
||||||
|
|
||||||
|
Lazy preserve and restore
|
||||||
|
-------------------------
|
||||||
|
The NEON/VFP register file is managed using lazy preserve (on UP systems) and
|
||||||
|
lazy restore (on both SMP and UP systems). This means that the register file is
|
||||||
|
kept 'live', and is only preserved and restored when multiple tasks are
|
||||||
|
contending for the NEON/VFP unit (or, in the SMP case, when a task migrates to
|
||||||
|
another core). Lazy restore is implemented by disabling the NEON/VFP unit after
|
||||||
|
every context switch, resulting in a trap when subsequently a NEON/VFP
|
||||||
|
instruction is issued, allowing the kernel to step in and perform the restore if
|
||||||
|
necessary.
|
||||||
|
|
||||||
|
Any use of the NEON/VFP unit in kernel mode should not interfere with this, so
|
||||||
|
it is required to do an 'eager' preserve of the NEON/VFP register file, and
|
||||||
|
enable the NEON/VFP unit explicitly so no exceptions are generated on first
|
||||||
|
subsequent use. This is handled by the function kernel_neon_begin(), which
|
||||||
|
should be called before any kernel mode NEON or VFP instructions are issued.
|
||||||
|
Likewise, the NEON/VFP unit should be disabled again after use to make sure user
|
||||||
|
mode will hit the lazy restore trap upon next use. This is handled by the
|
||||||
|
function kernel_neon_end().
|
||||||
|
|
||||||
|
|
||||||
|
Interruptions in kernel mode
|
||||||
|
----------------------------
|
||||||
|
For reasons of performance and simplicity, it was decided that there shall be no
|
||||||
|
preserve/restore mechanism for the kernel mode NEON/VFP register contents. This
|
||||||
|
implies that interruptions of a kernel mode NEON section can only be allowed if
|
||||||
|
they are guaranteed not to touch the NEON/VFP registers. For this reason, the
|
||||||
|
following rules and restrictions apply in the kernel:
|
||||||
|
* NEON/VFP code is not allowed in interrupt context;
|
||||||
|
* NEON/VFP code is not allowed to sleep;
|
||||||
|
* NEON/VFP code is executed with preemption disabled.
|
||||||
|
|
||||||
|
If latency is a concern, it is possible to put back to back calls to
|
||||||
|
kernel_neon_end() and kernel_neon_begin() in places in your code where none of
|
||||||
|
the NEON registers are live. (Additional calls to kernel_neon_begin() should be
|
||||||
|
reasonably cheap if no context switch occurred in the meantime)
|
||||||
|
|
||||||
|
|
||||||
|
VFP and support code
|
||||||
|
--------------------
|
||||||
|
Earlier versions of VFP (prior to version 3) rely on software support for things
|
||||||
|
like IEEE-754 compliant underflow handling etc. When the VFP unit needs such
|
||||||
|
software assistance, it signals the kernel by raising an undefined instruction
|
||||||
|
exception. The kernel responds by inspecting the VFP control registers and the
|
||||||
|
current instruction and arguments, and emulates the instruction in software.
|
||||||
|
|
||||||
|
Such software assistance is currently not implemented for VFP instructions
|
||||||
|
executed in kernel mode. If such a condition is encountered, the kernel will
|
||||||
|
fail and generate an OOPS.
|
||||||
|
|
||||||
|
|
||||||
|
Separating NEON code from ordinary code
|
||||||
|
---------------------------------------
|
||||||
|
The compiler is not aware of the special significance of kernel_neon_begin() and
|
||||||
|
kernel_neon_end(), i.e., that it is only allowed to issue NEON/VFP instructions
|
||||||
|
between calls to these respective functions. Furthermore, GCC may generate NEON
|
||||||
|
instructions of its own at -O3 level if -mfpu=neon is selected, and even if the
|
||||||
|
kernel is currently compiled at -O2, future changes may result in NEON/VFP
|
||||||
|
instructions appearing in unexpected places if no special care is taken.
|
||||||
|
|
||||||
|
Therefore, the recommended and only supported way of using NEON/VFP in the
|
||||||
|
kernel is by adhering to the following rules:
|
||||||
|
* isolate the NEON code in a separate compilation unit and compile it with
|
||||||
|
'-mfpu=neon -mfloat-abi=softfp';
|
||||||
|
* issue the calls to kernel_neon_begin(), kernel_neon_end() as well as the calls
|
||||||
|
into the unit containing the NEON code from a compilation unit which is *not*
|
||||||
|
built with the GCC flag '-mfpu=neon' set.
|
||||||
|
|
||||||
|
As the kernel is compiled with '-msoft-float', the above will guarantee that
|
||||||
|
both NEON and VFP instructions will only ever appear in designated compilation
|
||||||
|
units at any optimization level.
|
||||||
|
|
||||||
|
|
||||||
|
NEON assembler
|
||||||
|
--------------
|
||||||
|
NEON assembler is supported with no additional caveats as long as the rules
|
||||||
|
above are followed.
|
||||||
|
|
||||||
|
|
||||||
|
NEON code generated by GCC
|
||||||
|
--------------------------
|
||||||
|
The GCC option -ftree-vectorize (implied by -O3) tries to exploit implicit
|
||||||
|
parallelism, and generates NEON code from ordinary C source code. This is fully
|
||||||
|
supported as long as the rules above are followed.
|
||||||
|
|
||||||
|
|
||||||
|
NEON intrinsics
|
||||||
|
---------------
|
||||||
|
NEON intrinsics are also supported. However, as code using NEON intrinsics
|
||||||
|
relies on the GCC header <arm_neon.h>, (which #includes <stdint.h>), you should
|
||||||
|
observe the following in addition to the rules above:
|
||||||
|
* Compile the unit containing the NEON intrinsics with '-ffreestanding' so GCC
|
||||||
|
uses its builtin version of <stdint.h> (this is a C99 header which the kernel
|
||||||
|
does not supply);
|
||||||
|
* Include <arm_neon.h> last, or at least after <linux/types.h>
|
@ -45,9 +45,9 @@ sees fit.)
|
|||||||
|
|
||||||
Requirement: MANDATORY
|
Requirement: MANDATORY
|
||||||
|
|
||||||
The device tree blob (dtb) must be no bigger than 2 megabytes in size
|
The device tree blob (dtb) must be placed on an 8-byte boundary within
|
||||||
and placed at a 2-megabyte boundary within the first 512 megabytes from
|
the first 512 megabytes from the start of the kernel image and must not
|
||||||
the start of the kernel image. This is to allow the kernel to map the
|
cross a 2-megabyte boundary. This is to allow the kernel to map the
|
||||||
blob using a single section mapping in the initial page tables.
|
blob using a single section mapping in the initial page tables.
|
||||||
|
|
||||||
|
|
||||||
@ -68,13 +68,23 @@ Image target is available instead.
|
|||||||
|
|
||||||
Requirement: MANDATORY
|
Requirement: MANDATORY
|
||||||
|
|
||||||
The decompressed kernel image contains a 32-byte header as follows:
|
The decompressed kernel image contains a 64-byte header as follows:
|
||||||
|
|
||||||
u32 magic = 0x14000008; /* branch to stext, little-endian */
|
u32 code0; /* Executable code */
|
||||||
u32 res0 = 0; /* reserved */
|
u32 code1; /* Executable code */
|
||||||
u64 text_offset; /* Image load offset */
|
u64 text_offset; /* Image load offset */
|
||||||
|
u64 res0 = 0; /* reserved */
|
||||||
u64 res1 = 0; /* reserved */
|
u64 res1 = 0; /* reserved */
|
||||||
u64 res2 = 0; /* reserved */
|
u64 res2 = 0; /* reserved */
|
||||||
|
u64 res3 = 0; /* reserved */
|
||||||
|
u64 res4 = 0; /* reserved */
|
||||||
|
u32 magic = 0x644d5241; /* Magic number, little endian, "ARM\x64" */
|
||||||
|
u32 res5 = 0; /* reserved */
|
||||||
|
|
||||||
|
|
||||||
|
Header notes:
|
||||||
|
|
||||||
|
- code0/code1 are responsible for branching to stext.
|
||||||
|
|
||||||
The image must be placed at the specified offset (currently 0x80000)
|
The image must be placed at the specified offset (currently 0x80000)
|
||||||
from the start of the system RAM and called there. The start of the
|
from the start of the system RAM and called there. The start of the
|
||||||
|
34
Documentation/arm64/tagged-pointers.txt
Normal file
34
Documentation/arm64/tagged-pointers.txt
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
Tagged virtual addresses in AArch64 Linux
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
Author: Will Deacon <will.deacon@arm.com>
|
||||||
|
Date : 12 June 2013
|
||||||
|
|
||||||
|
This document briefly describes the provision of tagged virtual
|
||||||
|
addresses in the AArch64 translation system and their potential uses
|
||||||
|
in AArch64 Linux.
|
||||||
|
|
||||||
|
The kernel configures the translation tables so that translations made
|
||||||
|
via TTBR0 (i.e. userspace mappings) have the top byte (bits 63:56) of
|
||||||
|
the virtual address ignored by the translation hardware. This frees up
|
||||||
|
this byte for application use, with the following caveats:
|
||||||
|
|
||||||
|
(1) The kernel requires that all user addresses passed to EL1
|
||||||
|
are tagged with tag 0x00. This means that any syscall
|
||||||
|
parameters containing user virtual addresses *must* have
|
||||||
|
their top byte cleared before trapping to the kernel.
|
||||||
|
|
||||||
|
(2) Non-zero tags are not preserved when delivering signals.
|
||||||
|
This means that signal handlers in applications making use
|
||||||
|
of tags cannot rely on the tag information for user virtual
|
||||||
|
addresses being maintained for fields inside siginfo_t.
|
||||||
|
One exception to this rule is for signals raised in response
|
||||||
|
to watchpoint debug exceptions, where the tag information
|
||||||
|
will be preserved.
|
||||||
|
|
||||||
|
(3) Special care should be taken when using tagged pointers,
|
||||||
|
since it is likely that C compilers will not hazard two
|
||||||
|
virtual addresses differing only in the upper byte.
|
||||||
|
|
||||||
|
The architecture prevents the use of a tagged PC, so the upper byte will
|
||||||
|
be set to a sign-extension of bit 55 on exception return.
|
@ -6,6 +6,8 @@ capability.txt
|
|||||||
- Generic Block Device Capability (/sys/block/<device>/capability)
|
- Generic Block Device Capability (/sys/block/<device>/capability)
|
||||||
cfq-iosched.txt
|
cfq-iosched.txt
|
||||||
- CFQ IO scheduler tunables
|
- CFQ IO scheduler tunables
|
||||||
|
cmdline-partition.txt
|
||||||
|
- how to specify block device partitions on kernel command line
|
||||||
data-integrity.txt
|
data-integrity.txt
|
||||||
- Block data integrity
|
- Block data integrity
|
||||||
deadline-iosched.txt
|
deadline-iosched.txt
|
||||||
|
@ -69,7 +69,7 @@ one, this value should be decreased relative to fifo_expire_async.
|
|||||||
group_idle
|
group_idle
|
||||||
-----------
|
-----------
|
||||||
This parameter forces idling at the CFQ group level instead of CFQ
|
This parameter forces idling at the CFQ group level instead of CFQ
|
||||||
queue level. This was introduced after after a bottleneck was observed
|
queue level. This was introduced after a bottleneck was observed
|
||||||
in higher end storage due to idle on sequential queue and allow dispatch
|
in higher end storage due to idle on sequential queue and allow dispatch
|
||||||
from a single queue. The idea with this parameter is that it can be run with
|
from a single queue. The idea with this parameter is that it can be run with
|
||||||
slice_idle=0 and group_idle=8, so that idling does not happen on individual
|
slice_idle=0 and group_idle=8, so that idling does not happen on individual
|
||||||
|
39
Documentation/block/cmdline-partition.txt
Normal file
39
Documentation/block/cmdline-partition.txt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
Embedded device command line partition parsing
|
||||||
|
=====================================================================
|
||||||
|
|
||||||
|
Support for reading the block device partition table from the command line.
|
||||||
|
It is typically used for fixed block (eMMC) embedded devices.
|
||||||
|
It has no MBR, so saves storage space. Bootloader can be easily accessed
|
||||||
|
by absolute address of data on the block device.
|
||||||
|
Users can easily change the partition.
|
||||||
|
|
||||||
|
The format for the command line is just like mtdparts:
|
||||||
|
|
||||||
|
blkdevparts=<blkdev-def>[;<blkdev-def>]
|
||||||
|
<blkdev-def> := <blkdev-id>:<partdef>[,<partdef>]
|
||||||
|
<partdef> := <size>[@<offset>](part-name)
|
||||||
|
|
||||||
|
<blkdev-id>
|
||||||
|
block device disk name, embedded device used fixed block device,
|
||||||
|
it's disk name also fixed. such as: mmcblk0, mmcblk1, mmcblk0boot0.
|
||||||
|
|
||||||
|
<size>
|
||||||
|
partition size, in bytes, such as: 512, 1m, 1G.
|
||||||
|
|
||||||
|
<offset>
|
||||||
|
partition start address, in bytes.
|
||||||
|
|
||||||
|
(part-name)
|
||||||
|
partition name, kernel send uevent with "PARTNAME". application can create
|
||||||
|
a link to block device partition with the name "PARTNAME".
|
||||||
|
user space application can access partition by partition name.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
eMMC disk name is "mmcblk0" and "mmcblk0boot0"
|
||||||
|
|
||||||
|
bootargs:
|
||||||
|
'blkdevparts=mmcblk0:1G(data0),1G(data1),-;mmcblk0boot0:1m(boot),-(kernel)'
|
||||||
|
|
||||||
|
dmesg:
|
||||||
|
mmcblk0: p1(data0) p2(data1) p3()
|
||||||
|
mmcblk0boot0: p1(boot) p2(kernel)
|
@ -57,7 +57,7 @@ changes occur:
|
|||||||
interface must make sure that any previous page table
|
interface must make sure that any previous page table
|
||||||
modifications for the address space 'vma->vm_mm' in the range
|
modifications for the address space 'vma->vm_mm' in the range
|
||||||
'start' to 'end-1' will be visible to the cpu. That is, after
|
'start' to 'end-1' will be visible to the cpu. That is, after
|
||||||
running, here will be no entries in the TLB for 'mm' for
|
running, there will be no entries in the TLB for 'mm' for
|
||||||
virtual addresses in the range 'start' to 'end-1'.
|
virtual addresses in the range 'start' to 'end-1'.
|
||||||
|
|
||||||
The "vma" is the backing store being used for the region.
|
The "vma" is the backing store being used for the region.
|
||||||
@ -375,8 +375,8 @@ maps this page at its virtual address.
|
|||||||
|
|
||||||
void flush_icache_page(struct vm_area_struct *vma, struct page *page)
|
void flush_icache_page(struct vm_area_struct *vma, struct page *page)
|
||||||
All the functionality of flush_icache_page can be implemented in
|
All the functionality of flush_icache_page can be implemented in
|
||||||
flush_dcache_page and update_mmu_cache. In 2.7 the hope is to
|
flush_dcache_page and update_mmu_cache. In the future, the hope
|
||||||
remove this interface completely.
|
is to remove this interface completely.
|
||||||
|
|
||||||
The final category of APIs is for I/O to deliberately aliased address
|
The final category of APIs is for I/O to deliberately aliased address
|
||||||
ranges inside the kernel. Such aliases are set up by use of the
|
ranges inside the kernel. Such aliases are set up by use of the
|
||||||
|
@ -490,6 +490,8 @@ pgpgin - # of charging events to the memory cgroup. The charging
|
|||||||
pgpgout - # of uncharging events to the memory cgroup. The uncharging
|
pgpgout - # of uncharging events to the memory cgroup. The uncharging
|
||||||
event happens each time a page is unaccounted from the cgroup.
|
event happens each time a page is unaccounted from the cgroup.
|
||||||
swap - # of bytes of swap usage
|
swap - # of bytes of swap usage
|
||||||
|
writeback - # of bytes of file/anon cache that are queued for syncing to
|
||||||
|
disk.
|
||||||
inactive_anon - # of bytes of anonymous and swap cache memory on inactive
|
inactive_anon - # of bytes of anonymous and swap cache memory on inactive
|
||||||
LRU list.
|
LRU list.
|
||||||
active_anon - # of bytes of anonymous and swap cache memory on active
|
active_anon - # of bytes of anonymous and swap cache memory on active
|
||||||
|
@ -70,6 +70,10 @@ the operations defined in clk.h:
|
|||||||
unsigned long parent_rate);
|
unsigned long parent_rate);
|
||||||
long (*round_rate)(struct clk_hw *hw, unsigned long,
|
long (*round_rate)(struct clk_hw *hw, unsigned long,
|
||||||
unsigned long *);
|
unsigned long *);
|
||||||
|
long (*determine_rate)(struct clk_hw *hw,
|
||||||
|
unsigned long rate,
|
||||||
|
unsigned long *best_parent_rate,
|
||||||
|
struct clk **best_parent_clk);
|
||||||
int (*set_parent)(struct clk_hw *hw, u8 index);
|
int (*set_parent)(struct clk_hw *hw, u8 index);
|
||||||
u8 (*get_parent)(struct clk_hw *hw);
|
u8 (*get_parent)(struct clk_hw *hw);
|
||||||
int (*set_rate)(struct clk_hw *hw, unsigned long);
|
int (*set_rate)(struct clk_hw *hw, unsigned long);
|
||||||
@ -179,26 +183,28 @@ mandatory, a cell marked as "n" implies that either including that
|
|||||||
callback is invalid or otherwise unnecessary. Empty cells are either
|
callback is invalid or otherwise unnecessary. Empty cells are either
|
||||||
optional or must be evaluated on a case-by-case basis.
|
optional or must be evaluated on a case-by-case basis.
|
||||||
|
|
||||||
clock hardware characteristics
|
clock hardware characteristics
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
| gate | change rate | single parent | multiplexer | root |
|
| gate | change rate | single parent | multiplexer | root |
|
||||||
|------|-------------|---------------|-------------|------|
|
|------|-------------|---------------|-------------|------|
|
||||||
.prepare | | | | | |
|
.prepare | | | | | |
|
||||||
.unprepare | | | | | |
|
.unprepare | | | | | |
|
||||||
| | | | | |
|
| | | | | |
|
||||||
.enable | y | | | | |
|
.enable | y | | | | |
|
||||||
.disable | y | | | | |
|
.disable | y | | | | |
|
||||||
.is_enabled | y | | | | |
|
.is_enabled | y | | | | |
|
||||||
| | | | | |
|
| | | | | |
|
||||||
.recalc_rate | | y | | | |
|
.recalc_rate | | y | | | |
|
||||||
.round_rate | | y | | | |
|
.round_rate | | y [1] | | | |
|
||||||
.set_rate | | y | | | |
|
.determine_rate | | y [1] | | | |
|
||||||
| | | | | |
|
.set_rate | | y | | | |
|
||||||
.set_parent | | | n | y | n |
|
| | | | | |
|
||||||
.get_parent | | | n | y | n |
|
.set_parent | | | n | y | n |
|
||||||
| | | | | |
|
.get_parent | | | n | y | n |
|
||||||
.init | | | | | |
|
| | | | | |
|
||||||
-----------------------------------------------------------
|
.init | | | | | |
|
||||||
|
-----------------------------------------------------------
|
||||||
|
[1] either one of round_rate or determine_rate is required.
|
||||||
|
|
||||||
Finally, register your clock at run-time with a hardware-specific
|
Finally, register your clock at run-time with a hardware-specific
|
||||||
registration function. This function simply populates struct clk_foo's
|
registration function. This function simply populates struct clk_foo's
|
||||||
|
@ -50,8 +50,6 @@ What shall this struct cpufreq_driver contain?
|
|||||||
|
|
||||||
cpufreq_driver.name - The name of this driver.
|
cpufreq_driver.name - The name of this driver.
|
||||||
|
|
||||||
cpufreq_driver.owner - THIS_MODULE;
|
|
||||||
|
|
||||||
cpufreq_driver.init - A pointer to the per-CPU initialization
|
cpufreq_driver.init - A pointer to the per-CPU initialization
|
||||||
function.
|
function.
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ to /proc/cpuinfo.
|
|||||||
|
|
||||||
4) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
|
4) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
|
||||||
|
|
||||||
internel kernel map of cpuX's hardware threads within the same
|
internal kernel map of cpuX's hardware threads within the same
|
||||||
core as cpuX
|
core as cpuX
|
||||||
|
|
||||||
5) /sys/devices/system/cpu/cpuX/topology/core_siblings:
|
5) /sys/devices/system/cpu/cpuX/topology/core_siblings:
|
||||||
|
@ -276,7 +276,7 @@ mainline get there via -mm.
|
|||||||
The current -mm patch is available in the "mmotm" (-mm of the moment)
|
The current -mm patch is available in the "mmotm" (-mm of the moment)
|
||||||
directory at:
|
directory at:
|
||||||
|
|
||||||
http://userweb.kernel.org/~akpm/mmotm/
|
http://www.ozlabs.org/~akpm/mmotm/
|
||||||
|
|
||||||
Use of the MMOTM tree is likely to be a frustrating experience, though;
|
Use of the MMOTM tree is likely to be a frustrating experience, though;
|
||||||
there is a definite chance that it will not even compile.
|
there is a definite chance that it will not even compile.
|
||||||
@ -287,7 +287,7 @@ the mainline is expected to look like after the next merge window closes.
|
|||||||
Linux-next trees are announced on the linux-kernel and linux-next mailing
|
Linux-next trees are announced on the linux-kernel and linux-next mailing
|
||||||
lists when they are assembled; they can be downloaded from:
|
lists when they are assembled; they can be downloaded from:
|
||||||
|
|
||||||
http://www.kernel.org/pub/linux/kernel/people/sfr/linux-next/
|
http://www.kernel.org/pub/linux/kernel/next/
|
||||||
|
|
||||||
Some information about linux-next has been gathered at:
|
Some information about linux-next has been gathered at:
|
||||||
|
|
||||||
|
@ -50,14 +50,16 @@ other parameters detailed later):
|
|||||||
which are dirty, and extra hints for use by the policy object.
|
which are dirty, and extra hints for use by the policy object.
|
||||||
This information could be put on the cache device, but having it
|
This information could be put on the cache device, but having it
|
||||||
separate allows the volume manager to configure it differently,
|
separate allows the volume manager to configure it differently,
|
||||||
e.g. as a mirror for extra robustness.
|
e.g. as a mirror for extra robustness. This metadata device may only
|
||||||
|
be used by a single cache device.
|
||||||
|
|
||||||
Fixed block size
|
Fixed block size
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
The origin is divided up into blocks of a fixed size. This block size
|
The origin is divided up into blocks of a fixed size. This block size
|
||||||
is configurable when you first create the cache. Typically we've been
|
is configurable when you first create the cache. Typically we've been
|
||||||
using block sizes of 256k - 1024k.
|
using block sizes of 256KB - 1024KB. The block size must be between 64
|
||||||
|
(32KB) and 2097152 (1GB) and a multiple of 64 (32KB).
|
||||||
|
|
||||||
Having a fixed block size simplifies the target a lot. But it is
|
Having a fixed block size simplifies the target a lot. But it is
|
||||||
something of a compromise. For instance, a small part of a block may be
|
something of a compromise. For instance, a small part of a block may be
|
||||||
|
186
Documentation/device-mapper/statistics.txt
Normal file
186
Documentation/device-mapper/statistics.txt
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
DM statistics
|
||||||
|
=============
|
||||||
|
|
||||||
|
Device Mapper supports the collection of I/O statistics on user-defined
|
||||||
|
regions of a DM device. If no regions are defined no statistics are
|
||||||
|
collected so there isn't any performance impact. Only bio-based DM
|
||||||
|
devices are currently supported.
|
||||||
|
|
||||||
|
Each user-defined region specifies a starting sector, length and step.
|
||||||
|
Individual statistics will be collected for each step-sized area within
|
||||||
|
the range specified.
|
||||||
|
|
||||||
|
The I/O statistics counters for each step-sized area of a region are
|
||||||
|
in the same format as /sys/block/*/stat or /proc/diskstats (see:
|
||||||
|
Documentation/iostats.txt). But two extra counters (12 and 13) are
|
||||||
|
provided: total time spent reading and writing in milliseconds. All
|
||||||
|
these counters may be accessed by sending the @stats_print message to
|
||||||
|
the appropriate DM device via dmsetup.
|
||||||
|
|
||||||
|
Each region has a corresponding unique identifier, which we call a
|
||||||
|
region_id, that is assigned when the region is created. The region_id
|
||||||
|
must be supplied when querying statistics about the region, deleting the
|
||||||
|
region, etc. Unique region_ids enable multiple userspace programs to
|
||||||
|
request and process statistics for the same DM device without stepping
|
||||||
|
on each other's data.
|
||||||
|
|
||||||
|
The creation of DM statistics will allocate memory via kmalloc or
|
||||||
|
fallback to using vmalloc space. At most, 1/4 of the overall system
|
||||||
|
memory may be allocated by DM statistics. The admin can see how much
|
||||||
|
memory is used by reading
|
||||||
|
/sys/module/dm_mod/parameters/stats_current_allocated_bytes
|
||||||
|
|
||||||
|
Messages
|
||||||
|
========
|
||||||
|
|
||||||
|
@stats_create <range> <step> [<program_id> [<aux_data>]]
|
||||||
|
|
||||||
|
Create a new region and return the region_id.
|
||||||
|
|
||||||
|
<range>
|
||||||
|
"-" - whole device
|
||||||
|
"<start_sector>+<length>" - a range of <length> 512-byte sectors
|
||||||
|
starting with <start_sector>.
|
||||||
|
|
||||||
|
<step>
|
||||||
|
"<area_size>" - the range is subdivided into areas each containing
|
||||||
|
<area_size> sectors.
|
||||||
|
"/<number_of_areas>" - the range is subdivided into the specified
|
||||||
|
number of areas.
|
||||||
|
|
||||||
|
<program_id>
|
||||||
|
An optional parameter. A name that uniquely identifies
|
||||||
|
the userspace owner of the range. This groups ranges together
|
||||||
|
so that userspace programs can identify the ranges they
|
||||||
|
created and ignore those created by others.
|
||||||
|
The kernel returns this string back in the output of
|
||||||
|
@stats_list message, but it doesn't use it for anything else.
|
||||||
|
|
||||||
|
<aux_data>
|
||||||
|
An optional parameter. A word that provides auxiliary data
|
||||||
|
that is useful to the client program that created the range.
|
||||||
|
The kernel returns this string back in the output of
|
||||||
|
@stats_list message, but it doesn't use this value for anything.
|
||||||
|
|
||||||
|
@stats_delete <region_id>
|
||||||
|
|
||||||
|
Delete the region with the specified id.
|
||||||
|
|
||||||
|
<region_id>
|
||||||
|
region_id returned from @stats_create
|
||||||
|
|
||||||
|
@stats_clear <region_id>
|
||||||
|
|
||||||
|
Clear all the counters except the in-flight i/o counters.
|
||||||
|
|
||||||
|
<region_id>
|
||||||
|
region_id returned from @stats_create
|
||||||
|
|
||||||
|
@stats_list [<program_id>]
|
||||||
|
|
||||||
|
List all regions registered with @stats_create.
|
||||||
|
|
||||||
|
<program_id>
|
||||||
|
An optional parameter.
|
||||||
|
If this parameter is specified, only matching regions
|
||||||
|
are returned.
|
||||||
|
If it is not specified, all regions are returned.
|
||||||
|
|
||||||
|
Output format:
|
||||||
|
<region_id>: <start_sector>+<length> <step> <program_id> <aux_data>
|
||||||
|
|
||||||
|
@stats_print <region_id> [<starting_line> <number_of_lines>]
|
||||||
|
|
||||||
|
Print counters for each step-sized area of a region.
|
||||||
|
|
||||||
|
<region_id>
|
||||||
|
region_id returned from @stats_create
|
||||||
|
|
||||||
|
<starting_line>
|
||||||
|
The index of the starting line in the output.
|
||||||
|
If omitted, all lines are returned.
|
||||||
|
|
||||||
|
<number_of_lines>
|
||||||
|
The number of lines to include in the output.
|
||||||
|
If omitted, all lines are returned.
|
||||||
|
|
||||||
|
Output format for each step-sized area of a region:
|
||||||
|
|
||||||
|
<start_sector>+<length> counters
|
||||||
|
|
||||||
|
The first 11 counters have the same meaning as
|
||||||
|
/sys/block/*/stat or /proc/diskstats.
|
||||||
|
|
||||||
|
Please refer to Documentation/iostats.txt for details.
|
||||||
|
|
||||||
|
1. the number of reads completed
|
||||||
|
2. the number of reads merged
|
||||||
|
3. the number of sectors read
|
||||||
|
4. the number of milliseconds spent reading
|
||||||
|
5. the number of writes completed
|
||||||
|
6. the number of writes merged
|
||||||
|
7. the number of sectors written
|
||||||
|
8. the number of milliseconds spent writing
|
||||||
|
9. the number of I/Os currently in progress
|
||||||
|
10. the number of milliseconds spent doing I/Os
|
||||||
|
11. the weighted number of milliseconds spent doing I/Os
|
||||||
|
|
||||||
|
Additional counters:
|
||||||
|
12. the total time spent reading in milliseconds
|
||||||
|
13. the total time spent writing in milliseconds
|
||||||
|
|
||||||
|
@stats_print_clear <region_id> [<starting_line> <number_of_lines>]
|
||||||
|
|
||||||
|
Atomically print and then clear all the counters except the
|
||||||
|
in-flight i/o counters. Useful when the client consuming the
|
||||||
|
statistics does not want to lose any statistics (those updated
|
||||||
|
between printing and clearing).
|
||||||
|
|
||||||
|
<region_id>
|
||||||
|
region_id returned from @stats_create
|
||||||
|
|
||||||
|
<starting_line>
|
||||||
|
The index of the starting line in the output.
|
||||||
|
If omitted, all lines are printed and then cleared.
|
||||||
|
|
||||||
|
<number_of_lines>
|
||||||
|
The number of lines to process.
|
||||||
|
If omitted, all lines are printed and then cleared.
|
||||||
|
|
||||||
|
@stats_set_aux <region_id> <aux_data>
|
||||||
|
|
||||||
|
Store auxiliary data aux_data for the specified region.
|
||||||
|
|
||||||
|
<region_id>
|
||||||
|
region_id returned from @stats_create
|
||||||
|
|
||||||
|
<aux_data>
|
||||||
|
The string that identifies data which is useful to the client
|
||||||
|
program that created the range. The kernel returns this
|
||||||
|
string back in the output of @stats_list message, but it
|
||||||
|
doesn't use this value for anything.
|
||||||
|
|
||||||
|
Examples
|
||||||
|
========
|
||||||
|
|
||||||
|
Subdivide the DM device 'vol' into 100 pieces and start collecting
|
||||||
|
statistics on them:
|
||||||
|
|
||||||
|
dmsetup message vol 0 @stats_create - /100
|
||||||
|
|
||||||
|
Set the auxillary data string to "foo bar baz" (the escape for each
|
||||||
|
space must also be escaped, otherwise the shell will consume them):
|
||||||
|
|
||||||
|
dmsetup message vol 0 @stats_set_aux 0 foo\\ bar\\ baz
|
||||||
|
|
||||||
|
List the statistics:
|
||||||
|
|
||||||
|
dmsetup message vol 0 @stats_list
|
||||||
|
|
||||||
|
Print the statistics:
|
||||||
|
|
||||||
|
dmsetup message vol 0 @stats_print 0
|
||||||
|
|
||||||
|
Delete the statistics:
|
||||||
|
|
||||||
|
dmsetup message vol 0 @stats_delete 0
|
@ -99,13 +99,14 @@ Using an existing pool device
|
|||||||
$data_block_size $low_water_mark"
|
$data_block_size $low_water_mark"
|
||||||
|
|
||||||
$data_block_size gives the smallest unit of disk space that can be
|
$data_block_size gives the smallest unit of disk space that can be
|
||||||
allocated at a time expressed in units of 512-byte sectors. People
|
allocated at a time expressed in units of 512-byte sectors.
|
||||||
primarily interested in thin provisioning may want to use a value such
|
$data_block_size must be between 128 (64KB) and 2097152 (1GB) and a
|
||||||
as 1024 (512KB). People doing lots of snapshotting may want a smaller value
|
multiple of 128 (64KB). $data_block_size cannot be changed after the
|
||||||
such as 128 (64KB). If you are not zeroing newly-allocated data,
|
thin-pool is created. People primarily interested in thin provisioning
|
||||||
a larger $data_block_size in the region of 256000 (128MB) is suggested.
|
may want to use a value such as 1024 (512KB). People doing lots of
|
||||||
$data_block_size must be the same for the lifetime of the
|
snapshotting may want a smaller value such as 128 (64KB). If you are
|
||||||
metadata device.
|
not zeroing newly-allocated data, a larger $data_block_size in the
|
||||||
|
region of 256000 (128MB) is suggested.
|
||||||
|
|
||||||
$low_water_mark is expressed in blocks of size $data_block_size. If
|
$low_water_mark is expressed in blocks of size $data_block_size. If
|
||||||
free space on the data device drops below this level then a dm event
|
free space on the data device drops below this level then a dm event
|
||||||
|
@ -1,10 +1,14 @@
|
|||||||
* ARM architected timer
|
* ARM architected timer
|
||||||
|
|
||||||
ARM cores may have a per-core architected timer, which provides per-cpu timers.
|
ARM cores may have a per-core architected timer, which provides per-cpu timers,
|
||||||
|
or a memory mapped architected timer, which provides up to 8 frames with a
|
||||||
|
physical and optional virtual timer per frame.
|
||||||
|
|
||||||
The timer is attached to a GIC to deliver its per-processor interrupts.
|
The per-core architected timer is attached to a GIC to deliver its
|
||||||
|
per-processor interrupts via PPIs. The memory mapped timer is attached to a GIC
|
||||||
|
to deliver its interrupts via SPIs.
|
||||||
|
|
||||||
** Timer node properties:
|
** CP15 Timer node properties:
|
||||||
|
|
||||||
- compatible : Should at least contain one of
|
- compatible : Should at least contain one of
|
||||||
"arm,armv7-timer"
|
"arm,armv7-timer"
|
||||||
@ -26,3 +30,52 @@ Example:
|
|||||||
<1 10 0xf08>;
|
<1 10 0xf08>;
|
||||||
clock-frequency = <100000000>;
|
clock-frequency = <100000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
** Memory mapped timer node properties:
|
||||||
|
|
||||||
|
- compatible : Should at least contain "arm,armv7-timer-mem".
|
||||||
|
|
||||||
|
- clock-frequency : The frequency of the main counter, in Hz. Optional.
|
||||||
|
|
||||||
|
- reg : The control frame base address.
|
||||||
|
|
||||||
|
Note that #address-cells, #size-cells, and ranges shall be present to ensure
|
||||||
|
the CPU can address a frame's registers.
|
||||||
|
|
||||||
|
A timer node has up to 8 frame sub-nodes, each with the following properties:
|
||||||
|
|
||||||
|
- frame-number: 0 to 7.
|
||||||
|
|
||||||
|
- interrupts : Interrupt list for physical and virtual timers in that order.
|
||||||
|
The virtual timer interrupt is optional.
|
||||||
|
|
||||||
|
- reg : The first and second view base addresses in that order. The second view
|
||||||
|
base address is optional.
|
||||||
|
|
||||||
|
- status : "disabled" indicates the frame is not available for use. Optional.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
timer@f0000000 {
|
||||||
|
compatible = "arm,armv7-timer-mem";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
reg = <0xf0000000 0x1000>;
|
||||||
|
clock-frequency = <50000000>;
|
||||||
|
|
||||||
|
frame@f0001000 {
|
||||||
|
frame-number = <0>
|
||||||
|
interrupts = <0 13 0x8>,
|
||||||
|
<0 14 0x8>;
|
||||||
|
reg = <0xf0001000 0x1000>,
|
||||||
|
<0xf0002000 0x1000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
frame@f0003000 {
|
||||||
|
frame-number = <1>
|
||||||
|
interrupts = <0 15 0x8>;
|
||||||
|
reg = <0xf0003000 0x1000>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
@ -1,18 +1,15 @@
|
|||||||
* AT91's Analog to Digital Converter (ADC)
|
* AT91's Analog to Digital Converter (ADC)
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: Should be "atmel,at91sam9260-adc"
|
- compatible: Should be "atmel,<chip>-adc"
|
||||||
|
<chip> can be "at91sam9260", "at91sam9g45" or "at91sam9x5"
|
||||||
- reg: Should contain ADC registers location and length
|
- reg: Should contain ADC registers location and length
|
||||||
- interrupts: Should contain the IRQ line for the ADC
|
- interrupts: Should contain the IRQ line for the ADC
|
||||||
- atmel,adc-channel-base: Offset of the first channel data register
|
|
||||||
- atmel,adc-channels-used: Bitmask of the channels muxed and enable for this
|
- atmel,adc-channels-used: Bitmask of the channels muxed and enable for this
|
||||||
device
|
device
|
||||||
- atmel,adc-drdy-mask: Mask of the DRDY interruption in the ADC
|
|
||||||
- atmel,adc-num-channels: Number of channels available in the ADC
|
- atmel,adc-num-channels: Number of channels available in the ADC
|
||||||
- atmel,adc-startup-time: Startup Time of the ADC in microseconds as
|
- atmel,adc-startup-time: Startup Time of the ADC in microseconds as
|
||||||
defined in the datasheet
|
defined in the datasheet
|
||||||
- atmel,adc-status-register: Offset of the Interrupt Status Register
|
|
||||||
- atmel,adc-trigger-register: Offset of the Trigger Register
|
|
||||||
- atmel,adc-vref: Reference voltage in millivolts for the conversions
|
- atmel,adc-vref: Reference voltage in millivolts for the conversions
|
||||||
- atmel,adc-res: List of resolution in bits supported by the ADC. List size
|
- atmel,adc-res: List of resolution in bits supported by the ADC. List size
|
||||||
must be two at least.
|
must be two at least.
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
Broadcom Kona Family timer
|
|
||||||
-----------------------------------------------------
|
|
||||||
This timer is used in the following Broadcom SoCs:
|
|
||||||
BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible : "bcm,kona-timer"
|
|
||||||
- reg : Register range for the timer
|
|
||||||
- interrupts : interrupt for the timer
|
|
||||||
- clock-frequency: frequency that the clock operates
|
|
||||||
|
|
||||||
Example:
|
|
||||||
timer@35006000 {
|
|
||||||
compatible = "bcm,kona-timer";
|
|
||||||
reg = <0x35006000 0x1000>;
|
|
||||||
interrupts = <0x0 7 0x4>;
|
|
||||||
clock-frequency = <32768>;
|
|
||||||
};
|
|
||||||
|
|
@ -6,4 +6,5 @@ bcm11351, bcm28145, bcm28155 SoCs) shall have the following properties:
|
|||||||
|
|
||||||
Required root node property:
|
Required root node property:
|
||||||
|
|
||||||
compatible = "bcm,bcm11351";
|
compatible = "brcm,bcm11351";
|
||||||
|
DEPRECATED: compatible = "bcm,bcm11351";
|
||||||
|
20
Documentation/devicetree/bindings/arm/bcm/kona-timer.txt
Normal file
20
Documentation/devicetree/bindings/arm/bcm/kona-timer.txt
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
Broadcom Kona Family timer
|
||||||
|
-----------------------------------------------------
|
||||||
|
This timer is used in the following Broadcom SoCs:
|
||||||
|
BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "brcm,kona-timer"
|
||||||
|
- DEPRECATED: compatible : "bcm,kona-timer"
|
||||||
|
- reg : Register range for the timer
|
||||||
|
- interrupts : interrupt for the timer
|
||||||
|
- clock-frequency: frequency that the clock operates
|
||||||
|
|
||||||
|
Example:
|
||||||
|
timer@35006000 {
|
||||||
|
compatible = "brcm,kona-timer";
|
||||||
|
reg = <0x35006000 0x1000>;
|
||||||
|
interrupts = <0x0 7 0x4>;
|
||||||
|
clock-frequency = <32768>;
|
||||||
|
};
|
||||||
|
|
15
Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt
Normal file
15
Documentation/devicetree/bindings/arm/bcm/kona-wdt.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Broadcom Kona Family Watchdog Timer
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
This watchdog timer is used in the following Broadcom SoCs:
|
||||||
|
BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible = "brcm,bcm11351-wdt", "brcm,kona-wdt";
|
||||||
|
- reg: memory address & range
|
||||||
|
|
||||||
|
Example:
|
||||||
|
watchdog@35002f40 {
|
||||||
|
compatible = "brcm,bcm11351-wdt", "brcm,kona-wdt";
|
||||||
|
reg = <0x35002f40 0x6c>;
|
||||||
|
};
|
@ -16,9 +16,11 @@ Required properties:
|
|||||||
performs the same operation).
|
performs the same operation).
|
||||||
"marvell,"aurora-outer-cache: Marvell Controller designed to be
|
"marvell,"aurora-outer-cache: Marvell Controller designed to be
|
||||||
compatible with the ARM one with outer cache mode.
|
compatible with the ARM one with outer cache mode.
|
||||||
"bcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an
|
"brcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an
|
||||||
offset needs to be added to the address before passing down to the L2
|
offset needs to be added to the address before passing down to the L2
|
||||||
cache controller
|
cache controller
|
||||||
|
"bcm,bcm11351-a2-pl310-cache": DEPRECATED by
|
||||||
|
"brcm,bcm11351-a2-pl310-cache"
|
||||||
- cache-unified : Specifies the cache is a unified cache.
|
- cache-unified : Specifies the cache is a unified cache.
|
||||||
- cache-level : Should be set to 2 for a level 2 cache.
|
- cache-level : Should be set to 2 for a level 2 cache.
|
||||||
- reg : Physical base address and size of cache controller's memory mapped
|
- reg : Physical base address and size of cache controller's memory mapped
|
||||||
|
@ -59,3 +59,6 @@ Boards:
|
|||||||
|
|
||||||
- AM43x EPOS EVM
|
- AM43x EPOS EVM
|
||||||
compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43"
|
compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43"
|
||||||
|
|
||||||
|
- DRA7 EVM: Software Developement Board for DRA7XX
|
||||||
|
compatible = "ti,dra7-evm", "ti,dra7"
|
||||||
|
@ -22,7 +22,7 @@ This contains the board-specific information.
|
|||||||
- compatible: must be "stericsson,s365".
|
- compatible: must be "stericsson,s365".
|
||||||
- vana15-supply: the regulator supplying the 1.5V to drive the
|
- vana15-supply: the regulator supplying the 1.5V to drive the
|
||||||
board.
|
board.
|
||||||
- syscon: a pointer to the syscon node so we can acccess the
|
- syscon: a pointer to the syscon node so we can access the
|
||||||
syscon registers to set the board as self-powered.
|
syscon registers to set the board as self-powered.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
33
Documentation/devicetree/bindings/arm/vexpress-scc.txt
Normal file
33
Documentation/devicetree/bindings/arm/vexpress-scc.txt
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
ARM Versatile Express Serial Configuration Controller
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
Test chips for ARM Versatile Express platform implement SCC (Serial
|
||||||
|
Configuration Controller) interface, used to set initial conditions
|
||||||
|
for the test chip.
|
||||||
|
|
||||||
|
In some cases its registers are also mapped in normal address space
|
||||||
|
and can be used to obtain runtime information about the chip internals
|
||||||
|
(like silicon temperature sensors) and as interface to other subsystems
|
||||||
|
like platform configuration control and power management.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible value: "arm,vexpress-scc,<model>", "arm,vexpress-scc";
|
||||||
|
where <model> is the full tile model name (as used
|
||||||
|
in the tile's Technical Reference Manual),
|
||||||
|
eg. for Coretile Express A15x2 A7x3 (V2P-CA15_A7):
|
||||||
|
compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc";
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- reg: when the SCC is memory mapped, physical address and size of the
|
||||||
|
registers window
|
||||||
|
- interrupts: when the SCC can generate a system-level interrupt
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
scc@7fff0000 {
|
||||||
|
compatible = "arm,vexpress-scc,v2p-ca15_a7", "arm,vexpress-scc";
|
||||||
|
reg = <0 0x7fff0000 0 0x1000>;
|
||||||
|
interrupts = <0 95 4>;
|
||||||
|
};
|
@ -32,8 +32,8 @@ numbers - see motherboard's TRM for more details.
|
|||||||
The node describing a config device must refer to the sysreg node via
|
The node describing a config device must refer to the sysreg node via
|
||||||
"arm,vexpress,config-bridge" phandle (can be also defined in the node's
|
"arm,vexpress,config-bridge" phandle (can be also defined in the node's
|
||||||
parent) and relies on the board topology properties - see main vexpress
|
parent) and relies on the board topology properties - see main vexpress
|
||||||
node documentation for more details. It must must also define the
|
node documentation for more details. It must also define the following
|
||||||
following property:
|
property:
|
||||||
- arm,vexpress-sysreg,func : must contain two cells:
|
- arm,vexpress-sysreg,func : must contain two cells:
|
||||||
- first cell defines function number (eg. 1 for clock generator,
|
- first cell defines function number (eg. 1 for clock generator,
|
||||||
2 for voltage regulators etc.)
|
2 for voltage regulators etc.)
|
||||||
|
@ -4,27 +4,17 @@ SATA nodes are defined to describe on-chip Serial ATA controllers.
|
|||||||
Each SATA controller should have its own node.
|
Each SATA controller should have its own node.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : compatible list, contains "calxeda,hb-ahci" or "snps,spear-ahci"
|
- compatible : compatible list, contains "snps,spear-ahci"
|
||||||
- interrupts : <interrupt mapping for SATA IRQ>
|
- interrupts : <interrupt mapping for SATA IRQ>
|
||||||
- reg : <registers mapping>
|
- reg : <registers mapping>
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- calxeda,port-phys: phandle-combophy and lane assignment, which maps each
|
|
||||||
SATA port to a combophy and a lane within that
|
|
||||||
combophy
|
|
||||||
- calxeda,sgpio-gpio: phandle-gpio bank, bit offset, and default on or off,
|
|
||||||
which indicates that the driver supports SGPIO
|
|
||||||
indicator lights using the indicated GPIOs
|
|
||||||
- calxeda,led-order : a u32 array that map port numbers to offsets within the
|
|
||||||
SGPIO bitstream.
|
|
||||||
- dma-coherent : Present if dma operations are coherent
|
- dma-coherent : Present if dma operations are coherent
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
sata@ffe08000 {
|
sata@ffe08000 {
|
||||||
compatible = "calxeda,hb-ahci";
|
compatible = "snps,spear-ahci";
|
||||||
reg = <0xffe08000 0x1000>;
|
reg = <0xffe08000 0x1000>;
|
||||||
interrupts = <115>;
|
interrupts = <115>;
|
||||||
calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1
|
|
||||||
&combophy0 2 &combophy0 3>;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
44
Documentation/devicetree/bindings/ata/sata_highbank.txt
Normal file
44
Documentation/devicetree/bindings/ata/sata_highbank.txt
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
* Calxeda AHCI SATA Controller
|
||||||
|
|
||||||
|
SATA nodes are defined to describe on-chip Serial ATA controllers.
|
||||||
|
The Calxeda SATA controller mostly conforms to the AHCI interface
|
||||||
|
with some special extensions to add functionality.
|
||||||
|
Each SATA controller should have its own node.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : compatible list, contains "calxeda,hb-ahci"
|
||||||
|
- interrupts : <interrupt mapping for SATA IRQ>
|
||||||
|
- reg : <registers mapping>
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- dma-coherent : Present if dma operations are coherent
|
||||||
|
- calxeda,port-phys : phandle-combophy and lane assignment, which maps each
|
||||||
|
SATA port to a combophy and a lane within that
|
||||||
|
combophy
|
||||||
|
- calxeda,sgpio-gpio: phandle-gpio bank, bit offset, and default on or off,
|
||||||
|
which indicates that the driver supports SGPIO
|
||||||
|
indicator lights using the indicated GPIOs
|
||||||
|
- calxeda,led-order : a u32 array that map port numbers to offsets within the
|
||||||
|
SGPIO bitstream.
|
||||||
|
- calxeda,tx-atten : a u32 array that contains TX attenuation override
|
||||||
|
codes, one per port. The upper 3 bytes are always
|
||||||
|
0 and thus ignored.
|
||||||
|
- calxeda,pre-clocks : a u32 that indicates the number of additional clock
|
||||||
|
cycles to transmit before sending an SGPIO pattern
|
||||||
|
- calxeda,post-clocks: a u32 that indicates the number of additional clock
|
||||||
|
cycles to transmit after sending an SGPIO pattern
|
||||||
|
|
||||||
|
Example:
|
||||||
|
sata@ffe08000 {
|
||||||
|
compatible = "calxeda,hb-ahci";
|
||||||
|
reg = <0xffe08000 0x1000>;
|
||||||
|
interrupts = <115>;
|
||||||
|
dma-coherent;
|
||||||
|
calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1
|
||||||
|
&combophy0 2 &combophy0 3>;
|
||||||
|
calxeda,sgpio-gpio =<&gpioh 5 1 &gpioh 6 1 &gpioh 7 1>;
|
||||||
|
calxeda,led-order = <4 0 1 2 3>;
|
||||||
|
calxeda,tx-atten = <0xff 22 0xff 0xff 23>;
|
||||||
|
calxeda,pre-clocks = <10>;
|
||||||
|
calxeda,post-clocks = <0>;
|
||||||
|
};
|
@ -8,7 +8,7 @@ The actual devices are instantiated from the child nodes of a WEIM node.
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|
||||||
- compatible: Should be set to "fsl,imx6q-weim"
|
- compatible: Should be set to "fsl,<soc>-weim"
|
||||||
- reg: A resource specifier for the register space
|
- reg: A resource specifier for the register space
|
||||||
(see the example below)
|
(see the example below)
|
||||||
- clocks: the clock, see the example below.
|
- clocks: the clock, see the example below.
|
||||||
@ -21,11 +21,18 @@ Required properties:
|
|||||||
|
|
||||||
Timing property for child nodes. It is mandatory, not optional.
|
Timing property for child nodes. It is mandatory, not optional.
|
||||||
|
|
||||||
- fsl,weim-cs-timing: The timing array, contains 6 timing values for the
|
- fsl,weim-cs-timing: The timing array, contains timing values for the
|
||||||
child node. We can get the CS index from the child
|
child node. We can get the CS index from the child
|
||||||
node's "reg" property. This property contains the values
|
node's "reg" property. The number of registers depends
|
||||||
for the registers EIM_CSnGCR1, EIM_CSnGCR2, EIM_CSnRCR1,
|
on the selected chip.
|
||||||
EIM_CSnRCR2, EIM_CSnWCR1, EIM_CSnWCR2 in this order.
|
For i.MX1, i.MX21 ("fsl,imx1-weim") there are two
|
||||||
|
registers: CSxU, CSxL.
|
||||||
|
For i.MX25, i.MX27, i.MX31 and i.MX35 ("fsl,imx27-weim")
|
||||||
|
there are three registers: CSCRxU, CSCRxL, CSCRxA.
|
||||||
|
For i.MX50, i.MX53 ("fsl,imx50-weim"),
|
||||||
|
i.MX51 ("fsl,imx51-weim") and i.MX6Q ("fsl,imx6q-weim")
|
||||||
|
there are six registers: CSxGCR1, CSxGCR2, CSxRCR1,
|
||||||
|
CSxRCR2, CSxWCR1, CSxWCR2.
|
||||||
|
|
||||||
Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM:
|
Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM:
|
||||||
|
|
||||||
|
276
Documentation/devicetree/bindings/bus/mvebu-mbus.txt
Normal file
276
Documentation/devicetree/bindings/bus/mvebu-mbus.txt
Normal file
@ -0,0 +1,276 @@
|
|||||||
|
|
||||||
|
* Marvell MBus
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible: Should be set to one of the following:
|
||||||
|
marvell,armada370-mbus
|
||||||
|
marvell,armadaxp-mbus
|
||||||
|
marvell,armada370-mbus
|
||||||
|
marvell,armadaxp-mbus
|
||||||
|
marvell,kirkwood-mbus
|
||||||
|
marvell,dove-mbus
|
||||||
|
marvell,orion5x-88f5281-mbus
|
||||||
|
marvell,orion5x-88f5182-mbus
|
||||||
|
marvell,orion5x-88f5181-mbus
|
||||||
|
marvell,orion5x-88f6183-mbus
|
||||||
|
marvell,mv78xx0-mbus
|
||||||
|
|
||||||
|
- address-cells: Must be '2'. The first cell for the MBus ID encoding,
|
||||||
|
the second cell for the address offset within the window.
|
||||||
|
|
||||||
|
- size-cells: Must be '1'.
|
||||||
|
|
||||||
|
- ranges: Must be set up to provide a proper translation for each child.
|
||||||
|
See the examples below.
|
||||||
|
|
||||||
|
- controller: Contains a single phandle referring to the MBus controller
|
||||||
|
node. This allows to specify the node that contains the
|
||||||
|
registers that control the MBus, which is typically contained
|
||||||
|
within the internal register window (see below).
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- pcie-mem-aperture: This optional property contains the aperture for
|
||||||
|
the memory region of the PCIe driver.
|
||||||
|
If it's defined, it must encode the base address and
|
||||||
|
size for the address decoding windows allocated for
|
||||||
|
the PCIe memory region.
|
||||||
|
|
||||||
|
- pcie-io-aperture: Just as explained for the above property, this
|
||||||
|
optional property contains the aperture for the
|
||||||
|
I/O region of the PCIe driver.
|
||||||
|
|
||||||
|
* Marvell MBus controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible: Should be set to "marvell,mbus-controller".
|
||||||
|
|
||||||
|
- reg: Device's register space.
|
||||||
|
Two entries are expected (see the examples below):
|
||||||
|
the first one controls the devices decoding window and
|
||||||
|
the second one controls the SDRAM decoding window.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
soc {
|
||||||
|
compatible = "marvell,armada370-mbus", "simple-bus";
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
controller = <&mbusc>;
|
||||||
|
pcie-mem-aperture = <0xe0000000 0x8000000>;
|
||||||
|
pcie-io-aperture = <0xe8000000 0x100000>;
|
||||||
|
|
||||||
|
internal-regs {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
|
||||||
|
mbusc: mbus-controller@20000 {
|
||||||
|
compatible = "marvell,mbus-controller";
|
||||||
|
reg = <0x20000 0x100>, <0x20180 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* more children ...*/
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
** MBus address decoding window specification
|
||||||
|
|
||||||
|
The MBus children address space is comprised of two cells: the first one for
|
||||||
|
the window ID and the second one for the offset within the window.
|
||||||
|
In order to allow to describe valid and non-valid window entries, the
|
||||||
|
following encoding is used:
|
||||||
|
|
||||||
|
0xSIAA0000 0x00oooooo
|
||||||
|
|
||||||
|
Where:
|
||||||
|
|
||||||
|
S = 0x0 for a MBus valid window
|
||||||
|
S = 0xf for a non-valid window (see below)
|
||||||
|
|
||||||
|
If S = 0x0, then:
|
||||||
|
|
||||||
|
I = 4-bit window target ID
|
||||||
|
AA = windpw attribute
|
||||||
|
|
||||||
|
If S = 0xf, then:
|
||||||
|
|
||||||
|
I = don't care
|
||||||
|
AA = 1 for internal register
|
||||||
|
|
||||||
|
Following the above encoding, for each ranges entry for a MBus valid window
|
||||||
|
(S = 0x0), an address decoding window is allocated. On the other side,
|
||||||
|
entries for translation that do not correspond to valid windows (S = 0xf)
|
||||||
|
are skipped.
|
||||||
|
|
||||||
|
soc {
|
||||||
|
compatible = "marvell,armada370-mbus", "simple-bus";
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
controller = <&mbusc>;
|
||||||
|
|
||||||
|
ranges = <0xf0010000 0 0 0xd0000000 0x100000
|
||||||
|
0x01e00000 0 0 0xfff00000 0x100000>;
|
||||||
|
|
||||||
|
bootrom {
|
||||||
|
compatible = "marvell,bootrom";
|
||||||
|
reg = <0x01e00000 0 0x100000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* other children */
|
||||||
|
...
|
||||||
|
|
||||||
|
internal-regs {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
ranges = <0 0xf0010000 0 0x100000>;
|
||||||
|
|
||||||
|
mbusc: mbus-controller@20000 {
|
||||||
|
compatible = "marvell,mbus-controller";
|
||||||
|
reg = <0x20000 0x100>, <0x20180 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* more children ...*/
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
In the shown example, the translation entry in the 'ranges' property is what
|
||||||
|
makes the MBus driver create a static decoding window for the corresponding
|
||||||
|
given child device. Note that the binding does not require child nodes to be
|
||||||
|
present. Of course, child nodes are needed to probe the devices.
|
||||||
|
|
||||||
|
Since each window is identified by its target ID and attribute ID there's
|
||||||
|
a special macro that can be use to simplify the translation entries:
|
||||||
|
|
||||||
|
#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
|
||||||
|
|
||||||
|
Using this macro, the above example would be:
|
||||||
|
|
||||||
|
soc {
|
||||||
|
compatible = "marvell,armada370-mbus", "simple-bus";
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
controller = <&mbusc>;
|
||||||
|
|
||||||
|
ranges = < MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
|
||||||
|
MBUS_ID(0x01, 0xe0) 0 0 0xfff00000 0x100000>;
|
||||||
|
|
||||||
|
bootrom {
|
||||||
|
compatible = "marvell,bootrom";
|
||||||
|
reg = <MBUS_ID(0x01, 0xe0) 0 0x100000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* other children */
|
||||||
|
...
|
||||||
|
|
||||||
|
internal-regs {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
|
||||||
|
|
||||||
|
mbusc: mbus-controller@20000 {
|
||||||
|
compatible = "marvell,mbus-controller";
|
||||||
|
reg = <0x20000 0x100>, <0x20180 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* other children */
|
||||||
|
...
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
** About the window base address
|
||||||
|
|
||||||
|
Remember the MBus controller allows a great deal of flexibility for choosing
|
||||||
|
the decoding window base address. When planning the device tree layout it's
|
||||||
|
possible to choose any address as the base address, provided of course there's
|
||||||
|
a region large enough available, and with the required alignment.
|
||||||
|
|
||||||
|
Yet in other words: there's nothing preventing us from setting a base address
|
||||||
|
of 0xf0000000, or 0xd0000000 for the NOR device shown above, if such region is
|
||||||
|
unused.
|
||||||
|
|
||||||
|
** Window allocation policy
|
||||||
|
|
||||||
|
The mbus-node ranges property defines a set of mbus windows that are expected
|
||||||
|
to be set by the operating system and that are guaranteed to be free of overlaps
|
||||||
|
with one another or with the system memory ranges.
|
||||||
|
|
||||||
|
Each entry in the property refers to exactly one window. If the operating system
|
||||||
|
choses to use a different set of mbus windows, it must ensure that any address
|
||||||
|
translations performed from downstream devices are adapted accordingly.
|
||||||
|
|
||||||
|
The operating system may insert additional mbus windows that do not conflict
|
||||||
|
with the ones listed in the ranges, e.g. for mapping PCIe devices.
|
||||||
|
As a special case, the internal register window must be set up by the boot
|
||||||
|
loader at the address listed in the ranges property, since access to that region
|
||||||
|
is needed to set up the other windows.
|
||||||
|
|
||||||
|
** Example
|
||||||
|
|
||||||
|
See the example below, where a more complete device tree is shown:
|
||||||
|
|
||||||
|
soc {
|
||||||
|
compatible = "marvell,armadaxp-mbus", "simple-bus";
|
||||||
|
controller = <&mbusc>;
|
||||||
|
|
||||||
|
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000 /* internal-regs */
|
||||||
|
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
|
||||||
|
MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x8000000>;
|
||||||
|
|
||||||
|
bootrom {
|
||||||
|
compatible = "marvell,bootrom";
|
||||||
|
reg = <MBUS_ID(0x01, 0x1d) 0 0x100000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
devbus-bootcs {
|
||||||
|
status = "okay";
|
||||||
|
ranges = <0 MBUS_ID(0x01, 0x2f) 0 0x8000000>;
|
||||||
|
|
||||||
|
/* NOR */
|
||||||
|
nor {
|
||||||
|
compatible = "cfi-flash";
|
||||||
|
reg = <0 0x8000000>;
|
||||||
|
bank-width = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pcie-controller {
|
||||||
|
compatible = "marvell,armada-xp-pcie";
|
||||||
|
status = "okay";
|
||||||
|
device_type = "pci";
|
||||||
|
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
ranges =
|
||||||
|
<0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 /* Port 0.0 registers */
|
||||||
|
0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000 /* Port 2.0 registers */
|
||||||
|
0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 /* Port 0.1 registers */
|
||||||
|
0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000 /* Port 0.2 registers */
|
||||||
|
0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000 /* Port 0.3 registers */
|
||||||
|
0x82000800 0 0xe0000000 MBUS_ID(0x04, 0xe8) 0xe0000000 0 0x08000000 /* Port 0.0 MEM */
|
||||||
|
0x81000800 0 0 MBUS_ID(0x04, 0xe0) 0xe8000000 0 0x00100000 /* Port 0.0 IO */>;
|
||||||
|
|
||||||
|
|
||||||
|
pcie@1,0 {
|
||||||
|
/* Port 0, Lane 0 */
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
internal-regs {
|
||||||
|
compatible = "simple-bus";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
|
||||||
|
|
||||||
|
mbusc: mbus-controller@20000 {
|
||||||
|
reg = <0x20000 0x100>, <0x20180 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
interrupt-controller@20000 {
|
||||||
|
reg = <0x20a00 0x2d0>, <0x21070 0x58>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@ -5,7 +5,7 @@ TI C6X SoCs contain a region of miscellaneous registers which provide various
|
|||||||
function for SoC control or status. Details vary considerably among from SoC
|
function for SoC control or status. Details vary considerably among from SoC
|
||||||
to SoC with no two being alike.
|
to SoC with no two being alike.
|
||||||
|
|
||||||
In general, the Device State Configuraion Registers (DSCR) will provide one or
|
In general, the Device State Configuration Registers (DSCR) will provide one or
|
||||||
more configuration registers often protected by a lock register where one or
|
more configuration registers often protected by a lock register where one or
|
||||||
more key values must be written to a lock register in order to unlock the
|
more key values must be written to a lock register in order to unlock the
|
||||||
configuration register for writes. These configuration register may be used to
|
configuration register for writes. These configuration register may be used to
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
The Samsung Audio Subsystem clock controller generates and supplies clocks
|
The Samsung Audio Subsystem clock controller generates and supplies clocks
|
||||||
to Audio Subsystem block available in the S5PV210 and Exynos SoCs. The clock
|
to Audio Subsystem block available in the S5PV210 and Exynos SoCs. The clock
|
||||||
binding described here is applicable to all SoC's in Exynos family.
|
binding described here is applicable to all SoCs in Exynos family.
|
||||||
|
|
||||||
Required Properties:
|
Required Properties:
|
||||||
|
|
||||||
|
@ -236,6 +236,7 @@ Exynos4 SoC and this is specified where applicable.
|
|||||||
spi0_isp_sclk 380 Exynos4x12
|
spi0_isp_sclk 380 Exynos4x12
|
||||||
spi1_isp_sclk 381 Exynos4x12
|
spi1_isp_sclk 381 Exynos4x12
|
||||||
uart_isp_sclk 382 Exynos4x12
|
uart_isp_sclk 382 Exynos4x12
|
||||||
|
tmu_apbif 383
|
||||||
|
|
||||||
[Mux Clocks]
|
[Mux Clocks]
|
||||||
|
|
||||||
|
@ -59,6 +59,9 @@ clock which they consume.
|
|||||||
sclk_spi0 154
|
sclk_spi0 154
|
||||||
sclk_spi1 155
|
sclk_spi1 155
|
||||||
sclk_spi2 156
|
sclk_spi2 156
|
||||||
|
div_i2s1 157
|
||||||
|
div_i2s2 158
|
||||||
|
sclk_hdmiphy 159
|
||||||
|
|
||||||
|
|
||||||
[Peripheral Clock Gates]
|
[Peripheral Clock Gates]
|
||||||
@ -154,7 +157,16 @@ clock which they consume.
|
|||||||
dsim0 341
|
dsim0 341
|
||||||
dp 342
|
dp 342
|
||||||
mixer 343
|
mixer 343
|
||||||
hdmi 345
|
hdmi 344
|
||||||
|
g2d 345
|
||||||
|
|
||||||
|
|
||||||
|
[Clock Muxes]
|
||||||
|
|
||||||
|
Clock ID
|
||||||
|
----------------------------
|
||||||
|
mout_hdmi 1024
|
||||||
|
|
||||||
|
|
||||||
Example 1: An example of a clock controller node is listed below.
|
Example 1: An example of a clock controller node is listed below.
|
||||||
|
|
||||||
|
@ -59,6 +59,7 @@ clock which they consume.
|
|||||||
sclk_pwm 155
|
sclk_pwm 155
|
||||||
sclk_gscl_wa 156
|
sclk_gscl_wa 156
|
||||||
sclk_gscl_wb 157
|
sclk_gscl_wb 157
|
||||||
|
sclk_hdmiphy 158
|
||||||
|
|
||||||
[Peripheral Clock Gates]
|
[Peripheral Clock Gates]
|
||||||
|
|
||||||
@ -179,6 +180,17 @@ clock which they consume.
|
|||||||
fimc_lite3 495
|
fimc_lite3 495
|
||||||
aclk_g3d 500
|
aclk_g3d 500
|
||||||
g3d 501
|
g3d 501
|
||||||
|
smmu_mixer 502
|
||||||
|
|
||||||
|
Mux ID
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
mout_hdmi 640
|
||||||
|
|
||||||
|
Divider ID
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
dout_pixel 768
|
||||||
|
|
||||||
Example 1: An example of a clock controller node is listed below.
|
Example 1: An example of a clock controller node is listed below.
|
||||||
|
|
||||||
|
@ -197,6 +197,7 @@ clocks and IDs.
|
|||||||
spdif0_gate 183
|
spdif0_gate 183
|
||||||
spdif1_gate 184
|
spdif1_gate 184
|
||||||
spdif_ipg_gate 185
|
spdif_ipg_gate 185
|
||||||
|
ocram 186
|
||||||
|
|
||||||
Examples (for mx53):
|
Examples (for mx53):
|
||||||
|
|
||||||
|
@ -209,6 +209,12 @@ clocks and IDs.
|
|||||||
pll5_post_div 194
|
pll5_post_div 194
|
||||||
pll5_video_div 195
|
pll5_video_div 195
|
||||||
eim_slow 196
|
eim_slow 196
|
||||||
|
spdif 197
|
||||||
|
cko2_sel 198
|
||||||
|
cko2_podf 199
|
||||||
|
cko2 200
|
||||||
|
cko 201
|
||||||
|
vdoa 202
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
* Samsung S3C64xx Clock Controller
|
||||||
|
|
||||||
|
The S3C64xx clock controller generates and supplies clock to various controllers
|
||||||
|
within the SoC. The clock binding described here is applicable to all SoCs in
|
||||||
|
the S3C64xx family.
|
||||||
|
|
||||||
|
Required Properties:
|
||||||
|
|
||||||
|
- compatible: should be one of the following.
|
||||||
|
- "samsung,s3c6400-clock" - controller compatible with S3C6400 SoC.
|
||||||
|
- "samsung,s3c6410-clock" - controller compatible with S3C6410 SoC.
|
||||||
|
|
||||||
|
- reg: physical base address of the controller and length of memory mapped
|
||||||
|
region.
|
||||||
|
|
||||||
|
- #clock-cells: should be 1.
|
||||||
|
|
||||||
|
Each clock is assigned an identifier and client nodes can use this identifier
|
||||||
|
to specify the clock which they consume. Some of the clocks are available only
|
||||||
|
on a particular S3C64xx SoC and this is specified where applicable.
|
||||||
|
|
||||||
|
All available clocks are defined as preprocessor macros in
|
||||||
|
dt-bindings/clock/samsung,s3c64xx-clock.h header and can be used in device
|
||||||
|
tree sources.
|
||||||
|
|
||||||
|
External clocks:
|
||||||
|
|
||||||
|
There are several clocks that are generated outside the SoC. It is expected
|
||||||
|
that they are defined using standard clock bindings with following
|
||||||
|
clock-output-names:
|
||||||
|
- "fin_pll" - PLL input clock (xtal/extclk) - required,
|
||||||
|
- "xusbxti" - USB xtal - required,
|
||||||
|
- "iiscdclk0" - I2S0 codec clock - optional,
|
||||||
|
- "iiscdclk1" - I2S1 codec clock - optional,
|
||||||
|
- "iiscdclk2" - I2S2 codec clock - optional,
|
||||||
|
- "pcmcdclk0" - PCM0 codec clock - optional,
|
||||||
|
- "pcmcdclk1" - PCM1 codec clock - optional, only S3C6410.
|
||||||
|
|
||||||
|
Example: Clock controller node:
|
||||||
|
|
||||||
|
clock: clock-controller@7e00f000 {
|
||||||
|
compatible = "samsung,s3c6410-clock";
|
||||||
|
reg = <0x7e00f000 0x1000>;
|
||||||
|
#clock-cells = <1>;
|
||||||
|
};
|
||||||
|
|
||||||
|
Example: Required external clocks:
|
||||||
|
|
||||||
|
fin_pll: clock-fin-pll {
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-output-names = "fin_pll";
|
||||||
|
clock-frequency = <12000000>;
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
xusbxti: clock-xusbxti {
|
||||||
|
compatible = "fixed-clock";
|
||||||
|
clock-output-names = "xusbxti";
|
||||||
|
clock-frequency = <48000000>;
|
||||||
|
#clock-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
Example: UART controller node that consumes the clock generated by the clock
|
||||||
|
controller (refer to the standard clock bindings for information about
|
||||||
|
"clocks" and "clock-names" properties):
|
||||||
|
|
||||||
|
uart0: serial@7f005000 {
|
||||||
|
compatible = "samsung,s3c6400-uart";
|
||||||
|
reg = <0x7f005000 0x100>;
|
||||||
|
interrupt-parent = <&vic1>;
|
||||||
|
interrupts = <5>;
|
||||||
|
clock-names = "uart", "clk_uart_baud2",
|
||||||
|
"clk_uart_baud3";
|
||||||
|
clocks = <&clock PCLK_UART0>, <&clocks PCLK_UART0>,
|
||||||
|
<&clock SCLK_UART>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
@ -17,7 +17,7 @@ Optional properties for the SRC node:
|
|||||||
- disable-mxtal: if present this will disable the MXTALO,
|
- disable-mxtal: if present this will disable the MXTALO,
|
||||||
i.e. the driver output for the main (~19.2 MHz) chrystal,
|
i.e. the driver output for the main (~19.2 MHz) chrystal,
|
||||||
if the board has its own circuitry for providing this
|
if the board has its own circuitry for providing this
|
||||||
osciallator
|
oscillator
|
||||||
|
|
||||||
|
|
||||||
PLL nodes: these nodes represent the two PLLs on the system,
|
PLL nodes: these nodes represent the two PLLs on the system,
|
||||||
|
@ -8,19 +8,31 @@ Required properties:
|
|||||||
- compatible : shall be one of the following:
|
- compatible : shall be one of the following:
|
||||||
"allwinner,sun4i-osc-clk" - for a gatable oscillator
|
"allwinner,sun4i-osc-clk" - for a gatable oscillator
|
||||||
"allwinner,sun4i-pll1-clk" - for the main PLL clock
|
"allwinner,sun4i-pll1-clk" - for the main PLL clock
|
||||||
|
"allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31
|
||||||
"allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock
|
"allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock
|
||||||
"allwinner,sun4i-axi-clk" - for the AXI clock
|
"allwinner,sun4i-axi-clk" - for the AXI clock
|
||||||
"allwinner,sun4i-axi-gates-clk" - for the AXI gates
|
"allwinner,sun4i-axi-gates-clk" - for the AXI gates
|
||||||
"allwinner,sun4i-ahb-clk" - for the AHB clock
|
"allwinner,sun4i-ahb-clk" - for the AHB clock
|
||||||
"allwinner,sun4i-ahb-gates-clk" - for the AHB gates on A10
|
"allwinner,sun4i-ahb-gates-clk" - for the AHB gates on A10
|
||||||
"allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13
|
"allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13
|
||||||
|
"allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s
|
||||||
|
"allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20
|
||||||
|
"allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31
|
||||||
|
"allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31
|
||||||
"allwinner,sun4i-apb0-clk" - for the APB0 clock
|
"allwinner,sun4i-apb0-clk" - for the APB0 clock
|
||||||
"allwinner,sun4i-apb0-gates-clk" - for the APB0 gates on A10
|
"allwinner,sun4i-apb0-gates-clk" - for the APB0 gates on A10
|
||||||
"allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13
|
"allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13
|
||||||
|
"allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s
|
||||||
|
"allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20
|
||||||
"allwinner,sun4i-apb1-clk" - for the APB1 clock
|
"allwinner,sun4i-apb1-clk" - for the APB1 clock
|
||||||
"allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing
|
"allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing
|
||||||
"allwinner,sun4i-apb1-gates-clk" - for the APB1 gates on A10
|
"allwinner,sun4i-apb1-gates-clk" - for the APB1 gates on A10
|
||||||
"allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13
|
"allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13
|
||||||
|
"allwinner,sun5i-a10s-apb1-gates-clk" - for the APB1 gates on A10s
|
||||||
|
"allwinner,sun6i-a31-apb1-gates-clk" - for the APB1 gates on A31
|
||||||
|
"allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20
|
||||||
|
"allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31
|
||||||
|
"allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31
|
||||||
|
|
||||||
Required properties for all clocks:
|
Required properties for all clocks:
|
||||||
- reg : shall be the control register address for the clock.
|
- reg : shall be the control register address for the clock.
|
||||||
|
@ -0,0 +1,75 @@
|
|||||||
|
Gate clock outputs
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* AXI gates ("allwinner,sun4i-axi-gates-clk")
|
||||||
|
|
||||||
|
DRAM 0
|
||||||
|
|
||||||
|
* AHB gates ("allwinner,sun5i-a10s-ahb-gates-clk")
|
||||||
|
|
||||||
|
USB0 0
|
||||||
|
EHCI0 1
|
||||||
|
OHCI0 2
|
||||||
|
|
||||||
|
SS 5
|
||||||
|
DMA 6
|
||||||
|
BIST 7
|
||||||
|
MMC0 8
|
||||||
|
MMC1 9
|
||||||
|
MMC2 10
|
||||||
|
|
||||||
|
NAND 13
|
||||||
|
SDRAM 14
|
||||||
|
|
||||||
|
EMAC 17
|
||||||
|
TS 18
|
||||||
|
|
||||||
|
SPI0 20
|
||||||
|
SPI1 21
|
||||||
|
SPI2 22
|
||||||
|
|
||||||
|
GPS 26
|
||||||
|
|
||||||
|
HSTIMER 28
|
||||||
|
|
||||||
|
VE 32
|
||||||
|
|
||||||
|
TVE 34
|
||||||
|
|
||||||
|
LCD 36
|
||||||
|
|
||||||
|
CSI 40
|
||||||
|
|
||||||
|
HDMI 43
|
||||||
|
DE_BE 44
|
||||||
|
|
||||||
|
DE_FE 46
|
||||||
|
|
||||||
|
IEP 51
|
||||||
|
MALI400 52
|
||||||
|
|
||||||
|
* APB0 gates ("allwinner,sun5i-a10s-apb0-gates-clk")
|
||||||
|
|
||||||
|
CODEC 0
|
||||||
|
|
||||||
|
IIS 3
|
||||||
|
|
||||||
|
PIO 5
|
||||||
|
IR 6
|
||||||
|
|
||||||
|
KEYPAD 10
|
||||||
|
|
||||||
|
* APB1 gates ("allwinner,sun5i-a10s-apb1-gates-clk")
|
||||||
|
|
||||||
|
I2C0 0
|
||||||
|
I2C1 1
|
||||||
|
I2C2 2
|
||||||
|
|
||||||
|
UART0 16
|
||||||
|
UART1 17
|
||||||
|
UART2 18
|
||||||
|
UART3 19
|
||||||
|
|
||||||
|
Notation:
|
||||||
|
[*]: The datasheet didn't mention these, but they are present on AW code
|
||||||
|
[**]: The datasheet had this marked as "NC" but they are used on AW code
|
@ -0,0 +1,83 @@
|
|||||||
|
Gate clock outputs
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* AHB1 gates ("allwinner,sun6i-a31-ahb1-gates-clk")
|
||||||
|
|
||||||
|
MIPI DSI 1
|
||||||
|
|
||||||
|
SS 5
|
||||||
|
DMA 6
|
||||||
|
|
||||||
|
MMC0 8
|
||||||
|
MMC1 9
|
||||||
|
MMC2 10
|
||||||
|
MMC3 11
|
||||||
|
|
||||||
|
NAND1 12
|
||||||
|
NAND0 13
|
||||||
|
SDRAM 14
|
||||||
|
|
||||||
|
GMAC 17
|
||||||
|
TS 18
|
||||||
|
HSTIMER 19
|
||||||
|
SPI0 20
|
||||||
|
SPI1 21
|
||||||
|
SPI2 22
|
||||||
|
SPI3 23
|
||||||
|
USB_OTG 24
|
||||||
|
|
||||||
|
EHCI0 26
|
||||||
|
EHCI1 27
|
||||||
|
|
||||||
|
OHCI0 29
|
||||||
|
OHCI1 30
|
||||||
|
OHCI2 31
|
||||||
|
VE 32
|
||||||
|
|
||||||
|
LCD0 36
|
||||||
|
LCD1 37
|
||||||
|
|
||||||
|
CSI 40
|
||||||
|
|
||||||
|
HDMI 43
|
||||||
|
DE_BE0 44
|
||||||
|
DE_BE1 45
|
||||||
|
DE_FE1 46
|
||||||
|
DE_FE1 47
|
||||||
|
|
||||||
|
MP 50
|
||||||
|
|
||||||
|
GPU 52
|
||||||
|
|
||||||
|
DEU0 55
|
||||||
|
DEU1 56
|
||||||
|
DRC0 57
|
||||||
|
DRC1 58
|
||||||
|
|
||||||
|
* APB1 gates ("allwinner,sun6i-a31-apb1-gates-clk")
|
||||||
|
|
||||||
|
CODEC 0
|
||||||
|
|
||||||
|
DIGITAL MIC 4
|
||||||
|
PIO 5
|
||||||
|
|
||||||
|
DAUDIO0 12
|
||||||
|
DAUDIO1 13
|
||||||
|
|
||||||
|
* APB2 gates ("allwinner,sun6i-a31-apb2-gates-clk")
|
||||||
|
|
||||||
|
I2C0 0
|
||||||
|
I2C1 1
|
||||||
|
I2C2 2
|
||||||
|
I2C3 3
|
||||||
|
|
||||||
|
UART0 16
|
||||||
|
UART1 17
|
||||||
|
UART2 18
|
||||||
|
UART3 19
|
||||||
|
UART4 20
|
||||||
|
UART5 21
|
||||||
|
|
||||||
|
Notation:
|
||||||
|
[*]: The datasheet didn't mention these, but they are present on AW code
|
||||||
|
[**]: The datasheet had this marked as "NC" but they are used on AW code
|
@ -0,0 +1,98 @@
|
|||||||
|
Gate clock outputs
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* AXI gates ("allwinner,sun4i-axi-gates-clk")
|
||||||
|
|
||||||
|
DRAM 0
|
||||||
|
|
||||||
|
* AHB gates ("allwinner,sun7i-a20-ahb-gates-clk")
|
||||||
|
|
||||||
|
USB0 0
|
||||||
|
EHCI0 1
|
||||||
|
OHCI0 2
|
||||||
|
EHCI1 3
|
||||||
|
OHCI1 4
|
||||||
|
SS 5
|
||||||
|
DMA 6
|
||||||
|
BIST 7
|
||||||
|
MMC0 8
|
||||||
|
MMC1 9
|
||||||
|
MMC2 10
|
||||||
|
MMC3 11
|
||||||
|
MS 12
|
||||||
|
NAND 13
|
||||||
|
SDRAM 14
|
||||||
|
|
||||||
|
ACE 16
|
||||||
|
EMAC 17
|
||||||
|
TS 18
|
||||||
|
|
||||||
|
SPI0 20
|
||||||
|
SPI1 21
|
||||||
|
SPI2 22
|
||||||
|
SPI3 23
|
||||||
|
|
||||||
|
SATA 25
|
||||||
|
|
||||||
|
HSTIMER 28
|
||||||
|
|
||||||
|
VE 32
|
||||||
|
TVD 33
|
||||||
|
TVE0 34
|
||||||
|
TVE1 35
|
||||||
|
LCD0 36
|
||||||
|
LCD1 37
|
||||||
|
|
||||||
|
CSI0 40
|
||||||
|
CSI1 41
|
||||||
|
|
||||||
|
HDMI1 42
|
||||||
|
HDMI0 43
|
||||||
|
DE_BE0 44
|
||||||
|
DE_BE1 45
|
||||||
|
DE_FE1 46
|
||||||
|
DE_FE1 47
|
||||||
|
|
||||||
|
GMAC 49
|
||||||
|
MP 50
|
||||||
|
|
||||||
|
MALI400 52
|
||||||
|
|
||||||
|
* APB0 gates ("allwinner,sun7i-a20-apb0-gates-clk")
|
||||||
|
|
||||||
|
CODEC 0
|
||||||
|
SPDIF 1
|
||||||
|
AC97 2
|
||||||
|
IIS0 3
|
||||||
|
IIS1 4
|
||||||
|
PIO 5
|
||||||
|
IR0 6
|
||||||
|
IR1 7
|
||||||
|
IIS2 8
|
||||||
|
|
||||||
|
KEYPAD 10
|
||||||
|
|
||||||
|
* APB1 gates ("allwinner,sun7i-a20-apb1-gates-clk")
|
||||||
|
|
||||||
|
I2C0 0
|
||||||
|
I2C1 1
|
||||||
|
I2C2 2
|
||||||
|
I2C3 3
|
||||||
|
CAN 4
|
||||||
|
SCR 5
|
||||||
|
PS20 6
|
||||||
|
PS21 7
|
||||||
|
|
||||||
|
I2C4 15
|
||||||
|
UART0 16
|
||||||
|
UART1 17
|
||||||
|
UART2 18
|
||||||
|
UART3 19
|
||||||
|
UART4 20
|
||||||
|
UART5 21
|
||||||
|
UART6 22
|
||||||
|
UART7 23
|
||||||
|
|
||||||
|
Notation:
|
||||||
|
[*]: The datasheet didn't mention these, but they are present on AW code
|
||||||
|
[**]: The datasheet had this marked as "NC" but they are used on AW code
|
157
Documentation/devicetree/bindings/crypto/fsl-sec6.txt
Normal file
157
Documentation/devicetree/bindings/crypto/fsl-sec6.txt
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
SEC 6 is as Freescale's Cryptographic Accelerator and Assurance Module (CAAM).
|
||||||
|
Currently Freescale powerpc chip C29X is embeded with SEC 6.
|
||||||
|
SEC 6 device tree binding include:
|
||||||
|
-SEC 6 Node
|
||||||
|
-Job Ring Node
|
||||||
|
-Full Example
|
||||||
|
|
||||||
|
=====================================================================
|
||||||
|
SEC 6 Node
|
||||||
|
|
||||||
|
Description
|
||||||
|
|
||||||
|
Node defines the base address of the SEC 6 block.
|
||||||
|
This block specifies the address range of all global
|
||||||
|
configuration registers for the SEC 6 block.
|
||||||
|
For example, In C293, we could see three SEC 6 node.
|
||||||
|
|
||||||
|
PROPERTIES
|
||||||
|
|
||||||
|
- compatible
|
||||||
|
Usage: required
|
||||||
|
Value type: <string>
|
||||||
|
Definition: Must include "fsl,sec-v6.0".
|
||||||
|
|
||||||
|
- fsl,sec-era
|
||||||
|
Usage: optional
|
||||||
|
Value type: <u32>
|
||||||
|
Definition: A standard property. Define the 'ERA' of the SEC
|
||||||
|
device.
|
||||||
|
|
||||||
|
- #address-cells
|
||||||
|
Usage: required
|
||||||
|
Value type: <u32>
|
||||||
|
Definition: A standard property. Defines the number of cells
|
||||||
|
for representing physical addresses in child nodes.
|
||||||
|
|
||||||
|
- #size-cells
|
||||||
|
Usage: required
|
||||||
|
Value type: <u32>
|
||||||
|
Definition: A standard property. Defines the number of cells
|
||||||
|
for representing the size of physical addresses in
|
||||||
|
child nodes.
|
||||||
|
|
||||||
|
- reg
|
||||||
|
Usage: required
|
||||||
|
Value type: <prop-encoded-array>
|
||||||
|
Definition: A standard property. Specifies the physical
|
||||||
|
address and length of the SEC 6 configuration registers.
|
||||||
|
|
||||||
|
- ranges
|
||||||
|
Usage: required
|
||||||
|
Value type: <prop-encoded-array>
|
||||||
|
Definition: A standard property. Specifies the physical address
|
||||||
|
range of the SEC 6.0 register space (-SNVS not included). A
|
||||||
|
triplet that includes the child address, parent address, &
|
||||||
|
length.
|
||||||
|
|
||||||
|
Note: All other standard properties (see the ePAPR) are allowed
|
||||||
|
but are optional.
|
||||||
|
|
||||||
|
EXAMPLE
|
||||||
|
crypto@a0000 {
|
||||||
|
compatible = "fsl,sec-v6.0";
|
||||||
|
fsl,sec-era = <6>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
reg = <0xa0000 0x20000>;
|
||||||
|
ranges = <0 0xa0000 0x20000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
=====================================================================
|
||||||
|
Job Ring (JR) Node
|
||||||
|
|
||||||
|
Child of the crypto node defines data processing interface to SEC 6
|
||||||
|
across the peripheral bus for purposes of processing
|
||||||
|
cryptographic descriptors. The specified address
|
||||||
|
range can be made visible to one (or more) cores.
|
||||||
|
The interrupt defined for this node is controlled within
|
||||||
|
the address range of this node.
|
||||||
|
|
||||||
|
- compatible
|
||||||
|
Usage: required
|
||||||
|
Value type: <string>
|
||||||
|
Definition: Must include "fsl,sec-v6.0-job-ring".
|
||||||
|
|
||||||
|
- reg
|
||||||
|
Usage: required
|
||||||
|
Value type: <prop-encoded-array>
|
||||||
|
Definition: Specifies a two JR parameters: an offset from
|
||||||
|
the parent physical address and the length the JR registers.
|
||||||
|
|
||||||
|
- interrupts
|
||||||
|
Usage: required
|
||||||
|
Value type: <prop_encoded-array>
|
||||||
|
Definition: Specifies the interrupts generated by this
|
||||||
|
device. The value of the interrupts property
|
||||||
|
consists of one interrupt specifier. The format
|
||||||
|
of the specifier is defined by the binding document
|
||||||
|
describing the node's interrupt parent.
|
||||||
|
|
||||||
|
EXAMPLE
|
||||||
|
jr@1000 {
|
||||||
|
compatible = "fsl,sec-v6.0-job-ring";
|
||||||
|
reg = <0x1000 0x1000>;
|
||||||
|
interrupts = <49 2 0 0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
===================================================================
|
||||||
|
Full Example
|
||||||
|
|
||||||
|
Since some chips may contain more than one SEC, the dtsi contains
|
||||||
|
only the node contents, not the node itself. A chip using the SEC
|
||||||
|
should include the dtsi inside each SEC node. Example:
|
||||||
|
|
||||||
|
In qoriq-sec6.0.dtsi:
|
||||||
|
|
||||||
|
compatible = "fsl,sec-v6.0";
|
||||||
|
fsl,sec-era = <6>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
jr@1000 {
|
||||||
|
compatible = "fsl,sec-v6.0-job-ring",
|
||||||
|
"fsl,sec-v5.2-job-ring",
|
||||||
|
"fsl,sec-v5.0-job-ring",
|
||||||
|
"fsl,sec-v4.4-job-ring",
|
||||||
|
"fsl,sec-v4.0-job-ring";
|
||||||
|
reg = <0x1000 0x1000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
jr@2000 {
|
||||||
|
compatible = "fsl,sec-v6.0-job-ring",
|
||||||
|
"fsl,sec-v5.2-job-ring",
|
||||||
|
"fsl,sec-v5.0-job-ring",
|
||||||
|
"fsl,sec-v4.4-job-ring",
|
||||||
|
"fsl,sec-v4.0-job-ring";
|
||||||
|
reg = <0x2000 0x1000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
In the C293 device tree, we add the include of public property:
|
||||||
|
|
||||||
|
crypto@a0000 {
|
||||||
|
/include/ "qoriq-sec6.0.dtsi"
|
||||||
|
}
|
||||||
|
|
||||||
|
crypto@a0000 {
|
||||||
|
reg = <0xa0000 0x20000>;
|
||||||
|
ranges = <0 0xa0000 0x20000>;
|
||||||
|
|
||||||
|
jr@1000 {
|
||||||
|
interrupts = <49 2 0 0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
jr@2000 {
|
||||||
|
interrupts = <50 2 0 0>;
|
||||||
|
};
|
||||||
|
};
|
@ -18,14 +18,14 @@ dma0: dma@ffffec00 {
|
|||||||
|
|
||||||
DMA clients connected to the Atmel DMA controller must use the format
|
DMA clients connected to the Atmel DMA controller must use the format
|
||||||
described in the dma.txt file, using a three-cell specifier for each channel:
|
described in the dma.txt file, using a three-cell specifier for each channel:
|
||||||
a phandle plus two interger cells.
|
a phandle plus two integer cells.
|
||||||
The three cells in order are:
|
The three cells in order are:
|
||||||
|
|
||||||
1. A phandle pointing to the DMA controller.
|
1. A phandle pointing to the DMA controller.
|
||||||
2. The memory interface (16 most significant bits), the peripheral interface
|
2. The memory interface (16 most significant bits), the peripheral interface
|
||||||
(16 less significant bits).
|
(16 less significant bits).
|
||||||
3. Parameters for the at91 DMA configuration register which are device
|
3. Parameters for the at91 DMA configuration register which are device
|
||||||
dependant:
|
dependent:
|
||||||
- bit 7-0: peripheral identifier for the hardware handshaking interface. The
|
- bit 7-0: peripheral identifier for the hardware handshaking interface. The
|
||||||
identifier can be different for tx and rx.
|
identifier can be different for tx and rx.
|
||||||
- bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP.
|
- bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP.
|
||||||
|
@ -34,7 +34,7 @@ Clients have to specify the DMA requests with phandles in a list.
|
|||||||
Required properties:
|
Required properties:
|
||||||
- dmas: List of one or more DMA request specifiers. One DMA request specifier
|
- dmas: List of one or more DMA request specifiers. One DMA request specifier
|
||||||
consists of a phandle to the DMA controller followed by the integer
|
consists of a phandle to the DMA controller followed by the integer
|
||||||
specifiying the request line.
|
specifying the request line.
|
||||||
- dma-names: List of string identifiers for the DMA requests. For the correct
|
- dma-names: List of string identifiers for the DMA requests. For the correct
|
||||||
names, have a look at the specific client driver.
|
names, have a look at the specific client driver.
|
||||||
|
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
* Freescale Smart Direct Memory Access (SDMA) Controller for i.MX
|
* Freescale Smart Direct Memory Access (SDMA) Controller for i.MX
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Should be "fsl,<chip>-sdma"
|
- compatible : Should be "fsl,imx31-sdma", "fsl,imx31-to1-sdma",
|
||||||
|
"fsl,imx31-to2-sdma", "fsl,imx35-sdma", "fsl,imx35-to1-sdma",
|
||||||
|
"fsl,imx35-to2-sdma", "fsl,imx51-sdma", "fsl,imx53-sdma" or
|
||||||
|
"fsl,imx6q-sdma". The -to variants should be preferred since they
|
||||||
|
allow to determnine the correct ROM script addresses needed for
|
||||||
|
the driver to work without additional firmware.
|
||||||
- reg : Should contain SDMA registers location and length
|
- reg : Should contain SDMA registers location and length
|
||||||
- interrupts : Should contain SDMA interrupt
|
- interrupts : Should contain SDMA interrupt
|
||||||
- #dma-cells : Must be <3>.
|
- #dma-cells : Must be <3>.
|
||||||
|
46
Documentation/devicetree/bindings/dma/k3dma.txt
Normal file
46
Documentation/devicetree/bindings/dma/k3dma.txt
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
* Hisilicon K3 DMA controller
|
||||||
|
|
||||||
|
See dma.txt first
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Should be "hisilicon,k3-dma-1.0"
|
||||||
|
- reg: Should contain DMA registers location and length.
|
||||||
|
- interrupts: Should contain one interrupt shared by all channel
|
||||||
|
- #dma-cells: see dma.txt, should be 1, para number
|
||||||
|
- dma-channels: physical channels supported
|
||||||
|
- dma-requests: virtual channels supported, each virtual channel
|
||||||
|
have specific request line
|
||||||
|
- clocks: clock required
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
Controller:
|
||||||
|
dma0: dma@fcd02000 {
|
||||||
|
compatible = "hisilicon,k3-dma-1.0";
|
||||||
|
reg = <0xfcd02000 0x1000>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
dma-channels = <16>;
|
||||||
|
dma-requests = <27>;
|
||||||
|
interrupts = <0 12 4>;
|
||||||
|
clocks = <&pclk>;
|
||||||
|
status = "disable";
|
||||||
|
};
|
||||||
|
|
||||||
|
Client:
|
||||||
|
Use specific request line passing from dmax
|
||||||
|
For example, i2c0 read channel request line is 18, while write channel use 19
|
||||||
|
|
||||||
|
i2c0: i2c@fcb08000 {
|
||||||
|
compatible = "snps,designware-i2c";
|
||||||
|
dmas = <&dma0 18 /* read channel */
|
||||||
|
&dma0 19>; /* write channel */
|
||||||
|
dma-names = "rx", "tx";
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c1: i2c@fcb09000 {
|
||||||
|
compatible = "snps,designware-i2c";
|
||||||
|
dmas = <&dma0 20 /* read channel */
|
||||||
|
&dma0 21>; /* write channel */
|
||||||
|
dma-names = "rx", "tx";
|
||||||
|
};
|
||||||
|
|
@ -22,42 +22,51 @@ Optional properties (currently unused):
|
|||||||
* DMA controller
|
* DMA controller
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: should be "renesas,shdma"
|
- compatible: should be of the form "renesas,shdma-<soc>", where <soc> should
|
||||||
|
be replaced with the desired SoC model, e.g.
|
||||||
|
"renesas,shdma-r8a73a4" for the system DMAC on r8a73a4 SoC
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
dmac: dma-mux0 {
|
dmac: dma-multiplexer@0 {
|
||||||
compatible = "renesas,shdma-mux";
|
compatible = "renesas,shdma-mux";
|
||||||
#dma-cells = <1>;
|
#dma-cells = <1>;
|
||||||
dma-channels = <6>;
|
dma-channels = <20>;
|
||||||
dma-requests = <256>;
|
dma-requests = <256>;
|
||||||
reg = <0 0>; /* Needed for AUXDATA */
|
#address-cells = <2>;
|
||||||
#address-cells = <1>;
|
#size-cells = <2>;
|
||||||
#size-cells = <1>;
|
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
dma0: shdma@fe008020 {
|
dma0: dma-controller@e6700020 {
|
||||||
compatible = "renesas,shdma";
|
compatible = "renesas,shdma-r8a73a4";
|
||||||
reg = <0xfe008020 0x270>,
|
reg = <0 0xe6700020 0 0x89e0>;
|
||||||
<0xfe009000 0xc>;
|
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
interrupts = <0 34 4
|
interrupts = <0 220 4
|
||||||
0 28 4
|
0 200 4
|
||||||
0 29 4
|
0 201 4
|
||||||
0 30 4
|
0 202 4
|
||||||
0 31 4
|
0 203 4
|
||||||
0 32 4
|
0 204 4
|
||||||
0 33 4>;
|
0 205 4
|
||||||
|
0 206 4
|
||||||
|
0 207 4
|
||||||
|
0 208 4
|
||||||
|
0 209 4
|
||||||
|
0 210 4
|
||||||
|
0 211 4
|
||||||
|
0 212 4
|
||||||
|
0 213 4
|
||||||
|
0 214 4
|
||||||
|
0 215 4
|
||||||
|
0 216 4
|
||||||
|
0 217 4
|
||||||
|
0 218 4
|
||||||
|
0 219 4>;
|
||||||
interrupt-names = "error",
|
interrupt-names = "error",
|
||||||
"ch0", "ch1", "ch2", "ch3",
|
"ch0", "ch1", "ch2", "ch3",
|
||||||
"ch4", "ch5";
|
"ch4", "ch5", "ch6", "ch7",
|
||||||
};
|
"ch8", "ch9", "ch10", "ch11",
|
||||||
|
"ch12", "ch13", "ch14", "ch15",
|
||||||
dma1: shdma@fe018020 {
|
"ch16", "ch17", "ch18", "ch19";
|
||||||
...
|
|
||||||
};
|
|
||||||
|
|
||||||
dma2: shdma@fe028020 {
|
|
||||||
...
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -37,14 +37,14 @@ Each dmas request consists of 4 cells:
|
|||||||
1. A phandle pointing to the DMA controller
|
1. A phandle pointing to the DMA controller
|
||||||
2. Device Type
|
2. Device Type
|
||||||
3. The DMA request line number (only when 'use fixed channel' is set)
|
3. The DMA request line number (only when 'use fixed channel' is set)
|
||||||
4. A 32bit mask specifying; mode, direction and endianess [NB: This list will grow]
|
4. A 32bit mask specifying; mode, direction and endianness [NB: This list will grow]
|
||||||
0x00000001: Mode:
|
0x00000001: Mode:
|
||||||
Logical channel when unset
|
Logical channel when unset
|
||||||
Physical channel when set
|
Physical channel when set
|
||||||
0x00000002: Direction:
|
0x00000002: Direction:
|
||||||
Memory to Device when unset
|
Memory to Device when unset
|
||||||
Device to Memory when set
|
Device to Memory when set
|
||||||
0x00000004: Endianess:
|
0x00000004: Endianness:
|
||||||
Little endian when unset
|
Little endian when unset
|
||||||
Big endian when set
|
Big endian when set
|
||||||
0x00000008: Use fixed channel:
|
0x00000008: Use fixed channel:
|
||||||
|
15
Documentation/devicetree/bindings/extcon/extcon-palmas.txt
Normal file
15
Documentation/devicetree/bindings/extcon/extcon-palmas.txt
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
EXTCON FOR PALMAS/TWL CHIPS
|
||||||
|
|
||||||
|
PALMAS USB COMPARATOR
|
||||||
|
Required Properties:
|
||||||
|
- compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb"
|
||||||
|
|
||||||
|
Optional Properties:
|
||||||
|
- ti,wakeup : To enable the wakeup comparator in probe
|
||||||
|
- ti,enable-id-detection: Perform ID detection.
|
||||||
|
- ti,enable-vbus-detection: Perform VBUS detection.
|
||||||
|
|
||||||
|
palmas-usb {
|
||||||
|
compatible = "ti,twl6035-usb", "ti,palmas-usb";
|
||||||
|
ti,wakeup;
|
||||||
|
};
|
@ -1,15 +0,0 @@
|
|||||||
EXTCON FOR TWL CHIPS
|
|
||||||
|
|
||||||
PALMAS USB COMPARATOR
|
|
||||||
Required Properties:
|
|
||||||
- compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb"
|
|
||||||
- vbus-supply : phandle to the regulator device tree node.
|
|
||||||
|
|
||||||
Optional Properties:
|
|
||||||
- ti,wakeup : To enable the wakeup comparator in probe
|
|
||||||
|
|
||||||
palmas-usb {
|
|
||||||
compatible = "ti,twl6035-usb", "ti,palmas-usb";
|
|
||||||
vbus-supply = <&smps10_reg>;
|
|
||||||
ti,wakeup;
|
|
||||||
};
|
|
@ -3,10 +3,17 @@ Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Should be
|
- compatible : Should be
|
||||||
- "mcp,mcp23s08" for 8 GPIO SPI version
|
- "mcp,mcp23s08" (DEPRECATED) for 8 GPIO SPI version
|
||||||
- "mcp,mcp23s17" for 16 GPIO SPI version
|
- "mcp,mcp23s17" (DEPRECATED) for 16 GPIO SPI version
|
||||||
- "mcp,mcp23008" for 8 GPIO I2C version or
|
- "mcp,mcp23008" (DEPRECATED) for 8 GPIO I2C version or
|
||||||
- "mcp,mcp23017" for 16 GPIO I2C version of the chip
|
- "mcp,mcp23017" (DEPRECATED) for 16 GPIO I2C version of the chip
|
||||||
|
|
||||||
|
- "microchip,mcp23s08" for 8 GPIO SPI version
|
||||||
|
- "microchip,mcp23s17" for 16 GPIO SPI version
|
||||||
|
- "microchip,mcp23008" for 8 GPIO I2C version or
|
||||||
|
- "microchip,mcp23017" for 16 GPIO I2C version of the chip
|
||||||
|
NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
|
||||||
|
removed.
|
||||||
- #gpio-cells : Should be two.
|
- #gpio-cells : Should be two.
|
||||||
- first cell is the pin number
|
- first cell is the pin number
|
||||||
- second cell is used to specify flags. Flags are currently unused.
|
- second cell is used to specify flags. Flags are currently unused.
|
||||||
@ -15,10 +22,11 @@ Required properties:
|
|||||||
SPI uses this to specify the chipselect line which the chip is
|
SPI uses this to specify the chipselect line which the chip is
|
||||||
connected to. The driver and the SPI variant of the chip support
|
connected to. The driver and the SPI variant of the chip support
|
||||||
multiple chips on the same chipselect. Have a look at
|
multiple chips on the same chipselect. Have a look at
|
||||||
mcp,spi-present-mask below.
|
microchip,spi-present-mask below.
|
||||||
|
|
||||||
Required device specific properties (only for SPI chips):
|
Required device specific properties (only for SPI chips):
|
||||||
- mcp,spi-present-mask : This is a present flag, that makes only sense for SPI
|
- mcp,spi-present-mask (DEPRECATED)
|
||||||
|
- microchip,spi-present-mask : This is a present flag, that makes only sense for SPI
|
||||||
chips - as the name suggests. Multiple SPI chips can share the same
|
chips - as the name suggests. Multiple SPI chips can share the same
|
||||||
SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a
|
SPI chipselect. Set a bit in bit0-7 in this mask to 1 if there is a
|
||||||
chip connected with the corresponding spi address set. For example if
|
chip connected with the corresponding spi address set. For example if
|
||||||
@ -26,11 +34,13 @@ Required device specific properties (only for SPI chips):
|
|||||||
which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not
|
which is 0x08. mcp23s08 chip variant only supports bits 0-3. It is not
|
||||||
possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at
|
possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at
|
||||||
least one bit to 1 for SPI chips.
|
least one bit to 1 for SPI chips.
|
||||||
|
NOTE: Do not use the old mcp prefix any more. It is deprecated and will be
|
||||||
|
removed.
|
||||||
- spi-max-frequency = The maximum frequency this chip is able to handle
|
- spi-max-frequency = The maximum frequency this chip is able to handle
|
||||||
|
|
||||||
Example I2C:
|
Example I2C:
|
||||||
gpiom1: gpio@20 {
|
gpiom1: gpio@20 {
|
||||||
compatible = "mcp,mcp23017";
|
compatible = "microchip,mcp23017";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
reg = <0x20>;
|
reg = <0x20>;
|
||||||
@ -38,7 +48,7 @@ gpiom1: gpio@20 {
|
|||||||
|
|
||||||
Example SPI:
|
Example SPI:
|
||||||
gpiom1: gpio@0 {
|
gpiom1: gpio@0 {
|
||||||
compatible = "mcp,mcp23s17";
|
compatible = "microchip,mcp23s17";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
spi-present-mask = <0x01>;
|
spi-present-mask = <0x01>;
|
||||||
|
27
Documentation/devicetree/bindings/gpio/gpio-palmas.txt
Normal file
27
Documentation/devicetree/bindings/gpio/gpio-palmas.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Palmas GPIO controller bindings
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible:
|
||||||
|
- "ti,palams-gpio" for palma series of the GPIO controller
|
||||||
|
- "ti,tps80036-gpio" for Palma series device TPS80036.
|
||||||
|
- "ti,tps65913-gpio" for palma series device TPS65913.
|
||||||
|
- "ti,tps65914-gpio" for palma series device TPS65914.
|
||||||
|
- #gpio-cells : Should be two.
|
||||||
|
- first cell is the gpio pin number
|
||||||
|
- second cell is used to specify the gpio polarity:
|
||||||
|
0 = active high
|
||||||
|
1 = active low
|
||||||
|
- gpio-controller : Marks the device node as a GPIO controller.
|
||||||
|
|
||||||
|
Note: This gpio node will be sub node of palmas node.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
palmas: tps65913@58 {
|
||||||
|
:::::::::::
|
||||||
|
palmas_gpio: palmas_gpio {
|
||||||
|
compatible = "ti,palmas-gpio";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
};
|
||||||
|
:::::::::::
|
||||||
|
};
|
45
Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt
Normal file
45
Documentation/devicetree/bindings/gpio/gpio-tz1090-pdc.txt
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
ImgTec TZ1090 PDC GPIO Controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Compatible property value should be "img,tz1090-pdc-gpio".
|
||||||
|
|
||||||
|
- reg: Physical base address of the controller and length of memory mapped
|
||||||
|
region. This starts at and cover the SOC_GPIO_CONTROL registers.
|
||||||
|
|
||||||
|
- gpio-controller: Specifies that the node is a gpio controller.
|
||||||
|
|
||||||
|
- #gpio-cells: Should be 2. The syntax of the gpio specifier used by client
|
||||||
|
nodes should have the following values.
|
||||||
|
<[phandle of the gpio controller node]
|
||||||
|
[PDC gpio number]
|
||||||
|
[gpio flags]>
|
||||||
|
|
||||||
|
Values for gpio specifier:
|
||||||
|
- GPIO number: a value in the range 0 to 6.
|
||||||
|
- GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>.
|
||||||
|
Only the following flags are supported:
|
||||||
|
GPIO_ACTIVE_HIGH
|
||||||
|
GPIO_ACTIVE_LOW
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- gpio-ranges: Mapping to pin controller pins (as described in
|
||||||
|
Documentation/devicetree/bindings/gpio/gpio.txt)
|
||||||
|
|
||||||
|
- interrupts: Individual syswake interrupts (other GPIOs cannot interrupt)
|
||||||
|
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
pdc_gpios: gpio-controller@02006500 {
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
|
||||||
|
compatible = "img,tz1090-pdc-gpio";
|
||||||
|
reg = <0x02006500 0x100>;
|
||||||
|
|
||||||
|
interrupt-parent = <&pdc>;
|
||||||
|
interrupts = <8 IRQ_TYPE_NONE>, /* Syswake 0 */
|
||||||
|
<9 IRQ_TYPE_NONE>, /* Syswake 1 */
|
||||||
|
<10 IRQ_TYPE_NONE>; /* Syswake 2 */
|
||||||
|
gpio-ranges = <&pdc_pinctrl 0 0 7>;
|
||||||
|
};
|
88
Documentation/devicetree/bindings/gpio/gpio-tz1090.txt
Normal file
88
Documentation/devicetree/bindings/gpio/gpio-tz1090.txt
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
ImgTec TZ1090 GPIO Controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Compatible property value should be "img,tz1090-gpio".
|
||||||
|
|
||||||
|
- reg: Physical base address of the controller and length of memory mapped
|
||||||
|
region.
|
||||||
|
|
||||||
|
- #address-cells: Should be 1 (for bank subnodes)
|
||||||
|
|
||||||
|
- #size-cells: Should be 0 (for bank subnodes)
|
||||||
|
|
||||||
|
- Each bank of GPIOs should have a subnode to represent it.
|
||||||
|
|
||||||
|
Bank subnode required properties:
|
||||||
|
- reg: Index of bank in the range 0 to 2.
|
||||||
|
|
||||||
|
- gpio-controller: Specifies that the node is a gpio controller.
|
||||||
|
|
||||||
|
- #gpio-cells: Should be 2. The syntax of the gpio specifier used by client
|
||||||
|
nodes should have the following values.
|
||||||
|
<[phandle of the gpio controller node]
|
||||||
|
[gpio number within the gpio bank]
|
||||||
|
[gpio flags]>
|
||||||
|
|
||||||
|
Values for gpio specifier:
|
||||||
|
- GPIO number: a value in the range 0 to 29.
|
||||||
|
- GPIO flags: bit field of flags, as defined in <dt-bindings/gpio/gpio.h>.
|
||||||
|
Only the following flags are supported:
|
||||||
|
GPIO_ACTIVE_HIGH
|
||||||
|
GPIO_ACTIVE_LOW
|
||||||
|
|
||||||
|
Bank subnode optional properties:
|
||||||
|
- gpio-ranges: Mapping to pin controller pins (as described in
|
||||||
|
Documentation/devicetree/bindings/gpio/gpio.txt)
|
||||||
|
|
||||||
|
- interrupts: Interrupt for the entire bank
|
||||||
|
|
||||||
|
- interrupt-controller: Specifies that the node is an interrupt controller
|
||||||
|
|
||||||
|
- #interrupt-cells: Should be 2. The syntax of the interrupt specifier used by
|
||||||
|
client nodes should have the following values.
|
||||||
|
<[phandle of the interurupt controller]
|
||||||
|
[gpio number within the gpio bank]
|
||||||
|
[irq flags]>
|
||||||
|
|
||||||
|
Values for irq specifier:
|
||||||
|
- GPIO number: a value in the range 0 to 29
|
||||||
|
- IRQ flags: value to describe edge and level triggering, as defined in
|
||||||
|
<dt-bindings/interrupt-controller/irq.h>. Only the following flags are
|
||||||
|
supported:
|
||||||
|
IRQ_TYPE_EDGE_RISING
|
||||||
|
IRQ_TYPE_EDGE_FALLING
|
||||||
|
IRQ_TYPE_EDGE_BOTH
|
||||||
|
IRQ_TYPE_LEVEL_HIGH
|
||||||
|
IRQ_TYPE_LEVEL_LOW
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
gpios: gpio-controller@02005800 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
compatible = "img,tz1090-gpio";
|
||||||
|
reg = <0x02005800 0x90>;
|
||||||
|
|
||||||
|
/* bank 0 with an interrupt */
|
||||||
|
gpios0: bank@0 {
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0>;
|
||||||
|
interrupts = <13 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
gpio-controller;
|
||||||
|
gpio-ranges = <&pinctrl 0 0 30>;
|
||||||
|
interrupt-controller;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* bank 2 without interrupt */
|
||||||
|
gpios2: bank@2 {
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
reg = <2>;
|
||||||
|
gpio-controller;
|
||||||
|
gpio-ranges = <&pinctrl 0 60 30>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
@ -75,23 +75,36 @@ Example of two SOC GPIO banks defined as gpio-controller nodes:
|
|||||||
gpio-controller;
|
gpio-controller;
|
||||||
};
|
};
|
||||||
|
|
||||||
2.1) gpio-controller and pinctrl subsystem
|
2.1) gpio- and pin-controller interaction
|
||||||
------------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
gpio-controller on a SOC might be tightly coupled with the pinctrl
|
Some or all of the GPIOs provided by a GPIO controller may be routed to pins
|
||||||
subsystem, in the sense that the pins can be used by other functions
|
on the package via a pin controller. This allows muxing those pins between
|
||||||
together with optional gpio feature.
|
GPIO and other functions.
|
||||||
|
|
||||||
While the pin allocation is totally managed by the pin ctrl subsystem,
|
It is useful to represent which GPIOs correspond to which pins on which pin
|
||||||
gpio (under gpiolib) is still maintained by gpio drivers. It may happen
|
controllers. The gpio-ranges property described below represents this, and
|
||||||
that different pin ranges in a SoC is managed by different gpio drivers.
|
contains information structures as follows:
|
||||||
|
|
||||||
This makes it logical to let gpio drivers announce their pin ranges to
|
gpio-range-list ::= <single-gpio-range> [gpio-range-list]
|
||||||
the pin ctrl subsystem and call 'pinctrl_request_gpio' in order to
|
single-gpio-range ::=
|
||||||
request the corresponding pin before any gpio usage.
|
<pinctrl-phandle> <gpio-base> <pinctrl-base> <count>
|
||||||
|
gpio-phandle : phandle to pin controller node.
|
||||||
|
gpio-base : Base GPIO ID in the GPIO controller
|
||||||
|
pinctrl-base : Base pinctrl pin ID in the pin controller
|
||||||
|
count : The number of GPIOs/pins in this range
|
||||||
|
|
||||||
For this, the gpio controller can use a pinctrl phandle and pins to
|
The "pin controller node" mentioned above must conform to the bindings
|
||||||
announce the pinrange to the pin ctrl subsystem. For example,
|
described in ../pinctrl/pinctrl-bindings.txt.
|
||||||
|
|
||||||
|
Previous versions of this binding required all pin controller nodes that
|
||||||
|
were referenced by any gpio-ranges property to contain a property named
|
||||||
|
#gpio-range-cells with value <3>. This requirement is now deprecated.
|
||||||
|
However, that property may still exist in older device trees for
|
||||||
|
compatibility reasons, and would still be required even in new device
|
||||||
|
trees that need to be compatible with older software.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
qe_pio_e: gpio-controller@1460 {
|
qe_pio_e: gpio-controller@1460 {
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
@ -99,16 +112,8 @@ announce the pinrange to the pin ctrl subsystem. For example,
|
|||||||
reg = <0x1460 0x18>;
|
reg = <0x1460 0x18>;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
|
gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
Here, a single GPIO controller has GPIOs 0..9 routed to pin controller
|
||||||
|
pinctrl1's pins 20..29, and GPIOs 10..19 routed to pin controller pinctrl2's
|
||||||
where,
|
pins 50..59.
|
||||||
&pinctrl1 and &pinctrl2 is the phandle to the pinctrl DT node.
|
|
||||||
|
|
||||||
Next values specify the base pin and number of pins for the range
|
|
||||||
handled by 'qe_pio_e' gpio. In the given example from base pin 20 to
|
|
||||||
pin 29 under pinctrl1 with gpio offset 0 and pin 50 to pin 69 under
|
|
||||||
pinctrl2 with gpio offset 10 is handled by this gpio controller.
|
|
||||||
|
|
||||||
The pinctrl node must have "#gpio-range-cells" property to show number of
|
|
||||||
arguments to pass with phandle from gpio controllers node.
|
|
||||||
|
@ -10,8 +10,9 @@ Required properties:
|
|||||||
There're three gpio interrupts in arch-pxa, and they're gpio0,
|
There're three gpio interrupts in arch-pxa, and they're gpio0,
|
||||||
gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp,
|
gpio1 and gpio_mux. There're only one gpio interrupt in arch-mmp,
|
||||||
gpio_mux.
|
gpio_mux.
|
||||||
- interrupt-name : Should be the name of irq resource. Each interrupt
|
- interrupt-names : Should be the names of irq resources. Each interrupt
|
||||||
binds its interrupt-name.
|
uses its own interrupt name, so there should be as many interrupt names
|
||||||
|
as referenced interrups.
|
||||||
- interrupt-controller : Identifies the node as an interrupt controller.
|
- interrupt-controller : Identifies the node as an interrupt controller.
|
||||||
- #interrupt-cells: Specifies the number of cells needed to encode an
|
- #interrupt-cells: Specifies the number of cells needed to encode an
|
||||||
interrupt source.
|
interrupt source.
|
||||||
@ -24,7 +25,7 @@ Example:
|
|||||||
compatible = "marvell,mmp-gpio";
|
compatible = "marvell,mmp-gpio";
|
||||||
reg = <0xd4019000 0x1000>;
|
reg = <0xd4019000 0x1000>;
|
||||||
interrupts = <49>;
|
interrupts = <49>;
|
||||||
interrupt-name = "gpio_mux";
|
interrupt-names = "gpio_mux";
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <1>;
|
#gpio-cells = <1>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
@ -23,6 +23,10 @@ Required Properties:
|
|||||||
Please refer to gpio.txt in this directory for details of gpio-ranges property
|
Please refer to gpio.txt in this directory for details of gpio-ranges property
|
||||||
and the common GPIO bindings used by client devices.
|
and the common GPIO bindings used by client devices.
|
||||||
|
|
||||||
|
The GPIO controller also acts as an interrupt controller. It uses the default
|
||||||
|
two cells specifier as described in Documentation/devicetree/bindings/
|
||||||
|
interrupt-controller/interrupts.txt.
|
||||||
|
|
||||||
Example: R8A7779 (R-Car H1) GPIO controller nodes
|
Example: R8A7779 (R-Car H1) GPIO controller nodes
|
||||||
|
|
||||||
gpio0: gpio@ffc40000 {
|
gpio0: gpio@ffc40000 {
|
||||||
@ -33,6 +37,8 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes
|
|||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
gpio-ranges = <&pfc 0 0 32>;
|
gpio-ranges = <&pfc 0 0 32>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
...
|
...
|
||||||
gpio6: gpio@ffc46000 {
|
gpio6: gpio@ffc46000 {
|
||||||
@ -43,4 +49,6 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes
|
|||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
gpio-controller;
|
gpio-controller;
|
||||||
gpio-ranges = <&pfc 0 192 9>;
|
gpio-ranges = <&pfc 0 192 9>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
};
|
};
|
||||||
|
@ -11,8 +11,11 @@ Required properties:
|
|||||||
|
|
||||||
- interrupts : G2D interrupt number to the CPU.
|
- interrupts : G2D interrupt number to the CPU.
|
||||||
- clocks : from common clock binding: handle to G2D clocks.
|
- clocks : from common clock binding: handle to G2D clocks.
|
||||||
- clock-names : from common clock binding: must contain "sclk_fimg2d" and
|
- clock-names : names of clocks listed in clocks property, in the same
|
||||||
"fimg2d", corresponding to entries in the clocks property.
|
order, depending on SoC type:
|
||||||
|
- for S5PV210 and Exynos4 based SoCs: "fimg2d" and
|
||||||
|
"sclk_fimg2d"
|
||||||
|
- for Exynos5250 SoC: "fimg2d".
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
g2d@12800000 {
|
g2d@12800000 {
|
||||||
|
27
Documentation/devicetree/bindings/gpu/samsung-rotator.txt
Normal file
27
Documentation/devicetree/bindings/gpu/samsung-rotator.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
* Samsung Image Rotator
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : value should be one of the following:
|
||||||
|
(a) "samsung,exynos4210-rotator" for Rotator IP in Exynos4210
|
||||||
|
(b) "samsung,exynos4212-rotator" for Rotator IP in Exynos4212/4412
|
||||||
|
(c) "samsung,exynos5250-rotator" for Rotator IP in Exynos5250
|
||||||
|
|
||||||
|
- reg : Physical base address of the IP registers and length of memory
|
||||||
|
mapped region.
|
||||||
|
|
||||||
|
- interrupts : Interrupt specifier for rotator interrupt, according to format
|
||||||
|
specific to interrupt parent.
|
||||||
|
|
||||||
|
- clocks : Clock specifier for rotator clock, according to generic clock
|
||||||
|
bindings. (See Documentation/devicetree/bindings/clock/exynos*.txt)
|
||||||
|
|
||||||
|
- clock-names : Names of clocks. For exynos rotator, it should be "rotator".
|
||||||
|
|
||||||
|
Example:
|
||||||
|
rotator@12810000 {
|
||||||
|
compatible = "samsung,exynos4210-rotator";
|
||||||
|
reg = <0x12810000 0x1000>;
|
||||||
|
interrupts = <0 83 0>;
|
||||||
|
clocks = <&clock 278>;
|
||||||
|
clock-names = "rotator";
|
||||||
|
};
|
28
Documentation/devicetree/bindings/hid/hid-over-i2c.txt
Normal file
28
Documentation/devicetree/bindings/hid/hid-over-i2c.txt
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
* HID over I2C Device-Tree bindings
|
||||||
|
|
||||||
|
HID over I2C provides support for various Human Interface Devices over the
|
||||||
|
I2C bus. These devices can be for example touchpads, keyboards, touch screens
|
||||||
|
or sensors.
|
||||||
|
|
||||||
|
The specification has been written by Microsoft and is currently available here:
|
||||||
|
http://msdn.microsoft.com/en-us/library/windows/hardware/hh852380.aspx
|
||||||
|
|
||||||
|
If this binding is used, the kernel module i2c-hid will handle the communication
|
||||||
|
with the device and the generic hid core layer will handle the protocol.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: must be "hid-over-i2c"
|
||||||
|
- reg: i2c slave address
|
||||||
|
- hid-descr-addr: HID descriptor address
|
||||||
|
- interrupt-parent: the phandle for the interrupt controller
|
||||||
|
- interrupts: interrupt line
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
i2c-hid-dev@2c {
|
||||||
|
compatible = "hid-over-i2c";
|
||||||
|
reg = <0x2c>;
|
||||||
|
hid-descr-addr = <0x0020>;
|
||||||
|
interrupt-parent = <&gpx3>;
|
||||||
|
interrupts = <3 2>;
|
||||||
|
};
|
@ -1,7 +1,10 @@
|
|||||||
* Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX
|
* Freescale Inter IC (I2C) and High Speed Inter IC (HS-I2C) for i.MX
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Should be "fsl,<chip>-i2c"
|
- compatible :
|
||||||
|
- "fsl,imx1-i2c" for I2C compatible with the one integrated on i.MX1 SoC
|
||||||
|
- "fsl,imx21-i2c" for I2C compatible with the one integrated on i.MX21 SoC
|
||||||
|
- "fsl,vf610-i2c" for I2C compatible with the one integrated on Vybrid vf610 SoC
|
||||||
- reg : Should contain I2C/HS-I2C registers location and length
|
- reg : Should contain I2C/HS-I2C registers location and length
|
||||||
- interrupts : Should contain I2C/HS-I2C interrupt
|
- interrupts : Should contain I2C/HS-I2C interrupt
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ Required properties :
|
|||||||
|
|
||||||
- reg : Offset and length of the register set for the device
|
- reg : Offset and length of the register set for the device
|
||||||
- compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c"
|
- compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c"
|
||||||
|
or "marvell,mv78230-i2c"
|
||||||
- interrupts : The interrupt number
|
- interrupts : The interrupt number
|
||||||
|
|
||||||
Optional properties :
|
Optional properties :
|
||||||
@ -20,3 +21,12 @@ Examples:
|
|||||||
interrupts = <29>;
|
interrupts = <29>;
|
||||||
clock-frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
For the Armada XP:
|
||||||
|
|
||||||
|
i2c@11000 {
|
||||||
|
compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
|
||||||
|
reg = <0x11000 0x100>;
|
||||||
|
interrupts = <29>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
};
|
||||||
|
24
Documentation/devicetree/bindings/iio/accel/bma180.txt
Normal file
24
Documentation/devicetree/bindings/iio/accel/bma180.txt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
* Bosch BMA180 triaxial acceleration sensor
|
||||||
|
|
||||||
|
http://omapworld.com/BMA180_111_1002839.pdf
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible : should be "bosch,bma180"
|
||||||
|
- reg : the I2C address of the sensor
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- interrupt-parent : should be the phandle for the interrupt controller
|
||||||
|
|
||||||
|
- interrupts : interrupt mapping for GPIO IRQ, it should by configured with
|
||||||
|
flags IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
bma180@40 {
|
||||||
|
compatible = "bosch,bma180";
|
||||||
|
reg = <0x40>;
|
||||||
|
interrupt-parent = <&gpio6>;
|
||||||
|
interrupts = <18 (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING)>;
|
||||||
|
};
|
@ -0,0 +1,18 @@
|
|||||||
|
* Nuvoton NAU7802 Analog to Digital Converter (ADC)
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: Should be "nuvoton,nau7802"
|
||||||
|
- reg: Should contain the ADC I2C address
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- nuvoton,vldo: Internal reference voltage in millivolts to be
|
||||||
|
configured valid values are between 2400 mV and 4500 mV.
|
||||||
|
- interrupts: IRQ line for the ADC. If not used the driver will use
|
||||||
|
polling.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
adc2: nau7802@2a {
|
||||||
|
compatible = "nuvoton,nau7802";
|
||||||
|
reg = <0x2a>;
|
||||||
|
nuvoton,vldo = <3000>;
|
||||||
|
};
|
22
Documentation/devicetree/bindings/iio/light/apds9300.txt
Normal file
22
Documentation/devicetree/bindings/iio/light/apds9300.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
* Avago APDS9300 ambient light sensor
|
||||||
|
|
||||||
|
http://www.avagotech.com/docs/AV02-1077EN
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible : should be "avago,apds9300"
|
||||||
|
- reg : the I2C address of the sensor
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
- interrupt-parent : should be the phandle for the interrupt controller
|
||||||
|
- interrupts : interrupt mapping for GPIO IRQ
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
apds9300@39 {
|
||||||
|
compatible = "avago,apds9300";
|
||||||
|
reg = <0x39>;
|
||||||
|
interrupt-parent = <&gpio2>;
|
||||||
|
interrupts = <29 8>;
|
||||||
|
};
|
@ -1,7 +1,7 @@
|
|||||||
Binding for TI/National Semiconductor LP55xx Led Drivers
|
Binding for TI/National Semiconductor LP55xx Led Drivers
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562"
|
- compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562" or "ti,lp8501"
|
||||||
- reg: I2C slave address
|
- reg: I2C slave address
|
||||||
- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external)
|
- clock-mode: Input clock mode, (0: automode, 1: internal, 2: external)
|
||||||
|
|
||||||
@ -11,6 +11,11 @@ Each child has own specific current settings
|
|||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- label: Used for naming LEDs
|
- label: Used for naming LEDs
|
||||||
|
- pwr-sel: LP8501 specific property. Power selection for output channels.
|
||||||
|
0: D1~9 are connected to VDD
|
||||||
|
1: D1~6 with VDD, D7~9 with VOUT
|
||||||
|
2: D1~6 with VOUT, D7~9 with VDD
|
||||||
|
3: D1~9 are connected to VOUT
|
||||||
|
|
||||||
Alternatively, each child can have specific channel name
|
Alternatively, each child can have specific channel name
|
||||||
- chan-name: Name of each channel name
|
- chan-name: Name of each channel name
|
||||||
@ -145,3 +150,68 @@ lp5562@30 {
|
|||||||
max-cur = /bits/ 8 <0x60>;
|
max-cur = /bits/ 8 <0x60>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
example 4) LP8501
|
||||||
|
9 channels are defined. The 'pwr-sel' is LP8501 specific property.
|
||||||
|
Others are same as LP5523.
|
||||||
|
|
||||||
|
lp8501@32 {
|
||||||
|
compatible = "ti,lp8501";
|
||||||
|
reg = <0x32>;
|
||||||
|
clock-mode = /bits/ 8 <2>;
|
||||||
|
pwr-sel = /bits/ 8 <3>; /* D1~9 connected to VOUT */
|
||||||
|
|
||||||
|
chan0 {
|
||||||
|
chan-name = "d1";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan1 {
|
||||||
|
chan-name = "d2";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan2 {
|
||||||
|
chan-name = "d3";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan3 {
|
||||||
|
chan-name = "d4";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan4 {
|
||||||
|
chan-name = "d5";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan5 {
|
||||||
|
chan-name = "d6";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan6 {
|
||||||
|
chan-name = "d7";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan7 {
|
||||||
|
chan-name = "d8";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
|
chan8 {
|
||||||
|
chan-name = "d9";
|
||||||
|
led-cur = /bits/ 8 <0x14>;
|
||||||
|
max-cur = /bits/ 8 <0x20>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user