Merge 6.1-rc6 into tty-next
We need the tty/serial fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
commit
42a62da0ae
1
.mailmap
1
.mailmap
|
@ -416,6 +416,7 @@ TripleX Chung <xxx.phy@gmail.com> <triplex@zh-kernel.org>
|
||||||
TripleX Chung <xxx.phy@gmail.com> <zhongyu@18mail.cn>
|
TripleX Chung <xxx.phy@gmail.com> <zhongyu@18mail.cn>
|
||||||
Tsuneo Yoshioka <Tsuneo.Yoshioka@f-secure.com>
|
Tsuneo Yoshioka <Tsuneo.Yoshioka@f-secure.com>
|
||||||
Tycho Andersen <tycho@tycho.pizza> <tycho@tycho.ws>
|
Tycho Andersen <tycho@tycho.pizza> <tycho@tycho.ws>
|
||||||
|
Tzung-Bi Shih <tzungbi@kernel.org> <tzungbi@google.com>
|
||||||
Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
|
Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
|
||||||
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
|
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
|
||||||
Uwe Kleine-König <ukleinek@strlen.de>
|
Uwe Kleine-König <ukleinek@strlen.de>
|
||||||
|
|
9
CREDITS
9
CREDITS
|
@ -918,6 +918,11 @@ S: Ottawa, Ontario
|
||||||
S: K1N 6Z9
|
S: K1N 6Z9
|
||||||
S: CANADA
|
S: CANADA
|
||||||
|
|
||||||
|
N: Vivien Didelot
|
||||||
|
E: vivien.didelot@gmail.com
|
||||||
|
D: DSA framework and MV88E6XXX driver
|
||||||
|
S: Montreal, Quebec, Canada
|
||||||
|
|
||||||
N: Jeff Dike
|
N: Jeff Dike
|
||||||
E: jdike@karaya.com
|
E: jdike@karaya.com
|
||||||
W: http://user-mode-linux.sourceforge.net
|
W: http://user-mode-linux.sourceforge.net
|
||||||
|
@ -2447,6 +2452,10 @@ S: 482 Shadowgraph Dr.
|
||||||
S: San Jose, CA 95110
|
S: San Jose, CA 95110
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
|
N: Michal Marek
|
||||||
|
E: michal.lkml@markovi.net
|
||||||
|
D: Kbuild Maintainer 2009-2017
|
||||||
|
|
||||||
N: Martin Mares
|
N: Martin Mares
|
||||||
E: mj@ucw.cz
|
E: mj@ucw.cz
|
||||||
W: http://www.ucw.cz/~mj/
|
W: http://www.ucw.cz/~mj/
|
||||||
|
|
|
@ -340,6 +340,14 @@ Before jumping into the kernel, the following conditions must be met:
|
||||||
- SMCR_EL2.LEN must be initialised to the same value for all CPUs the
|
- SMCR_EL2.LEN must be initialised to the same value for all CPUs the
|
||||||
kernel will execute on.
|
kernel will execute on.
|
||||||
|
|
||||||
|
- HWFGRTR_EL2.nTPIDR2_EL0 (bit 55) must be initialised to 0b01.
|
||||||
|
|
||||||
|
- HWFGWTR_EL2.nTPIDR2_EL0 (bit 55) must be initialised to 0b01.
|
||||||
|
|
||||||
|
- HWFGRTR_EL2.nSMPRI_EL1 (bit 54) must be initialised to 0b01.
|
||||||
|
|
||||||
|
- HWFGWTR_EL2.nSMPRI_EL1 (bit 54) must be initialised to 0b01.
|
||||||
|
|
||||||
For CPUs with the Scalable Matrix Extension FA64 feature (FEAT_SME_FA64)
|
For CPUs with the Scalable Matrix Extension FA64 feature (FEAT_SME_FA64)
|
||||||
|
|
||||||
- If EL3 is present:
|
- If EL3 is present:
|
||||||
|
|
|
@ -92,7 +92,7 @@ operation if the source belongs to the supported system register space.
|
||||||
|
|
||||||
The infrastructure emulates only the following system register space::
|
The infrastructure emulates only the following system register space::
|
||||||
|
|
||||||
Op0=3, Op1=0, CRn=0, CRm=0,4,5,6,7
|
Op0=3, Op1=0, CRn=0, CRm=0,2,3,4,5,6,7
|
||||||
|
|
||||||
(See Table C5-6 'System instruction encodings for non-Debug System
|
(See Table C5-6 'System instruction encodings for non-Debug System
|
||||||
register accesses' in ARMv8 ARM DDI 0487A.h, for the list of
|
register accesses' in ARMv8 ARM DDI 0487A.h, for the list of
|
||||||
|
@ -293,6 +293,42 @@ infrastructure:
|
||||||
| WFXT | [3-0] | y |
|
| WFXT | [3-0] | y |
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
|
|
||||||
|
10) MVFR0_EL1 - AArch32 Media and VFP Feature Register 0
|
||||||
|
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| Name | bits | visible |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| FPDP | [11-8] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
|
||||||
|
11) MVFR1_EL1 - AArch32 Media and VFP Feature Register 1
|
||||||
|
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| Name | bits | visible |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| SIMDFMAC | [31-28] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| SIMDSP | [19-16] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| SIMDInt | [15-12] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| SIMDLS | [11-8] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
|
||||||
|
12) ID_ISAR5_EL1 - AArch32 Instruction Set Attribute Register 5
|
||||||
|
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| Name | bits | visible |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| CRC32 | [19-16] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| SHA2 | [15-12] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| SHA1 | [11-8] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| AES | [7-4] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
|
||||||
|
|
||||||
Appendix I: Example
|
Appendix I: Example
|
||||||
-------------------
|
-------------------
|
||||||
|
|
|
@ -67,6 +67,7 @@ uninitialized in the local variable, as well as the stack where the value was
|
||||||
copied to another memory location before use.
|
copied to another memory location before use.
|
||||||
|
|
||||||
A use of uninitialized value ``v`` is reported by KMSAN in the following cases:
|
A use of uninitialized value ``v`` is reported by KMSAN in the following cases:
|
||||||
|
|
||||||
- in a condition, e.g. ``if (v) { ... }``;
|
- in a condition, e.g. ``if (v) { ... }``;
|
||||||
- in an indexing or pointer dereferencing, e.g. ``array[v]`` or ``*v``;
|
- in an indexing or pointer dereferencing, e.g. ``array[v]`` or ``*v``;
|
||||||
- when it is copied to userspace or hardware, e.g. ``copy_to_user(..., &v, ...)``;
|
- when it is copied to userspace or hardware, e.g. ``copy_to_user(..., &v, ...)``;
|
||||||
|
|
|
@ -15,9 +15,22 @@ description:
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
enum:
|
oneOf:
|
||||||
- qcom,sfpb-mutex
|
- enum:
|
||||||
- qcom,tcsr-mutex
|
- qcom,sfpb-mutex
|
||||||
|
- qcom,tcsr-mutex
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- qcom,apq8084-tcsr-mutex
|
||||||
|
- qcom,ipq6018-tcsr-mutex
|
||||||
|
- qcom,msm8226-tcsr-mutex
|
||||||
|
- qcom,msm8994-tcsr-mutex
|
||||||
|
- const: qcom,tcsr-mutex
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- qcom,msm8974-tcsr-mutex
|
||||||
|
- const: qcom,tcsr-mutex
|
||||||
|
- const: syscon
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
@ -34,9 +47,9 @@ additionalProperties: false
|
||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
tcsr_mutex: hwlock@1f40000 {
|
hwlock@1f40000 {
|
||||||
compatible = "qcom,tcsr-mutex";
|
compatible = "qcom,tcsr-mutex";
|
||||||
reg = <0x01f40000 0x40000>;
|
reg = <0x01f40000 0x40000>;
|
||||||
#hwlock-cells = <1>;
|
#hwlock-cells = <1>;
|
||||||
};
|
};
|
||||||
...
|
...
|
||||||
|
|
|
@ -16,8 +16,11 @@ description:
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
items:
|
oneOf:
|
||||||
- const: goodix,gt7375p
|
- const: goodix,gt7375p
|
||||||
|
- items:
|
||||||
|
- const: goodix,gt7986u
|
||||||
|
- const: goodix,gt7375p
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
enum:
|
enum:
|
||||||
|
|
|
@ -47,7 +47,7 @@ properties:
|
||||||
|
|
||||||
nvmem-cells: true
|
nvmem-cells: true
|
||||||
|
|
||||||
nvmem-cells-names: true
|
nvmem-cell-names: true
|
||||||
|
|
||||||
phy-connection-type:
|
phy-connection-type:
|
||||||
enum:
|
enum:
|
||||||
|
|
|
@ -81,6 +81,9 @@ properties:
|
||||||
|
|
||||||
power-supply: true
|
power-supply: true
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
resets:
|
resets:
|
||||||
description: |
|
description: |
|
||||||
A number of phandles to resets that need to be asserted during
|
A number of phandles to resets that need to be asserted during
|
||||||
|
|
|
@ -8,7 +8,7 @@ title: Audio codec controlled by ChromeOS EC
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Cheng-Yi Chiang <cychiang@chromium.org>
|
- Cheng-Yi Chiang <cychiang@chromium.org>
|
||||||
- Tzung-Bi Shih <tzungbi@google.com>
|
- Tzung-Bi Shih <tzungbi@kernel.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
Google's ChromeOS EC codec is a digital mic codec provided by the
|
Google's ChromeOS EC codec is a digital mic codec provided by the
|
||||||
|
|
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
title: Realtek rt1015p codec devicetree bindings
|
title: Realtek rt1015p codec devicetree bindings
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Tzung-Bi Shih <tzungbi@google.com>
|
- Tzung-Bi Shih <tzungbi@kernel.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
Rt1015p is a rt1015 variant which does not support I2C and
|
Rt1015p is a rt1015 variant which does not support I2C and
|
||||||
|
|
|
@ -279,6 +279,7 @@ GPIO
|
||||||
devm_gpio_request_one()
|
devm_gpio_request_one()
|
||||||
|
|
||||||
I2C
|
I2C
|
||||||
|
devm_i2c_add_adapter()
|
||||||
devm_i2c_new_dummy_device()
|
devm_i2c_new_dummy_device()
|
||||||
|
|
||||||
IIO
|
IIO
|
||||||
|
|
|
@ -16,12 +16,11 @@ Parallel Port Devices
|
||||||
16x50 UART Driver
|
16x50 UART Driver
|
||||||
=================
|
=================
|
||||||
|
|
||||||
.. kernel-doc:: drivers/tty/serial/serial_core.c
|
|
||||||
:export:
|
|
||||||
|
|
||||||
.. kernel-doc:: drivers/tty/serial/8250/8250_core.c
|
.. kernel-doc:: drivers/tty/serial/8250/8250_core.c
|
||||||
:export:
|
:export:
|
||||||
|
|
||||||
|
See serial/driver.rst for related APIs.
|
||||||
|
|
||||||
Pulse-Width Modulation (PWM)
|
Pulse-Width Modulation (PWM)
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
|
|
@ -119,6 +119,16 @@ To avoid this, you can make the vDSO different for different
|
||||||
kernel versions by including an arbitrary string of "salt" in it.
|
kernel versions by including an arbitrary string of "salt" in it.
|
||||||
This is specified by the Kconfig symbol ``CONFIG_BUILD_SALT``.
|
This is specified by the Kconfig symbol ``CONFIG_BUILD_SALT``.
|
||||||
|
|
||||||
|
Git
|
||||||
|
---
|
||||||
|
|
||||||
|
Uncommitted changes or different commit ids in git can also lead
|
||||||
|
to different compilation results. For example, after executing
|
||||||
|
``git reset HEAD^``, even if the code is the same, the
|
||||||
|
``include/config/kernel.release`` generated during compilation
|
||||||
|
will be different, which will eventually lead to binary differences.
|
||||||
|
See ``scripts/setlocalversion`` for details.
|
||||||
|
|
||||||
.. _KBUILD_BUILD_TIMESTAMP: kbuild.html#kbuild-build-timestamp
|
.. _KBUILD_BUILD_TIMESTAMP: kbuild.html#kbuild-build-timestamp
|
||||||
.. _KBUILD_BUILD_USER and KBUILD_BUILD_HOST: kbuild.html#kbuild-build-user-kbuild-build-host
|
.. _KBUILD_BUILD_USER and KBUILD_BUILD_HOST: kbuild.html#kbuild-build-user-kbuild-build-host
|
||||||
.. _KCFLAGS: kbuild.html#kcflags
|
.. _KCFLAGS: kbuild.html#kcflags
|
||||||
|
|
|
@ -120,7 +120,7 @@ You can tell you are in a softirq (or tasklet) using the
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
Beware that this will return a false positive if a
|
Beware that this will return a false positive if a
|
||||||
:ref:`botton half lock <local_bh_disable>` is held.
|
:ref:`bottom half lock <local_bh_disable>` is held.
|
||||||
|
|
||||||
Some Basic Rules
|
Some Basic Rules
|
||||||
================
|
================
|
||||||
|
|
|
@ -126,17 +126,10 @@ than one development cycle past their initial release. So, for example, the
|
||||||
5.2.21 was the final stable update of the 5.2 release.
|
5.2.21 was the final stable update of the 5.2 release.
|
||||||
|
|
||||||
Some kernels are designated "long term" kernels; they will receive support
|
Some kernels are designated "long term" kernels; they will receive support
|
||||||
for a longer period. As of this writing, the current long term kernels
|
for a longer period. Please refer to the following link for the list of active
|
||||||
and their maintainers are:
|
long term kernel versions and their maintainers:
|
||||||
|
|
||||||
====== ================================ =======================
|
https://www.kernel.org/category/releases.html
|
||||||
3.16 Ben Hutchings (very long-term kernel)
|
|
||||||
4.4 Greg Kroah-Hartman & Sasha Levin (very long-term kernel)
|
|
||||||
4.9 Greg Kroah-Hartman & Sasha Levin
|
|
||||||
4.14 Greg Kroah-Hartman & Sasha Levin
|
|
||||||
4.19 Greg Kroah-Hartman & Sasha Levin
|
|
||||||
5.4 Greg Kroah-Hartman & Sasha Levin
|
|
||||||
====== ================================ =======================
|
|
||||||
|
|
||||||
The selection of a kernel for long-term support is purely a matter of a
|
The selection of a kernel for long-term support is purely a matter of a
|
||||||
maintainer having the need and the time to maintain that release. There
|
maintainer having the need and the time to maintain that release. There
|
||||||
|
|
|
@ -51,7 +51,7 @@ the Technical Advisory Board (TAB) or other maintainers if you're
|
||||||
uncertain how to handle situations that come up. It will not be
|
uncertain how to handle situations that come up. It will not be
|
||||||
considered a violation report unless you want it to be. If you are
|
considered a violation report unless you want it to be. If you are
|
||||||
uncertain about approaching the TAB or any other maintainers, please
|
uncertain about approaching the TAB or any other maintainers, please
|
||||||
reach out to our conflict mediator, Joanna Lee <joanna.lee@gesmer.com>.
|
reach out to our conflict mediator, Joanna Lee <jlee@linuxfoundation.org>.
|
||||||
|
|
||||||
In the end, "be kind to each other" is really what the end goal is for
|
In the end, "be kind to each other" is really what the end goal is for
|
||||||
everybody. We know everyone is human and we all fail at times, but the
|
everybody. We know everyone is human and we all fail at times, but the
|
||||||
|
|
|
@ -36,7 +36,7 @@ experience, the following books are good for, if anything, reference:
|
||||||
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
||||||
|
|
||||||
The kernel is written using GNU C and the GNU toolchain. While it
|
The kernel is written using GNU C and the GNU toolchain. While it
|
||||||
adheres to the ISO C89 standard, it uses a number of extensions that are
|
adheres to the ISO C11 standard, it uses a number of extensions that are
|
||||||
not featured in the standard. The kernel is a freestanding C
|
not featured in the standard. The kernel is a freestanding C
|
||||||
environment, with no reliance on the standard C library, so some
|
environment, with no reliance on the standard C library, so some
|
||||||
portions of the C standard are not supported. Arbitrary long long
|
portions of the C standard are not supported. Arbitrary long long
|
||||||
|
|
|
@ -39,7 +39,7 @@ Documentation written by Tom Zanussi
|
||||||
will use the event's kernel stacktrace as the key. The keywords
|
will use the event's kernel stacktrace as the key. The keywords
|
||||||
'keys' or 'key' can be used to specify keys, and the keywords
|
'keys' or 'key' can be used to specify keys, and the keywords
|
||||||
'values', 'vals', or 'val' can be used to specify values. Compound
|
'values', 'vals', or 'val' can be used to specify values. Compound
|
||||||
keys consisting of up to two fields can be specified by the 'keys'
|
keys consisting of up to three fields can be specified by the 'keys'
|
||||||
keyword. Hashing a compound key produces a unique entry in the
|
keyword. Hashing a compound key produces a unique entry in the
|
||||||
table for each unique combination of component keys, and can be
|
table for each unique combination of component keys, and can be
|
||||||
useful for providing more fine-grained summaries of event data.
|
useful for providing more fine-grained summaries of event data.
|
||||||
|
|
|
@ -44,7 +44,7 @@ altro, utili riferimenti:
|
||||||
- "C: A Reference Manual" di Harbison and Steele [Prentice Hall]
|
- "C: A Reference Manual" di Harbison and Steele [Prentice Hall]
|
||||||
|
|
||||||
Il kernel è stato scritto usando GNU C e la toolchain GNU.
|
Il kernel è stato scritto usando GNU C e la toolchain GNU.
|
||||||
Sebbene si attenga allo standard ISO C89, esso utilizza una serie di
|
Sebbene si attenga allo standard ISO C11, esso utilizza una serie di
|
||||||
estensioni che non sono previste in questo standard. Il kernel è un
|
estensioni che non sono previste in questo standard. Il kernel è un
|
||||||
ambiente C indipendente, che non ha alcuna dipendenza dalle librerie
|
ambiente C indipendente, che non ha alcuna dipendenza dalle librerie
|
||||||
C standard, così alcune parti del C standard non sono supportate.
|
C standard, così alcune parti del C standard non sono supportate.
|
||||||
|
|
|
@ -65,7 +65,7 @@ Linux カーネル開発のやり方
|
||||||
- 『新・詳説 C 言語 H&S リファレンス』 (サミュエル P ハービソン/ガイ L スティール共著 斉藤 信男監訳)[ソフトバンク]
|
- 『新・詳説 C 言語 H&S リファレンス』 (サミュエル P ハービソン/ガイ L スティール共著 斉藤 信男監訳)[ソフトバンク]
|
||||||
|
|
||||||
カーネルは GNU C と GNU ツールチェインを使って書かれています。カーネル
|
カーネルは GNU C と GNU ツールチェインを使って書かれています。カーネル
|
||||||
は ISO C89 仕様に準拠して書く一方で、標準には無い言語拡張を多く使って
|
は ISO C11 仕様に準拠して書く一方で、標準には無い言語拡張を多く使って
|
||||||
います。カーネルは標準 C ライブラリに依存しない、C 言語非依存環境です。
|
います。カーネルは標準 C ライブラリに依存しない、C 言語非依存環境です。
|
||||||
そのため、C の標準の中で使えないものもあります。特に任意の long long
|
そのため、C の標準の中で使えないものもあります。特に任意の long long
|
||||||
の除算や浮動小数点は使えません。カーネルがツールチェインや C 言語拡張
|
の除算や浮動小数点は使えません。カーネルがツールチェインや C 言語拡張
|
||||||
|
|
|
@ -62,7 +62,7 @@ Documentation/process/howto.rst
|
||||||
- "Practical C Programming" by Steve Oualline [O'Reilly]
|
- "Practical C Programming" by Steve Oualline [O'Reilly]
|
||||||
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
||||||
|
|
||||||
커널은 GNU C와 GNU 툴체인을 사용하여 작성되었다. 이 툴들은 ISO C89 표준을
|
커널은 GNU C와 GNU 툴체인을 사용하여 작성되었다. 이 툴들은 ISO C11 표준을
|
||||||
따르는 반면 표준에 있지 않은 많은 확장기능도 가지고 있다. 커널은 표준 C
|
따르는 반면 표준에 있지 않은 많은 확장기능도 가지고 있다. 커널은 표준 C
|
||||||
라이브러리와는 관계없이 freestanding C 환경이어서 C 표준의 일부는
|
라이브러리와는 관계없이 freestanding C 환경이어서 C 표준의 일부는
|
||||||
지원되지 않는다. 임의의 long long 나누기나 floating point는 지원되지 않는다.
|
지원되지 않는다. 임의의 long long 나누기나 floating point는 지원되지 않는다.
|
||||||
|
|
|
@ -45,7 +45,7 @@ Linux内核大部分是由C语言写成的,一些体系结构相关的代码
|
||||||
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
||||||
《C语言参考手册(原书第5版)》(邱仲潘 等译)[机械工业出版社]
|
《C语言参考手册(原书第5版)》(邱仲潘 等译)[机械工业出版社]
|
||||||
|
|
||||||
Linux内核使用GNU C和GNU工具链开发。虽然它遵循ISO C89标准,但也用到了一些
|
Linux内核使用GNU C和GNU工具链开发。虽然它遵循ISO C11标准,但也用到了一些
|
||||||
标准中没有定义的扩展。内核是自给自足的C环境,不依赖于标准C库的支持,所以
|
标准中没有定义的扩展。内核是自给自足的C环境,不依赖于标准C库的支持,所以
|
||||||
并不支持C标准中的部分定义。比如long long类型的大数除法和浮点运算就不允许
|
并不支持C标准中的部分定义。比如long long类型的大数除法和浮点运算就不允许
|
||||||
使用。有时候确实很难弄清楚内核对工具链的要求和它所使用的扩展,不幸的是目
|
使用。有时候确实很难弄清楚内核对工具链的要求和它所使用的扩展,不幸的是目
|
||||||
|
|
|
@ -48,7 +48,7 @@ Linux內核大部分是由C語言寫成的,一些體系結構相關的代碼
|
||||||
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
- "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
|
||||||
《C語言參考手冊(原書第5版)》(邱仲潘 等譯)[機械工業出版社]
|
《C語言參考手冊(原書第5版)》(邱仲潘 等譯)[機械工業出版社]
|
||||||
|
|
||||||
Linux內核使用GNU C和GNU工具鏈開發。雖然它遵循ISO C89標準,但也用到了一些
|
Linux內核使用GNU C和GNU工具鏈開發。雖然它遵循ISO C11標準,但也用到了一些
|
||||||
標準中沒有定義的擴展。內核是自給自足的C環境,不依賴於標準C庫的支持,所以
|
標準中沒有定義的擴展。內核是自給自足的C環境,不依賴於標準C庫的支持,所以
|
||||||
並不支持C標準中的部分定義。比如long long類型的大數除法和浮點運算就不允許
|
並不支持C標準中的部分定義。比如long long類型的大數除法和浮點運算就不允許
|
||||||
使用。有時候確實很難弄清楚內核對工具鏈的要求和它所使用的擴展,不幸的是目
|
使用。有時候確實很難弄清楚內核對工具鏈的要求和它所使用的擴展,不幸的是目
|
||||||
|
|
|
@ -215,6 +215,7 @@ KVM_S390_VM_TOD_EXT).
|
||||||
:Parameters: address of a buffer in user space to store the data (u8) to
|
:Parameters: address of a buffer in user space to store the data (u8) to
|
||||||
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
||||||
|
-EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
|
||||||
|
|
||||||
3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW
|
3.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
@ -224,6 +225,7 @@ the POP (u64).
|
||||||
|
|
||||||
:Parameters: address of a buffer in user space to store the data (u64) to
|
:Parameters: address of a buffer in user space to store the data (u64) to
|
||||||
:Returns: -EFAULT if the given address is not accessible from kernel space
|
:Returns: -EFAULT if the given address is not accessible from kernel space
|
||||||
|
-EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
|
||||||
|
|
||||||
3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT
|
3.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
@ -237,6 +239,7 @@ it, it is stored as 0 and not allowed to be set to a value != 0.
|
||||||
(kvm_s390_vm_tod_clock) to
|
(kvm_s390_vm_tod_clock) to
|
||||||
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
:Returns: -EFAULT if the given address is not accessible from kernel space;
|
||||||
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
-EINVAL if setting the TOD clock extension to != 0 is not supported
|
||||||
|
-EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
|
||||||
|
|
||||||
4. GROUP: KVM_S390_VM_CRYPTO
|
4. GROUP: KVM_S390_VM_CRYPTO
|
||||||
============================
|
============================
|
||||||
|
|
83
MAINTAINERS
83
MAINTAINERS
|
@ -2197,7 +2197,7 @@ M: Wei Xu <xuwei5@hisilicon.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://www.hisilicon.com
|
W: http://www.hisilicon.com
|
||||||
T: git git://github.com/hisilicon/linux-hisi.git
|
T: git https://github.com/hisilicon/linux-hisi.git
|
||||||
F: arch/arm/boot/dts/hi3*
|
F: arch/arm/boot/dts/hi3*
|
||||||
F: arch/arm/boot/dts/hip*
|
F: arch/arm/boot/dts/hip*
|
||||||
F: arch/arm/boot/dts/hisi*
|
F: arch/arm/boot/dts/hisi*
|
||||||
|
@ -3984,7 +3984,7 @@ M: Rafał Miłecki <rafal@milecki.pl>
|
||||||
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/broadcom/stblinux.git
|
T: git https://github.com/broadcom/stblinux.git
|
||||||
F: Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
|
F: Documentation/devicetree/bindings/arm/bcm/brcm,bcmbca.yaml
|
||||||
F: arch/arm64/boot/dts/broadcom/bcmbca/*
|
F: arch/arm64/boot/dts/broadcom/bcmbca/*
|
||||||
N: bcmbca
|
N: bcmbca
|
||||||
|
@ -4009,7 +4009,7 @@ R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
||||||
L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/broadcom/stblinux.git
|
T: git https://github.com/broadcom/stblinux.git
|
||||||
F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
|
F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
|
||||||
F: drivers/pci/controller/pcie-brcmstb.c
|
F: drivers/pci/controller/pcie-brcmstb.c
|
||||||
F: drivers/staging/vc04_services
|
F: drivers/staging/vc04_services
|
||||||
|
@ -4023,7 +4023,7 @@ M: Ray Jui <rjui@broadcom.com>
|
||||||
M: Scott Branden <sbranden@broadcom.com>
|
M: Scott Branden <sbranden@broadcom.com>
|
||||||
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/broadcom/mach-bcm
|
T: git https://github.com/broadcom/mach-bcm
|
||||||
F: arch/arm/mach-bcm/
|
F: arch/arm/mach-bcm/
|
||||||
N: bcm281*
|
N: bcm281*
|
||||||
N: bcm113*
|
N: bcm113*
|
||||||
|
@ -4088,7 +4088,7 @@ M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/broadcom/stblinux.git
|
T: git https://github.com/broadcom/stblinux.git
|
||||||
F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
|
F: Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
|
||||||
F: arch/arm/boot/dts/bcm7*.dts*
|
F: arch/arm/boot/dts/bcm7*.dts*
|
||||||
F: arch/arm/include/asm/hardware/cache-b15-rac.h
|
F: arch/arm/include/asm/hardware/cache-b15-rac.h
|
||||||
|
@ -4121,7 +4121,7 @@ M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
||||||
L: linux-mips@vger.kernel.org
|
L: linux-mips@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/broadcom/stblinux.git
|
T: git https://github.com/broadcom/stblinux.git
|
||||||
F: arch/mips/bmips/*
|
F: arch/mips/bmips/*
|
||||||
F: arch/mips/boot/dts/brcm/bcm*.dts*
|
F: arch/mips/boot/dts/brcm/bcm*.dts*
|
||||||
F: arch/mips/include/asm/mach-bmips/*
|
F: arch/mips/include/asm/mach-bmips/*
|
||||||
|
@ -4262,7 +4262,7 @@ M: Scott Branden <sbranden@broadcom.com>
|
||||||
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/broadcom/stblinux.git
|
T: git https://github.com/broadcom/stblinux.git
|
||||||
F: arch/arm64/boot/dts/broadcom/northstar2/*
|
F: arch/arm64/boot/dts/broadcom/northstar2/*
|
||||||
F: arch/arm64/boot/dts/broadcom/stingray/*
|
F: arch/arm64/boot/dts/broadcom/stingray/*
|
||||||
F: drivers/clk/bcm/clk-ns*
|
F: drivers/clk/bcm/clk-ns*
|
||||||
|
@ -4332,7 +4332,7 @@ M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/broadcom/stblinux.git
|
T: git https://github.com/broadcom/stblinux.git
|
||||||
F: drivers/soc/bcm/bcm63xx/bcm-pmb.c
|
F: drivers/soc/bcm/bcm63xx/bcm-pmb.c
|
||||||
F: include/dt-bindings/soc/bcm-pmb.h
|
F: include/dt-bindings/soc/bcm-pmb.h
|
||||||
|
|
||||||
|
@ -4809,7 +4809,7 @@ R: Jeff Layton <jlayton@kernel.org>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://github.com/ceph/ceph-client.git
|
T: git https://github.com/ceph/ceph-client.git
|
||||||
F: include/linux/ceph/
|
F: include/linux/ceph/
|
||||||
F: include/linux/crush/
|
F: include/linux/crush/
|
||||||
F: net/ceph/
|
F: net/ceph/
|
||||||
|
@ -4821,7 +4821,7 @@ R: Jeff Layton <jlayton@kernel.org>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://github.com/ceph/ceph-client.git
|
T: git https://github.com/ceph/ceph-client.git
|
||||||
F: Documentation/filesystems/ceph.rst
|
F: Documentation/filesystems/ceph.rst
|
||||||
F: fs/ceph/
|
F: fs/ceph/
|
||||||
|
|
||||||
|
@ -4911,7 +4911,7 @@ F: drivers/platform/chrome/
|
||||||
|
|
||||||
CHROMEOS EC CODEC DRIVER
|
CHROMEOS EC CODEC DRIVER
|
||||||
M: Cheng-Yi Chiang <cychiang@chromium.org>
|
M: Cheng-Yi Chiang <cychiang@chromium.org>
|
||||||
M: Tzung-Bi Shih <tzungbi@google.com>
|
M: Tzung-Bi Shih <tzungbi@kernel.org>
|
||||||
R: Guenter Roeck <groeck@chromium.org>
|
R: Guenter Roeck <groeck@chromium.org>
|
||||||
L: chrome-platform@lists.linux.dev
|
L: chrome-platform@lists.linux.dev
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -5041,7 +5041,7 @@ F: drivers/scsi/snic/
|
||||||
|
|
||||||
CISCO VIC ETHERNET NIC DRIVER
|
CISCO VIC ETHERNET NIC DRIVER
|
||||||
M: Christian Benvenuti <benve@cisco.com>
|
M: Christian Benvenuti <benve@cisco.com>
|
||||||
M: Govindarajulu Varadarajan <_govind@gmx.com>
|
M: Satish Kharat <satishkh@cisco.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/cisco/enic/
|
F: drivers/net/ethernet/cisco/enic/
|
||||||
|
|
||||||
|
@ -8602,8 +8602,8 @@ F: include/asm-generic/
|
||||||
F: include/uapi/asm-generic/
|
F: include/uapi/asm-generic/
|
||||||
|
|
||||||
GENERIC PHY FRAMEWORK
|
GENERIC PHY FRAMEWORK
|
||||||
M: Kishon Vijay Abraham I <kishon@ti.com>
|
|
||||||
M: Vinod Koul <vkoul@kernel.org>
|
M: Vinod Koul <vkoul@kernel.org>
|
||||||
|
M: Kishon Vijay Abraham I <kishon@kernel.org>
|
||||||
L: linux-phy@lists.infradead.org
|
L: linux-phy@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
Q: https://patchwork.kernel.org/project/linux-phy/list/
|
Q: https://patchwork.kernel.org/project/linux-phy/list/
|
||||||
|
@ -9217,7 +9217,7 @@ W: https://www.hisilicon.com
|
||||||
F: drivers/i2c/busses/i2c-hisi.c
|
F: drivers/i2c/busses/i2c-hisi.c
|
||||||
|
|
||||||
HISILICON LPC BUS DRIVER
|
HISILICON LPC BUS DRIVER
|
||||||
M: john.garry@huawei.com
|
M: Jay Fang <f.fangjian@huawei.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
W: http://www.hisilicon.com
|
W: http://www.hisilicon.com
|
||||||
F: Documentation/devicetree/bindings/arm/hisilicon/low-pin-count.yaml
|
F: Documentation/devicetree/bindings/arm/hisilicon/low-pin-count.yaml
|
||||||
|
@ -9341,7 +9341,7 @@ S: Maintained
|
||||||
F: drivers/crypto/hisilicon/trng/trng.c
|
F: drivers/crypto/hisilicon/trng/trng.c
|
||||||
|
|
||||||
HISILICON V3XX SPI NOR FLASH Controller Driver
|
HISILICON V3XX SPI NOR FLASH Controller Driver
|
||||||
M: John Garry <john.garry@huawei.com>
|
M: Jay Fang <f.fangjian@huawei.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
W: http://www.hisilicon.com
|
W: http://www.hisilicon.com
|
||||||
F: drivers/spi/spi-hisi-sfc-v3xx.c
|
F: drivers/spi/spi-hisi-sfc-v3xx.c
|
||||||
|
@ -9507,7 +9507,6 @@ F: drivers/media/i2c/hi847.c
|
||||||
Hyper-V/Azure CORE AND DRIVERS
|
Hyper-V/Azure CORE AND DRIVERS
|
||||||
M: "K. Y. Srinivasan" <kys@microsoft.com>
|
M: "K. Y. Srinivasan" <kys@microsoft.com>
|
||||||
M: Haiyang Zhang <haiyangz@microsoft.com>
|
M: Haiyang Zhang <haiyangz@microsoft.com>
|
||||||
M: Stephen Hemminger <sthemmin@microsoft.com>
|
|
||||||
M: Wei Liu <wei.liu@kernel.org>
|
M: Wei Liu <wei.liu@kernel.org>
|
||||||
M: Dexuan Cui <decui@microsoft.com>
|
M: Dexuan Cui <decui@microsoft.com>
|
||||||
L: linux-hyperv@vger.kernel.org
|
L: linux-hyperv@vger.kernel.org
|
||||||
|
@ -9778,7 +9777,10 @@ S: Supported
|
||||||
F: drivers/pci/hotplug/rpaphp*
|
F: drivers/pci/hotplug/rpaphp*
|
||||||
|
|
||||||
IBM Power SRIOV Virtual NIC Device Driver
|
IBM Power SRIOV Virtual NIC Device Driver
|
||||||
M: Dany Madden <drt@linux.ibm.com>
|
M: Haren Myneni <haren@linux.ibm.com>
|
||||||
|
M: Rick Lindsley <ricklind@linux.ibm.com>
|
||||||
|
R: Nick Child <nnac123@linux.ibm.com>
|
||||||
|
R: Dany Madden <danymadden@us.ibm.com>
|
||||||
R: Thomas Falcon <tlfalcon@linux.ibm.com>
|
R: Thomas Falcon <tlfalcon@linux.ibm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -11033,6 +11035,7 @@ KCONFIG
|
||||||
M: Masahiro Yamada <masahiroy@kernel.org>
|
M: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
L: linux-kbuild@vger.kernel.org
|
L: linux-kbuild@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
Q: https://patchwork.kernel.org/project/linux-kbuild/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig
|
||||||
F: Documentation/kbuild/kconfig*
|
F: Documentation/kbuild/kconfig*
|
||||||
F: scripts/Kconfig.include
|
F: scripts/Kconfig.include
|
||||||
|
@ -11090,10 +11093,12 @@ F: fs/autofs/
|
||||||
|
|
||||||
KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
|
KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
|
||||||
M: Masahiro Yamada <masahiroy@kernel.org>
|
M: Masahiro Yamada <masahiroy@kernel.org>
|
||||||
M: Michal Marek <michal.lkml@markovi.net>
|
R: Nathan Chancellor <nathan@kernel.org>
|
||||||
R: Nick Desaulniers <ndesaulniers@google.com>
|
R: Nick Desaulniers <ndesaulniers@google.com>
|
||||||
|
R: Nicolas Schier <nicolas@fjasle.eu>
|
||||||
L: linux-kbuild@vger.kernel.org
|
L: linux-kbuild@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
Q: https://patchwork.kernel.org/project/linux-kbuild/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git
|
||||||
F: Documentation/kbuild/
|
F: Documentation/kbuild/
|
||||||
F: Makefile
|
F: Makefile
|
||||||
|
@ -11248,7 +11253,7 @@ L: kvm@vger.kernel.org
|
||||||
L: kvm-riscv@lists.infradead.org
|
L: kvm-riscv@lists.infradead.org
|
||||||
L: linux-riscv@lists.infradead.org
|
L: linux-riscv@lists.infradead.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://github.com/kvm-riscv/linux.git
|
T: git https://github.com/kvm-riscv/linux.git
|
||||||
F: arch/riscv/include/asm/kvm*
|
F: arch/riscv/include/asm/kvm*
|
||||||
F: arch/riscv/include/uapi/asm/kvm*
|
F: arch/riscv/include/uapi/asm/kvm*
|
||||||
F: arch/riscv/kvm/
|
F: arch/riscv/kvm/
|
||||||
|
@ -12223,7 +12228,6 @@ F: arch/mips/boot/dts/img/pistachio*
|
||||||
|
|
||||||
MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
|
MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
|
||||||
M: Andrew Lunn <andrew@lunn.ch>
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
M: Vivien Didelot <vivien.didelot@gmail.com>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/net/dsa/marvell.txt
|
F: Documentation/devicetree/bindings/net/dsa/marvell.txt
|
||||||
|
@ -13624,6 +13628,12 @@ S: Supported
|
||||||
F: drivers/misc/atmel-ssc.c
|
F: drivers/misc/atmel-ssc.c
|
||||||
F: include/linux/atmel-ssc.h
|
F: include/linux/atmel-ssc.h
|
||||||
|
|
||||||
|
MICROCHIP SOC DRIVERS
|
||||||
|
M: Conor Dooley <conor@kernel.org>
|
||||||
|
S: Supported
|
||||||
|
T: git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
|
||||||
|
F: drivers/soc/microchip/
|
||||||
|
|
||||||
MICROCHIP USB251XB DRIVER
|
MICROCHIP USB251XB DRIVER
|
||||||
M: Richard Leitner <richard.leitner@skidata.com>
|
M: Richard Leitner <richard.leitner@skidata.com>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
|
@ -14321,7 +14331,6 @@ F: drivers/net/wireless/
|
||||||
|
|
||||||
NETWORKING [DSA]
|
NETWORKING [DSA]
|
||||||
M: Andrew Lunn <andrew@lunn.ch>
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
M: Vivien Didelot <vivien.didelot@gmail.com>
|
|
||||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
M: Vladimir Oltean <olteanv@gmail.com>
|
M: Vladimir Oltean <olteanv@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -15630,7 +15639,7 @@ F: drivers/input/serio/gscps2.c
|
||||||
F: drivers/input/serio/hp_sdc*
|
F: drivers/input/serio/hp_sdc*
|
||||||
F: drivers/parisc/
|
F: drivers/parisc/
|
||||||
F: drivers/parport/parport_gsc.*
|
F: drivers/parport/parport_gsc.*
|
||||||
F: drivers/tty/serial/8250/8250_gsc.c
|
F: drivers/tty/serial/8250/8250_parisc.c
|
||||||
F: drivers/video/console/sti*
|
F: drivers/video/console/sti*
|
||||||
F: drivers/video/fbdev/sti*
|
F: drivers/video/fbdev/sti*
|
||||||
F: drivers/video/logo/logo_parisc*
|
F: drivers/video/logo/logo_parisc*
|
||||||
|
@ -17222,7 +17231,7 @@ R: Dongsheng Yang <dongsheng.yang@easystack.cn>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://ceph.com/
|
W: http://ceph.com/
|
||||||
T: git git://github.com/ceph/ceph-client.git
|
T: git https://github.com/ceph/ceph-client.git
|
||||||
F: Documentation/ABI/testing/sysfs-bus-rbd
|
F: Documentation/ABI/testing/sysfs-bus-rbd
|
||||||
F: drivers/block/rbd.c
|
F: drivers/block/rbd.c
|
||||||
F: drivers/block/rbd_types.h
|
F: drivers/block/rbd_types.h
|
||||||
|
@ -17723,7 +17732,7 @@ F: arch/riscv/
|
||||||
N: riscv
|
N: riscv
|
||||||
K: riscv
|
K: riscv
|
||||||
|
|
||||||
RISC-V/MICROCHIP POLARFIRE SOC SUPPORT
|
RISC-V MICROCHIP FPGA SUPPORT
|
||||||
M: Conor Dooley <conor.dooley@microchip.com>
|
M: Conor Dooley <conor.dooley@microchip.com>
|
||||||
M: Daire McNamara <daire.mcnamara@microchip.com>
|
M: Daire McNamara <daire.mcnamara@microchip.com>
|
||||||
L: linux-riscv@lists.infradead.org
|
L: linux-riscv@lists.infradead.org
|
||||||
|
@ -17741,17 +17750,26 @@ F: Documentation/devicetree/bindings/usb/microchip,mpfs-musb.yaml
|
||||||
F: arch/riscv/boot/dts/microchip/
|
F: arch/riscv/boot/dts/microchip/
|
||||||
F: drivers/char/hw_random/mpfs-rng.c
|
F: drivers/char/hw_random/mpfs-rng.c
|
||||||
F: drivers/clk/microchip/clk-mpfs.c
|
F: drivers/clk/microchip/clk-mpfs.c
|
||||||
F: drivers/i2c/busses/i2c-microchip-core.c
|
F: drivers/i2c/busses/i2c-microchip-corei2c.c
|
||||||
F: drivers/mailbox/mailbox-mpfs.c
|
F: drivers/mailbox/mailbox-mpfs.c
|
||||||
F: drivers/pci/controller/pcie-microchip-host.c
|
F: drivers/pci/controller/pcie-microchip-host.c
|
||||||
F: drivers/reset/reset-mpfs.c
|
F: drivers/reset/reset-mpfs.c
|
||||||
F: drivers/rtc/rtc-mpfs.c
|
F: drivers/rtc/rtc-mpfs.c
|
||||||
F: drivers/soc/microchip/
|
F: drivers/soc/microchip/mpfs-sys-controller.c
|
||||||
F: drivers/spi/spi-microchip-core-qspi.c
|
F: drivers/spi/spi-microchip-core-qspi.c
|
||||||
F: drivers/spi/spi-microchip-core.c
|
F: drivers/spi/spi-microchip-core.c
|
||||||
F: drivers/usb/musb/mpfs.c
|
F: drivers/usb/musb/mpfs.c
|
||||||
F: include/soc/microchip/mpfs.h
|
F: include/soc/microchip/mpfs.h
|
||||||
|
|
||||||
|
RISC-V MISC SOC SUPPORT
|
||||||
|
M: Conor Dooley <conor@kernel.org>
|
||||||
|
L: linux-riscv@lists.infradead.org
|
||||||
|
S: Maintained
|
||||||
|
Q: https://patchwork.kernel.org/project/linux-riscv/list/
|
||||||
|
T: git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
|
||||||
|
F: Documentation/devicetree/bindings/riscv/
|
||||||
|
F: arch/riscv/boot/dts/
|
||||||
|
|
||||||
RNBD BLOCK DRIVERS
|
RNBD BLOCK DRIVERS
|
||||||
M: Md. Haris Iqbal <haris.iqbal@ionos.com>
|
M: Md. Haris Iqbal <haris.iqbal@ionos.com>
|
||||||
M: Jack Wang <jinpu.wang@ionos.com>
|
M: Jack Wang <jinpu.wang@ionos.com>
|
||||||
|
@ -18778,7 +18796,6 @@ M: Palmer Dabbelt <palmer@dabbelt.com>
|
||||||
M: Paul Walmsley <paul.walmsley@sifive.com>
|
M: Paul Walmsley <paul.walmsley@sifive.com>
|
||||||
L: linux-riscv@lists.infradead.org
|
L: linux-riscv@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
T: git https://github.com/sifive/riscv-linux.git
|
|
||||||
N: sifive
|
N: sifive
|
||||||
K: [^@]sifive
|
K: [^@]sifive
|
||||||
|
|
||||||
|
@ -18797,6 +18814,13 @@ S: Maintained
|
||||||
F: Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
|
F: Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
|
||||||
F: drivers/dma/sf-pdma/
|
F: drivers/dma/sf-pdma/
|
||||||
|
|
||||||
|
SIFIVE SOC DRIVERS
|
||||||
|
M: Conor Dooley <conor@kernel.org>
|
||||||
|
L: linux-riscv@lists.infradead.org
|
||||||
|
S: Maintained
|
||||||
|
T: git https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux.git/
|
||||||
|
F: drivers/soc/sifive/
|
||||||
|
|
||||||
SILEAD TOUCHSCREEN DRIVER
|
SILEAD TOUCHSCREEN DRIVER
|
||||||
M: Hans de Goede <hdegoede@redhat.com>
|
M: Hans de Goede <hdegoede@redhat.com>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
|
@ -19598,6 +19622,11 @@ M: Ion Badulescu <ionut@badula.org>
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: drivers/net/ethernet/adaptec/starfire*
|
F: drivers/net/ethernet/adaptec/starfire*
|
||||||
|
|
||||||
|
STARFIVE DEVICETREES
|
||||||
|
M: Emil Renner Berthing <kernel@esmil.dk>
|
||||||
|
S: Maintained
|
||||||
|
F: arch/riscv/boot/dts/starfive/
|
||||||
|
|
||||||
STARFIVE JH7100 CLOCK DRIVERS
|
STARFIVE JH7100 CLOCK DRIVERS
|
||||||
M: Emil Renner Berthing <kernel@esmil.dk>
|
M: Emil Renner Berthing <kernel@esmil.dk>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -2,7 +2,7 @@
|
||||||
VERSION = 6
|
VERSION = 6
|
||||||
PATCHLEVEL = 1
|
PATCHLEVEL = 1
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION = -rc6
|
||||||
NAME = Hurr durr I'ma ninja sloth
|
NAME = Hurr durr I'ma ninja sloth
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -1218,7 +1218,7 @@ quiet_cmd_ar_vmlinux.a = AR $@
|
||||||
cmd_ar_vmlinux.a = \
|
cmd_ar_vmlinux.a = \
|
||||||
rm -f $@; \
|
rm -f $@; \
|
||||||
$(AR) cDPrST $@ $(KBUILD_VMLINUX_OBJS); \
|
$(AR) cDPrST $@ $(KBUILD_VMLINUX_OBJS); \
|
||||||
$(AR) mPiT $$($(AR) t $@ | head -n1) $@ $$($(AR) t $@ | grep -F --file=$(srctree)/scripts/head-object-list.txt)
|
$(AR) mPiT $$($(AR) t $@ | sed -n 1p) $@ $$($(AR) t $@ | grep -F -f $(srctree)/scripts/head-object-list.txt)
|
||||||
|
|
||||||
targets += vmlinux.a
|
targets += vmlinux.a
|
||||||
vmlinux.a: $(KBUILD_VMLINUX_OBJS) scripts/head-object-list.txt autoksyms_recursive FORCE
|
vmlinux.a: $(KBUILD_VMLINUX_OBJS) scripts/head-object-list.txt autoksyms_recursive FORCE
|
||||||
|
|
|
@ -33,6 +33,10 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
®_pu {
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
®_usb_h1_vbus {
|
®_usb_h1_vbus {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
user-pb {
|
user-pb {
|
||||||
label = "user_pb";
|
label = "user_pb";
|
||||||
gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>;
|
gpios = <&gsc_gpio 2 GPIO_ACTIVE_LOW>;
|
||||||
linux,code = <BTN_0>;
|
linux,code = <BTN_0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
user-pb {
|
user-pb {
|
||||||
label = "user_pb";
|
label = "user_pb";
|
||||||
gpios = <&gsc_gpio 0 GPIO_ACTIVE_LOW>;
|
gpios = <&gsc_gpio 2 GPIO_ACTIVE_LOW>;
|
||||||
linux,code = <BTN_0>;
|
linux,code = <BTN_0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,10 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
®_pu {
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
®_usb_h1_vbus {
|
®_usb_h1_vbus {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -1270,10 +1270,10 @@
|
||||||
clocks = <&clks IMX7D_NAND_USDHC_BUS_RAWNAND_CLK>;
|
clocks = <&clks IMX7D_NAND_USDHC_BUS_RAWNAND_CLK>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpmi: nand-controller@33002000{
|
gpmi: nand-controller@33002000 {
|
||||||
compatible = "fsl,imx7d-gpmi-nand";
|
compatible = "fsl,imx7d-gpmi-nand";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <0>;
|
||||||
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
||||||
reg-names = "gpmi-nand", "bch";
|
reg-names = "gpmi-nand", "bch";
|
||||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
|
@ -69,6 +69,12 @@
|
||||||
pins = "GPIO_35", "GPIO_36";
|
pins = "GPIO_35", "GPIO_36";
|
||||||
function = "can0_b";
|
function = "can0_b";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sgpio_a_pins: sgpio-a-pins {
|
||||||
|
/* SCK, D0, D1, LD */
|
||||||
|
pins = "GPIO_32", "GPIO_33", "GPIO_34", "GPIO_35";
|
||||||
|
function = "sgpio_a";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&can0 {
|
&can0 {
|
||||||
|
@ -118,6 +124,20 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&sgpio {
|
||||||
|
pinctrl-0 = <&sgpio_a_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
microchip,sgpio-port-ranges = <0 3>, <8 11>;
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
gpio@0 {
|
||||||
|
ngpios = <64>;
|
||||||
|
};
|
||||||
|
gpio@1 {
|
||||||
|
ngpios = <64>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&switch {
|
&switch {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -261,7 +261,7 @@
|
||||||
#define PIN_PB2__FLEXCOM6_IO0 PINMUX_PIN(PIN_PB2, 2, 1)
|
#define PIN_PB2__FLEXCOM6_IO0 PINMUX_PIN(PIN_PB2, 2, 1)
|
||||||
#define PIN_PB2__ADTRG PINMUX_PIN(PIN_PB2, 3, 1)
|
#define PIN_PB2__ADTRG PINMUX_PIN(PIN_PB2, 3, 1)
|
||||||
#define PIN_PB2__A20 PINMUX_PIN(PIN_PB2, 4, 1)
|
#define PIN_PB2__A20 PINMUX_PIN(PIN_PB2, 4, 1)
|
||||||
#define PIN_PB2__FLEXCOM11_IO0 PINMUX_PIN(PIN_PB2, 6, 3)
|
#define PIN_PB2__FLEXCOM11_IO1 PINMUX_PIN(PIN_PB2, 6, 3)
|
||||||
#define PIN_PB3 35
|
#define PIN_PB3 35
|
||||||
#define PIN_PB3__GPIO PINMUX_PIN(PIN_PB3, 0, 0)
|
#define PIN_PB3__GPIO PINMUX_PIN(PIN_PB3, 0, 0)
|
||||||
#define PIN_PB3__RF1 PINMUX_PIN(PIN_PB3, 1, 1)
|
#define PIN_PB3__RF1 PINMUX_PIN(PIN_PB3, 1, 1)
|
||||||
|
|
|
@ -24,6 +24,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,14 @@
|
||||||
polling-delay = <0>;
|
polling-delay = <0>;
|
||||||
polling-delay-passive = <0>;
|
polling-delay-passive = <0>;
|
||||||
thermal-sensors = <&bat_therm>;
|
thermal-sensors = <&bat_therm>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
battery-crit-hi {
|
||||||
|
temperature = <70000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -169,10 +169,15 @@ sr_ena_2:
|
||||||
cmp tmp1, #UDDRC_STAT_SELFREF_TYPE_SW
|
cmp tmp1, #UDDRC_STAT_SELFREF_TYPE_SW
|
||||||
bne sr_ena_2
|
bne sr_ena_2
|
||||||
|
|
||||||
/* Put DDR PHY's DLL in bypass mode for non-backup modes. */
|
/* Disable DX DLLs for non-backup modes. */
|
||||||
cmp r7, #AT91_PM_BACKUP
|
cmp r7, #AT91_PM_BACKUP
|
||||||
beq sr_ena_3
|
beq sr_ena_3
|
||||||
|
|
||||||
|
/* Do not soft reset the AC DLL. */
|
||||||
|
ldr tmp1, [r3, DDR3PHY_ACDLLCR]
|
||||||
|
bic tmp1, tmp1, DDR3PHY_ACDLLCR_DLLSRST
|
||||||
|
str tmp1, [r3, DDR3PHY_ACDLLCR]
|
||||||
|
|
||||||
/* Disable DX DLLs. */
|
/* Disable DX DLLs. */
|
||||||
ldr tmp1, [r3, #DDR3PHY_DX0DLLCR]
|
ldr tmp1, [r3, #DDR3PHY_DX0DLLCR]
|
||||||
orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
|
orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
|
||||||
|
|
|
@ -751,12 +751,26 @@
|
||||||
polling-delay = <1000>;
|
polling-delay = <1000>;
|
||||||
polling-delay-passive = <100>;
|
polling-delay-passive = <100>;
|
||||||
thermal-sensors = <&scpi_sensors0 0>;
|
thermal-sensors = <&scpi_sensors0 0>;
|
||||||
|
trips {
|
||||||
|
pmic_crit0: trip0 {
|
||||||
|
temperature = <90000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
polling-delay = <1000>;
|
polling-delay = <1000>;
|
||||||
polling-delay-passive = <100>;
|
polling-delay-passive = <100>;
|
||||||
thermal-sensors = <&scpi_sensors0 3>;
|
thermal-sensors = <&scpi_sensors0 3>;
|
||||||
|
trips {
|
||||||
|
soc_crit0: trip0 {
|
||||||
|
temperature = <80000>;
|
||||||
|
hysteresis = <2000>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
big_cluster_thermal_zone: big-cluster {
|
big_cluster_thermal_zone: big-cluster {
|
||||||
|
|
|
@ -779,6 +779,9 @@
|
||||||
little-endian;
|
little-endian;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
clock-frequency = <2500000>;
|
||||||
|
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
|
||||||
|
QORIQ_CLK_PLL_DIV(1)>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -788,6 +791,9 @@
|
||||||
little-endian;
|
little-endian;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
clock-frequency = <2500000>;
|
||||||
|
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
|
||||||
|
QORIQ_CLK_PLL_DIV(1)>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -532,6 +532,9 @@
|
||||||
little-endian;
|
little-endian;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
clock-frequency = <2500000>;
|
||||||
|
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
|
||||||
|
QORIQ_CLK_PLL_DIV(2)>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -541,6 +544,9 @@
|
||||||
little-endian;
|
little-endian;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
clock-frequency = <2500000>;
|
||||||
|
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
|
||||||
|
QORIQ_CLK_PLL_DIV(2)>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1385,6 +1385,9 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
little-endian;
|
little-endian;
|
||||||
|
clock-frequency = <2500000>;
|
||||||
|
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
|
||||||
|
QORIQ_CLK_PLL_DIV(2)>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1395,6 +1398,9 @@
|
||||||
little-endian;
|
little-endian;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
clock-frequency = <2500000>;
|
||||||
|
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
|
||||||
|
QORIQ_CLK_PLL_DIV(2)>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,9 @@ conn_subsys: bus@5b000000 {
|
||||||
interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
reg = <0x5b010000 0x10000>;
|
reg = <0x5b010000 0x10000>;
|
||||||
clocks = <&sdhc0_lpcg IMX_LPCG_CLK_4>,
|
clocks = <&sdhc0_lpcg IMX_LPCG_CLK_4>,
|
||||||
<&sdhc0_lpcg IMX_LPCG_CLK_5>,
|
<&sdhc0_lpcg IMX_LPCG_CLK_0>,
|
||||||
<&sdhc0_lpcg IMX_LPCG_CLK_0>;
|
<&sdhc0_lpcg IMX_LPCG_CLK_5>;
|
||||||
clock-names = "ipg", "per", "ahb";
|
clock-names = "ipg", "ahb", "per";
|
||||||
power-domains = <&pd IMX_SC_R_SDHC_0>;
|
power-domains = <&pd IMX_SC_R_SDHC_0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -49,9 +49,9 @@ conn_subsys: bus@5b000000 {
|
||||||
interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
reg = <0x5b020000 0x10000>;
|
reg = <0x5b020000 0x10000>;
|
||||||
clocks = <&sdhc1_lpcg IMX_LPCG_CLK_4>,
|
clocks = <&sdhc1_lpcg IMX_LPCG_CLK_4>,
|
||||||
<&sdhc1_lpcg IMX_LPCG_CLK_5>,
|
<&sdhc1_lpcg IMX_LPCG_CLK_0>,
|
||||||
<&sdhc1_lpcg IMX_LPCG_CLK_0>;
|
<&sdhc1_lpcg IMX_LPCG_CLK_5>;
|
||||||
clock-names = "ipg", "per", "ahb";
|
clock-names = "ipg", "ahb", "per";
|
||||||
power-domains = <&pd IMX_SC_R_SDHC_1>;
|
power-domains = <&pd IMX_SC_R_SDHC_1>;
|
||||||
fsl,tuning-start-tap = <20>;
|
fsl,tuning-start-tap = <20>;
|
||||||
fsl,tuning-step = <2>;
|
fsl,tuning-step = <2>;
|
||||||
|
@ -62,9 +62,9 @@ conn_subsys: bus@5b000000 {
|
||||||
interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
reg = <0x5b030000 0x10000>;
|
reg = <0x5b030000 0x10000>;
|
||||||
clocks = <&sdhc2_lpcg IMX_LPCG_CLK_4>,
|
clocks = <&sdhc2_lpcg IMX_LPCG_CLK_4>,
|
||||||
<&sdhc2_lpcg IMX_LPCG_CLK_5>,
|
<&sdhc2_lpcg IMX_LPCG_CLK_0>,
|
||||||
<&sdhc2_lpcg IMX_LPCG_CLK_0>;
|
<&sdhc2_lpcg IMX_LPCG_CLK_5>;
|
||||||
clock-names = "ipg", "per", "ahb";
|
clock-names = "ipg", "ahb", "per";
|
||||||
power-domains = <&pd IMX_SC_R_SDHC_2>;
|
power-domains = <&pd IMX_SC_R_SDHC_2>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
|
@ -250,21 +250,21 @@
|
||||||
/* SODIMM 96 */
|
/* SODIMM 96 */
|
||||||
MX8MM_IOMUXC_SAI1_RXD2_GPIO4_IO4 0x1c4
|
MX8MM_IOMUXC_SAI1_RXD2_GPIO4_IO4 0x1c4
|
||||||
/* CPLD_D[7] */
|
/* CPLD_D[7] */
|
||||||
MX8MM_IOMUXC_SAI1_RXD3_GPIO4_IO5 0x1c4
|
MX8MM_IOMUXC_SAI1_RXD3_GPIO4_IO5 0x184
|
||||||
/* CPLD_D[6] */
|
/* CPLD_D[6] */
|
||||||
MX8MM_IOMUXC_SAI1_RXFS_GPIO4_IO0 0x1c4
|
MX8MM_IOMUXC_SAI1_RXFS_GPIO4_IO0 0x184
|
||||||
/* CPLD_D[5] */
|
/* CPLD_D[5] */
|
||||||
MX8MM_IOMUXC_SAI1_TXC_GPIO4_IO11 0x1c4
|
MX8MM_IOMUXC_SAI1_TXC_GPIO4_IO11 0x184
|
||||||
/* CPLD_D[4] */
|
/* CPLD_D[4] */
|
||||||
MX8MM_IOMUXC_SAI1_TXD0_GPIO4_IO12 0x1c4
|
MX8MM_IOMUXC_SAI1_TXD0_GPIO4_IO12 0x184
|
||||||
/* CPLD_D[3] */
|
/* CPLD_D[3] */
|
||||||
MX8MM_IOMUXC_SAI1_TXD1_GPIO4_IO13 0x1c4
|
MX8MM_IOMUXC_SAI1_TXD1_GPIO4_IO13 0x184
|
||||||
/* CPLD_D[2] */
|
/* CPLD_D[2] */
|
||||||
MX8MM_IOMUXC_SAI1_TXD2_GPIO4_IO14 0x1c4
|
MX8MM_IOMUXC_SAI1_TXD2_GPIO4_IO14 0x184
|
||||||
/* CPLD_D[1] */
|
/* CPLD_D[1] */
|
||||||
MX8MM_IOMUXC_SAI1_TXD3_GPIO4_IO15 0x1c4
|
MX8MM_IOMUXC_SAI1_TXD3_GPIO4_IO15 0x184
|
||||||
/* CPLD_D[0] */
|
/* CPLD_D[0] */
|
||||||
MX8MM_IOMUXC_SAI1_TXD4_GPIO4_IO16 0x1c4
|
MX8MM_IOMUXC_SAI1_TXD4_GPIO4_IO16 0x184
|
||||||
/* KBD_intK */
|
/* KBD_intK */
|
||||||
MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x1c4
|
MX8MM_IOMUXC_SAI2_MCLK_GPIO4_IO27 0x1c4
|
||||||
/* DISP_reset */
|
/* DISP_reset */
|
||||||
|
|
|
@ -34,11 +34,25 @@
|
||||||
off-on-delay-us = <12000>;
|
off-on-delay-us = <12000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
extcon_usbotg1: extcon-usbotg1 {
|
connector {
|
||||||
compatible = "linux,extcon-usb-gpio";
|
compatible = "gpio-usb-b-connector", "usb-b-connector";
|
||||||
|
type = "micro";
|
||||||
|
label = "X19";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usb1_extcon>;
|
pinctrl-0 = <&pinctrl_usb1_connector>;
|
||||||
id-gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
|
id-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
usb_dr_connector: endpoint {
|
||||||
|
remote-endpoint = <&usb1_drd_sw>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -105,13 +119,19 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usbotg1>;
|
pinctrl-0 = <&pinctrl_usbotg1>;
|
||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
extcon = <&extcon_usbotg1>;
|
|
||||||
srp-disable;
|
srp-disable;
|
||||||
hnp-disable;
|
hnp-disable;
|
||||||
adp-disable;
|
adp-disable;
|
||||||
power-active-high;
|
power-active-high;
|
||||||
over-current-active-low;
|
over-current-active-low;
|
||||||
|
usb-role-switch;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
port {
|
||||||
|
usb1_drd_sw: endpoint {
|
||||||
|
remote-endpoint = <&usb_dr_connector>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&usbotg2 {
|
&usbotg2 {
|
||||||
|
@ -231,7 +251,7 @@
|
||||||
<MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x84>;
|
<MX8MM_IOMUXC_GPIO1_IO13_USB1_OTG_OC 0x84>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_usb1_extcon: usb1-extcongrp {
|
pinctrl_usb1_connector: usb1-connectorgrp {
|
||||||
fsl,pins = <MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x1c0>;
|
fsl,pins = <MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x1c0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -276,6 +276,7 @@
|
||||||
assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
|
assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
|
||||||
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
|
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
|
||||||
clock-names = "main_clk";
|
clock-names = "main_clk";
|
||||||
|
power-domains = <&pgc_otg1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
usbphynop2: usbphynop2 {
|
usbphynop2: usbphynop2 {
|
||||||
|
@ -285,6 +286,7 @@
|
||||||
assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
|
assigned-clocks = <&clk IMX8MM_CLK_USB_PHY_REF>;
|
||||||
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
|
assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_100M>;
|
||||||
clock-names = "main_clk";
|
clock-names = "main_clk";
|
||||||
|
power-domains = <&pgc_otg2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
soc: soc@0 {
|
soc: soc@0 {
|
||||||
|
@ -674,13 +676,11 @@
|
||||||
pgc_otg1: power-domain@2 {
|
pgc_otg1: power-domain@2 {
|
||||||
#power-domain-cells = <0>;
|
#power-domain-cells = <0>;
|
||||||
reg = <IMX8MM_POWER_DOMAIN_OTG1>;
|
reg = <IMX8MM_POWER_DOMAIN_OTG1>;
|
||||||
power-domains = <&pgc_hsiomix>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pgc_otg2: power-domain@3 {
|
pgc_otg2: power-domain@3 {
|
||||||
#power-domain-cells = <0>;
|
#power-domain-cells = <0>;
|
||||||
reg = <IMX8MM_POWER_DOMAIN_OTG2>;
|
reg = <IMX8MM_POWER_DOMAIN_OTG2>;
|
||||||
power-domains = <&pgc_hsiomix>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pgc_gpumix: power-domain@4 {
|
pgc_gpumix: power-domain@4 {
|
||||||
|
@ -1186,7 +1186,7 @@
|
||||||
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
|
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
|
||||||
phys = <&usbphynop1>;
|
phys = <&usbphynop1>;
|
||||||
fsl,usbmisc = <&usbmisc1 0>;
|
fsl,usbmisc = <&usbmisc1 0>;
|
||||||
power-domains = <&pgc_otg1>;
|
power-domains = <&pgc_hsiomix>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1206,7 +1206,7 @@
|
||||||
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
|
assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_500M>;
|
||||||
phys = <&usbphynop2>;
|
phys = <&usbphynop2>;
|
||||||
fsl,usbmisc = <&usbmisc2 0>;
|
fsl,usbmisc = <&usbmisc2 0>;
|
||||||
power-domains = <&pgc_otg2>;
|
power-domains = <&pgc_hsiomix>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1244,10 +1244,10 @@
|
||||||
clocks = <&clk IMX8MM_CLK_NAND_USDHC_BUS_RAWNAND_CLK>;
|
clocks = <&clk IMX8MM_CLK_NAND_USDHC_BUS_RAWNAND_CLK>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpmi: nand-controller@33002000{
|
gpmi: nand-controller@33002000 {
|
||||||
compatible = "fsl,imx8mm-gpmi-nand", "fsl,imx7d-gpmi-nand";
|
compatible = "fsl,imx8mm-gpmi-nand", "fsl,imx7d-gpmi-nand";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <0>;
|
||||||
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
||||||
reg-names = "gpmi-nand", "bch";
|
reg-names = "gpmi-nand", "bch";
|
||||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
|
@ -662,7 +662,6 @@
|
||||||
pgc_otg1: power-domain@1 {
|
pgc_otg1: power-domain@1 {
|
||||||
#power-domain-cells = <0>;
|
#power-domain-cells = <0>;
|
||||||
reg = <IMX8MN_POWER_DOMAIN_OTG1>;
|
reg = <IMX8MN_POWER_DOMAIN_OTG1>;
|
||||||
power-domains = <&pgc_hsiomix>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pgc_gpumix: power-domain@2 {
|
pgc_gpumix: power-domain@2 {
|
||||||
|
@ -1076,7 +1075,7 @@
|
||||||
assigned-clock-parents = <&clk IMX8MN_SYS_PLL2_500M>;
|
assigned-clock-parents = <&clk IMX8MN_SYS_PLL2_500M>;
|
||||||
phys = <&usbphynop1>;
|
phys = <&usbphynop1>;
|
||||||
fsl,usbmisc = <&usbmisc1 0>;
|
fsl,usbmisc = <&usbmisc1 0>;
|
||||||
power-domains = <&pgc_otg1>;
|
power-domains = <&pgc_hsiomix>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1103,7 +1102,7 @@
|
||||||
gpmi: nand-controller@33002000 {
|
gpmi: nand-controller@33002000 {
|
||||||
compatible = "fsl,imx8mn-gpmi-nand", "fsl,imx7d-gpmi-nand";
|
compatible = "fsl,imx8mn-gpmi-nand", "fsl,imx7d-gpmi-nand";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <0>;
|
||||||
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
reg = <0x33002000 0x2000>, <0x33004000 0x4000>;
|
||||||
reg-names = "gpmi-nand", "bch";
|
reg-names = "gpmi-nand", "bch";
|
||||||
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -1175,5 +1174,6 @@
|
||||||
assigned-clocks = <&clk IMX8MN_CLK_USB_PHY_REF>;
|
assigned-clocks = <&clk IMX8MN_CLK_USB_PHY_REF>;
|
||||||
assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>;
|
assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>;
|
||||||
clock-names = "main_clk";
|
clock-names = "main_clk";
|
||||||
|
power-domains = <&pgc_otg1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -354,16 +354,6 @@
|
||||||
"SODIMM_82",
|
"SODIMM_82",
|
||||||
"SODIMM_70",
|
"SODIMM_70",
|
||||||
"SODIMM_72";
|
"SODIMM_72";
|
||||||
|
|
||||||
ctrl-sleep-moci-hog {
|
|
||||||
gpio-hog;
|
|
||||||
/* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
|
|
||||||
gpios = <29 GPIO_ACTIVE_HIGH>;
|
|
||||||
line-name = "CTRL_SLEEP_MOCI#";
|
|
||||||
output-high;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&gpio3 {
|
&gpio3 {
|
||||||
|
@ -432,6 +422,16 @@
|
||||||
"SODIMM_256",
|
"SODIMM_256",
|
||||||
"SODIMM_48",
|
"SODIMM_48",
|
||||||
"SODIMM_44";
|
"SODIMM_44";
|
||||||
|
|
||||||
|
ctrl-sleep-moci-hog {
|
||||||
|
gpio-hog;
|
||||||
|
/* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
|
||||||
|
gpios = <29 GPIO_ACTIVE_HIGH>;
|
||||||
|
line-name = "CTRL_SLEEP_MOCI#";
|
||||||
|
output-high;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* On-module I2C */
|
/* On-module I2C */
|
||||||
|
|
|
@ -451,7 +451,7 @@
|
||||||
clocks = <&clk IMX93_CLK_GPIO2_GATE>,
|
clocks = <&clk IMX93_CLK_GPIO2_GATE>,
|
||||||
<&clk IMX93_CLK_GPIO2_GATE>;
|
<&clk IMX93_CLK_GPIO2_GATE>;
|
||||||
clock-names = "gpio", "port";
|
clock-names = "gpio", "port";
|
||||||
gpio-ranges = <&iomuxc 0 32 32>;
|
gpio-ranges = <&iomuxc 0 4 30>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio3: gpio@43820080 {
|
gpio3: gpio@43820080 {
|
||||||
|
@ -465,7 +465,8 @@
|
||||||
clocks = <&clk IMX93_CLK_GPIO3_GATE>,
|
clocks = <&clk IMX93_CLK_GPIO3_GATE>,
|
||||||
<&clk IMX93_CLK_GPIO3_GATE>;
|
<&clk IMX93_CLK_GPIO3_GATE>;
|
||||||
clock-names = "gpio", "port";
|
clock-names = "gpio", "port";
|
||||||
gpio-ranges = <&iomuxc 0 64 32>;
|
gpio-ranges = <&iomuxc 0 84 8>, <&iomuxc 8 66 18>,
|
||||||
|
<&iomuxc 26 34 2>, <&iomuxc 28 0 4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio4: gpio@43830080 {
|
gpio4: gpio@43830080 {
|
||||||
|
@ -479,7 +480,7 @@
|
||||||
clocks = <&clk IMX93_CLK_GPIO4_GATE>,
|
clocks = <&clk IMX93_CLK_GPIO4_GATE>,
|
||||||
<&clk IMX93_CLK_GPIO4_GATE>;
|
<&clk IMX93_CLK_GPIO4_GATE>;
|
||||||
clock-names = "gpio", "port";
|
clock-names = "gpio", "port";
|
||||||
gpio-ranges = <&iomuxc 0 96 32>;
|
gpio-ranges = <&iomuxc 0 38 28>, <&iomuxc 28 36 2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio1: gpio@47400080 {
|
gpio1: gpio@47400080 {
|
||||||
|
@ -493,7 +494,7 @@
|
||||||
clocks = <&clk IMX93_CLK_GPIO1_GATE>,
|
clocks = <&clk IMX93_CLK_GPIO1_GATE>,
|
||||||
<&clk IMX93_CLK_GPIO1_GATE>;
|
<&clk IMX93_CLK_GPIO1_GATE>;
|
||||||
clock-names = "gpio", "port";
|
clock-names = "gpio", "port";
|
||||||
gpio-ranges = <&iomuxc 0 0 32>;
|
gpio-ranges = <&iomuxc 0 92 16>;
|
||||||
};
|
};
|
||||||
|
|
||||||
s4muap: mailbox@47520000 {
|
s4muap: mailbox@47520000 {
|
||||||
|
@ -501,7 +502,7 @@
|
||||||
reg = <0x47520000 0x10000>;
|
reg = <0x47520000 0x10000>;
|
||||||
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
<GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "txirq", "rxirq";
|
interrupt-names = "tx", "rx";
|
||||||
#mbox-cells = <2>;
|
#mbox-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -668,7 +668,7 @@
|
||||||
|
|
||||||
apcs_glb: mailbox@b111000 {
|
apcs_glb: mailbox@b111000 {
|
||||||
compatible = "qcom,ipq8074-apcs-apps-global";
|
compatible = "qcom,ipq8074-apcs-apps-global";
|
||||||
reg = <0x0b111000 0x6000>;
|
reg = <0x0b111000 0x1000>;
|
||||||
|
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
#mbox-cells = <1>;
|
#mbox-cells = <1>;
|
||||||
|
|
|
@ -3504,7 +3504,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
saw3: syscon@9a10000 {
|
saw3: syscon@9a10000 {
|
||||||
compatible = "qcom,tcsr-msm8996", "syscon";
|
compatible = "syscon";
|
||||||
reg = <0x09a10000 0x1000>;
|
reg = <0x09a10000 0x1000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
|
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-allow-set-load;
|
|
||||||
|
|
||||||
vin-supply = <&vreg_3p3>;
|
vin-supply = <&vreg_3p3>;
|
||||||
};
|
};
|
||||||
|
@ -137,6 +136,9 @@
|
||||||
regulator-max-microvolt = <880000>;
|
regulator-max-microvolt = <880000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l7a_1p8: ldo7 {
|
vreg_l7a_1p8: ldo7 {
|
||||||
|
@ -152,6 +154,9 @@
|
||||||
regulator-max-microvolt = <2960000>;
|
regulator-max-microvolt = <2960000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l11a_0p8: ldo11 {
|
vreg_l11a_0p8: ldo11 {
|
||||||
|
@ -258,6 +263,9 @@
|
||||||
regulator-max-microvolt = <1200000>;
|
regulator-max-microvolt = <1200000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l7c_1p8: ldo7 {
|
vreg_l7c_1p8: ldo7 {
|
||||||
|
@ -273,6 +281,9 @@
|
||||||
regulator-max-microvolt = <1200000>;
|
regulator-max-microvolt = <1200000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l10c_3p3: ldo10 {
|
vreg_l10c_3p3: ldo10 {
|
||||||
|
|
|
@ -83,6 +83,9 @@
|
||||||
regulator-max-microvolt = <1200000>;
|
regulator-max-microvolt = <1200000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l4c: ldo4 {
|
vreg_l4c: ldo4 {
|
||||||
|
@ -98,6 +101,9 @@
|
||||||
regulator-max-microvolt = <1200000>;
|
regulator-max-microvolt = <1200000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l7c: ldo7 {
|
vreg_l7c: ldo7 {
|
||||||
|
@ -113,6 +119,9 @@
|
||||||
regulator-max-microvolt = <2504000>;
|
regulator-max-microvolt = <2504000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l17c: ldo17 {
|
vreg_l17c: ldo17 {
|
||||||
|
@ -121,6 +130,9 @@
|
||||||
regulator-max-microvolt = <2504000>;
|
regulator-max-microvolt = <2504000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2296,7 +2296,8 @@
|
||||||
|
|
||||||
lpass_audiocc: clock-controller@3300000 {
|
lpass_audiocc: clock-controller@3300000 {
|
||||||
compatible = "qcom,sc7280-lpassaudiocc";
|
compatible = "qcom,sc7280-lpassaudiocc";
|
||||||
reg = <0 0x03300000 0 0x30000>;
|
reg = <0 0x03300000 0 0x30000>,
|
||||||
|
<0 0x032a9000 0 0x1000>;
|
||||||
clocks = <&rpmhcc RPMH_CXO_CLK>,
|
clocks = <&rpmhcc RPMH_CXO_CLK>,
|
||||||
<&lpass_aon LPASS_AON_CC_MAIN_RCG_CLK_SRC>;
|
<&lpass_aon LPASS_AON_CC_MAIN_RCG_CLK_SRC>;
|
||||||
clock-names = "bi_tcxo", "lpass_aon_cc_main_rcg_clk_src";
|
clock-names = "bi_tcxo", "lpass_aon_cc_main_rcg_clk_src";
|
||||||
|
|
|
@ -124,6 +124,9 @@
|
||||||
regulator-max-microvolt = <2504000>;
|
regulator-max-microvolt = <2504000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l13c: ldo13 {
|
vreg_l13c: ldo13 {
|
||||||
|
@ -146,6 +149,9 @@
|
||||||
regulator-max-microvolt = <1200000>;
|
regulator-max-microvolt = <1200000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l4d: ldo4 {
|
vreg_l4d: ldo4 {
|
||||||
|
|
|
@ -885,13 +885,13 @@
|
||||||
|
|
||||||
ufs_mem_phy: phy@1d87000 {
|
ufs_mem_phy: phy@1d87000 {
|
||||||
compatible = "qcom,sc8280xp-qmp-ufs-phy";
|
compatible = "qcom,sc8280xp-qmp-ufs-phy";
|
||||||
reg = <0 0x01d87000 0 0xe10>;
|
reg = <0 0x01d87000 0 0x1c8>;
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
ranges;
|
ranges;
|
||||||
clock-names = "ref",
|
clock-names = "ref",
|
||||||
"ref_aux";
|
"ref_aux";
|
||||||
clocks = <&rpmhcc RPMH_CXO_CLK>,
|
clocks = <&gcc GCC_UFS_REF_CLKREF_CLK>,
|
||||||
<&gcc GCC_UFS_PHY_PHY_AUX_CLK>;
|
<&gcc GCC_UFS_PHY_PHY_AUX_CLK>;
|
||||||
|
|
||||||
resets = <&ufs_mem_hc 0>;
|
resets = <&ufs_mem_hc 0>;
|
||||||
|
@ -953,13 +953,13 @@
|
||||||
|
|
||||||
ufs_card_phy: phy@1da7000 {
|
ufs_card_phy: phy@1da7000 {
|
||||||
compatible = "qcom,sc8280xp-qmp-ufs-phy";
|
compatible = "qcom,sc8280xp-qmp-ufs-phy";
|
||||||
reg = <0 0x01da7000 0 0xe10>;
|
reg = <0 0x01da7000 0 0x1c8>;
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
ranges;
|
ranges;
|
||||||
clock-names = "ref",
|
clock-names = "ref",
|
||||||
"ref_aux";
|
"ref_aux";
|
||||||
clocks = <&gcc GCC_UFS_1_CARD_CLKREF_CLK>,
|
clocks = <&gcc GCC_UFS_REF_CLKREF_CLK>,
|
||||||
<&gcc GCC_UFS_CARD_PHY_AUX_CLK>;
|
<&gcc GCC_UFS_CARD_PHY_AUX_CLK>;
|
||||||
|
|
||||||
resets = <&ufs_card_hc 0>;
|
resets = <&ufs_card_hc 0>;
|
||||||
|
@ -1181,26 +1181,16 @@
|
||||||
usb_0_ssphy: usb3-phy@88eb400 {
|
usb_0_ssphy: usb3-phy@88eb400 {
|
||||||
reg = <0 0x088eb400 0 0x100>,
|
reg = <0 0x088eb400 0 0x100>,
|
||||||
<0 0x088eb600 0 0x3ec>,
|
<0 0x088eb600 0 0x3ec>,
|
||||||
<0 0x088ec400 0 0x1f0>,
|
<0 0x088ec400 0 0x364>,
|
||||||
<0 0x088eba00 0 0x100>,
|
<0 0x088eba00 0 0x100>,
|
||||||
<0 0x088ebc00 0 0x3ec>,
|
<0 0x088ebc00 0 0x3ec>,
|
||||||
<0 0x088ec700 0 0x64>;
|
<0 0x088ec200 0 0x18>;
|
||||||
#phy-cells = <0>;
|
#phy-cells = <0>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
|
clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
|
||||||
clock-names = "pipe0";
|
clock-names = "pipe0";
|
||||||
clock-output-names = "usb0_phy_pipe_clk_src";
|
clock-output-names = "usb0_phy_pipe_clk_src";
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_0_dpphy: dp-phy@88ed200 {
|
|
||||||
reg = <0 0x088ed200 0 0x200>,
|
|
||||||
<0 0x088ed400 0 0x200>,
|
|
||||||
<0 0x088eda00 0 0x200>,
|
|
||||||
<0 0x088ea600 0 0x200>,
|
|
||||||
<0 0x088ea800 0 0x200>;
|
|
||||||
#clock-cells = <1>;
|
|
||||||
#phy-cells = <0>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_1_hsphy: phy@8902000 {
|
usb_1_hsphy: phy@8902000 {
|
||||||
|
@ -1242,8 +1232,8 @@
|
||||||
|
|
||||||
usb_1_ssphy: usb3-phy@8903400 {
|
usb_1_ssphy: usb3-phy@8903400 {
|
||||||
reg = <0 0x08903400 0 0x100>,
|
reg = <0 0x08903400 0 0x100>,
|
||||||
<0 0x08903c00 0 0x3ec>,
|
<0 0x08903600 0 0x3ec>,
|
||||||
<0 0x08904400 0 0x1f0>,
|
<0 0x08904400 0 0x364>,
|
||||||
<0 0x08903a00 0 0x100>,
|
<0 0x08903a00 0 0x100>,
|
||||||
<0 0x08903c00 0 0x3ec>,
|
<0 0x08903c00 0 0x3ec>,
|
||||||
<0 0x08904200 0 0x18>;
|
<0 0x08904200 0 0x18>;
|
||||||
|
@ -1253,16 +1243,6 @@
|
||||||
clock-names = "pipe0";
|
clock-names = "pipe0";
|
||||||
clock-output-names = "usb1_phy_pipe_clk_src";
|
clock-output-names = "usb1_phy_pipe_clk_src";
|
||||||
};
|
};
|
||||||
|
|
||||||
usb_1_dpphy: dp-phy@8904200 {
|
|
||||||
reg = <0 0x08904200 0 0x200>,
|
|
||||||
<0 0x08904400 0 0x200>,
|
|
||||||
<0 0x08904a00 0 0x200>,
|
|
||||||
<0 0x08904600 0 0x200>,
|
|
||||||
<0 0x08904800 0 0x200>;
|
|
||||||
#clock-cells = <1>;
|
|
||||||
#phy-cells = <0>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
system-cache-controller@9200000 {
|
system-cache-controller@9200000 {
|
||||||
|
|
|
@ -348,6 +348,9 @@
|
||||||
regulator-max-microvolt = <2960000>;
|
regulator-max-microvolt = <2960000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l7c_3p0: ldo7 {
|
vreg_l7c_3p0: ldo7 {
|
||||||
|
@ -367,6 +370,9 @@
|
||||||
regulator-max-microvolt = <2960000>;
|
regulator-max-microvolt = <2960000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l10c_3p3: ldo10 {
|
vreg_l10c_3p3: ldo10 {
|
||||||
|
|
|
@ -317,6 +317,9 @@
|
||||||
regulator-max-microvolt = <2960000>;
|
regulator-max-microvolt = <2960000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l7c_2p85: ldo7 {
|
vreg_l7c_2p85: ldo7 {
|
||||||
|
@ -339,6 +342,9 @@
|
||||||
regulator-max-microvolt = <2960000>;
|
regulator-max-microvolt = <2960000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l10c_3p3: ldo10 {
|
vreg_l10c_3p3: ldo10 {
|
||||||
|
|
|
@ -334,6 +334,7 @@
|
||||||
exit-latency-us = <6562>;
|
exit-latency-us = <6562>;
|
||||||
min-residency-us = <9987>;
|
min-residency-us = <9987>;
|
||||||
local-timer-stop;
|
local-timer-stop;
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -107,6 +107,9 @@
|
||||||
regulator-max-microvolt = <888000>;
|
regulator-max-microvolt = <888000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l6b_1p2: ldo6 {
|
vreg_l6b_1p2: ldo6 {
|
||||||
|
@ -115,6 +118,9 @@
|
||||||
regulator-max-microvolt = <1208000>;
|
regulator-max-microvolt = <1208000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l7b_2p96: ldo7 {
|
vreg_l7b_2p96: ldo7 {
|
||||||
|
@ -123,6 +129,9 @@
|
||||||
regulator-max-microvolt = <2504000>;
|
regulator-max-microvolt = <2504000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vreg_l9b_1p2: ldo9 {
|
vreg_l9b_1p2: ldo9 {
|
||||||
|
@ -131,6 +140,9 @@
|
||||||
regulator-max-microvolt = <1200000>;
|
regulator-max-microvolt = <1200000>;
|
||||||
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||||
regulator-allow-set-load;
|
regulator-allow-set-load;
|
||||||
|
regulator-allowed-modes =
|
||||||
|
<RPMH_REGULATOR_MODE_LPM
|
||||||
|
RPMH_REGULATOR_MODE_HPM>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
(((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT)
|
(((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT)
|
||||||
|
|
||||||
#define MIDR_CPU_MODEL(imp, partnum) \
|
#define MIDR_CPU_MODEL(imp, partnum) \
|
||||||
(((imp) << MIDR_IMPLEMENTOR_SHIFT) | \
|
((_AT(u32, imp) << MIDR_IMPLEMENTOR_SHIFT) | \
|
||||||
(0xf << MIDR_ARCHITECTURE_SHIFT) | \
|
(0xf << MIDR_ARCHITECTURE_SHIFT) | \
|
||||||
((partnum) << MIDR_PARTNUM_SHIFT))
|
((partnum) << MIDR_PARTNUM_SHIFT))
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,16 @@
|
||||||
|
|
||||||
#ifdef CONFIG_EFI
|
#ifdef CONFIG_EFI
|
||||||
extern void efi_init(void);
|
extern void efi_init(void);
|
||||||
|
|
||||||
|
bool efi_runtime_fixup_exception(struct pt_regs *regs, const char *msg);
|
||||||
#else
|
#else
|
||||||
#define efi_init()
|
#define efi_init()
|
||||||
|
|
||||||
|
static inline
|
||||||
|
bool efi_runtime_fixup_exception(struct pt_regs *regs, const char *msg)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md);
|
int efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md);
|
||||||
|
|
|
@ -863,12 +863,12 @@ static inline bool pte_user_accessible_page(pte_t pte)
|
||||||
|
|
||||||
static inline bool pmd_user_accessible_page(pmd_t pmd)
|
static inline bool pmd_user_accessible_page(pmd_t pmd)
|
||||||
{
|
{
|
||||||
return pmd_present(pmd) && (pmd_user(pmd) || pmd_user_exec(pmd));
|
return pmd_leaf(pmd) && (pmd_user(pmd) || pmd_user_exec(pmd));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool pud_user_accessible_page(pud_t pud)
|
static inline bool pud_user_accessible_page(pud_t pud)
|
||||||
{
|
{
|
||||||
return pud_present(pud) && pud_user(pud);
|
return pud_leaf(pud) && pud_user(pud);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#ifndef __ASM_SYSCALL_WRAPPER_H
|
#ifndef __ASM_SYSCALL_WRAPPER_H
|
||||||
#define __ASM_SYSCALL_WRAPPER_H
|
#define __ASM_SYSCALL_WRAPPER_H
|
||||||
|
|
||||||
struct pt_regs;
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
#define SC_ARM64_REGS_TO_ARGS(x, ...) \
|
#define SC_ARM64_REGS_TO_ARGS(x, ...) \
|
||||||
__MAP(x,__SC_ARGS \
|
__MAP(x,__SC_ARGS \
|
||||||
|
|
|
@ -428,6 +428,30 @@ static const struct arm64_ftr_bits ftr_id_aa64dfr0[] = {
|
||||||
ARM64_FTR_END,
|
ARM64_FTR_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct arm64_ftr_bits ftr_mvfr0[] = {
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_FPROUND_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_FPSHVEC_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_FPSQRT_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_FPDIVIDE_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_FPTRAP_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_FPDP_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_FPSP_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR0_SIMD_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_END,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct arm64_ftr_bits ftr_mvfr1[] = {
|
||||||
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_SIMDFMAC_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_FPHP_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_SIMDHP_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_SIMDSP_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_SIMDINT_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_SIMDLS_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_FPDNAN_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR1_FPFTZ_SHIFT, 4, 0),
|
||||||
|
ARM64_FTR_END,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct arm64_ftr_bits ftr_mvfr2[] = {
|
static const struct arm64_ftr_bits ftr_mvfr2[] = {
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR2_FPMISC_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR2_FPMISC_SHIFT, 4, 0),
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR2_SIMDMISC_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, MVFR2_SIMDMISC_SHIFT, 4, 0),
|
||||||
|
@ -458,10 +482,10 @@ static const struct arm64_ftr_bits ftr_id_isar0[] = {
|
||||||
|
|
||||||
static const struct arm64_ftr_bits ftr_id_isar5[] = {
|
static const struct arm64_ftr_bits ftr_id_isar5[] = {
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_RDM_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_RDM_SHIFT, 4, 0),
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_CRC32_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_CRC32_SHIFT, 4, 0),
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_SHA2_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_SHA2_SHIFT, 4, 0),
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_SHA1_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_SHA1_SHIFT, 4, 0),
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_AES_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_AES_SHIFT, 4, 0),
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_SEVL_SHIFT, 4, 0),
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_ISAR5_SEVL_SHIFT, 4, 0),
|
||||||
ARM64_FTR_END,
|
ARM64_FTR_END,
|
||||||
};
|
};
|
||||||
|
@ -574,7 +598,7 @@ static const struct arm64_ftr_bits ftr_smcr[] = {
|
||||||
* Common ftr bits for a 32bit register with all hidden, strict
|
* Common ftr bits for a 32bit register with all hidden, strict
|
||||||
* attributes, with 4bit feature fields and a default safe value of
|
* attributes, with 4bit feature fields and a default safe value of
|
||||||
* 0. Covers the following 32bit registers:
|
* 0. Covers the following 32bit registers:
|
||||||
* id_isar[1-4], id_mmfr[1-3], id_pfr1, mvfr[0-1]
|
* id_isar[1-3], id_mmfr[1-3]
|
||||||
*/
|
*/
|
||||||
static const struct arm64_ftr_bits ftr_generic_32bits[] = {
|
static const struct arm64_ftr_bits ftr_generic_32bits[] = {
|
||||||
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, 28, 4, 0),
|
ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, 28, 4, 0),
|
||||||
|
@ -645,8 +669,8 @@ static const struct __ftr_reg_entry {
|
||||||
ARM64_FTR_REG(SYS_ID_ISAR6_EL1, ftr_id_isar6),
|
ARM64_FTR_REG(SYS_ID_ISAR6_EL1, ftr_id_isar6),
|
||||||
|
|
||||||
/* Op1 = 0, CRn = 0, CRm = 3 */
|
/* Op1 = 0, CRn = 0, CRm = 3 */
|
||||||
ARM64_FTR_REG(SYS_MVFR0_EL1, ftr_generic_32bits),
|
ARM64_FTR_REG(SYS_MVFR0_EL1, ftr_mvfr0),
|
||||||
ARM64_FTR_REG(SYS_MVFR1_EL1, ftr_generic_32bits),
|
ARM64_FTR_REG(SYS_MVFR1_EL1, ftr_mvfr1),
|
||||||
ARM64_FTR_REG(SYS_MVFR2_EL1, ftr_mvfr2),
|
ARM64_FTR_REG(SYS_MVFR2_EL1, ftr_mvfr2),
|
||||||
ARM64_FTR_REG(SYS_ID_PFR2_EL1, ftr_id_pfr2),
|
ARM64_FTR_REG(SYS_ID_PFR2_EL1, ftr_id_pfr2),
|
||||||
ARM64_FTR_REG(SYS_ID_DFR1_EL1, ftr_id_dfr1),
|
ARM64_FTR_REG(SYS_ID_DFR1_EL1, ftr_id_dfr1),
|
||||||
|
@ -3339,7 +3363,7 @@ static void __maybe_unused cpu_enable_cnp(struct arm64_cpu_capabilities const *c
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We emulate only the following system register space.
|
* We emulate only the following system register space.
|
||||||
* Op0 = 0x3, CRn = 0x0, Op1 = 0x0, CRm = [0, 4 - 7]
|
* Op0 = 0x3, CRn = 0x0, Op1 = 0x0, CRm = [0, 2 - 7]
|
||||||
* See Table C5-6 System instruction encodings for System register accesses,
|
* See Table C5-6 System instruction encodings for System register accesses,
|
||||||
* ARMv8 ARM(ARM DDI 0487A.f) for more details.
|
* ARMv8 ARM(ARM DDI 0487A.f) for more details.
|
||||||
*/
|
*/
|
||||||
|
@ -3349,7 +3373,7 @@ static inline bool __attribute_const__ is_emulated(u32 id)
|
||||||
sys_reg_CRn(id) == 0x0 &&
|
sys_reg_CRn(id) == 0x0 &&
|
||||||
sys_reg_Op1(id) == 0x0 &&
|
sys_reg_Op1(id) == 0x0 &&
|
||||||
(sys_reg_CRm(id) == 0 ||
|
(sys_reg_CRm(id) == 0 ||
|
||||||
((sys_reg_CRm(id) >= 4) && (sys_reg_CRm(id) <= 7))));
|
((sys_reg_CRm(id) >= 2) && (sys_reg_CRm(id) <= 7))));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
|
|
||||||
SYM_FUNC_START(__efi_rt_asm_wrapper)
|
SYM_FUNC_START(__efi_rt_asm_wrapper)
|
||||||
stp x29, x30, [sp, #-32]!
|
stp x29, x30, [sp, #-112]!
|
||||||
mov x29, sp
|
mov x29, sp
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -16,6 +16,20 @@ SYM_FUNC_START(__efi_rt_asm_wrapper)
|
||||||
*/
|
*/
|
||||||
stp x1, x18, [sp, #16]
|
stp x1, x18, [sp, #16]
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Preserve all callee saved registers and record the stack pointer
|
||||||
|
* value in a per-CPU variable so we can recover from synchronous
|
||||||
|
* exceptions occurring while running the firmware routines.
|
||||||
|
*/
|
||||||
|
stp x19, x20, [sp, #32]
|
||||||
|
stp x21, x22, [sp, #48]
|
||||||
|
stp x23, x24, [sp, #64]
|
||||||
|
stp x25, x26, [sp, #80]
|
||||||
|
stp x27, x28, [sp, #96]
|
||||||
|
|
||||||
|
adr_this_cpu x8, __efi_rt_asm_recover_sp, x9
|
||||||
|
str x29, [x8]
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We are lucky enough that no EFI runtime services take more than
|
* We are lucky enough that no EFI runtime services take more than
|
||||||
* 5 arguments, so all are passed in registers rather than via the
|
* 5 arguments, so all are passed in registers rather than via the
|
||||||
|
@ -31,7 +45,7 @@ SYM_FUNC_START(__efi_rt_asm_wrapper)
|
||||||
|
|
||||||
ldp x1, x2, [sp, #16]
|
ldp x1, x2, [sp, #16]
|
||||||
cmp x2, x18
|
cmp x2, x18
|
||||||
ldp x29, x30, [sp], #32
|
ldp x29, x30, [sp], #112
|
||||||
b.ne 0f
|
b.ne 0f
|
||||||
ret
|
ret
|
||||||
0:
|
0:
|
||||||
|
@ -45,3 +59,18 @@ SYM_FUNC_START(__efi_rt_asm_wrapper)
|
||||||
mov x18, x2
|
mov x18, x2
|
||||||
b efi_handle_corrupted_x18 // tail call
|
b efi_handle_corrupted_x18 // tail call
|
||||||
SYM_FUNC_END(__efi_rt_asm_wrapper)
|
SYM_FUNC_END(__efi_rt_asm_wrapper)
|
||||||
|
|
||||||
|
SYM_FUNC_START(__efi_rt_asm_recover)
|
||||||
|
ldr_this_cpu x8, __efi_rt_asm_recover_sp, x9
|
||||||
|
mov sp, x8
|
||||||
|
|
||||||
|
ldp x0, x18, [sp, #16]
|
||||||
|
ldp x19, x20, [sp, #32]
|
||||||
|
ldp x21, x22, [sp, #48]
|
||||||
|
ldp x23, x24, [sp, #64]
|
||||||
|
ldp x25, x26, [sp, #80]
|
||||||
|
ldp x27, x28, [sp, #96]
|
||||||
|
ldp x29, x30, [sp], #112
|
||||||
|
|
||||||
|
b efi_handle_runtime_exception
|
||||||
|
SYM_FUNC_END(__efi_rt_asm_recover)
|
||||||
|
|
|
@ -9,9 +9,18 @@
|
||||||
|
|
||||||
#include <linux/efi.h>
|
#include <linux/efi.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/percpu.h>
|
||||||
|
|
||||||
#include <asm/efi.h>
|
#include <asm/efi.h>
|
||||||
|
|
||||||
|
static bool region_is_misaligned(const efi_memory_desc_t *md)
|
||||||
|
{
|
||||||
|
if (PAGE_SIZE == EFI_PAGE_SIZE)
|
||||||
|
return false;
|
||||||
|
return !PAGE_ALIGNED(md->phys_addr) ||
|
||||||
|
!PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Only regions of type EFI_RUNTIME_SERVICES_CODE need to be
|
* Only regions of type EFI_RUNTIME_SERVICES_CODE need to be
|
||||||
* executable, everything else can be mapped with the XN bits
|
* executable, everything else can be mapped with the XN bits
|
||||||
|
@ -25,14 +34,22 @@ static __init pteval_t create_mapping_protection(efi_memory_desc_t *md)
|
||||||
if (type == EFI_MEMORY_MAPPED_IO)
|
if (type == EFI_MEMORY_MAPPED_IO)
|
||||||
return PROT_DEVICE_nGnRE;
|
return PROT_DEVICE_nGnRE;
|
||||||
|
|
||||||
if (WARN_ONCE(!PAGE_ALIGNED(md->phys_addr),
|
if (region_is_misaligned(md)) {
|
||||||
"UEFI Runtime regions are not aligned to 64 KB -- buggy firmware?"))
|
static bool __initdata code_is_misaligned;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the region is not aligned to the page size of the OS, we
|
* Regions that are not aligned to the OS page size cannot be
|
||||||
* can not use strict permissions, since that would also affect
|
* mapped with strict permissions, as those might interfere
|
||||||
* the mapping attributes of the adjacent regions.
|
* with the permissions that are needed by the adjacent
|
||||||
|
* region's mapping. However, if we haven't encountered any
|
||||||
|
* misaligned runtime code regions so far, we can safely use
|
||||||
|
* non-executable permissions for non-code regions.
|
||||||
*/
|
*/
|
||||||
return pgprot_val(PAGE_KERNEL_EXEC);
|
code_is_misaligned |= (type == EFI_RUNTIME_SERVICES_CODE);
|
||||||
|
|
||||||
|
return code_is_misaligned ? pgprot_val(PAGE_KERNEL_EXEC)
|
||||||
|
: pgprot_val(PAGE_KERNEL);
|
||||||
|
}
|
||||||
|
|
||||||
/* R-- */
|
/* R-- */
|
||||||
if ((attr & (EFI_MEMORY_XP | EFI_MEMORY_RO)) ==
|
if ((attr & (EFI_MEMORY_XP | EFI_MEMORY_RO)) ==
|
||||||
|
@ -63,19 +80,16 @@ int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md)
|
||||||
bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE ||
|
bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE ||
|
||||||
md->type == EFI_RUNTIME_SERVICES_DATA);
|
md->type == EFI_RUNTIME_SERVICES_DATA);
|
||||||
|
|
||||||
if (!PAGE_ALIGNED(md->phys_addr) ||
|
/*
|
||||||
!PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT)) {
|
* If this region is not aligned to the page size used by the OS, the
|
||||||
/*
|
* mapping will be rounded outwards, and may end up sharing a page
|
||||||
* If the end address of this region is not aligned to page
|
* frame with an adjacent runtime memory region. Given that the page
|
||||||
* size, the mapping is rounded up, and may end up sharing a
|
* table descriptor covering the shared page will be rewritten when the
|
||||||
* page frame with the next UEFI memory region. If we create
|
* adjacent region gets mapped, we must avoid block mappings here so we
|
||||||
* a block entry now, we may need to split it again when mapping
|
* don't have to worry about splitting them when that happens.
|
||||||
* the next region, and support for that is going to be removed
|
*/
|
||||||
* from the MMU routines. So avoid block mappings altogether in
|
if (region_is_misaligned(md))
|
||||||
* that case.
|
|
||||||
*/
|
|
||||||
page_mappings_only = true;
|
page_mappings_only = true;
|
||||||
}
|
|
||||||
|
|
||||||
create_pgd_mapping(mm, md->phys_addr, md->virt_addr,
|
create_pgd_mapping(mm, md->phys_addr, md->virt_addr,
|
||||||
md->num_pages << EFI_PAGE_SHIFT,
|
md->num_pages << EFI_PAGE_SHIFT,
|
||||||
|
@ -102,6 +116,9 @@ int __init efi_set_mapping_permissions(struct mm_struct *mm,
|
||||||
BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE &&
|
BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE &&
|
||||||
md->type != EFI_RUNTIME_SERVICES_DATA);
|
md->type != EFI_RUNTIME_SERVICES_DATA);
|
||||||
|
|
||||||
|
if (region_is_misaligned(md))
|
||||||
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calling apply_to_page_range() is only safe on regions that are
|
* Calling apply_to_page_range() is only safe on regions that are
|
||||||
* guaranteed to be mapped down to pages. Since we are only called
|
* guaranteed to be mapped down to pages. Since we are only called
|
||||||
|
@ -128,3 +145,28 @@ asmlinkage efi_status_t efi_handle_corrupted_x18(efi_status_t s, const char *f)
|
||||||
pr_err_ratelimited(FW_BUG "register x18 corrupted by EFI %s\n", f);
|
pr_err_ratelimited(FW_BUG "register x18 corrupted by EFI %s\n", f);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
asmlinkage DEFINE_PER_CPU(u64, __efi_rt_asm_recover_sp);
|
||||||
|
|
||||||
|
asmlinkage efi_status_t __efi_rt_asm_recover(void);
|
||||||
|
|
||||||
|
asmlinkage efi_status_t efi_handle_runtime_exception(const char *f)
|
||||||
|
{
|
||||||
|
pr_err(FW_BUG "Synchronous exception occurred in EFI runtime service %s()\n", f);
|
||||||
|
clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
|
||||||
|
return EFI_ABORTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool efi_runtime_fixup_exception(struct pt_regs *regs, const char *msg)
|
||||||
|
{
|
||||||
|
/* Check whether the exception occurred while running the firmware */
|
||||||
|
if (current_work() != &efi_rts_work.work || regs->pc >= TASK_SIZE_64)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
pr_err(FW_BUG "Unable to handle %s in EFI runtime service\n", msg);
|
||||||
|
add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
|
||||||
|
dump_stack();
|
||||||
|
|
||||||
|
regs->pc = (u64)__efi_rt_asm_recover;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -329,7 +329,8 @@ static void cortex_a76_erratum_1463225_svc_handler(void)
|
||||||
__this_cpu_write(__in_cortex_a76_erratum_1463225_wa, 0);
|
__this_cpu_write(__in_cortex_a76_erratum_1463225_wa, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool cortex_a76_erratum_1463225_debug_handler(struct pt_regs *regs)
|
static __always_inline bool
|
||||||
|
cortex_a76_erratum_1463225_debug_handler(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
if (!__this_cpu_read(__in_cortex_a76_erratum_1463225_wa))
|
if (!__this_cpu_read(__in_cortex_a76_erratum_1463225_wa))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -299,11 +299,11 @@ SYM_TYPED_FUNC_START(ftrace_stub)
|
||||||
ret
|
ret
|
||||||
SYM_FUNC_END(ftrace_stub)
|
SYM_FUNC_END(ftrace_stub)
|
||||||
|
|
||||||
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||||
SYM_TYPED_FUNC_START(ftrace_stub_graph)
|
SYM_TYPED_FUNC_START(ftrace_stub_graph)
|
||||||
ret
|
ret
|
||||||
SYM_FUNC_END(ftrace_stub_graph)
|
SYM_FUNC_END(ftrace_stub_graph)
|
||||||
|
|
||||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
|
||||||
/*
|
/*
|
||||||
* void return_to_handler(void)
|
* void return_to_handler(void)
|
||||||
*
|
*
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <hyp/adjust_pc.h>
|
#include <hyp/adjust_pc.h>
|
||||||
#include <linux/kvm_host.h>
|
#include <linux/kvm_host.h>
|
||||||
#include <asm/kvm_emulate.h>
|
#include <asm/kvm_emulate.h>
|
||||||
|
#include <asm/kvm_mmu.h>
|
||||||
|
|
||||||
#if !defined (__KVM_NVHE_HYPERVISOR__) && !defined (__KVM_VHE_HYPERVISOR__)
|
#if !defined (__KVM_NVHE_HYPERVISOR__) && !defined (__KVM_VHE_HYPERVISOR__)
|
||||||
#error Hypervisor code only!
|
#error Hypervisor code only!
|
||||||
|
@ -115,7 +116,7 @@ static void enter_exception64(struct kvm_vcpu *vcpu, unsigned long target_mode,
|
||||||
new |= (old & PSR_C_BIT);
|
new |= (old & PSR_C_BIT);
|
||||||
new |= (old & PSR_V_BIT);
|
new |= (old & PSR_V_BIT);
|
||||||
|
|
||||||
if (kvm_has_mte(vcpu->kvm))
|
if (kvm_has_mte(kern_hyp_va(vcpu->kvm)))
|
||||||
new |= PSR_TCO_BIT;
|
new |= PSR_TCO_BIT;
|
||||||
|
|
||||||
new |= (old & PSR_DIT_BIT);
|
new |= (old & PSR_DIT_BIT);
|
||||||
|
|
|
@ -87,6 +87,17 @@ static inline void __activate_traps_common(struct kvm_vcpu *vcpu)
|
||||||
|
|
||||||
vcpu->arch.mdcr_el2_host = read_sysreg(mdcr_el2);
|
vcpu->arch.mdcr_el2_host = read_sysreg(mdcr_el2);
|
||||||
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
|
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
|
||||||
|
|
||||||
|
if (cpus_have_final_cap(ARM64_SME)) {
|
||||||
|
sysreg_clear_set_s(SYS_HFGRTR_EL2,
|
||||||
|
HFGxTR_EL2_nSMPRI_EL1_MASK |
|
||||||
|
HFGxTR_EL2_nTPIDR2_EL0_MASK,
|
||||||
|
0);
|
||||||
|
sysreg_clear_set_s(SYS_HFGWTR_EL2,
|
||||||
|
HFGxTR_EL2_nSMPRI_EL1_MASK |
|
||||||
|
HFGxTR_EL2_nTPIDR2_EL0_MASK,
|
||||||
|
0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
|
static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
|
||||||
|
@ -96,6 +107,15 @@ static inline void __deactivate_traps_common(struct kvm_vcpu *vcpu)
|
||||||
write_sysreg(0, hstr_el2);
|
write_sysreg(0, hstr_el2);
|
||||||
if (kvm_arm_support_pmu_v3())
|
if (kvm_arm_support_pmu_v3())
|
||||||
write_sysreg(0, pmuserenr_el0);
|
write_sysreg(0, pmuserenr_el0);
|
||||||
|
|
||||||
|
if (cpus_have_final_cap(ARM64_SME)) {
|
||||||
|
sysreg_clear_set_s(SYS_HFGRTR_EL2, 0,
|
||||||
|
HFGxTR_EL2_nSMPRI_EL1_MASK |
|
||||||
|
HFGxTR_EL2_nTPIDR2_EL0_MASK);
|
||||||
|
sysreg_clear_set_s(SYS_HFGWTR_EL2, 0,
|
||||||
|
HFGxTR_EL2_nSMPRI_EL1_MASK |
|
||||||
|
HFGxTR_EL2_nTPIDR2_EL0_MASK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void ___activate_traps(struct kvm_vcpu *vcpu)
|
static inline void ___activate_traps(struct kvm_vcpu *vcpu)
|
||||||
|
|
|
@ -516,7 +516,7 @@ static enum pkvm_page_state hyp_get_page_state(kvm_pte_t pte)
|
||||||
if (!kvm_pte_valid(pte))
|
if (!kvm_pte_valid(pte))
|
||||||
return PKVM_NOPAGE;
|
return PKVM_NOPAGE;
|
||||||
|
|
||||||
return pkvm_getstate(kvm_pgtable_stage2_pte_prot(pte));
|
return pkvm_getstate(kvm_pgtable_hyp_pte_prot(pte));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __hyp_check_page_state_range(u64 addr, u64 size,
|
static int __hyp_check_page_state_range(u64 addr, u64 size,
|
||||||
|
|
|
@ -55,18 +55,6 @@ static void __activate_traps(struct kvm_vcpu *vcpu)
|
||||||
write_sysreg(val, cptr_el2);
|
write_sysreg(val, cptr_el2);
|
||||||
write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2);
|
write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el2);
|
||||||
|
|
||||||
if (cpus_have_final_cap(ARM64_SME)) {
|
|
||||||
val = read_sysreg_s(SYS_HFGRTR_EL2);
|
|
||||||
val &= ~(HFGxTR_EL2_nTPIDR2_EL0_MASK |
|
|
||||||
HFGxTR_EL2_nSMPRI_EL1_MASK);
|
|
||||||
write_sysreg_s(val, SYS_HFGRTR_EL2);
|
|
||||||
|
|
||||||
val = read_sysreg_s(SYS_HFGWTR_EL2);
|
|
||||||
val &= ~(HFGxTR_EL2_nTPIDR2_EL0_MASK |
|
|
||||||
HFGxTR_EL2_nSMPRI_EL1_MASK);
|
|
||||||
write_sysreg_s(val, SYS_HFGWTR_EL2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
|
if (cpus_have_final_cap(ARM64_WORKAROUND_SPECULATIVE_AT)) {
|
||||||
struct kvm_cpu_context *ctxt = &vcpu->arch.ctxt;
|
struct kvm_cpu_context *ctxt = &vcpu->arch.ctxt;
|
||||||
|
|
||||||
|
@ -110,20 +98,6 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu)
|
||||||
|
|
||||||
write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2);
|
write_sysreg(this_cpu_ptr(&kvm_init_params)->hcr_el2, hcr_el2);
|
||||||
|
|
||||||
if (cpus_have_final_cap(ARM64_SME)) {
|
|
||||||
u64 val;
|
|
||||||
|
|
||||||
val = read_sysreg_s(SYS_HFGRTR_EL2);
|
|
||||||
val |= HFGxTR_EL2_nTPIDR2_EL0_MASK |
|
|
||||||
HFGxTR_EL2_nSMPRI_EL1_MASK;
|
|
||||||
write_sysreg_s(val, SYS_HFGRTR_EL2);
|
|
||||||
|
|
||||||
val = read_sysreg_s(SYS_HFGWTR_EL2);
|
|
||||||
val |= HFGxTR_EL2_nTPIDR2_EL0_MASK |
|
|
||||||
HFGxTR_EL2_nSMPRI_EL1_MASK;
|
|
||||||
write_sysreg_s(val, SYS_HFGWTR_EL2);
|
|
||||||
}
|
|
||||||
|
|
||||||
cptr = CPTR_EL2_DEFAULT;
|
cptr = CPTR_EL2_DEFAULT;
|
||||||
if (vcpu_has_sve(vcpu) && (vcpu->arch.fp_state == FP_STATE_GUEST_OWNED))
|
if (vcpu_has_sve(vcpu) && (vcpu->arch.fp_state == FP_STATE_GUEST_OWNED))
|
||||||
cptr |= CPTR_EL2_TZ;
|
cptr |= CPTR_EL2_TZ;
|
||||||
|
|
|
@ -63,10 +63,6 @@ static void __activate_traps(struct kvm_vcpu *vcpu)
|
||||||
__activate_traps_fpsimd32(vcpu);
|
__activate_traps_fpsimd32(vcpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cpus_have_final_cap(ARM64_SME))
|
|
||||||
write_sysreg(read_sysreg(sctlr_el2) & ~SCTLR_ELx_ENTP2,
|
|
||||||
sctlr_el2);
|
|
||||||
|
|
||||||
write_sysreg(val, cpacr_el1);
|
write_sysreg(val, cpacr_el1);
|
||||||
|
|
||||||
write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el1);
|
write_sysreg(__this_cpu_read(kvm_hyp_vector), vbar_el1);
|
||||||
|
@ -88,10 +84,6 @@ static void __deactivate_traps(struct kvm_vcpu *vcpu)
|
||||||
*/
|
*/
|
||||||
asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT));
|
asm(ALTERNATIVE("nop", "isb", ARM64_WORKAROUND_SPECULATIVE_AT));
|
||||||
|
|
||||||
if (cpus_have_final_cap(ARM64_SME))
|
|
||||||
write_sysreg(read_sysreg(sctlr_el2) | SCTLR_ELx_ENTP2,
|
|
||||||
sctlr_el2);
|
|
||||||
|
|
||||||
write_sysreg(CPACR_EL1_DEFAULT, cpacr_el1);
|
write_sysreg(CPACR_EL1_DEFAULT, cpacr_el1);
|
||||||
|
|
||||||
if (!arm64_kernel_unmapped_at_el0())
|
if (!arm64_kernel_unmapped_at_el0())
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <asm/bug.h>
|
#include <asm/bug.h>
|
||||||
#include <asm/cmpxchg.h>
|
#include <asm/cmpxchg.h>
|
||||||
#include <asm/cpufeature.h>
|
#include <asm/cpufeature.h>
|
||||||
|
#include <asm/efi.h>
|
||||||
#include <asm/exception.h>
|
#include <asm/exception.h>
|
||||||
#include <asm/daifflags.h>
|
#include <asm/daifflags.h>
|
||||||
#include <asm/debug-monitors.h>
|
#include <asm/debug-monitors.h>
|
||||||
|
@ -391,6 +392,9 @@ static void __do_kernel_fault(unsigned long addr, unsigned long esr,
|
||||||
msg = "paging request";
|
msg = "paging request";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (efi_runtime_fixup_exception(regs, msg))
|
||||||
|
return;
|
||||||
|
|
||||||
die_kernel_fault(msg, addr, esr, regs);
|
die_kernel_fault(msg, addr, esr, regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ bool can_set_direct_map(void)
|
||||||
* mapped at page granularity, so that it is possible to
|
* mapped at page granularity, so that it is possible to
|
||||||
* protect/unprotect single pages.
|
* protect/unprotect single pages.
|
||||||
*/
|
*/
|
||||||
return rodata_full || debug_pagealloc_enabled() ||
|
return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
|
||||||
IS_ENABLED(CONFIG_KFENCE);
|
IS_ENABLED(CONFIG_KFENCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +102,8 @@ static int change_memory_common(unsigned long addr, int numpages,
|
||||||
* If we are manipulating read-only permissions, apply the same
|
* If we are manipulating read-only permissions, apply the same
|
||||||
* change to the linear mapping of the pages that back this VM area.
|
* change to the linear mapping of the pages that back this VM area.
|
||||||
*/
|
*/
|
||||||
if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
|
if (rodata_enabled &&
|
||||||
|
rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
|
||||||
pgprot_val(clear_mask) == PTE_RDONLY)) {
|
pgprot_val(clear_mask) == PTE_RDONLY)) {
|
||||||
for (i = 0; i < area->nr_pages; i++) {
|
for (i = 0; i < area->nr_pages; i++) {
|
||||||
__change_memory_common((u64)page_address(area->pages[i]),
|
__change_memory_common((u64)page_address(area->pages[i]),
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio/driver.h>
|
||||||
#include <asm/mach-au1x00/gpio-au1000.h>
|
#include <asm/mach-au1x00/gpio-au1000.h>
|
||||||
#include <asm/mach-au1x00/gpio-au1300.h>
|
#include <asm/mach-au1x00/gpio-au1300.h>
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#define DISABLE_BRANCH_PROFILING
|
#define DISABLE_BRANCH_PROFILING
|
||||||
|
|
||||||
|
#define __NO_FORTIFY
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
|
|
@ -26,6 +26,6 @@ extern char *fw_getcmdline(void);
|
||||||
extern void fw_meminit(void);
|
extern void fw_meminit(void);
|
||||||
extern char *fw_getenv(char *name);
|
extern char *fw_getenv(char *name);
|
||||||
extern unsigned long fw_getenvl(char *name);
|
extern unsigned long fw_getenvl(char *name);
|
||||||
extern void fw_init_early_console(char port);
|
extern void fw_init_early_console(void);
|
||||||
|
|
||||||
#endif /* __ASM_FW_H_ */
|
#endif /* __ASM_FW_H_ */
|
||||||
|
|
|
@ -56,7 +56,7 @@ void arch_jump_label_transform(struct jump_entry *e,
|
||||||
* The branch offset must fit in the instruction's 26
|
* The branch offset must fit in the instruction's 26
|
||||||
* bit field.
|
* bit field.
|
||||||
*/
|
*/
|
||||||
WARN_ON((offset >= BIT(25)) ||
|
WARN_ON((offset >= (long)BIT(25)) ||
|
||||||
(offset < -(long)BIT(25)));
|
(offset < -(long)BIT(25)));
|
||||||
|
|
||||||
insn.j_format.opcode = bc6_op;
|
insn.j_format.opcode = bc6_op;
|
||||||
|
|
|
@ -145,8 +145,7 @@ LEAF(kexec_smp_wait)
|
||||||
* kexec_args[0..3] are used to prepare register values.
|
* kexec_args[0..3] are used to prepare register values.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
kexec_args:
|
EXPORT(kexec_args)
|
||||||
EXPORT(kexec_args)
|
|
||||||
arg0: PTR_WD 0x0
|
arg0: PTR_WD 0x0
|
||||||
arg1: PTR_WD 0x0
|
arg1: PTR_WD 0x0
|
||||||
arg2: PTR_WD 0x0
|
arg2: PTR_WD 0x0
|
||||||
|
@ -159,8 +158,7 @@ arg3: PTR_WD 0x0
|
||||||
* their registers a0-a3. secondary_kexec_args[0..3] are used
|
* their registers a0-a3. secondary_kexec_args[0..3] are used
|
||||||
* to prepare register values.
|
* to prepare register values.
|
||||||
*/
|
*/
|
||||||
secondary_kexec_args:
|
EXPORT(secondary_kexec_args)
|
||||||
EXPORT(secondary_kexec_args)
|
|
||||||
s_arg0: PTR_WD 0x0
|
s_arg0: PTR_WD 0x0
|
||||||
s_arg1: PTR_WD 0x0
|
s_arg1: PTR_WD 0x0
|
||||||
s_arg2: PTR_WD 0x0
|
s_arg2: PTR_WD 0x0
|
||||||
|
@ -171,19 +169,16 @@ kexec_flag:
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
kexec_start_address:
|
EXPORT(kexec_start_address)
|
||||||
EXPORT(kexec_start_address)
|
|
||||||
PTR_WD 0x0
|
PTR_WD 0x0
|
||||||
.size kexec_start_address, PTRSIZE
|
.size kexec_start_address, PTRSIZE
|
||||||
|
|
||||||
kexec_indirection_page:
|
EXPORT(kexec_indirection_page)
|
||||||
EXPORT(kexec_indirection_page)
|
|
||||||
PTR_WD 0
|
PTR_WD 0
|
||||||
.size kexec_indirection_page, PTRSIZE
|
.size kexec_indirection_page, PTRSIZE
|
||||||
|
|
||||||
relocate_new_kernel_end:
|
relocate_new_kernel_end:
|
||||||
|
|
||||||
relocate_new_kernel_size:
|
EXPORT(relocate_new_kernel_size)
|
||||||
EXPORT(relocate_new_kernel_size)
|
|
||||||
PTR_WD relocate_new_kernel_end - relocate_new_kernel
|
PTR_WD relocate_new_kernel_end - relocate_new_kernel
|
||||||
.size relocate_new_kernel_size, PTRSIZE
|
.size relocate_new_kernel_size, PTRSIZE
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <asm/bootinfo.h>
|
#include <asm/bootinfo.h>
|
||||||
#include <asm/idle.h>
|
#include <asm/idle.h>
|
||||||
#include <asm/reboot.h>
|
#include <asm/reboot.h>
|
||||||
|
#include <asm/bug.h>
|
||||||
|
|
||||||
#include <loongson.h>
|
#include <loongson.h>
|
||||||
#include <boot_param.h>
|
#include <boot_param.h>
|
||||||
|
@ -159,8 +160,17 @@ static int __init mips_reboot_setup(void)
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC
|
#ifdef CONFIG_KEXEC
|
||||||
kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
|
kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
|
||||||
|
if (WARN_ON(!kexec_argv))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
|
kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
|
||||||
|
if (WARN_ON(!kdump_argv))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL);
|
kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL);
|
||||||
|
if (WARN_ON(!kexec_envp))
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
fw_arg1 = KEXEC_ARGV_ADDR;
|
fw_arg1 = KEXEC_ARGV_ADDR;
|
||||||
memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE);
|
memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE);
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#define U_BRG(x) (UART_BASE(x) + 0x40)
|
#define U_BRG(x) (UART_BASE(x) + 0x40)
|
||||||
|
|
||||||
static void __iomem *uart_base;
|
static void __iomem *uart_base;
|
||||||
static char console_port = -1;
|
static int console_port = -1;
|
||||||
|
|
||||||
static int __init configure_uart_pins(int port)
|
static int __init configure_uart_pins(int port)
|
||||||
{
|
{
|
||||||
|
@ -47,7 +47,7 @@ static int __init configure_uart_pins(int port)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init configure_uart(char port, int baud)
|
static void __init configure_uart(int port, int baud)
|
||||||
{
|
{
|
||||||
u32 pbclk;
|
u32 pbclk;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ static void __init configure_uart(char port, int baud)
|
||||||
uart_base + PIC32_SET(U_STA(port)));
|
uart_base + PIC32_SET(U_STA(port)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init setup_early_console(char port, int baud)
|
static void __init setup_early_console(int port, int baud)
|
||||||
{
|
{
|
||||||
if (configure_uart_pins(port))
|
if (configure_uart_pins(port))
|
||||||
return;
|
return;
|
||||||
|
@ -130,16 +130,15 @@ _out:
|
||||||
return baud;
|
return baud;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init fw_init_early_console(char port)
|
void __init fw_init_early_console(void)
|
||||||
{
|
{
|
||||||
char *arch_cmdline = pic32_getcmdline();
|
char *arch_cmdline = pic32_getcmdline();
|
||||||
int baud = -1;
|
int baud, port;
|
||||||
|
|
||||||
uart_base = ioremap(PIC32_BASE_UART, 0xc00);
|
uart_base = ioremap(PIC32_BASE_UART, 0xc00);
|
||||||
|
|
||||||
baud = get_baud_from_cmdline(arch_cmdline);
|
baud = get_baud_from_cmdline(arch_cmdline);
|
||||||
if (port == -1)
|
port = get_port_from_cmdline(arch_cmdline);
|
||||||
port = get_port_from_cmdline(arch_cmdline);
|
|
||||||
|
|
||||||
if (port == -1)
|
if (port == -1)
|
||||||
port = EARLY_CONSOLE_PORT;
|
port = EARLY_CONSOLE_PORT;
|
||||||
|
|
|
@ -47,7 +47,7 @@ void __init plat_mem_setup(void)
|
||||||
strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
|
strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
|
||||||
|
|
||||||
#ifdef CONFIG_EARLY_PRINTK
|
#ifdef CONFIG_EARLY_PRINTK
|
||||||
fw_init_early_console(-1);
|
fw_init_early_console();
|
||||||
#endif
|
#endif
|
||||||
pic32_config_init();
|
pic32_config_init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,12 @@
|
||||||
#define SVERSION_ANY_ID PA_SVERSION_ANY_ID
|
#define SVERSION_ANY_ID PA_SVERSION_ANY_ID
|
||||||
|
|
||||||
struct hp_hardware {
|
struct hp_hardware {
|
||||||
unsigned short hw_type:5; /* HPHW_xxx */
|
unsigned int hw_type:8; /* HPHW_xxx */
|
||||||
unsigned short hversion;
|
unsigned int hversion:12;
|
||||||
unsigned long sversion:28;
|
unsigned int sversion:12;
|
||||||
unsigned short opt;
|
unsigned char opt;
|
||||||
const char name[80]; /* The hardware description */
|
unsigned char name[59]; /* The hardware description */
|
||||||
};
|
} __packed;
|
||||||
|
|
||||||
struct parisc_device;
|
struct parisc_device;
|
||||||
|
|
||||||
|
|
|
@ -363,20 +363,25 @@
|
||||||
|
|
||||||
#if !defined(__ASSEMBLY__)
|
#if !defined(__ASSEMBLY__)
|
||||||
|
|
||||||
/* flags of the device_path */
|
/* flags for hardware_path */
|
||||||
#define PF_AUTOBOOT 0x80
|
#define PF_AUTOBOOT 0x80
|
||||||
#define PF_AUTOSEARCH 0x40
|
#define PF_AUTOSEARCH 0x40
|
||||||
#define PF_TIMER 0x0F
|
#define PF_TIMER 0x0F
|
||||||
|
|
||||||
struct device_path { /* page 1-69 */
|
struct hardware_path {
|
||||||
unsigned char flags; /* flags see above! */
|
unsigned char flags; /* see bit definitions below */
|
||||||
unsigned char bc[6]; /* bus converter routing info */
|
signed char bc[6]; /* Bus Converter routing info to a specific */
|
||||||
unsigned char mod;
|
/* I/O adaptor (< 0 means none, > 63 resvd) */
|
||||||
unsigned int layers[6];/* device-specific layer-info */
|
signed char mod; /* fixed field of specified module */
|
||||||
} __attribute__((aligned(8))) ;
|
};
|
||||||
|
|
||||||
|
struct pdc_module_path { /* page 1-69 */
|
||||||
|
struct hardware_path path;
|
||||||
|
unsigned int layers[6]; /* device-specific info (ctlr #, unit # ...) */
|
||||||
|
} __attribute__((aligned(8)));
|
||||||
|
|
||||||
struct pz_device {
|
struct pz_device {
|
||||||
struct device_path dp; /* see above */
|
struct pdc_module_path dp; /* see above */
|
||||||
/* struct iomod *hpa; */
|
/* struct iomod *hpa; */
|
||||||
unsigned int hpa; /* HPA base address */
|
unsigned int hpa; /* HPA base address */
|
||||||
/* char *spa; */
|
/* char *spa; */
|
||||||
|
@ -611,21 +616,6 @@ struct pdc_initiator { /* PDC_INITIATOR */
|
||||||
int mode;
|
int mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hardware_path {
|
|
||||||
char flags; /* see bit definitions below */
|
|
||||||
char bc[6]; /* Bus Converter routing info to a specific */
|
|
||||||
/* I/O adaptor (< 0 means none, > 63 resvd) */
|
|
||||||
char mod; /* fixed field of specified module */
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Device path specifications used by PDC.
|
|
||||||
*/
|
|
||||||
struct pdc_module_path {
|
|
||||||
struct hardware_path path;
|
|
||||||
unsigned int layers[6]; /* device-specific info (ctlr #, unit # ...) */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Only used on some pre-PA2.0 boxes */
|
/* Only used on some pre-PA2.0 boxes */
|
||||||
struct pdc_memory_map { /* PDC_MEMORY_MAP */
|
struct pdc_memory_map { /* PDC_MEMORY_MAP */
|
||||||
unsigned long hpa; /* mod's register set address */
|
unsigned long hpa; /* mod's register set address */
|
||||||
|
|
|
@ -882,15 +882,13 @@ void __init walk_central_bus(void)
|
||||||
&root);
|
&root);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_parisc_device(struct parisc_device *dev)
|
static __init void print_parisc_device(struct parisc_device *dev)
|
||||||
{
|
{
|
||||||
char hw_path[64];
|
static int count __initdata;
|
||||||
static int count;
|
|
||||||
|
|
||||||
print_pa_hwpath(dev, hw_path);
|
pr_info("%d. %s at %pap { type:%d, hv:%#x, sv:%#x, rev:%#x }",
|
||||||
pr_info("%d. %s at %pap [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }",
|
++count, dev->name, &(dev->hpa.start), dev->id.hw_type,
|
||||||
++count, dev->name, &(dev->hpa.start), hw_path, dev->id.hw_type,
|
dev->id.hversion, dev->id.sversion, dev->id.hversion_rev);
|
||||||
dev->id.hversion_rev, dev->id.hversion, dev->id.sversion);
|
|
||||||
|
|
||||||
if (dev->num_addrs) {
|
if (dev->num_addrs) {
|
||||||
int k;
|
int k;
|
||||||
|
@ -1079,7 +1077,7 @@ static __init int qemu_print_iodc_data(struct device *lin_dev, void *data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int print_one_device(struct device * dev, void * data)
|
static __init int print_one_device(struct device * dev, void * data)
|
||||||
{
|
{
|
||||||
struct parisc_device * pdev = to_parisc_device(dev);
|
struct parisc_device * pdev = to_parisc_device(dev);
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,7 @@ config PPC
|
||||||
select ARCH_MIGHT_HAVE_PC_SERIO
|
select ARCH_MIGHT_HAVE_PC_SERIO
|
||||||
select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
|
select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
|
||||||
select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
|
select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT
|
||||||
|
select ARCH_SPLIT_ARG64 if PPC32
|
||||||
select ARCH_STACKWALK
|
select ARCH_STACKWALK
|
||||||
select ARCH_SUPPORTS_ATOMIC_RMW
|
select ARCH_SUPPORTS_ATOMIC_RMW
|
||||||
select ARCH_SUPPORTS_DEBUG_PAGEALLOC if PPC_BOOK3S || PPC_8xx || 40x
|
select ARCH_SUPPORTS_DEBUG_PAGEALLOC if PPC_BOOK3S || PPC_8xx || 40x
|
||||||
|
@ -285,7 +286,7 @@ config PPC
|
||||||
#
|
#
|
||||||
|
|
||||||
config PPC_LONG_DOUBLE_128
|
config PPC_LONG_DOUBLE_128
|
||||||
depends on PPC64
|
depends on PPC64 && ALTIVEC
|
||||||
def_bool $(success,test "$(shell,echo __LONG_DOUBLE_128__ | $(CC) -E -P -)" = 1)
|
def_bool $(success,test "$(shell,echo __LONG_DOUBLE_128__ | $(CC) -E -P -)" = 1)
|
||||||
|
|
||||||
config PPC_BARRIER_NOSPEC
|
config PPC_BARRIER_NOSPEC
|
||||||
|
|
|
@ -104,6 +104,13 @@ long sys_ppc_ftruncate64(unsigned int fd, u32 reg4,
|
||||||
unsigned long len1, unsigned long len2);
|
unsigned long len1, unsigned long len2);
|
||||||
long sys_ppc32_fadvise64(int fd, u32 unused, u32 offset1, u32 offset2,
|
long sys_ppc32_fadvise64(int fd, u32 unused, u32 offset1, u32 offset2,
|
||||||
size_t len, int advice);
|
size_t len, int advice);
|
||||||
|
long sys_ppc_sync_file_range2(int fd, unsigned int flags,
|
||||||
|
unsigned int offset1,
|
||||||
|
unsigned int offset2,
|
||||||
|
unsigned int nbytes1,
|
||||||
|
unsigned int nbytes2);
|
||||||
|
long sys_ppc_fallocate(int fd, int mode, u32 offset1, u32 offset2,
|
||||||
|
u32 len1, u32 len2);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
long compat_sys_mmap2(unsigned long addr, size_t len,
|
long compat_sys_mmap2(unsigned long addr, size_t len,
|
||||||
|
|
|
@ -112,7 +112,7 @@ PPC32_SYSCALL_DEFINE6(ppc32_fadvise64,
|
||||||
advice);
|
advice);
|
||||||
}
|
}
|
||||||
|
|
||||||
COMPAT_SYSCALL_DEFINE6(ppc_sync_file_range2,
|
PPC32_SYSCALL_DEFINE6(ppc_sync_file_range2,
|
||||||
int, fd, unsigned int, flags,
|
int, fd, unsigned int, flags,
|
||||||
unsigned int, offset1, unsigned int, offset2,
|
unsigned int, offset1, unsigned int, offset2,
|
||||||
unsigned int, nbytes1, unsigned int, nbytes2)
|
unsigned int, nbytes1, unsigned int, nbytes2)
|
||||||
|
@ -122,3 +122,14 @@ COMPAT_SYSCALL_DEFINE6(ppc_sync_file_range2,
|
||||||
|
|
||||||
return ksys_sync_file_range(fd, offset, nbytes, flags);
|
return ksys_sync_file_range(fd, offset, nbytes, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC32
|
||||||
|
SYSCALL_DEFINE6(ppc_fallocate,
|
||||||
|
int, fd, int, mode,
|
||||||
|
u32, offset1, u32, offset2, u32, len1, u32, len2)
|
||||||
|
{
|
||||||
|
return ksys_fallocate(fd, mode,
|
||||||
|
merge_64(offset1, offset2),
|
||||||
|
merge_64(len1, len2));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -394,8 +394,11 @@
|
||||||
305 common signalfd sys_signalfd compat_sys_signalfd
|
305 common signalfd sys_signalfd compat_sys_signalfd
|
||||||
306 common timerfd_create sys_timerfd_create
|
306 common timerfd_create sys_timerfd_create
|
||||||
307 common eventfd sys_eventfd
|
307 common eventfd sys_eventfd
|
||||||
308 common sync_file_range2 sys_sync_file_range2 compat_sys_ppc_sync_file_range2
|
308 32 sync_file_range2 sys_ppc_sync_file_range2 compat_sys_ppc_sync_file_range2
|
||||||
309 nospu fallocate sys_fallocate compat_sys_fallocate
|
308 64 sync_file_range2 sys_sync_file_range2
|
||||||
|
308 spu sync_file_range2 sys_sync_file_range2
|
||||||
|
309 32 fallocate sys_ppc_fallocate compat_sys_fallocate
|
||||||
|
309 64 fallocate sys_fallocate
|
||||||
310 nospu subpage_prot sys_subpage_prot
|
310 nospu subpage_prot sys_subpage_prot
|
||||||
311 32 timerfd_settime sys_timerfd_settime32
|
311 32 timerfd_settime sys_timerfd_settime32
|
||||||
311 64 timerfd_settime sys_timerfd_settime
|
311 64 timerfd_settime sys_timerfd_settime
|
||||||
|
|
|
@ -142,7 +142,7 @@ SECTIONS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.data.rel.ro : AT(ADDR(.data.rel.ro) - LOAD_OFFSET) {
|
.data.rel.ro : AT(ADDR(.data.rel.ro) - LOAD_OFFSET) {
|
||||||
*(.data.rel.ro*)
|
*(.data.rel.ro .data.rel.ro.*)
|
||||||
}
|
}
|
||||||
|
|
||||||
.branch_lt : AT(ADDR(.branch_lt) - LOAD_OFFSET) {
|
.branch_lt : AT(ADDR(.branch_lt) - LOAD_OFFSET) {
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include "fu540-c000.dtsi"
|
#include "fu540-c000.dtsi"
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/leds/common.h>
|
||||||
|
#include <dt-bindings/pwm/pwm.h>
|
||||||
|
|
||||||
/* Clock frequency (in Hz) of the PCB crystal for rtcclk */
|
/* Clock frequency (in Hz) of the PCB crystal for rtcclk */
|
||||||
#define RTCCLK_FREQ 1000000
|
#define RTCCLK_FREQ 1000000
|
||||||
|
@ -42,6 +44,42 @@
|
||||||
compatible = "gpio-restart";
|
compatible = "gpio-restart";
|
||||||
gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
led-controller {
|
||||||
|
compatible = "pwm-leds";
|
||||||
|
|
||||||
|
led-d1 {
|
||||||
|
pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>;
|
||||||
|
active-low;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
max-brightness = <255>;
|
||||||
|
label = "d1";
|
||||||
|
};
|
||||||
|
|
||||||
|
led-d2 {
|
||||||
|
pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>;
|
||||||
|
active-low;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
max-brightness = <255>;
|
||||||
|
label = "d2";
|
||||||
|
};
|
||||||
|
|
||||||
|
led-d3 {
|
||||||
|
pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>;
|
||||||
|
active-low;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
max-brightness = <255>;
|
||||||
|
label = "d3";
|
||||||
|
};
|
||||||
|
|
||||||
|
led-d4 {
|
||||||
|
pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>;
|
||||||
|
active-low;
|
||||||
|
color = <LED_COLOR_ID_GREEN>;
|
||||||
|
max-brightness = <255>;
|
||||||
|
label = "d4";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&uart0 {
|
&uart0 {
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue