Merge git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth
Conflicts: net/bluetooth/hci_core.c
This commit is contained in:
commit
1025c04cec
12
CREDITS
12
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
|
||||||
|
@ -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>
|
||||||
|
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.
|
@ -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">
|
||||||
|
@ -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:
|
||||||
|
@ -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) Tags are not guaranteed to be 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 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
|
||||||
|
addresses differing only in the upper bits.
|
||||||
|
|
||||||
|
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.
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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";
|
||||||
|
@ -4,14 +4,15 @@ This timer is used in the following Broadcom SoCs:
|
|||||||
BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
|
BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : "bcm,kona-timer"
|
- compatible : "brcm,kona-timer"
|
||||||
|
- DEPRECATED: compatible : "bcm,kona-timer"
|
||||||
- reg : Register range for the timer
|
- reg : Register range for the timer
|
||||||
- interrupts : interrupt for the timer
|
- interrupts : interrupt for the timer
|
||||||
- clock-frequency: frequency that the clock operates
|
- clock-frequency: frequency that the clock operates
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
timer@35006000 {
|
timer@35006000 {
|
||||||
compatible = "bcm,kona-timer";
|
compatible = "brcm,kona-timer";
|
||||||
reg = <0x35006000 0x1000>;
|
reg = <0x35006000 0x1000>;
|
||||||
interrupts = <0x0 7 0x4>;
|
interrupts = <0x0 7 0x4>;
|
||||||
clock-frequency = <32768>;
|
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:
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
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.
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
EXTCON FOR TWL CHIPS
|
EXTCON FOR PALMAS/TWL CHIPS
|
||||||
|
|
||||||
PALMAS USB COMPARATOR
|
PALMAS USB COMPARATOR
|
||||||
Required Properties:
|
Required Properties:
|
||||||
- compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb"
|
- compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb"
|
||||||
- vbus-supply : phandle to the regulator device tree node.
|
|
||||||
|
|
||||||
Optional Properties:
|
Optional Properties:
|
||||||
- ti,wakeup : To enable the wakeup comparator in probe
|
- 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 {
|
palmas-usb {
|
||||||
compatible = "ti,twl6035-usb", "ti,palmas-usb";
|
compatible = "ti,twl6035-usb", "ti,palmas-usb";
|
||||||
vbus-supply = <&smps10_reg>;
|
|
||||||
ti,wakeup;
|
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>;
|
||||||
};
|
};
|
||||||
|
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>;
|
||||||
|
};
|
33
Documentation/devicetree/bindings/input/input-reset.txt
Normal file
33
Documentation/devicetree/bindings/input/input-reset.txt
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
Input: sysrq reset sequence
|
||||||
|
|
||||||
|
A simple binding to represent a set of keys as described in
|
||||||
|
include/uapi/linux/input.h. This is to communicate a sequence of keys to the
|
||||||
|
sysrq driver. Upon holding the keys for a specified amount of time (if
|
||||||
|
specified) the system is sync'ed and reset.
|
||||||
|
|
||||||
|
Key sequences are global to the system but all the keys in a set must be coming
|
||||||
|
from the same input device.
|
||||||
|
|
||||||
|
The /chosen node should contain a 'linux,sysrq-reset-seq' child node to define
|
||||||
|
a set of keys.
|
||||||
|
|
||||||
|
Required property:
|
||||||
|
sysrq-reset-seq: array of Linux keycodes, one keycode per cell.
|
||||||
|
|
||||||
|
Optional property:
|
||||||
|
timeout-ms: duration keys must be pressed together in milliseconds before
|
||||||
|
generating a sysrq. If omitted the system is rebooted immediately when a valid
|
||||||
|
sequence has been recognized.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
linux,sysrq-reset-seq {
|
||||||
|
keyset = <0x03
|
||||||
|
0x04
|
||||||
|
0x0a>;
|
||||||
|
timeout-ms = <3000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Would represent KEY_2, KEY_3 and KEY_9.
|
@ -6,7 +6,7 @@ Required properties:
|
|||||||
- interrupt-parent: the phandle for the interrupt controller
|
- interrupt-parent: the phandle for the interrupt controller
|
||||||
- interrupts: touch controller interrupt
|
- interrupts: touch controller interrupt
|
||||||
- wakeup-gpios: the gpio pin to be used for waking up the controller
|
- wakeup-gpios: the gpio pin to be used for waking up the controller
|
||||||
as well as uased as irq pin
|
and also used as irq pin
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
48
Documentation/devicetree/bindings/media/i2c/adv7343.txt
Normal file
48
Documentation/devicetree/bindings/media/i2c/adv7343.txt
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
* Analog Devices adv7343 video encoder
|
||||||
|
|
||||||
|
The ADV7343 are high speed, digital-to-analog video encoders in a 64-lead LQFP
|
||||||
|
package. Six high speed, 3.3 V, 11-bit video DACs provide support for composite
|
||||||
|
(CVBS), S-Video (Y-C), and component (YPrPb/RGB) analog outputs in standard
|
||||||
|
definition (SD), enhanced definition (ED), or high definition (HD) video
|
||||||
|
formats.
|
||||||
|
|
||||||
|
Required Properties :
|
||||||
|
- compatible: Must be "adi,adv7343"
|
||||||
|
|
||||||
|
Optional Properties :
|
||||||
|
- adi,power-mode-sleep-mode: on enable the current consumption is reduced to
|
||||||
|
micro ampere level. All DACs and the internal PLL
|
||||||
|
circuit are disabled.
|
||||||
|
- adi,power-mode-pll-ctrl: PLL and oversampling control. This control allows
|
||||||
|
internal PLL 1 circuit to be powered down and the
|
||||||
|
oversampling to be switched off.
|
||||||
|
- ad,adv7343-power-mode-dac: array configuring the power on/off DAC's 1..6,
|
||||||
|
0 = OFF and 1 = ON, Default value when this
|
||||||
|
property is not specified is <0 0 0 0 0 0>.
|
||||||
|
- ad,adv7343-sd-config-dac-out: array configure SD DAC Output's 1 and 2, 0 = OFF
|
||||||
|
and 1 = ON, Default value when this property is
|
||||||
|
not specified is <0 0>.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
i2c0@1c22000 {
|
||||||
|
...
|
||||||
|
...
|
||||||
|
|
||||||
|
adv7343@2a {
|
||||||
|
compatible = "adi,adv7343";
|
||||||
|
reg = <0x2a>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
adv7343_1: endpoint {
|
||||||
|
adi,power-mode-sleep-mode;
|
||||||
|
adi,power-mode-pll-ctrl;
|
||||||
|
/* Use DAC1..3, DAC6 */
|
||||||
|
adi,dac-enable = <1 1 1 0 0 1>;
|
||||||
|
/* Use SD DAC output 1 */
|
||||||
|
adi,sd-dac-enable = <1 0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
...
|
||||||
|
};
|
19
Documentation/devicetree/bindings/media/i2c/ths8200.txt
Normal file
19
Documentation/devicetree/bindings/media/i2c/ths8200.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
* Texas Instruments THS8200 video encoder
|
||||||
|
|
||||||
|
The ths8200 device is a digital to analog converter used in DVD players, video
|
||||||
|
recorders, set-top boxes.
|
||||||
|
|
||||||
|
Required Properties :
|
||||||
|
- compatible : value must be "ti,ths8200"
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
i2c0@1c22000 {
|
||||||
|
...
|
||||||
|
...
|
||||||
|
ths8200@5c {
|
||||||
|
compatible = "ti,ths8200";
|
||||||
|
reg = <0x5c>;
|
||||||
|
};
|
||||||
|
...
|
||||||
|
};
|
53
Documentation/devicetree/bindings/media/i2c/tvp7002.txt
Normal file
53
Documentation/devicetree/bindings/media/i2c/tvp7002.txt
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
* Texas Instruments TV7002 video decoder
|
||||||
|
|
||||||
|
The TVP7002 device supports digitizing of video and graphics signal in RGB and
|
||||||
|
YPbPr color space.
|
||||||
|
|
||||||
|
Required Properties :
|
||||||
|
- compatible : Must be "ti,tvp7002"
|
||||||
|
|
||||||
|
Optional Properties:
|
||||||
|
- hsync-active: HSYNC Polarity configuration for the bus. Default value when
|
||||||
|
this property is not specified is <0>.
|
||||||
|
|
||||||
|
- vsync-active: VSYNC Polarity configuration for the bus. Default value when
|
||||||
|
this property is not specified is <0>.
|
||||||
|
|
||||||
|
- pclk-sample: Clock polarity of the bus. Default value when this property is
|
||||||
|
not specified is <0>.
|
||||||
|
|
||||||
|
- sync-on-green-active: Active state of Sync-on-green signal property of the
|
||||||
|
endpoint.
|
||||||
|
0 = Normal Operation (Active Low, Default)
|
||||||
|
1 = Inverted operation
|
||||||
|
|
||||||
|
- field-even-active: Active-high Field ID output polarity control of the bus.
|
||||||
|
Under normal operation, the field ID output is set to logic 1 for an odd field
|
||||||
|
(field 1) and set to logic 0 for an even field (field 0).
|
||||||
|
0 = Normal Operation (Active Low, Default)
|
||||||
|
1 = FID output polarity inverted
|
||||||
|
|
||||||
|
For further reading of port node refer Documentation/devicetree/bindings/media/
|
||||||
|
video-interfaces.txt.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
i2c0@1c22000 {
|
||||||
|
...
|
||||||
|
...
|
||||||
|
tvp7002@5c {
|
||||||
|
compatible = "ti,tvp7002";
|
||||||
|
reg = <0x5c>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
tvp7002_1: endpoint {
|
||||||
|
hsync-active = <1>;
|
||||||
|
vsync-active = <1>;
|
||||||
|
pclk-sample = <0>;
|
||||||
|
sync-on-green-active = <1>;
|
||||||
|
field-even-active = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
...
|
||||||
|
};
|
@ -10,14 +10,15 @@ Required properties:
|
|||||||
- compatible : value should be either one among the following
|
- compatible : value should be either one among the following
|
||||||
(a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs
|
(a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs
|
||||||
(b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs
|
(b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs
|
||||||
|
(b) "samsung,mfc-v7" for MFC v7 present in Exynos5420 SoC
|
||||||
|
|
||||||
- reg : Physical base address of the IP registers and length of memory
|
- reg : Physical base address of the IP registers and length of memory
|
||||||
mapped region.
|
mapped region.
|
||||||
|
|
||||||
- interrupts : MFC interrupt number to the CPU.
|
- interrupts : MFC interrupt number to the CPU.
|
||||||
- clocks : from common clock binding: handle to mfc clocks.
|
- clocks : from common clock binding: handle to mfc clock.
|
||||||
- clock-names : from common clock binding: must contain "sclk_mfc" and "mfc",
|
- clock-names : from common clock binding: must contain "mfc",
|
||||||
corresponding to entries in the clocks property.
|
corresponding to entry in the clocks property.
|
||||||
|
|
||||||
- samsung,mfc-r : Base address of the first memory bank used by MFC
|
- samsung,mfc-r : Base address of the first memory bank used by MFC
|
||||||
for DMA contiguous memory allocation and its size.
|
for DMA contiguous memory allocation and its size.
|
||||||
@ -37,8 +38,8 @@ mfc: codec@13400000 {
|
|||||||
reg = <0x13400000 0x10000>;
|
reg = <0x13400000 0x10000>;
|
||||||
interrupts = <0 94 0>;
|
interrupts = <0 94 0>;
|
||||||
samsung,power-domain = <&pd_mfc>;
|
samsung,power-domain = <&pd_mfc>;
|
||||||
clocks = <&clock 170>, <&clock 273>;
|
clocks = <&clock 273>;
|
||||||
clock-names = "sclk_mfc", "mfc";
|
clock-names = "mfc";
|
||||||
};
|
};
|
||||||
|
|
||||||
Board specific DT entry:
|
Board specific DT entry:
|
||||||
|
@ -88,6 +88,8 @@ Optional endpoint properties
|
|||||||
- field-even-active: field signal level during the even field data transmission.
|
- field-even-active: field signal level during the even field data transmission.
|
||||||
- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
|
- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
|
||||||
signal.
|
signal.
|
||||||
|
- sync-on-green-active: active state of Sync-on-green (SoG) signal, 0/1 for
|
||||||
|
LOW/HIGH respectively.
|
||||||
- data-lanes: an array of physical data lane indexes. Position of an entry
|
- data-lanes: an array of physical data lane indexes. Position of an entry
|
||||||
determines the logical lane number, while the value of an entry indicates
|
determines the logical lane number, while the value of an entry indicates
|
||||||
physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have
|
physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have
|
||||||
|
@ -4,7 +4,7 @@ Google's ChromeOS EC is a Cortex-M device which talks to the AP and
|
|||||||
implements various function such as keyboard and battery charging.
|
implements various function such as keyboard and battery charging.
|
||||||
|
|
||||||
The EC can be connect through various means (I2C, SPI, LPC) and the
|
The EC can be connect through various means (I2C, SPI, LPC) and the
|
||||||
compatible string used depends on the inteface. Each connection method has
|
compatible string used depends on the interface. Each connection method has
|
||||||
its own driver which connects to the top level interface-agnostic EC driver.
|
its own driver which connects to the top level interface-agnostic EC driver.
|
||||||
Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
|
Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
|
||||||
the top-level driver.
|
the top-level driver.
|
||||||
|
@ -7,9 +7,30 @@ Required properties:
|
|||||||
- reg: Should contain SSC registers location and length
|
- reg: Should contain SSC registers location and length
|
||||||
- interrupts: Should contain SSC interrupt
|
- interrupts: Should contain SSC interrupt
|
||||||
|
|
||||||
Example:
|
|
||||||
|
Required properties for devices compatible with "atmel,at91sam9g45-ssc":
|
||||||
|
- dmas: DMA specifier, consisting of a phandle to DMA controller node,
|
||||||
|
the memory interface and SSC DMA channel ID (for tx and rx).
|
||||||
|
See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.
|
||||||
|
- dma-names: Must be "tx", "rx".
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
- PDC transfer:
|
||||||
ssc0: ssc@fffbc000 {
|
ssc0: ssc@fffbc000 {
|
||||||
compatible = "atmel,at91rm9200-ssc";
|
compatible = "atmel,at91rm9200-ssc";
|
||||||
reg = <0xfffbc000 0x4000>;
|
reg = <0xfffbc000 0x4000>;
|
||||||
interrupts = <14 4 5>;
|
interrupts = <14 4 5>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
- DMA transfer:
|
||||||
|
ssc0: ssc@f0010000 {
|
||||||
|
compatible = "atmel,at91sam9g45-ssc";
|
||||||
|
reg = <0xf0010000 0x4000>;
|
||||||
|
interrupts = <28 4 5>;
|
||||||
|
dmas = <&dma0 1 13>,
|
||||||
|
<&dma0 1 14>;
|
||||||
|
dma-names = "tx", "rx";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
@ -4,11 +4,12 @@ This binding defines the location of the bounce buffer
|
|||||||
used for non-secure to secure communications.
|
used for non-secure to secure communications.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : "bcm,kona-smc"
|
- compatible : "brcm,kona-smc"
|
||||||
|
- DEPRECATED: compatible : "bcm,kona-smc"
|
||||||
- reg : Location and size of bounce buffer
|
- reg : Location and size of bounce buffer
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
smc@0x3404c000 {
|
smc@0x3404c000 {
|
||||||
compatible = "bcm,bcm11351-smc", "bcm,kona-smc";
|
compatible = "brcm,bcm11351-smc", "brcm,kona-smc";
|
||||||
reg = <0x3404c000 0x400>; //1 KiB in SRAM
|
reg = <0x3404c000 0x400>; //1 KiB in SRAM
|
||||||
};
|
};
|
||||||
|
@ -4,12 +4,13 @@ This file documents differences between the core properties in mmc.txt
|
|||||||
and the properties present in the bcm281xx SDHCI
|
and the properties present in the bcm281xx SDHCI
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Should be "bcm,kona-sdhci"
|
- compatible : Should be "brcm,kona-sdhci"
|
||||||
|
- DEPRECATED: compatible : Should be "bcm,kona-sdhci"
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
sdio2: sdio@0x3f1a0000 {
|
sdio2: sdio@0x3f1a0000 {
|
||||||
compatible = "bcm,kona-sdhci";
|
compatible = "brcm,kona-sdhci";
|
||||||
reg = <0x3f1a0000 0x10000>;
|
reg = <0x3f1a0000 0x10000>;
|
||||||
interrupts = <0x0 74 0x4>;
|
interrupts = <0x0 74 0x4>;
|
||||||
};
|
};
|
@ -8,7 +8,7 @@ Required properties:
|
|||||||
Example:
|
Example:
|
||||||
|
|
||||||
can0: can@f000c000 {
|
can0: can@f000c000 {
|
||||||
compatbile = "atmel,at91sam9x5-can";
|
compatible = "atmel,at91sam9x5-can";
|
||||||
reg = <0xf000c000 0x300>;
|
reg = <0xf000c000 0x300>;
|
||||||
interrupts = <40 4 5>
|
interrupts = <40 4 5>
|
||||||
};
|
};
|
||||||
|
@ -18,6 +18,7 @@ Required properties:
|
|||||||
- interrupt-map-mask and interrupt-map: standard PCI properties
|
- interrupt-map-mask and interrupt-map: standard PCI properties
|
||||||
to define the mapping of the PCIe interface to interrupt
|
to define the mapping of the PCIe interface to interrupt
|
||||||
numbers.
|
numbers.
|
||||||
|
- num-lanes: number of lanes to use
|
||||||
- reset-gpio: gpio pin number of power good signal
|
- reset-gpio: gpio pin number of power good signal
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@ -41,6 +42,7 @@ SoC specific DT Entry:
|
|||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0x0 0 &gic 53>;
|
interrupt-map = <0x0 0 &gic 53>;
|
||||||
|
num-lanes = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pcie@2a0000 {
|
pcie@2a0000 {
|
||||||
@ -60,6 +62,7 @@ SoC specific DT Entry:
|
|||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0x0 0 &gic 56>;
|
interrupt-map = <0x0 0 &gic 56>;
|
||||||
|
num-lanes = <4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
Board specific DT Entry:
|
Board specific DT Entry:
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
* Marvell EBU PCIe interfaces
|
* Marvell EBU PCIe interfaces
|
||||||
|
|
||||||
Mandatory properties:
|
Mandatory properties:
|
||||||
|
|
||||||
- compatible: one of the following values:
|
- compatible: one of the following values:
|
||||||
marvell,armada-370-pcie
|
marvell,armada-370-pcie
|
||||||
marvell,armada-xp-pcie
|
marvell,armada-xp-pcie
|
||||||
@ -10,11 +11,49 @@ Mandatory properties:
|
|||||||
- #interrupt-cells, set to <1>
|
- #interrupt-cells, set to <1>
|
||||||
- bus-range: PCI bus numbers covered
|
- bus-range: PCI bus numbers covered
|
||||||
- device_type, set to "pci"
|
- device_type, set to "pci"
|
||||||
- ranges: ranges for the PCI memory and I/O regions, as well as the
|
- ranges: ranges describing the MMIO registers to control the PCIe
|
||||||
MMIO registers to control the PCIe interfaces.
|
interfaces, and ranges describing the MBus windows needed to access
|
||||||
|
the memory and I/O regions of each PCIe interface.
|
||||||
|
|
||||||
In addition, the Device Tree node must have sub-nodes describing each
|
The ranges describing the MMIO registers have the following layout:
|
||||||
|
|
||||||
|
0x82000000 0 r MBUS_ID(0xf0, 0x01) r 0 s
|
||||||
|
|
||||||
|
where:
|
||||||
|
|
||||||
|
* r is a 32-bits value that gives the offset of the MMIO
|
||||||
|
registers of this PCIe interface, from the base of the internal
|
||||||
|
registers.
|
||||||
|
|
||||||
|
* s is a 32-bits value that give the size of this MMIO
|
||||||
|
registers area. This range entry translates the '0x82000000 0 r' PCI
|
||||||
|
address into the 'MBUS_ID(0xf0, 0x01) r' CPU address, which is part
|
||||||
|
of the internal register window (as identified by MBUS_ID(0xf0,
|
||||||
|
0x01)).
|
||||||
|
|
||||||
|
The ranges describing the MBus windows have the following layout:
|
||||||
|
|
||||||
|
0x8t000000 s 0 MBUS_ID(w, a) 0 1 0
|
||||||
|
|
||||||
|
where:
|
||||||
|
|
||||||
|
* t is the type of the MBus window (as defined by the standard PCI DT
|
||||||
|
bindings), 1 for I/O and 2 for memory.
|
||||||
|
|
||||||
|
* s is the PCI slot that corresponds to this PCIe interface
|
||||||
|
|
||||||
|
* w is the 'target ID' value for the MBus window
|
||||||
|
|
||||||
|
* a the 'attribute' value for the MBus window.
|
||||||
|
|
||||||
|
Since the location and size of the different MBus windows is not fixed in
|
||||||
|
hardware, and only determined in runtime, those ranges cover the full first
|
||||||
|
4 GB of the physical address space, and do not translate into a valid CPU
|
||||||
|
address.
|
||||||
|
|
||||||
|
In addition, the device tree node must have sub-nodes describing each
|
||||||
PCIe interface, having the following mandatory properties:
|
PCIe interface, having the following mandatory properties:
|
||||||
|
|
||||||
- reg: used only for interrupt mapping, so only the first four bytes
|
- reg: used only for interrupt mapping, so only the first four bytes
|
||||||
are used to refer to the correct bus number and device number.
|
are used to refer to the correct bus number and device number.
|
||||||
- assigned-addresses: reference to the MMIO registers used to control
|
- assigned-addresses: reference to the MMIO registers used to control
|
||||||
@ -26,7 +65,8 @@ PCIe interface, having the following mandatory properties:
|
|||||||
- #address-cells, set to <3>
|
- #address-cells, set to <3>
|
||||||
- #size-cells, set to <2>
|
- #size-cells, set to <2>
|
||||||
- #interrupt-cells, set to <1>
|
- #interrupt-cells, set to <1>
|
||||||
- ranges, empty property.
|
- ranges, translating the MBus windows ranges of the parent node into
|
||||||
|
standard PCI addresses.
|
||||||
- interrupt-map-mask and interrupt-map, standard PCI properties to
|
- interrupt-map-mask and interrupt-map, standard PCI properties to
|
||||||
define the mapping of the PCIe interface to interrupt numbers.
|
define the mapping of the PCIe interface to interrupt numbers.
|
||||||
|
|
||||||
@ -47,27 +87,50 @@ pcie-controller {
|
|||||||
|
|
||||||
bus-range = <0x00 0xff>;
|
bus-range = <0x00 0xff>;
|
||||||
|
|
||||||
ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */
|
ranges =
|
||||||
0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */
|
<0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000 /* Port 0.0 registers */
|
||||||
0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */
|
0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000 /* Port 2.0 registers */
|
||||||
0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */
|
0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000 /* Port 0.1 registers */
|
||||||
0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */
|
0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000 /* Port 0.2 registers */
|
||||||
0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */
|
0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000 /* Port 0.3 registers */
|
||||||
0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */
|
0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000 /* Port 1.0 registers */
|
||||||
0x82000000 0 0xd0084000 0xd0084000 0 0x00002000 /* Port 1.1 registers */
|
0x82000000 0 0x82000 MBUS_ID(0xf0, 0x01) 0x82000 0 0x00002000 /* Port 3.0 registers */
|
||||||
0x82000000 0 0xd0088000 0xd0088000 0 0x00002000 /* Port 1.2 registers */
|
0x82000000 0 0x84000 MBUS_ID(0xf0, 0x01) 0x84000 0 0x00002000 /* Port 1.1 registers */
|
||||||
0x82000000 0 0xd008c000 0xd008c000 0 0x00002000 /* Port 1.3 registers */
|
0x82000000 0 0x88000 MBUS_ID(0xf0, 0x01) 0x88000 0 0x00002000 /* Port 1.2 registers */
|
||||||
0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
|
0x82000000 0 0x8c000 MBUS_ID(0xf0, 0x01) 0x8c000 0 0x00002000 /* Port 1.3 registers */
|
||||||
0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
|
0x82000000 0x1 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
|
||||||
|
0x81000000 0x1 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO */
|
||||||
|
0x82000000 0x2 0 MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 0.1 MEM */
|
||||||
|
0x81000000 0x2 0 MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 0.1 IO */
|
||||||
|
0x82000000 0x3 0 MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 0.2 MEM */
|
||||||
|
0x81000000 0x3 0 MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 0.2 IO */
|
||||||
|
0x82000000 0x4 0 MBUS_ID(0x04, 0x78) 0 1 0 /* Port 0.3 MEM */
|
||||||
|
0x81000000 0x4 0 MBUS_ID(0x04, 0x70) 0 1 0 /* Port 0.3 IO */
|
||||||
|
|
||||||
|
0x82000000 0x5 0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 MEM */
|
||||||
|
0x81000000 0x5 0 MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 1.0 IO */
|
||||||
|
0x82000000 0x6 0 MBUS_ID(0x08, 0xd8) 0 1 0 /* Port 1.1 MEM */
|
||||||
|
0x81000000 0x6 0 MBUS_ID(0x08, 0xd0) 0 1 0 /* Port 1.1 IO */
|
||||||
|
0x82000000 0x7 0 MBUS_ID(0x08, 0xb8) 0 1 0 /* Port 1.2 MEM */
|
||||||
|
0x81000000 0x7 0 MBUS_ID(0x08, 0xb0) 0 1 0 /* Port 1.2 IO */
|
||||||
|
0x82000000 0x8 0 MBUS_ID(0x08, 0x78) 0 1 0 /* Port 1.3 MEM */
|
||||||
|
0x81000000 0x8 0 MBUS_ID(0x08, 0x70) 0 1 0 /* Port 1.3 IO */
|
||||||
|
|
||||||
|
0x82000000 0x9 0 MBUS_ID(0x04, 0xf8) 0 1 0 /* Port 2.0 MEM */
|
||||||
|
0x81000000 0x9 0 MBUS_ID(0x04, 0xf0) 0 1 0 /* Port 2.0 IO */
|
||||||
|
|
||||||
|
0x82000000 0xa 0 MBUS_ID(0x08, 0xf8) 0 1 0 /* Port 3.0 MEM */
|
||||||
|
0x81000000 0xa 0 MBUS_ID(0x08, 0xf0) 0 1 0 /* Port 3.0 IO */>;
|
||||||
|
|
||||||
pcie@1,0 {
|
pcie@1,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>;
|
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
||||||
reg = <0x0800 0 0 0 0>;
|
reg = <0x0800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x1 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 58>;
|
interrupt-map = <0 0 0 0 &mpic 58>;
|
||||||
marvell,pcie-port = <0>;
|
marvell,pcie-port = <0>;
|
||||||
@ -78,12 +141,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@2,0 {
|
pcie@2,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82001000 0 0xd0044000 0 0x2000>;
|
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||||
reg = <0x1000 0 0 0 0>;
|
reg = <0x1000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x2 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 59>;
|
interrupt-map = <0 0 0 0 &mpic 59>;
|
||||||
marvell,pcie-port = <0>;
|
marvell,pcie-port = <0>;
|
||||||
@ -94,12 +158,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@3,0 {
|
pcie@3,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82001800 0 0xd0048000 0 0x2000>;
|
assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
|
||||||
reg = <0x1800 0 0 0 0>;
|
reg = <0x1800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x3 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 60>;
|
interrupt-map = <0 0 0 0 &mpic 60>;
|
||||||
marvell,pcie-port = <0>;
|
marvell,pcie-port = <0>;
|
||||||
@ -110,12 +175,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@4,0 {
|
pcie@4,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82002000 0 0xd004c000 0 0x2000>;
|
assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
|
||||||
reg = <0x2000 0 0 0 0>;
|
reg = <0x2000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x4 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 61>;
|
interrupt-map = <0 0 0 0 &mpic 61>;
|
||||||
marvell,pcie-port = <0>;
|
marvell,pcie-port = <0>;
|
||||||
@ -126,12 +192,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@5,0 {
|
pcie@5,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>;
|
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
||||||
reg = <0x2800 0 0 0 0>;
|
reg = <0x2800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x5 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x5 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 62>;
|
interrupt-map = <0 0 0 0 &mpic 62>;
|
||||||
marvell,pcie-port = <1>;
|
marvell,pcie-port = <1>;
|
||||||
@ -142,12 +209,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@6,0 {
|
pcie@6,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82003000 0 0xd0084000 0 0x2000>;
|
assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
|
||||||
reg = <0x3000 0 0 0 0>;
|
reg = <0x3000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x6 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x6 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 63>;
|
interrupt-map = <0 0 0 0 &mpic 63>;
|
||||||
marvell,pcie-port = <1>;
|
marvell,pcie-port = <1>;
|
||||||
@ -158,12 +226,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@7,0 {
|
pcie@7,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82003800 0 0xd0088000 0 0x2000>;
|
assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
|
||||||
reg = <0x3800 0 0 0 0>;
|
reg = <0x3800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x7 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x7 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 64>;
|
interrupt-map = <0 0 0 0 &mpic 64>;
|
||||||
marvell,pcie-port = <1>;
|
marvell,pcie-port = <1>;
|
||||||
@ -174,12 +243,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@8,0 {
|
pcie@8,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82004000 0 0xd008c000 0 0x2000>;
|
assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
|
||||||
reg = <0x4000 0 0 0 0>;
|
reg = <0x4000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x8 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x8 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 65>;
|
interrupt-map = <0 0 0 0 &mpic 65>;
|
||||||
marvell,pcie-port = <1>;
|
marvell,pcie-port = <1>;
|
||||||
@ -187,14 +257,16 @@ pcie-controller {
|
|||||||
clocks = <&gateclk 12>;
|
clocks = <&gateclk 12>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
pcie@9,0 {
|
pcie@9,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82004800 0 0xd0042000 0 0x2000>;
|
assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
|
||||||
reg = <0x4800 0 0 0 0>;
|
reg = <0x4800 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0x9 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0x9 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 99>;
|
interrupt-map = <0 0 0 0 &mpic 99>;
|
||||||
marvell,pcie-port = <2>;
|
marvell,pcie-port = <2>;
|
||||||
@ -205,12 +277,13 @@ pcie-controller {
|
|||||||
|
|
||||||
pcie@10,0 {
|
pcie@10,0 {
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
assigned-addresses = <0x82005000 0 0xd0082000 0 0x2000>;
|
assigned-addresses = <0x82005000 0 0x82000 0 0x2000>;
|
||||||
reg = <0x5000 0 0 0 0>;
|
reg = <0x5000 0 0 0 0>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
ranges;
|
ranges = <0x82000000 0 0 0x82000000 0xa 0 1 0
|
||||||
|
0x81000000 0 0 0x81000000 0xa 0 1 0>;
|
||||||
interrupt-map-mask = <0 0 0 0>;
|
interrupt-map-mask = <0 0 0 0>;
|
||||||
interrupt-map = <0 0 0 0 &mpic 103>;
|
interrupt-map = <0 0 0 0 &mpic 103>;
|
||||||
marvell,pcie-port = <3>;
|
marvell,pcie-port = <3>;
|
||||||
|
163
Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
Normal file
163
Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
NVIDIA Tegra PCIe controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: "nvidia,tegra20-pcie" or "nvidia,tegra30-pcie"
|
||||||
|
- device_type: Must be "pci"
|
||||||
|
- reg: A list of physical base address and length for each set of controller
|
||||||
|
registers. Must contain an entry for each entry in the reg-names property.
|
||||||
|
- reg-names: Must include the following entries:
|
||||||
|
"pads": PADS registers
|
||||||
|
"afi": AFI registers
|
||||||
|
"cs": configuration space region
|
||||||
|
- interrupts: A list of interrupt outputs of the controller. Must contain an
|
||||||
|
entry for each entry in the interrupt-names property.
|
||||||
|
- interrupt-names: Must include the following entries:
|
||||||
|
"intr": The Tegra interrupt that is asserted for controller interrupts
|
||||||
|
"msi": The Tegra interrupt that is asserted when an MSI is received
|
||||||
|
- pex-clk-supply: Supply voltage for internal reference clock
|
||||||
|
- vdd-supply: Power supply for controller (1.05V)
|
||||||
|
- avdd-supply: Power supply for controller (1.05V) (not required for Tegra20)
|
||||||
|
- bus-range: Range of bus numbers associated with this controller
|
||||||
|
- #address-cells: Address representation for root ports (must be 3)
|
||||||
|
- cell 0 specifies the bus and device numbers of the root port:
|
||||||
|
[23:16]: bus number
|
||||||
|
[15:11]: device number
|
||||||
|
- cell 1 denotes the upper 32 address bits and should be 0
|
||||||
|
- cell 2 contains the lower 32 address bits and is used to translate to the
|
||||||
|
CPU address space
|
||||||
|
- #size-cells: Size representation for root ports (must be 2)
|
||||||
|
- ranges: Describes the translation of addresses for root ports and standard
|
||||||
|
PCI regions. The entries must be 6 cells each, where the first three cells
|
||||||
|
correspond to the address as described for the #address-cells property
|
||||||
|
above, the fourth cell is the physical CPU address to translate to and the
|
||||||
|
fifth and six cells are as described for the #size-cells property above.
|
||||||
|
- The first two entries are expected to translate the addresses for the root
|
||||||
|
port registers, which are referenced by the assigned-addresses property of
|
||||||
|
the root port nodes (see below).
|
||||||
|
- The remaining entries setup the mapping for the standard I/O, memory and
|
||||||
|
prefetchable PCI regions. The first cell determines the type of region
|
||||||
|
that is setup:
|
||||||
|
- 0x81000000: I/O memory region
|
||||||
|
- 0x82000000: non-prefetchable memory region
|
||||||
|
- 0xc2000000: prefetchable memory region
|
||||||
|
Please refer to the standard PCI bus binding document for a more detailed
|
||||||
|
explanation.
|
||||||
|
- clocks: List of clock inputs of the controller. Must contain an entry for
|
||||||
|
each entry in the clock-names property.
|
||||||
|
- clock-names: Must include the following entries:
|
||||||
|
"pex": The Tegra clock of that name
|
||||||
|
"afi": The Tegra clock of that name
|
||||||
|
"pcie_xclk": The Tegra clock of that name
|
||||||
|
"pll_e": The Tegra clock of that name
|
||||||
|
"cml": The Tegra clock of that name (not required for Tegra20)
|
||||||
|
|
||||||
|
Root ports are defined as subnodes of the PCIe controller node.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- device_type: Must be "pci"
|
||||||
|
- assigned-addresses: Address and size of the port configuration registers
|
||||||
|
- reg: PCI bus address of the root port
|
||||||
|
- #address-cells: Must be 3
|
||||||
|
- #size-cells: Must be 2
|
||||||
|
- ranges: Sub-ranges distributed from the PCIe controller node. An empty
|
||||||
|
property is sufficient.
|
||||||
|
- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations
|
||||||
|
are:
|
||||||
|
- Root port 0 uses 4 lanes, root port 1 is unused.
|
||||||
|
- Both root ports use 2 lanes.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
SoC DTSI:
|
||||||
|
|
||||||
|
pcie-controller {
|
||||||
|
compatible = "nvidia,tegra20-pcie";
|
||||||
|
device_type = "pci";
|
||||||
|
reg = <0x80003000 0x00000800 /* PADS registers */
|
||||||
|
0x80003800 0x00000200 /* AFI registers */
|
||||||
|
0x90000000 0x10000000>; /* configuration space */
|
||||||
|
reg-names = "pads", "afi", "cs";
|
||||||
|
interrupts = <0 98 0x04 /* controller interrupt */
|
||||||
|
0 99 0x04>; /* MSI interrupt */
|
||||||
|
interrupt-names = "intr", "msi";
|
||||||
|
|
||||||
|
bus-range = <0x00 0xff>;
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000 /* port 0 registers */
|
||||||
|
0x82000000 0 0x80001000 0x80001000 0 0x00001000 /* port 1 registers */
|
||||||
|
0x81000000 0 0 0x82000000 0 0x00010000 /* downstream I/O */
|
||||||
|
0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */
|
||||||
|
0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */
|
||||||
|
|
||||||
|
clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>,
|
||||||
|
<&tegra_car 118>;
|
||||||
|
clock-names = "pex", "afi", "pcie_xclk", "pll_e";
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
pci@1,0 {
|
||||||
|
device_type = "pci";
|
||||||
|
assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>;
|
||||||
|
reg = <0x000800 0 0 0 0>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
nvidia,num-lanes = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
pci@2,0 {
|
||||||
|
device_type = "pci";
|
||||||
|
assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>;
|
||||||
|
reg = <0x001000 0 0 0 0>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
nvidia,num-lanes = <2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Board DTS:
|
||||||
|
|
||||||
|
pcie-controller {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
vdd-supply = <&pci_vdd_reg>;
|
||||||
|
pex-clk-supply = <&pci_clk_reg>;
|
||||||
|
|
||||||
|
/* root port 00:01.0 */
|
||||||
|
pci@1,0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
/* bridge 01:00.0 (optional) */
|
||||||
|
pci@0,0 {
|
||||||
|
reg = <0x010000 0 0 0 0>;
|
||||||
|
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
device_type = "pci";
|
||||||
|
|
||||||
|
/* endpoint 02:00.0 */
|
||||||
|
pci@0,0 {
|
||||||
|
reg = <0x020000 0 0 0 0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Note that devices on the PCI bus are dynamically discovered using PCI's bus
|
||||||
|
enumeration and therefore don't need corresponding device nodes in DT. However
|
||||||
|
if a device on the PCI bus provides a non-probeable bus such as I2C or SPI,
|
||||||
|
device nodes need to be added in order to allow the bus' children to be
|
||||||
|
instantiated at the proper location in the operating system's device tree (as
|
||||||
|
illustrated by the optional nodes in the example above).
|
@ -37,7 +37,7 @@ Bank: 3 (A, B and C)
|
|||||||
0xffffffff 0x7fff3ccf /* pioB */
|
0xffffffff 0x7fff3ccf /* pioB */
|
||||||
0xffffffff 0x007fffff /* pioC */
|
0xffffffff 0x007fffff /* pioC */
|
||||||
|
|
||||||
For each peripheral/bank we will descibe in a u32 if a pin can can be
|
For each peripheral/bank we will descibe in a u32 if a pin can be
|
||||||
configured in it by putting 1 to the pin bit (1 << pin)
|
configured in it by putting 1 to the pin bit (1 << pin)
|
||||||
|
|
||||||
Let's take the pioA on peripheral B
|
Let's take the pioA on peripheral B
|
||||||
|
@ -80,6 +80,17 @@ Valid values for pin and group names are:
|
|||||||
dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg,
|
dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg,
|
||||||
gmh, owr, uda.
|
gmh, owr, uda.
|
||||||
|
|
||||||
|
Valid values for nvidia,functions are:
|
||||||
|
|
||||||
|
blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3, displaya,
|
||||||
|
displaya_alt, displayb, dtv, emc_dll, extperiph1, extperiph2,
|
||||||
|
extperiph3, gmi, gmi_alt, hda, hsi, i2c1, i2c2, i2c3, i2c4, i2cpwr,
|
||||||
|
i2s0, i2s1, i2s2, i2s3, i2s4, irda, kbc, nand, nand_alt, owr, pmi,
|
||||||
|
pwm0, pwm1, pwm2, pwm3, pwron, reset_out_n, rsvd1, rsvd2, rsvd3,
|
||||||
|
rsvd4, sdmmc1, sdmmc2, sdmmc3, sdmmc4, soc, spdif, spi1, spi2, spi3,
|
||||||
|
spi4, spi5, spi6, sysclk, trace, uarta, uartb, uartc, uartd, ulpi,
|
||||||
|
usb, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6, vi, vi_alt1, vi_alt3
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
pinmux: pinmux {
|
pinmux: pinmux {
|
||||||
|
@ -103,6 +103,17 @@ Valid values for pin and group names are:
|
|||||||
drive_gma, drive_gmb, drive_gmc, drive_gmd, drive_gme, drive_owr,
|
drive_gma, drive_gmb, drive_gmc, drive_gmd, drive_gme, drive_owr,
|
||||||
drive_uda.
|
drive_uda.
|
||||||
|
|
||||||
|
Valid values for nvidia,functions are:
|
||||||
|
|
||||||
|
ahb_clk, apb_clk, audio_sync, crt, dap1, dap2, dap3, dap4, dap5,
|
||||||
|
displaya, displayb, emc_test0_dll, emc_test1_dll, gmi, gmi_int,
|
||||||
|
hdmi, i2cp, i2c1, i2c2, i2c3, ide, irda, kbc, mio, mipi_hs, nand,
|
||||||
|
osc, owr, pcie, plla_out, pllc_out1, pllm_out1, pllp_out2, pllp_out3,
|
||||||
|
pllp_out4, pwm, pwr_intr, pwr_on, rsvd1, rsvd2, rsvd3, rsvd4, rtck,
|
||||||
|
sdio1, sdio2, sdio3, sdio4, sflash, spdif, spi1, spi2, spi2_alt,
|
||||||
|
spi3, spi4, trace, twc, uarta, uartb, uartc, uartd, uarte, ulpi,
|
||||||
|
vi, vi_sensor_clk, xio
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
pinctrl@70000000 {
|
pinctrl@70000000 {
|
||||||
|
@ -91,6 +91,18 @@ Valid values for pin and group names are:
|
|||||||
gmh, gpv, lcd1, lcd2, owr, sdio1, sdio2, sdio3, spi, uaa, uab, uart2,
|
gmh, gpv, lcd1, lcd2, owr, sdio1, sdio2, sdio3, spi, uaa, uab, uart2,
|
||||||
uart3, uda, vi1.
|
uart3, uda, vi1.
|
||||||
|
|
||||||
|
Valid values for nvidia,functions are:
|
||||||
|
|
||||||
|
blink, cec, clk_12m_out, clk_32k_in, core_pwr_req, cpu_pwr_req, crt,
|
||||||
|
dap, ddr, dev3, displaya, displayb, dtv, extperiph1, extperiph2,
|
||||||
|
extperiph3, gmi, gmi_alt, hda, hdcp, hdmi, hsi, i2c1, i2c2, i2c3,
|
||||||
|
i2c4, i2cpwr, i2s0, i2s1, i2s2, i2s3, i2s4, invalid, kbc, mio, nand,
|
||||||
|
nand_alt, owr, pcie, pwm0, pwm1, pwm2, pwm3, pwr_int_n, rsvd1, rsvd2,
|
||||||
|
rsvd3, rsvd4, rtck, sata, sdmmc1, sdmmc2, sdmmc3, sdmmc4, spdif, spi1,
|
||||||
|
spi2, spi2_alt, spi3, spi4, spi5, spi6, sysclk, test, trace, uarta,
|
||||||
|
uartb, uartc, uartd, uarte, ulpi, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6,
|
||||||
|
vi, vi_alt1, vi_alt2, vi_alt3
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
pinctrl@70000000 {
|
pinctrl@70000000 {
|
||||||
|
@ -127,21 +127,20 @@ whether there is any interaction between the child and intermediate parent
|
|||||||
nodes, is again defined entirely by the binding for the individual pin
|
nodes, is again defined entirely by the binding for the individual pin
|
||||||
controller device.
|
controller device.
|
||||||
|
|
||||||
== Using generic pinconfig options ==
|
== Generic pin configuration node content ==
|
||||||
|
|
||||||
Generic pinconfig parameters can be used by defining a separate node containing
|
Many data items that are represented in a pin configuration node are common
|
||||||
the applicable parameters (and optional values), like:
|
and generic. Pin control bindings should use the properties defined below
|
||||||
|
where they are applicable; not all of these properties are relevant or useful
|
||||||
|
for all hardware or binding structures. Each individual binding document
|
||||||
|
should state which of these generic properties, if any, are used, and the
|
||||||
|
structure of the DT nodes that contain these properties.
|
||||||
|
|
||||||
pcfg_pull_up: pcfg_pull_up {
|
Supported generic properties are:
|
||||||
bias-pull-up;
|
|
||||||
drive-strength = <20>;
|
|
||||||
};
|
|
||||||
|
|
||||||
This node should then be referenced in the appropriate pinctrl node as a phandle
|
|
||||||
and parsed in the driver using the pinconf_generic_parse_dt_config function.
|
|
||||||
|
|
||||||
Supported configuration parameters are:
|
|
||||||
|
|
||||||
|
pins - the list of pins that properties in the node
|
||||||
|
apply to
|
||||||
|
function - the mux function to select
|
||||||
bias-disable - disable any pin bias
|
bias-disable - disable any pin bias
|
||||||
bias-high-impedance - high impedance mode ("third-state", "floating")
|
bias-high-impedance - high impedance mode ("third-state", "floating")
|
||||||
bias-bus-hold - latch weakly
|
bias-bus-hold - latch weakly
|
||||||
@ -160,7 +159,21 @@ low-power-disable - disable low power mode
|
|||||||
output-low - set the pin to output mode with low level
|
output-low - set the pin to output mode with low level
|
||||||
output-high - set the pin to output mode with high level
|
output-high - set the pin to output mode with high level
|
||||||
|
|
||||||
Arguments for parameters:
|
Some of the generic properties take arguments. For those that do, the
|
||||||
|
arguments are described below.
|
||||||
|
|
||||||
|
- pins takes a list of pin names or IDs as a required argument. The specific
|
||||||
|
binding for the hardware defines:
|
||||||
|
- Whether the entries are integers or strings, and their meaning.
|
||||||
|
|
||||||
|
- function takes a list of function names/IDs as a required argument. The
|
||||||
|
specific binding for the hardware defines:
|
||||||
|
- Whether the entries are integers or strings, and their meaning.
|
||||||
|
- Whether only a single entry is allowed (which is applied to all entries
|
||||||
|
in the pins property), or whether there may alternatively be one entry per
|
||||||
|
entry in the pins property, in which case the list lengths must match, and
|
||||||
|
for each list index i, the function at list index i is applied to the pin
|
||||||
|
at list index i.
|
||||||
|
|
||||||
- bias-pull-up, -down and -pin-default take as optional argument on hardware
|
- bias-pull-up, -down and -pin-default take as optional argument on hardware
|
||||||
supporting it the pull strength in Ohm. bias-disable will disable the pull.
|
supporting it the pull strength in Ohm. bias-disable will disable the pull.
|
||||||
@ -170,7 +183,5 @@ Arguments for parameters:
|
|||||||
- input-debounce takes the debounce time in usec as argument
|
- input-debounce takes the debounce time in usec as argument
|
||||||
or 0 to disable debouncing
|
or 0 to disable debouncing
|
||||||
|
|
||||||
All parameters not listed here, do not take an argument.
|
|
||||||
|
|
||||||
More in-depth documentation on these parameters can be found in
|
More in-depth documentation on these parameters can be found in
|
||||||
<include/linux/pinctrl/pinconfig-generic.h>
|
<include/linux/pinctrl/pinconfig-generic.h>
|
||||||
|
96
Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt
Normal file
96
Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
Palmas Pincontrol bindings
|
||||||
|
|
||||||
|
The pins of Palmas device can be set on different option and provides
|
||||||
|
the configuration for Pull UP/DOWN, open drain etc.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: It must be one of following:
|
||||||
|
- "ti,palmas-pinctrl" for Palma series of the pincontrol.
|
||||||
|
- "ti,tps65913-pinctrl" for Palma series device TPS65913.
|
||||||
|
- "ti,tps80036-pinctrl" for Palma series device TPS80036.
|
||||||
|
|
||||||
|
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
|
phrase "pin configuration node".
|
||||||
|
|
||||||
|
Palmas's pin configuration nodes act as a container for an arbitrary number of
|
||||||
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
|
list of pins. This configuration can include the mux function to select on
|
||||||
|
those pin(s), and various pin configuration parameters, such as pull-up,
|
||||||
|
open drain.
|
||||||
|
|
||||||
|
The name of each subnode is not important; all subnodes should be enumerated
|
||||||
|
and processed purely based on their content.
|
||||||
|
|
||||||
|
Each subnode only affects those parameters that are explicitly listed. In
|
||||||
|
other words, a subnode that lists a mux function but no pin configuration
|
||||||
|
parameters implies no information about any pin configuration parameters.
|
||||||
|
Similarly, a pin subnode that describes a pullup parameter implies no
|
||||||
|
information about e.g. the mux function.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- ti,palmas-enable-dvfs1: Enable DVFS1. Configure pins for DVFS1 mode.
|
||||||
|
Selection primary or secondary function associated to I2C2_SCL_SCE,
|
||||||
|
I2C2_SDA_SDO pin/pad for DVFS1 interface
|
||||||
|
- ti,palmas-enable-dvfs2: Enable DVFS2. Configure pins for DVFS2 mode.
|
||||||
|
Selection primary or secondary function associated to GPADC_START
|
||||||
|
and SYSEN2 pin/pad for DVFS2 interface
|
||||||
|
|
||||||
|
This binding uses the following generic properties as defined in
|
||||||
|
pinctrl-bindings.txt:
|
||||||
|
|
||||||
|
Required: pins
|
||||||
|
Options: function, bias-disable, bias-pull-up, bias-pull-down,
|
||||||
|
bias-pin-default, drive-open-drain.
|
||||||
|
|
||||||
|
Note that many of these properties are only valid for certain specific pins.
|
||||||
|
See the Palmas device datasheet for complete details regarding which pins
|
||||||
|
support which functionality.
|
||||||
|
|
||||||
|
Valid values for pin names are:
|
||||||
|
gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8, gpio9,
|
||||||
|
gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, vac, powergood,
|
||||||
|
nreswarm, pwrdown, gpadc_start, reset_in, nsleep, enable1, enable2,
|
||||||
|
int.
|
||||||
|
|
||||||
|
Valid value of function names are:
|
||||||
|
gpio, led, pwm, regen, sysen, clk32kgaudio, id, vbus_det, chrg_det,
|
||||||
|
vac, vacok, powergood, usb_psel, msecure, pwrhold, int, nreswarm,
|
||||||
|
simrsto, simrsti, low_vbat, wireless_chrg1, rcm, pwrdown, gpadc_start,
|
||||||
|
reset_in, nsleep, enable.
|
||||||
|
|
||||||
|
There are 4 special functions: opt0, opt1, opt2 and opt3. If any of these
|
||||||
|
functions is selected then directly pins register will be written with 0, 1, 2
|
||||||
|
or 3 respectively if it is valid for that pins or list of pins.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
palmas: tps65913 {
|
||||||
|
....
|
||||||
|
pinctrl {
|
||||||
|
compatible = "ti,tps65913-pinctrl";
|
||||||
|
ti,palmas-enable-dvfs1;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&palmas_pins_state>;
|
||||||
|
|
||||||
|
palmas_pins_state: pinmux {
|
||||||
|
gpio0 {
|
||||||
|
pins = "gpio0";
|
||||||
|
function = "id";
|
||||||
|
bias-pull-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
vac {
|
||||||
|
pins = "vac";
|
||||||
|
function = "vacok";
|
||||||
|
bias-pull-down;
|
||||||
|
};
|
||||||
|
|
||||||
|
gpio5 {
|
||||||
|
pins = "gpio5";
|
||||||
|
function = "opt0";
|
||||||
|
drive-open-drain = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
....
|
||||||
|
};
|
@ -12,6 +12,7 @@ Required Properties:
|
|||||||
- "samsung,s3c2440-pinctrl": for S3C2440-compatible pin-controller,
|
- "samsung,s3c2440-pinctrl": for S3C2440-compatible pin-controller,
|
||||||
- "samsung,s3c2450-pinctrl": for S3C2450-compatible pin-controller,
|
- "samsung,s3c2450-pinctrl": for S3C2450-compatible pin-controller,
|
||||||
- "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller,
|
- "samsung,s3c64xx-pinctrl": for S3C64xx-compatible pin-controller,
|
||||||
|
- "samsung,s5pv210-pinctrl": for S5PV210-compatible pin-controller,
|
||||||
- "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.
|
- "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.
|
||||||
- "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.
|
- "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.
|
||||||
- "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.
|
- "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.
|
||||||
@ -128,7 +129,7 @@ B. External Wakeup Interrupts: For supporting external wakeup interrupts, a
|
|||||||
- samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller
|
- samsung,s3c64xx-wakeup-eint: represents wakeup interrupt controller
|
||||||
found on Samsung S3C64xx SoCs,
|
found on Samsung S3C64xx SoCs,
|
||||||
- samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller
|
- samsung,exynos4210-wakeup-eint: represents wakeup interrupt controller
|
||||||
found on Samsung Exynos4210 SoC.
|
found on Samsung Exynos4210 and S5PC110/S5PV210 SoCs.
|
||||||
- interrupt-parent: phandle of the interrupt parent to which the external
|
- interrupt-parent: phandle of the interrupt parent to which the external
|
||||||
wakeup interrupts are forwarded to.
|
wakeup interrupts are forwarded to.
|
||||||
- interrupts: interrupt used by multiplexed wakeup interrupts.
|
- interrupts: interrupt used by multiplexed wakeup interrupts.
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
ST Ericsson Nomadik pinmux controller
|
ST Ericsson Nomadik pinmux controller
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "stericsson,nmk-pinctrl", "stericsson,nmk-pinctrl-db8540",
|
- compatible: "stericsson,db8500-pinctrl", "stericsson,db8540-pinctrl",
|
||||||
"stericsson,nmk-pinctrl-stn8815"
|
"stericsson,stn8815-pinctrl"
|
||||||
- reg: Should contain the register physical address and length of the PRCMU.
|
- reg: Should contain the register physical address and length of the PRCMU.
|
||||||
|
|
||||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
@ -68,7 +68,7 @@ Optional subnode-properties:
|
|||||||
Example board file extract:
|
Example board file extract:
|
||||||
|
|
||||||
pinctrl@80157000 {
|
pinctrl@80157000 {
|
||||||
compatible = "stericsson,nmk-pinctrl";
|
compatible = "stericsson,db8500-pinctrl";
|
||||||
reg = <0x80157000 0x2000>;
|
reg = <0x80157000 0x2000>;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
* Freescale MSI interrupt controller
|
* Freescale MSI interrupt controller
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : compatible list, contains 2 entries,
|
- compatible : compatible list, may contain one or two entries
|
||||||
first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572,
|
The first is "fsl,CHIP-msi", where CHIP is the processor(mpc8610, mpc8572,
|
||||||
etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" depending on
|
etc.) and the second is "fsl,mpic-msi" or "fsl,ipic-msi" or
|
||||||
the parent type.
|
"fsl,mpic-msi-v4.3" depending on the parent type and version. If mpic
|
||||||
|
version is 4.3, the number of MSI registers is increased to 16, MSIIR1 is
|
||||||
|
provided to access these 16 registers, and compatible "fsl,mpic-msi-v4.3"
|
||||||
|
should be used. The first entry is optional; the second entry is
|
||||||
|
required.
|
||||||
|
|
||||||
- reg : It may contain one or two regions. The first region should contain
|
- reg : It may contain one or two regions. The first region should contain
|
||||||
the address and the length of the shared message interrupt register set.
|
the address and the length of the shared message interrupt register set.
|
||||||
The second region should contain the address of aliased MSIIR register for
|
The second region should contain the address of aliased MSIIR or MSIIR1
|
||||||
platforms that have such an alias.
|
register for platforms that have such an alias, if using MSIIR1, the second
|
||||||
|
region must be added because different MSI group has different MSIIR1 offset.
|
||||||
- msi-available-ranges: use <start count> style section to define which
|
|
||||||
msi interrupt can be used in the 256 msi interrupts. This property is
|
|
||||||
optional, without this, all the 256 MSI interrupts can be used.
|
|
||||||
Each available range must begin and end on a multiple of 32 (i.e.
|
|
||||||
no splitting an individual MSI register or the associated PIC interrupt).
|
|
||||||
|
|
||||||
- interrupts : each one of the interrupts here is one entry per 32 MSIs,
|
- interrupts : each one of the interrupts here is one entry per 32 MSIs,
|
||||||
and routed to the host interrupt controller. the interrupts should
|
and routed to the host interrupt controller. the interrupts should
|
||||||
@ -28,6 +27,14 @@ Required properties:
|
|||||||
to MPIC.
|
to MPIC.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
|
- msi-available-ranges: use <start count> style section to define which
|
||||||
|
msi interrupt can be used in the 256 msi interrupts. This property is
|
||||||
|
optional, without this, all the MSI interrupts can be used.
|
||||||
|
Each available range must begin and end on a multiple of 32 (i.e.
|
||||||
|
no splitting an individual MSI register or the associated PIC interrupt).
|
||||||
|
MPIC v4.3 does not support this property because the 32 interrupts of an
|
||||||
|
individual register are not continuous when using MSIIR1.
|
||||||
|
|
||||||
- msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register
|
- msi-address-64: 64-bit PCI address of the MSIIR register. The MSIIR register
|
||||||
is used for MSI messaging. The address of MSIIR in PCI address space is
|
is used for MSI messaging. The address of MSIIR in PCI address space is
|
||||||
the MSI message address.
|
the MSI message address.
|
||||||
@ -54,6 +61,28 @@ Example:
|
|||||||
interrupt-parent = <&mpic>;
|
interrupt-parent = <&mpic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
msi@41600 {
|
||||||
|
compatible = "fsl,mpic-msi-v4.3";
|
||||||
|
reg = <0x41600 0x200 0x44148 4>;
|
||||||
|
interrupts = <
|
||||||
|
0xe0 0 0 0
|
||||||
|
0xe1 0 0 0
|
||||||
|
0xe2 0 0 0
|
||||||
|
0xe3 0 0 0
|
||||||
|
0xe4 0 0 0
|
||||||
|
0xe5 0 0 0
|
||||||
|
0xe6 0 0 0
|
||||||
|
0xe7 0 0 0
|
||||||
|
0x100 0 0 0
|
||||||
|
0x101 0 0 0
|
||||||
|
0x102 0 0 0
|
||||||
|
0x103 0 0 0
|
||||||
|
0x104 0 0 0
|
||||||
|
0x105 0 0 0
|
||||||
|
0x106 0 0 0
|
||||||
|
0x107 0 0 0>;
|
||||||
|
};
|
||||||
|
|
||||||
The Freescale hypervisor and msi-address-64
|
The Freescale hypervisor and msi-address-64
|
||||||
-------------------------------------------
|
-------------------------------------------
|
||||||
Normally, PCI devices have access to all of CCSR via an ATMU mapping. The
|
Normally, PCI devices have access to all of CCSR via an ATMU mapping. The
|
||||||
|
@ -2,11 +2,9 @@ Atmel TCB PWM controller
|
|||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: should be "atmel,tcb-pwm"
|
- compatible: should be "atmel,tcb-pwm"
|
||||||
- #pwm-cells: Should be 3. The first cell specifies the per-chip index
|
- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
|
||||||
of the PWM to use, the second cell is the period in nanoseconds and
|
the cells format. The only third cell flag supported by this binding is
|
||||||
bit 0 in the third cell is used to encode the polarity of PWM output.
|
PWM_POLARITY_INVERTED.
|
||||||
Set bit 0 of the third cell in PWM specifier to 1 for inverse polarity &
|
|
||||||
set to 0 for normal polarity.
|
|
||||||
- tc-block: The Timer Counter block to use as a PWM chip.
|
- tc-block: The Timer Counter block to use as a PWM chip.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -3,8 +3,8 @@ Freescale i.MX PWM controller
|
|||||||
Required properties:
|
Required properties:
|
||||||
- compatible: should be "fsl,<soc>-pwm"
|
- compatible: should be "fsl,<soc>-pwm"
|
||||||
- reg: physical base address and length of the controller's registers
|
- reg: physical base address and length of the controller's registers
|
||||||
- #pwm-cells: should be 2. The first cell specifies the per-chip index
|
- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
|
||||||
of the PWM to use and the second cell is the period in nanoseconds.
|
the cells format.
|
||||||
- interrupts: The interrupt for the pwm controller
|
- interrupts: The interrupt for the pwm controller
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user