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: USA
|
||||
|
||||
N: Christopher L. Cheney
|
||||
E: ccheney@debian.org
|
||||
E: ccheney@cheney.cx
|
||||
W: http://www.cheney.cx
|
||||
N: Chris Cheney
|
||||
E: chris.cheney@gmail.com
|
||||
E: ccheney@redhat.com
|
||||
P: 1024D/8E384AF2 2D31 1927 87D7 1F24 9FF9 1BC5 D106 5AB3 8E38 4AF2
|
||||
D: Vista Imaging usb webcam driver
|
||||
S: 314 Prince of Wales
|
||||
S: Conroe, TX 77304
|
||||
S: 2308 Therrell Way
|
||||
S: McKinney, TX 75070
|
||||
S: USA
|
||||
|
||||
N: Stuart Cheshire
|
||||
|
@ -1120,6 +1119,7 @@ D: author of userfs filesystem
|
|||
D: Improved mmap and munmap handling
|
||||
D: General mm minor tidyups
|
||||
D: autofs v4 maintainer
|
||||
D: Xen subsystem
|
||||
S: 987 Alabama St
|
||||
S: San Francisco
|
||||
S: CA, 94110
|
||||
|
|
|
@ -40,7 +40,7 @@ IPMI.txt
|
|||
IRQ-affinity.txt
|
||||
- how to select which CPU(s) handle which interrupt events on SMP.
|
||||
IRQ-domain.txt
|
||||
- info on inerrupt numbering and setting up IRQ domains.
|
||||
- info on interrupt numbering and setting up IRQ domains.
|
||||
IRQ.txt
|
||||
- description of what an IRQ is.
|
||||
Intel-IOMMU.txt
|
||||
|
|
|
@ -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
|
||||
which represents the limit on the *uncompressed* worth of data
|
||||
that can be stored in this disk.
|
||||
Unit: bytes
|
||||
|
||||
What: /sys/block/zram<id>/initstate
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
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.
|
||||
|
||||
What: /sys/block/zram<id>/reset
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The disksize file is write-only and allows resetting the
|
||||
device. The reset operation frees all the memory assocaited
|
||||
The reset file is write-only and allows resetting the
|
||||
device. The reset operation frees all the memory associated
|
||||
with this device.
|
||||
|
||||
What: /sys/block/zram<id>/num_reads
|
||||
|
@ -48,7 +49,7 @@ Contact: Nitin Gupta <ngupta@vflare.org>
|
|||
Description:
|
||||
The notify_free file is read-only and specifies the number of
|
||||
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
|
||||
being used as a swap disk.
|
||||
|
||||
|
|
|
@ -351,6 +351,7 @@ Description:
|
|||
6kohm_to_gnd: connected to ground via a 6kOhm resistor,
|
||||
20kohm_to_gnd: connected to ground via a 20kOhm 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.
|
||||
For a list of available output power down options read
|
||||
outX_powerdown_mode_available. If Y is not present the
|
||||
|
@ -792,3 +793,21 @@ Contact: linux-iio@vger.kernel.org
|
|||
Description:
|
||||
This attribute is used to read the amount of quadrature error
|
||||
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
|
||||
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
|
||||
KernelVersion: 3.4.0
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
|
|
|
@ -18,4 +18,4 @@ Description:
|
|||
adjust the reference frequency accordingly.
|
||||
The value written has no effect until out_altvoltageY_frequency
|
||||
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
|
||||
Date: July 2008
|
||||
KernelVersion: 2.6.26
|
||||
|
@ -172,17 +94,6 @@ Description:
|
|||
device IDs, exactly like reading from the entry
|
||||
"/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
|
||||
Date: September 2011
|
||||
Contact: Andiry Xu <andiry.xu@amd.com>
|
||||
|
|
|
@ -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.
|
||||
</para></listitem>
|
||||
</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>
|
||||
<term>DRIVER_PCI_DMA</term>
|
||||
<listitem><para>
|
||||
|
@ -194,28 +187,6 @@
|
|||
support shared IRQs (note that this is required of PCI drivers).
|
||||
</para></listitem>
|
||||
</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>
|
||||
<term>DRIVER_GEM</term>
|
||||
<listitem><para>
|
||||
|
@ -234,6 +205,12 @@
|
|||
Driver implements DRM PRIME buffer sharing.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>DRIVER_RENDER</term>
|
||||
<listitem><para>
|
||||
Driver supports dedicated render nodes.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
|
@ -2212,6 +2189,18 @@ void intel_crt_init(struct drm_device *dev)
|
|||
!Iinclude/drm/drm_rect.h
|
||||
!Edrivers/gpu/drm/drm_rect.c
|
||||
</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>
|
||||
|
||||
<!-- Internals: kms properties -->
|
||||
|
@ -2422,18 +2411,18 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
|
|||
</abstract>
|
||||
<para>
|
||||
The <methodname>firstopen</methodname> method is called by the DRM core
|
||||
when an application opens a device that has no other opened file handle.
|
||||
Similarly the <methodname>lastclose</methodname> method is called when
|
||||
the last application holding a file handle opened on the device closes
|
||||
it. Both methods are mostly used for UMS (User Mode Setting) drivers to
|
||||
acquire and release device resources which should be done in the
|
||||
<methodname>load</methodname> and <methodname>unload</methodname>
|
||||
methods for KMS drivers.
|
||||
for legacy UMS (User Mode Setting) drivers only when an application
|
||||
opens a device that has no other opened file handle. UMS drivers can
|
||||
implement it to acquire device resources. KMS drivers can't use the
|
||||
method and must acquire resources in the <methodname>load</methodname>
|
||||
method instead.
|
||||
</para>
|
||||
<para>
|
||||
Note that the <methodname>lastclose</methodname> method is also called
|
||||
at module unload time or, for hot-pluggable devices, when the device is
|
||||
unplugged. The <methodname>firstopen</methodname> and
|
||||
Similarly the <methodname>lastclose</methodname> method is called when
|
||||
the last application holding a file handle opened on the device closes
|
||||
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.
|
||||
</para>
|
||||
<para>
|
||||
|
@ -2462,7 +2451,12 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
|
|||
<para>
|
||||
The <methodname>lastclose</methodname> method should restore CRTC and
|
||||
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>
|
||||
</sect2>
|
||||
<sect2>
|
||||
|
@ -2498,7 +2492,6 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
|
|||
<programlisting>
|
||||
.poll = drm_poll,
|
||||
.read = drm_read,
|
||||
.fasync = drm_fasync,
|
||||
.llseek = no_llseek,
|
||||
</programlisting>
|
||||
</para>
|
||||
|
@ -2657,6 +2650,69 @@ int (*resume) (struct drm_device *);</synopsis>
|
|||
info, since man pages should cover the rest.
|
||||
</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 -->
|
||||
|
||||
<sect1>
|
||||
|
|
|
@ -722,17 +722,22 @@ for more details.</para>
|
|||
</section>
|
||||
|
||||
<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
|
||||
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>
|
||||
<title>Generic MPEG Controls</title>
|
||||
<title>Generic Codec Controls</title>
|
||||
|
||||
<table pgwide="1" frame="none" id="mpeg-control-id">
|
||||
<title>MPEG Control IDs</title>
|
||||
<title>Codec Control IDs</title>
|
||||
<tgroup cols="4">
|
||||
<colspec colname="c1" colwidth="1*" />
|
||||
<colspec colname="c2" colwidth="6*" />
|
||||
|
@ -752,7 +757,7 @@ certain hardware.</para>
|
|||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant> </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
|
||||
description of this control class. This description can be used as the
|
||||
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>
|
||||
</table>
|
||||
</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 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
|
||||
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
|
||||
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 id="lirc_ioctl">
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
y1 = (255 / 219.0) * (Y1 - 16);
|
||||
pb = (255 / 224.0) * (Cb - 128);
|
||||
pr = (255 / 224.0) * (Cr - 128);
|
||||
y1 = (Y1 - 16) / 219.0;
|
||||
pb = (Cb - 128) / 224.0;
|
||||
pr = (Cr - 128) / 224.0;
|
||||
|
||||
r = 1.0 * y1 + 0 * pb + 1.402 * pr;
|
||||
g = 1.0 * y1 - 0.344 * pb - 0.714 * pr;
|
||||
|
@ -718,6 +718,7 @@ information.</para>
|
|||
&sub-nv12m;
|
||||
&sub-nv12mt;
|
||||
&sub-nv16;
|
||||
&sub-nv16m;
|
||||
&sub-nv24;
|
||||
&sub-m420;
|
||||
</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
|
||||
create buffers of different sizes.</para>
|
||||
|
||||
<para>To allocate device buffers applications initialize relevant fields of
|
||||
the <structname>v4l2_create_buffers</structname> structure. They set the
|
||||
<structfield>type</structfield> field in the
|
||||
&v4l2-format; structure, embedded in this
|
||||
structure, to the respective stream or buffer type.
|
||||
<structfield>count</structfield> must be set to the number of required buffers.
|
||||
<structfield>memory</structfield> specifies the required I/O method. The
|
||||
<structfield>format</structfield> field shall typically be filled in using
|
||||
either the <constant>VIDIOC_TRY_FMT</constant> or
|
||||
<constant>VIDIOC_G_FMT</constant> ioctl(). Additionally, applications can adjust
|
||||
<structfield>sizeimage</structfield> fields to fit their specific needs. The
|
||||
<structfield>reserved</structfield> array must be zeroed.</para>
|
||||
<para>To allocate the device buffers applications must initialize the
|
||||
relevant fields of the <structname>v4l2_create_buffers</structname> structure.
|
||||
The <structfield>count</structfield> field must be set to the number of
|
||||
requested buffers, the <structfield>memory</structfield> field specifies the
|
||||
requested I/O method and the <structfield>reserved</structfield> array must be
|
||||
zeroed.</para>
|
||||
|
||||
<para>The <structfield>format</structfield> field specifies the image format
|
||||
that the buffers must be able to handle. The application has to fill in this
|
||||
&v4l2-format;. Usually this will be done using the
|
||||
<constant>VIDIOC_TRY_FMT</constant> or <constant>VIDIOC_G_FMT</constant> ioctl()
|
||||
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
|
||||
will attempt to allocate up to the requested number of buffers and store the
|
||||
|
@ -144,9 +155,9 @@ mapped</link> I/O.</para>
|
|||
<varlistentry>
|
||||
<term><errorcode>EINVAL</errorcode></term>
|
||||
<listitem>
|
||||
<para>The buffer type (<structfield>type</structfield> field) or the
|
||||
requested I/O method (<structfield>memory</structfield>) is not
|
||||
supported.</para>
|
||||
<para>The buffer type (<structfield>format.type</structfield> field),
|
||||
requested I/O method (<structfield>memory</structfield>) or format
|
||||
(<structfield>format</structfield> field) is not valid.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</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><structfield>il_vfrontporch</structfield></entry>
|
||||
<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>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>il_vsync</structfield></entry>
|
||||
<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>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>il_vbackporch</structfield></entry>
|
||||
<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>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -92,8 +92,8 @@ to add them.</para>
|
|||
<entry>int</entry>
|
||||
<entry><structfield>quality</structfield></entry>
|
||||
<entry>Deprecated. If <link linkend="jpeg-quality-control"><constant>
|
||||
V4L2_CID_JPEG_IMAGE_QUALITY</constant></link> control is exposed by
|
||||
a driver applications should use it instead and ignore this field.
|
||||
V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></link> control is exposed
|
||||
by a driver applications should use it instead and ignore this field.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
|
|
|
@ -132,7 +132,7 @@ devices.</para>
|
|||
<row>
|
||||
<entry>&v4l2-fract;</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
|
||||
field is intended to skip frames on the driver side, saving I/O
|
||||
bandwidth.</para><para>Applications store here the desired frame
|
||||
|
@ -193,7 +193,7 @@ applications must set the array to zero.</entry>
|
|||
<row>
|
||||
<entry>&v4l2-fract;</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>
|
||||
</row>
|
||||
<row>
|
||||
|
|
|
@ -22,8 +22,14 @@
|
|||
|
||||
<!-- LinuxTV v4l-dvb repository. -->
|
||||
<!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-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-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">
|
||||
|
|
|
@ -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:
|
||||
|
||||
[root@moon 44]# echo 1024-1031 > smp_affinity
|
||||
[root@moon 44]# cat smp_affinity
|
||||
[root@moon 44]# echo 1024-1031 > smp_affinity_list
|
||||
[root@moon 44]# cat smp_affinity_list
|
||||
1024-1031
|
||||
|
||||
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()
|
||||
|
||||
We instead need the rcu_barrier() primitive. This primitive is similar
|
||||
to synchronize_rcu(), but instead of waiting solely for a grace
|
||||
period to elapse, it also waits for all outstanding RCU callbacks to
|
||||
complete. Pseudo-code using rcu_barrier() is as follows:
|
||||
We instead need the rcu_barrier() primitive. Rather than waiting for
|
||||
a grace period to elapse, rcu_barrier() waits for all outstanding RCU
|
||||
callbacks to complete. Please note that rcu_barrier() does -not- imply
|
||||
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.
|
||||
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
|
||||
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
|
||||
done via timers. Defaults to "1" for variants of RCU that
|
||||
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
|
||||
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.
|
||||
|
||||
|
|
|
@ -207,7 +207,7 @@ passing those. One idea is to return this in _DSM method like:
|
|||
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:
|
||||
|
||||
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
@ -228,19 +228,9 @@ ACPI handle like:
|
|||
I2C serial bus support
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
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
|
||||
needs to call acpi_i2c_register_devices() after it has added the adapter.
|
||||
|
||||
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);
|
||||
with the platform and SPI drivers. The I2C core automatically enumerates
|
||||
any slave devices behind the controller device once the adapter is
|
||||
registered.
|
||||
|
||||
Below is an example of how to add ACPI support to the existing mpu3050
|
||||
input driver:
|
||||
|
|
|
@ -18,7 +18,8 @@ following:
|
|||
2. Initialise one serial port.
|
||||
3. Detect the machine type.
|
||||
4. Setup the kernel tagged list.
|
||||
5. Call the kernel image.
|
||||
5. Load initramfs.
|
||||
6. Call the kernel image.
|
||||
|
||||
|
||||
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
|
||||
system memory, and the root filesystem location. The dtb must be
|
||||
placed in a region of memory where the kernel decompressor will not
|
||||
overwrite it. The recommended placement is in the first 16KiB of RAM
|
||||
with the caveat that it may not be located at physical address 0 since
|
||||
the kernel interprets a value of 0 in r2 to mean neither a tagged list
|
||||
nor a dtb were passed.
|
||||
overwrite it, whilst remaining within the region which will be covered
|
||||
by the kernel's low-memory mapping.
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
directly.
|
||||
|
||||
The zImage may also be placed in system RAM (at any location) and
|
||||
called there. Note that the kernel uses 16K of RAM below the image
|
||||
to store page tables. The recommended placement is 32KiB into RAM.
|
||||
The zImage may also be placed in system RAM and called there. The
|
||||
kernel should be placed in the first 128MiB of RAM. It is recommended
|
||||
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
|
||||
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 maximum time from when an interrupt occurs, to when the device
|
||||
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
|
||||
device wakeup latency (from clk_enable() to accessibility). For
|
||||
example,
|
||||
|
|
|
@ -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
|
||||
|
||||
The device tree blob (dtb) must be no bigger than 2 megabytes in size
|
||||
and placed at a 2-megabyte boundary within the first 512 megabytes from
|
||||
the start of the kernel image. This is to allow the kernel to map the
|
||||
The device tree blob (dtb) must be placed on an 8-byte boundary within
|
||||
the first 512 megabytes from the start of the kernel image and must not
|
||||
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.
|
||||
|
||||
|
||||
|
@ -68,13 +68,23 @@ Image target is available instead.
|
|||
|
||||
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 res0 = 0; /* reserved */
|
||||
u32 code0; /* Executable code */
|
||||
u32 code1; /* Executable code */
|
||||
u64 text_offset; /* Image load offset */
|
||||
u64 res0 = 0; /* reserved */
|
||||
u64 res1 = 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)
|
||||
from the start of the system RAM and called there. The start of the
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
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
|
||||
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
|
||||
|
|
|
@ -57,7 +57,7 @@ changes occur:
|
|||
interface must make sure that any previous page table
|
||||
modifications for the address space 'vma->vm_mm' in the range
|
||||
'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'.
|
||||
|
||||
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)
|
||||
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
|
||||
remove this interface completely.
|
||||
flush_dcache_page and update_mmu_cache. In the future, the hope
|
||||
is to remove this interface completely.
|
||||
|
||||
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
|
||||
|
|
|
@ -50,8 +50,6 @@ What shall this struct cpufreq_driver contain?
|
|||
|
||||
cpufreq_driver.name - The name of this driver.
|
||||
|
||||
cpufreq_driver.owner - THIS_MODULE;
|
||||
|
||||
cpufreq_driver.init - A pointer to the per-CPU initialization
|
||||
function.
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ to /proc/cpuinfo.
|
|||
|
||||
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
|
||||
|
||||
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)
|
||||
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;
|
||||
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
|
||||
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:
|
||||
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
* 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
|
||||
"arm,armv7-timer"
|
||||
|
@ -26,3 +30,52 @@ Example:
|
|||
<1 10 0xf08>;
|
||||
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)
|
||||
|
||||
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
|
||||
- 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
|
||||
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-startup-time: Startup Time of the ADC in microseconds as
|
||||
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-res: List of resolution in bits supported by the ADC. List size
|
||||
must be two at least.
|
||||
|
|
|
@ -6,4 +6,5 @@ bcm11351, bcm28145, bcm28155 SoCs) shall have the following properties:
|
|||
|
||||
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
|
||||
|
||||
Required properties:
|
||||
- compatible : "bcm,kona-timer"
|
||||
- compatible : "brcm,kona-timer"
|
||||
- DEPRECATED: compatible : "bcm,kona-timer"
|
||||
- reg : Register range for the timer
|
||||
- interrupts : interrupt for the timer
|
||||
- clock-frequency: frequency that the clock operates
|
||||
|
||||
Example:
|
||||
timer@35006000 {
|
||||
compatible = "bcm,kona-timer";
|
||||
compatible = "brcm,kona-timer";
|
||||
reg = <0x35006000 0x1000>;
|
||||
interrupts = <0x0 7 0x4>;
|
||||
clock-frequency = <32768>;
|
|
@ -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).
|
||||
"marvell,"aurora-outer-cache: Marvell Controller designed to be
|
||||
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
|
||||
cache controller
|
||||
"bcm,bcm11351-a2-pl310-cache": DEPRECATED by
|
||||
"brcm,bcm11351-a2-pl310-cache"
|
||||
- cache-unified : Specifies the cache is a unified 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
|
||||
|
|
|
@ -59,3 +59,6 @@ Boards:
|
|||
|
||||
- AM43x EPOS EVM
|
||||
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".
|
||||
- vana15-supply: the regulator supplying the 1.5V to drive the
|
||||
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.
|
||||
|
||||
Example:
|
||||
|
|
|
@ -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
|
||||
"arm,vexpress,config-bridge" phandle (can be also defined in the node's
|
||||
parent) and relies on the board topology properties - see main vexpress
|
||||
node documentation for more details. It must must also define the
|
||||
following property:
|
||||
node documentation for more details. It must also define the following
|
||||
property:
|
||||
- arm,vexpress-sysreg,func : must contain two cells:
|
||||
- first cell defines function number (eg. 1 for clock generator,
|
||||
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.
|
||||
|
||||
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>
|
||||
- reg : <registers mapping>
|
||||
|
||||
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
|
||||
|
||||
Example:
|
||||
sata@ffe08000 {
|
||||
compatible = "calxeda,hb-ahci";
|
||||
reg = <0xffe08000 0x1000>;
|
||||
interrupts = <115>;
|
||||
calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1
|
||||
&combophy0 2 &combophy0 3>;
|
||||
compatible = "snps,spear-ahci";
|
||||
reg = <0xffe08000 0x1000>;
|
||||
interrupts = <115>;
|
||||
|
||||
};
|
||||
|
|
|
@ -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:
|
||||
|
||||
- compatible: Should be set to "fsl,imx6q-weim"
|
||||
- compatible: Should be set to "fsl,<soc>-weim"
|
||||
- reg: A resource specifier for the register space
|
||||
(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.
|
||||
|
||||
- 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
|
||||
node's "reg" property. This property contains the values
|
||||
for the registers EIM_CSnGCR1, EIM_CSnGCR2, EIM_CSnRCR1,
|
||||
EIM_CSnRCR2, EIM_CSnWCR1, EIM_CSnWCR2 in this order.
|
||||
node's "reg" property. The number of registers depends
|
||||
on the selected chip.
|
||||
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:
|
||||
|
||||
|
|
|
@ -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
|
||||
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 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
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
The Samsung Audio Subsystem clock controller generates and supplies clocks
|
||||
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:
|
||||
|
||||
|
|
|
@ -197,6 +197,7 @@ clocks and IDs.
|
|||
spdif0_gate 183
|
||||
spdif1_gate 184
|
||||
spdif_ipg_gate 185
|
||||
ocram 186
|
||||
|
||||
Examples (for mx53):
|
||||
|
||||
|
|
|
@ -209,6 +209,12 @@ clocks and IDs.
|
|||
pll5_post_div 194
|
||||
pll5_video_div 195
|
||||
eim_slow 196
|
||||
spdif 197
|
||||
cko2_sel 198
|
||||
cko2_podf 199
|
||||
cko2 200
|
||||
cko 201
|
||||
vdoa 202
|
||||
|
||||
Examples:
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Optional properties for the SRC node:
|
|||
- disable-mxtal: if present this will disable the MXTALO,
|
||||
i.e. the driver output for the main (~19.2 MHz) chrystal,
|
||||
if the board has its own circuitry for providing this
|
||||
osciallator
|
||||
oscillator
|
||||
|
||||
|
||||
PLL nodes: these nodes represent the two PLLs on the system,
|
||||
|
|
|
@ -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
|
||||
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:
|
||||
|
||||
1. A phandle pointing to the DMA controller.
|
||||
2. The memory interface (16 most significant bits), the peripheral interface
|
||||
(16 less significant bits).
|
||||
3. Parameters for the at91 DMA configuration register which are device
|
||||
dependant:
|
||||
dependent:
|
||||
- bit 7-0: peripheral identifier for the hardware handshaking interface. The
|
||||
identifier can be different for tx and rx.
|
||||
- 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:
|
||||
- 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
|
||||
specifiying the request line.
|
||||
specifying the request line.
|
||||
- dma-names: List of string identifiers for the DMA requests. For the correct
|
||||
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
|
||||
2. Device Type
|
||||
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:
|
||||
Logical channel when unset
|
||||
Physical channel when set
|
||||
0x00000002: Direction:
|
||||
Memory to Device when unset
|
||||
Device to Memory when set
|
||||
0x00000004: Endianess:
|
||||
0x00000004: Endianness:
|
||||
Little endian when unset
|
||||
Big endian when set
|
||||
0x00000008: Use fixed channel:
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
EXTCON FOR TWL CHIPS
|
||||
EXTCON FOR PALMAS/TWL CHIPS
|
||||
|
||||
PALMAS USB COMPARATOR
|
||||
Required Properties:
|
||||
- compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb"
|
||||
- vbus-supply : phandle to the regulator device tree node.
|
||||
|
||||
Optional Properties:
|
||||
- ti,wakeup : To enable the wakeup comparator in probe
|
||||
- ti,enable-id-detection: Perform ID detection.
|
||||
- ti,enable-vbus-detection: Perform VBUS detection.
|
||||
|
||||
palmas-usb {
|
||||
compatible = "ti,twl6035-usb", "ti,palmas-usb";
|
||||
vbus-supply = <&smps10_reg>;
|
||||
ti,wakeup;
|
||||
};
|
|
@ -3,10 +3,17 @@ Microchip MCP2308/MCP23S08/MCP23017/MCP23S17 driver for
|
|||
|
||||
Required properties:
|
||||
- compatible : Should be
|
||||
- "mcp,mcp23s08" for 8 GPIO SPI version
|
||||
- "mcp,mcp23s17" for 16 GPIO SPI version
|
||||
- "mcp,mcp23008" for 8 GPIO I2C version or
|
||||
- "mcp,mcp23017" for 16 GPIO I2C version of the chip
|
||||
- "mcp,mcp23s08" (DEPRECATED) for 8 GPIO SPI version
|
||||
- "mcp,mcp23s17" (DEPRECATED) for 16 GPIO SPI version
|
||||
- "mcp,mcp23008" (DEPRECATED) for 8 GPIO I2C version or
|
||||
- "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.
|
||||
- first cell is the pin number
|
||||
- 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
|
||||
connected to. The driver and the SPI variant of the chip support
|
||||
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):
|
||||
- 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
|
||||
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
|
||||
|
@ -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
|
||||
possible to mix mcp23s08 and mcp23s17 on the same chipselect. Set at
|
||||
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
|
||||
|
||||
Example I2C:
|
||||
gpiom1: gpio@20 {
|
||||
compatible = "mcp,mcp23017";
|
||||
compatible = "microchip,mcp23017";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x20>;
|
||||
|
@ -38,7 +48,7 @@ gpiom1: gpio@20 {
|
|||
|
||||
Example SPI:
|
||||
gpiom1: gpio@0 {
|
||||
compatible = "mcp,mcp23s17";
|
||||
compatible = "microchip,mcp23s17";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
spi-present-mask = <0x01>;
|
||||
|
|
|
@ -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>;
|
||||
};
|
||||
:::::::::::
|
||||
};
|
|
@ -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>;
|
||||
};
|
|
@ -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;
|
||||
};
|
||||
|
||||
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
|
||||
subsystem, in the sense that the pins can be used by other functions
|
||||
together with optional gpio feature.
|
||||
Some or all of the GPIOs provided by a GPIO controller may be routed to pins
|
||||
on the package via a pin controller. This allows muxing those pins between
|
||||
GPIO and other functions.
|
||||
|
||||
While the pin allocation is totally managed by the pin ctrl subsystem,
|
||||
gpio (under gpiolib) is still maintained by gpio drivers. It may happen
|
||||
that different pin ranges in a SoC is managed by different gpio drivers.
|
||||
It is useful to represent which GPIOs correspond to which pins on which pin
|
||||
controllers. The gpio-ranges property described below represents this, and
|
||||
contains information structures as follows:
|
||||
|
||||
This makes it logical to let gpio drivers announce their pin ranges to
|
||||
the pin ctrl subsystem and call 'pinctrl_request_gpio' in order to
|
||||
request the corresponding pin before any gpio usage.
|
||||
gpio-range-list ::= <single-gpio-range> [gpio-range-list]
|
||||
single-gpio-range ::=
|
||||
<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
|
||||
announce the pinrange to the pin ctrl subsystem. For example,
|
||||
The "pin controller node" mentioned above must conform to the bindings
|
||||
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 {
|
||||
#gpio-cells = <2>;
|
||||
|
@ -99,16 +112,8 @@ announce the pinrange to the pin ctrl subsystem. For example,
|
|||
reg = <0x1460 0x18>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
where,
|
||||
&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.
|
||||
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
|
||||
pins 50..59.
|
||||
|
|
|
@ -10,8 +10,9 @@ Required properties:
|
|||
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,
|
||||
gpio_mux.
|
||||
- interrupt-name : Should be the name of irq resource. Each interrupt
|
||||
binds its interrupt-name.
|
||||
- interrupt-names : Should be the names of irq resources. Each interrupt
|
||||
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-cells: Specifies the number of cells needed to encode an
|
||||
interrupt source.
|
||||
|
@ -24,7 +25,7 @@ Example:
|
|||
compatible = "marvell,mmp-gpio";
|
||||
reg = <0xd4019000 0x1000>;
|
||||
interrupts = <49>;
|
||||
interrupt-name = "gpio_mux";
|
||||
interrupt-names = "gpio_mux";
|
||||
gpio-controller;
|
||||
#gpio-cells = <1>;
|
||||
interrupt-controller;
|
||||
|
|
|
@ -23,6 +23,10 @@ Required Properties:
|
|||
Please refer to gpio.txt in this directory for details of gpio-ranges property
|
||||
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
|
||||
|
||||
gpio0: gpio@ffc40000 {
|
||||
|
@ -33,6 +37,8 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes
|
|||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pfc 0 0 32>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
...
|
||||
gpio6: gpio@ffc46000 {
|
||||
|
@ -43,4 +49,6 @@ Example: R8A7779 (R-Car H1) GPIO controller nodes
|
|||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pfc 0 192 9>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
};
|
|
@ -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
|
||||
|
||||
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
|
||||
- interrupts : Should contain I2C/HS-I2C interrupt
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ Required properties :
|
|||
|
||||
- reg : Offset and length of the register set for the device
|
||||
- compatible : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c"
|
||||
or "marvell,mv78230-i2c"
|
||||
- interrupts : The interrupt number
|
||||
|
||||
Optional properties :
|
||||
|
@ -20,3 +21,12 @@ Examples:
|
|||
interrupts = <29>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
For the Armada XP:
|
||||
|
||||
i2c@11000 {
|
||||
compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
|
||||
reg = <0x11000 0x100>;
|
||||
interrupts = <29>;
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
|
|
@ -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>;
|
||||
};
|
|
@ -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>;
|
||||
};
|
|
@ -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
|
||||
- interrupts: touch controller interrupt
|
||||
- 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:
|
||||
|
||||
|
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
||||
};
|
|
@ -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>;
|
||||
};
|
||||
...
|
||||
};
|
|
@ -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
|
||||
(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-v7" for MFC v7 present in Exynos5420 SoC
|
||||
|
||||
- reg : Physical base address of the IP registers and length of memory
|
||||
mapped region.
|
||||
|
||||
- interrupts : MFC interrupt number to the CPU.
|
||||
- clocks : from common clock binding: handle to mfc clocks.
|
||||
- clock-names : from common clock binding: must contain "sclk_mfc" and "mfc",
|
||||
corresponding to entries in the clocks property.
|
||||
- clocks : from common clock binding: handle to mfc clock.
|
||||
- clock-names : from common clock binding: must contain "mfc",
|
||||
corresponding to entry in the clocks property.
|
||||
|
||||
- samsung,mfc-r : Base address of the first memory bank used by MFC
|
||||
for DMA contiguous memory allocation and its size.
|
||||
|
@ -37,8 +38,8 @@ mfc: codec@13400000 {
|
|||
reg = <0x13400000 0x10000>;
|
||||
interrupts = <0 94 0>;
|
||||
samsung,power-domain = <&pd_mfc>;
|
||||
clocks = <&clock 170>, <&clock 273>;
|
||||
clock-names = "sclk_mfc", "mfc";
|
||||
clocks = <&clock 273>;
|
||||
clock-names = "mfc";
|
||||
};
|
||||
|
||||
Board specific DT entry:
|
||||
|
|
|
@ -88,6 +88,8 @@ Optional endpoint properties
|
|||
- 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
|
||||
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
|
||||
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
|
||||
|
|
|
@ -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.
|
||||
|
||||
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.
|
||||
Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
|
||||
the top-level driver.
|
||||
|
|
|
@ -7,9 +7,30 @@ Required properties:
|
|||
- reg: Should contain SSC registers location and length
|
||||
- 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 {
|
||||
compatible = "atmel,at91rm9200-ssc";
|
||||
reg = <0xfffbc000 0x4000>;
|
||||
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.
|
||||
|
||||
Required properties:
|
||||
- compatible : "bcm,kona-smc"
|
||||
- compatible : "brcm,kona-smc"
|
||||
- DEPRECATED: compatible : "bcm,kona-smc"
|
||||
- reg : Location and size of bounce buffer
|
||||
|
||||
Example:
|
||||
smc@0x3404c000 {
|
||||
compatible = "bcm,bcm11351-smc", "bcm,kona-smc";
|
||||
compatible = "brcm,bcm11351-smc", "brcm,kona-smc";
|
||||
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
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "bcm,kona-sdhci"
|
||||
- compatible : Should be "brcm,kona-sdhci"
|
||||
- DEPRECATED: compatible : Should be "bcm,kona-sdhci"
|
||||
|
||||
Example:
|
||||
|
||||
sdio2: sdio@0x3f1a0000 {
|
||||
compatible = "bcm,kona-sdhci";
|
||||
compatible = "brcm,kona-sdhci";
|
||||
reg = <0x3f1a0000 0x10000>;
|
||||
interrupts = <0x0 74 0x4>;
|
||||
};
|
|
@ -8,7 +8,7 @@ Required properties:
|
|||
Example:
|
||||
|
||||
can0: can@f000c000 {
|
||||
compatbile = "atmel,at91sam9x5-can";
|
||||
compatible = "atmel,at91sam9x5-can";
|
||||
reg = <0xf000c000 0x300>;
|
||||
interrupts = <40 4 5>
|
||||
};
|
||||
|
|
|
@ -18,6 +18,7 @@ Required properties:
|
|||
- interrupt-map-mask and interrupt-map: standard PCI properties
|
||||
to define the mapping of the PCIe interface to interrupt
|
||||
numbers.
|
||||
- num-lanes: number of lanes to use
|
||||
- reset-gpio: gpio pin number of power good signal
|
||||
|
||||
Example:
|
||||
|
@ -41,6 +42,7 @@ SoC specific DT Entry:
|
|||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0x0 0 &gic 53>;
|
||||
num-lanes = <4>;
|
||||
};
|
||||
|
||||
pcie@2a0000 {
|
||||
|
@ -60,6 +62,7 @@ SoC specific DT Entry:
|
|||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0x0 0 &gic 56>;
|
||||
num-lanes = <4>;
|
||||
};
|
||||
|
||||
Board specific DT Entry:
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
* Marvell EBU PCIe interfaces
|
||||
|
||||
Mandatory properties:
|
||||
|
||||
- compatible: one of the following values:
|
||||
marvell,armada-370-pcie
|
||||
marvell,armada-xp-pcie
|
||||
|
@ -10,11 +11,49 @@ Mandatory properties:
|
|||
- #interrupt-cells, set to <1>
|
||||
- bus-range: PCI bus numbers covered
|
||||
- device_type, set to "pci"
|
||||
- ranges: ranges for the PCI memory and I/O regions, as well as the
|
||||
MMIO registers to control the PCIe interfaces.
|
||||
- ranges: ranges describing the MMIO registers to control the PCIe
|
||||
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:
|
||||
|
||||
- reg: used only for interrupt mapping, so only the first four bytes
|
||||
are used to refer to the correct bus number and device number.
|
||||
- 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>
|
||||
- #size-cells, set to <2>
|
||||
- #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
|
||||
define the mapping of the PCIe interface to interrupt numbers.
|
||||
|
||||
|
@ -47,27 +87,50 @@ pcie-controller {
|
|||
|
||||
bus-range = <0x00 0xff>;
|
||||
|
||||
ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */
|
||||
0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */
|
||||
0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */
|
||||
0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */
|
||||
0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */
|
||||
0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */
|
||||
0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */
|
||||
0x82000000 0 0xd0084000 0xd0084000 0 0x00002000 /* Port 1.1 registers */
|
||||
0x82000000 0 0xd0088000 0xd0088000 0 0x00002000 /* Port 1.2 registers */
|
||||
0x82000000 0 0xd008c000 0xd008c000 0 0x00002000 /* Port 1.3 registers */
|
||||
0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
|
||||
0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
|
||||
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 */
|
||||
0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000 /* Port 1.0 registers */
|
||||
0x82000000 0 0x82000 MBUS_ID(0xf0, 0x01) 0x82000 0 0x00002000 /* Port 3.0 registers */
|
||||
0x82000000 0 0x84000 MBUS_ID(0xf0, 0x01) 0x84000 0 0x00002000 /* Port 1.1 registers */
|
||||
0x82000000 0 0x88000 MBUS_ID(0xf0, 0x01) 0x88000 0 0x00002000 /* Port 1.2 registers */
|
||||
0x82000000 0 0x8c000 MBUS_ID(0xf0, 0x01) 0x8c000 0 0x00002000 /* Port 1.3 registers */
|
||||
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 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>;
|
||||
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
|
||||
reg = <0x0800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 58>;
|
||||
marvell,pcie-port = <0>;
|
||||
|
@ -78,12 +141,13 @@ pcie-controller {
|
|||
|
||||
pcie@2,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82001000 0 0xd0044000 0 0x2000>;
|
||||
assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
|
||||
reg = <0x1000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 59>;
|
||||
marvell,pcie-port = <0>;
|
||||
|
@ -94,12 +158,13 @@ pcie-controller {
|
|||
|
||||
pcie@3,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82001800 0 0xd0048000 0 0x2000>;
|
||||
assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
|
||||
reg = <0x1800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 60>;
|
||||
marvell,pcie-port = <0>;
|
||||
|
@ -110,12 +175,13 @@ pcie-controller {
|
|||
|
||||
pcie@4,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82002000 0 0xd004c000 0 0x2000>;
|
||||
assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
|
||||
reg = <0x2000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 61>;
|
||||
marvell,pcie-port = <0>;
|
||||
|
@ -126,12 +192,13 @@ pcie-controller {
|
|||
|
||||
pcie@5,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>;
|
||||
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
|
||||
reg = <0x2800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 62>;
|
||||
marvell,pcie-port = <1>;
|
||||
|
@ -142,12 +209,13 @@ pcie-controller {
|
|||
|
||||
pcie@6,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82003000 0 0xd0084000 0 0x2000>;
|
||||
assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
|
||||
reg = <0x3000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 63>;
|
||||
marvell,pcie-port = <1>;
|
||||
|
@ -158,12 +226,13 @@ pcie-controller {
|
|||
|
||||
pcie@7,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82003800 0 0xd0088000 0 0x2000>;
|
||||
assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
|
||||
reg = <0x3800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 64>;
|
||||
marvell,pcie-port = <1>;
|
||||
|
@ -174,12 +243,13 @@ pcie-controller {
|
|||
|
||||
pcie@8,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82004000 0 0xd008c000 0 0x2000>;
|
||||
assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
|
||||
reg = <0x4000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 65>;
|
||||
marvell,pcie-port = <1>;
|
||||
|
@ -187,14 +257,16 @@ pcie-controller {
|
|||
clocks = <&gateclk 12>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcie@9,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82004800 0 0xd0042000 0 0x2000>;
|
||||
assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
|
||||
reg = <0x4800 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 99>;
|
||||
marvell,pcie-port = <2>;
|
||||
|
@ -205,12 +277,13 @@ pcie-controller {
|
|||
|
||||
pcie@10,0 {
|
||||
device_type = "pci";
|
||||
assigned-addresses = <0x82005000 0 0xd0082000 0 0x2000>;
|
||||
assigned-addresses = <0x82005000 0 0x82000 0 0x2000>;
|
||||
reg = <0x5000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
#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 = <0 0 0 0 &mpic 103>;
|
||||
marvell,pcie-port = <3>;
|
||||
|
|
|
@ -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 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)
|
||||
|
||||
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,
|
||||
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:
|
||||
|
||||
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_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:
|
||||
|
||||
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,
|
||||
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:
|
||||
|
||||
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
|
||||
controller device.
|
||||
|
||||
== Using generic pinconfig options ==
|
||||
== Generic pin configuration node content ==
|
||||
|
||||
Generic pinconfig parameters can be used by defining a separate node containing
|
||||
the applicable parameters (and optional values), like:
|
||||
Many data items that are represented in a pin configuration node are common
|
||||
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 {
|
||||
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:
|
||||
Supported generic properties 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-high-impedance - high impedance mode ("third-state", "floating")
|
||||
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-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
|
||||
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
|
||||
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
|
||||
<include/linux/pinctrl/pinconfig-generic.h>
|
||||
|
|
|
@ -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,s3c2450-pinctrl": for S3C2450-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,exynos4x12-pinctrl": for Exynos4x12 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
|
||||
found on Samsung S3C64xx SoCs,
|
||||
- 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
|
||||
wakeup interrupts are forwarded to.
|
||||
- interrupts: interrupt used by multiplexed wakeup interrupts.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
ST Ericsson Nomadik pinmux controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "stericsson,nmk-pinctrl", "stericsson,nmk-pinctrl-db8540",
|
||||
"stericsson,nmk-pinctrl-stn8815"
|
||||
- compatible: "stericsson,db8500-pinctrl", "stericsson,db8540-pinctrl",
|
||||
"stericsson,stn8815-pinctrl"
|
||||
- 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
|
||||
|
@ -68,7 +68,7 @@ Optional subnode-properties:
|
|||
Example board file extract:
|
||||
|
||||
pinctrl@80157000 {
|
||||
compatible = "stericsson,nmk-pinctrl";
|
||||
compatible = "stericsson,db8500-pinctrl";
|
||||
reg = <0x80157000 0x2000>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -1,21 +1,20 @@
|
|||
* Freescale MSI interrupt controller
|
||||
|
||||
Required properties:
|
||||
- compatible : compatible list, contains 2 entries,
|
||||
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
|
||||
the parent type.
|
||||
- compatible : compatible list, may contain one or two entries
|
||||
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" or
|
||||
"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
|
||||
the address and the length of the shared message interrupt register set.
|
||||
The second region should contain the address of aliased MSIIR register for
|
||||
platforms that have such an alias.
|
||||
|
||||
- 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).
|
||||
The second region should contain the address of aliased MSIIR or MSIIR1
|
||||
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.
|
||||
|
||||
- interrupts : each one of the interrupts here is one entry per 32 MSIs,
|
||||
and routed to the host interrupt controller. the interrupts should
|
||||
|
@ -28,6 +27,14 @@ Required properties:
|
|||
to MPIC.
|
||||
|
||||
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
|
||||
is used for MSI messaging. The address of MSIIR in PCI address space is
|
||||
the MSI message address.
|
||||
|
@ -54,6 +61,28 @@ Example:
|
|||
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
|
||||
-------------------------------------------
|
||||
Normally, PCI devices have access to all of CCSR via an ATMU mapping. The
|
||||
|
|
|
@ -2,11 +2,9 @@ Atmel TCB PWM controller
|
|||
|
||||
Required properties:
|
||||
- compatible: should be "atmel,tcb-pwm"
|
||||
- #pwm-cells: Should be 3. The first cell specifies the per-chip index
|
||||
of the PWM to use, the second cell is the period in nanoseconds and
|
||||
bit 0 in the third cell is used to encode the polarity of PWM output.
|
||||
Set bit 0 of the third cell in PWM specifier to 1 for inverse polarity &
|
||||
set to 0 for normal polarity.
|
||||
- #pwm-cells: should be 3. See pwm.txt in this directory for a description of
|
||||
the cells format. The only third cell flag supported by this binding is
|
||||
PWM_POLARITY_INVERTED.
|
||||
- tc-block: The Timer Counter block to use as a PWM chip.
|
||||
|
||||
Example:
|
||||
|
|
|
@ -3,8 +3,8 @@ Freescale i.MX PWM controller
|
|||
Required properties:
|
||||
- compatible: should be "fsl,<soc>-pwm"
|
||||
- reg: physical base address and length of the controller's registers
|
||||
- #pwm-cells: should be 2. The first cell specifies the per-chip index
|
||||
of the PWM to use and the second cell is the period in nanoseconds.
|
||||
- #pwm-cells: should be 2. See pwm.txt in this directory for a description of
|
||||
the cells format.
|
||||
- interrupts: The interrupt for the pwm controller
|
||||
|
||||
Example:
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue