Merge branch 'lineage-20' of github.com:LineageOS/android_kernel_qcom_sm8350 into lineage-21

Change-Id: Ic2f27579a391262e3ce327e50fe0b0f5490b0750
This commit is contained in:
Davide Garberi 2024-02-16 13:18:40 +01:00
commit fa99342727
4177 changed files with 436601 additions and 133719 deletions

View File

@ -480,16 +480,17 @@ Description: information about CPUs heterogeneity.
cpu_capacity: capacity of cpu#. cpu_capacity: capacity of cpu#.
What: /sys/devices/system/cpu/vulnerabilities What: /sys/devices/system/cpu/vulnerabilities
/sys/devices/system/cpu/vulnerabilities/meltdown /sys/devices/system/cpu/vulnerabilities/gather_data_sampling
/sys/devices/system/cpu/vulnerabilities/spectre_v1 /sys/devices/system/cpu/vulnerabilities/itlb_multihit
/sys/devices/system/cpu/vulnerabilities/spectre_v2
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
/sys/devices/system/cpu/vulnerabilities/l1tf /sys/devices/system/cpu/vulnerabilities/l1tf
/sys/devices/system/cpu/vulnerabilities/mds /sys/devices/system/cpu/vulnerabilities/mds
/sys/devices/system/cpu/vulnerabilities/meltdown
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
/sys/devices/system/cpu/vulnerabilities/spectre_v1
/sys/devices/system/cpu/vulnerabilities/spectre_v2
/sys/devices/system/cpu/vulnerabilities/srbds /sys/devices/system/cpu/vulnerabilities/srbds
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort /sys/devices/system/cpu/vulnerabilities/tsx_async_abort
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
Date: January 2018 Date: January 2018
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org> Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
Description: Information about CPU vulnerabilities Description: Information about CPU vulnerabilities

View File

@ -82,6 +82,8 @@ Brief summary of control files.
memory.swappiness set/show swappiness parameter of vmscan memory.swappiness set/show swappiness parameter of vmscan
(See sysctl's vm.swappiness) (See sysctl's vm.swappiness)
memory.move_charge_at_immigrate set/show controls of moving charges memory.move_charge_at_immigrate set/show controls of moving charges
This knob is deprecated and shouldn't be
used.
memory.oom_control set/show oom controls. memory.oom_control set/show oom controls.
memory.numa_stat show the number of memory usage per numa memory.numa_stat show the number of memory usage per numa
node node
@ -745,8 +747,15 @@ NOTE2:
It is recommended to set the soft limit always below the hard limit, It is recommended to set the soft limit always below the hard limit,
otherwise the hard limit will take precedence. otherwise the hard limit will take precedence.
8. Move charges at task migration 8. Move charges at task migration (DEPRECATED!)
================================= ===============================================
THIS IS DEPRECATED!
It's expensive and unreliable! It's better practice to launch workload
tasks directly from inside their target cgroup. Use dedicated workload
cgroups to allow fine-grained policy adjustments without having to
move physical pages between control domains.
Users can move charges associated with a task along with task migration, that Users can move charges associated with a task along with task migration, that
is, uncharge task's pages from the old cgroup and charge them to the new cgroup. is, uncharge task's pages from the old cgroup and charge them to the new cgroup.

View File

@ -0,0 +1,109 @@
.. SPDX-License-Identifier: GPL-2.0
GDS - Gather Data Sampling
==========================
Gather Data Sampling is a hardware vulnerability which allows unprivileged
speculative access to data which was previously stored in vector registers.
Problem
-------
When a gather instruction performs loads from memory, different data elements
are merged into the destination vector register. However, when a gather
instruction that is transiently executed encounters a fault, stale data from
architectural or internal vector registers may get transiently forwarded to the
destination vector register instead. This will allow a malicious attacker to
infer stale data using typical side channel techniques like cache timing
attacks. GDS is a purely sampling-based attack.
The attacker uses gather instructions to infer the stale vector register data.
The victim does not need to do anything special other than use the vector
registers. The victim does not need to use gather instructions to be
vulnerable.
Because the buffers are shared between Hyper-Threads cross Hyper-Thread attacks
are possible.
Attack scenarios
----------------
Without mitigation, GDS can infer stale data across virtually all
permission boundaries:
Non-enclaves can infer SGX enclave data
Userspace can infer kernel data
Guests can infer data from hosts
Guest can infer guest from other guests
Users can infer data from other users
Because of this, it is important to ensure that the mitigation stays enabled in
lower-privilege contexts like guests and when running outside SGX enclaves.
The hardware enforces the mitigation for SGX. Likewise, VMMs should ensure
that guests are not allowed to disable the GDS mitigation. If a host erred and
allowed this, a guest could theoretically disable GDS mitigation, mount an
attack, and re-enable it.
Mitigation mechanism
--------------------
This issue is mitigated in microcode. The microcode defines the following new
bits:
================================ === ============================
IA32_ARCH_CAPABILITIES[GDS_CTRL] R/O Enumerates GDS vulnerability
and mitigation support.
IA32_ARCH_CAPABILITIES[GDS_NO] R/O Processor is not vulnerable.
IA32_MCU_OPT_CTRL[GDS_MITG_DIS] R/W Disables the mitigation
0 by default.
IA32_MCU_OPT_CTRL[GDS_MITG_LOCK] R/W Locks GDS_MITG_DIS=0. Writes
to GDS_MITG_DIS are ignored
Can't be cleared once set.
================================ === ============================
GDS can also be mitigated on systems that don't have updated microcode by
disabling AVX. This can be done by setting gather_data_sampling="force" or
"clearcpuid=avx" on the kernel command-line.
If used, these options will disable AVX use by turning off XSAVE YMM support.
However, the processor will still enumerate AVX support. Userspace that
does not follow proper AVX enumeration to check both AVX *and* XSAVE YMM
support will break.
Mitigation control on the kernel command line
---------------------------------------------
The mitigation can be disabled by setting "gather_data_sampling=off" or
"mitigations=off" on the kernel command line. Not specifying either will default
to the mitigation being enabled. Specifying "gather_data_sampling=force" will
use the microcode mitigation when available or disable AVX on affected systems
where the microcode hasn't been updated to include the mitigation.
GDS System Information
------------------------
The kernel provides vulnerability status information through sysfs. For
GDS this can be accessed by the following sysfs file:
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling
The possible values contained in this file are:
============================== =============================================
Not affected Processor not vulnerable.
Vulnerable Processor vulnerable and mitigation disabled.
Vulnerable: No microcode Processor vulnerable and microcode is missing
mitigation.
Mitigation: AVX disabled,
no microcode Processor is vulnerable and microcode is missing
mitigation. AVX disabled as mitigation.
Mitigation: Microcode Processor is vulnerable and mitigation is in
effect.
Mitigation: Microcode (locked) Processor is vulnerable and mitigation is in
effect and cannot be disabled.
Unknown: Dependent on
hypervisor status Running on a virtual guest processor that is
affected but with no way to know if host
processor is mitigated or vulnerable.
============================== =============================================
GDS Default mitigation
----------------------
The updated microcode will enable the mitigation by default. The kernel's
default action is to leave the mitigation enabled.

View File

@ -16,3 +16,4 @@ are configurable at compile, boot or run time.
multihit.rst multihit.rst
special-register-buffer-data-sampling.rst special-register-buffer-data-sampling.rst
processor_mmio_stale_data.rst processor_mmio_stale_data.rst
gather_data_sampling.rst

View File

