Merge ca661c5e1d ("Merge tag 'selinux-pr-20240312' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux") into android-mainline
Steps on the way to v6.9-rc1 Signed-off-by: Lee Jones <joneslee@google.com> Change-Id: I78ff7fa198626191f0d75267bd57d7b21323b961
This commit is contained in:
commit
a83342f977
3117 files changed
+148599
-50526
No files matched your search
@@ -1,4 +1,5 @@
|
||||
Alan Cox <alan@lxorguk.ukuu.org.uk>
|
||||
Alan Cox <root@hraefn.swansea.linux.org.uk>
|
||||
Christoph Hellwig <hch@lst.de>
|
||||
Jeff Kirsher <jeffrey.t.kirsher@intel.com>
|
||||
Marc Gonzalez <marc.w.gonzalez@free.fr>
|
||||
@@ -573,6 +573,7 @@ Simon Kelley <simon@thekelleys.org.uk>
|
||||
Sricharan Ramabadhran <quic_srichara@quicinc.com> <sricharan@codeaurora.org>
|
||||
Srinivas Ramana <quic_sramana@quicinc.com> <sramana@codeaurora.org>
|
||||
Sriram R <quic_srirrama@quicinc.com> <srirrama@codeaurora.org>
|
||||
Stefan Wahren <wahrenst@gmx.net> <stefan.wahren@i2se.com>
|
||||
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
||||
Stephen Hemminger <stephen@networkplumber.org> <shemminger@linux-foundation.org>
|
||||
Stephen Hemminger <stephen@networkplumber.org> <shemminger@osdl.org>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
What: /sys/bus/vdpa/drivers_autoprobe
|
||||
Date: March 2020
|
||||
Contact: virtualization@lists.linux-foundation.org
|
||||
Contact: virtualization@lists.linux.dev
|
||||
Description:
|
||||
This file determines whether new devices are immediately bound
|
||||
to a driver after the creation. It initially contains 1, which
|
||||
@@ -12,7 +12,7 @@ Description:
|
||||
|
||||
What: /sys/bus/vdpa/driver_probe
|
||||
Date: March 2020
|
||||
Contact: virtualization@lists.linux-foundation.org
|
||||
Contact: virtualization@lists.linux.dev
|
||||
Description:
|
||||
Writing a device name to this file will cause the kernel binds
|
||||
devices to a compatible driver.
|
||||
@@ -22,7 +22,7 @@ Description:
|
||||
|
||||
What: /sys/bus/vdpa/drivers/.../bind
|
||||
Date: March 2020
|
||||
Contact: virtualization@lists.linux-foundation.org
|
||||
Contact: virtualization@lists.linux.dev
|
||||
Description:
|
||||
Writing a device name to this file will cause the driver to
|
||||
attempt to bind to the device. This is useful for overriding
|
||||
@@ -30,7 +30,7 @@ Description:
|
||||
|
||||
What: /sys/bus/vdpa/drivers/.../unbind
|
||||
Date: March 2020
|
||||
Contact: virtualization@lists.linux-foundation.org
|
||||
Contact: virtualization@lists.linux.dev
|
||||
Description:
|
||||
Writing a device name to this file will cause the driver to
|
||||
attempt to unbind from the device. This may be useful when
|
||||
@@ -38,7 +38,7 @@ Description:
|
||||
|
||||
What: /sys/bus/vdpa/devices/.../driver_override
|
||||
Date: November 2021
|
||||
Contact: virtualization@lists.linux-foundation.org
|
||||
Contact: virtualization@lists.linux.dev
|
||||
Description:
|
||||
This file allows the driver for a device to be specified.
|
||||
When specified, only a driver with a name matching the value
|
||||
|
||||
@@ -96,3 +96,26 @@ Description:
|
||||
Indicates the absolute minimum limit of bytes allowed to be
|
||||
queued on this network device transmit queue. Default value is
|
||||
0.
|
||||
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/stall_thrs
|
||||
Date: Jan 2024
|
||||
KernelVersion: 6.9
|
||||
Contact: netdev@vger.kernel.org
|
||||
Description:
|
||||
Tx completion stall detection threshold in ms. Kernel will
|
||||
guarantee to detect all stalls longer than this threshold but
|
||||
may also detect stalls longer than half of the threshold.
|
||||
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/stall_cnt
|
||||
Date: Jan 2024
|
||||
KernelVersion: 6.9
|
||||
Contact: netdev@vger.kernel.org
|
||||
Description:
|
||||
Number of detected Tx completion stalls.
|
||||
|
||||
What: /sys/class/net/<iface>/queues/tx-<queue>/byte_queue_limits/stall_max
|
||||
Date: Jan 2024
|
||||
KernelVersion: 6.9
|
||||
Contact: netdev@vger.kernel.org
|
||||
Description:
|
||||
Longest detected Tx completion stall. Write 0 to clear.
|
||||
@@ -111,7 +111,9 @@ $(YNL_INDEX): $(YNL_RST_FILES)
|
||||
$(YNL_RST_DIR)/%.rst: $(YNL_YAML_DIR)/%.yaml $(YNL_TOOL)
|
||||
$(Q)$(YNL_TOOL) -i $< -o $@
|
||||
|
||||
htmldocs: $(YNL_INDEX)
|
||||
htmldocs texinfodocs latexdocs epubdocs xmldocs: $(YNL_INDEX)
|
||||
|
||||
htmldocs:
|
||||
@$(srctree)/scripts/sphinx-pre-install --version-check
|
||||
@+$(foreach var,$(SPHINXDIRS),$(call loop_cmd,sphinx,html,$(var),,$(var)))
|
||||
|
||||
@@ -176,6 +178,7 @@ refcheckdocs:
|
||||
$(Q)cd $(srctree);scripts/documentation-file-ref-check
|
||||
|
||||
cleandocs:
|
||||
$(Q)rm -f $(YNL_INDEX) $(YNL_RST_FILES)
|
||||
$(Q)rm -rf $(BUILDDIR)
|
||||
$(Q)$(MAKE) BUILDDIR=$(abspath $(BUILDDIR)) $(build)=Documentation/userspace-api/media clean
|
||||
|
||||
|
||||
@@ -318,7 +318,7 @@ Suppose that a previous kvm.sh run left its output in this directory::
|
||||
|
||||
tools/testing/selftests/rcutorture/res/2022.11.03-11.26.28
|
||||
|
||||
Then this run can be re-run without rebuilding as follow:
|
||||
Then this run can be re-run without rebuilding as follow::
|
||||
|
||||
kvm-again.sh tools/testing/selftests/rcutorture/res/2022.11.03-11.26.28
|
||||
|
||||
|
||||
@@ -262,9 +262,11 @@ Compiling the kernel
|
||||
- Make sure you have at least gcc 5.1 available.
|
||||
For more information, refer to :ref:`Documentation/process/changes.rst <changes>`.
|
||||
|
||||
- Do a ``make`` to create a compressed kernel image. It is also
|
||||
possible to do ``make install`` if you have lilo installed to suit the
|
||||
kernel makefiles, but you may want to check your particular lilo setup first.
|
||||
- Do a ``make`` to create a compressed kernel image. It is also possible to do
|
||||
``make install`` if you have lilo installed or if your distribution has an
|
||||
install script recognised by the kernel's installer. Most popular
|
||||
distributions will have a recognized install script. You may want to
|
||||
check your distribution's setup first.
|
||||
|
||||
To do the actual install, you have to be root, but none of the normal
|
||||
build should require that. Don't take the name of root in vain.
|
||||
@@ -301,32 +303,51 @@ Compiling the kernel
|
||||
image (e.g. .../linux/arch/x86/boot/bzImage after compilation)
|
||||
to the place where your regular bootable kernel is found.
|
||||
|
||||
- Booting a kernel directly from a floppy without the assistance of a
|
||||
bootloader such as LILO, is no longer supported.
|
||||
- Booting a kernel directly from a storage device without the assistance
|
||||
of a bootloader such as LILO or GRUB, is no longer supported in BIOS
|
||||
(non-EFI systems). On UEFI/EFI systems, however, you can use EFISTUB
|
||||
which allows the motherboard to boot directly to the kernel.
|
||||
On modern workstations and desktops, it's generally recommended to use a
|
||||
bootloader as difficulties can arise with multiple kernels and secure boot.
|
||||
For more details on EFISTUB,
|
||||
see "Documentation/admin-guide/efi-stub.rst".
|
||||
|
||||
If you boot Linux from the hard drive, chances are you use LILO, which
|
||||
uses the kernel image as specified in the file /etc/lilo.conf. The
|
||||
kernel image file is usually /vmlinuz, /boot/vmlinuz, /bzImage or
|
||||
/boot/bzImage. To use the new kernel, save a copy of the old image
|
||||
and copy the new image over the old one. Then, you MUST RERUN LILO
|
||||
to update the loading map! If you don't, you won't be able to boot
|
||||
the new kernel image.
|
||||
- It's important to note that as of 2016 LILO (LInux LOader) is no longer in
|
||||
active development, though as it was extremely popular, it often comes up
|
||||
in documentation. Popular alternatives include GRUB2, rEFInd, Syslinux,
|
||||
systemd-boot, or EFISTUB. For various reasons, it's not recommended to use
|
||||
software that's no longer in active development.
|
||||
|
||||
Reinstalling LILO is usually a matter of running /sbin/lilo.
|
||||
You may wish to edit /etc/lilo.conf to specify an entry for your
|
||||
old kernel image (say, /vmlinux.old) in case the new one does not
|
||||
work. See the LILO docs for more information.
|
||||
- Chances are your distribution includes an install script and running
|
||||
``make install`` will be all that's needed. Should that not be the case
|
||||
you'll have to identify your bootloader and reference its documentation or
|
||||
configure your EFI.
|
||||
|
||||
After reinstalling LILO, you should be all set. Shutdown the system,
|
||||
Legacy LILO Instructions
|
||||
------------------------
|
||||
|
||||
|
||||
- If you use LILO the kernel images are specified in the file /etc/lilo.conf.
|
||||
The kernel image file is usually /vmlinuz, /boot/vmlinuz, /bzImage or
|
||||
/boot/bzImage. To use the new kernel, save a copy of the old image and copy
|
||||
the new image over the old one. Then, you MUST RERUN LILO to update the
|
||||
loading map! If you don't, you won't be able to boot the new kernel image.
|
||||
|
||||
- Reinstalling LILO is usually a matter of running /sbin/lilo. You may wish
|
||||
to edit /etc/lilo.conf to specify an entry for your old kernel image
|
||||
(say, /vmlinux.old) in case the new one does not work. See the LILO docs
|
||||
for more information.
|
||||
|
||||
- After reinstalling LILO, you should be all set. Shutdown the system,
|
||||
reboot, and enjoy!
|
||||
|
||||
If you ever need to change the default root device, video mode,
|
||||
etc. in the kernel image, use your bootloader's boot options
|
||||
where appropriate. No need to recompile the kernel to change
|
||||
these parameters.
|
||||
- If you ever need to change the default root device, video mode, etc. in the
|
||||
kernel image, use your bootloader's boot options where appropriate. No need
|
||||
to recompile the kernel to change these parameters.
|
||||
|
||||
- Reboot with the new kernel and enjoy.
|
||||
|
||||
|
||||
If something goes wrong
|
||||
-----------------------
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
=================================================
|
||||
The Linux kernel user's and administrator's guide
|
||||
=================================================
|
||||
|
||||
@@ -37,6 +38,7 @@ problems and bugs in particular.
|
||||
reporting-issues
|
||||
reporting-regressions
|
||||
quickly-build-trimmed-linux
|
||||
verify-bugs-and-bisect-regressions
|
||||
bug-hunting
|
||||
bug-bisect
|
||||
tainted-kernels
|
||||
|
||||
@@ -4672,6 +4672,11 @@
|
||||
may be specified.
|
||||
Format: <port>,<port>....
|
||||
|
||||
possible_cpus= [SMP,S390,X86]
|
||||
Format: <unsigned int>
|
||||
Set the number of possible CPUs, overriding the
|
||||
regular discovery mechanisms (such as ACPI/FW, etc).
|
||||
|
||||
powersave=off [PPC] This option disables power saving features.
|
||||
It specifically disables cpuidle and sets the
|
||||
platform machine description specific power_save
|
||||
|
||||
@@ -206,6 +206,11 @@ Will increase power usage.
|
||||
|
||||
Default: 0 (off)
|
||||
|
||||
mem_pcpu_rsv
|
||||
------------
|
||||
|
||||
Per-cpu reserved forward alloc cache size in page units. Default 1MB per CPU.
|
||||
|
||||
rmem_default
|
||||
------------
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ name of the command ('Comm:') that triggered the event::
|
||||
|
||||
You'll find a 'Not tainted: ' there if the kernel was not tainted at the
|
||||
time of the event; if it was, then it will print 'Tainted: ' and characters
|
||||
either letters or blanks. In above example it looks like this::
|
||||
either letters or blanks. In the example above it looks like this::
|
||||
|
||||
Tainted: P W O
|
||||
|
||||
@@ -52,7 +52,7 @@ At runtime, you can query the tainted state by reading
|
||||
tainted; any other number indicates the reasons why it is. The easiest way to
|
||||
decode that number is the script ``tools/debugging/kernel-chktaint``, which your
|
||||
distribution might ship as part of a package called ``linux-tools`` or
|
||||
``kernel-tools``; if it doesn't you can download the script from
|
||||
``kernel-tools``; if it doesn't, you can download the script from
|
||||
`git.kernel.org <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint>`_
|
||||
and execute it with ``sh kernel-chktaint``, which would print something like
|
||||
this on the machine that had the statements in the logs that were quoted earlier::
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -177,10 +177,10 @@ In addition to kfuncs' arguments, verifier may need more information about the
|
||||
type of kfunc(s) being registered with the BPF subsystem. To do so, we define
|
||||
flags on a set of kfuncs as follows::
|
||||
|
||||
BTF_SET8_START(bpf_task_set)
|
||||
BTF_KFUNCS_START(bpf_task_set)
|
||||
BTF_ID_FLAGS(func, bpf_get_task_pid, KF_ACQUIRE | KF_RET_NULL)
|
||||
BTF_ID_FLAGS(func, bpf_put_pid, KF_RELEASE)
|
||||
BTF_SET8_END(bpf_task_set)
|
||||
BTF_KFUNCS_END(bpf_task_set)
|
||||
|
||||
This set encodes the BTF ID of each kfunc listed above, and encodes the flags
|
||||
along with it. Ofcourse, it is also allowed to specify no flags.
|
||||
@@ -347,10 +347,10 @@ Once the kfunc is prepared for use, the final step to making it visible is
|
||||
registering it with the BPF subsystem. Registration is done per BPF program
|
||||
type. An example is shown below::
|
||||
|
||||
BTF_SET8_START(bpf_task_set)
|
||||
BTF_KFUNCS_START(bpf_task_set)
|
||||
BTF_ID_FLAGS(func, bpf_get_task_pid, KF_ACQUIRE | KF_RET_NULL)
|
||||
BTF_ID_FLAGS(func, bpf_put_pid, KF_RELEASE)
|
||||
BTF_SET8_END(bpf_task_set)
|
||||
BTF_KFUNCS_END(bpf_task_set)
|
||||
|
||||
static const struct btf_kfunc_id_set bpf_task_kfunc_set = {
|
||||
.owner = THIS_MODULE,
|
||||
|
||||
@@ -17,7 +17,7 @@ significant byte.
|
||||
|
||||
LPM tries may be created with a maximum prefix length that is a multiple
|
||||
of 8, in the range from 8 to 2048. The key used for lookup and update
|
||||
operations is a ``struct bpf_lpm_trie_key``, extended by
|
||||
operations is a ``struct bpf_lpm_trie_key_u8``, extended by
|
||||
``max_prefixlen/8`` bytes.
|
||||
|
||||
- For IPv4 addresses the data length is 4 bytes
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
.. contents::
|
||||
.. sectnum::
|
||||
|
||||
=======================================
|
||||
BPF Instruction Set Specification, v1.0
|
||||
=======================================
|
||||
======================================
|
||||
BPF Instruction Set Architecture (ISA)
|
||||
======================================
|
||||
|
||||
This document specifies version 1.0 of the BPF instruction set.
|
||||
This document specifies the BPF instruction set architecture (ISA).
|
||||
|
||||
Documentation conventions
|
||||
=========================
|
||||
@@ -24,22 +24,22 @@ a type's signedness (`S`) and bit width (`N`), respectively.
|
||||
.. table:: Meaning of signedness notation.
|
||||
|
||||
==== =========
|
||||
`S` Meaning
|
||||
S Meaning
|
||||
==== =========
|
||||
`u` unsigned
|
||||
`s` signed
|
||||
u unsigned
|
||||
s signed
|
||||
==== =========
|
||||
|
||||
.. table:: Meaning of bit-width notation.
|
||||
|
||||
===== =========
|
||||
`N` Bit width
|
||||
N Bit width
|
||||
===== =========
|
||||
`8` 8 bits
|
||||
`16` 16 bits
|
||||
`32` 32 bits
|
||||
`64` 64 bits
|
||||
`128` 128 bits
|
||||
8 8 bits
|
||||
16 16 bits
|
||||
32 32 bits
|
||||
64 64 bits
|
||||
128 128 bits
|
||||
===== =========
|
||||
|
||||
For example, `u32` is a type whose valid values are all the 32-bit unsigned
|
||||
@@ -48,31 +48,31 @@ numbers.
|
||||
|
||||
Functions
|
||||
---------
|
||||
* `htobe16`: Takes an unsigned 16-bit number in host-endian format and
|
||||
* htobe16: Takes an unsigned 16-bit number in host-endian format and
|
||||
returns the equivalent number as an unsigned 16-bit number in big-endian
|
||||
format.
|
||||
* `htobe32`: Takes an unsigned 32-bit number in host-endian format and
|
||||
* htobe32: Takes an unsigned 32-bit number in host-endian format and
|
||||
returns the equivalent number as an unsigned 32-bit number in big-endian
|
||||
format.
|
||||
* `htobe64`: Takes an unsigned 64-bit number in host-endian format and
|
||||
* htobe64: Takes an unsigned 64-bit number in host-endian format and
|
||||
returns the equivalent number as an unsigned 64-bit number in big-endian
|
||||
format.
|
||||
* `htole16`: Takes an unsigned 16-bit number in host-endian format and
|
||||
* htole16: Takes an unsigned 16-bit number in host-endian format and
|
||||
returns the equivalent number as an unsigned 16-bit number in little-endian
|
||||
format.
|
||||
* `htole32`: Takes an unsigned 32-bit number in host-endian format and
|
||||
* htole32: Takes an unsigned 32-bit number in host-endian format and
|
||||
returns the equivalent number as an unsigned 32-bit number in little-endian
|
||||
format.
|
||||
* `htole64`: Takes an unsigned 64-bit number in host-endian format and
|
||||
* htole64: Takes an unsigned 64-bit number in host-endian format and
|
||||
returns the equivalent number as an unsigned 64-bit number in little-endian
|
||||
format.
|
||||
* `bswap16`: Takes an unsigned 16-bit number in either big- or little-endian
|
||||
* bswap16: Takes an unsigned 16-bit number in either big- or little-endian
|
||||
format and returns the equivalent number with the same bit width but
|
||||
opposite endianness.
|
||||
* `bswap32`: Takes an unsigned 32-bit number in either big- or little-endian
|
||||
* bswap32: Takes an unsigned 32-bit number in either big- or little-endian
|
||||
format and returns the equivalent number with the same bit width but
|
||||
opposite endianness.
|
||||
* `bswap64`: Takes an unsigned 64-bit number in either big- or little-endian
|
||||
* bswap64: Takes an unsigned 64-bit number in either big- or little-endian
|
||||
format and returns the equivalent number with the same bit width but
|
||||
opposite endianness.
|
||||
|
||||
@@ -97,40 +97,101 @@ Definitions
|
||||
A: 10000110
|
||||
B: 11111111 10000110
|
||||
|
||||
Conformance groups
|
||||
------------------
|
||||
|
||||
An implementation does not need to support all instructions specified in this
|
||||
document (e.g., deprecated instructions). Instead, a number of conformance
|
||||
groups are specified. An implementation must support the base32 conformance
|
||||
group and may support additional conformance groups, where supporting a
|
||||
conformance group means it must support all instructions in that conformance
|
||||
group.
|
||||
|
||||
The use of named conformance groups enables interoperability between a runtime
|
||||
that executes instructions, and tools as such compilers that generate
|
||||
instructions for the runtime. Thus, capability discovery in terms of
|
||||
conformance groups might be done manually by users or automatically by tools.
|
||||
|
||||
Each conformance group has a short ASCII label (e.g., "base32") that
|
||||
corresponds to a set of instructions that are mandatory. That is, each
|
||||
instruction has one or more conformance groups of which it is a member.
|
||||
|
||||
This document defines the following conformance groups:
|
||||
|
||||
* base32: includes all instructions defined in this
|
||||
specification unless otherwise noted.
|
||||
* base64: includes base32, plus instructions explicitly noted
|
||||
as being in the base64 conformance group.
|
||||
* atomic32: includes 32-bit atomic operation instructions (see `Atomic operations`_).
|
||||
* atomic64: includes atomic32, plus 64-bit atomic operation instructions.
|
||||
* divmul32: includes 32-bit division, multiplication, and modulo instructions.
|
||||
* divmul64: includes divmul32, plus 64-bit division, multiplication,
|
||||
and modulo instructions.
|
||||
* packet: deprecated packet access instructions.
|
||||
|
||||
Instruction encoding
|
||||
====================
|
||||
|
||||
BPF has two instruction encodings:
|
||||
|
||||
* the basic instruction encoding, which uses 64 bits to encode an instruction
|
||||
* the wide instruction encoding, which appends a second 64-bit immediate (i.e.,
|
||||
constant) value after the basic instruction for a total of 128 bits.
|
||||
* the wide instruction encoding, which appends a second 64 bits
|
||||
after the basic instruction for a total of 128 bits.
|
||||
|
||||
The fields conforming an encoded basic instruction are stored in the
|
||||
following order::
|
||||
Basic instruction encoding
|
||||
--------------------------
|
||||
|
||||
opcode:8 src_reg:4 dst_reg:4 offset:16 imm:32 // In little-endian BPF.
|
||||
opcode:8 dst_reg:4 src_reg:4 offset:16 imm:32 // In big-endian BPF.
|
||||
A basic instruction is encoded as follows::
|
||||
|
||||
**imm**
|
||||
signed integer immediate value
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| opcode | regs | offset |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| imm |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
**opcode**
|
||||
operation to perform, encoded as follows::
|
||||
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|specific |class|
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|
||||
**specific**
|
||||
The format of these bits varies by instruction class
|
||||
|
||||
**class**
|
||||
The instruction class (see `Instruction classes`_)
|
||||
|
||||
**regs**
|
||||
The source and destination register numbers, encoded as follows
|
||||
on a little-endian host::
|
||||
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|src_reg|dst_reg|
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|
||||
and as follows on a big-endian host::
|
||||
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|dst_reg|src_reg|
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|
||||
**src_reg**
|
||||
the source register number (0-10), except where otherwise specified
|
||||
(`64-bit immediate instructions`_ reuse this field for other purposes)
|
||||
|
||||
**dst_reg**
|
||||
destination register number (0-10)
|
||||
|
||||
**offset**
|
||||
signed integer offset used with pointer arithmetic
|
||||
|
||||
**src_reg**
|
||||
the source register number (0-10), except where otherwise specified
|
||||
(`64-bit immediate instructions`_ reuse this field for other purposes)
|
||||
**imm**
|
||||
signed integer immediate value
|
||||
|
||||
**dst_reg**
|
||||
destination register number (0-10)
|
||||
|
||||
**opcode**
|
||||
operation to perform
|
||||
|
||||
Note that the contents of multi-byte fields ('imm' and 'offset') are
|
||||
stored using big-endian byte ordering in big-endian BPF and
|
||||
little-endian byte ordering in little-endian BPF.
|
||||
Note that the contents of multi-byte fields ('offset' and 'imm') are
|
||||
stored using big-endian byte ordering on big-endian hosts and
|
||||
little-endian byte ordering on little-endian hosts.
|
||||
|
||||
For example::
|
||||
|
||||
@@ -143,71 +204,83 @@ For example::
|
||||
Note that most instructions do not use all of the fields.
|
||||
Unused fields shall be cleared to zero.
|
||||
|
||||
As discussed below in `64-bit immediate instructions`_, a 64-bit immediate
|
||||
instruction uses a 64-bit immediate value that is constructed as follows.
|
||||
The 64 bits following the basic instruction contain a pseudo instruction
|
||||
using the same format but with opcode, dst_reg, src_reg, and offset all set to zero,
|
||||
and imm containing the high 32 bits of the immediate value.
|
||||
Wide instruction encoding
|
||||
--------------------------
|
||||
|
||||
Some instructions are defined to use the wide instruction encoding,
|
||||
which uses two 32-bit immediate values. The 64 bits following
|
||||
the basic instruction format contain a pseudo instruction
|
||||
with 'opcode', 'dst_reg', 'src_reg', and 'offset' all set to zero.
|
||||
|
||||
This is depicted in the following figure::
|
||||
|
||||
basic_instruction
|
||||
.-----------------------------.
|
||||
| |
|
||||
code:8 regs:8 offset:16 imm:32 unused:32 imm:32
|
||||
| |
|
||||
'--------------'
|
||||
pseudo instruction
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| opcode | regs | offset |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| imm |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| reserved |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| next_imm |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
Thus the 64-bit immediate value is constructed as follows:
|
||||
**opcode**
|
||||
operation to perform, encoded as explained above
|
||||
|
||||
imm64 = (next_imm << 32) | imm
|
||||
**regs**
|
||||
The source and destination register numbers, encoded as explained above
|
||||
|
||||
where 'next_imm' refers to the imm value of the pseudo instruction
|
||||
following the basic instruction. The unused bytes in the pseudo
|
||||
instruction are reserved and shall be cleared to zero.
|
||||
**offset**
|
||||
signed integer offset used with pointer arithmetic
|
||||
|
||||
**imm**
|
||||
signed integer immediate value
|
||||
|
||||
**reserved**
|
||||
unused, set to zero
|
||||
|
||||
**next_imm**
|
||||
second signed integer immediate value
|
||||
|
||||
Instruction classes
|
||||
-------------------
|
||||
|
||||
The three LSB bits of the 'opcode' field store the instruction class:
|
||||
The three least significant bits of the 'opcode' field store the instruction class:
|
||||
|
||||
========= ===== =============================== ===================================
|
||||
class value description reference
|
||||
========= ===== =============================== ===================================
|
||||
BPF_LD 0x00 non-standard load operations `Load and store instructions`_
|
||||
BPF_LDX 0x01 load into register operations `Load and store instructions`_
|
||||
BPF_ST 0x02 store from immediate operations `Load and store instructions`_
|
||||
BPF_STX 0x03 store from register operations `Load and store instructions`_
|
||||
BPF_ALU 0x04 32-bit arithmetic operations `Arithmetic and jump instructions`_
|
||||
BPF_JMP 0x05 64-bit jump operations `Arithmetic and jump instructions`_
|
||||
BPF_JMP32 0x06 32-bit jump operations `Arithmetic and jump instructions`_
|
||||
BPF_ALU64 0x07 64-bit arithmetic operations `Arithmetic and jump instructions`_
|
||||
========= ===== =============================== ===================================
|
||||
===== ===== =============================== ===================================
|
||||
class value description reference
|
||||
===== ===== =============================== ===================================
|
||||
LD 0x0 non-standard load operations `Load and store instructions`_
|
||||
LDX 0x1 load into register operations `Load and store instructions`_
|
||||
ST 0x2 store from immediate operations `Load and store instructions`_
|
||||
STX 0x3 store from register operations `Load and store instructions`_
|
||||
ALU 0x4 32-bit arithmetic operations `Arithmetic and jump instructions`_
|
||||
JMP 0x5 64-bit jump operations `Arithmetic and jump instructions`_
|
||||
JMP32 0x6 32-bit jump operations `Arithmetic and jump instructions`_
|
||||
ALU64 0x7 64-bit arithmetic operations `Arithmetic and jump instructions`_
|
||||
===== ===== =============================== ===================================
|
||||
|
||||
Arithmetic and jump instructions
|
||||
================================
|
||||
|
||||
For arithmetic and jump instructions (``BPF_ALU``, ``BPF_ALU64``, ``BPF_JMP`` and
|
||||
``BPF_JMP32``), the 8-bit 'opcode' field is divided into three parts:
|
||||
For arithmetic and jump instructions (``ALU``, ``ALU64``, ``JMP`` and
|
||||
``JMP32``), the 8-bit 'opcode' field is divided into three parts::
|
||||
|
||||
============== ====== =================
|
||||
4 bits (MSB) 1 bit 3 bits (LSB)
|
||||
============== ====== =================
|
||||
code source instruction class
|
||||
============== ====== =================
|
||||
+-+-+-+-+-+-+-+-+
|
||||
| code |s|class|
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|
||||
**code**
|
||||
the operation code, whose meaning varies by instruction class
|
||||
|
||||
**source**
|
||||
**s (source)**
|
||||
the source operand location, which unless otherwise specified is one of:
|
||||
|
||||
====== ===== ==============================================
|
||||
source value description
|
||||
====== ===== ==============================================
|
||||
BPF_K 0x00 use 32-bit 'imm' value as source operand
|
||||
BPF_X 0x08 use 'src_reg' register value as source operand
|
||||
K 0 use 32-bit 'imm' value as source operand
|
||||
X 1 use 'src_reg' register value as source operand
|
||||
====== ===== ==============================================
|
||||
|
||||
**instruction class**
|
||||
@@ -216,70 +289,75 @@ code source instruction class
|
||||
Arithmetic instructions
|
||||
-----------------------
|
||||
|
||||
``BPF_ALU`` uses 32-bit wide operands while ``BPF_ALU64`` uses 64-bit wide operands for
|
||||
otherwise identical operations.
|
||||
``ALU`` uses 32-bit wide operands while ``ALU64`` uses 64-bit wide operands for
|
||||
otherwise identical operations. ``ALU64`` instructions belong to the
|
||||
base64 conformance group unless noted otherwise.
|
||||
The 'code' field encodes the operation as below, where 'src' and 'dst' refer
|
||||
to the values of the source and destination registers, respectively.
|
||||
|
||||
========= ===== ======= ==========================================================
|
||||
code value offset description
|
||||
========= ===== ======= ==========================================================
|
||||
BPF_ADD 0x00 0 dst += src
|
||||
BPF_SUB 0x10 0 dst -= src
|
||||
BPF_MUL 0x20 0 dst \*= src
|
||||
BPF_DIV 0x30 0 dst = (src != 0) ? (dst / src) : 0
|
||||
BPF_SDIV 0x30 1 dst = (src != 0) ? (dst s/ src) : 0
|
||||
BPF_OR 0x40 0 dst \|= src
|
||||
BPF_AND 0x50 0 dst &= src
|
||||
BPF_LSH 0x60 0 dst <<= (src & mask)
|
||||
BPF_RSH 0x70 0 dst >>= (src & mask)
|
||||
BPF_NEG 0x80 0 dst = -dst
|
||||
BPF_MOD 0x90 0 dst = (src != 0) ? (dst % src) : dst
|
||||
BPF_SMOD 0x90 1 dst = (src != 0) ? (dst s% src) : dst
|
||||
BPF_XOR 0xa0 0 dst ^= src
|
||||
BPF_MOV 0xb0 0 dst = src
|
||||
BPF_MOVSX 0xb0 8/16/32 dst = (s8,s16,s32)src
|
||||
BPF_ARSH 0xc0 0 :term:`sign extending<Sign Extend>` dst >>= (src & mask)
|
||||
BPF_END 0xd0 0 byte swap operations (see `Byte swap instructions`_ below)
|
||||
========= ===== ======= ==========================================================
|
||||
===== ===== ======= ==========================================================
|
||||
name code offset description
|
||||
===== ===== ======= ==========================================================
|
||||
ADD 0x0 0 dst += src
|
||||
SUB 0x1 0 dst -= src
|
||||
MUL 0x2 0 dst \*= src
|
||||
DIV 0x3 0 dst = (src != 0) ? (dst / src) : 0
|
||||
SDIV 0x3 1 dst = (src != 0) ? (dst s/ src) : 0
|
||||
OR 0x4 0 dst \|= src
|
||||
AND 0x5 0 dst &= src
|
||||
LSH 0x6 0 dst <<= (src & mask)
|
||||
RSH 0x7 0 dst >>= (src & mask)
|
||||
NEG 0x8 0 dst = -dst
|
||||
MOD 0x9 0 dst = (src != 0) ? (dst % src) : dst
|
||||
SMOD 0x9 1 dst = (src != 0) ? (dst s% src) : dst
|
||||
XOR 0xa 0 dst ^= src
|
||||
MOV 0xb 0 dst = src
|
||||
MOVSX 0xb 8/16/32 dst = (s8,s16,s32)src
|
||||
ARSH 0xc 0 :term:`sign extending<Sign Extend>` dst >>= (src & mask)
|
||||
END 0xd 0 byte swap operations (see `Byte swap instructions`_ below)
|
||||
===== ===== ======= ==========================================================
|
||||
|
||||
Underflow and overflow are allowed during arithmetic operations, meaning
|
||||
the 64-bit or 32-bit value will wrap. If BPF program execution would
|
||||
result in division by zero, the destination register is instead set to zero.
|
||||
If execution would result in modulo by zero, for ``BPF_ALU64`` the value of
|
||||
the destination register is unchanged whereas for ``BPF_ALU`` the upper
|
||||
If execution would result in modulo by zero, for ``ALU64`` the value of
|
||||
the destination register is unchanged whereas for ``ALU`` the upper
|
||||
32 bits of the destination register are zeroed.
|
||||
|
||||
``BPF_ADD | BPF_X | BPF_ALU`` means::
|
||||
``{ADD, X, ALU}``, where 'code' = ``ADD``, 'source' = ``X``, and 'class' = ``ALU``, means::
|
||||
|
||||
dst = (u32) ((u32) dst + (u32) src)
|
||||
|
||||
where '(u32)' indicates that the upper 32 bits are zeroed.
|
||||
|
||||
``BPF_ADD | BPF_X | BPF_ALU64`` means::
|
||||
``{ADD, X, ALU64}`` means::
|
||||
|
||||
dst = dst + src
|
||||
|
||||
``BPF_XOR | BPF_K | BPF_ALU`` means::
|
||||
``{XOR, K, ALU}`` means::
|
||||
|
||||
dst = (u32) dst ^ (u32) imm32
|
||||
dst = (u32) dst ^ (u32) imm
|
||||
|
||||
``BPF_XOR | BPF_K | BPF_ALU64`` means::
|
||||
``{XOR, K, ALU64}`` means::
|
||||
|
||||
dst = dst ^ imm32
|
||||
dst = dst ^ imm
|
||||
|
||||
Note that most instructions have instruction offset of 0. Only three instructions
|
||||
(``BPF_SDIV``, ``BPF_SMOD``, ``BPF_MOVSX``) have a non-zero offset.
|
||||
(``SDIV``, ``SMOD``, ``MOVSX``) have a non-zero offset.
|
||||
|
||||
Division, multiplication, and modulo operations for ``ALU`` are part
|
||||
of the "divmul32" conformance group, and division, multiplication, and
|
||||
modulo operations for ``ALU64`` are part of the "divmul64" conformance
|
||||
group.
|
||||
The division and modulo operations support both unsigned and signed flavors.
|
||||
|
||||
For unsigned operations (``BPF_DIV`` and ``BPF_MOD``), for ``BPF_ALU``,
|
||||
'imm' is interpreted as a 32-bit unsigned value. For ``BPF_ALU64``,
|
||||
For unsigned operations (``DIV`` and ``MOD``), for ``ALU``,
|
||||
'imm' is interpreted as a 32-bit unsigned value. For ``ALU64``,
|
||||
'imm' is first :term:`sign extended<Sign Extend>` from 32 to 64 bits, and then
|
||||
interpreted as a 64-bit unsigned value.
|
||||
|
||||
For signed operations (``BPF_SDIV`` and ``BPF_SMOD``), for ``BPF_ALU``,
|
||||
'imm' is interpreted as a 32-bit signed value. For ``BPF_ALU64``, 'imm'
|
||||
For signed operations (``SDIV`` and ``SMOD``), for ``ALU``,
|
||||
'imm' is interpreted as a 32-bit signed value. For ``ALU64``, 'imm'
|
||||
is first :term:`sign extended<Sign Extend>` from 32 to 64 bits, and then
|
||||
interpreted as a 64-bit signed value.
|
||||
|
||||
@@ -291,11 +369,15 @@ etc. This specification requires that signed modulo use truncated division
|
||||
|
||||
a % n = a - n * trunc(a / n)
|
||||
|
||||
The ``BPF_MOVSX`` instruction does a move operation with sign extension.
|
||||
``BPF_ALU | BPF_MOVSX`` :term:`sign extends<Sign Extend>` 8-bit and 16-bit operands into 32
|
||||
The ``MOVSX`` instruction does a move operation with sign extension.
|
||||
``{MOVSX, X, ALU}`` :term:`sign extends<Sign Extend>` 8-bit and 16-bit operands into 32
|
||||
bit operands, and zeroes the remaining upper 32 bits.
|
||||
``BPF_ALU64 | BPF_MOVSX`` :term:`sign extends<Sign Extend>` 8-bit, 16-bit, and 32-bit
|
||||
operands into 64 bit operands.
|
||||
``{MOVSX, X, ALU64}`` :term:`sign extends<Sign Extend>` 8-bit, 16-bit, and 32-bit
|
||||
operands into 64 bit operands. Unlike other arithmetic instructions,
|
||||
``MOVSX`` is only defined for register source operands (``X``).
|
||||
|
||||
The ``NEG`` instruction is only defined when the source bit is clear
|
||||
(``K``).
|
||||
|
||||
Shift operations use a mask of 0x3F (63) for 64-bit operations and 0x1F (31)
|
||||
for 32-bit operations.
|
||||
@@ -303,43 +385,45 @@ for 32-bit operations.
|
||||
Byte swap instructions
|
||||
----------------------
|
||||
|
||||
The byte swap instructions use instruction classes of ``BPF_ALU`` and ``BPF_ALU64``
|
||||
and a 4-bit 'code' field of ``BPF_END``.
|
||||
The byte swap instructions use instruction classes of ``ALU`` and ``ALU64``
|
||||
and a 4-bit 'code' field of ``END``.
|
||||
|
||||
The byte swap instructions operate on the destination register
|
||||
only and do not use a separate source register or immediate value.
|
||||
|
||||
For ``BPF_ALU``, the 1-bit source operand field in the opcode is used to
|
||||
For ``ALU``, the 1-bit source operand field in the opcode is used to
|
||||
select what byte order the operation converts from or to. For
|
||||
``BPF_ALU64``, the 1-bit source operand field in the opcode is reserved
|
||||
``ALU64``, the 1-bit source operand field in the opcode is reserved
|
||||
and must be set to 0.
|
||||
|
||||
========= ========= ===== =================================================
|
||||
class source value description
|
||||
========= ========= ===== =================================================
|
||||
BPF_ALU BPF_TO_LE 0x00 convert between host byte order and little endian
|
||||
BPF_ALU BPF_TO_BE 0x08 convert between host byte order and big endian
|
||||
BPF_ALU64 Reserved 0x00 do byte swap unconditionally
|
||||
========= ========= ===== =================================================
|
||||
===== ======== ===== =================================================
|
||||
class source value description
|
||||
===== ======== ===== =================================================
|
||||
ALU TO_LE 0 convert between host byte order and little endian
|
||||
ALU TO_BE 1 convert between host byte order and big endian
|
||||
ALU64 Reserved 0 do byte swap unconditionally
|
||||
===== ======== ===== =================================================
|
||||
|
||||
The 'imm' field encodes the width of the swap operations. The following widths
|
||||
are supported: 16, 32 and 64.
|
||||
are supported: 16, 32 and 64. Width 64 operations belong to the base64
|
||||
conformance group and other swap operations belong to the base32
|
||||
conformance group.
|
||||
|
||||
Examples:
|
||||
|
||||
``BPF_ALU | BPF_TO_LE | BPF_END`` with imm = 16/32/64 means::
|
||||
``{END, TO_LE, ALU}`` with imm = 16/32/64 means::
|
||||
|
||||
dst = htole16(dst)
|
||||
dst = htole32(dst)
|
||||
dst = htole64(dst)
|
||||
|
||||
``BPF_ALU | BPF_TO_BE | BPF_END`` with imm = 16/32/64 means::
|
||||
``{END, TO_BE, ALU}`` with imm = 16/32/64 means::
|
||||
|
||||
dst = htobe16(dst)
|
||||
dst = htobe32(dst)
|
||||
dst = htobe64(dst)
|
||||
|
||||
``BPF_ALU64 | BPF_TO_LE | BPF_END`` with imm = 16/32/64 means::
|
||||
``{END, TO_LE, ALU64}`` with imm = 16/32/64 means::
|
||||
|
||||
dst = bswap16(dst)
|
||||
dst = bswap32(dst)
|
||||
@@ -348,56 +432,61 @@ Examples:
|
||||
Jump instructions
|
||||
-----------------
|
||||
|
||||
``BPF_JMP32`` uses 32-bit wide operands while ``BPF_JMP`` uses 64-bit wide operands for
|
||||
otherwise identical operations.
|
||||
``JMP32`` uses 32-bit wide operands and indicates the base32
|
||||
conformance group, while ``JMP`` uses 64-bit wide operands for
|
||||
otherwise identical operations, and indicates the base64 conformance
|
||||
group unless otherwise specified.
|
||||
The 'code' field encodes the operation as below:
|
||||
|
||||
======== ===== === =========================================== =========================================
|
||||
code value src description notes
|
||||
======== ===== === =========================================== =========================================
|
||||
BPF_JA 0x0 0x0 PC += offset BPF_JMP class
|
||||
BPF_JA 0x0 0x0 PC += imm BPF_JMP32 class
|
||||
BPF_JEQ 0x1 any PC += offset if dst == src
|
||||
BPF_JGT 0x2 any PC += offset if dst > src unsigned
|
||||
BPF_JGE 0x3 any PC += offset if dst >= src unsigned
|
||||
BPF_JSET 0x4 any PC += offset if dst & src
|
||||
BPF_JNE 0x5 any PC += offset if dst != src
|
||||
BPF_JSGT 0x6 any PC += offset if dst > src signed
|
||||
BPF_JSGE 0x7 any PC += offset if dst >= src signed
|
||||
BPF_CALL 0x8 0x0 call helper function by address see `Helper functions`_
|
||||
BPF_CALL 0x8 0x1 call PC += imm see `Program-local functions`_
|
||||
BPF_CALL 0x8 0x2 call helper function by BTF ID see `Helper functions`_
|
||||
BPF_EXIT 0x9 0x0 return BPF_JMP only
|
||||
BPF_JLT 0xa any PC += offset if dst < src unsigned
|
||||
BPF_JLE 0xb any PC += offset if dst <= src unsigned
|
||||
BPF_JSLT 0xc any PC += offset if dst < src signed
|
||||
BPF_JSLE 0xd any PC += offset if dst <= src signed
|
||||
======== ===== === =========================================== =========================================
|
||||
======== ===== ======= =============================== ===================================================
|
||||
code value src_reg description notes
|
||||
======== ===== ======= =============================== ===================================================
|
||||
JA 0x0 0x0 PC += offset {JA, K, JMP} only
|
||||
JA 0x0 0x0 PC += imm {JA, K, JMP32} only
|
||||
JEQ 0x1 any PC += offset if dst == src
|
||||
JGT 0x2 any PC += offset if dst > src unsigned
|
||||
JGE 0x3 any PC += offset if dst >= src unsigned
|
||||
JSET 0x4 any PC += offset if dst & src
|
||||
JNE 0x5 any PC += offset if dst != src
|
||||
JSGT 0x6 any PC += offset if dst > src signed
|
||||
JSGE 0x7 any PC += offset if dst >= src signed
|
||||
CALL 0x8 0x0 call helper function by address {CALL, K, JMP} only, see `Helper functions`_
|
||||
CALL 0x8 0x1 call PC += imm {CALL, K, JMP} only, see `Program-local functions`_
|
||||
CALL 0x8 0x2 call helper function by BTF ID {CALL, K, JMP} only, see `Helper functions`_
|
||||
EXIT 0x9 0x0 return {CALL, K, JMP} only
|
||||
JLT 0xa any PC += offset if dst < src unsigned
|
||||
JLE 0xb any PC += offset if dst <= src unsigned
|
||||
JSLT 0xc any PC += offset if dst < src signed
|
||||
JSLE 0xd any PC += offset if dst <= src signed
|
||||
======== ===== ======= =============================== ===================================================
|
||||
|
||||
The BPF program needs to store the return value into register R0 before doing a
|
||||
``BPF_EXIT``.
|
||||
The BPF program needs to store the return value into register R0 before doing an
|
||||
``EXIT``.
|
||||
|
||||
Example:
|
||||
|
||||
``BPF_JSGE | BPF_X | BPF_JMP32`` (0x7e) means::
|
||||
``{JSGE, X, JMP32}`` means::
|
||||
|
||||
if (s32)dst s>= (s32)src goto +offset
|
||||
|
||||
where 's>=' indicates a signed '>=' comparison.
|
||||
|
||||
``BPF_JA | BPF_K | BPF_JMP32`` (0x06) means::
|
||||
``{JA, K, JMP32}`` means::
|
||||
|
||||
gotol +imm
|
||||
|
||||
where 'imm' means the branch offset comes from insn 'imm' field.
|
||||
|
||||
Note that there are two flavors of ``BPF_JA`` instructions. The
|
||||
``BPF_JMP`` class permits a 16-bit jump offset specified by the 'offset'
|
||||
field, whereas the ``BPF_JMP32`` class permits a 32-bit jump offset
|
||||
Note that there are two flavors of ``JA`` instructions. The
|
||||
``JMP`` class permits a 16-bit jump offset specified by the 'offset'
|
||||
field, whereas the ``JMP32`` class permits a 32-bit jump offset
|
||||
specified by the 'imm' field. A > 16-bit conditional jump may be
|
||||
converted to a < 16-bit conditional jump plus a 32-bit unconditional
|
||||
jump.
|
||||
|
||||
All ``CALL`` and ``JA`` instructions belong to the
|
||||
base32 conformance group.
|
||||
|
||||
Helper functions
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -416,78 +505,83 @@ Program-local functions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Program-local functions are functions exposed by the same BPF program as the
|
||||
caller, and are referenced by offset from the call instruction, similar to
|
||||
``BPF_JA``. The offset is encoded in the imm field of the call instruction.
|
||||
A ``BPF_EXIT`` within the program-local function will return to the caller.
|
||||
``JA``. The offset is encoded in the imm field of the call instruction.
|
||||
A ``EXIT`` within the program-local function will return to the caller.
|
||||
|
||||
Load and store instructions
|
||||
===========================
|
||||
|
||||
For load and store instructions (``BPF_LD``, ``BPF_LDX``, ``BPF_ST``, and ``BPF_STX``), the
|
||||
8-bit 'opcode' field is divided as:
|
||||
For load and store instructions (``LD``, ``LDX``, ``ST``, and ``STX``), the
|
||||
8-bit 'opcode' field is divided as::
|
||||
|
||||
============ ====== =================
|
||||
3 bits (MSB) 2 bits 3 bits (LSB)
|
||||
============ ====== =================
|
||||
mode size instruction class
|
||||
============ ====== =================
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|mode |sz |class|
|
||||
+-+-+-+-+-+-+-+-+
|
||||
|
||||
The mode modifier is one of:
|
||||
**mode**
|
||||
The mode modifier is one of:
|
||||
|
||||
============= ===== ==================================== =============
|
||||
mode modifier value description reference
|
||||
============= ===== ==================================== =============
|
||||
BPF_IMM 0x00 64-bit immediate instructions `64-bit immediate instructions`_
|
||||
BPF_ABS 0x20 legacy BPF packet access (absolute) `Legacy BPF Packet access instructions`_
|
||||
BPF_IND 0x40 legacy BPF packet access (indirect) `Legacy BPF Packet access instructions`_
|
||||
BPF_MEM 0x60 regular load and store operations `Regular load and store operations`_
|
||||
BPF_MEMSX 0x80 sign-extension load operations `Sign-extension load operations`_
|
||||
BPF_ATOMIC 0xc0 atomic operations `Atomic operations`_
|
||||
============= ===== ==================================== =============
|
||||
============= ===== ==================================== =============
|
||||
mode modifier value description reference
|
||||
============= ===== ==================================== =============
|
||||
IMM 0 64-bit immediate instructions `64-bit immediate instructions`_
|
||||
ABS 1 legacy BPF packet access (absolute) `Legacy BPF Packet access instructions`_
|
||||
IND 2 legacy BPF packet access (indirect) `Legacy BPF Packet access instructions`_
|
||||
MEM 3 regular load and store operations `Regular load and store operations`_
|
||||
MEMSX 4 sign-extension load operations `Sign-extension load operations`_
|
||||
ATOMIC 6 atomic operations `Atomic operations`_
|
||||
============= ===== ==================================== =============
|
||||
|
||||
The size modifier is one of:
|
||||
**sz (size)**
|
||||
The size modifier is one of:
|
||||
|
||||
============= ===== =====================
|
||||
size modifier value description
|
||||
============= ===== =====================
|
||||
BPF_W 0x00 word (4 bytes)
|
||||
BPF_H 0x08 half word (2 bytes)
|
||||
BPF_B 0x10 byte
|
||||
BPF_DW 0x18 double word (8 bytes)
|
||||
============= ===== =====================
|
||||
==== ===== =====================
|
||||
size value description
|
||||
==== ===== =====================
|
||||
W 0 word (4 bytes)
|
||||
H 1 half word (2 bytes)
|
||||
B 2 byte
|
||||
DW 3 double word (8 bytes)
|
||||
==== ===== =====================
|
||||
|
||||
Instructions using ``DW`` belong to the base64 conformance group.
|
||||
|
||||
**class**
|
||||
The instruction class (see `Instruction classes`_)
|
||||
|
||||
Regular load and store operations
|
||||
---------------------------------
|
||||
|
||||
The ``BPF_MEM`` mode modifier is used to encode regular load and store
|
||||
The ``MEM`` mode modifier is used to encode regular load and store
|
||||
instructions that transfer data between a register and memory.
|
||||
|
||||
``BPF_MEM | <size> | BPF_STX`` means::
|
||||
``{MEM, <size>, STX}`` means::
|
||||
|
||||
*(size *) (dst + offset) = src
|
||||
|
||||
``BPF_MEM | <size> | BPF_ST`` means::
|
||||
``{MEM, <size>, ST}`` means::
|
||||
|
||||
*(size *) (dst + offset) = imm32
|
||||
*(size *) (dst + offset) = imm
|
||||
|
||||
``BPF_MEM | <size> | BPF_LDX`` means::
|
||||
``{MEM, <size>, LDX}`` means::
|
||||
|
||||
dst = *(unsigned size *) (src + offset)
|
||||
|
||||
Where size is one of: ``BPF_B``, ``BPF_H``, ``BPF_W``, or ``BPF_DW`` and
|
||||
'unsigned size' is one of u8, u16, u32 or u64.
|
||||
Where '<size>' is one of: ``B``, ``H``, ``W``, or ``DW``, and
|
||||
'unsigned size' is one of: u8, u16, u32, or u64.
|
||||
|
||||
Sign-extension load operations
|
||||
------------------------------
|
||||
|
||||
The ``BPF_MEMSX`` mode modifier is used to encode :term:`sign-extension<Sign Extend>` load
|
||||
The ``MEMSX`` mode modifier is used to encode :term:`sign-extension<Sign Extend>` load
|
||||
instructions that transfer data between a register and memory.
|
||||
|
||||
``BPF_MEMSX | <size> | BPF_LDX`` means::
|
||||
``{MEMSX, <size>, LDX}`` means::
|
||||
|
||||
dst = *(signed size *) (src + offset)
|
||||
|
||||
Where size is one of: ``BPF_B``, ``BPF_H`` or ``BPF_W``, and
|
||||
'signed size' is one of s8, s16 or s32.
|
||||
Where size is one of: ``B``, ``H``, or ``W``, and
|
||||
'signed size' is one of: s8, s16, or s32.
|
||||
|
||||
Atomic operations
|
||||
-----------------
|
||||
@@ -497,10 +591,12 @@ interrupted or corrupted by other access to the same memory region
|
||||
by other BPF programs or means outside of this specification.
|
||||
|
||||
All atomic operations supported by BPF are encoded as store operations
|
||||
that use the ``BPF_ATOMIC`` mode modifier as follows:
|
||||
that use the ``ATOMIC`` mode modifier as follows:
|
||||
|
||||
* ``BPF_ATOMIC | BPF_W | BPF_STX`` for 32-bit operations
|
||||
* ``BPF_ATOMIC | BPF_DW | BPF_STX`` for 64-bit operations
|
||||
* ``{ATOMIC, W, STX}`` for 32-bit operations, which are
|
||||
part of the "atomic32" conformance group.
|
||||
* ``{ATOMIC, DW, STX}`` for 64-bit operations, which are
|
||||
part of the "atomic64" conformance group.
|
||||
* 8-bit and 16-bit wide atomic operations are not supported.
|
||||
|
||||
The 'imm' field is used to encode the actual atomic operation.
|
||||
@@ -510,18 +606,18 @@ arithmetic operations in the 'imm' field to encode the atomic operation:
|
||||
======== ===== ===========
|
||||
imm value description
|
||||
======== ===== ===========
|
||||
BPF_ADD 0x00 atomic add
|
||||
BPF_OR 0x40 atomic or
|
||||
BPF_AND 0x50 atomic and
|
||||
BPF_XOR 0xa0 atomic xor
|
||||
ADD 0x00 atomic add
|
||||
OR 0x40 atomic or
|
||||
AND 0x50 atomic and
|
||||
XOR 0xa0 atomic xor
|
||||
======== ===== ===========
|
||||
|
||||
|
||||
``BPF_ATOMIC | BPF_W | BPF_STX`` with 'imm' = BPF_ADD means::
|
||||
``{ATOMIC, W, STX}`` with 'imm' = ADD means::
|
||||
|
||||
*(u32 *)(dst + offset) += src
|
||||
|
||||
``BPF_ATOMIC | BPF_DW | BPF_STX`` with 'imm' = BPF ADD means::
|
||||
``{ATOMIC, DW, STX}`` with 'imm' = ADD means::
|
||||
|
||||
*(u64 *)(dst + offset) += src
|
||||
|
||||
@@ -531,20 +627,20 @@ two complex atomic operations:
|
||||
=========== ================ ===========================
|
||||
imm value description
|
||||
=========== ================ ===========================
|
||||
BPF_FETCH 0x01 modifier: return old value
|
||||
BPF_XCHG 0xe0 | BPF_FETCH atomic exchange
|
||||
BPF_CMPXCHG 0xf0 | BPF_FETCH atomic compare and exchange
|
||||
FETCH 0x01 modifier: return old value
|
||||
XCHG 0xe0 | FETCH atomic exchange
|
||||
CMPXCHG 0xf0 | FETCH atomic compare and exchange
|
||||
=========== ================ ===========================
|
||||
|
||||
The ``BPF_FETCH`` modifier is optional for simple atomic operations, and
|
||||
always set for the complex atomic operations. If the ``BPF_FETCH`` flag
|
||||
The ``FETCH`` modifier is optional for simple atomic operations, and
|
||||
always set for the complex atomic operations. If the ``FETCH`` flag
|
||||
is set, then the operation also overwrites ``src`` with the value that
|
||||
was in memory before it was modified.
|
||||
|
||||
The ``BPF_XCHG`` operation atomically exchanges ``src`` with the value
|
||||
The ``XCHG`` operation atomically exchanges ``src`` with the value
|
||||
addressed by ``dst + offset``.
|
||||
|
||||
The ``BPF_CMPXCHG`` operation atomically compares the value addressed by
|
||||
The ``CMPXCHG`` operation atomically compares the value addressed by
|
||||
``dst + offset`` with ``R0``. If they match, the value addressed by
|
||||
``dst + offset`` is replaced with ``src``. In either case, the
|
||||
value that was at ``dst + offset`` before the operation is zero-extended
|
||||
@@ -553,25 +649,25 @@ and loaded back to ``R0``.
|
||||
64-bit immediate instructions
|
||||
-----------------------------
|
||||
|
||||
Instructions with the ``BPF_IMM`` 'mode' modifier use the wide instruction
|
||||
encoding defined in `Instruction encoding`_, and use the 'src' field of the
|
||||
Instructions with the ``IMM`` 'mode' modifier use the wide instruction
|
||||
encoding defined in `Instruction encoding`_, and use the 'src_reg' field of the
|
||||
basic instruction to hold an opcode subtype.
|
||||
|
||||
The following table defines a set of ``BPF_IMM | BPF_DW | BPF_LD`` instructions
|
||||
with opcode subtypes in the 'src' field, using new terms such as "map"
|
||||
The following table defines a set of ``{IMM, DW, LD}`` instructions
|
||||
with opcode subtypes in the 'src_reg' field, using new terms such as "map"
|
||||
defined further below:
|
||||
|
||||
========================= ====== === ========================================= =========== ==============
|
||||
opcode construction opcode src pseudocode imm type dst type
|
||||
========================= ====== === ========================================= =========== ==============
|
||||
BPF_IMM | BPF_DW | BPF_LD 0x18 0x0 dst = imm64 integer integer
|
||||
BPF_IMM | BPF_DW | BPF_LD 0x18 0x1 dst = map_by_fd(imm) map fd map
|
||||
BPF_IMM | BPF_DW | BPF_LD 0x18 0x2 dst = map_val(map_by_fd(imm)) + next_imm map fd data pointer
|
||||
BPF_IMM | BPF_DW | BPF_LD 0x18 0x3 dst = var_addr(imm) variable id data pointer
|
||||
BPF_IMM | BPF_DW | BPF_LD 0x18 0x4 dst = code_addr(imm) integer code pointer
|
||||
BPF_IMM | BPF_DW | BPF_LD 0x18 0x5 dst = map_by_idx(imm) map index map
|
||||
BPF_IMM | BPF_DW | BPF_LD 0x18 0x6 dst = map_val(map_by_idx(imm)) + next_imm map index data pointer
|
||||
========================= ====== === ========================================= =========== ==============
|
||||
======= ========================================= =========== ==============
|
||||
src_reg pseudocode imm type dst type
|
||||
======= ========================================= =========== ==============
|
||||
0x0 dst = (next_imm << 32) | imm integer integer
|
||||
0x1 dst = map_by_fd(imm) map fd map
|
||||
0x2 dst = map_val(map_by_fd(imm)) + next_imm map fd data pointer
|
||||
0x3 dst = var_addr(imm) variable id data pointer
|
||||
0x4 dst = code_addr(imm) integer code pointer
|
||||
0x5 dst = map_by_idx(imm) map index map
|
||||
0x6 dst = map_val(map_by_idx(imm)) + next_imm map index data pointer
|
||||
======= ========================================= =========== ==============
|
||||
|
||||
where
|
||||
|
||||
@@ -609,5 +705,9 @@ Legacy BPF Packet access instructions
|
||||
-------------------------------------
|
||||
|
||||
BPF previously introduced special instructions for access to packet data that were
|
||||
carried over from classic BPF. However, these instructions are
|
||||
deprecated and should no longer be used.
|
||||
carried over from classic BPF. These instructions used an instruction
|
||||
class of ``LD``, a size modifier of ``W``, ``H``, or ``B``, and a
|
||||
mode modifier of ``ABS`` or ``IND``. The 'dst_reg' and 'offset' fields were
|
||||
set to zero, and 'src_reg' was set to zero for ``ABS``. However, these
|
||||
instructions are deprecated and should no longer be used. All legacy packet
|
||||
access instructions belong to the "packet" conformance group.
|
||||
@@ -562,7 +562,7 @@ works::
|
||||
* ``checkpoint[0].r1`` is marked as read;
|
||||
|
||||
* At instruction #5 exit is reached and ``checkpoint[0]`` can now be processed
|
||||
by ``clean_live_states()``. After this processing ``checkpoint[0].r0`` has a
|
||||
by ``clean_live_states()``. After this processing ``checkpoint[0].r1`` has a
|
||||
read mark and all other registers and stack slots are marked as ``NOT_INIT``
|
||||
or ``STACK_INVALID``
|
||||
|
||||
|
||||
@@ -346,9 +346,9 @@ sys.stderr.write("Using %s theme\n" % html_theme)
|
||||
html_static_path = ['sphinx-static']
|
||||
|
||||
# If true, Docutils "smart quotes" will be used to convert quotes and dashes
|
||||
# to typographically correct entities. This will convert "--" to "—",
|
||||
# which is not always what we want, so disable it.
|
||||
smartquotes = False
|
||||
# to typographically correct entities. However, conversion of "--" to "—"
|
||||
# is not always what we want, so enable only quotes.
|
||||
smartquotes_action = 'q'
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
# Note that the RTD theme ignores this
|
||||
|
||||
@@ -168,7 +168,7 @@ Available options:
|
||||
|
||||
- --fix
|
||||
|
||||
This is an EXPERIMENTAL feature. If correctable errors exists, a file
|
||||
This is an EXPERIMENTAL feature. If correctable errors exist, a file
|
||||
<inputfile>.EXPERIMENTAL-checkpatch-fixes is created which has the
|
||||
automatically fixable errors corrected.
|
||||
|
||||
@@ -181,7 +181,7 @@ Available options:
|
||||
|
||||
- --ignore-perl-version
|
||||
|
||||
Override checking of perl version. Runtime errors maybe encountered after
|
||||
Override checking of perl version. Runtime errors may be encountered after
|
||||
enabling this flag if the perl version does not meet the minimum specified.
|
||||
|
||||
- --codespell
|
||||
|
||||
@@ -277,6 +277,27 @@ traces point to places in code that interacted with the object but that are not
|
||||
directly present in the bad access stack trace. Currently, this includes
|
||||
call_rcu() and workqueue queuing.
|
||||
|
||||
CONFIG_KASAN_EXTRA_INFO
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Enabling CONFIG_KASAN_EXTRA_INFO allows KASAN to record and report more
|
||||
information. The extra information currently supported is the CPU number and
|
||||
timestamp at allocation and free. More information can help find the cause of
|
||||
the bug and correlate the error with other system events, at the cost of using
|
||||
extra memory to record more information (more cost details in the help text of
|
||||
CONFIG_KASAN_EXTRA_INFO).
|
||||
|
||||
Here is the report with CONFIG_KASAN_EXTRA_INFO enabled (only the
|
||||
different parts are shown)::
|
||||
|
||||
==================================================================
|
||||
...
|
||||
Allocated by task 134 on cpu 5 at 229.133855s:
|
||||
...
|
||||
Freed by task 136 on cpu 3 at 230.199335s:
|
||||
...
|
||||
==================================================================
|
||||
|
||||
Implementation details
|
||||
----------------------
|
||||
|
||||
|
||||
@@ -259,9 +259,21 @@ Contributing new tests (details)
|
||||
|
||||
TEST_PROGS_EXTENDED, TEST_GEN_PROGS_EXTENDED mean it is the
|
||||
executable which is not tested by default.
|
||||
|
||||
TEST_FILES, TEST_GEN_FILES mean it is the file which is used by
|
||||
test.
|
||||
|
||||
TEST_INCLUDES is similar to TEST_FILES, it lists files which should be
|
||||
included when exporting or installing the tests, with the following
|
||||
differences:
|
||||
|
||||
* symlinks to files in other directories are preserved
|
||||
* the part of paths below tools/testing/selftests/ is preserved when
|
||||
copying the files to the output directory
|
||||
|
||||
TEST_INCLUDES is meant to list dependencies located in other directories of
|
||||
the selftests hierarchy.
|
||||
|
||||
* First use the headers inside the kernel source and/or git repo, and then the
|
||||
system headers. Headers for the kernel release as opposed to headers
|
||||
installed by the distro on the system should be the primary focus to be able
|
||||
|
||||
@@ -49,34 +49,22 @@ Report example
|
||||
Usage
|
||||
-----
|
||||
|
||||
To enable UBSAN configure kernel with::
|
||||
To enable UBSAN, configure the kernel with::
|
||||
|
||||
CONFIG_UBSAN=y
|
||||
CONFIG_UBSAN=y
|
||||
|
||||
and to check the entire kernel::
|
||||
|
||||
CONFIG_UBSAN_SANITIZE_ALL=y
|
||||
|
||||
To enable instrumentation for specific files or directories, add a line
|
||||
similar to the following to the respective kernel Makefile:
|
||||
|
||||
- For a single file (e.g. main.o)::
|
||||
|
||||
UBSAN_SANITIZE_main.o := y
|
||||
|
||||
- For all files in one directory::
|
||||
|
||||
UBSAN_SANITIZE := y
|
||||
|
||||
To exclude files from being instrumented even if
|
||||
``CONFIG_UBSAN_SANITIZE_ALL=y``, use::
|
||||
To exclude files from being instrumented use::
|
||||
|
||||
UBSAN_SANITIZE_main.o := n
|
||||
|
||||
and::
|
||||
and to exclude all targets in one directory use::
|
||||
|
||||
UBSAN_SANITIZE := n
|
||||
|
||||
When disabled for all targets, specific files can be enabled using::
|
||||
|
||||
UBSAN_SANITIZE_main.o := y
|
||||
|
||||
Detection of unaligned accesses controlled through the separate option -
|
||||
CONFIG_UBSAN_ALIGNMENT. It's off by default on architectures that support
|
||||
unaligned accesses (CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y). One could
|
||||
|
||||
@@ -7,19 +7,11 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
title: Amlogic SoC based Platforms
|
||||
|
||||
maintainers:
|
||||
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||
- Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||
- Jerome Brunet <jbrunet@baylibre.com>
|
||||
- Kevin Hilman <khilman@baylibre.com>
|
||||
|
||||
description: |+
|
||||
Work in progress statement:
|
||||
|
||||
Device tree files and bindings applying to Amlogic SoCs and boards are
|
||||
considered "unstable". Any Amlogic device tree binding may change at
|
||||
any time. Be sure to use a device tree binary and a kernel image
|
||||
generated from the same source tree.
|
||||
|
||||
Please refer to Documentation/devicetree/bindings/ABI.rst for a definition of a
|
||||
stable binding/ABI.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
const: '/'
|
||||
@@ -146,6 +138,7 @@ properties:
|
||||
- enum:
|
||||
- amediatech,x96-max
|
||||
- amlogic,u200
|
||||
- freebox,fbx8am
|
||||
- radxa,zero
|
||||
- seirobotics,sei510
|
||||
- const: amlogic,g12a
|
||||
|
||||
@@ -10,9 +10,9 @@ maintainers:
|
||||
- Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
description: |+
|
||||
The ARM RealView series of reference designs were built to explore the ARM
|
||||
11, Cortex A-8 and Cortex A-9 CPUs. This included new features compared to
|
||||
the earlier CPUs such as TrustZone and multicore (MPCore).
|
||||
The ARM RealView series of reference designs were built to explore the Arm11,
|
||||
Cortex-A8, and Cortex-A9 CPUs. This included new features compared to the
|
||||
earlier CPUs such as TrustZone and multicore (MPCore).
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
|
||||
@@ -179,6 +179,12 @@ properties:
|
||||
- const: microchip,sama7g5
|
||||
- const: microchip,sama7
|
||||
|
||||
- description: Microchip SAMA7G54 Curiosity Board
|
||||
items:
|
||||
- const: microchip,sama7g54-curiosity
|
||||
- const: microchip,sama7g5
|
||||
- const: microchip,sama7
|
||||
|
||||
- description: Microchip LAN9662 Evaluation Boards.
|
||||
items:
|
||||
- enum:
|
||||
|
||||
@@ -384,7 +384,8 @@ properties:
|
||||
- toradex,apalis_imx6q-ixora # Apalis iMX6Q/D Module on Ixora Carrier Board
|
||||
- toradex,apalis_imx6q-ixora-v1.1 # Apalis iMX6Q/D Module on Ixora V1.1 Carrier Board
|
||||
- toradex,apalis_imx6q-ixora-v1.2 # Apalis iMX6Q/D Module on Ixora V1.2 Carrier Board
|
||||
- toradex,apalis_imx6q-eval # Apalis iMX6Q/D Module on Apalis Evaluation Board
|
||||
- toradex,apalis_imx6q-eval # Apalis iMX6Q/D Module on Apalis Evaluation Board v1.0/v1.1
|
||||
- toradex,apalis_imx6q-eval-v1.2 # Apalis iMX6Q/D Module on Apalis Evaluation Board v1.2
|
||||
- const: toradex,apalis_imx6q
|
||||
- const: fsl,imx6q
|
||||
|
||||
@@ -469,6 +470,7 @@ properties:
|
||||
- prt,prtvt7 # Protonic VT7 board
|
||||
- rex,imx6dl-rex-basic # Rex Basic i.MX6 Dual Lite Board
|
||||
- riot,imx6s-riotboard # RIoTboard i.MX6S
|
||||
- sielaff,imx6dl-board # Sielaff i.MX6 Solo Board
|
||||
- skov,imx6dl-skov-revc-lt2 # SKOV IMX6 CPU SoloCore lt2
|
||||
- skov,imx6dl-skov-revc-lt6 # SKOV IMX6 CPU SoloCore lt6
|
||||
- solidrun,cubox-i/dl # SolidRun Cubox-i Solo/DualLite
|
||||
@@ -708,6 +710,7 @@ properties:
|
||||
- toradex,colibri-imx6ull # Colibri iMX6ULL Modules
|
||||
- toradex,colibri-imx6ull-emmc # Colibri iMX6ULL 1GB (eMMC) Module
|
||||
- toradex,colibri-imx6ull-wifi # Colibri iMX6ULL Wi-Fi / BT Modules
|
||||
- uni-t,uti260b # UNI-T UTi260B Thermal Camera
|
||||
- const: fsl,imx6ull
|
||||
|
||||
- description: i.MX6ULL Armadeus Systems OPOS6ULDev Board
|
||||
@@ -1026,7 +1029,7 @@ properties:
|
||||
items:
|
||||
- enum:
|
||||
- dimonoff,gateway-evk # i.MX8MN Dimonoff Gateway EVK Board
|
||||
- rve,rve-gateway # i.MX8MN RVE Gateway Board
|
||||
- rve,gateway # i.MX8MN RVE Gateway Board
|
||||
- variscite,var-som-mx8mn-symphony
|
||||
- const: variscite,var-som-mx8mn
|
||||
- const: fsl,imx8mn
|
||||
@@ -1194,7 +1197,8 @@ properties:
|
||||
- description: i.MX8QM Boards with Toradex Apalis iMX8 Modules
|
||||
items:
|
||||
- enum:
|
||||
- toradex,apalis-imx8-eval # Apalis iMX8 Module on Apalis Evaluation Board
|
||||
- toradex,apalis-imx8-eval # Apalis iMX8 Module on Apalis Evaluation V1.0/V1.1 Board
|
||||
- toradex,apalis-imx8-eval-v1.2 # Apalis iMX8 Module on Apalis Evaluation V1.2 Board
|
||||
- toradex,apalis-imx8-ixora-v1.1 # Apalis iMX8 Module on Ixora V1.1 Carrier Board
|
||||
- const: toradex,apalis-imx8
|
||||
- const: fsl,imx8qm
|
||||
@@ -1202,7 +1206,8 @@ properties:
|
||||
- description: i.MX8QM Boards with Toradex Apalis iMX8 V1.1 Modules
|
||||
items:
|
||||
- enum:
|
||||
- toradex,apalis-imx8-v1.1-eval # Apalis iMX8 V1.1 Module on Apalis Eval. Board
|
||||
- toradex,apalis-imx8-v1.1-eval # Apalis iMX8 V1.1 Module on Apalis Eval. V1.0/V1.1 Board
|
||||
- toradex,apalis-imx8-v1.1-eval-v1.2 # Apalis iMX8 V1.1 Module on Apalis Eval. V1.2 Board
|
||||
- toradex,apalis-imx8-v1.1-ixora-v1.1 # Apalis iMX8 V1.1 Module on Ixora V1.1 C. Board
|
||||
- toradex,apalis-imx8-v1.1-ixora-v1.2 # Apalis iMX8 V1.1 Module on Ixora V1.2 C. Board
|
||||
- const: toradex,apalis-imx8-v1.1
|
||||
@@ -1232,6 +1237,22 @@ properties:
|
||||
- const: toradex,colibri-imx8x
|
||||
- const: fsl,imx8qxp
|
||||
|
||||
- description:
|
||||
TQMa8Xx is a series of SOM featuring NXP i.MX8X system-on-chip
|
||||
variants. It is designed to be clicked on different carrier boards
|
||||
MBa8Xx is the starterkit
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- tq,imx8dxp-tqma8xdp-mba8xx # TQ-Systems GmbH TQMa8XDP SOM on MBa8Xx
|
||||
- const: tq,imx8dxp-tqma8xdp # TQ-Systems GmbH TQMa8XDP SOM (with i.MX8DXP)
|
||||
- const: fsl,imx8dxp
|
||||
- items:
|
||||
- enum:
|
||||
- tq,imx8qxp-tqma8xqp-mba8xx # TQ-Systems GmbH TQMa8XQP SOM on MBa8Xx
|
||||
- const: tq,imx8qxp-tqma8xqp # TQ-Systems GmbH TQMa8XQP SOM (with i.MX8QXP)
|
||||
- const: fsl,imx8qxp
|
||||
|
||||
- description: i.MX8ULP based Boards
|
||||
items:
|
||||
- enum:
|
||||
@@ -1275,6 +1296,18 @@ properties:
|
||||
- const: tq,imx93-tqma9352 # TQ-Systems GmbH i.MX93 TQMa93xxCA/LA SOM
|
||||
- const: fsl,imx93
|
||||
|
||||
- description: PHYTEC phyCORE-i.MX93 SoM based boards
|
||||
items:
|
||||
- const: phytec,imx93-phyboard-segin # phyBOARD-Segin with i.MX93
|
||||
- const: phytec,imx93-phycore-som # phyCORE-i.MX93 SoM
|
||||
- const: fsl,imx93
|
||||
|
||||
- description: Variscite VAR-SOM-MX93 based boards
|
||||
items:
|
||||
- const: variscite,var-som-mx93-symphony
|
||||
- const: variscite,var-som-mx93
|
||||
- const: fsl,imx93
|
||||
|
||||
- description:
|
||||
Freescale Vybrid Platform Device Tree Bindings
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
Marvell Armada 38x Platforms Device Tree Bindings
|
||||
-------------------------------------------------
|
||||
|
||||
Boards with a SoC of the Marvell Armada 38x family shall have the
|
||||
following property:
|
||||
|
||||
Required root node property:
|
||||
|
||||
- compatible: must contain "marvell,armada380"
|
||||
|
||||
In addition, boards using the Marvell Armada 385 SoC shall have the
|
||||
following property before the previous one:
|
||||
|
||||
Required root node property:
|
||||
|
||||
compatible: must contain "marvell,armada385"
|
||||
|
||||
In addition, boards using the Marvell Armada 388 SoC shall have the
|
||||
following property before the previous one:
|
||||
|
||||
Required root node property:
|
||||
|
||||
compatible: must contain "marvell,armada388"
|
||||
|
||||
Example:
|
||||
|
||||
compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380";
|
||||
@@ -0,0 +1,70 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/arm/marvell/armada-38x.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Marvell Armada 38x Platforms
|
||||
|
||||
maintainers:
|
||||
- Gregory CLEMENT <gregory.clement@bootlin.com>
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
const: '/'
|
||||
compatible:
|
||||
oneOf:
|
||||
|
||||
- description:
|
||||
Netgear Armada 380 GS110EM Managed Switch.
|
||||
items:
|
||||
- const: netgear,gs110emx
|
||||
- const: marvell,armada380
|
||||
|
||||
- description:
|
||||
Marvell Armada 385 Development Boards.
|
||||
items:
|
||||
- enum:
|
||||
- marvell,a385-db-amc
|
||||
- marvell,a385-db-ap
|
||||
- const: marvell,armada385
|
||||
- const: marvell,armada380
|
||||
|
||||
- description:
|
||||
SolidRun Armada 385 based single-board computers.
|
||||
items:
|
||||
- enum:
|
||||
- solidrun,clearfog-gtr-l8
|
||||
- solidrun,clearfog-gtr-s4
|
||||
- const: marvell,armada385
|
||||
- const: marvell,armada380
|
||||
|
||||
- description:
|
||||
Kobol Armada 388 based Helios-4 NAS.
|
||||
items:
|
||||
- const: kobol,helios4
|
||||
- const: marvell,armada388
|
||||
- const: marvell,armada385
|
||||
- const: marvell,armada380
|
||||
|
||||
- description:
|
||||
Marvell Armada 388 Development Boards.
|
||||
items:
|
||||
- enum:
|
||||
- marvell,a388-gp
|
||||
- const: marvell,armada388
|
||||
- const: marvell,armada385
|
||||
- const: marvell,armada380
|
||||
|
||||
- description:
|
||||
SolidRun Armada 388 clearfog family single-board computers.
|
||||
items:
|
||||
- enum:
|
||||
- solidrun,clearfog-base-a1
|
||||
- solidrun,clearfog-pro-a1
|
||||
- const: solidrun,clearfog-a1
|
||||
- const: marvell,armada388
|
||||
- const: marvell,armada385
|
||||
- const: marvell,armada380
|
||||
|
||||
additionalProperties: true
|
||||
@@ -17,6 +17,7 @@ properties:
|
||||
const: '/'
|
||||
compatible:
|
||||
oneOf:
|
||||
# Sort by SoC (last) compatible, then board compatible
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt2701-evb
|
||||
@@ -84,6 +85,11 @@ properties:
|
||||
- const: mediatek,mt7629
|
||||
- items:
|
||||
- enum:
|
||||
- xiaomi,ax3000t
|
||||
- const: mediatek,mt7981b
|
||||
- items:
|
||||
- enum:
|
||||
- acelink,ew-7886cax
|
||||
- bananapi,bpi-r3
|
||||
- mediatek,mt7986a-rfb
|
||||
- const: mediatek,mt7986a
|
||||
@@ -91,6 +97,10 @@ properties:
|
||||
- enum:
|
||||
- mediatek,mt7986b-rfb
|
||||
- const: mediatek,mt7986b
|
||||
- items:
|
||||
- enum:
|
||||
- bananapi,bpi-r4
|
||||
- const: mediatek,mt7988a
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8127-moose
|
||||
@@ -129,75 +139,10 @@ properties:
|
||||
- enum:
|
||||
- mediatek,mt8173-evb
|
||||
- const: mediatek,mt8173
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8183-evb
|
||||
- const: mediatek,mt8183
|
||||
- description: Google Hayato rev5
|
||||
items:
|
||||
- const: google,hayato-rev5-sku2
|
||||
- const: google,hayato-sku2
|
||||
- const: google,hayato
|
||||
- const: mediatek,mt8192
|
||||
- description: Google Hayato
|
||||
items:
|
||||
- const: google,hayato-rev1
|
||||
- const: google,hayato
|
||||
- const: mediatek,mt8192
|
||||
- description: Google Spherion rev4 (Acer Chromebook 514)
|
||||
items:
|
||||
- const: google,spherion-rev4
|
||||
- const: google,spherion
|
||||
- const: mediatek,mt8192
|
||||
- description: Google Spherion (Acer Chromebook 514)
|
||||
items:
|
||||
- const: google,spherion-rev3
|
||||
- const: google,spherion-rev2
|
||||
- const: google,spherion-rev1
|
||||
- const: google,spherion-rev0
|
||||
- const: google,spherion
|
||||
- const: mediatek,mt8192
|
||||
- description: Acer Tomato (Acer Chromebook Spin 513 CP513-2H)
|
||||
items:
|
||||
- enum:
|
||||
- google,tomato-rev2
|
||||
- google,tomato-rev1
|
||||
- const: google,tomato
|
||||
- const: mediatek,mt8195
|
||||
- description: Acer Tomato rev3 - 4 (Acer Chromebook Spin 513 CP513-2H)
|
||||
items:
|
||||
- const: google,tomato-rev4
|
||||
- const: google,tomato-rev3
|
||||
- const: google,tomato
|
||||
- const: mediatek,mt8195
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8186-evb
|
||||
- const: mediatek,mt8186
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8188-evb
|
||||
- const: mediatek,mt8188
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8192-evb
|
||||
- const: mediatek,mt8192
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8195-demo
|
||||
- mediatek,mt8195-evb
|
||||
- const: mediatek,mt8195
|
||||
- description: Google Burnet (HP Chromebook x360 11MK G3 EE)
|
||||
items:
|
||||
- const: google,burnet
|
||||
- const: mediatek,mt8183
|
||||
- description: Google Krane (Lenovo IdeaPad Duet, 10e,...)
|
||||
items:
|
||||
- enum:
|
||||
- google,krane-sku0
|
||||
- google,krane-sku176
|
||||
- const: google,krane
|
||||
- const: mediatek,mt8183
|
||||
- description: Google Cozmo (Acer Chromebook 314)
|
||||
items:
|
||||
- const: google,cozmo
|
||||
@@ -255,6 +200,13 @@ properties:
|
||||
- google,kodama-sku32
|
||||
- const: google,kodama
|
||||
- const: mediatek,mt8183
|
||||
- description: Google Krane (Lenovo IdeaPad Duet, 10e,...)
|
||||
items:
|
||||
- enum:
|
||||
- google,krane-sku0
|
||||
- google,krane-sku176
|
||||
- const: google,krane
|
||||
- const: mediatek,mt8183
|
||||
- description: Google Makomo (Lenovo 100e Chromebook 2nd Gen MTK 2)
|
||||
items:
|
||||
- enum:
|
||||
@@ -276,10 +228,125 @@ properties:
|
||||
- google,willow-sku1
|
||||
- const: google,willow
|
||||
- const: mediatek,mt8183
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8183-evb
|
||||
- const: mediatek,mt8183
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8183-pumpkin
|
||||
- const: mediatek,mt8183
|
||||
- description: Google Magneton (Lenovo IdeaPad Slim 3 Chromebook (14M868))
|
||||
items:
|
||||
- const: google,steelix-sku393219
|
||||
- const: google,steelix-sku393216
|
||||
- const: google,steelix
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Magneton (Lenovo IdeaPad Slim 3 Chromebook (14M868))
|
||||
items:
|
||||
- const: google,steelix-sku393220
|
||||
- const: google,steelix-sku393217
|
||||
- const: google,steelix
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Magneton (Lenovo IdeaPad Slim 3 Chromebook (14M868))
|
||||
items:
|
||||
- const: google,steelix-sku393221
|
||||
- const: google,steelix-sku393218
|
||||
- const: google,steelix
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Rusty (Lenovo 100e Chromebook Gen 4)
|
||||
items:
|
||||
- const: google,steelix-sku196609
|
||||
- const: google,steelix-sku196608
|
||||
- const: google,steelix
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Steelix (Lenovo 300e Yoga Chromebook Gen 4)
|
||||
items:
|
||||
- enum:
|
||||
- google,steelix-sku131072
|
||||
- google,steelix-sku131073
|
||||
- const: google,steelix
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Tentacruel (ASUS Chromebook CM14 Flip CM1402F)
|
||||
items:
|
||||
- const: google,tentacruel-sku262147
|
||||
- const: google,tentacruel-sku262146
|
||||
- const: google,tentacruel-sku262145
|
||||
- const: google,tentacruel-sku262144
|
||||
- const: google,tentacruel
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Tentacruel (ASUS Chromebook CM14 Flip CM1402F)
|
||||
items:
|
||||
- const: google,tentacruel-sku262151
|
||||
- const: google,tentacruel-sku262150
|
||||
- const: google,tentacruel-sku262149
|
||||
- const: google,tentacruel-sku262148
|
||||
- const: google,tentacruel
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Tentacool (ASUS Chromebook CM14 CM1402C)
|
||||
items:
|
||||
- const: google,tentacruel-sku327681
|
||||
- const: google,tentacruel
|
||||
- const: mediatek,mt8186
|
||||
- description: Google Tentacool (ASUS Chromebook CM14 CM1402C)
|
||||
items:
|
||||
- const: google,tentacruel-sku327683
|
||||
- const: google,tentacruel
|
||||
- const: mediatek,mt8186
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8186-evb
|
||||
- const: mediatek,mt8186
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8188-evb
|
||||
- const: mediatek,mt8188
|
||||
- description: Google Hayato
|
||||
items:
|
||||
- const: google,hayato-rev1
|
||||
- const: google,hayato
|
||||
- const: mediatek,mt8192
|
||||
- description: Google Hayato rev5
|
||||
items:
|
||||
- const: google,hayato-rev5-sku2
|
||||
- const: google,hayato-sku2
|
||||
- const: google,hayato
|
||||
- const: mediatek,mt8192
|
||||
- description: Google Spherion (Acer Chromebook 514)
|
||||
items:
|
||||
- const: google,spherion-rev3
|
||||
- const: google,spherion-rev2
|
||||
- const: google,spherion-rev1
|
||||
- const: google,spherion-rev0
|
||||
- const: google,spherion
|
||||
- const: mediatek,mt8192
|
||||
- description: Google Spherion rev4 (Acer Chromebook 514)
|
||||
items:
|
||||
- const: google,spherion-rev4
|
||||
- const: google,spherion
|
||||
- const: mediatek,mt8192
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8192-evb
|
||||
- const: mediatek,mt8192
|
||||
- description: Acer Tomato (Acer Chromebook Spin 513 CP513-2H)
|
||||
items:
|
||||
- enum:
|
||||
- google,tomato-rev2
|
||||
- google,tomato-rev1
|
||||
- const: google,tomato
|
||||
- const: mediatek,mt8195
|
||||
- description: Acer Tomato rev3 - 4 (Acer Chromebook Spin 513 CP513-2H)
|
||||
items:
|
||||
- const: google,tomato-rev4
|
||||
- const: google,tomato-rev3
|
||||
- const: google,tomato
|
||||
- const: mediatek,mt8195
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8195-demo
|
||||
- mediatek,mt8195-evb
|
||||
- const: mediatek,mt8195
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8365-evk
|
||||
@@ -287,6 +354,7 @@ properties:
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8395-evk
|
||||
- radxa,nio-12l
|
||||
- const: mediatek,mt8395
|
||||
- const: mediatek,mt8195
|
||||
- items:
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
SPM AVS Wrapper 2 (SAW2)
|
||||
|
||||
The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the
|
||||
Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable
|
||||
power-controller that transitions a piece of hardware (like a processor or
|
||||
subsystem) into and out of low power modes via a direct connection to
|
||||
the PMIC. It can also be wired up to interact with other processors in the
|
||||
system, notifying them when a low power state is entered or exited.
|
||||
|
||||
Multiple revisions of the SAW hardware are supported using these Device Nodes.
|
||||
SAW2 revisions differ in the register offset and configuration data. Also, the
|
||||
same revision of the SAW in different SoCs may have different configuration
|
||||
data due the differences in hardware capabilities. Hence the SoC name, the
|
||||
version of the SAW hardware in that SoC and the distinction between cpu (big
|
||||
or Little) or cache, may be needed to uniquely identify the SAW register
|
||||
configuration and initialization data. The compatible string is used to
|
||||
indicate this parameter.
|
||||
|
||||
PROPERTIES
|
||||
|
||||
- compatible:
|
||||
Usage: required
|
||||
Value type: <string>
|
||||
Definition: Must have
|
||||
"qcom,saw2"
|
||||
A more specific value could be one of:
|
||||
"qcom,apq8064-saw2-v1.1-cpu"
|
||||
"qcom,msm8226-saw2-v2.1-cpu"
|
||||
"qcom,msm8974-saw2-v2.1-cpu"
|
||||
"qcom,apq8084-saw2-v2.1-cpu"
|
||||
|
||||
- reg:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: the first element specifies the base address and size of
|
||||
the register region. An optional second element specifies
|
||||
the base address and size of the alias register region.
|
||||
|
||||
- regulator:
|
||||
Usage: optional
|
||||
Value type: boolean
|
||||
Definition: Indicates that this SPM device acts as a regulator device
|
||||
device for the core (CPU or Cache) the SPM is attached
|
||||
to.
|
||||
|
||||
Example 1:
|
||||
|
||||
power-controller@2099000 {
|
||||
compatible = "qcom,saw2";
|
||||
reg = <0x02099000 0x1000>, <0x02009000 0x1000>;
|
||||
regulator;
|
||||
};
|
||||
|
||||
Example 2:
|
||||
saw0: power-controller@f9089000 {
|
||||
compatible = "qcom,apq8084-saw2-v2.1-cpu", "qcom,saw2";
|
||||
reg = <0xf9089000 0x1000>, <0xf9009000 0x1000>;
|
||||
};
|
||||
@@ -10,17 +10,10 @@ maintainers:
|
||||
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
|
||||
description: |
|
||||
Some qcom based bootloaders identify the dtb blob based on a set of
|
||||
device properties like SoC and platform and revisions of those components.
|
||||
To support this scheme, we encode this information into the board compatible
|
||||
string.
|
||||
|
||||
Each board must specify a top-level board compatible string with the following
|
||||
format:
|
||||
|
||||
compatible = "qcom,<SoC>[-<soc_version>][-<foundry_id>]-<board>[/<subtype>][-<board_version>]"
|
||||
|
||||
The 'SoC' and 'board' elements are required. All other elements are optional.
|
||||
For devices using the Qualcomm SoC the "compatible" properties consists of
|
||||
one or several "manufacturer,model" strings, describing the device itself,
|
||||
followed by one or several "qcom,<SoC>" strings, describing the SoC used in
|
||||
the device.
|
||||
|
||||
The 'SoC' element must be one of the following strings:
|
||||
|
||||
@@ -90,43 +83,9 @@ description: |
|
||||
sm8650
|
||||
x1e80100
|
||||
|
||||
The 'board' element must be one of the following strings:
|
||||
|
||||
adp
|
||||
cdp
|
||||
dragonboard
|
||||
idp
|
||||
liquid
|
||||
mtp
|
||||
qcp
|
||||
qrd
|
||||
rb2
|
||||
ride
|
||||
sbc
|
||||
x100
|
||||
|
||||
The 'soc_version' and 'board_version' elements take the form of v<Major>.<Minor>
|
||||
where the minor number may be omitted when it's zero, i.e. v1.0 is the same
|
||||
as v1. If all versions of the 'board_version' elements match, then a
|
||||
wildcard '*' should be used, e.g. 'v*'.
|
||||
|
||||
The 'foundry_id' and 'subtype' elements are one or more digits from 0 to 9.
|
||||
|
||||
Examples:
|
||||
|
||||
"qcom,msm8916-v1-cdp-pm8916-v2.1"
|
||||
|
||||
A CDP board with an msm8916 SoC, version 1 paired with a pm8916 PMIC of version
|
||||
2.1.
|
||||
|
||||
"qcom,apq8074-v2.0-2-dragonboard/1-v0.1"
|
||||
|
||||
A dragonboard board v0.1 of subtype 1 with an apq8074 SoC version 2, made in
|
||||
foundry 2.
|
||||
|
||||
There are many devices in the list below that run the standard ChromeOS
|
||||
bootloader setup and use the open source depthcharge bootloader to boot the
|
||||
OS. These devices do not use the scheme described above. For details, see:
|
||||
OS. These devices use the bootflow explained at
|
||||
https://docs.kernel.org/arch/arm/google/chromebook-boot-flow.html
|
||||
|
||||
properties:
|
||||
@@ -187,6 +146,7 @@ properties:
|
||||
- microsoft,superman-lte
|
||||
- microsoft,tesla
|
||||
- motorola,peregrine
|
||||
- samsung,matisselte
|
||||
- const: qcom,msm8926
|
||||
- const: qcom,msm8226
|
||||
|
||||
@@ -244,11 +204,15 @@ properties:
|
||||
- samsung,a5u-eur
|
||||
- samsung,e5
|
||||
- samsung,e7
|
||||
- samsung,fortuna3g
|
||||
- samsung,gprimeltecan
|
||||
- samsung,grandmax
|
||||
- samsung,grandprimelte
|
||||
- samsung,gt510
|
||||
- samsung,gt58
|
||||
- samsung,j5
|
||||
- samsung,j5x
|
||||
- samsung,rossa
|
||||
- samsung,serranove
|
||||
- thwc,uf896
|
||||
- thwc,ufi001c
|
||||
@@ -988,6 +952,7 @@ properties:
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- xiaomi,curtana
|
||||
- xiaomi,joyeuse
|
||||
- const: qcom,sm7125
|
||||
|
||||
@@ -1035,6 +1000,7 @@ properties:
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,sm8550-hdk
|
||||
- qcom,sm8550-mtp
|
||||
- qcom,sm8550-qrd
|
||||
- const: qcom,sm8550
|
||||
|
||||
@@ -37,29 +37,16 @@ properties:
|
||||
- anbernic,rg351v
|
||||
- const: rockchip,rk3326
|
||||
|
||||
- description: Anbernic RG353P
|
||||
- description: Anbernic RK3566 Handheld Gaming Console
|
||||
items:
|
||||
- const: anbernic,rg353p
|
||||
- const: rockchip,rk3566
|
||||
|
||||
- description: Anbernic RG353PS
|
||||
items:
|
||||
- const: anbernic,rg353ps
|
||||
- const: rockchip,rk3566
|
||||
|
||||
- description: Anbernic RG353V
|
||||
items:
|
||||
- const: anbernic,rg353v
|
||||
- const: rockchip,rk3566
|
||||
|
||||
- description: Anbernic RG353VS
|
||||
items:
|
||||
- const: anbernic,rg353vs
|
||||
- const: rockchip,rk3566
|
||||
|
||||
- description: Anbernic RG503
|
||||
items:
|
||||
- const: anbernic,rg503
|
||||
- enum:
|
||||
- anbernic,rg353p
|
||||
- anbernic,rg353ps
|
||||
- anbernic,rg353v
|
||||
- anbernic,rg353vs
|
||||
- anbernic,rg503
|
||||
- anbernic,rg-arc-d
|
||||
- anbernic,rg-arc-s
|
||||
- const: rockchip,rk3566
|
||||
|
||||
- description: Asus Tinker board
|
||||
@@ -237,6 +224,13 @@ properties:
|
||||
- friendlyarm,nanopi-r5s
|
||||
- const: rockchip,rk3568
|
||||
|
||||
- description: FriendlyElec NanoPi R6 series boards
|
||||
items:
|
||||
- enum:
|
||||
- friendlyarm,nanopi-r6c
|
||||
- friendlyarm,nanopi-r6s
|
||||
- const: rockchip,rk3588s
|
||||
|
||||
- description: FriendlyElec NanoPC T6
|
||||
items:
|
||||
- const: friendlyarm,nanopc-t6
|
||||
@@ -626,9 +620,9 @@ properties:
|
||||
- const: openailab,eaidk-610
|
||||
- const: rockchip,rk3399
|
||||
|
||||
- description: Orange Pi RK3399 board
|
||||
- description: Xunlong Orange Pi RK3399 board
|
||||
items:
|
||||
- const: rockchip,rk3399-orangepi
|
||||
- const: xunlong,rk3399-orangepi
|
||||
- const: rockchip,rk3399
|
||||
|
||||
- description: Phytec phyCORE-RK3288 Rapid Development Kit
|
||||
@@ -655,6 +649,14 @@ properties:
|
||||
- const: pine64,pinephone-pro
|
||||
- const: rockchip,rk3399
|
||||
|
||||
- description: Pine64 PineTab2
|
||||
items:
|
||||
- enum:
|
||||
- pine64,pinetab2-v0.1
|
||||
- pine64,pinetab2-v2.0
|
||||
- const: pine64,pinetab2
|
||||
- const: rockchip,rk3566
|
||||
|
||||
- description: Pine64 Rock64
|
||||
items:
|
||||
- const: pine64,rock64
|
||||
@@ -692,11 +694,17 @@ properties:
|
||||
- description: Powkiddy RK3566 Handheld Gaming Console
|
||||
items:
|
||||
- enum:
|
||||
- powkiddy,rgb10max3
|
||||
- powkiddy,rgb30
|
||||
- powkiddy,rk2023
|
||||
- powkiddy,x55
|
||||
- const: rockchip,rk3566
|
||||
|
||||
- description: QNAP TS-433-4G 4-Bay NAS
|
||||
items:
|
||||
- const: qnap,ts433
|
||||
- const: rockchip,rk3568
|
||||
|
||||
- description: Radxa Compute Module 3(CM3)
|
||||
items:
|
||||
- enum:
|
||||
@@ -878,6 +886,11 @@ properties:
|
||||
- const: rockchip,rv1108-evb
|
||||
- const: rockchip,rv1108
|
||||
|
||||
- description: Rockchip Toybrick TB-RK3588X board
|
||||
items:
|
||||
- const: rockchip,rk3588-toybrick-x0
|
||||
- const: rockchip,rk3588
|
||||
|
||||
- description: Theobroma Systems PX30-uQ7 with Haikou baseboard
|
||||
items:
|
||||
- const: tsd,px30-ringneck-haikou
|
||||
@@ -898,6 +911,12 @@ properties:
|
||||
- const: tsd,rk3588-jaguar
|
||||
- const: rockchip,rk3588
|
||||
|
||||
- description: Theobroma Systems RK3588-Q7 with Haikou baseboard
|
||||
items:
|
||||
- const: tsd,rk3588-tiger-haikou
|
||||
- const: tsd,rk3588-tiger
|
||||
- const: rockchip,rk3588
|
||||
|
||||
- description: Tronsmart Orion R68 Meta
|
||||
items:
|
||||
- const: tronsmart,orion-r68-meta
|
||||
@@ -940,9 +959,9 @@ properties:
|
||||
- const: rockchip,rk3568-evb1-v10
|
||||
- const: rockchip,rk3568
|
||||
|
||||
- description: Rockchip RK3568 Banana Pi R2 Pro
|
||||
- description: Sinovoip RK3568 Banana Pi R2 Pro
|
||||
items:
|
||||
- const: rockchip,rk3568-bpi-r2pro
|
||||
- const: sinovoip,rk3568-bpi-r2pro
|
||||
- const: rockchip,rk3568
|
||||
|
||||
- description: Sonoff iHost Smart Home Hub
|
||||
|
||||
@@ -815,6 +815,12 @@ properties:
|
||||
- const: allwinner,r7-tv-dongle
|
||||
- const: allwinner,sun5i-a10s
|
||||
|
||||
- description: Remix Mini PC
|
||||
items:
|
||||
- const: jide,remix-mini-pc
|
||||
- const: allwinner,sun50i-h64
|
||||
- const: allwinner,sun50i-a64
|
||||
|
||||
- description: RerVision H3-DVK
|
||||
items:
|
||||
- const: rervision,h3-dvk
|
||||
@@ -835,6 +841,12 @@ properties:
|
||||
- const: sinlinx,sina33
|
||||
- const: allwinner,sun8i-a33
|
||||
|
||||
- description: Sipeed Longan Pi 3H board for the Sipeed Longan Module 3H
|
||||
items:
|
||||
- const: sipeed,longan-pi-3h
|
||||
- const: sipeed,longan-module-3h
|
||||
- const: allwinner,sun50i-h618
|
||||
|
||||
- description: SourceParts PopStick v1.1
|
||||
items:
|
||||
- const: sourceparts,popstick-v1.1
|
||||
|
||||
@@ -64,6 +64,14 @@ properties:
|
||||
- items:
|
||||
- const: asus,tf700t
|
||||
- const: nvidia,tegra30
|
||||
- description: LG Optimus 4X P880
|
||||
items:
|
||||
- const: lg,p880
|
||||
- const: nvidia,tegra30
|
||||
- description: LG Optimus Vu P895
|
||||
items:
|
||||
- const: lg,p895
|
||||
- const: nvidia,tegra30
|
||||
- items:
|
||||
- const: toradex,apalis_t30-eval
|
||||
- const: toradex,apalis_t30
|
||||
|
||||
@@ -27,7 +27,7 @@ properties:
|
||||
- const: pmc
|
||||
- const: wake
|
||||
- const: aotag
|
||||
- const: scratch
|
||||
- enum: [ scratch, misc ]
|
||||
- const: misc
|
||||
|
||||
interrupt-controller: true
|
||||
@@ -41,25 +41,43 @@ properties:
|
||||
description: If present, inverts the PMU interrupt signal.
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nvidia,tegra186-pmc
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 4
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nvidia,tegra186-pmc
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 4
|
||||
reg-names:
|
||||
maxItems: 4
|
||||
contains:
|
||||
const: scratch
|
||||
|
||||
reg-names:
|
||||
maxItems: 4
|
||||
else:
|
||||
properties:
|
||||
reg:
|
||||
minItems: 5
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nvidia,tegra194-pmc
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
minItems: 5
|
||||
reg-names:
|
||||
minItems: 5
|
||||
|
||||
reg-names:
|
||||
minItems: 5
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: nvidia,tegra234-pmc
|
||||
then:
|
||||
properties:
|
||||
reg-names:
|
||||
contains:
|
||||
const: misc
|
||||
|
||||
patternProperties:
|
||||
"^[a-z0-9]+-[a-z0-9]+$":
|
||||
|
||||
@@ -87,12 +87,20 @@ properties:
|
||||
- const: tq,am642-tqma6442l
|
||||
- const: ti,am642
|
||||
|
||||
- description: K3 AM642 SoC SolidRun SoM based boards
|
||||
items:
|
||||
- enum:
|
||||
- solidrun,am642-hummingboard-t
|
||||
- const: solidrun,am642-sr-som
|
||||
- const: ti,am642
|
||||
|
||||
- description: K3 AM654 SoC
|
||||
items:
|
||||
- enum:
|
||||
- siemens,iot2050-advanced
|
||||
- siemens,iot2050-advanced-m2
|
||||
- siemens,iot2050-advanced-pg2
|
||||
- siemens,iot2050-advanced-sm
|
||||
- siemens,iot2050-basic
|
||||
- siemens,iot2050-basic-pg2
|
||||
- ti,am654-evm
|
||||
@@ -123,6 +131,12 @@ properties:
|
||||
- ti,j721s2-evm
|
||||
- const: ti,j721s2
|
||||
|
||||
- description: K3 J722S SoC and Boards
|
||||
items:
|
||||
- enum:
|
||||
- ti,j722s-evm
|
||||
- const: ti,j722s
|
||||
|
||||
- description: K3 J784s4 SoC
|
||||
items:
|
||||
- enum:
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
Device tree bindings for i.MX Wireless External Interface Module (WEIM)
|
||||
|
||||
The term "wireless" does not imply that the WEIM is literally an interface
|
||||
without wires. It simply means that this module was originally designed for
|
||||
wireless and mobile applications that use low-power technology.
|
||||
|
||||
The actual devices are instantiated from the child nodes of a WEIM node.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible: Should contain one of the following:
|
||||
"fsl,imx1-weim"
|
||||
"fsl,imx27-weim"
|
||||
"fsl,imx51-weim"
|
||||
"fsl,imx50-weim"
|
||||
"fsl,imx6q-weim"
|
||||
- reg: A resource specifier for the register space
|
||||
(see the example below)
|
||||
- clocks: the clock, see the example below.
|
||||
- #address-cells: Must be set to 2 to allow memory address translation
|
||||
- #size-cells: Must be set to 1 to allow CS address passing
|
||||
- ranges: Must be set up to reflect the memory layout with four
|
||||
integer values for each chip-select line in use:
|
||||
|
||||
<cs-number> 0 <physical address of mapping> <size>
|
||||
|
||||
Optional properties:
|
||||
|
||||
- fsl,weim-cs-gpr: For "fsl,imx50-weim" and "fsl,imx6q-weim" type of
|
||||
devices, it should be the phandle to the system General
|
||||
Purpose Register controller that contains WEIM CS GPR
|
||||
register, e.g. IOMUXC_GPR1 on i.MX6Q. IOMUXC_GPR1[11:0]
|
||||
should be set up as one of the following 4 possible
|
||||
values depending on the CS space configuration.
|
||||
|
||||
IOMUXC_GPR1[11:0] CS0 CS1 CS2 CS3
|
||||
---------------------------------------------
|
||||
05 128M 0M 0M 0M
|
||||
033 64M 64M 0M 0M
|
||||
0113 64M 32M 32M 0M
|
||||
01111 32M 32M 32M 32M
|
||||
|
||||
In case that the property is absent, the reset value or
|
||||
what bootloader sets up in IOMUXC_GPR1[11:0] will be
|
||||
used.
|
||||
|
||||
- fsl,burst-clk-enable For "fsl,imx50-weim" and "fsl,imx6q-weim" type of
|
||||
devices, the presence of this property indicates that
|
||||
the weim bus should operate in Burst Clock Mode.
|
||||
|
||||
- fsl,continuous-burst-clk Make Burst Clock to output continuous clock.
|
||||
Without this option Burst Clock will output clock
|
||||
only when necessary. This takes effect only if
|
||||
"fsl,burst-clk-enable" is set.
|
||||
|
||||
Timing property for child nodes. It is mandatory, not optional.
|
||||
|
||||
- fsl,weim-cs-timing: The timing array, contains timing values for the
|
||||
child node. We get the CS indexes from the address
|
||||
ranges in the child 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:
|
||||
|
||||
weim: weim@21b8000 {
|
||||
compatible = "fsl,imx6q-weim";
|
||||
reg = <0x021b8000 0x4000>;
|
||||
clocks = <&clks 196>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0x08000000 0x08000000>;
|
||||
fsl,weim-cs-gpr = <&gpr>;
|
||||
|
||||
nor@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
reg = <0 0 0x02000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
bank-width = <2>;
|
||||
fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000
|
||||
0x0000c000 0x1404a38e 0x00000000>;
|
||||
};
|
||||
};
|
||||
|
||||
Example for an imx6q-based board, a multi-chipselect device connected to WEIM:
|
||||
|
||||
In this case, both chip select 0 and 1 will be configured with the same timing
|
||||
array values.
|
||||
|
||||
weim: weim@21b8000 {
|
||||
compatible = "fsl,imx6q-weim";
|
||||
reg = <0x021b8000 0x4000>;
|
||||
clocks = <&clks 196>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0x08000000 0x02000000
|
||||
1 0 0x0a000000 0x02000000
|
||||
2 0 0x0c000000 0x02000000
|
||||
3 0 0x0e000000 0x02000000>;
|
||||
fsl,weim-cs-gpr = <&gpr>;
|
||||
|
||||
acme@0 {
|
||||
compatible = "acme,whatever";
|
||||
reg = <0 0 0x100>, <0 0x400000 0x800>,
|
||||
<1 0x400000 0x800>;
|
||||
fsl,weim-cs-timing = <0x024400b1 0x00001010 0x20081100
|
||||
0x00000000 0xa0000240 0x00000000>;
|
||||
};
|
||||
};
|
||||
@@ -30,14 +30,16 @@ properties:
|
||||
- google,gs101-cmu-top
|
||||
- google,gs101-cmu-apm
|
||||
- google,gs101-cmu-misc
|
||||
- google,gs101-cmu-peric0
|
||||
- google,gs101-cmu-peric1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
maxItems: 3
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
maxItems: 3
|
||||
|
||||
"#clock-cells":
|
||||
const: 1
|
||||
@@ -88,6 +90,28 @@ allOf:
|
||||
- const: bus
|
||||
- const: sss
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- google,gs101-cmu-peric0
|
||||
- google,gs101-cmu-peric1
|
||||
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
items:
|
||||
- description: External reference clock (24.576 MHz)
|
||||
- description: Connectivity Peripheral 0/1 bus clock (from CMU_TOP)
|
||||
- description: Connectivity Peripheral 0/1 IP clock (from CMU_TOP)
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: oscclk
|
||||
- const: bus
|
||||
- const: ip
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
|
||||
@@ -31,10 +31,15 @@ properties:
|
||||
- const: bi_tcxo_ao
|
||||
- const: sleep_clk
|
||||
|
||||
power-domains:
|
||||
items:
|
||||
- description: CX domain
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
- clock-names
|
||||
- power-domains
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,gcc.yaml#
|
||||
@@ -44,6 +49,7 @@ unevaluatedProperties: false
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,rpmh.h>
|
||||
#include <dt-bindings/power/qcom-rpmpd.h>
|
||||
clock-controller@100000 {
|
||||
compatible = "qcom,gcc-sc8180x";
|
||||
reg = <0x00100000 0x1f0000>;
|
||||
@@ -51,6 +57,7 @@ examples:
|
||||
<&rpmhcc RPMH_CXO_CLK_A>,
|
||||
<&sleep_clk>;
|
||||
clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
|
||||
power-domains = <&rpmhpd SC8180X_CX>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
|
||||
@@ -17,6 +17,7 @@ description: |
|
||||
include/dt-bindings/clock/qcom,sm8450-camcc.h
|
||||
include/dt-bindings/clock/qcom,sm8550-camcc.h
|
||||
include/dt-bindings/clock/qcom,sc8280xp-camcc.h
|
||||
include/dt-bindings/clock/qcom,x1e80100-camcc.h
|
||||
|
||||
allOf:
|
||||
- $ref: qcom,gcc.yaml#
|
||||
@@ -27,6 +28,7 @@ properties:
|
||||
- qcom,sc8280xp-camcc
|
||||
- qcom,sm8450-camcc
|
||||
- qcom,sm8550-camcc
|
||||
- qcom,x1e80100-camcc
|
||||
|
||||
clocks:
|
||||
items:
|
||||
|
||||
@@ -18,6 +18,7 @@ description: |
|
||||
include/dt-bindings/clock/qcom,sm8550-gpucc.h
|
||||
include/dt-bindings/reset/qcom,sm8450-gpucc.h
|
||||
include/dt-bindings/reset/qcom,sm8650-gpucc.h
|
||||
include/dt-bindings/reset/qcom,x1e80100-gpucc.h
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
@@ -25,6 +26,7 @@ properties:
|
||||
- qcom,sm8450-gpucc
|
||||
- qcom,sm8550-gpucc
|
||||
- qcom,sm8650-gpucc
|
||||
- qcom,x1e80100-gpucc
|
||||
|
||||
clocks:
|
||||
items:
|
||||
|
||||
@@ -14,12 +14,17 @@ description: |
|
||||
Qualcomm display clock control module provides the clocks, resets and power
|
||||
domains on SM8550.
|
||||
|
||||
See also:: include/dt-bindings/clock/qcom,sm8550-dispcc.h
|
||||
See also:
|
||||
- include/dt-bindings/clock/qcom,sm8550-dispcc.h
|
||||
- include/dt-bindings/clock/qcom,sm8650-dispcc.h
|
||||
- include/dt-bindings/clock/qcom,x1e80100-dispcc.h
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sm8550-dispcc
|
||||
- qcom,sm8650-dispcc
|
||||
- qcom,x1e80100-dispcc
|
||||
|
||||
clocks:
|
||||
items:
|
||||
|
||||
@@ -23,6 +23,7 @@ properties:
|
||||
- enum:
|
||||
- qcom,sm8550-tcsr
|
||||
- qcom,sm8650-tcsr
|
||||
- qcom,x1e80100-tcsr
|
||||
- const: syscon
|
||||
|
||||
clocks:
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/clock/qcom,sm8650-dispcc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Display Clock & Reset Controller for SM8650
|
||||
|
||||
maintainers:
|
||||
- Bjorn Andersson <andersson@kernel.org>
|
||||
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||
|
||||
description: |
|
||||
Qualcomm display clock control module provides the clocks, resets and power
|
||||
domains on SM8650.
|
||||
|
||||
See also:: include/dt-bindings/clock/qcom,sm8650-dispcc.h
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sm8650-dispcc
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Board XO source
|
||||
- description: Board Always On XO source
|
||||
- description: Display's AHB clock
|
||||
- description: sleep clock
|
||||
- description: Byte clock from DSI PHY0
|
||||
- description: Pixel clock from DSI PHY0
|
||||
- description: Byte clock from DSI PHY1
|
||||
- description: Pixel clock from DSI PHY1
|
||||
- description: Link clock from DP PHY0
|
||||
- description: VCO DIV clock from DP PHY0
|
||||
- description: Link clock from DP PHY1
|
||||
- description: VCO DIV clock from DP PHY1
|
||||
- description: Link clock from DP PHY2
|
||||
- description: VCO DIV clock from DP PHY2
|
||||
- description: Link clock from DP PHY3
|
||||
- description: VCO DIV clock from DP PHY3
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
|
||||
'#reset-cells':
|
||||
const: 1
|
||||
|
||||
'#power-domain-cells':
|
||||
const: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
description:
|
||||
A phandle and PM domain specifier for the MMCX power domain.
|
||||
maxItems: 1
|
||||
|
||||
required-opps:
|
||||
description:
|
||||
A phandle to an OPP node describing required MMCX performance point.
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- '#clock-cells'
|
||||
- '#reset-cells'
|
||||
- '#power-domain-cells'
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/qcom,sm8650-gcc.h>
|
||||
#include <dt-bindings/clock/qcom,rpmh.h>
|
||||
#include <dt-bindings/power/qcom-rpmpd.h>
|
||||
#include <dt-bindings/power/qcom,rpmhpd.h>
|
||||
clock-controller@af00000 {
|
||||
compatible = "qcom,sm8650-dispcc";
|
||||
reg = <0x0af00000 0x10000>;
|
||||
clocks = <&rpmhcc RPMH_CXO_CLK>,
|
||||
<&rpmhcc RPMH_CXO_CLK_A>,
|
||||
<&gcc GCC_DISP_AHB_CLK>,
|
||||
<&sleep_clk>,
|
||||
<&dsi0_phy 0>,
|
||||
<&dsi0_phy 1>,
|
||||
<&dsi1_phy 0>,
|
||||
<&dsi1_phy 1>,
|
||||
<&dp0_phy 0>,
|
||||
<&dp0_phy 1>,
|
||||
<&dp1_phy 0>,
|
||||
<&dp1_phy 1>,
|
||||
<&dp2_phy 0>,
|
||||
<&dp2_phy 1>,
|
||||
<&dp3_phy 0>,
|
||||
<&dp3_phy 1>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <1>;
|
||||
power-domains = <&rpmhpd RPMHPD_MMCX>;
|
||||
required-opps = <&rpmhpd_opp_low_svs>;
|
||||
};
|
||||
...
|
||||
@@ -50,6 +50,7 @@ properties:
|
||||
- renesas,r8a779a0-cpg-mssr # R-Car V3U
|
||||
- renesas,r8a779f0-cpg-mssr # R-Car S4-8
|
||||
- renesas,r8a779g0-cpg-mssr # R-Car V4H
|
||||
- renesas,r8a779h0-cpg-mssr # R-Car V4M
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -29,6 +29,7 @@ properties:
|
||||
vddi-supply:
|
||||
description: regulator that supplies the vddi voltage
|
||||
backlight: true
|
||||
port: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
@@ -26,6 +26,12 @@ properties:
|
||||
- description: For implementations complying for Versal.
|
||||
const: xlnx,versal-firmware
|
||||
|
||||
- description: For implementations complying for Versal NET.
|
||||
items:
|
||||
- enum:
|
||||
- xlnx,versal-net-firmware
|
||||
- const: xlnx,versal-firmware
|
||||
|
||||
method:
|
||||
description: |
|
||||
The method of calling the PM-API firmware layer.
|
||||
@@ -41,7 +47,53 @@ properties:
|
||||
"#power-domain-cells":
|
||||
const: 1
|
||||
|
||||
versal_fpga:
|
||||
clock-controller:
|
||||
$ref: /schemas/clock/xlnx,versal-clk.yaml#
|
||||
description: The clock controller is a hardware block of Xilinx versal
|
||||
clock tree. It reads required input clock frequencies from the devicetree
|
||||
and acts as clock provider for all clock consumers of PS clocks.list of
|
||||
clock specifiers which are external input clocks to the given clock
|
||||
controller.
|
||||
type: object
|
||||
|
||||
gpio:
|
||||
$ref: /schemas/gpio/xlnx,zynqmp-gpio-modepin.yaml#
|
||||
description: The gpio node describes connect to PS_MODE pins via firmware
|
||||
interface.
|
||||
type: object
|
||||
|
||||
soc-nvmem:
|
||||
$ref: /schemas/nvmem/xlnx,zynqmp-nvmem.yaml#
|
||||
description: The ZynqMP MPSoC provides access to the hardware related data
|
||||
like SOC revision, IDCODE and specific purpose efuses.
|
||||
type: object
|
||||
|
||||
pcap:
|
||||
$ref: /schemas/fpga/xlnx,zynqmp-pcap-fpga.yaml
|
||||
description: The ZynqMP SoC uses the PCAP (Processor Configuration Port) to
|
||||
configure the Programmable Logic (PL). The configuration uses the
|
||||
firmware interface.
|
||||
type: object
|
||||
|
||||
pinctrl:
|
||||
$ref: /schemas/pinctrl/xlnx,zynqmp-pinctrl.yaml#
|
||||
description: The pinctrl node provides access to pinconfig and pincontrol
|
||||
functionality available in firmware.
|
||||
type: object
|
||||
|
||||
power-management:
|
||||
$ref: /schemas/power/reset/xlnx,zynqmp-power.yaml#
|
||||
description: The zynqmp-power node describes the power management
|
||||
configurations. It will control remote suspend/shutdown interfaces.
|
||||
type: object
|
||||
|
||||
reset-controller:
|
||||
$ref: /schemas/reset/xlnx,zynqmp-reset.yaml#
|
||||
description: The reset-controller node describes connection to the reset
|
||||
functionality via firmware interface.
|
||||
type: object
|
||||
|
||||
versal-fpga:
|
||||
$ref: /schemas/fpga/xlnx,versal-fpga.yaml#
|
||||
description: Compatible of the FPGA device.
|
||||
type: object
|
||||
@@ -53,15 +105,6 @@ properties:
|
||||
vector.
|
||||
type: object
|
||||
|
||||
clock-controller:
|
||||
$ref: /schemas/clock/xlnx,versal-clk.yaml#
|
||||
description: The clock controller is a hardware block of Xilinx versal
|
||||
clock tree. It reads required input clock frequencies from the devicetree
|
||||
and acts as clock provider for all clock consumers of PS clocks.list of
|
||||
clock specifiers which are external input clocks to the given clock
|
||||
controller.
|
||||
type: object
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
@@ -73,7 +116,38 @@ examples:
|
||||
firmware {
|
||||
zynqmp_firmware: zynqmp-firmware {
|
||||
#power-domain-cells = <1>;
|
||||
soc-nvmem {
|
||||
compatible = "xlnx,zynqmp-nvmem-fw";
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
soc_revision: soc-revision@0 {
|
||||
reg = <0x0 0x4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
gpio {
|
||||
compatible = "xlnx,zynqmp-gpio-modepin";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
pcap {
|
||||
compatible = "xlnx,zynqmp-pcap-fpga";
|
||||
};
|
||||
pinctrl {
|
||||
compatible = "xlnx,zynqmp-pinctrl";
|
||||
};
|
||||
power-management {
|
||||
compatible = "xlnx,zynqmp-power";
|
||||
interrupts = <0 35 4>;
|
||||
};
|
||||
reset-controller {
|
||||
compatible = "xlnx,zynqmp-reset";
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sata {
|
||||
@@ -84,7 +158,7 @@ examples:
|
||||
compatible = "xlnx,versal-firmware";
|
||||
method = "smc";
|
||||
|
||||
versal_fpga: versal_fpga {
|
||||
versal_fpga: versal-fpga {
|
||||
compatible = "xlnx,versal-fpga";
|
||||
};
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
versal_fpga: versal_fpga {
|
||||
versal_fpga: versal-fpga {
|
||||
compatible = "xlnx,versal-fpga";
|
||||
};
|
||||
|
||||
|
||||
+2
-2
@@ -2,10 +2,10 @@
|
||||
# Copyright (c) 2023 Imagination Technologies Ltd.
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/gpu/img,powervr.yaml#
|
||||
$id: http://devicetree.org/schemas/gpu/img,powervr-rogue.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Imagination Technologies PowerVR and IMG GPU
|
||||
title: Imagination Technologies PowerVR and IMG Rogue GPUs
|
||||
|
||||
maintainers:
|
||||
- Frank Binns <frank.binns@imgtec.com>
|
||||
@@ -0,0 +1,138 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
# Copyright (c) 2023 Imagination Technologies Ltd.
|
||||
# Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/gpu/img,powervr-sgx.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Imagination Technologies PowerVR SGX GPUs
|
||||
|
||||
maintainers:
|
||||
- Frank Binns <frank.binns@imgtec.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- ti,omap3430-gpu # Rev 121
|
||||
- ti,omap3630-gpu # Rev 125
|
||||
- const: img,powervr-sgx530
|
||||
- items:
|
||||
- enum:
|
||||
- ingenic,jz4780-gpu # Rev 130
|
||||
- ti,omap4430-gpu # Rev 120
|
||||
- const: img,powervr-sgx540
|
||||
- items:
|
||||
- enum:
|
||||
- allwinner,sun6i-a31-gpu # MP2 Rev 115
|
||||
- ti,omap4470-gpu # MP1 Rev 112
|
||||
- ti,omap5432-gpu # MP2 Rev 105
|
||||
- ti,am5728-gpu # MP2 Rev 116
|
||||
- ti,am6548-gpu # MP1 Rev 117
|
||||
- const: img,powervr-sgx544
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: core
|
||||
- const: mem
|
||||
- const: sys
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: ti,am6548-gpu
|
||||
then:
|
||||
required:
|
||||
- power-domains
|
||||
else:
|
||||
properties:
|
||||
power-domains: false
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- allwinner,sun6i-a31-gpu
|
||||
- ingenic,jz4780-gpu
|
||||
then:
|
||||
required:
|
||||
- clocks
|
||||
- clock-names
|
||||
else:
|
||||
properties:
|
||||
clocks: false
|
||||
clock-names: false
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: allwinner,sun6i-a31-gpu
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
clock-names:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: ingenic,jz4780-gpu
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
maxItems: 1
|
||||
clock-names:
|
||||
maxItems: 1
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
||||
|
||||
gpu@7000000 {
|
||||
compatible = "ti,am6548-gpu", "img,powervr-sgx544";
|
||||
reg = <0x7000000 0x10000>;
|
||||
interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
|
||||
power-domains = <&k3_pds 65 TI_SCI_PD_EXCLUSIVE>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
gpu: gpu@1c40000 {
|
||||
compatible = "allwinner,sun6i-a31-gpu", "img,powervr-sgx544";
|
||||
reg = <0x01c40000 0x10000>;
|
||||
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&ccu 1>, <&ccu 2>;
|
||||
clock-names = "core", "mem";
|
||||
};
|
||||
@@ -33,6 +33,7 @@ properties:
|
||||
- const: samsung,exynos7-hsi2c
|
||||
- items:
|
||||
- enum:
|
||||
- google,gs101-hsi2c
|
||||
- samsung,exynos850-hsi2c
|
||||
- const: samsung,exynosautov9-hsi2c
|
||||
- const: samsung,exynos5-hsi2c # Exynos5250 and Exynos5420
|
||||
|
||||
@@ -200,6 +200,18 @@ properties:
|
||||
#trigger-source-cells property in the source node.
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
|
||||
active-low:
|
||||
type: boolean
|
||||
description:
|
||||
Makes LED active low. To turn the LED ON, line needs to be
|
||||
set to low voltage instead of high.
|
||||
|
||||
inactive-high-impedance:
|
||||
type: boolean
|
||||
description:
|
||||
Set LED to high-impedance mode to turn the LED OFF. LED might also
|
||||
describe this mode as tristate.
|
||||
|
||||
# Required properties for flash LED child nodes:
|
||||
flash-max-microamp:
|
||||
description:
|
||||
|
||||
@@ -52,10 +52,6 @@ patternProperties:
|
||||
maxItems: 1
|
||||
description: LED pin number
|
||||
|
||||
active-low:
|
||||
type: boolean
|
||||
description: Makes LED active low
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
|
||||
@@ -78,10 +78,6 @@ patternProperties:
|
||||
- maximum: 23
|
||||
description: LED pin number (only LEDs 0 to 23 are valid).
|
||||
|
||||
active-low:
|
||||
type: boolean
|
||||
description: Makes LED active low.
|
||||
|
||||
brcm,hardware-controlled:
|
||||
type: boolean
|
||||
description: Makes this LED hardware controlled.
|
||||
|
||||
@@ -25,8 +25,6 @@ LED sub-node required properties:
|
||||
|
||||
LED sub-node optional properties:
|
||||
- label : see Documentation/devicetree/bindings/leds/common.txt
|
||||
- active-low : Boolean, makes LED active low.
|
||||
Default : false
|
||||
- default-state : see
|
||||
Documentation/devicetree/bindings/leds/common.txt
|
||||
- linux,default-trigger : see
|
||||
|
||||
@@ -41,9 +41,7 @@ properties:
|
||||
|
||||
pwm-names: true
|
||||
|
||||
active-low:
|
||||
description: For PWMs where the LED is wired to supply rather than ground.
|
||||
type: boolean
|
||||
active-low: true
|
||||
|
||||
color: true
|
||||
|
||||
|
||||
@@ -34,11 +34,6 @@ patternProperties:
|
||||
Maximum brightness possible for the LED
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
active-low:
|
||||
description:
|
||||
For PWMs where the LED is wired to supply rather than ground.
|
||||
type: boolean
|
||||
|
||||
required:
|
||||
- pwms
|
||||
- max-brightness
|
||||
|
||||
@@ -16,14 +16,18 @@ description: |+
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt8173-vcodec-enc-vp8
|
||||
- mediatek,mt8173-vcodec-enc
|
||||
- mediatek,mt8183-vcodec-enc
|
||||
- mediatek,mt8188-vcodec-enc
|
||||
- mediatek,mt8192-vcodec-enc
|
||||
- mediatek,mt8195-vcodec-enc
|
||||
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- mediatek,mt8173-vcodec-enc-vp8
|
||||
- mediatek,mt8173-vcodec-enc
|
||||
- mediatek,mt8183-vcodec-enc
|
||||
- mediatek,mt8188-vcodec-enc
|
||||
- mediatek,mt8192-vcodec-enc
|
||||
- mediatek,mt8195-vcodec-enc
|
||||
- items:
|
||||
- const: mediatek,mt8186-vcodec-enc
|
||||
- const: mediatek,mt8183-vcodec-enc
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -109,10 +113,7 @@ allOf:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt8173-vcodec-enc
|
||||
- mediatek,mt8188-vcodec-enc
|
||||
- mediatek,mt8192-vcodec-enc
|
||||
- mediatek,mt8195-vcodec-enc
|
||||
- mediatek,mt8173-vcodec-enc-vp8
|
||||
|
||||
then:
|
||||
properties:
|
||||
@@ -122,8 +123,8 @@ allOf:
|
||||
maxItems: 1
|
||||
clock-names:
|
||||
items:
|
||||
- const: venc_sel
|
||||
else: # for vp8 hw encoder
|
||||
- const: venc_lt_sel
|
||||
else:
|
||||
properties:
|
||||
clock:
|
||||
items:
|
||||
@@ -131,7 +132,7 @@ allOf:
|
||||
maxItems: 1
|
||||
clock-names:
|
||||
items:
|
||||
- const: venc_lt_sel
|
||||
- const: venc_sel
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
|
||||
@@ -38,7 +38,8 @@ properties:
|
||||
maxItems: 1
|
||||
|
||||
iommus:
|
||||
maxItems: 2
|
||||
minItems: 2
|
||||
maxItems: 4
|
||||
description: |
|
||||
Points to the respective IOMMU block with master port as argument, see
|
||||
Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details.
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/memory-controllers/fsl/fsl,imx-weim-peripherals.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: i.MX WEIM Bus Peripheral Nodes
|
||||
|
||||
maintainers:
|
||||
- Shawn Guo <shawnguo@kernel.org>
|
||||
- Sascha Hauer <s.hauer@pengutronix.de>
|
||||
|
||||
description:
|
||||
This binding is meant for the child nodes of the WEIM node. The node
|
||||
represents any device connected to the WEIM bus. It may be a Flash chip,
|
||||
RAM chip or Ethernet controller, etc. These properties are meant for
|
||||
configuring the WEIM settings/timings and will accompany the bindings
|
||||
supported by the respective device.
|
||||
|
||||
properties:
|
||||
reg: true
|
||||
|
||||
fsl,weim-cs-timing:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
description:
|
||||
Timing values for the child node.
|
||||
minItems: 2
|
||||
maxItems: 6
|
||||
|
||||
# the WEIM child will have its own native properties
|
||||
additionalProperties: true
|
||||
@@ -0,0 +1,204 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/memory-controllers/fsl/fsl,imx-weim.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: i.MX Wireless External Interface Module (WEIM)
|
||||
|
||||
maintainers:
|
||||
- Shawn Guo <shawnguo@kernel.org>
|
||||
- Sascha Hauer <s.hauer@pengutronix.de>
|
||||
|
||||
description:
|
||||
The term "wireless" does not imply that the WEIM is literally an interface
|
||||
without wires. It simply means that this module was originally designed for
|
||||
wireless and mobile applications that use low-power technology. The actual
|
||||
devices are instantiated from the child nodes of a WEIM node.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: "^memory-controller@[0-9a-f]+$"
|
||||
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- fsl,imx1-weim
|
||||
- fsl,imx27-weim
|
||||
- fsl,imx50-weim
|
||||
- fsl,imx51-weim
|
||||
- fsl,imx6q-weim
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx31-weim
|
||||
- fsl,imx35-weim
|
||||
- const: fsl,imx27-weim
|
||||
- items:
|
||||
- enum:
|
||||
- fsl,imx6sx-weim
|
||||
- fsl,imx6ul-weim
|
||||
- const: fsl,imx6q-weim
|
||||
|
||||
"#address-cells":
|
||||
const: 2
|
||||
|
||||
"#size-cells":
|
||||
const: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
ranges: true
|
||||
|
||||
fsl,weim-cs-gpr:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description: |
|
||||
Phandle to the system General Purpose Register controller that contains
|
||||
WEIM CS GPR register, e.g. IOMUXC_GPR1 on i.MX6Q. IOMUXC_GPR1[11:0]
|
||||
should be set up as one of the following 4 possible values depending on
|
||||
the CS space configuration.
|
||||
|
||||
IOMUXC_GPR1[11:0] CS0 CS1 CS2 CS3
|
||||
---------------------------------------------
|
||||
05 128M 0M 0M 0M
|
||||
033 64M 64M 0M 0M
|
||||
0113 64M 32M 32M 0M
|
||||
01111 32M 32M 32M 32M
|
||||
|
||||
In case that the property is absent, the reset value or what bootloader
|
||||
sets up in IOMUXC_GPR1[11:0] will be used.
|
||||
|
||||
fsl,burst-clk-enable:
|
||||
type: boolean
|
||||
description:
|
||||
The presence of this property indicates that the weim bus should operate
|
||||
in Burst Clock Mode.
|
||||
|
||||
fsl,continuous-burst-clk:
|
||||
type: boolean
|
||||
description:
|
||||
Make Burst Clock to output continuous clock. Without this option Burst
|
||||
Clock will output clock only when necessary.
|
||||
|
||||
patternProperties:
|
||||
"^.*@[0-7],[0-9a-f]+$":
|
||||
type: object
|
||||
description: Devices attached to chip selects are represented as subnodes.
|
||||
$ref: fsl,imx-weim-peripherals.yaml
|
||||
additionalProperties: true
|
||||
required:
|
||||
- fsl,weim-cs-timing
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
- ranges
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
not:
|
||||
contains:
|
||||
enum:
|
||||
- fsl,imx50-weim
|
||||
- fsl,imx6q-weim
|
||||
then:
|
||||
properties:
|
||||
fsl,weim-cs-gpr: false
|
||||
fsl,burst-clk-enable: false
|
||||
- if:
|
||||
not:
|
||||
required:
|
||||
- fsl,burst-clk-enable
|
||||
then:
|
||||
properties:
|
||||
fsl,continuous-burst-clk: false
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: fsl,imx1-weim
|
||||
then:
|
||||
patternProperties:
|
||||
"^.*@[0-7],[0-9a-f]+$":
|
||||
properties:
|
||||
fsl,weim-cs-timing:
|
||||
items:
|
||||
items:
|
||||
- description: CSxU
|
||||
- description: CSxL
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- fsl,imx27-weim
|
||||
- fsl,imx31-weim
|
||||
- fsl,imx35-weim
|
||||
then:
|
||||
patternProperties:
|
||||
"^.*@[0-7],[0-9a-f]+$":
|
||||
properties:
|
||||
fsl,weim-cs-timing:
|
||||
items:
|
||||
items:
|
||||
- description: CSCRxU
|
||||
- description: CSCRxL
|
||||
- description: CSCRxA
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- fsl,imx50-weim
|
||||
- fsl,imx51-weim
|
||||
- fsl,imx6q-weim
|
||||
- fsl,imx6sx-weim
|
||||
- fsl,imx6ul-weim
|
||||
then:
|
||||
patternProperties:
|
||||
"^.*@[0-7],[0-9a-f]+$":
|
||||
properties:
|
||||
fsl,weim-cs-timing:
|
||||
items:
|
||||
items:
|
||||
- description: CSxGCR1
|
||||
- description: CSxGCR2
|
||||
- description: CSxRCR1
|
||||
- description: CSxRCR2
|
||||
- description: CSxWCR1
|
||||
- description: CSxWCR2
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
memory-controller@21b8000 {
|
||||
compatible = "fsl,imx6q-weim";
|
||||
reg = <0x021b8000 0x4000>;
|
||||
clocks = <&clks 196>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0x08000000 0x08000000>;
|
||||
fsl,weim-cs-gpr = <&gpr>;
|
||||
|
||||
flash@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
reg = <0 0 0x02000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
bank-width = <2>;
|
||||
fsl,weim-cs-timing = <0x00620081 0x00000001 0x1c022000
|
||||
0x0000c000 0x1404a38e 0x00000000>;
|
||||
};
|
||||
};
|
||||
@@ -37,5 +37,6 @@ allOf:
|
||||
- $ref: ingenic,nemc-peripherals.yaml#
|
||||
- $ref: intel,ixp4xx-expansion-peripheral-props.yaml#
|
||||
- $ref: ti,gpmc-child.yaml#
|
||||
- $ref: fsl/fsl,imx-weim-peripherals.yaml
|
||||
|
||||
additionalProperties: true
|
||||
@@ -145,7 +145,7 @@ patternProperties:
|
||||
"^emc-table@[0-9]+$":
|
||||
$ref: "#/$defs/emc-table"
|
||||
|
||||
"^emc-tables@[a-z0-9-]+$":
|
||||
"^emc-tables@[a-f0-9-]+$":
|
||||
type: object
|
||||
properties:
|
||||
reg:
|
||||
|
||||
@@ -45,6 +45,7 @@ properties:
|
||||
- items:
|
||||
- enum:
|
||||
- renesas,r8a779g0-rpc-if # R-Car V4H
|
||||
- renesas,r8a779h0-rpc-if # R-Car V4M
|
||||
- const: renesas,rcar-gen4-rpc-if # a generic R-Car gen4 device
|
||||
|
||||
- items:
|
||||
|
||||
@@ -23,7 +23,9 @@ maintainers:
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: st,stm32mp1-fmc2-ebi
|
||||
enum:
|
||||
- st,stm32mp1-fmc2-ebi
|
||||
- st,stm32mp25-fmc2-ebi
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
@@ -34,6 +36,9 @@ properties:
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
"#address-cells":
|
||||
const: 2
|
||||
|
||||
|
||||
@@ -15,6 +15,10 @@ description: Broadcom Ethernet controller first introduced with 72165
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- brcm,bcm74165b0-asp
|
||||
- const: brcm,asp-v2.2
|
||||
- items:
|
||||
- enum:
|
||||
- brcm,bcm74165-asp
|
||||
|
||||
@@ -24,6 +24,7 @@ properties:
|
||||
- brcm,genet-mdio-v5
|
||||
- brcm,asp-v2.0-mdio
|
||||
- brcm,asp-v2.1-mdio
|
||||
- brcm,asp-v2.2-mdio
|
||||
- brcm,unimac-mdio
|
||||
|
||||
reg:
|
||||
|
||||
@@ -28,6 +28,8 @@ Optional properties:
|
||||
available with tcan4552/4553.
|
||||
- device-wake-gpios: Wake up GPIO to wake up the TCAN device. Not
|
||||
available with tcan4552/4553.
|
||||
- wakeup-source: Leave the chip running when suspended, and configure
|
||||
the RX interrupt to wake up the device.
|
||||
|
||||
Example:
|
||||
tcan4x5x: tcan4x5x@0 {
|
||||
@@ -42,4 +44,5 @@ tcan4x5x: tcan4x5x@0 {
|
||||
device-state-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
|
||||
device-wake-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
|
||||
wakeup-source;
|
||||
};
|
||||
@@ -49,6 +49,10 @@ properties:
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
xlnx,has-ecc:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description: CAN TX_OL, TX_TL and RX FIFOs have ECC support(AXI CAN)
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
@@ -137,6 +141,7 @@ examples:
|
||||
interrupts = <GIC_SPI 59 IRQ_TYPE_EDGE_RISING>;
|
||||
tx-fifo-depth = <0x40>;
|
||||
rx-fifo-depth = <0x40>;
|
||||
xlnx,has-ecc;
|
||||
};
|
||||
|
||||
- |
|
||||
|
||||
@@ -59,6 +59,11 @@ properties:
|
||||
- cdns,gem # Generic
|
||||
- cdns,macb # Generic
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- microchip,sam9x7-gem # Microchip SAM9X7 gigabit ethernet interface
|
||||
- const: microchip,sama7g5-gem # Microchip SAMA7G5 gigabit ethernet interface
|
||||
|
||||
reg:
|
||||
minItems: 1
|
||||
items:
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
Atheros AR9331 built-in switch
|
||||
=============================
|
||||
|
||||
It is a switch built-in to Atheros AR9331 WiSoC and addressable over internal
|
||||
MDIO bus. All PHYs are built-in as well.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible: should be: "qca,ar9331-switch"
|
||||
- reg: Address on the MII bus for the switch.
|
||||
- resets : Must contain an entry for each entry in reset-names.
|
||||
- reset-names : Must include the following entries: "switch"
|
||||
- interrupt-parent: Phandle to the parent interrupt controller
|
||||
- interrupts: IRQ line for the switch
|
||||
- interrupt-controller: Indicates the switch is itself an interrupt
|
||||
controller. This is used for the PHY interrupts.
|
||||
- #interrupt-cells: must be 1
|
||||
- mdio: Container of PHY and devices on the switches MDIO bus.
|
||||
|
||||
See Documentation/devicetree/bindings/net/dsa/dsa.txt for a list of additional
|
||||
required and optional properties.
|
||||
Examples:
|
||||
|
||||
eth0: ethernet@19000000 {
|
||||
compatible = "qca,ar9330-eth";
|
||||
reg = <0x19000000 0x200>;
|
||||
interrupts = <4>;
|
||||
|
||||
resets = <&rst 9>, <&rst 22>;
|
||||
reset-names = "mac", "mdio";
|
||||
clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
|
||||
clock-names = "eth", "mdio";
|
||||
|
||||
phy-mode = "mii";
|
||||
phy-handle = <&phy_port4>;
|
||||
};
|
||||
|
||||
eth1: ethernet@1a000000 {
|
||||
compatible = "qca,ar9330-eth";
|
||||
reg = <0x1a000000 0x200>;
|
||||
interrupts = <5>;
|
||||
resets = <&rst 13>, <&rst 23>;
|
||||
reset-names = "mac", "mdio";
|
||||
clocks = <&pll ATH79_CLK_AHB>, <&pll ATH79_CLK_AHB>;
|
||||
clock-names = "eth", "mdio";
|
||||
|
||||
phy-mode = "gmii";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
switch10: switch@10 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
compatible = "qca,ar9331-switch";
|
||||
reg = <0x10>;
|
||||
resets = <&rst 8>;
|
||||
reset-names = "switch";
|
||||
|
||||
interrupt-parent = <&miscintc>;
|
||||
interrupts = <12>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
switch_port0: port@0 {
|
||||
reg = <0x0>;
|
||||
ethernet = <ð1>;
|
||||
|
||||
phy-mode = "gmii";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
|
||||
switch_port1: port@1 {
|
||||
reg = <0x1>;
|
||||
phy-handle = <&phy_port0>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
|
||||
switch_port2: port@2 {
|
||||
reg = <0x2>;
|
||||
phy-handle = <&phy_port1>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
|
||||
switch_port3: port@3 {
|
||||
reg = <0x3>;
|
||||
phy-handle = <&phy_port2>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
|
||||
switch_port4: port@4 {
|
||||
reg = <0x4>;
|
||||
phy-handle = <&phy_port3>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
};
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
interrupt-parent = <&switch10>;
|
||||
|
||||
phy_port0: phy@0 {
|
||||
reg = <0x0>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port1: phy@1 {
|
||||
reg = <0x1>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port2: phy@2 {
|
||||
reg = <0x2>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port3: phy@3 {
|
||||
reg = <0x3>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port4: phy@4 {
|
||||
reg = <0x4>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -31,6 +31,7 @@ properties:
|
||||
- microchip,ksz9893
|
||||
- microchip,ksz9563
|
||||
- microchip,ksz8563
|
||||
- microchip,ksz8567
|
||||
|
||||
reset-gpios:
|
||||
description:
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/dsa/qca,ar9331.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Atheros AR9331 built-in switch
|
||||
|
||||
maintainers:
|
||||
- Oleksij Rempel <o.rempel@pengutronix.de>
|
||||
|
||||
description:
|
||||
Qualcomm Atheros AR9331 is a switch built-in to Atheros AR9331 WiSoC and
|
||||
addressable over internal MDIO bus. All PHYs are built-in as well.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: qca,ar9331-switch
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 1
|
||||
|
||||
mdio:
|
||||
$ref: /schemas/net/mdio.yaml#
|
||||
unevaluatedProperties: false
|
||||
properties:
|
||||
interrupt-parent: true
|
||||
|
||||
patternProperties:
|
||||
'(ethernet-)?phy@[0-4]+$':
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
reg: true
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: switch
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- '#interrupt-cells'
|
||||
- mdio
|
||||
- ports
|
||||
- resets
|
||||
- reset-names
|
||||
|
||||
allOf:
|
||||
- $ref: dsa.yaml#/$defs/ethernet-ports
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
switch10: switch@10 {
|
||||
compatible = "qca,ar9331-switch";
|
||||
reg = <0x10>;
|
||||
|
||||
interrupt-parent = <&miscintc>;
|
||||
interrupts = <12>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
|
||||
resets = <&rst 8>;
|
||||
reset-names = "switch";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0x0>;
|
||||
ethernet = <ð1>;
|
||||
|
||||
phy-mode = "gmii";
|
||||
|
||||
fixed-link {
|
||||
speed = <1000>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <0x1>;
|
||||
phy-handle = <&phy_port0>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
|
||||
port@2 {
|
||||
reg = <0x2>;
|
||||
phy-handle = <&phy_port1>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
|
||||
port@3 {
|
||||
reg = <0x3>;
|
||||
phy-handle = <&phy_port2>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
|
||||
port@4 {
|
||||
reg = <0x4>;
|
||||
phy-handle = <&phy_port3>;
|
||||
phy-mode = "internal";
|
||||
};
|
||||
};
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
interrupt-parent = <&switch10>;
|
||||
|
||||
phy_port0: ethernet-phy@0 {
|
||||
reg = <0x0>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port1: ethernet-phy@1 {
|
||||
reg = <0x1>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port2: ethernet-phy@2 {
|
||||
reg = <0x2>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port3: ethernet-phy@3 {
|
||||
reg = <0x3>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
|
||||
phy_port4: ethernet-phy@4 {
|
||||
reg = <0x4>;
|
||||
interrupts = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -59,6 +59,9 @@ properties:
|
||||
description: GPIO to be used to reset the whole device
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
realtek,disable-leds:
|
||||
type: boolean
|
||||
description: |
|
||||
@@ -127,7 +130,6 @@ else:
|
||||
- mdc-gpios
|
||||
- mdio-gpios
|
||||
- mdio
|
||||
- reset-gpios
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
@@ -14,7 +14,6 @@ properties:
|
||||
pattern: "^ethernet(@.*)?$"
|
||||
|
||||
label:
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
description: Human readable label on a port of a box.
|
||||
|
||||
local-mac-address:
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/ethernet-phy-package.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Ethernet PHY Package Common Properties
|
||||
|
||||
maintainers:
|
||||
- Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
description:
|
||||
PHY packages are multi-port Ethernet PHY of the same family
|
||||
and each Ethernet PHY is affected by the global configuration
|
||||
of the PHY package.
|
||||
|
||||
Each reg of the PHYs defined in the PHY package node is
|
||||
absolute and describe the real address of the Ethernet PHY on
|
||||
the MDIO bus.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: "^ethernet-phy-package@[a-f0-9]+$"
|
||||
|
||||
reg:
|
||||
minimum: 0
|
||||
maximum: 31
|
||||
description:
|
||||
The base ID number for the PHY package.
|
||||
Commonly the ID of the first PHY in the PHY package.
|
||||
|
||||
Some PHY in the PHY package might be not defined but
|
||||
still occupy ID on the device (just not attached to
|
||||
anything) hence the PHY package reg might correspond
|
||||
to a not attached PHY (offset 0).
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
^ethernet-phy@[a-f0-9]+$:
|
||||
$ref: ethernet-phy.yaml#
|
||||
|
||||
required:
|
||||
- reg
|
||||
- '#address-cells'
|
||||
- '#size-cells'
|
||||
|
||||
additionalProperties: true
|
||||
@@ -224,6 +224,9 @@ properties:
|
||||
Can be omitted thus no delay is observed. Delay is in range of 1ms to 1000ms.
|
||||
Other delays are invalid.
|
||||
|
||||
iommus:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
@@ -73,7 +73,7 @@ examples:
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
spi {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/qca,qca808x.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Atheros QCA808X PHY
|
||||
|
||||
maintainers:
|
||||
- Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
description:
|
||||
QCA808X PHYs can have up to 3 LEDs attached.
|
||||
All 3 LEDs are disabled by default.
|
||||
2 LEDs have dedicated pins with the 3rd LED having the
|
||||
double function of Interrupt LEDs/GPIO or additional LED.
|
||||
|
||||
By default this special PIN is set to LED function.
|
||||
|
||||
allOf:
|
||||
- $ref: ethernet-phy.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- ethernet-phy-id004d.d101
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethernet-phy@0 {
|
||||
compatible = "ethernet-phy-id004d.d101";
|
||||
reg = <0>;
|
||||
|
||||
leds {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
default-state = "keep";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -37,12 +37,14 @@ properties:
|
||||
items:
|
||||
- description: Combined signal for various interrupt events
|
||||
- description: The interrupt that occurs when Rx exits the LPI state
|
||||
- description: The interrupt that occurs when HW safety error triggered
|
||||
|
||||
interrupt-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: macirq
|
||||
- const: eth_lpi
|
||||
- enum: [eth_lpi, sfty]
|
||||
- const: sfty
|
||||
|
||||
clocks:
|
||||
maxItems: 4
|
||||
@@ -89,8 +91,9 @@ examples:
|
||||
<&gcc GCC_ETH_PTP_CLK>,
|
||||
<&gcc GCC_ETH_RGMII_CLK>;
|
||||
interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "macirq", "eth_lpi";
|
||||
<GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 782 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-names = "macirq", "eth_lpi", "sfty";
|
||||
|
||||
rx-fifo-depth = <4096>;
|
||||
tx-fifo-depth = <4096>;
|
||||
|
||||
@@ -159,7 +159,7 @@ properties:
|
||||
when the AP (not the modem) performs early initialization.
|
||||
|
||||
firmware-name:
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
maxItems: 1
|
||||
description:
|
||||
If present, name (or relative path) of the file within the
|
||||
firmware search path containing the firmware image used when
|
||||
|
||||
@@ -44,6 +44,21 @@ properties:
|
||||
items:
|
||||
- const: gcc_mdio_ahb_clk
|
||||
|
||||
clock-frequency:
|
||||
description:
|
||||
The MDIO bus clock that must be output by the MDIO bus hardware, if
|
||||
absent, the default hardware values are used.
|
||||
|
||||
MDC rate is feed by an external clock (fixed 100MHz) and is divider
|
||||
internally. The default divider is /256 resulting in the default rate
|
||||
applied of 390KHz.
|
||||
|
||||
To follow 802.3 standard that instruct up to 2.5MHz by default, if
|
||||
this property is not declared and the divider is set to /256, by
|
||||
default 1.5625Mhz is select.
|
||||
enum: [ 390625, 781250, 1562500, 3125000, 6250000, 12500000 ]
|
||||
default: 1562500
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/qcom,qca807x.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm QCA807x Ethernet PHY
|
||||
|
||||
maintainers:
|
||||
- Christian Marangi <ansuelsmth@gmail.com>
|
||||
- Robert Marko <robert.marko@sartura.hr>
|
||||
|
||||
description: |
|
||||
Qualcomm QCA8072/5 Ethernet PHY is PHY package of 2 or 5
|
||||
IEEE 802.3 clause 22 compliant 10BASE-Te, 100BASE-TX and
|
||||
1000BASE-T PHY-s.
|
||||
|
||||
They feature 2 SerDes, one for PSGMII or QSGMII connection with
|
||||
MAC, while second one is SGMII for connection to MAC or fiber.
|
||||
|
||||
Both models have a combo port that supports 1000BASE-X and
|
||||
100BASE-FX fiber.
|
||||
|
||||
Each PHY inside of QCA807x series has 4 digitally controlled
|
||||
output only pins that natively drive LED-s for up to 2 attached
|
||||
LEDs. Some vendor also use these 4 output for GPIO usage without
|
||||
attaching LEDs.
|
||||
|
||||
Note that output pins can be set to drive LEDs OR GPIO, mixed
|
||||
definition are not accepted.
|
||||
|
||||
$ref: ethernet-phy-package.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,qca8072-package
|
||||
- qcom,qca8075-package
|
||||
|
||||
qcom,package-mode:
|
||||
description: |
|
||||
PHY package can be configured in 3 mode following this table:
|
||||
|
||||
First Serdes mode Second Serdes mode
|
||||
Option 1 PSGMII for copper Disabled
|
||||
ports 0-4
|
||||
Option 2 PSGMII for copper 1000BASE-X / 100BASE-FX
|
||||
ports 0-4
|
||||
Option 3 QSGMII for copper SGMII for
|
||||
ports 0-3 copper port 4
|
||||
|
||||
PSGMII mode (option 1 or 2) is configured dynamically based on
|
||||
the presence of a connected SFP device.
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
enum:
|
||||
- qsgmii
|
||||
- psgmii
|
||||
default: psgmii
|
||||
|
||||
qcom,tx-drive-strength-milliwatt:
|
||||
description: set the TX Amplifier value in mv.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [140, 160, 180, 200, 220,
|
||||
240, 260, 280, 300, 320,
|
||||
400, 500, 600]
|
||||
default: 600
|
||||
|
||||
patternProperties:
|
||||
^ethernet-phy@[a-f0-9]+$:
|
||||
$ref: ethernet-phy.yaml#
|
||||
|
||||
properties:
|
||||
qcom,dac-full-amplitude:
|
||||
description:
|
||||
Set Analog MDI driver amplitude to FULL.
|
||||
|
||||
With this not defined, amplitude is set to DSP.
|
||||
(amplitude is adjusted based on cable length)
|
||||
|
||||
With this enabled and qcom,dac-full-bias-current
|
||||
and qcom,dac-disable-bias-current-tweak disabled,
|
||||
bias current is half.
|
||||
type: boolean
|
||||
|
||||
qcom,dac-full-bias-current:
|
||||
description:
|
||||
Set Analog MDI driver bias current to FULL.
|
||||
|
||||
With this not defined, bias current is set to DSP.
|
||||
(bias current is adjusted based on cable length)
|
||||
|
||||
Actual bias current might be different with
|
||||
qcom,dac-disable-bias-current-tweak disabled.
|
||||
type: boolean
|
||||
|
||||
qcom,dac-disable-bias-current-tweak:
|
||||
description: |
|
||||
Set Analog MDI driver bias current to disable tweak
|
||||
to bias current.
|
||||
|
||||
With this not defined, bias current tweak are enabled
|
||||
by default.
|
||||
|
||||
With this enabled the following tweak are NOT applied:
|
||||
- With both FULL amplitude and FULL bias current: bias current
|
||||
is set to half.
|
||||
- With only DSP amplitude: bias current is set to half and
|
||||
is set to 1/4 with cable < 10m.
|
||||
- With DSP bias current (included both DSP amplitude and
|
||||
DSP bias current): bias current is half the detected current
|
||||
with cable < 10m.
|
||||
type: boolean
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
if:
|
||||
required:
|
||||
- gpio-controller
|
||||
then:
|
||||
properties:
|
||||
leds: false
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethernet-phy-package@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "qcom,qca8075-package";
|
||||
reg = <0>;
|
||||
|
||||
qcom,package-mode = "qsgmii";
|
||||
|
||||
ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
|
||||
leds {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
led@0 {
|
||||
reg = <0>;
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_LAN;
|
||||
default-state = "keep";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
ethernet-phy@2 {
|
||||
reg = <2>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
ethernet-phy@3 {
|
||||
reg = <3>;
|
||||
};
|
||||
|
||||
ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -46,6 +46,7 @@ properties:
|
||||
- enum:
|
||||
- renesas,etheravb-r8a779a0 # R-Car V3U
|
||||
- renesas,etheravb-r8a779g0 # R-Car V4H
|
||||
- renesas,etheravb-r8a779h0 # R-Car V4M
|
||||
- const: renesas,etheravb-rcar-gen4 # R-Car Gen4
|
||||
|
||||
- items:
|
||||
|
||||
@@ -95,6 +95,7 @@ properties:
|
||||
- snps,dwmac-5.20
|
||||
- snps,dwxgmac
|
||||
- snps,dwxgmac-2.10
|
||||
- starfive,jh7100-dwmac
|
||||
- starfive,jh7110-dwmac
|
||||
|
||||
reg:
|
||||
@@ -107,13 +108,15 @@ properties:
|
||||
- description: Combined signal for various interrupt events
|
||||
- description: The interrupt to manage the remote wake-up packet detection
|
||||
- description: The interrupt that occurs when Rx exits the LPI state
|
||||
- description: The interrupt that occurs when HW safety error triggered
|
||||
|
||||
interrupt-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: macirq
|
||||
- enum: [eth_wake_irq, eth_lpi]
|
||||
- const: eth_lpi
|
||||
- enum: [eth_wake_irq, eth_lpi, sfty]
|
||||
- enum: [eth_wake_irq, eth_lpi, sfty]
|
||||
- enum: [eth_wake_irq, eth_lpi, sfty]
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
@@ -144,10 +147,12 @@ properties:
|
||||
- description: AHB reset
|
||||
|
||||
reset-names:
|
||||
minItems: 1
|
||||
items:
|
||||
- const: stmmaceth
|
||||
- const: ahb
|
||||
oneOf:
|
||||
- items:
|
||||
- enum: [stmmaceth, ahb]
|
||||
- items:
|
||||
- const: stmmaceth
|
||||
- const: ahb
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
@@ -16,16 +16,20 @@ select:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- starfive,jh7100-dwmac
|
||||
- starfive,jh7110-dwmac
|
||||
required:
|
||||
- compatible
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- starfive,jh7110-dwmac
|
||||
- const: snps,dwmac-5.20
|
||||
oneOf:
|
||||
- items:
|
||||
- const: starfive,jh7100-dwmac
|
||||
- const: snps,dwmac
|
||||
- items:
|
||||
- const: starfive,jh7110-dwmac
|
||||
- const: snps,dwmac-5.20
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
@@ -46,24 +50,6 @@ properties:
|
||||
- const: tx
|
||||
- const: gtx
|
||||
|
||||
interrupts:
|
||||
minItems: 3
|
||||
maxItems: 3
|
||||
|
||||
interrupt-names:
|
||||
minItems: 3
|
||||
maxItems: 3
|
||||
|
||||
resets:
|
||||
items:
|
||||
- description: MAC Reset signal.
|
||||
- description: AHB Reset signal.
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: stmmaceth
|
||||
- const: ahb
|
||||
|
||||
starfive,tx-use-rgmii-clk:
|
||||
description:
|
||||
Tx clock is provided by external rgmii clock.
|
||||
@@ -94,6 +80,48 @@ required:
|
||||
allOf:
|
||||
- $ref: snps,dwmac.yaml#
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: starfive,jh7100-dwmac
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
interrupt-names:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reset-names:
|
||||
const: ahb
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: starfive,jh7110-dwmac
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 3
|
||||
maxItems: 3
|
||||
|
||||
interrupt-names:
|
||||
minItems: 3
|
||||
maxItems: 3
|
||||
|
||||
resets:
|
||||
minItems: 2
|
||||
|
||||
reset-names:
|
||||
minItems: 2
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
|
||||
@@ -7,8 +7,9 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
title: TI SoC Ethernet Switch Controller (CPSW)
|
||||
|
||||
maintainers:
|
||||
- Grygorii Strashko <grygorii.strashko@ti.com>
|
||||
- Sekhar Nori <nsekhar@ti.com>
|
||||
- Siddharth Vadapalli <s-vadapalli@ti.com>
|
||||
- Ravi Gunasekaran <r-gunasekaran@ti.com>
|
||||
- Roger Quadros <rogerq@kernel.org>
|
||||
|
||||
description:
|
||||
The 3-port switch gigabit ethernet subsystem provides ethernet packet
|
||||
|
||||
@@ -62,6 +62,40 @@ properties:
|
||||
for the PHY. The internal delay for the PHY is fixed to 3.5ns relative
|
||||
to transmit data.
|
||||
|
||||
ti,cfg-dac-minus-one-bp:
|
||||
description: |
|
||||
DP83826 PHY only.
|
||||
Sets the voltage ratio (with respect to the nominal value)
|
||||
of the logical level -1 for the MLT-3 encoded TX data.
|
||||
enum: [5000, 5625, 6250, 6875, 7500, 8125, 8750, 9375, 10000,
|
||||
10625, 11250, 11875, 12500, 13125, 13750, 14375, 15000]
|
||||
default: 10000
|
||||
|
||||
ti,cfg-dac-plus-one-bp:
|
||||
description: |
|
||||
DP83826 PHY only.
|
||||
Sets the voltage ratio (with respect to the nominal value)
|
||||
of the logical level +1 for the MLT-3 encoded TX data.
|
||||
enum: [5000, 5625, 6250, 6875, 7500, 8125, 8750, 9375, 10000,
|
||||
10625, 11250, 11875, 12500, 13125, 13750, 14375, 15000]
|
||||
default: 10000
|
||||
|
||||
ti,rmii-mode:
|
||||
description: |
|
||||
If present, select the RMII operation mode. Two modes are
|
||||
available:
|
||||
- RMII master, where the PHY outputs a 50MHz reference clock which can
|
||||
be connected to the MAC.
|
||||
- RMII slave, where the PHY expects a 50MHz reference clock input
|
||||
shared with the MAC.
|
||||
The RMII operation mode can also be configured by its straps.
|
||||
If the strap pin is not set correctly or not set at all, then this can be
|
||||
used to configure it.
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
enum:
|
||||
- master
|
||||
- slave
|
||||
|
||||
required:
|
||||
- reg
|
||||
|
||||
|
||||
@@ -7,8 +7,9 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
title: The TI AM654x/J721E/AM642x SoC Gigabit Ethernet MAC (Media Access Controller)
|
||||
|
||||
maintainers:
|
||||
- Grygorii Strashko <grygorii.strashko@ti.com>
|
||||
- Sekhar Nori <nsekhar@ti.com>
|
||||
- Siddharth Vadapalli <s-vadapalli@ti.com>
|
||||
- Ravi Gunasekaran <r-gunasekaran@ti.com>
|
||||
- Roger Quadros <rogerq@kernel.org>
|
||||
|
||||
description:
|
||||
The TI AM654x/J721E SoC Gigabit Ethernet MAC (CPSW2G NUSS) has two ports
|
||||
|
||||
@@ -7,8 +7,9 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
title: The TI AM654x/J721E Common Platform Time Sync (CPTS) module
|
||||
|
||||
maintainers:
|
||||
- Grygorii Strashko <grygorii.strashko@ti.com>
|
||||
- Sekhar Nori <nsekhar@ti.com>
|
||||
- Siddharth Vadapalli <s-vadapalli@ti.com>
|
||||
- Ravi Gunasekaran <r-gunasekaran@ti.com>
|
||||
- Roger Quadros <rogerq@kernel.org>
|
||||
|
||||
description: |+
|
||||
The TI AM654x/J721E CPTS module is used to facilitate host control of time
|
||||
|
||||
@@ -19,9 +19,6 @@ description: |
|
||||
Alternatively, it can specify the wireless part of the MT7628/MT7688
|
||||
or MT7622/MT7986 SoC.
|
||||
|
||||
allOf:
|
||||
- $ref: ieee80211.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
@@ -38,7 +35,12 @@ properties:
|
||||
MT7986 should contain 3 regions consys, dcm, and sku, in this order.
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
minItems: 1
|
||||
items:
|
||||
- description: major interrupt for rings
|
||||
- description: additional interrupt for ring 19
|
||||
- description: additional interrupt for ring 4
|
||||
- description: additional interrupt for ring 5
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
@@ -217,6 +219,24 @@ required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- $ref: ieee80211.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- mediatek,mt7981-wmac
|
||||
- mediatek,mt7986-wmac
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 4
|
||||
else:
|
||||
properties:
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
@@ -293,7 +313,10 @@ examples:
|
||||
reg = <0x18000000 0x1000000>,
|
||||
<0x10003000 0x1000>,
|
||||
<0x11d10000 0x1000>;
|
||||
interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&topckgen 50>,
|
||||
<&topckgen 62>;
|
||||
clock-names = "mcu", "ap2conn";
|
||||
|
||||
@@ -8,6 +8,7 @@ title: Qualcomm Technologies ath10k wireless devices
|
||||
|
||||
maintainers:
|
||||
- Kalle Valo <kvalo@kernel.org>
|
||||
- Jeff Johnson <jjohnson@kernel.org>
|
||||
|
||||
description:
|
||||
Qualcomm Technologies, Inc. IEEE 802.11ac devices.
|
||||
|
||||
@@ -9,6 +9,7 @@ title: Qualcomm Technologies ath11k wireless devices (PCIe)
|
||||
|
||||
maintainers:
|
||||
- Kalle Valo <kvalo@kernel.org>
|
||||
- Jeff Johnson <jjohnson@kernel.org>
|
||||
|
||||
description: |
|
||||
Qualcomm Technologies IEEE 802.11ax PCIe devices
|
||||
|
||||
@@ -9,6 +9,7 @@ title: Qualcomm Technologies ath11k wireless devices
|
||||
|
||||
maintainers:
|
||||
- Kalle Valo <kvalo@kernel.org>
|
||||
- Jeff Johnson <jjohnson@kernel.org>
|
||||
|
||||
description: |
|
||||
These are dt entries for Qualcomm Technologies, Inc. IEEE 802.11ax
|
||||
|
||||
@@ -45,6 +45,7 @@ properties:
|
||||
- renesas,r8a779a0-sysc # R-Car V3U
|
||||
- renesas,r8a779f0-sysc # R-Car S4-8
|
||||
- renesas,r8a779g0-sysc # R-Car V4H
|
||||
- renesas,r8a779h0-sysc # R-Car V4M
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -50,6 +50,7 @@ properties:
|
||||
- renesas,r8a779a0-rst # R-Car V3U
|
||||
- renesas,r8a779f0-rst # R-Car S4-8
|
||||
- renesas,r8a779g0-rst # R-Car V4H
|
||||
- renesas,r8a779h0-rst # R-Car V4M
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/soc/qcom/qcom,pbs.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Technologies, Inc. Programmable Boot Sequencer
|
||||
|
||||
maintainers:
|
||||
- Anjelique Melendez <quic_amelende@quicinc.com>
|
||||
|
||||
description: |
|
||||
The Qualcomm Technologies, Inc. Programmable Boot Sequencer (PBS)
|
||||
supports triggering power up and power down sequences for clients
|
||||
upon request.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- qcom,pmi632-pbs
|
||||
- const: qcom,pbs
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/spmi/spmi.h>
|
||||
|
||||
pmic@0 {
|
||||
reg = <0x0 SPMI_USID>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pbs@7400 {
|
||||
compatible = "qcom,pmi632-pbs", "qcom,pbs";
|
||||
reg = <0x7400>;
|
||||
};
|
||||
};
|
||||
@@ -32,6 +32,7 @@ properties:
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,sm8650-pmic-glink
|
||||
- qcom,x1e80100-pmic-glink
|
||||
- const: qcom,sm8550-pmic-glink
|
||||
- const: qcom,pmic-glink
|
||||
|
||||
@@ -65,6 +66,7 @@ allOf:
|
||||
enum:
|
||||
- qcom,sm8450-pmic-glink
|
||||
- qcom,sm8550-pmic-glink
|
||||
- qcom,x1e80100-pmic-glink
|
||||
then:
|
||||
properties:
|
||||
orientation-gpios: false
|
||||
|
||||
@@ -35,6 +35,8 @@ properties:
|
||||
description: Phandle to an RPM MSG RAM slice containing the master stats
|
||||
minItems: 1
|
||||
maxItems: 5
|
||||
items:
|
||||
maxItems: 1
|
||||
|
||||
qcom,master-names:
|
||||
$ref: /schemas/types.yaml#/definitions/string-array
|
||||
|
||||
+40
-6
@@ -1,23 +1,33 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/soc/qcom/qcom,spm.yaml#
|
||||
$id: http://devicetree.org/schemas/soc/qcom/qcom,saw2.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Subsystem Power Manager
|
||||
title: Qualcomm Subsystem Power Manager / SPM AVS Wrapper 2 (SAW2)
|
||||
|
||||
maintainers:
|
||||
- Andy Gross <agross@kernel.org>
|
||||
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
|
||||
description: |
|
||||
This binding describes the Qualcomm Subsystem Power Manager, used to control
|
||||
the peripheral logic surrounding the application cores in Qualcomm platforms.
|
||||
The Qualcomm Subsystem Power Manager is used to control the peripheral logic
|
||||
surrounding the application cores in Qualcomm platforms.
|
||||
|
||||
The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the
|
||||
Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable
|
||||
power-controller that transitions a piece of hardware (like a processor or
|
||||
subsystem) into and out of low power modes via a direct connection to
|
||||
the PMIC. It can also be wired up to interact with other processors in the
|
||||
system, notifying them when a low power state is entered or exited.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- qcom,ipq4019-saw2-cpu
|
||||
- qcom,ipq4019-saw2-l2
|
||||
- qcom,ipq8064-saw2-cpu
|
||||
- qcom,sdm660-gold-saw2-v4.1-l2
|
||||
- qcom,sdm660-silver-saw2-v4.1-l2
|
||||
- qcom,msm8998-gold-saw2-v4.1-l2
|
||||
@@ -26,16 +36,27 @@ properties:
|
||||
- qcom,msm8916-saw2-v3.0-cpu
|
||||
- qcom,msm8939-saw2-v3.0-cpu
|
||||
- qcom,msm8226-saw2-v2.1-cpu
|
||||
- qcom,msm8226-saw2-v2.1-l2
|
||||
- qcom,msm8960-saw2-cpu
|
||||
- qcom,msm8974-saw2-v2.1-cpu
|
||||
- qcom,msm8974-saw2-v2.1-l2
|
||||
- qcom,msm8976-gold-saw2-v2.3-l2
|
||||
- qcom,msm8976-silver-saw2-v2.3-l2
|
||||
- qcom,apq8084-saw2-v2.1-cpu
|
||||
- qcom,apq8084-saw2-v2.1-l2
|
||||
- qcom,apq8064-saw2-v1.1-cpu
|
||||
- const: qcom,saw2
|
||||
|
||||
reg:
|
||||
description: Base address and size of the SPM register region
|
||||
maxItems: 1
|
||||
items:
|
||||
- description: Base address and size of the SPM register region
|
||||
- description: Base address and size of the alias register region
|
||||
minItems: 1
|
||||
|
||||
regulator:
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
description: Indicates that this SPM device acts as a regulator device
|
||||
device for the core (CPU or Cache) the SPM is attached to.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
@@ -82,4 +103,17 @@ examples:
|
||||
reg = <0x17912000 0x1000>;
|
||||
};
|
||||
|
||||
- |
|
||||
/*
|
||||
* Example 3: SAW2 with the bundled regulator definition.
|
||||
*/
|
||||
power-manager@2089000 {
|
||||
compatible = "qcom,apq8064-saw2-v1.1-cpu", "qcom,saw2";
|
||||
reg = <0x02089000 0x1000>, <0x02009000 0x1000>;
|
||||
|
||||
regulator {
|
||||
regulator-min-microvolt = <850000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -0,0 +1,73 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/soc/renesas/renesas-soc.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Renesas SoC compatibles naming convention
|
||||
|
||||
maintainers:
|
||||
- Geert Uytterhoeven <geert+renesas@glider.be>
|
||||
- Niklas Söderlund <niklas.soderlund@ragnatech.se>
|
||||
|
||||
description: |
|
||||
Guidelines for new compatibles for SoC blocks/components.
|
||||
When adding new compatibles in new bindings, use the format::
|
||||
renesas,SoC-IP
|
||||
|
||||
For example::
|
||||
renesas,r8a77965-csi2
|
||||
|
||||
When adding new compatibles to existing bindings, use the format in the
|
||||
existing binding, even if it contradicts the above.
|
||||
|
||||
select:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
pattern: "^renesas,.+-.+$"
|
||||
required:
|
||||
- compatible
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
items:
|
||||
anyOf:
|
||||
# Preferred naming style for compatibles of SoC components
|
||||
- pattern: "^renesas,(emev2|r(7s|8a|9a)[a-z0-9]+|rcar|rmobile|rz[a-z0-9]*|sh(7[a-z0-9]+)?|mobile)-[a-z0-9-]+$"
|
||||
- pattern: "^renesas,(condor|falcon|gr-peach|gray-hawk|salvator|sk-rz|smar(c(2)?)?|spider|white-hawk)(.*)?$"
|
||||
|
||||
# Legacy compatibles
|
||||
#
|
||||
# New compatibles are not allowed.
|
||||
- pattern: "^renesas,(can|cpg|dmac|du|(g)?ether(avb)?|gpio|hscif|(r)?i[i2]c|imr|intc|ipmmu|irqc|jpu|mmcif|msiof|mtu2|pci(e)?|pfc|pwm|[rq]spi|rcar_sound|sata|scif[ab]*|sdhi|thermal|tmu|tpu|usb(2|hs)?|vin|xhci)-[a-z0-9-]+$"
|
||||
- pattern: "^renesas,(d|s)?bsc(3)?-(r8a73a4|r8a7740|sh73a0)$"
|
||||
- pattern: "^renesas,em-(gio|sti|uart)$"
|
||||
- pattern: "^renesas,fsi2-(r8a7740|sh73a0)$"
|
||||
- pattern: "^renesas,hspi-r8a777[89]$"
|
||||
- pattern: "^renesas,sysc-(r8a73a4|r8a7740|rmobile|sh73a0)$"
|
||||
- enum:
|
||||
- renesas,imr-lx4
|
||||
- renesas,mtu2-r7s72100
|
||||
|
||||
# None SoC component compatibles
|
||||
#
|
||||
# Compatibles with the Renesas vendor prefix that do not relate to any SoC
|
||||
# component are OK. New compatibles are allowed.
|
||||
- enum:
|
||||
- renesas,smp-sram
|
||||
|
||||
# Do not fail compatibles not matching the select pattern
|
||||
#
|
||||
# Some SoC components in addition to a Renesas compatible list
|
||||
# compatibles not related to Renesas. The select pattern for this
|
||||
# schema hits all compatibles that have at lest one Renesas compatible
|
||||
# and try to validate all values in that compatible array, allow all
|
||||
# that don't match the schema select pattern. For example,
|
||||
#
|
||||
# compatible = "renesas,r9a07g044-mali", "arm,mali-bifrost";
|
||||
- pattern: "^(?!renesas,.+-.+).+$"
|
||||
|
||||
additionalProperties: true
|
||||
Loaded 100 of 3117 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user