@ -479,8 +479,16 @@ Spectre variant 2
On Intel Skylake-era systems the mitigation covers most, but not all, On Intel Skylake-era systems the mitigation covers most, but not all,
cases. See :ref:`[3] <spec_ref3>` for more details. cases. See :ref:`[3] <spec_ref3>` for more details.
On CPUs with hardware mitigation for Spectre variant 2 (e.g. Enhanced On CPUs with hardware mitigation for Spectre variant 2 (e.g. IBRS
IBRS on x86), retpoline is automatically disabled at run time. or enhanced IBRS on x86), retpoline is automatically disabled at run time.
Systems which support enhanced IBRS (eIBRS) enable IBRS protection once at
boot, by setting the IBRS bit, and they're automatically protected against
Spectre v2 variant attacks, including cross-thread branch target injections
on SMT systems (STIBP). In other words, eIBRS enables STIBP too.
Legacy IBRS systems clear the IBRS bit on exit to userspace and
therefore explicitly enable STIBP for that
The retpoline mitigation is turned on by default on vulnerable The retpoline mitigation is turned on by default on vulnerable
CPUs. It can be forced on or off by the administrator CPUs. It can be forced on or off by the administrator
@ -504,9 +512,12 @@ Spectre variant 2
For Spectre variant 2 mitigation, individual user programs For Spectre variant 2 mitigation, individual user programs
can be compiled with return trampolines for indirect branches. can be compiled with return trampolines for indirect branches.
This protects them from consuming poisoned entries in the branch This protects them from consuming poisoned entries in the branch
target buffer left by malicious software. Alternatively, the target buffer left by malicious software.
programs can disable their indirect branch speculation via prctl()
(See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`). On legacy IBRS systems, at return to userspace, implicit STIBP is disabled
because the kernel clears the IBRS bit. In this case, the userspace programs
can disable indirect branch speculation via prctl() (See
:ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
On x86, this will turn on STIBP to guard against attacks from the On x86, this will turn on STIBP to guard against attacks from the
sibling thread when the user program is running, and use IBPB to sibling thread when the user program is running, and use IBPB to
flush the branch target buffer when switching to/from the program. flush the branch target buffer when switching to/from the program.

View File

@ -834,10 +834,6 @@
debugpat [X86] Enable PAT debugging debugpat [X86] Enable PAT debugging
decnet.addr= [HW,NET]
Format: <area>[,<node>]
See also Documentation/networking/decnet.txt.
default_hugepagesz= default_hugepagesz=
[same as hugepagesz=] The size of the default [same as hugepagesz=] The size of the default
HugeTLB page size. This is the size represented by HugeTLB page size. This is the size represented by
@ -1349,6 +1345,26 @@
Format: off | on Format: off | on
default: on default: on
gather_data_sampling=
[X86,INTEL] Control the Gather Data Sampling (GDS)
mitigation.
Gather Data Sampling is a hardware vulnerability which
allows unprivileged speculative access to data which was
previously stored in vector registers.
This issue is mitigated by default in updated microcode.
The mitigation may have a performance impact but can be
disabled. On systems without the microcode mitigation
disabling AVX serves as a mitigation.
force: Disable AVX to mitigate systems without
microcode mitigation. No effect if the microcode
mitigation is present. Known to cause crashes in
userspace with buggy AVX enumeration.
off: Disable GDS mitigation.
gcov_persist= [GCOV] When non-zero (default), profiling data for gcov_persist= [GCOV] When non-zero (default), profiling data for
kernel modules is saved and remains accessible via kernel modules is saved and remains accessible via
debugfs, even when the module is unloaded/reloaded. debugfs, even when the module is unloaded/reloaded.
@ -1953,24 +1969,57 @@
ivrs_ioapic [HW,X86_64] ivrs_ioapic [HW,X86_64]
Provide an override to the IOAPIC-ID<->DEVICE-ID Provide an override to the IOAPIC-ID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For mapping provided in the IVRS ACPI table.
example, to map IOAPIC-ID decimal 10 to By default, PCI segment is 0, and can be omitted.
PCI device 00:14.0 write the parameter as:
For example, to map IOAPIC-ID decimal 10 to
PCI segment 0x1 and PCI device 00:14.0,
write the parameter as:
ivrs_ioapic=10@0001:00:14.0
Deprecated formats:
* To map IOAPIC-ID decimal 10 to PCI device 00:14.0
write the parameter as:
ivrs_ioapic[10]=00:14.0 ivrs_ioapic[10]=00:14.0
* To map IOAPIC-ID decimal 10 to PCI segment 0x1 and
PCI device 00:14.0 write the parameter as:
ivrs_ioapic[10]=0001:00:14.0
ivrs_hpet [HW,X86_64] ivrs_hpet [HW,X86_64]
Provide an override to the HPET-ID<->DEVICE-ID Provide an override to the HPET-ID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For mapping provided in the IVRS ACPI table.
example, to map HPET-ID decimal 0 to By default, PCI segment is 0, and can be omitted.
PCI device 00:14.0 write the parameter as:
For example, to map HPET-ID decimal 10 to
PCI segment 0x1 and PCI device 00:14.0,
write the parameter as:
ivrs_hpet=10@0001:00:14.0
Deprecated formats:
* To map HPET-ID decimal 0 to PCI device 00:14.0
write the parameter as:
ivrs_hpet[0]=00:14.0 ivrs_hpet[0]=00:14.0
* To map HPET-ID decimal 10 to PCI segment 0x1 and
PCI device 00:14.0 write the parameter as:
ivrs_ioapic[10]=0001:00:14.0
ivrs_acpihid [HW,X86_64] ivrs_acpihid [HW,X86_64]
Provide an override to the ACPI-HID:UID<->DEVICE-ID Provide an override to the ACPI-HID:UID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For mapping provided in the IVRS ACPI table.
example, to map UART-HID:UID AMD0020:0 to By default, PCI segment is 0, and can be omitted.
PCI device 00:14.5 write the parameter as:
For example, to map UART-HID:UID AMD0020:0 to
PCI segment 0x1 and PCI device ID 00:14.5,
write the parameter as:
ivrs_acpihid=AMD0020:0@0001:00:14.5
Deprecated formats:
* To map UART-HID:UID AMD0020:0 to PCI segment is 0,
PCI device ID 00:14.5, write the parameter as:
ivrs_acpihid[00:14.5]=AMD0020:0 ivrs_acpihid[00:14.5]=AMD0020:0
* To map UART-HID:UID AMD0020:0 to PCI segment 0x1 and
PCI device ID 00:14.5, write the parameter as:
ivrs_acpihid[0001:00:14.5]=AMD0020:0
js= [HW,JOY] Analog joystick js= [HW,JOY] Analog joystick
See Documentation/input/joydev/joystick.rst. See Documentation/input/joydev/joystick.rst.
@ -2676,21 +2725,22 @@
Disable all optional CPU mitigations. This Disable all optional CPU mitigations. This
improves system performance, but it may also improves system performance, but it may also
expose users to several CPU vulnerabilities. expose users to several CPU vulnerabilities.
Equivalent to: nopti [X86,PPC] Equivalent to: gather_data_sampling=off [X86]
kpti=0 [ARM64] kpti=0 [ARM64]
nospectre_v1 [X86,PPC] kvm.nx_huge_pages=off [X86]
nobp=0 [S390]
nospectre_v2 [X86,PPC,S390,ARM64]
spectre_v2_user=off [X86]
spec_store_bypass_disable=off [X86,PPC]
ssbd=force-off [ARM64]
l1tf=off [X86] l1tf=off [X86]
mds=off [X86] mds=off [X86]
tsx_async_abort=off [X86] mmio_stale_data=off [X86]
kvm.nx_huge_pages=off [X86]
no_entry_flush [PPC] no_entry_flush [PPC]
no_uaccess_flush [PPC] no_uaccess_flush [PPC]
mmio_stale_data=off [X86] nobp=0 [S390]
nopti [X86,PPC]
nospectre_v1 [X86,PPC]
nospectre_v2 [X86,PPC,S390,ARM64]
spec_store_bypass_disable=off [X86,PPC]
spectre_v2_user=off [X86]
ssbd=force-off [ARM64]
tsx_async_abort=off [X86]
Exceptions: Exceptions:
This does not have any effect on This does not have any effect on

View File

@ -56,31 +56,28 @@ information submitted to the security list and any followup discussions
of the report are treated confidentially even after the embargo has been of the report are treated confidentially even after the embargo has been
lifted, in perpetuity. lifted, in perpetuity.
Coordination Coordination with other groups
------------ ------------------------------
Fixes for sensitive bugs, such as those that might lead to privilege The kernel security team strongly recommends that reporters of potential
escalations, may need to be coordinated with the private security issues NEVER contact the "linux-distros" mailing list until
<linux-distros@vs.openwall.org> mailing list so that distribution vendors AFTER discussing it with the kernel security team. Do not Cc: both
are well prepared to issue a fixed kernel upon public disclosure of the lists at once. You may contact the linux-distros mailing list after a
upstream fix. Distros will need some time to test the proposed patch and fix has been agreed on and you fully understand the requirements that
will generally request at least a few days of embargo, and vendor update doing so will impose on you and the kernel community.
publication prefers to happen Tuesday through Thursday. When appropriate,
the security team can assist with this coordination, or the reporter can The different lists have different goals and the linux-distros rules do
include linux-distros from the start. In this case, remember to prefix not contribute to actually fixing any potential security problems.
the email Subject line with "[vs]" as described in the linux-distros wiki:
<http://oss-security.openwall.org/wiki/mailing-lists/distros#how-to-use-the-lists>
CVE assignment CVE assignment
-------------- --------------
The security team does not normally assign CVEs, nor do we require them The security team does not assign CVEs, nor do we require them for
for reports or fixes, as this can needlessly complicate the process and reports or fixes, as this can needlessly complicate the process and may
may delay the bug handling. If a reporter wishes to have a CVE identifier delay the bug handling. If a reporter wishes to have a CVE identifier
assigned ahead of public disclosure, they will need to contact the private assigned, they should find one by themselves, for example by contacting
linux-distros list, described above. When such a CVE identifier is known MITRE directly. However under no circumstances will a patch inclusion
before a patch is provided, it is desirable to mention it in the commit be delayed to wait for a CVE identifier to arrive.
message if the reporter agrees.
Non-disclosure agreements Non-disclosure agreements
------------------------- -------------------------

View File

@ -31,17 +31,18 @@ see only some of them, depending on your kernel's configuration.
Table : Subdirectories in /proc/sys/net Table : Subdirectories in /proc/sys/net
========= =================== = ========== ================== ========= =================== = ========== ===================
Directory Content Directory Content Directory Content Directory Content
========= =================== = ========== ================== ========= =================== = ========== ===================
core General parameter appletalk Appletalk protocol 802 E802 protocol mptcp Multipath TCP
unix Unix domain sockets netrom NET/ROM appletalk Appletalk protocol netfilter Network Filter
802 E802 protocol ax25 AX25 ax25 AX25 netrom NET/ROM
ethernet Ethernet protocol rose X.25 PLP layer bridge Bridging rose X.25 PLP layer
core General parameter tipc TIPC
ethernet Ethernet protocol unix Unix domain sockets
ipv4 IP version 4 x25 X.25 protocol ipv4 IP version 4 x25 X.25 protocol
bridge Bridging decnet DEC net ipv6 IP version 6
ipv6 IP version 6 tipc TIPC ========= =================== = ========== ===================
========= =================== = ========== ==================
1. /proc/sys/net/core - Network core options 1. /proc/sys/net/core - Network core options
============================================ ============================================

View File

@ -64,6 +64,7 @@ Currently, these files are in /proc/sys/vm:
- overcommit_memory - overcommit_memory
- overcommit_ratio - overcommit_ratio
- page-cluster - page-cluster
- page_lock_unfairness
- panic_on_oom - panic_on_oom
- percpu_pagelist_fraction - percpu_pagelist_fraction
- stat_interval - stat_interval
@ -794,6 +795,14 @@ extra faults and I/O delays for following faults if they would have been part of
that consecutive pages readahead would have brought in. that consecutive pages readahead would have brought in.
page_lock_unfairness
====================
This value determines the number of times that the page lock can be
stolen from under a waiter. After the lock is stolen the number of times
specified in this file (default is 5), the "fair lock handoff" semantics
will apply, and the waiter will only be awakened if the lock can be taken.
panic_on_oom panic_on_oom
============ ============

View File

@ -134,6 +134,9 @@ stable kernels.
+----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+
| Hisilicon | Hip08 SMMU PMCG | #162001800 | N/A | | Hisilicon | Hip08 SMMU PMCG | #162001800 | N/A |
+----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+
| Hisilicon | Hip08 SMMU PMCG | #162001900 | N/A |
| | Hip09 SMMU PMCG | | |
+----------------+-----------------+-----------------+-----------------------------+
+----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+
| Qualcomm Tech. | Kryo/Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 | | Qualcomm Tech. | Kryo/Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 |
+----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+

View File

@ -39,6 +39,10 @@ Setup
this mode. In this case, you should build the kernel with this mode. In this case, you should build the kernel with
CONFIG_RANDOMIZE_BASE disabled if the architecture supports KASLR. CONFIG_RANDOMIZE_BASE disabled if the architecture supports KASLR.
- Build the gdb scripts (required on kernels v5.1 and above)::
make scripts_gdb
- Enable the gdb stub of QEMU/KVM, either - Enable the gdb stub of QEMU/KVM, either
- at VM startup time by appending "-s" to the QEMU command line - at VM startup time by appending "-s" to the QEMU command line

View File

@ -22,12 +22,11 @@ exclusive.
3) object removal. Locking rules: caller locks parent, finds victim, 3) object removal. Locking rules: caller locks parent, finds victim,
locks victim and calls the method. Locks are exclusive. locks victim and calls the method. Locks are exclusive.
4) rename() that is _not_ cross-directory. Locking rules: caller locks 4) rename() that is _not_ cross-directory. Locking rules: caller locks the
the parent and finds source and target. In case of exchange (with parent and finds source and target. We lock both (provided they exist). If we
RENAME_EXCHANGE in flags argument) lock both. In any case, need to lock two inodes of different type (dir vs non-dir), we lock directory
if the target already exists, lock it. If the source is a non-directory, first. If we need to lock two inodes of the same type, lock them in inode
lock it. If we need to lock both, lock them in inode pointer order. pointer order. Then call the method. All locks are exclusive.
Then call the method. All locks are exclusive.
NB: we might get away with locking the the source (and target in exchange NB: we might get away with locking the the source (and target in exchange
case) shared. case) shared.
@ -44,15 +43,17 @@ All locks are exclusive.
rules: rules:
* lock the filesystem * lock the filesystem
* lock parents in "ancestors first" order. * lock parents in "ancestors first" order. If one is not ancestor of
the other, lock them in inode pointer order.
* find source and target. * find source and target.
* if old parent is equal to or is a descendent of target * if old parent is equal to or is a descendent of target
fail with -ENOTEMPTY fail with -ENOTEMPTY
* if new parent is equal to or is a descendent of source * if new parent is equal to or is a descendent of source
fail with -ELOOP fail with -ELOOP
* If it's an exchange, lock both the source and the target. * Lock both the source and the target provided they exist. If we
* If the target exists, lock it. If the source is a non-directory, need to lock two inodes of different type (dir vs non-dir), we lock
lock it. If we need to lock both, do so in inode pointer order. the directory first. If we need to lock two inodes of the same type,
lock them in inode pointer order.
* call the method. * call the method.
All ->i_rwsem are taken exclusive. Again, we might get away with locking All ->i_rwsem are taken exclusive. Again, we might get away with locking
@ -66,8 +67,9 @@ If no directory is its own ancestor, the scheme above is deadlock-free.
Proof: Proof:
First of all, at any moment we have a partial ordering of the First of all, at any moment we have a linear ordering of the
objects - A < B iff A is an ancestor of B. objects - A < B iff (A is an ancestor of B) or (B is not an ancestor
of A and ptr(A) < ptr(B)).
That ordering can change. However, the following is true: That ordering can change. However, the following is true:

View File

@ -1173,7 +1173,7 @@ defined:
return return
-ECHILD and it will be called again in ref-walk mode. -ECHILD and it will be called again in ref-walk mode.
``_weak_revalidate`` ``d_weak_revalidate``
called when the VFS needs to revalidate a "jumped" dentry. This called when the VFS needs to revalidate a "jumped" dentry. This
is called when a path-walk ends at dentry that was not acquired is called when a path-walk ends at dentry that was not acquired
by doing a lookup in the parent directory. This includes "/", by doing a lookup in the parent directory. This includes "/",

View File

@ -302,7 +302,6 @@ Code Seq# Include File Comments
0x89 00-06 arch/x86/include/asm/sockios.h 0x89 00-06 arch/x86/include/asm/sockios.h
0x89 0B-DF linux/sockios.h 0x89 0B-DF linux/sockios.h
0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range 0x89 E0-EF linux/sockios.h SIOCPROTOPRIVATE range
0x89 E0-EF linux/dn.h PROTOPRIVATE range
0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range 0x89 F0-FF linux/sockios.h SIOCDEVPRIVATE range
0x8B all linux/wireless.h 0x8B all linux/wireless.h
0x8C 00-3F WiNRADiO driver 0x8C 00-3F WiNRADiO driver

View File

@ -7794,3 +7794,30 @@ formats.
- 0x5001 - 0x5001
- Interleaved raw UYVY and JPEG image format with embedded meta-data - Interleaved raw UYVY and JPEG image format with embedded meta-data
used by Samsung S3C73MX camera sensors. used by Samsung S3C73MX camera sensors.
.. _v4l2-mbus-metadata-fmts:
Metadata Formats
^^^^^^^^^^^^^^^^
This section lists all metadata formats.
The following table lists the existing metadata formats.
.. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.7cm}|
.. flat-table:: Metadata formats
:header-rows: 1
:stub-columns: 0
* - Identifier
- Code
- Comments
* .. _MEDIA-BUS-FMT-METADATA-FIXED:
- MEDIA_BUS_FMT_METADATA_FIXED
- 0x7001
- This format should be used when the same driver handles
both sides of the link and the bus format is a fixed
metadata format that is not configurable from userspace.
Width and height will be set to 0 for this format.

View File

@ -40,13 +40,13 @@ allocates memory for this UMEM using whatever means it feels is most
appropriate (malloc, mmap, huge pages, etc). This memory area is then appropriate (malloc, mmap, huge pages, etc). This memory area is then
registered with the kernel using the new setsockopt XDP_UMEM_REG. The registered with the kernel using the new setsockopt XDP_UMEM_REG. The
UMEM also has two rings: the FILL ring and the COMPLETION ring. The UMEM also has two rings: the FILL ring and the COMPLETION ring. The
fill ring is used by the application to send down addr for the kernel FILL ring is used by the application to send down addr for the kernel
to fill in with RX packet data. References to these frames will then to fill in with RX packet data. References to these frames will then
appear in the RX ring once each packet has been received. The appear in the RX ring once each packet has been received. The
completion ring, on the other hand, contains frame addr that the COMPLETION ring, on the other hand, contains frame addr that the
kernel has transmitted completely and can now be used again by user kernel has transmitted completely and can now be used again by user
space, for either TX or RX. Thus, the frame addrs appearing in the space, for either TX or RX. Thus, the frame addrs appearing in the
completion ring are addrs that were previously transmitted using the COMPLETION ring are addrs that were previously transmitted using the
TX ring. In summary, the RX and FILL rings are used for the RX path TX ring. In summary, the RX and FILL rings are used for the RX path
and the TX and COMPLETION rings are used for the TX path. and the TX and COMPLETION rings are used for the TX path.
@ -91,11 +91,16 @@ Concepts
======== ========
In order to use an AF_XDP socket, a number of associated objects need In order to use an AF_XDP socket, a number of associated objects need
to be setup. to be setup. These objects and their options are explained in the
following sections.
Jonathan Corbet has also written an excellent article on LWN, For an overview on how AF_XDP works, you can also take a look at the
"Accelerating networking with AF_XDP". It can be found at Linux Plumbers paper from 2018 on the subject:
https://lwn.net/Articles/750845/. http://vger.kernel.org/lpc_net2018_talks/lpc18_paper_af_xdp_perf-v2.pdf. Do
NOT consult the paper from 2017 on "AF_PACKET v4", the first attempt
at AF_XDP. Nearly everything changed since then. Jonathan Corbet has
also written an excellent article on LWN, "Accelerating networking
with AF_XDP". It can be found at https://lwn.net/Articles/750845/.
UMEM UMEM
---- ----
@ -113,22 +118,22 @@ the next socket B can do this by setting the XDP_SHARED_UMEM flag in
struct sockaddr_xdp member sxdp_flags, and passing the file descriptor struct sockaddr_xdp member sxdp_flags, and passing the file descriptor
of A to struct sockaddr_xdp member sxdp_shared_umem_fd. of A to struct sockaddr_xdp member sxdp_shared_umem_fd.
The UMEM has two single-producer/single-consumer rings, that are used The UMEM has two single-producer/single-consumer rings that are used
to transfer ownership of UMEM frames between the kernel and the to transfer ownership of UMEM frames between the kernel and the
user-space application. user-space application.
Rings Rings
----- -----
There are a four different kind of rings: Fill, Completion, RX and There are a four different kind of rings: FILL, COMPLETION, RX and
TX. All rings are single-producer/single-consumer, so the user-space TX. All rings are single-producer/single-consumer, so the user-space
application need explicit synchronization of multiple application need explicit synchronization of multiple
processes/threads are reading/writing to them. processes/threads are reading/writing to them.
The UMEM uses two rings: Fill and Completion. Each socket associated The UMEM uses two rings: FILL and COMPLETION. Each socket associated
with the UMEM must have an RX queue, TX queue or both. Say, that there with the UMEM must have an RX queue, TX queue or both. Say, that there
is a setup with four sockets (all doing TX and RX). Then there will be is a setup with four sockets (all doing TX and RX). Then there will be
one Fill ring, one Completion ring, four TX rings and four RX rings. one FILL ring, one COMPLETION ring, four TX rings and four RX rings.
The rings are head(producer)/tail(consumer) based rings. A producer The rings are head(producer)/tail(consumer) based rings. A producer
writes the data ring at the index pointed out by struct xdp_ring writes the data ring at the index pointed out by struct xdp_ring
@ -146,7 +151,7 @@ The size of the rings need to be of size power of two.
UMEM Fill Ring UMEM Fill Ring
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
The Fill ring is used to transfer ownership of UMEM frames from The FILL ring is used to transfer ownership of UMEM frames from
user-space to kernel-space. The UMEM addrs are passed in the ring. As user-space to kernel-space. The UMEM addrs are passed in the ring. As
an example, if the UMEM is 64k and each chunk is 4k, then the UMEM has an example, if the UMEM is 64k and each chunk is 4k, then the UMEM has
16 chunks and can pass addrs between 0 and 64k. 16 chunks and can pass addrs between 0 and 64k.
@ -164,8 +169,8 @@ chunks mode, then the incoming addr will be left untouched.
UMEM Completion Ring UMEM Completion Ring
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
The Completion Ring is used transfer ownership of UMEM frames from The COMPLETION Ring is used transfer ownership of UMEM frames from
kernel-space to user-space. Just like the Fill ring, UMEM indicies are kernel-space to user-space. Just like the FILL ring, UMEM indices are
used. used.
Frames passed from the kernel to user-space are frames that has been Frames passed from the kernel to user-space are frames that has been
@ -181,7 +186,7 @@ The RX ring is the receiving side of a socket. Each entry in the ring
is a struct xdp_desc descriptor. The descriptor contains UMEM offset is a struct xdp_desc descriptor. The descriptor contains UMEM offset
(addr) and the length of the data (len). (addr) and the length of the data (len).
If no frames have been passed to kernel via the Fill ring, no If no frames have been passed to kernel via the FILL ring, no
descriptors will (or can) appear on the RX ring. descriptors will (or can) appear on the RX ring.
The user application consumes struct xdp_desc descriptors from this The user application consumes struct xdp_desc descriptors from this
@ -199,8 +204,24 @@ be relaxed in the future.
The user application produces struct xdp_desc descriptors to this The user application produces struct xdp_desc descriptors to this
ring. ring.
Libbpf
======
Libbpf is a helper library for eBPF and XDP that makes using these
technologies a lot simpler. It also contains specific helper functions
in tools/lib/bpf/xsk.h for facilitating the use of AF_XDP. It
contains two types of functions: those that can be used to make the
setup of AF_XDP socket easier and ones that can be used in the data
plane to access the rings safely and quickly. To see an example on how
to use this API, please take a look at the sample application in
samples/bpf/xdpsock_usr.c which uses libbpf for both setup and data
plane operations.
We recommend that you use this library unless you have become a power
user. It will make your program a lot simpler.
XSKMAP / BPF_MAP_TYPE_XSKMAP XSKMAP / BPF_MAP_TYPE_XSKMAP
---------------------------- ============================
On XDP side there is a BPF map type BPF_MAP_TYPE_XSKMAP (XSKMAP) that On XDP side there is a BPF map type BPF_MAP_TYPE_XSKMAP (XSKMAP) that
is used in conjunction with bpf_redirect_map() to pass the ingress is used in conjunction with bpf_redirect_map() to pass the ingress
@ -216,21 +237,193 @@ queue 17. Only the XDP program executing for eth0 and queue 17 will
successfully pass data to the socket. Please refer to the sample successfully pass data to the socket. Please refer to the sample
application (samples/bpf/) in for an example. application (samples/bpf/) in for an example.
Configuration Flags and Socket Options
======================================
These are the various configuration flags that can be used to control
and monitor the behavior of AF_XDP sockets.
XDP_COPY and XDP_ZERO_COPY bind flags
-------------------------------------
When you bind to a socket, the kernel will first try to use zero-copy
copy. If zero-copy is not supported, it will fall back on using copy
mode, i.e. copying all packets out to user space. But if you would
like to force a certain mode, you can use the following flags. If you
pass the XDP_COPY flag to the bind call, the kernel will force the
socket into copy mode. If it cannot use copy mode, the bind call will
fail with an error. Conversely, the XDP_ZERO_COPY flag will force the
socket into zero-copy mode or fail.
XDP_SHARED_UMEM bind flag
-------------------------
This flag enables you to bind multiple sockets to the same UMEM, but
only if they share the same queue id. In this mode, each socket has
their own RX and TX rings, but the UMEM (tied to the fist socket
created) only has a single FILL ring and a single COMPLETION
ring. To use this mode, create the first socket and bind it in the normal
way. Create a second socket and create an RX and a TX ring, or at
least one of them, but no FILL or COMPLETION rings as the ones from
the first socket will be used. In the bind call, set he
XDP_SHARED_UMEM option and provide the initial socket's fd in the
sxdp_shared_umem_fd field. You can attach an arbitrary number of extra
sockets this way.
What socket will then a packet arrive on? This is decided by the XDP
program. Put all the sockets in the XSK_MAP and just indicate which
index in the array you would like to send each packet to. A simple
round-robin example of distributing packets is shown below:
.. code-block:: c
#include <linux/bpf.h>
#include "bpf_helpers.h"
#define MAX_SOCKS 16
struct {
__uint(type, BPF_MAP_TYPE_XSKMAP);
__uint(max_entries, MAX_SOCKS);
__uint(key_size, sizeof(int));
__uint(value_size, sizeof(int));
} xsks_map SEC(".maps");
static unsigned int rr;
SEC("xdp_sock") int xdp_sock_prog(struct xdp_md *ctx)
{
rr = (rr + 1) & (MAX_SOCKS - 1);
return bpf_redirect_map(&xsks_map, rr, 0);
}
Note, that since there is only a single set of FILL and COMPLETION
rings, and they are single producer, single consumer rings, you need
to make sure that multiple processes or threads do not use these rings
concurrently. There are no synchronization primitives in the
libbpf code that protects multiple users at this point in time.
XDP_USE_NEED_WAKEUP bind flag
-----------------------------
This option adds support for a new flag called need_wakeup that is
present in the FILL ring and the TX ring, the rings for which user
space is a producer. When this option is set in the bind call, the
need_wakeup flag will be set if the kernel needs to be explicitly
woken up by a syscall to continue processing packets. If the flag is
zero, no syscall is needed.
If the flag is set on the FILL ring, the application needs to call
poll() to be able to continue to receive packets on the RX ring. This
can happen, for example, when the kernel has detected that there are no
more buffers on the FILL ring and no buffers left on the RX HW ring of
the NIC. In this case, interrupts are turned off as the NIC cannot
receive any packets (as there are no buffers to put them in), and the
need_wakeup flag is set so that user space can put buffers on the
FILL ring and then call poll() so that the kernel driver can put these
buffers on the HW ring and start to receive packets.
If the flag is set for the TX ring, it means that the application
needs to explicitly notify the kernel to send any packets put on the
TX ring. This can be accomplished either by a poll() call, as in the
RX path, or by calling sendto().
An example of how to use this flag can be found in
samples/bpf/xdpsock_user.c. An example with the use of libbpf helpers
would look like this for the TX path:
.. code-block:: c
if (xsk_ring_prod__needs_wakeup(&my_tx_ring))
sendto(xsk_socket__fd(xsk_handle), NULL, 0, MSG_DONTWAIT, NULL, 0);
I.e., only use the syscall if the flag is set.
We recommend that you always enable this mode as it usually leads to
better performance especially if you run the application and the
driver on the same core, but also if you use different cores for the
application and the kernel driver, as it reduces the number of
syscalls needed for the TX path.
XDP_{RX|TX|UMEM_FILL|UMEM_COMPLETION}_RING setsockopts
------------------------------------------------------
These setsockopts sets the number of descriptors that the RX, TX,
FILL, and COMPLETION rings respectively should have. It is mandatory
to set the size of at least one of the RX and TX rings. If you set
both, you will be able to both receive and send traffic from your
application, but if you only want to do one of them, you can save
resources by only setting up one of them. Both the FILL ring and the
COMPLETION ring are mandatory if you have a UMEM tied to your socket,
which is the normal case. But if the XDP_SHARED_UMEM flag is used, any
socket after the first one does not have a UMEM and should in that
case not have any FILL or COMPLETION rings created.
XDP_UMEM_REG setsockopt
-----------------------
This setsockopt registers a UMEM to a socket. This is the area that
contain all the buffers that packet can recide in. The call takes a
pointer to the beginning of this area and the size of it. Moreover, it
also has parameter called chunk_size that is the size that the UMEM is
divided into. It can only be 2K or 4K at the moment. If you have an
UMEM area that is 128K and a chunk size of 2K, this means that you
will be able to hold a maximum of 128K / 2K = 64 packets in your UMEM
area and that your largest packet size can be 2K.
There is also an option to set the headroom of each single buffer in
the UMEM. If you set this to N bytes, it means that the packet will
start N bytes into the buffer leaving the first N bytes for the
application to use. The final option is the flags field, but it will
be dealt with in separate sections for each UMEM flag.
SO_BINDTODEVICE setsockopt
--------------------------
This is a generic SOL_SOCKET option that can be used to tie AF_XDP
socket to a particular network interface. It is useful when a socket
is created by a privileged process and passed to a non-privileged one.
Once the option is set, kernel will refuse attempts to bind that socket
to a different interface. Updating the value requires CAP_NET_RAW.
XDP_STATISTICS getsockopt
-------------------------
Gets drop statistics of a socket that can be useful for debug
purposes. The supported statistics are shown below:
.. code-block:: c
struct xdp_statistics {
__u64 rx_dropped; /* Dropped for reasons other than invalid desc */
__u64 rx_invalid_descs; /* Dropped due to invalid descriptor */
__u64 tx_invalid_descs; /* Dropped due to invalid descriptor */
};
XDP_OPTIONS getsockopt
----------------------
Gets options from an XDP socket. The only one supported so far is
XDP_OPTIONS_ZEROCOPY which tells you if zero-copy is on or not.
Usage Usage
===== =====
In order to use AF_XDP sockets there are two parts needed. The In order to use AF_XDP sockets two parts are needed. The
user-space application and the XDP program. For a complete setup and user-space application and the XDP program. For a complete setup and
usage example, please refer to the sample application. The user-space usage example, please refer to the sample application. The user-space
side is xdpsock_user.c and the XDP side is part of libbpf. side is xdpsock_user.c and the XDP side is part of libbpf.
The XDP code sample included in tools/lib/bpf/xsk.c is the following:: The XDP code sample included in tools/lib/bpf/xsk.c is the following:
.. code-block:: c
SEC("xdp_sock") int xdp_sock_prog(struct xdp_md *ctx) SEC("xdp_sock") int xdp_sock_prog(struct xdp_md *ctx)
{ {
int index = ctx->rx_queue_index; int index = ctx->rx_queue_index;
// A set entry here means that the correspnding queue_id // A set entry here means that the corresponding queue_id
// has an active AF_XDP socket bound to it. // has an active AF_XDP socket bound to it.
if (bpf_map_lookup_elem(&xsks_map, &index)) if (bpf_map_lookup_elem(&xsks_map, &index))
return bpf_redirect_map(&xsks_map, index, 0); return bpf_redirect_map(&xsks_map, index, 0);
@ -238,7 +431,10 @@ The XDP code sample included in tools/lib/bpf/xsk.c is the following::
return XDP_PASS; return XDP_PASS;
} }
Naive ring dequeue and enqueue could look like this:: A simple but not so performance ring dequeue and enqueue could look
like this:
.. code-block:: c
// struct xdp_rxtx_ring { // struct xdp_rxtx_ring {
// __u32 *producer; // __u32 *producer;
@ -287,17 +483,16 @@ Naive ring dequeue and enqueue could look like this::
return 0; return 0;
} }
But please use the libbpf functions as they are optimized and ready to
For a more optimized version, please refer to the sample application. use. Will make your life easier.
Sample application Sample application
================== ==================
There is a xdpsock benchmarking/test application included that There is a xdpsock benchmarking/test application included that
demonstrates how to use AF_XDP sockets with both private and shared demonstrates how to use AF_XDP sockets with private UMEMs. Say that
UMEMs. Say that you would like your UDP traffic from port 4242 to end you would like your UDP traffic from port 4242 to end up in queue 16,
up in queue 16, that we will enable AF_XDP on. Here, we use ethtool that we will enable AF_XDP on. Here, we use ethtool for this::
for this::
ethtool -N p3p2 rx-flow-hash udp4 fn ethtool -N p3p2 rx-flow-hash udp4 fn
ethtool -N p3p2 flow-type udp4 src-port 4242 dst-port 4242 \ ethtool -N p3p2 flow-type udp4 src-port 4242 dst-port 4242 \
@ -311,13 +506,18 @@ using::
For XDP_SKB mode, use the switch "-S" instead of "-N" and all options For XDP_SKB mode, use the switch "-S" instead of "-N" and all options
can be displayed with "-h", as usual. can be displayed with "-h", as usual.
This sample application uses libbpf to make the setup and usage of
AF_XDP simpler. If you want to know how the raw uapi of AF_XDP is
really used to make something more advanced, take a look at the libbpf
code in tools/lib/bpf/xsk.[ch].
FAQ FAQ
======= =======
Q: I am not seeing any traffic on the socket. What am I doing wrong? Q: I am not seeing any traffic on the socket. What am I doing wrong?
A: When a netdev of a physical NIC is initialized, Linux usually A: When a netdev of a physical NIC is initialized, Linux usually
allocates one Rx and Tx queue pair per core. So on a 8 core system, allocates one RX and TX queue pair per core. So on a 8 core system,
queue ids 0 to 7 will be allocated, one per core. In the AF_XDP queue ids 0 to 7 will be allocated, one per core. In the AF_XDP
bind call or the xsk_socket__create libbpf function call, you bind call or the xsk_socket__create libbpf function call, you
specify a specific queue id to bind to and it is only the traffic specify a specific queue id to bind to and it is only the traffic
@ -343,9 +543,21 @@ A: When a netdev of a physical NIC is initialized, Linux usually
sudo ethtool -N <interface> flow-type udp4 src-port 4242 dst-port \ sudo ethtool -N <interface> flow-type udp4 src-port 4242 dst-port \
4242 action 2 4242 action 2
A number of other ways are possible all up to the capabilitites of A number of other ways are possible all up to the capabilities of
the NIC you have. the NIC you have.
Q: Can I use the XSKMAP to implement a switch betwen different umems
in copy mode?
A: The short answer is no, that is not supported at the moment. The
XSKMAP can only be used to switch traffic coming in on queue id X
to sockets bound to the same queue id X. The XSKMAP can contain
sockets bound to different queue ids, for example X and Y, but only
traffic goming in from queue id Y can be directed to sockets bound
to the same queue id Y. In zero-copy mode, you should use the
switch, or other distribution mechanism, in your NIC to direct
traffic to the correct queue id and socket.
Credits Credits
======= =======

View File

@ -1,230 +0,0 @@
Linux DECnet Networking Layer Information
===========================================
1) Other documentation....
o Project Home Pages
http://www.chygwyn.com/ - Kernel info
http://linux-decnet.sourceforge.net/ - Userland tools
http://www.sourceforge.net/projects/linux-decnet/ - Status page
2) Configuring the kernel
Be sure to turn on the following options:
CONFIG_DECNET (obviously)
CONFIG_PROC_FS (to see what's going on)
CONFIG_SYSCTL (for easy configuration)
if you want to try out router support (not properly debugged yet)
you'll need the following options as well...
CONFIG_DECNET_ROUTER (to be able to add/delete routes)
CONFIG_NETFILTER (will be required for the DECnet routing daemon)
Don't turn on SIOCGIFCONF support for DECnet unless you are really sure
that you need it, in general you won't and it can cause ifconfig to
malfunction.
Run time configuration has changed slightly from the 2.4 system. If you
want to configure an endnode, then the simplified procedure is as follows:
o Set the MAC address on your ethernet card before starting _any_ other
network protocols.
As soon as your network card is brought into the UP state, DECnet should
start working. If you need something more complicated or are unsure how
to set the MAC address, see the next section. Also all configurations which
worked with 2.4 will work under 2.5 with no change.
3) Command line options
You can set a DECnet address on the kernel command line for compatibility
with the 2.4 configuration procedure, but in general it's not needed any more.
If you do st a DECnet address on the command line, it has only one purpose
which is that its added to the addresses on the loopback device.
With 2.4 kernels, DECnet would only recognise addresses as local if they
were added to the loopback device. In 2.5, any local interface address
can be used to loop back to the local machine. Of course this does not
prevent you adding further addresses to the loopback device if you
want to.
N.B. Since the address list of an interface determines the addresses for
which "hello" messages are sent, if you don't set an address on the loopback
interface then you won't see any entries in /proc/net/neigh for the local
host until such time as you start a connection. This doesn't affect the
operation of the local communications in any other way though.
The kernel command line takes options looking like the following:
decnet.addr=1,2
the two numbers are the node address 1,2 = 1.2 For 2.2.xx kernels
and early 2.3.xx kernels, you must use a comma when specifying the
DECnet address like this. For more recent 2.3.xx kernels, you may
use almost any character except space, although a `.` would be the most
obvious choice :-)
There used to be a third number specifying the node type. This option
has gone away in favour of a per interface node type. This is now set
using /proc/sys/net/decnet/conf/<dev>/forwarding. This file can be
set with a single digit, 0=EndNode, 1=L1 Router and 2=L2 Router.
There are also equivalent options for modules. The node address can
also be set through the /proc/sys/net/decnet/ files, as can other system
parameters.
Currently the only supported devices are ethernet and ip_gre. The
ethernet address of your ethernet card has to be set according to the DECnet
address of the node in order for it to be autoconfigured (and then appear in
/proc/net/decnet_dev). There is a utility available at the above
FTP sites called dn2ethaddr which can compute the correct ethernet
address to use. The address can be set by ifconfig either before or
at the time the device is brought up. If you are using RedHat you can
add the line:
MACADDR=AA:00:04:00:03:04
or something similar, to /etc/sysconfig/network-scripts/ifcfg-eth0 or
wherever your network card's configuration lives. Setting the MAC address
of your ethernet card to an address starting with "hi-ord" will cause a
DECnet address which matches to be added to the interface (which you can
verify with iproute2).
The default device for routing can be set through the /proc filesystem
by setting /proc/sys/net/decnet/default_device to the
device you want DECnet to route packets out of when no specific route
is available. Usually this will be eth0, for example:
echo -n "eth0" >/proc/sys/net/decnet/default_device
If you don't set the default device, then it will default to the first
ethernet card which has been autoconfigured as described above. You can
confirm that by looking in the default_device file of course.
There is a list of what the other files under /proc/sys/net/decnet/ do
on the kernel patch web site (shown above).
4) Run time kernel configuration
This is either done through the sysctl/proc interface (see the kernel web
pages for details on what the various options do) or through the iproute2
package in the same way as IPv4/6 configuration is performed.
Documentation for iproute2 is included with the package, although there is
as yet no specific section on DECnet, most of the features apply to both
IP and DECnet, albeit with DECnet addresses instead of IP addresses and
a reduced functionality.
If you want to configure a DECnet router you'll need the iproute2 package
since its the _only_ way to add and delete routes currently. Eventually
there will be a routing daemon to send and receive routing messages for
each interface and update the kernel routing tables accordingly. The
routing daemon will use netfilter to listen to routing packets, and
rtnetlink to update the kernels routing tables.
The DECnet raw socket layer has been removed since it was there purely
for use by the routing daemon which will now use netfilter (a much cleaner
and more generic solution) instead.
5) How can I tell if its working ?
Here is a quick guide of what to look for in order to know if your DECnet
kernel subsystem is working.
- Is the node address set (see /proc/sys/net/decnet/node_address)
- Is the node of the correct type
(see /proc/sys/net/decnet/conf/<dev>/forwarding)
- Is the Ethernet MAC address of each Ethernet card set to match
the DECnet address. If in doubt use the dn2ethaddr utility available
at the ftp archive.
- If the previous two steps are satisfied, and the Ethernet card is up,
you should find that it is listed in /proc/net/decnet_dev and also
that it appears as a directory in /proc/sys/net/decnet/conf/. The
loopback device (lo) should also appear and is required to communicate
within a node.
- If you have any DECnet routers on your network, they should appear
in /proc/net/decnet_neigh, otherwise this file will only contain the
entry for the node itself (if it doesn't check to see if lo is up).
- If you want to send to any node which is not listed in the
/proc/net/decnet_neigh file, you'll need to set the default device
to point to an Ethernet card with connection to a router. This is
again done with the /proc/sys/net/decnet/default_device file.
- Try starting a simple server and client, like the dnping/dnmirror
over the loopback interface. With luck they should communicate.
For this step and those after, you'll need the DECnet library
which can be obtained from the above ftp sites as well as the
actual utilities themselves.
- If this seems to work, then try talking to a node on your local
network, and see if you can obtain the same results.
- At this point you are on your own... :-)
6) How to send a bug report
If you've found a bug and want to report it, then there are several things
you can do to help me work out exactly what it is that is wrong. Useful
information (_most_ of which _is_ _essential_) includes:
- What kernel version are you running ?
- What version of the patch are you running ?
- How far though the above set of tests can you get ?
- What is in the /proc/decnet* files and /proc/sys/net/decnet/* files ?
- Which services are you running ?
- Which client caused the problem ?
- How much data was being transferred ?
- Was the network congested ?
- How can the problem be reproduced ?
- Can you use tcpdump to get a trace ? (N.B. Most (all?) versions of
tcpdump don't understand how to dump DECnet properly, so including
the hex listing of the packet contents is _essential_, usually the -x flag.
You may also need to increase the length grabbed with the -s flag. The
-e flag also provides very useful information (ethernet MAC addresses))
7) MAC FAQ
A quick FAQ on ethernet MAC addresses to explain how Linux and DECnet
interact and how to get the best performance from your hardware.
Ethernet cards are designed to normally only pass received network frames
to a host computer when they are addressed to it, or to the broadcast address.
Linux has an interface which allows the setting of extra addresses for
an ethernet card to listen to. If the ethernet card supports it, the
filtering operation will be done in hardware, if not the extra unwanted packets
received will be discarded by the host computer. In the latter case,
significant processor time and bus bandwidth can be used up on a busy
network (see the NAPI documentation for a longer explanation of these
effects).
DECnet makes use of this interface to allow running DECnet on an ethernet
card which has already been configured using TCP/IP (presumably using the
built in MAC address of the card, as usual) and/or to allow multiple DECnet
addresses on each physical interface. If you do this, be aware that if your
ethernet card doesn't support perfect hashing in its MAC address filter
then your computer will be doing more work than required. Some cards
will simply set themselves into promiscuous mode in order to receive
packets from the DECnet specified addresses. So if you have one of these
cards its better to set the MAC address of the card as described above
to gain the best efficiency. Better still is to use a card which supports
NAPI as well.
8) Mailing list
If you are keen to get involved in development, or want to ask questions
about configuration, or even just report bugs, then there is a mailing
list that you can join, details are at:
http://sourceforge.net/mail/?group_id=4993
9) Legal Info
The Linux DECnet project team have placed their code under the GPL. The
software is provided "as is" and without warranty express or implied.
DECnet is a trademark of Compaq. This software is not a product of
Compaq. We acknowledge the help of people at Compaq in providing extra
documentation above and beyond what was previously publicly available.
Steve Whitehouse <SteveW@ACM.org>

View File

@ -382,6 +382,12 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
nonzero, increment the counter and return 1; otherwise return 0 without nonzero, increment the counter and return 1; otherwise return 0 without
changing the counter changing the counter
`int pm_runtime_get_if_active(struct device *dev, bool ign_usage_count);`
- return -EINVAL if 'power.disable_depth' is nonzero; otherwise, if the
runtime PM status is RPM_ACTIVE, and either ign_usage_count is true
or the device's usage_count is non-zero, increment the counter and
return 1; otherwise return 0 without changing the counter
`void pm_runtime_put_noidle(struct device *dev);` `void pm_runtime_put_noidle(struct device *dev);`
- decrement the device's usage counter - decrement the device's usage counter

View File

@ -702,7 +702,7 @@ ref
no-jd no-jd
BIOS setup but without jack-detection BIOS setup but without jack-detection
intel intel
Intel DG45* mobos Intel D*45* mobos
dell-m6-amic dell-m6-amic
Dell desktops/laptops with analog mics Dell desktops/laptops with analog mics
dell-m6-dmic dell-m6-dmic

View File

@ -3615,6 +3615,18 @@ Type: vm ioctl
Parameters: struct kvm_s390_cmma_log (in, out) Parameters: struct kvm_s390_cmma_log (in, out)
Returns: 0 on success, a negative value on error Returns: 0 on success, a negative value on error
Errors:
====== =============================================================
ENOMEM not enough memory can be allocated to complete the task
ENXIO if CMMA is not enabled
EINVAL if KVM_S390_CMMA_PEEK is not set but migration mode was not enabled
EINVAL if KVM_S390_CMMA_PEEK is not set but dirty tracking has been
disabled (and thus migration mode was automatically disabled)
EFAULT if the userspace address is invalid or if no page table is
present for the addresses (e.g. when using hugepages).
====== =============================================================
This ioctl is used to get the values of the CMMA bits on the s390 This ioctl is used to get the values of the CMMA bits on the s390
architecture. It is meant to be used in two scenarios: architecture. It is meant to be used in two scenarios:
- During live migration to save the CMMA values. Live migration needs - During live migration to save the CMMA values. Live migration needs
@ -3691,12 +3703,6 @@ mask is unused.
values points to the userspace buffer where the result will be stored. values points to the userspace buffer where the result will be stored.
This ioctl can fail with -ENOMEM if not enough memory can be allocated to
complete the task, with -ENXIO if CMMA is not enabled, with -EINVAL if
KVM_S390_CMMA_PEEK is not set but migration mode was not enabled, with
-EFAULT if the userspace address is invalid or if no page table is
present for the addresses (e.g. when using hugepages).
4.108 KVM_S390_SET_CMMA_BITS 4.108 KVM_S390_SET_CMMA_BITS
Capability: KVM_CAP_S390_CMMA_MIGRATION Capability: KVM_CAP_S390_CMMA_MIGRATION

View File

@ -254,6 +254,10 @@ Allows userspace to start migration mode, needed for PGSTE migration.
Setting this attribute when migration mode is already active will have Setting this attribute when migration mode is already active will have
no effects. no effects.
Dirty tracking must be enabled on all memslots, else -EINVAL is returned. When
dirty tracking is disabled on any memslot, migration mode is automatically
stopped.
Parameters: none Parameters: none
Returns: -ENOMEM if there is not enough free memory to start migration mode Returns: -ENOMEM if there is not enough free memory to start migration mode
-EINVAL if the state of the VM is invalid (e.g. no memory defined) -EINVAL if the state of the VM is invalid (e.g. no memory defined)

View File

@ -1101,7 +1101,7 @@ APEX EMBEDDED SYSTEMS STX104 IIO DRIVER
M: William Breathitt Gray <vilhelm.gray@gmail.com> M: William Breathitt Gray <vilhelm.gray@gmail.com>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
S: Maintained S: Maintained
F: drivers/iio/adc/stx104.c F: drivers/iio/addac/stx104.c
APM DRIVER APM DRIVER
M: Jiri Kosina <jikos@kernel.org> M: Jiri Kosina <jikos@kernel.org>
@ -4617,13 +4617,6 @@ F: include/uapi/linux/dccp.h
F: include/linux/tfrc.h F: include/linux/tfrc.h
F: net/dccp/ F: net/dccp/
DECnet NETWORK LAYER
W: http://linux-decnet.sourceforge.net
L: linux-decnet-user@lists.sourceforge.net
S: Orphan
F: Documentation/networking/decnet.txt
F: net/decnet/
DECSTATION PLATFORM SUPPORT DECSTATION PLATFORM SUPPORT
M: "Maciej W. Rozycki" <macro@linux-mips.org> M: "Maciej W. Rozycki" <macro@linux-mips.org>
L: linux-mips@vger.kernel.org L: linux-mips@vger.kernel.org

View File

@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
VERSION = 5 VERSION = 5
PATCHLEVEL = 4 PATCHLEVEL = 4
SUBLEVEL = 233 SUBLEVEL = 268
EXTRAVERSION = EXTRAVERSION =
NAME = Kleptomaniac Octopus NAME = Kleptomaniac Octopus
@ -93,9 +93,16 @@ endif
# If the user is running make -s (silent mode), suppress echoing of # If the user is running make -s (silent mode), suppress echoing of
# commands # commands
# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),) ifeq ($(filter 3.%,$(MAKE_VERSION)),)
quiet=silent_ silence:=$(findstring s,$(firstword -$(MAKEFLAGS)))
else
silence:=$(findstring s,$(filter-out --%,$(MAKEFLAGS)))
endif
ifeq ($(silence),s)
quiet=silent_
endif endif
export quiet Q KBUILD_VERBOSE export quiet Q KBUILD_VERBOSE
@ -518,8 +525,6 @@ export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o \
export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
--exclude CVS --exclude .pc --exclude .hg --exclude .git --exclude CVS --exclude .pc --exclude .hg --exclude .git
KBUILD_CFLAGS += $(call cc-option,-Wno-misleading-indentation)
# =========================================================================== # ===========================================================================
# Rules shared between *config targets and build targets # Rules shared between *config targets and build targets
@ -811,6 +816,10 @@ endif
KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable) KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable)
# These result in bogus false positives
KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer)
ifdef CONFIG_FRAME_POINTER ifdef CONFIG_FRAME_POINTER
KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
else else

14
OWNERS
View File

@ -1,2 +1,12 @@
# include OWNERS from the authoritative android-mainline branch set noparent
include kernel/common:android-mainline:/OWNERS
# GKI Dr. No Enforcement is active on this branch. Approval of one of the Dr.
# No reviewers is required following a regular CodeReview+2 vote of a code
# reviewer.
#
# See the GKI release documentation (go/gki-dr-no) for further details.
#
# The expanded list of reviewers can be found at:
# https://android.googlesource.com/kernel/common/+/android-mainline/OWNERS_DrNo
include kernel/common:android-mainline:/OWNERS_DrNo

View File

@ -1 +1 @@
LTS_5.4.226_d72fdcc7094f LTS_5.4.259_81334f26ac70

View File

@ -1,12 +0,0 @@
# If we ever add another OWNERS above this directory, it's likely to be
# more permissive, so don't inherit from it
set noparent
adelva@google.com
maennich@google.com
saravanak@google.com
sspatil@google.com
tkjos@google.com
willmcvicker@google.com
# Downstream boards maintained directly in this manifest branch
per-file abi_gki_aarch64_cuttlefish = adelva@google.com, rammuthiah@google.com
per-file abi_gki_aarch64_goldfish = rkir@google.com

File diff suppressed because it is too large Load Diff

View File

@ -1256,6 +1256,7 @@
# required by qcom_smd.ko # required by qcom_smd.ko
__memcpy_toio __memcpy_toio
rpmsg_register_device_override
# required by qcom_spmi-regulator.ko # required by qcom_spmi-regulator.ko
regulator_disable_regmap regulator_disable_regmap

View File

@ -2062,6 +2062,7 @@
rpmsg_set_signals rpmsg_set_signals
rpmsg_trysend rpmsg_trysend
rpmsg_unregister_device rpmsg_unregister_device
rpmsg_register_device_override
rtc_add_group rtc_add_group
rtc_class_close rtc_class_close
rtc_class_open rtc_class_open
@ -2251,8 +2252,10 @@
smp_call_function smp_call_function
smp_call_function_single smp_call_function_single
snd_card_free snd_card_free
snd_card_free_when_closed
snd_card_new snd_card_new
snd_card_register snd_card_register
snd_compr_use_pause_in_draining
snd_ctl_add snd_ctl_add
snd_ctl_boolean_mono_info snd_ctl_boolean_mono_info
snd_ctl_enum_info snd_ctl_enum_info
@ -2442,6 +2445,7 @@
sysfs_create_group sysfs_create_group
sysfs_create_groups sysfs_create_groups
sysfs_create_link sysfs_create_link
sysfs_emit
__sysfs_match_string __sysfs_match_string
sysfs_notify sysfs_notify
sysfs_remove_bin_file sysfs_remove_bin_file
@ -2560,7 +2564,9 @@
ufshcd_remove ufshcd_remove
ufshcd_uic_hibern8_enter ufshcd_uic_hibern8_enter
ufshcd_uic_hibern8_exit ufshcd_uic_hibern8_exit
uhid_hid_driver
__uio_register_device __uio_register_device
uhid_hid_driver
uio_unregister_device uio_unregister_device
unlock_new_inode unlock_new_inode
unlock_page unlock_page

View File

@ -271,6 +271,9 @@ config ARCH_HAS_UNCACHED_SEGMENT
select ARCH_HAS_DMA_PREP_COHERENT select ARCH_HAS_DMA_PREP_COHERENT
bool bool
config ARCH_HAS_CPU_FINALIZE_INIT
bool
# Select if arch init_task must go in the __init_task_data section # Select if arch init_task must go in the __init_task_data section
config ARCH_TASK_STRUCT_ON_STACK config ARCH_TASK_STRUCT_ON_STACK
bool bool

View File

@ -1,20 +0,0 @@
/*
* include/asm-alpha/bugs.h
*
* Copyright (C) 1994 Linus Torvalds
*/
/*
* This is included by init/main.c to check for architecture-dependent bugs.
*
* Needs:
* void check_bugs(void);
*/
/*
* I don't know of any alpha bugs yet.. Nice chip
*/
static void check_bugs(void)
{
}

View File

@ -146,10 +146,8 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
base = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr; base = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr;
symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr; symtab = (Elf64_Sym *)sechdrs[symindex].sh_addr;
/* The small sections were sorted to the end of the segment.
The following should definitely cover them. */
gp = (u64)me->core_layout.base + me->core_layout.size - 0x8000;
got = sechdrs[me->arch.gotsecindex].sh_addr; got = sechdrs[me->arch.gotsecindex].sh_addr;
gp = got + 0x8000;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
unsigned long r_sym = ELF64_R_SYM (rela[i].r_info); unsigned long r_sym = ELF64_R_SYM (rela[i].r_info);

View File

@ -394,8 +394,7 @@ setup_memory(void *kernel_end)
extern void setup_memory(void *); extern void setup_memory(void *);
#endif /* !CONFIG_DISCONTIGMEM */ #endif /* !CONFIG_DISCONTIGMEM */
int __init int page_is_ram(unsigned long pfn)
page_is_ram(unsigned long pfn)
{ {
struct memclust_struct * cluster; struct memclust_struct * cluster;
struct memdesc_struct * memdesc; struct memdesc_struct * memdesc;

View File

@ -475,4 +475,8 @@
543 common fspick sys_fspick 543 common fspick sys_fspick
544 common pidfd_open sys_pidfd_open 544 common pidfd_open sys_pidfd_open
# 545 reserved for clone3 # 545 reserved for clone3
546 common process_madvise sys_process_madvise # 546 reserved for close_range
# 547 reserved for openat2
# 548 reserved for pidfd_getfd
# 549 reserved for faccessat2
550 common process_madvise sys_process_madvise

View File

@ -235,7 +235,21 @@ do_entIF(unsigned long type, struct pt_regs *regs)
{ {
int signo, code; int signo, code;
if ((regs->ps & ~IPL_MAX) == 0) { if (type == 3) { /* FEN fault */
/* Irritating users can call PAL_clrfen to disable the
FPU for the process. The kernel will then trap in
do_switch_stack and undo_switch_stack when we try
to save and restore the FP registers.
Given that GCC by default generates code that uses the
FP registers, PAL_clrfen is not useful except for DoS
attacks. So turn the bleeding FPU back on and be done
with it. */
current_thread_info()->pcb.flags |= 1;
__reload_thread(&current_thread_info()->pcb);
return;
}
if (!user_mode(regs)) {
if (type == 1) { if (type == 1) {
const unsigned int *data const unsigned int *data
= (const unsigned int *) regs->pc; = (const unsigned int *) regs->pc;
@ -368,20 +382,6 @@ do_entIF(unsigned long type, struct pt_regs *regs)
} }
break; break;
case 3: /* FEN fault */
/* Irritating users can call PAL_clrfen to disable the
FPU for the process. The kernel will then trap in
do_switch_stack and undo_switch_stack when we try
to save and restore the FP registers.
Given that GCC by default generates code that uses the
FP registers, PAL_clrfen is not useful except for DoS
attacks. So turn the bleeding FPU back on and be done
with it. */
current_thread_info()->pcb.flags |= 1;
__reload_thread(&current_thread_info()->pcb);
return;
case 5: /* illoc */ case 5: /* illoc */
default: /* unexpected instruction-fault type */ default: /* unexpected instruction-fault type */
; ;

View File

@ -8,6 +8,10 @@
#include <asm/dwarf.h> #include <asm/dwarf.h>
#define ASM_NL ` /* use '`' to mark new line in macro */
#define __ALIGN .align 4
#define __ALIGN_STR __stringify(__ALIGN)
#ifdef __ASSEMBLY__ #ifdef __ASSEMBLY__
.macro ST2 e, o, off .macro ST2 e, o, off
@ -28,10 +32,6 @@
#endif #endif
.endm .endm
#define ASM_NL ` /* use '`' to mark new line in macro */
#define __ALIGN .align 4
#define __ALIGN_STR __stringify(__ALIGN)
/* annotation for data we want in DCCM - if enabled in .config */ /* annotation for data we want in DCCM - if enabled in .config */
.macro ARCFP_DATA nm .macro ARCFP_DATA nm
#ifdef CONFIG_ARC_HAS_DCCM #ifdef CONFIG_ARC_HAS_DCCM

View File

@ -61,7 +61,7 @@ struct rt_sigframe {
unsigned int sigret_magic; unsigned int sigret_magic;
}; };
static int save_arcv2_regs(struct sigcontext *mctx, struct pt_regs *regs) static int save_arcv2_regs(struct sigcontext __user *mctx, struct pt_regs *regs)
{ {
int err = 0; int err = 0;
#ifndef CONFIG_ISA_ARCOMPACT #ifndef CONFIG_ISA_ARCOMPACT
@ -74,12 +74,12 @@ static int save_arcv2_regs(struct sigcontext *mctx, struct pt_regs *regs)
#else #else
v2abi.r58 = v2abi.r59 = 0; v2abi.r58 = v2abi.r59 = 0;
#endif #endif
err = __copy_to_user(&mctx->v2abi, &v2abi, sizeof(v2abi)); err = __copy_to_user(&mctx->v2abi, (void const *)&v2abi, sizeof(v2abi));
#endif #endif
return err; return err;
} }
static int restore_arcv2_regs(struct sigcontext *mctx, struct pt_regs *regs) static int restore_arcv2_regs(struct sigcontext __user *mctx, struct pt_regs *regs)
{ {
int err = 0; int err = 0;
#ifndef CONFIG_ISA_ARCOMPACT #ifndef CONFIG_ISA_ARCOMPACT

View File

@ -48,8 +48,8 @@ void arch_dma_prep_coherent(struct page *page, size_t size)
* upper layer functions (in include/linux/dma-mapping.h) * upper layer functions (in include/linux/dma-mapping.h)
*/ */
void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr, void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
size_t size, enum dma_data_direction dir) enum dma_data_direction dir)
{ {
switch (dir) { switch (dir) {
case DMA_TO_DEVICE: case DMA_TO_DEVICE:
@ -69,8 +69,8 @@ void arch_sync_dma_for_device(struct device *dev, phys_addr_t paddr,
} }
} }
void arch_sync_dma_for_cpu(struct device *dev, phys_addr_t paddr, void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
size_t size, enum dma_data_direction dir) enum dma_data_direction dir)
{ {
switch (dir) { switch (dir) {
case DMA_TO_DEVICE: case DMA_TO_DEVICE:

View File

@ -5,6 +5,7 @@ config ARM
select ARCH_32BIT_OFF_T select ARCH_32BIT_OFF_T
select ARCH_CLOCKSOURCE_DATA select ARCH_CLOCKSOURCE_DATA
select ARCH_HAS_BINFMT_FLAT select ARCH_HAS_BINFMT_FLAT
select ARCH_HAS_CPU_FINALIZE_INIT if MMU
select ARCH_HAS_DEBUG_VIRTUAL if MMU select ARCH_HAS_DEBUG_VIRTUAL if MMU
select ARCH_HAS_DEVMEM_IS_ALLOWED select ARCH_HAS_DEVMEM_IS_ALLOWED
select ARCH_HAS_DMA_COHERENT_TO_PFN if SWIOTLB select ARCH_HAS_DMA_COHERENT_TO_PFN if SWIOTLB

View File

@ -381,7 +381,7 @@
&mmc2 { &mmc2 {
status = "okay"; status = "okay";
vmmc-supply = <&wl12xx_vmmc>; vmmc-supply = <&wl12xx_vmmc>;
non-removable; ti,non-removable;
bus-width = <4>; bus-width = <4>;
cap-power-off-card; cap-power-off-card;
pinctrl-names = "default"; pinctrl-names = "default";

View File

@ -22,7 +22,6 @@
pinctrl-0 = <&emmc_pins>; pinctrl-0 = <&emmc_pins>;
bus-width = <8>; bus-width = <8>;
status = "okay"; status = "okay";
non-removable;
}; };
&am33xx_pinmux { &am33xx_pinmux {

View File

@ -75,6 +75,7 @@
bus-width = <4>; bus-width = <4>;
non-removable; non-removable;
cap-power-off-card; cap-power-off-card;
ti,needs-special-hs-handling;
keep-power-in-suspend; keep-power-in-suspend;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>; pinctrl-0 = <&mmc3_pins &wl18xx_pins>;

View File

@ -389,6 +389,7 @@
bus-width = <4>; bus-width = <4>;
non-removable; non-removable;
cap-power-off-card; cap-power-off-card;
ti,needs-special-hs-handling;
keep-power-in-suspend; keep-power-in-suspend;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>; pinctrl-0 = <&mmc3_pins &wl18xx_pins>;

View File

@ -75,6 +75,7 @@
bus-width = <4>; bus-width = <4>;
non-removable; non-removable;
cap-power-off-card; cap-power-off-card;
ti,needs-special-hs-handling;
keep-power-in-suspend; keep-power-in-suspend;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>; pinctrl-0 = <&mmc3_pins &wl18xx_pins>;

View File

@ -782,7 +782,8 @@
bus-width = <4>; bus-width = <4>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wlan_pins>; pinctrl-0 = <&mmc3_pins &wlan_pins>;
non-removable; ti,non-removable;
ti,needs-special-hs-handling;
cap-power-off-card; cap-power-off-card;
keep-power-in-suspend; keep-power-in-suspend;

View File

@ -700,7 +700,7 @@
&mmc2 { &mmc2 {
status = "okay"; status = "okay";
vmmc-supply = <&wl12xx_vmmc>; vmmc-supply = <&wl12xx_vmmc>;
non-removable; ti,non-removable;
bus-width = <4>; bus-width = <4>;
cap-power-off-card; cap-power-off-card;
keep-power-in-suspend; keep-power-in-suspend;

View File

@ -361,7 +361,7 @@
pinctrl-0 = <&emmc_pins>; pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmcsd_fixed>; vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>; bus-width = <8>;
non-removable; ti,non-removable;
status = "okay"; status = "okay";
}; };

View File

@ -176,7 +176,7 @@
vmmc-supply = <&vmmcsd_fixed>; vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>; bus-width = <8>;
pinctrl-0 = <&mmc1_pins_default>; pinctrl-0 = <&mmc1_pins_default>;
non-removable; ti,non-removable;
status = "okay"; status = "okay";
}; };

View File

@ -473,7 +473,7 @@
vmmc-supply = <&vmmcsd_fixed>; vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>; bus-width = <8>;
pinctrl-0 = <&mmc2_pins_default>; pinctrl-0 = <&mmc2_pins_default>;
non-removable; ti,non-removable;
status = "okay"; status = "okay";
}; };

View File

@ -341,7 +341,7 @@
pinctrl-0 = <&emmc_pins>; pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&ldo3_reg>; vmmc-supply = <&ldo3_reg>;
bus-width = <8>; bus-width = <8>;
non-removable; ti,non-removable;
}; };
&mmc3 { &mmc3 {
@ -351,7 +351,7 @@
pinctrl-0 = <&wireless_pins>; pinctrl-0 = <&wireless_pins>;
vmmmc-supply = <&v3v3c_reg>; vmmmc-supply = <&v3v3c_reg>;
bus-width = <4>; bus-width = <4>;
non-removable; ti,non-removable;
dmas = <&edma_xbar 12 0 1 dmas = <&edma_xbar 12 0 1
&edma_xbar 13 0 2>; &edma_xbar 13 0 2>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";

View File

@ -69,7 +69,7 @@
pinctrl-0 = <&emmc_pins>; pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmc_reg>; vmmc-supply = <&vmmc_reg>;
bus-width = <8>; bus-width = <8>;
non-removable; ti,non-removable;
status = "disabled"; status = "disabled";
}; };

View File

@ -1333,8 +1333,10 @@
ranges = <0x0 0x60000 0x1000>; ranges = <0x0 0x60000 0x1000>;
mmc1: mmc@0 { mmc1: mmc@0 {
compatible = "ti,am335-sdhci"; compatible = "ti,omap4-hsmmc";
ti,dual-volt;
ti,needs-special-reset; ti,needs-special-reset;
ti,needs-special-hs-handling;
dmas = <&edma 24 0>, <&edma 25 0>; dmas = <&edma 24 0>, <&edma 25 0>;
dma-names = "tx", "rx"; dma-names = "tx", "rx";
interrupts = <64>; interrupts = <64>;
@ -1824,7 +1826,7 @@
ranges = <0x0 0xd8000 0x1000>; ranges = <0x0 0xd8000 0x1000>;
mmc2: mmc@0 { mmc2: mmc@0 {
compatible = "ti,am335-sdhci"; compatible = "ti,omap4-hsmmc";
ti,needs-special-reset; ti,needs-special-reset;
dmas = <&edma 2 0 dmas = <&edma 2 0
&edma 3 0>; &edma 3 0>;

View File

@ -259,11 +259,10 @@
ranges = <0x0 0x47810000 0x1000>; ranges = <0x0 0x47810000 0x1000>;
mmc3: mmc@0 { mmc3: mmc@0 {
compatible = "ti,am335-sdhci"; compatible = "ti,omap4-hsmmc";
ti,needs-special-reset; ti,needs-special-reset;
interrupts = <29>; interrupts = <29>;
reg = <0x0 0x1000>; reg = <0x0 0x1000>;
status = "disabled";
}; };
}; };

View File

@ -250,11 +250,10 @@
ranges = <0x0 0x47810000 0x1000>; ranges = <0x0 0x47810000 0x1000>;
mmc3: mmc@0 { mmc3: mmc@0 {
compatible = "ti,am437-sdhci"; compatible = "ti,omap4-hsmmc";
ti,needs-special-reset; ti,needs-special-reset;
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0 0x1000>; reg = <0x0 0x1000>;
status = "disabled";
}; };
}; };

View File

@ -291,7 +291,7 @@
pinctrl-0 = <&emmc_pins>; pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmc_3v3>; vmmc-supply = <&vmmc_3v3>;
bus-width = <8>; bus-width = <8>;
non-removable; ti,non-removable;
}; };
&spi0 { &spi0 {

View File

@ -872,7 +872,7 @@
pinctrl-names = "default", "sleep"; pinctrl-names = "default", "sleep";
pinctrl-0 = <&emmc_pins_default>; pinctrl-0 = <&emmc_pins_default>;
pinctrl-1 = <&emmc_pins_sleep>; pinctrl-1 = <&emmc_pins_sleep>;
non-removable; ti,non-removable;
}; };
&mmc3 { &mmc3 {
@ -889,7 +889,7 @@
pinctrl-1 = <&mmc3_pins_sleep>; pinctrl-1 = <&mmc3_pins_sleep>;
cap-power-off-card; cap-power-off-card;
keep-power-in-suspend; keep-power-in-suspend;
non-removable; ti,non-removable;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -1104,8 +1104,9 @@
ranges = <0x0 0x60000 0x1000>; ranges = <0x0 0x60000 0x1000>;
mmc1: mmc@0 { mmc1: mmc@0 {
compatible = "ti,am437-sdhci"; compatible = "ti,omap4-hsmmc";
reg = <0x0 0x1000>; reg = <0x0 0x1000>;
ti,dual-volt;
ti,needs-special-reset; ti,needs-special-reset;
dmas = <&edma 24 0>, dmas = <&edma 24 0>,
<&edma 25 0>; <&edma 25 0>;
@ -1640,7 +1641,7 @@
ranges = <0x0 0xd8000 0x1000>; ranges = <0x0 0xd8000 0x1000>;
mmc2: mmc@0 { mmc2: mmc@0 {
compatible = "ti,am437-sdhci"; compatible = "ti,omap4-hsmmc";
reg = <0x0 0x1000>; reg = <0x0 0x1000>;
ti,needs-special-reset; ti,needs-special-reset;
dmas = <&edma 2 0>, dmas = <&edma 2 0>,

View File

@ -694,7 +694,7 @@
pinctrl-1 = <&mmc3_pins_sleep>; pinctrl-1 = <&mmc3_pins_sleep>;
cap-power-off-card; cap-power-off-card;
keep-power-in-suspend; keep-power-in-suspend;
non-removable; ti,non-removable;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -527,7 +527,7 @@
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <31 0>; interrupts = <31 0>;
pendown-gpio = <&gpio1 31 0>; pendown-gpio = <&gpio1 31 GPIO_ACTIVE_LOW>;
ti,x-min = /bits/ 16 <0x0>; ti,x-min = /bits/ 16 <0x0>;

View File

@ -156,7 +156,7 @@
compatible = "ti,ads7843"; compatible = "ti,ads7843";
interrupts-extended = <&pioC 2 IRQ_TYPE_EDGE_BOTH>; interrupts-extended = <&pioC 2 IRQ_TYPE_EDGE_BOTH>;
spi-max-frequency = <3000000>; spi-max-frequency = <3000000>;
pendown-gpio = <&pioC 2 GPIO_ACTIVE_HIGH>; pendown-gpio = <&pioC 2 GPIO_ACTIVE_LOW>;
ti,x-min = /bits/ 16 <150>; ti,x-min = /bits/ 16 <150>;
ti,x-max = /bits/ 16 <3830>; ti,x-max = /bits/ 16 <3830>;

View File

@ -19,7 +19,8 @@
memory@0 { memory@0 {
device_type = "memory"; device_type = "memory";
reg = <0x00000000 0x08000000>; reg = <0x00000000 0x08000000>,
<0x88000000 0x08000000>;
}; };
gpio-keys { gpio-keys {

View File

@ -26,7 +26,6 @@
wlan { wlan {
label = "bcm53xx:blue:wlan"; label = "bcm53xx:blue:wlan";
gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>; gpios = <&chipcommon 10 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-off";
}; };
system { system {
@ -46,3 +45,16 @@
}; };
}; };
}; };
&gmac0 {
phy-mode = "rgmii";
phy-handle = <&bcm54210e>;
mdio {
/delete-node/ switch@1e;
bcm54210e: ethernet-phy@0 {
reg = <0>;
};
};
};

View File

@ -26,7 +26,6 @@
5ghz { 5ghz {
label = "bcm53xx:blue:5ghz"; label = "bcm53xx:blue:5ghz";
gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>; gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "default-off";
}; };
system { system {
@ -42,7 +41,6 @@
2ghz { 2ghz {
label = "bcm53xx:blue:2ghz"; label = "bcm53xx:blue:2ghz";
gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>; gpios = <&pcie0_chipcommon 3 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "default-off";
}; };
}; };
@ -83,3 +81,16 @@
}; };
}; };
}; };
&gmac0 {
phy-mode = "rgmii";
phy-handle = <&bcm54210e>;
mdio {
/delete-node/ switch@1e;
bcm54210e: ethernet-phy@0 {
reg = <0>;
};
};
};

View File

@ -511,7 +511,6 @@
"spi_lr_session_done", "spi_lr_session_done",
"spi_lr_overread"; "spi_lr_overread";
clocks = <&iprocmed>; clocks = <&iprocmed>;
clock-names = "iprocmed";
num-cs = <2>; num-cs = <2>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -127,6 +127,9 @@
pcie0: pcie@2000 { pcie0: pcie@2000 {
reg = <0x00002000 0x1000>; reg = <0x00002000 0x1000>;
#address-cells = <3>;
#size-cells = <2>;
}; };
usb2: usb2@4000 { usb2: usb2@4000 {

View File

@ -60,9 +60,9 @@
spi { spi {
compatible = "spi-gpio"; compatible = "spi-gpio";
num-chipselects = <1>; num-chipselects = <1>;
gpio-sck = <&chipcommon 21 0>; sck-gpios = <&chipcommon 21 0>;
gpio-miso = <&chipcommon 22 0>; miso-gpios = <&chipcommon 22 0>;
gpio-mosi = <&chipcommon 23 0>; mosi-gpios = <&chipcommon 23 0>;
cs-gpios = <&chipcommon 24 0>; cs-gpios = <&chipcommon 24 0>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -239,7 +239,7 @@
i80-if-timings { i80-if-timings {
cs-setup = <0>; cs-setup = <0>;
wr-setup = <0>; wr-setup = <0>;
wr-act = <1>; wr-active = <1>;
wr-hold = <0>; wr-hold = <0>;
}; };
}; };

View File

@ -10,7 +10,7 @@
/ { / {
thermal-zones { thermal-zones {
cpu_thermal: cpu-thermal { cpu_thermal: cpu-thermal {
thermal-sensors = <&tmu 0>; thermal-sensors = <&tmu>;
polling-delay-passive = <0>; polling-delay-passive = <0>;
polling-delay = <0>; polling-delay = <0>;
trips { trips {

View File

@ -605,7 +605,7 @@
status = "disabled"; status = "disabled";
hdmi_i2c_phy: hdmiphy@38 { hdmi_i2c_phy: hdmiphy@38 {
compatible = "exynos4210-hdmiphy"; compatible = "samsung,exynos4210-hdmiphy";
reg = <0x38>; reg = <0x38>;
}; };
}; };

View File

@ -179,7 +179,7 @@
compatible = "wlf,wm8960"; compatible = "wlf,wm8960";
reg = <0x1a>; reg = <0x1a>;
clocks = <&pmu_system_controller 0>; clocks = <&pmu_system_controller 0>;
clock-names = "MCLK1"; clock-names = "mclk";
wlf,shared-lrclk; wlf,shared-lrclk;
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
}; };

View File

@ -116,7 +116,6 @@
}; };
&cpu0_thermal { &cpu0_thermal {
thermal-sensors = <&tmu_cpu0 0>;
polling-delay-passive = <0>; polling-delay-passive = <0>;
polling-delay = <0>; polling-delay = <0>;

View File

@ -539,7 +539,7 @@
}; };
mipi_phy: mipi-video-phy { mipi_phy: mipi-video-phy {
compatible = "samsung,s5pv210-mipi-video-phy"; compatible = "samsung,exynos5420-mipi-video-phy";
syscon = <&pmu_system_controller>; syscon = <&pmu_system_controller>;
#phy-cells = <1>; #phy-cells = <1>;
}; };

View File

@ -59,7 +59,7 @@
reg = <0x80000000 0x2000>; reg = <0x80000000 0x2000>;
}; };
dma_apbh: dma-apbh@80004000 { dma_apbh: dma-controller@80004000 {
compatible = "fsl,imx23-dma-apbh"; compatible = "fsl,imx23-dma-apbh";
reg = <0x80004000 0x2000>; reg = <0x80004000 0x2000>;
interrupts = <0 14 20 0 interrupts = <0 14 20 0

View File

@ -78,7 +78,7 @@
status = "disabled"; status = "disabled";
}; };
dma_apbh: dma-apbh@80004000 { dma_apbh: dma-controller@80004000 {
compatible = "fsl,imx28-dma-apbh"; compatible = "fsl,imx28-dma-apbh";
reg = <0x80004000 0x2000>; reg = <0x80004000 0x2000>;
interrupts = <82 83 84 85 interrupts = <82 83 84 85

View File

@ -59,7 +59,7 @@
interrupt-parent = <&avic>; interrupt-parent = <&avic>;
ranges; ranges;
L2: l2-cache@30000000 { L2: cache-controller@30000000 {
compatible = "arm,l210-cache"; compatible = "arm,l210-cache";
reg = <0x30000000 0x1000>; reg = <0x30000000 0x1000>;
cache-unified; cache-unified;

View File

@ -45,6 +45,10 @@
spi1 = &ecspi2; spi1 = &ecspi2;
spi2 = &ecspi3; spi2 = &ecspi3;
spi3 = &ecspi4; spi3 = &ecspi4;
usb0 = &usbotg;
usb1 = &usbh1;
usb2 = &usbh2;
usb3 = &usbh3;
usbphy0 = &usbphy1; usbphy0 = &usbphy1;
usbphy1 = &usbphy2; usbphy1 = &usbphy2;
}; };
@ -156,7 +160,7 @@
interrupt-parent = <&gpc>; interrupt-parent = <&gpc>;
ranges; ranges;
dma_apbh: dma-apbh@110000 { dma_apbh: dma-controller@110000 {
compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh";
reg = <0x00110000 0x2000>; reg = <0x00110000 0x2000>;
interrupts = <0 13 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 13 IRQ_TYPE_LEVEL_HIGH>,
@ -255,7 +259,7 @@
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
}; };
L2: l2-cache@a02000 { L2: cache-controller@a02000 {
compatible = "arm,pl310-cache"; compatible = "arm,pl310-cache";
reg = <0x00a02000 0x1000>; reg = <0x00a02000 0x1000>;
interrupts = <0 92 IRQ_TYPE_LEVEL_HIGH>; interrupts = <0 92 IRQ_TYPE_LEVEL_HIGH>;
@ -574,7 +578,7 @@
status = "disabled"; status = "disabled";
}; };
gpt: gpt@2098000 { gpt: timer@2098000 {
compatible = "fsl,imx6q-gpt", "fsl,imx31-gpt"; compatible = "fsl,imx6q-gpt", "fsl,imx31-gpt";
reg = <0x02098000 0x4000>; reg = <0x02098000 0x4000>;
interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -39,6 +39,9 @@
spi1 = &ecspi2; spi1 = &ecspi2;
spi2 = &ecspi3; spi2 = &ecspi3;
spi3 = &ecspi4; spi3 = &ecspi4;
usb0 = &usbotg1;
usb1 = &usbotg2;
usb2 = &usbh;
usbphy0 = &usbphy1; usbphy0 = &usbphy1;
usbphy1 = &usbphy2; usbphy1 = &usbphy2;
}; };
@ -136,7 +139,7 @@
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
}; };
L2: l2-cache@a02000 { L2: cache-controller@a02000 {
compatible = "arm,pl310-cache"; compatible = "arm,pl310-cache";
reg = <0x00a02000 0x1000>; reg = <0x00a02000 0x1000>;
interrupts = <0 92 IRQ_TYPE_LEVEL_HIGH>; interrupts = <0 92 IRQ_TYPE_LEVEL_HIGH>;
@ -383,7 +386,7 @@
clock-names = "ipg", "per"; clock-names = "ipg", "per";
}; };
gpt: gpt@2098000 { gpt: timer@2098000 {
compatible = "fsl,imx6sl-gpt"; compatible = "fsl,imx6sl-gpt";
reg = <0x02098000 0x4000>; reg = <0x02098000 0x4000>;
interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -36,6 +36,8 @@
spi1 = &ecspi2; spi1 = &ecspi2;
spi3 = &ecspi3; spi3 = &ecspi3;
spi4 = &ecspi4; spi4 = &ecspi4;
usb0 = &usbotg1;
usb1 = &usbotg2;
usbphy0 = &usbphy1; usbphy0 = &usbphy1;
usbphy1 = &usbphy2; usbphy1 = &usbphy2;
}; };
@ -49,20 +51,18 @@
device_type = "cpu"; device_type = "cpu";
reg = <0>; reg = <0>;
next-level-cache = <&L2>; next-level-cache = <&L2>;
operating-points = < operating-points =
/* kHz uV */ /* kHz uV */
996000 1275000 <996000 1275000>,
792000 1175000 <792000 1175000>,
396000 1075000 <396000 1075000>,
198000 975000 <198000 975000>;
>; fsl,soc-operating-points =
fsl,soc-operating-points = <
/* ARM kHz SOC-PU uV */ /* ARM kHz SOC-PU uV */
996000 1175000 <996000 1175000>,
792000 1175000 <792000 1175000>,
396000 1175000 <396000 1175000>,
198000 1175000 <198000 1175000>;
>;
clock-latency = <61036>; /* two CLK32 periods */ clock-latency = <61036>; /* two CLK32 periods */
#cooling-cells = <2>; #cooling-cells = <2>;
clocks = <&clks IMX6SLL_CLK_ARM>, clocks = <&clks IMX6SLL_CLK_ARM>,
@ -137,7 +137,7 @@
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
}; };
L2: l2-cache@a02000 { L2: cache-controller@a02000 {
compatible = "arm,pl310-cache"; compatible = "arm,pl310-cache";
reg = <0x00a02000 0x1000>; reg = <0x00a02000 0x1000>;
interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
@ -272,7 +272,7 @@
status = "disabled"; status = "disabled";
}; };
ssi1: ssi-controller@2028000 { ssi1: ssi@2028000 {
compatible = "fsl,imx6sl-ssi", "fsl,imx51-ssi"; compatible = "fsl,imx6sl-ssi", "fsl,imx51-ssi";
reg = <0x02028000 0x4000>; reg = <0x02028000 0x4000>;
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
@ -285,7 +285,7 @@
status = "disabled"; status = "disabled";
}; };
ssi2: ssi-controller@202c000 { ssi2: ssi@202c000 {
compatible = "fsl,imx6sl-ssi", "fsl,imx51-ssi"; compatible = "fsl,imx6sl-ssi", "fsl,imx51-ssi";
reg = <0x0202c000 0x4000>; reg = <0x0202c000 0x4000>;
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
@ -298,7 +298,7 @@
status = "disabled"; status = "disabled";
}; };
ssi3: ssi-controller@2030000 { ssi3: ssi@2030000 {
compatible = "fsl,imx6sl-ssi", "fsl,imx51-ssi"; compatible = "fsl,imx6sl-ssi", "fsl,imx51-ssi";
reg = <0x02030000 0x4000>; reg = <0x02030000 0x4000>;
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
@ -550,7 +550,7 @@
reg = <0x020ca000 0x1000>; reg = <0x020ca000 0x1000>;
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6SLL_CLK_USBPHY2>; clocks = <&clks IMX6SLL_CLK_USBPHY2>;
phy-reg_3p0-supply = <&reg_3p0>; phy-3p0-supply = <&reg_3p0>;
fsl,anatop = <&anatop>; fsl,anatop = <&anatop>;
}; };

View File

@ -49,6 +49,9 @@
spi2 = &ecspi3; spi2 = &ecspi3;
spi3 = &ecspi4; spi3 = &ecspi4;
spi4 = &ecspi5; spi4 = &ecspi5;
usb0 = &usbotg1;
usb1 = &usbotg2;
usb2 = &usbh;
usbphy0 = &usbphy1; usbphy0 = &usbphy1;
usbphy1 = &usbphy2; usbphy1 = &usbphy2;
}; };
@ -187,7 +190,7 @@
interrupt-parent = <&intc>; interrupt-parent = <&intc>;
}; };
L2: l2-cache@a02000 { L2: cache-controller@a02000 {
compatible = "arm,pl310-cache"; compatible = "arm,pl310-cache";
reg = <0x00a02000 0x1000>; reg = <0x00a02000 0x1000>;
interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
@ -208,7 +211,7 @@
power-domains = <&pd_pu>; power-domains = <&pd_pu>;
}; };
dma_apbh: dma-apbh@1804000 { dma_apbh: dma-controller@1804000 {
compatible = "fsl,imx6sx-dma-apbh", "fsl,imx28-dma-apbh"; compatible = "fsl,imx6sx-dma-apbh", "fsl,imx28-dma-apbh";
reg = <0x01804000 0x2000>; reg = <0x01804000 0x2000>;
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
@ -472,7 +475,7 @@
status = "disabled"; status = "disabled";
}; };
gpt: gpt@2098000 { gpt: timer@2098000 {
compatible = "fsl,imx6sx-gpt", "fsl,imx6dl-gpt"; compatible = "fsl,imx6sx-gpt", "fsl,imx6dl-gpt";
reg = <0x02098000 0x4000>; reg = <0x02098000 0x4000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
@ -955,6 +958,8 @@
<&clks IMX6SX_CLK_USDHC1>; <&clks IMX6SX_CLK_USDHC1>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
bus-width = <4>; bus-width = <4>;
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
status = "disabled"; status = "disabled";
}; };
@ -967,6 +972,8 @@
<&clks IMX6SX_CLK_USDHC2>; <&clks IMX6SX_CLK_USDHC2>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
bus-width = <4>; bus-width = <4>;
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
status = "disabled"; status = "disabled";
}; };
@ -979,6 +986,8 @@
<&clks IMX6SX_CLK_USDHC3>; <&clks IMX6SX_CLK_USDHC3>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
bus-width = <4>; bus-width = <4>;
fsl,tuning-start-tap = <20>;
fsl,tuning-step= <2>;
status = "disabled"; status = "disabled";
}; };

View File

@ -47,6 +47,8 @@
spi1 = &ecspi2; spi1 = &ecspi2;
spi2 = &ecspi3; spi2 = &ecspi3;
spi3 = &ecspi4; spi3 = &ecspi4;
usb0 = &usbotg1;
usb1 = &usbotg2;
usbphy0 = &usbphy1; usbphy0 = &usbphy1;
usbphy1 = &usbphy2; usbphy1 = &usbphy2;
}; };
@ -172,7 +174,7 @@
<0x00a06000 0x2000>; <0x00a06000 0x2000>;
}; };
dma_apbh: dma-apbh@1804000 { dma_apbh: dma-controller@1804000 {
compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh";
reg = <0x01804000 0x2000>; reg = <0x01804000 0x2000>;
interrupts = <0 13 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 13 IRQ_TYPE_LEVEL_HIGH>,
@ -431,7 +433,7 @@
status = "disabled"; status = "disabled";
}; };
gpt1: gpt@2098000 { gpt1: timer@2098000 {
compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt";
reg = <0x02098000 0x4000>; reg = <0x02098000 0x4000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
@ -705,7 +707,7 @@
reg = <0x020e4000 0x4000>; reg = <0x020e4000 0x4000>;
}; };
gpt2: gpt@20e8000 { gpt2: timer@20e8000 {
compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt";
reg = <0x020e8000 0x4000>; reg = <0x020e8000 0x4000>;
interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;

View File

@ -64,7 +64,7 @@
interrupt-parent = <&gpio2>; interrupt-parent = <&gpio2>;
interrupts = <7 0>; interrupts = <7 0>;
spi-max-frequency = <1000000>; spi-max-frequency = <1000000>;
pendown-gpio = <&gpio2 7 0>; pendown-gpio = <&gpio2 7 GPIO_ACTIVE_LOW>;
vcc-supply = <&reg_3p3v>; vcc-supply = <&reg_3p3v>;
ti,x-min = /bits/ 16 <0>; ti,x-min = /bits/ 16 <0>;
ti,x-max = /bits/ 16 <4095>; ti,x-max = /bits/ 16 <4095>;

View File

@ -176,7 +176,7 @@
pinctrl-0 = <&pinctrl_tsc2046_pendown>; pinctrl-0 = <&pinctrl_tsc2046_pendown>;
interrupt-parent = <&gpio2>; interrupt-parent = <&gpio2>;
interrupts = <29 0>; interrupts = <29 0>;
pendown-gpio = <&gpio2 29 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio2 29 GPIO_ACTIVE_LOW>;
touchscreen-max-pressure = <255>; touchscreen-max-pressure = <255>;
wakeup-source; wakeup-source;
}; };

View File

@ -7,6 +7,12 @@
#include <dt-bindings/reset/imx7-reset.h> #include <dt-bindings/reset/imx7-reset.h>
/ { / {
aliases {
usb0 = &usbotg1;
usb1 = &usbotg2;
usb2 = &usbh;
};
cpus { cpus {
cpu0: cpu@0 { cpu0: cpu@0 {
clock-frequency = <996000000>; clock-frequency = <996000000>;

View File

@ -47,6 +47,8 @@
spi1 = &ecspi2; spi1 = &ecspi2;
spi2 = &ecspi3; spi2 = &ecspi3;
spi3 = &ecspi4; spi3 = &ecspi4;
usb0 = &usbotg1;
usb1 = &usbh;
}; };
cpus { cpus {
@ -444,8 +446,8 @@
fsl,input-sel = <&iomuxc>; fsl,input-sel = <&iomuxc>;
}; };
gpt1: gpt@302d0000 { gpt1: timer@302d0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302d0000 0x10000>; reg = <0x302d0000 0x10000>;
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT1_ROOT_CLK>, clocks = <&clks IMX7D_GPT1_ROOT_CLK>,
@ -453,8 +455,8 @@
clock-names = "ipg", "per"; clock-names = "ipg", "per";
}; };
gpt2: gpt@302e0000 { gpt2: timer@302e0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302e0000 0x10000>; reg = <0x302e0000 0x10000>;
interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT2_ROOT_CLK>, clocks = <&clks IMX7D_GPT2_ROOT_CLK>,
@ -463,8 +465,8 @@
status = "disabled"; status = "disabled";
}; };
gpt3: gpt@302f0000 { gpt3: timer@302f0000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x302f0000 0x10000>; reg = <0x302f0000 0x10000>;
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT3_ROOT_CLK>, clocks = <&clks IMX7D_GPT3_ROOT_CLK>,
@ -473,8 +475,8 @@
status = "disabled"; status = "disabled";
}; };
gpt4: gpt@30300000 { gpt4: timer@30300000 {
compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt"; compatible = "fsl,imx7d-gpt", "fsl,imx6dl-gpt";
reg = <0x30300000 0x10000>; reg = <0x30300000 0x10000>;
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_GPT4_ROOT_CLK>, clocks = <&clks IMX7D_GPT4_ROOT_CLK>,
@ -504,7 +506,7 @@
mux: mux-controller { mux: mux-controller {
compatible = "mmio-mux"; compatible = "mmio-mux";
#mux-control-cells = <0>; #mux-control-cells = <1>;
mux-reg-masks = <0x14 0x00000010>; mux-reg-masks = <0x14 0x00000010>;
}; };
@ -1131,6 +1133,8 @@
<&clks IMX7D_USDHC1_ROOT_CLK>; <&clks IMX7D_USDHC1_ROOT_CLK>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
bus-width = <4>; bus-width = <4>;
fsl,tuning-step = <2>;
fsl,tuning-start-tap = <20>;
status = "disabled"; status = "disabled";
}; };
@ -1143,6 +1147,8 @@
<&clks IMX7D_USDHC2_ROOT_CLK>; <&clks IMX7D_USDHC2_ROOT_CLK>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
bus-width = <4>; bus-width = <4>;
fsl,tuning-step = <2>;
fsl,tuning-start-tap = <20>;
status = "disabled"; status = "disabled";
}; };
@ -1155,6 +1161,8 @@
<&clks IMX7D_USDHC3_ROOT_CLK>; <&clks IMX7D_USDHC3_ROOT_CLK>;
clock-names = "ipg", "ahb", "per"; clock-names = "ipg", "ahb", "per";
bus-width = <4>; bus-width = <4>;
fsl,tuning-step = <2>;
fsl,tuning-start-tap = <20>;
status = "disabled"; status = "disabled";
}; };
@ -1190,14 +1198,13 @@
}; };
}; };
dma_apbh: dma-apbh@33000000 { dma_apbh: dma-controller@33000000 {
compatible = "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh"; compatible = "fsl,imx7d-dma-apbh", "fsl,imx28-dma-apbh";
reg = <0x33000000 0x2000>; reg = <0x33000000 0x2000>;
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
#dma-cells = <1>; #dma-cells = <1>;
dma-channels = <4>; dma-channels = <4>;
clocks = <&clks IMX7D_NAND_USDHC_BUS_RAWNAND_CLK>; clocks = <&clks IMX7D_NAND_USDHC_BUS_RAWNAND_CLK>;

View File

@ -227,7 +227,7 @@
interrupt-parent = <&gpio2>; interrupt-parent = <&gpio2>;
interrupts = <25 0>; /* gpio_57 */ interrupts = <25 0>; /* gpio_57 */
pendown-gpio = <&gpio2 25 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio2 25 GPIO_ACTIVE_LOW>;
ti,x-min = /bits/ 16 <0x0>; ti,x-min = /bits/ 16 <0x0>;
ti,x-max = /bits/ 16 <0x0fff>; ti,x-max = /bits/ 16 <0x0fff>;

View File

@ -54,7 +54,7 @@
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <27 0>; /* gpio_27 */ interrupts = <27 0>; /* gpio_27 */
pendown-gpio = <&gpio1 27 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio1 27 GPIO_ACTIVE_LOW>;
ti,x-min = /bits/ 16 <0x0>; ti,x-min = /bits/ 16 <0x0>;
ti,x-max = /bits/ 16 <0x0fff>; ti,x-max = /bits/ 16 <0x0fff>;

View File

@ -5,9 +5,11 @@
#include "omap3-gta04a5.dts" #include "omap3-gta04a5.dts"
&omap3_pmx_core { / {
model = "Goldelico GTA04A5/Letux 2804 with OneNAND"; model = "Goldelico GTA04A5/Letux 2804 with OneNAND";
};
&omap3_pmx_core {
gpmc_pins: pinmux_gpmc_pins { gpmc_pins: pinmux_gpmc_pins {
pinctrl-single,pins = < pinctrl-single,pins = <

View File

@ -311,7 +311,7 @@
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <8 0>; /* boot6 / gpio_8 */ interrupts = <8 0>; /* boot6 / gpio_8 */
spi-max-frequency = <1000000>; spi-max-frequency = <1000000>;
pendown-gpio = <&gpio1 8 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio1 8 GPIO_ACTIVE_LOW>;
vcc-supply = <&reg_vcc3>; vcc-supply = <&reg_vcc3>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&tsc2048_pins>; pinctrl-0 = <&tsc2048_pins>;

View File

@ -149,7 +149,7 @@
interrupt-parent = <&gpio4>; interrupt-parent = <&gpio4>;
interrupts = <18 0>; /* gpio_114 */ interrupts = <18 0>; /* gpio_114 */
pendown-gpio = <&gpio4 18 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio4 18 GPIO_ACTIVE_LOW>;
ti,x-min = /bits/ 16 <0x0>; ti,x-min = /bits/ 16 <0x0>;
ti,x-max = /bits/ 16 <0x0fff>; ti,x-max = /bits/ 16 <0x0fff>;

View File

@ -160,7 +160,7 @@
interrupt-parent = <&gpio4>; interrupt-parent = <&gpio4>;
interrupts = <18 0>; /* gpio_114 */ interrupts = <18 0>; /* gpio_114 */
pendown-gpio = <&gpio4 18 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio4 18 GPIO_ACTIVE_LOW>;
ti,x-min = /bits/ 16 <0x0>; ti,x-min = /bits/ 16 <0x0>;
ti,x-max = /bits/ 16 <0x0fff>; ti,x-max = /bits/ 16 <0x0fff>;

View File

@ -651,7 +651,7 @@
pinctrl-0 = <&penirq_pins>; pinctrl-0 = <&penirq_pins>;
interrupt-parent = <&gpio3>; interrupt-parent = <&gpio3>;
interrupts = <30 IRQ_TYPE_NONE>; /* GPIO_94 */ interrupts = <30 IRQ_TYPE_NONE>; /* GPIO_94 */
pendown-gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio3 30 GPIO_ACTIVE_LOW>;
vcc-supply = <&vaux4>; vcc-supply = <&vaux4>;
ti,x-min = /bits/ 16 <0>; ti,x-min = /bits/ 16 <0>;

View File

@ -656,12 +656,12 @@
/* Configure pwm clock source for timers 8 & 9 */ /* Configure pwm clock source for timers 8 & 9 */
&timer8 { &timer8 {
assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>; assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
assigned-clock-parents = <&sys_clkin_ck>; assigned-clock-parents = <&sys_32k_ck>;
}; };
&timer9 { &timer9 {
assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>; assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
assigned-clock-parents = <&sys_clkin_ck>; assigned-clock-parents = <&sys_32k_ck>;
}; };
/* /*
@ -678,6 +678,7 @@
&uart3 { &uart3 {
interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
&omap4_pmx_core 0x17c>; &omap4_pmx_core 0x17c>;
overrun-throttle-ms = <500>;
}; };
&uart4 { &uart4 {

View File

@ -354,7 +354,7 @@
interrupt-parent = <&gpio1>; interrupt-parent = <&gpio1>;
interrupts = <15 0>; /* gpio1_wk15 */ interrupts = <15 0>; /* gpio1_wk15 */
pendown-gpio = <&gpio1 15 GPIO_ACTIVE_HIGH>; pendown-gpio = <&gpio1 15 GPIO_ACTIVE_LOW>;
ti,x-min = /bits/ 16 <0x0>; ti,x-min = /bits/ 16 <0x0>;

View File

@ -759,7 +759,7 @@
xoadc: xoadc@197 { xoadc: xoadc@197 {
compatible = "qcom,pm8921-adc"; compatible = "qcom,pm8921-adc";
reg = <197>; reg = <0x197>;
interrupts-extended = <&pmicintc 78 IRQ_TYPE_EDGE_RISING>; interrupts-extended = <&pmicintc 78 IRQ_TYPE_EDGE_RISING>;
#address-cells = <2>; #address-cells = <2>;
#size-cells = <0>; #size-cells = <0>;

View File

@ -393,8 +393,8 @@
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>, ranges = <0x81000000 0x0 0x00000000 0x40200000 0x0 0x00100000>,
<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; <0x82000000 0x0 0x40300000 0x40300000 0x0 0x00d00000>;
interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi"; interrupt-names = "msi";

View File

@ -451,8 +451,8 @@
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
ranges = <0x81000000 0 0x0fe00000 0x0fe00000 0 0x00100000 /* downstream I/O */ ranges = <0x81000000 0x0 0x00000000 0x0fe00000 0x0 0x00010000 /* I/O */
0x82000000 0 0x08000000 0x08000000 0 0x07e00000>; /* non-prefetchable memory */ 0x82000000 0x0 0x08000000 0x08000000 0x0 0x07e00000>; /* MEM */
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi"; interrupt-names = "msi";
@ -502,8 +502,8 @@
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
ranges = <0x81000000 0 0x31e00000 0x31e00000 0 0x00100000 /* downstream I/O */ ranges = <0x81000000 0x0 0x00000000 0x31e00000 0x0 0x00010000 /* I/O */
0x82000000 0 0x2e000000 0x2e000000 0 0x03e00000>; /* non-prefetchable memory */ 0x82000000 0x0 0x2e000000 0x2e000000 0x0 0x03e00000>; /* MEM */
interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi"; interrupt-names = "msi";
@ -553,8 +553,8 @@
#address-cells = <3>; #address-cells = <3>;
#size-cells = <2>; #size-cells = <2>;
ranges = <0x81000000 0 0x35e00000 0x35e00000 0 0x00100000 /* downstream I/O */ ranges = <0x81000000 0x0 0x00000000 0x35e00000 0x0 0x00010000 /* I/O */
0x82000000 0 0x32000000 0x32000000 0 0x03e00000>; /* non-prefetchable memory */ 0x82000000 0x0 0x32000000 0x32000000 0x0 0x03e00000>; /* MEM */
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi"; interrupt-names = "msi";

View File

@ -82,14 +82,12 @@
}; };
}; };
regulators { vsdcc_fixed: vsdcc-regulator {
vsdcc_fixed: vsdcc-regulator { compatible = "regulator-fixed";
compatible = "regulator-fixed"; regulator-name = "SDCC Power";
regulator-name = "SDCC Power"; regulator-min-microvolt = <2700000>;
regulator-min-microvolt = <2700000>; regulator-max-microvolt = <2700000>;
regulator-max-microvolt = <2700000>; regulator-always-on;
regulator-always-on;
};
}; };
soc: soc { soc: soc {

View File

@ -942,7 +942,7 @@
status = "disabled"; status = "disabled";
}; };
spdif: sound@ff88b0000 { spdif: sound@ff8b0000 {
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif"; compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
reg = <0x0 0xff8b0000 0x0 0x10000>; reg = <0x0 0xff8b0000 0x0 0x10000>;
#sound-dai-cells = <0>; #sound-dai-cells = <0>;
@ -1188,6 +1188,7 @@
clock-names = "dp", "pclk"; clock-names = "dp", "pclk";
phys = <&edp_phy>; phys = <&edp_phy>;
phy-names = "dp"; phy-names = "dp";
power-domains = <&power RK3288_PD_VIO>;
resets = <&cru SRST_EDP>; resets = <&cru SRST_EDP>;
reset-names = "dp"; reset-names = "dp";
rockchip,grf = <&grf>; rockchip,grf = <&grf>;

View File

@ -28,29 +28,21 @@
bootargs = "console=ttySAC0,115200n8 earlyprintk rootwait root=/dev/mmcblk0p1"; bootargs = "console=ttySAC0,115200n8 earlyprintk rootwait root=/dev/mmcblk0p1";
}; };
clocks { fin_pll: oscillator-0 {
compatible = "simple-bus"; compatible = "fixed-clock";
#address-cells = <1>; clock-frequency = <12000000>;
#size-cells = <0>; clock-output-names = "fin_pll";
#clock-cells = <0>;
fin_pll: oscillator@0 {
compatible = "fixed-clock";
reg = <0>;
clock-frequency = <12000000>;
clock-output-names = "fin_pll";
#clock-cells = <0>;
};
xusbxti: oscillator@1 {
compatible = "fixed-clock";
reg = <1>;
clock-output-names = "xusbxti";
clock-frequency = <48000000>;
#clock-cells = <0>;
};
}; };
srom-cs1@18000000 { xusbxti: oscillator-1 {
compatible = "fixed-clock";
clock-output-names = "xusbxti";
clock-frequency = <48000000>;
#clock-cells = <0>;
};
srom-cs1-bus@18000000 {
compatible = "simple-bus"; compatible = "simple-bus";
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
@ -59,7 +51,7 @@
ethernet@18000000 { ethernet@18000000 {
compatible = "davicom,dm9000"; compatible = "davicom,dm9000";
reg = <0x18000000 0x2 0x18000004 0x2>; reg = <0x18000000 0x2>, <0x18000004 0x2>;
interrupt-parent = <&gpn>; interrupt-parent = <&gpn>;
interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
davicom,no-eeprom; davicom,no-eeprom;
@ -201,12 +193,12 @@
}; };
&pinctrl0 { &pinctrl0 {
gpio_leds: gpio-leds { gpio_leds: gpio-leds-pins {
samsung,pins = "gpk-4", "gpk-5", "gpk-6", "gpk-7"; samsung,pins = "gpk-4", "gpk-5", "gpk-6", "gpk-7";
samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>; samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
}; };
gpio_keys: gpio-keys { gpio_keys: gpio-keys-pins {
samsung,pins = "gpn-0", "gpn-1", "gpn-2", "gpn-3", samsung,pins = "gpn-0", "gpn-1", "gpn-2", "gpn-3",
"gpn-4", "gpn-5", "gpl-11", "gpl-12"; "gpn-4", "gpn-5", "gpl-11", "gpl-12";
samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>; samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;

Some files were not shown because too many files have changed in this diff Show More