Merge tag 'v5.8-rc7' into i2c/for-5.9
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -143,6 +143,9 @@ x509.genkey
|
|||||||
/allrandom.config
|
/allrandom.config
|
||||||
/allyes.config
|
/allyes.config
|
||||||
|
|
||||||
|
# Kconfig savedefconfig output
|
||||||
|
/defconfig
|
||||||
|
|
||||||
# Kdevelop4
|
# Kdevelop4
|
||||||
*.kdev4
|
*.kdev4
|
||||||
|
|
||||||
|
8
.mailmap
8
.mailmap
@@ -90,11 +90,16 @@ Frank Rowand <frowand.list@gmail.com> <frank.rowand@sonymobile.com>
|
|||||||
Frank Zago <fzago@systemfabricworks.com>
|
Frank Zago <fzago@systemfabricworks.com>
|
||||||
Gao Xiang <xiang@kernel.org> <gaoxiang25@huawei.com>
|
Gao Xiang <xiang@kernel.org> <gaoxiang25@huawei.com>
|
||||||
Gao Xiang <xiang@kernel.org> <hsiangkao@aol.com>
|
Gao Xiang <xiang@kernel.org> <hsiangkao@aol.com>
|
||||||
|
Gerald Schaefer <gerald.schaefer@linux.ibm.com> <gerald.schaefer@de.ibm.com>
|
||||||
|
Gerald Schaefer <gerald.schaefer@linux.ibm.com> <geraldsc@de.ibm.com>
|
||||||
|
Gerald Schaefer <gerald.schaefer@linux.ibm.com> <geraldsc@linux.vnet.ibm.com>
|
||||||
Greg Kroah-Hartman <greg@echidna.(none)>
|
Greg Kroah-Hartman <greg@echidna.(none)>
|
||||||
Greg Kroah-Hartman <gregkh@suse.de>
|
Greg Kroah-Hartman <gregkh@suse.de>
|
||||||
Greg Kroah-Hartman <greg@kroah.com>
|
Greg Kroah-Hartman <greg@kroah.com>
|
||||||
Gregory CLEMENT <gregory.clement@bootlin.com> <gregory.clement@free-electrons.com>
|
Gregory CLEMENT <gregory.clement@bootlin.com> <gregory.clement@free-electrons.com>
|
||||||
Hanjun Guo <guohanjun@huawei.com> <hanjun.guo@linaro.org>
|
Hanjun Guo <guohanjun@huawei.com> <hanjun.guo@linaro.org>
|
||||||
|
Heiko Carstens <hca@linux.ibm.com> <h.carstens@de.ibm.com>
|
||||||
|
Heiko Carstens <hca@linux.ibm.com> <heiko.carstens@de.ibm.com>
|
||||||
Henk Vergonet <Henk.Vergonet@gmail.com>
|
Henk Vergonet <Henk.Vergonet@gmail.com>
|
||||||
Henrik Kretzschmar <henne@nachtwindheim.de>
|
Henrik Kretzschmar <henne@nachtwindheim.de>
|
||||||
Henrik Rydberg <rydberg@bitmath.org>
|
Henrik Rydberg <rydberg@bitmath.org>
|
||||||
@@ -193,6 +198,9 @@ Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
|
|||||||
Mayuresh Janorkar <mayur@ti.com>
|
Mayuresh Janorkar <mayur@ti.com>
|
||||||
Michael Buesch <m@bues.ch>
|
Michael Buesch <m@bues.ch>
|
||||||
Michel Dänzer <michel@tungstengraphics.com>
|
Michel Dänzer <michel@tungstengraphics.com>
|
||||||
|
Mike Rapoport <rppt@kernel.org> <mike@compulab.co.il>
|
||||||
|
Mike Rapoport <rppt@kernel.org> <mike.rapoport@gmail.com>
|
||||||
|
Mike Rapoport <rppt@kernel.org> <rppt@linux.ibm.com>
|
||||||
Miodrag Dinic <miodrag.dinic@mips.com> <miodrag.dinic@imgtec.com>
|
Miodrag Dinic <miodrag.dinic@mips.com> <miodrag.dinic@imgtec.com>
|
||||||
Miquel Raynal <miquel.raynal@bootlin.com> <miquel.raynal@free-electrons.com>
|
Miquel Raynal <miquel.raynal@bootlin.com> <miquel.raynal@free-electrons.com>
|
||||||
Mitesh shah <mshah@teja.com>
|
Mitesh shah <mshah@teja.com>
|
||||||
|
@@ -16,7 +16,16 @@ Description: Allow the root user to disable/enable in runtime the clock
|
|||||||
gating mechanism in Gaudi. Due to how Gaudi is built, the
|
gating mechanism in Gaudi. Due to how Gaudi is built, the
|
||||||
clock gating needs to be disabled in order to access the
|
clock gating needs to be disabled in order to access the
|
||||||
registers of the TPC and MME engines. This is sometimes needed
|
registers of the TPC and MME engines. This is sometimes needed
|
||||||
during debug by the user and hence the user needs this option
|
during debug by the user and hence the user needs this option.
|
||||||
|
The user can supply a bitmask value, each bit represents
|
||||||
|
a different engine to disable/enable its clock gating feature.
|
||||||
|
The bitmask is composed of 20 bits:
|
||||||
|
0 - 7 : DMA channels
|
||||||
|
8 - 11 : MME engines
|
||||||
|
12 - 19 : TPC engines
|
||||||
|
The bit's location of a specific engine can be determined
|
||||||
|
using (1 << GAUDI_ENGINE_ID_*). GAUDI_ENGINE_ID_* values
|
||||||
|
are defined in uapi habanalabs.h file in enum gaudi_engine_id
|
||||||
|
|
||||||
What: /sys/kernel/debug/habanalabs/hl<n>/command_buffers
|
What: /sys/kernel/debug/habanalabs/hl<n>/command_buffers
|
||||||
Date: Jan 2019
|
Date: Jan 2019
|
||||||
|
@@ -258,7 +258,7 @@ Configuring the kernel
|
|||||||
Compiling the kernel
|
Compiling the kernel
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
- Make sure you have at least gcc 4.6 available.
|
- Make sure you have at least gcc 4.9 available.
|
||||||
For more information, refer to :ref:`Documentation/process/changes.rst <changes>`.
|
For more information, refer to :ref:`Documentation/process/changes.rst <changes>`.
|
||||||
|
|
||||||
Please note that you can still run a.out user programs with this kernel.
|
Please note that you can still run a.out user programs with this kernel.
|
||||||
|
@@ -171,6 +171,7 @@ infrastructure:
|
|||||||
|
|
||||||
|
|
||||||
3) ID_AA64PFR1_EL1 - Processor Feature Register 1
|
3) ID_AA64PFR1_EL1 - Processor Feature Register 1
|
||||||
|
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
| Name | bits | visible |
|
| Name | bits | visible |
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
@@ -181,6 +182,7 @@ infrastructure:
|
|||||||
|
|
||||||
|
|
||||||
4) MIDR_EL1 - Main ID Register
|
4) MIDR_EL1 - Main ID Register
|
||||||
|
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
| Name | bits | visible |
|
| Name | bits | visible |
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
|
@@ -147,6 +147,14 @@ stable kernels.
|
|||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| Qualcomm Tech. | Falkor v{1,2} | E1041 | QCOM_FALKOR_ERRATUM_1041 |
|
| Qualcomm Tech. | Falkor v{1,2} | E1041 | QCOM_FALKOR_ERRATUM_1041 |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| Qualcomm Tech. | Kryo4xx Gold | N/A | ARM64_ERRATUM_1463225 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| Qualcomm Tech. | Kryo4xx Gold | N/A | ARM64_ERRATUM_1418040 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| Qualcomm Tech. | Kryo4xx Silver | N/A | ARM64_ERRATUM_1530923 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| Qualcomm Tech. | Kryo4xx Silver | N/A | ARM64_ERRATUM_1024718 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| Fujitsu | A64FX | E#010001 | FUJITSU_ERRATUM_010001 |
|
| Fujitsu | A64FX | E#010001 | FUJITSU_ERRATUM_010001 |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
@@ -492,13 +492,6 @@ set max_budget to higher values than those to which BFQ would have set
|
|||||||
it with auto-tuning. An alternative way to achieve this goal is to
|
it with auto-tuning. An alternative way to achieve this goal is to
|
||||||
just increase the value of timeout_sync, leaving max_budget equal to 0.
|
just increase the value of timeout_sync, leaving max_budget equal to 0.
|
||||||
|
|
||||||
weights
|
|
||||||
-------
|
|
||||||
|
|
||||||
Read-only parameter, used to show the weights of the currently active
|
|
||||||
BFQ queues.
|
|
||||||
|
|
||||||
|
|
||||||
4. Group scheduling with BFQ
|
4. Group scheduling with BFQ
|
||||||
============================
|
============================
|
||||||
|
|
||||||
@@ -566,7 +559,7 @@ Parameters to set
|
|||||||
For each group, there is only the following parameter to set.
|
For each group, there is only the following parameter to set.
|
||||||
|
|
||||||
weight (namely blkio.bfq.weight or io.bfq-weight): the weight of the
|
weight (namely blkio.bfq.weight or io.bfq-weight): the weight of the
|
||||||
group inside its parent. Available values: 1..10000 (default 100). The
|
group inside its parent. Available values: 1..1000 (default 100). The
|
||||||
linear mapping between ioprio and weights, described at the beginning
|
linear mapping between ioprio and weights, described at the beginning
|
||||||
of the tunable section, is still valid, but all weights higher than
|
of the tunable section, is still valid, but all weights higher than
|
||||||
IOPRIO_BE_NR*10 are mapped to ioprio 0.
|
IOPRIO_BE_NR*10 are mapped to ioprio 0.
|
||||||
|
@@ -204,6 +204,14 @@ Returns the maximum size of a mapping for the device. The size parameter
|
|||||||
of the mapping functions like dma_map_single(), dma_map_page() and
|
of the mapping functions like dma_map_single(), dma_map_page() and
|
||||||
others should not be larger than the returned value.
|
others should not be larger than the returned value.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
bool
|
||||||
|
dma_need_sync(struct device *dev, dma_addr_t dma_addr);
|
||||||
|
|
||||||
|
Returns %true if dma_sync_single_for_{device,cpu} calls are required to
|
||||||
|
transfer memory ownership. Returns %false if those calls can be skipped.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
unsigned long
|
unsigned long
|
||||||
|
@@ -61,3 +61,43 @@ test, or an end-to-end test.
|
|||||||
kernel by installing a production configuration of the kernel on production
|
kernel by installing a production configuration of the kernel on production
|
||||||
hardware with a production userspace and then trying to exercise some behavior
|
hardware with a production userspace and then trying to exercise some behavior
|
||||||
that depends on interactions between the hardware, the kernel, and userspace.
|
that depends on interactions between the hardware, the kernel, and userspace.
|
||||||
|
|
||||||
|
KUnit isn't working, what should I do?
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Unfortunately, there are a number of things which can break, but here are some
|
||||||
|
things to try.
|
||||||
|
|
||||||
|
1. Try running ``./tools/testing/kunit/kunit.py run`` with the ``--raw_output``
|
||||||
|
parameter. This might show details or error messages hidden by the kunit_tool
|
||||||
|
parser.
|
||||||
|
2. Instead of running ``kunit.py run``, try running ``kunit.py config``,
|
||||||
|
``kunit.py build``, and ``kunit.py exec`` independently. This can help track
|
||||||
|
down where an issue is occurring. (If you think the parser is at fault, you
|
||||||
|
can run it manually against stdin or a file with ``kunit.py parse``.)
|
||||||
|
3. Running the UML kernel directly can often reveal issues or error messages
|
||||||
|
kunit_tool ignores. This should be as simple as running ``./vmlinux`` after
|
||||||
|
building the UML kernel (e.g., by using ``kunit.py build``). Note that UML
|
||||||
|
has some unusual requirements (such as the host having a tmpfs filesystem
|
||||||
|
mounted), and has had issues in the past when built statically and the host
|
||||||
|
has KASLR enabled. (On older host kernels, you may need to run ``setarch
|
||||||
|
`uname -m` -R ./vmlinux`` to disable KASLR.)
|
||||||
|
4. Make sure the kernel .config has ``CONFIG_KUNIT=y`` and at least one test
|
||||||
|
(e.g. ``CONFIG_KUNIT_EXAMPLE_TEST=y``). kunit_tool will keep its .config
|
||||||
|
around, so you can see what config was used after running ``kunit.py run``.
|
||||||
|
It also preserves any config changes you might make, so you can
|
||||||
|
enable/disable things with ``make ARCH=um menuconfig`` or similar, and then
|
||||||
|
re-run kunit_tool.
|
||||||
|
5. Try to run ``make ARCH=um defconfig`` before running ``kunit.py run``. This
|
||||||
|
may help clean up any residual config items which could be causing problems.
|
||||||
|
6. Finally, try running KUnit outside UML. KUnit and KUnit tests can run be
|
||||||
|
built into any kernel, or can be built as a module and loaded at runtime.
|
||||||
|
Doing so should allow you to determine if UML is causing the issue you're
|
||||||
|
seeing. When tests are built-in, they will execute when the kernel boots, and
|
||||||
|
modules will automatically execute associated tests when loaded. Test results
|
||||||
|
can be collected from ``/sys/kernel/debug/kunit/<test suite>/results``, and
|
||||||
|
can be parsed with ``kunit.py parse``. For more details, see "KUnit on
|
||||||
|
non-UML architectures" in :doc:`usage`.
|
||||||
|
|
||||||
|
If none of the above tricks help, you are always welcome to email any issues to
|
||||||
|
kunit-dev@googlegroups.com.
|
||||||
|
@@ -2,7 +2,6 @@
|
|||||||
DT_DOC_CHECKER ?= dt-doc-validate
|
DT_DOC_CHECKER ?= dt-doc-validate
|
||||||
DT_EXTRACT_EX ?= dt-extract-example
|
DT_EXTRACT_EX ?= dt-extract-example
|
||||||
DT_MK_SCHEMA ?= dt-mk-schema
|
DT_MK_SCHEMA ?= dt-mk-schema
|
||||||
DT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u)
|
|
||||||
|
|
||||||
DT_SCHEMA_MIN_VERSION = 2020.5
|
DT_SCHEMA_MIN_VERSION = 2020.5
|
||||||
|
|
||||||
@@ -35,21 +34,40 @@ quiet_cmd_mk_schema = SCHEMA $@
|
|||||||
|
|
||||||
DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||')
|
DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||')
|
||||||
|
|
||||||
DT_SCHEMA_FILES ?= $(DT_DOCS)
|
|
||||||
|
|
||||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
|
||||||
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
|
|
||||||
extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml
|
|
||||||
|
|
||||||
override DTC_FLAGS := \
|
override DTC_FLAGS := \
|
||||||
-Wno-avoid_unnecessary_addr_size \
|
-Wno-avoid_unnecessary_addr_size \
|
||||||
-Wno-graph_child_address
|
-Wno-graph_child_address \
|
||||||
|
-Wno-interrupt_provider
|
||||||
|
|
||||||
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE
|
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE
|
||||||
$(call if_changed,mk_schema)
|
$(call if_changed,mk_schema)
|
||||||
|
|
||||||
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := $(DT_MK_SCHEMA_USERONLY_FLAG)
|
ifeq ($(DT_SCHEMA_FILES),)
|
||||||
|
|
||||||
|
# Unless DT_SCHEMA_FILES is specified, use the full schema for dtbs_check too.
|
||||||
|
# Just copy processed-schema-examples.yaml
|
||||||
|
|
||||||
|
$(obj)/processed-schema.yaml: $(obj)/processed-schema-examples.yaml FORCE
|
||||||
|
$(call if_changed,copy)
|
||||||
|
|
||||||
|
DT_SCHEMA_FILES = $(DT_DOCS)
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# If DT_SCHEMA_FILES is specified, use it for processed-schema.yaml
|
||||||
|
|
||||||
|
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
|
||||||
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE
|
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE
|
||||||
$(call if_changed,mk_schema)
|
$(call if_changed,mk_schema)
|
||||||
|
|
||||||
extra-y += processed-schema.yaml
|
endif
|
||||||
|
|
||||||
|
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
|
||||||
|
extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES))
|
||||||
|
extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml
|
||||||
|
extra-$(CHECK_DTBS) += processed-schema.yaml
|
||||||
|
|
||||||
|
# Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of
|
||||||
|
# build artifacts here before they are processed by scripts/Makefile.clean
|
||||||
|
clean-files = $(shell find $(obj) \( -name '*.example.dts' -o \
|
||||||
|
-name '*.example.dt.yaml' \) -delete 2>/dev/null)
|
||||||
|
@@ -47,7 +47,7 @@ Required properties:
|
|||||||
&lsio_mu1 1 2
|
&lsio_mu1 1 2
|
||||||
&lsio_mu1 1 3
|
&lsio_mu1 1 3
|
||||||
&lsio_mu1 3 3>;
|
&lsio_mu1 3 3>;
|
||||||
See Documentation/devicetree/bindings/mailbox/fsl,mu.txt
|
See Documentation/devicetree/bindings/mailbox/fsl,mu.yaml
|
||||||
for detailed mailbox binding.
|
for detailed mailbox binding.
|
||||||
|
|
||||||
Note: Each mu which supports general interrupt should have an alias correctly
|
Note: Each mu which supports general interrupt should have an alias correctly
|
||||||
|
@@ -80,14 +80,14 @@ examples:
|
|||||||
ranges = <1 0x00000000 0x42000000 0x02000000>,
|
ranges = <1 0x00000000 0x42000000 0x02000000>,
|
||||||
<5 0x00000000 0x46000000 0x01000000>;
|
<5 0x00000000 0x46000000 0x01000000>;
|
||||||
|
|
||||||
ethernet@1,01f00000 {
|
ethernet@1,1f00000 {
|
||||||
compatible = "smsc,lan9115";
|
compatible = "smsc,lan9115";
|
||||||
reg = <1 0x01f00000 0x1000>;
|
reg = <1 0x01f00000 0x1000>;
|
||||||
interrupts = <0 48 4>;
|
interrupts = <0 48 4>;
|
||||||
phy-mode = "mii";
|
phy-mode = "mii";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart@5,00200000 {
|
serial@5,200000 {
|
||||||
compatible = "ns16550a";
|
compatible = "ns16550a";
|
||||||
reg = <5 0x00200000 0x20>;
|
reg = <5 0x00200000 0x20>;
|
||||||
interrupts = <0 49 4>;
|
interrupts = <0 49 4>;
|
||||||
|
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Clock bindings for Freescale i.MX27
|
title: Clock bindings for Freescale i.MX27
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Fabio Estevam <fabio.estevam@freescale.com>
|
- Fabio Estevam <fabio.estevam@nxp.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The clock consumer should specify the desired clock by having the clock
|
The clock consumer should specify the desired clock by having the clock
|
||||||
|
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Clock bindings for Freescale i.MX31
|
title: Clock bindings for Freescale i.MX31
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Fabio Estevam <fabio.estevam@freescale.com>
|
- Fabio Estevam <fabio.estevam@nxp.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The clock consumer should specify the desired clock by having the clock
|
The clock consumer should specify the desired clock by having the clock
|
||||||
|
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Clock bindings for Freescale i.MX5
|
title: Clock bindings for Freescale i.MX5
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Fabio Estevam <fabio.estevam@freescale.com>
|
- Fabio Estevam <fabio.estevam@nxp.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The clock consumer should specify the desired clock by having the clock
|
The clock consumer should specify the desired clock by having the clock
|
||||||
|
@@ -37,7 +37,7 @@ Optional properties:
|
|||||||
simple-card or audio-graph-card binding. See their binding
|
simple-card or audio-graph-card binding. See their binding
|
||||||
documents on how to describe the way the sii902x device is
|
documents on how to describe the way the sii902x device is
|
||||||
connected to the rest of the audio system:
|
connected to the rest of the audio system:
|
||||||
Documentation/devicetree/bindings/sound/simple-card.txt
|
Documentation/devicetree/bindings/sound/simple-card.yaml
|
||||||
Documentation/devicetree/bindings/sound/audio-graph-card.txt
|
Documentation/devicetree/bindings/sound/audio-graph-card.txt
|
||||||
Note: In case of the audio-graph-card binding the used port
|
Note: In case of the audio-graph-card binding the used port
|
||||||
index should be 3.
|
index should be 3.
|
||||||
|
@@ -68,7 +68,7 @@ Required properties:
|
|||||||
datasheet
|
datasheet
|
||||||
- clocks : phandle to the PRE axi clock input, as described
|
- clocks : phandle to the PRE axi clock input, as described
|
||||||
in Documentation/devicetree/bindings/clock/clock-bindings.txt and
|
in Documentation/devicetree/bindings/clock/clock-bindings.txt and
|
||||||
Documentation/devicetree/bindings/clock/imx6q-clock.txt.
|
Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
|
||||||
- clock-names: should be "axi"
|
- clock-names: should be "axi"
|
||||||
- interrupts: should contain the PRE interrupt
|
- interrupts: should contain the PRE interrupt
|
||||||
- fsl,iram: phandle pointing to the mmio-sram device node, that should be
|
- fsl,iram: phandle pointing to the mmio-sram device node, that should be
|
||||||
@@ -94,7 +94,7 @@ Required properties:
|
|||||||
datasheet
|
datasheet
|
||||||
- clocks : phandles to the PRG ipg and axi clock inputs, as described
|
- clocks : phandles to the PRG ipg and axi clock inputs, as described
|
||||||
in Documentation/devicetree/bindings/clock/clock-bindings.txt and
|
in Documentation/devicetree/bindings/clock/clock-bindings.txt and
|
||||||
Documentation/devicetree/bindings/clock/imx6q-clock.txt.
|
Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
|
||||||
- clock-names: should be "ipg" and "axi"
|
- clock-names: should be "ipg" and "axi"
|
||||||
- fsl,pres: phandles to the PRE units attached to this PRG, with the fixed
|
- fsl,pres: phandles to the PRE units attached to this PRG, with the fixed
|
||||||
PRE as the first entry and the muxable PREs following.
|
PRE as the first entry and the muxable PREs following.
|
||||||
|
@@ -30,8 +30,8 @@ Required properties:
|
|||||||
"di2_sel" - IPU2 DI0 mux
|
"di2_sel" - IPU2 DI0 mux
|
||||||
"di3_sel" - IPU2 DI1 mux
|
"di3_sel" - IPU2 DI1 mux
|
||||||
The needed clock numbers for each are documented in
|
The needed clock numbers for each are documented in
|
||||||
Documentation/devicetree/bindings/clock/imx5-clock.txt, and in
|
Documentation/devicetree/bindings/clock/imx5-clock.yaml, and in
|
||||||
Documentation/devicetree/bindings/clock/imx6q-clock.txt.
|
Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- pinctrl-names : should be "default" on i.MX53, not used on i.MX6q
|
- pinctrl-names : should be "default" on i.MX53, not used on i.MX6q
|
||||||
|
@@ -33,7 +33,7 @@ additionalProperties: false
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
sysreg {
|
sysreg@0 {
|
||||||
compatible = "arm,versatile-sysreg", "syscon", "simple-mfd";
|
compatible = "arm,versatile-sysreg", "syscon", "simple-mfd";
|
||||||
reg = <0x00000 0x1000>;
|
reg = <0x00000 0x1000>;
|
||||||
|
|
||||||
|
@@ -24,7 +24,7 @@ properties:
|
|||||||
description: |
|
description: |
|
||||||
Should contain a list of phandles pointing to display interface port
|
Should contain a list of phandles pointing to display interface port
|
||||||
of vop devices. vop definitions as defined in
|
of vop devices. vop definitions as defined in
|
||||||
Documentation/devicetree/bindings/display/rockchip/rockchip-vop.txt
|
Documentation/devicetree/bindings/display/rockchip/rockchip-vop.yaml
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
@@ -12,7 +12,7 @@ Required properties for the top level node:
|
|||||||
Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
|
Only the GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.
|
||||||
- #interrupt-cells : Specifies the number of cells needed to encode an
|
- #interrupt-cells : Specifies the number of cells needed to encode an
|
||||||
interrupt. Should be 2. The first cell defines the interrupt number,
|
interrupt. Should be 2. The first cell defines the interrupt number,
|
||||||
the second encodes the triger flags encoded as described in
|
the second encodes the trigger flags encoded as described in
|
||||||
Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
|
Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
|
||||||
- compatible:
|
- compatible:
|
||||||
- "mediatek,mt7621-gpio" for Mediatek controllers
|
- "mediatek,mt7621-gpio" for Mediatek controllers
|
||||||
|
@@ -10,7 +10,7 @@ Interrupt number definition:
|
|||||||
16-31 : private irq, and we use 16 as the co-processor timer.
|
16-31 : private irq, and we use 16 as the co-processor timer.
|
||||||
31-1024: common irq for soc ip.
|
31-1024: common irq for soc ip.
|
||||||
|
|
||||||
Interrupt triger mode: (Defined in dt-bindings/interrupt-controller/irq.h)
|
Interrupt trigger mode: (Defined in dt-bindings/interrupt-controller/irq.h)
|
||||||
IRQ_TYPE_LEVEL_HIGH (default)
|
IRQ_TYPE_LEVEL_HIGH (default)
|
||||||
IRQ_TYPE_LEVEL_LOW
|
IRQ_TYPE_LEVEL_LOW
|
||||||
IRQ_TYPE_EDGE_RISING
|
IRQ_TYPE_EDGE_RISING
|
||||||
|
@@ -87,7 +87,7 @@ Example:
|
|||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
/* APU<->RPU0 IPI mailbox controller */
|
/* APU<->RPU0 IPI mailbox controller */
|
||||||
ipi_mailbox_rpu0: mailbox@ff90400 {
|
ipi_mailbox_rpu0: mailbox@ff990400 {
|
||||||
reg = <0xff990400 0x20>,
|
reg = <0xff990400 0x20>,
|
||||||
<0xff990420 0x20>,
|
<0xff990420 0x20>,
|
||||||
<0xff990080 0x20>,
|
<0xff990080 0x20>,
|
||||||
|
@@ -8,7 +8,7 @@ The embedded controller requires the SPI controller driver to signal readiness
|
|||||||
to receive a transfer (that is, when TX FIFO contains the response data) by
|
to receive a transfer (that is, when TX FIFO contains the response data) by
|
||||||
strobing the ACK pin with the ready signal. See the "ready-gpios" property of the
|
strobing the ACK pin with the ready signal. See the "ready-gpios" property of the
|
||||||
SSP binding as documented in:
|
SSP binding as documented in:
|
||||||
<Documentation/devicetree/bindings/spi/spi-pxa2xx.txt>.
|
<Documentation/devicetree/bindings/spi/marvell,mmp2-ssp.yaml>.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
&ssp3 {
|
&ssp3 {
|
||||||
|
@@ -3,7 +3,7 @@ MediaTek SoC built-in Bluetooth Devices
|
|||||||
|
|
||||||
This device is a serial attached device to BTIF device and thus it must be a
|
This device is a serial attached device to BTIF device and thus it must be a
|
||||||
child node of the serial node with BTIF. The dt-bindings details for BTIF
|
child node of the serial node with BTIF. The dt-bindings details for BTIF
|
||||||
device can be known via Documentation/devicetree/bindings/serial/8250.txt.
|
device can be known via Documentation/devicetree/bindings/serial/8250.yaml.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|
||||||
|
@@ -114,7 +114,7 @@ with values derived from the SoC user manual.
|
|||||||
[flags]>
|
[flags]>
|
||||||
|
|
||||||
On other mach-shmobile platforms GPIO is handled by the gpio-rcar driver.
|
On other mach-shmobile platforms GPIO is handled by the gpio-rcar driver.
|
||||||
Please refer to Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt
|
Please refer to Documentation/devicetree/bindings/gpio/renesas,rcar-gpio.yaml
|
||||||
for documentation of the GPIO device tree bindings on those platforms.
|
for documentation of the GPIO device tree bindings on those platforms.
|
||||||
|
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ It is based on common bindings for device graphs.
|
|||||||
see ${LINUX}/Documentation/devicetree/bindings/graph.txt
|
see ${LINUX}/Documentation/devicetree/bindings/graph.txt
|
||||||
|
|
||||||
Basically, Audio Graph Card property is same as Simple Card.
|
Basically, Audio Graph Card property is same as Simple Card.
|
||||||
see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.txt
|
see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.yaml
|
||||||
|
|
||||||
Below are same as Simple-Card.
|
Below are same as Simple-Card.
|
||||||
|
|
||||||
|
@@ -378,6 +378,8 @@ examples:
|
|||||||
- |
|
- |
|
||||||
sound {
|
sound {
|
||||||
compatible = "simple-audio-card";
|
compatible = "simple-audio-card";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
simple-audio-card,name = "rsnd-ak4643";
|
simple-audio-card,name = "rsnd-ak4643";
|
||||||
simple-audio-card,format = "left_j";
|
simple-audio-card,format = "left_j";
|
||||||
@@ -391,10 +393,12 @@ examples:
|
|||||||
"ak4642 Playback", "DAI1 Playback";
|
"ak4642 Playback", "DAI1 Playback";
|
||||||
|
|
||||||
dpcmcpu: simple-audio-card,cpu@0 {
|
dpcmcpu: simple-audio-card,cpu@0 {
|
||||||
|
reg = <0>;
|
||||||
sound-dai = <&rcar_sound 0>;
|
sound-dai = <&rcar_sound 0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
simple-audio-card,cpu@1 {
|
simple-audio-card,cpu@1 {
|
||||||
|
reg = <1>;
|
||||||
sound-dai = <&rcar_sound 1>;
|
sound-dai = <&rcar_sound 1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -418,6 +422,8 @@ examples:
|
|||||||
- |
|
- |
|
||||||
sound {
|
sound {
|
||||||
compatible = "simple-audio-card";
|
compatible = "simple-audio-card";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
simple-audio-card,routing =
|
simple-audio-card,routing =
|
||||||
"pcm3168a Playback", "DAI1 Playback",
|
"pcm3168a Playback", "DAI1 Playback",
|
||||||
@@ -426,6 +432,7 @@ examples:
|
|||||||
"pcm3168a Playback", "DAI4 Playback";
|
"pcm3168a Playback", "DAI4 Playback";
|
||||||
|
|
||||||
simple-audio-card,dai-link@0 {
|
simple-audio-card,dai-link@0 {
|
||||||
|
reg = <0>;
|
||||||
format = "left_j";
|
format = "left_j";
|
||||||
bitclock-master = <&sndcpu0>;
|
bitclock-master = <&sndcpu0>;
|
||||||
frame-master = <&sndcpu0>;
|
frame-master = <&sndcpu0>;
|
||||||
@@ -439,22 +446,23 @@ examples:
|
|||||||
};
|
};
|
||||||
|
|
||||||
simple-audio-card,dai-link@1 {
|
simple-audio-card,dai-link@1 {
|
||||||
|
reg = <1>;
|
||||||
format = "i2s";
|
format = "i2s";
|
||||||
bitclock-master = <&sndcpu1>;
|
bitclock-master = <&sndcpu1>;
|
||||||
frame-master = <&sndcpu1>;
|
frame-master = <&sndcpu1>;
|
||||||
|
|
||||||
convert-channels = <8>; /* TDM Split */
|
convert-channels = <8>; /* TDM Split */
|
||||||
|
|
||||||
sndcpu1: cpu@0 {
|
sndcpu1: cpu0 {
|
||||||
sound-dai = <&rcar_sound 1>;
|
sound-dai = <&rcar_sound 1>;
|
||||||
};
|
};
|
||||||
cpu@1 {
|
cpu1 {
|
||||||
sound-dai = <&rcar_sound 2>;
|
sound-dai = <&rcar_sound 2>;
|
||||||
};
|
};
|
||||||
cpu@2 {
|
cpu2 {
|
||||||
sound-dai = <&rcar_sound 3>;
|
sound-dai = <&rcar_sound 3>;
|
||||||
};
|
};
|
||||||
cpu@3 {
|
cpu3 {
|
||||||
sound-dai = <&rcar_sound 4>;
|
sound-dai = <&rcar_sound 4>;
|
||||||
};
|
};
|
||||||
codec {
|
codec {
|
||||||
@@ -466,6 +474,7 @@ examples:
|
|||||||
};
|
};
|
||||||
|
|
||||||
simple-audio-card,dai-link@2 {
|
simple-audio-card,dai-link@2 {
|
||||||
|
reg = <2>;
|
||||||
format = "i2s";
|
format = "i2s";
|
||||||
bitclock-master = <&sndcpu2>;
|
bitclock-master = <&sndcpu2>;
|
||||||
frame-master = <&sndcpu2>;
|
frame-master = <&sndcpu2>;
|
||||||
|
@@ -5,7 +5,7 @@ codec or external codecs.
|
|||||||
|
|
||||||
sti sound drivers allows to expose sti SoC audio interface through the
|
sti sound drivers allows to expose sti SoC audio interface through the
|
||||||
generic ASoC simple card. For details about sound card declaration please refer to
|
generic ASoC simple card. For details about sound card declaration please refer to
|
||||||
Documentation/devicetree/bindings/sound/simple-card.txt.
|
Documentation/devicetree/bindings/sound/simple-card.yaml.
|
||||||
|
|
||||||
1) sti-uniperiph-dai: audio dai device.
|
1) sti-uniperiph-dai: audio dai device.
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
@@ -19,7 +19,7 @@ Required properties:
|
|||||||
|
|
||||||
SPI Controller nodes must be child of GENI based Qualcomm Universal
|
SPI Controller nodes must be child of GENI based Qualcomm Universal
|
||||||
Peripharal. Please refer GENI based QUP wrapper controller node bindings
|
Peripharal. Please refer GENI based QUP wrapper controller node bindings
|
||||||
described in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.txt.
|
described in Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml.
|
||||||
|
|
||||||
SPI slave nodes must be children of the SPI master node and conform to SPI bus
|
SPI slave nodes must be children of the SPI master node and conform to SPI bus
|
||||||
binding as described in Documentation/devicetree/bindings/spi/spi-bus.txt.
|
binding as described in Documentation/devicetree/bindings/spi/spi-bus.txt.
|
||||||
|
@@ -41,7 +41,7 @@ examples:
|
|||||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
|
||||||
// Example 1: SDM845 TSENS
|
// Example 1: SDM845 TSENS
|
||||||
soc: soc@0 {
|
soc: soc {
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
@@ -224,7 +224,7 @@ examples:
|
|||||||
#include <dt-bindings/thermal/thermal.h>
|
#include <dt-bindings/thermal/thermal.h>
|
||||||
|
|
||||||
// Example 1: SDM845 TSENS
|
// Example 1: SDM845 TSENS
|
||||||
soc: soc@0 {
|
soc {
|
||||||
#address-cells = <2>;
|
#address-cells = <2>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
@@ -35,7 +35,7 @@ examples:
|
|||||||
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
||||||
vtm: thermal@42050000 {
|
vtm: thermal@42050000 {
|
||||||
compatible = "ti,am654-vtm";
|
compatible = "ti,am654-vtm";
|
||||||
reg = <0x0 0x42050000 0x0 0x25c>;
|
reg = <0x42050000 0x25c>;
|
||||||
power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
|
power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
|
||||||
#thermal-sensor-cells = <1>;
|
#thermal-sensor-cells = <1>;
|
||||||
};
|
};
|
||||||
|
@@ -8,7 +8,7 @@ regs is accessed by cpu co-processor 4 registers with mtcr/mfcr.
|
|||||||
- PTIM_CTLR "cr<0, 14>" Control reg to start reset timer.
|
- PTIM_CTLR "cr<0, 14>" Control reg to start reset timer.
|
||||||
- PTIM_TSR "cr<1, 14>" Interrupt cleanup status reg.
|
- PTIM_TSR "cr<1, 14>" Interrupt cleanup status reg.
|
||||||
- PTIM_CCVR "cr<3, 14>" Current counter value reg.
|
- PTIM_CCVR "cr<3, 14>" Current counter value reg.
|
||||||
- PTIM_LVR "cr<6, 14>" Window value reg to triger next event.
|
- PTIM_LVR "cr<6, 14>" Window value reg to trigger next event.
|
||||||
|
|
||||||
==============================
|
==============================
|
||||||
timer node bindings definition
|
timer node bindings definition
|
||||||
|
@@ -127,8 +127,8 @@ examples:
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
string@0409 {
|
string@409 {
|
||||||
reg = <0x0409>;
|
reg = <0x409>;
|
||||||
manufacturer = "ASPEED";
|
manufacturer = "ASPEED";
|
||||||
product = "USB Virtual Hub";
|
product = "USB Virtual Hub";
|
||||||
serial-number = "0000";
|
serial-number = "0000";
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
:orphan:
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
Writing DeviceTree Bindings in json-schema
|
Writing DeviceTree Bindings in json-schema
|
||||||
==========================================
|
==========================================
|
||||||
@@ -124,9 +124,12 @@ dtc must also be built with YAML output support enabled. This requires that
|
|||||||
libyaml and its headers be installed on the host system. For some distributions
|
libyaml and its headers be installed on the host system. For some distributions
|
||||||
that involves installing the development package, such as:
|
that involves installing the development package, such as:
|
||||||
|
|
||||||
Debian:
|
Debian::
|
||||||
|
|
||||||
apt-get install libyaml-dev
|
apt-get install libyaml-dev
|
||||||
Fedora:
|
|
||||||
|
Fedora::
|
||||||
|
|
||||||
dnf -y install libyaml-devel
|
dnf -y install libyaml-devel
|
||||||
|
|
||||||
Running checks
|
Running checks
|
||||||
|
@@ -23,6 +23,7 @@ PTP hardware clock infrastructure for Linux
|
|||||||
+ Ancillary clock features
|
+ Ancillary clock features
|
||||||
- Time stamp external events
|
- Time stamp external events
|
||||||
- Period output signals configurable from user space
|
- Period output signals configurable from user space
|
||||||
|
- Low Pass Filter (LPF) access from user space
|
||||||
- Synchronization of the Linux system time via the PPS subsystem
|
- Synchronization of the Linux system time via the PPS subsystem
|
||||||
|
|
||||||
PTP hardware clock kernel API
|
PTP hardware clock kernel API
|
||||||
@@ -94,3 +95,14 @@ Supported hardware
|
|||||||
|
|
||||||
- Auxiliary Slave/Master Mode Snapshot (optional interrupt)
|
- Auxiliary Slave/Master Mode Snapshot (optional interrupt)
|
||||||
- Target Time (optional interrupt)
|
- Target Time (optional interrupt)
|
||||||
|
|
||||||
|
* Renesas (IDT) ClockMatrix™
|
||||||
|
|
||||||
|
- Up to 4 independent PHC channels
|
||||||
|
- Integrated low pass filter (LPF), access via .adjPhase (compliant to ITU-T G.8273.2)
|
||||||
|
- Programmable output periodic signals
|
||||||
|
- Programmable inputs can time stamp external triggers
|
||||||
|
- Driver and/or hardware configuration through firmware (idtcm.bin)
|
||||||
|
- LPF settings (bandwidth, phase limiting, automatic holdover, physical layer assist (per ITU-T G.8273.2))
|
||||||
|
- Programmable output PTP clocks, any frequency up to 1GHz (to other PHY/MAC time stampers, refclk to ASSPs/SoCs/FPGAs)
|
||||||
|
- Lock to GNSS input, automatic switching between GNSS and user-space PHC control (optional)
|
||||||
|
@@ -560,8 +560,8 @@ When the NFS export feature is enabled, all directory index entries are
|
|||||||
verified on mount time to check that upper file handles are not stale.
|
verified on mount time to check that upper file handles are not stale.
|
||||||
This verification may cause significant overhead in some cases.
|
This verification may cause significant overhead in some cases.
|
||||||
|
|
||||||
Note: the mount options index=off,nfs_export=on are conflicting and will
|
Note: the mount options index=off,nfs_export=on are conflicting for a
|
||||||
result in an error.
|
read-write mount and will result in an error.
|
||||||
|
|
||||||
|
|
||||||
Testsuite
|
Testsuite
|
||||||
|
@@ -1,14 +1,26 @@
|
|||||||
==============================
|
==============================
|
||||||
Linux I2C slave eeprom backend
|
Linux I2C slave EEPROM backend
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
by Wolfram Sang <wsa@sang-engineering.com> in 2014-15
|
by Wolfram Sang <wsa@sang-engineering.com> in 2014-20
|
||||||
|
|
||||||
This is a proof-of-concept backend which acts like an EEPROM on the connected
|
This backend simulates an EEPROM on the connected I2C bus. Its memory contents
|
||||||
I2C bus. The memory contents can be modified from userspace via this file
|
can be accessed from userspace via this file located in sysfs::
|
||||||
located in sysfs::
|
|
||||||
|
|
||||||
/sys/bus/i2c/devices/<device-directory>/slave-eeprom
|
/sys/bus/i2c/devices/<device-directory>/slave-eeprom
|
||||||
|
|
||||||
|
The following types are available: 24c02, 24c32, 24c64, and 24c512. Read-only
|
||||||
|
variants are also supported. The name needed for instantiating has the form
|
||||||
|
'slave-<type>[ro]'. Examples follow:
|
||||||
|
|
||||||
|
24c02, read/write, address 0x64:
|
||||||
|
# echo slave-24c02 0x1064 > /sys/bus/i2c/devices/i2c-1/new_device
|
||||||
|
|
||||||
|
24c512, read-only, address 0x42:
|
||||||
|
# echo slave-24c512ro 0x1042 > /sys/bus/i2c/devices/i2c-1/new_device
|
||||||
|
|
||||||
|
You can also preload data during boot if a device-property named
|
||||||
|
'firmware-name' contains a valid filename (DT or ACPI only).
|
||||||
|
|
||||||
As of 2015, Linux doesn't support poll on binary sysfs files, so there is no
|
As of 2015, Linux doesn't support poll on binary sysfs files, so there is no
|
||||||
notification when another master changed the content.
|
notification when another master changed the content.
|
||||||
|
@@ -182,7 +182,8 @@ module 8123.ko, which is built from the following files::
|
|||||||
8123_pci.c
|
8123_pci.c
|
||||||
8123_bin.o_shipped <= Binary blob
|
8123_bin.o_shipped <= Binary blob
|
||||||
|
|
||||||
--- 3.1 Shared Makefile
|
3.1 Shared Makefile
|
||||||
|
-------------------
|
||||||
|
|
||||||
An external module always includes a wrapper makefile that
|
An external module always includes a wrapper makefile that
|
||||||
supports building the module using "make" with no arguments.
|
supports building the module using "make" with no arguments.
|
||||||
@@ -470,9 +471,9 @@ build.
|
|||||||
|
|
||||||
The syntax of the Module.symvers file is::
|
The syntax of the Module.symvers file is::
|
||||||
|
|
||||||
<CRC> <Symbol> <Module> <Export Type> <Namespace>
|
<CRC> <Symbol> <Module> <Export Type> <Namespace>
|
||||||
|
|
||||||
0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE
|
0xe1cc2a05 usb_stor_suspend drivers/usb/storage/usb-storage EXPORT_SYMBOL_GPL USB_STORAGE
|
||||||
|
|
||||||
The fields are separated by tabs and values may be empty (e.g.
|
The fields are separated by tabs and values may be empty (e.g.
|
||||||
if no namespace is defined for an exported symbol).
|
if no namespace is defined for an exported symbol).
|
||||||
|
@@ -101,7 +101,7 @@ Structure randomisation
|
|||||||
|
|
||||||
If you enable ``CONFIG_GCC_PLUGIN_RANDSTRUCT``, you will need to
|
If you enable ``CONFIG_GCC_PLUGIN_RANDSTRUCT``, you will need to
|
||||||
pre-generate the random seed in
|
pre-generate the random seed in
|
||||||
``scripts/gcc-plgins/randomize_layout_seed.h`` so the same value
|
``scripts/gcc-plugins/randomize_layout_seed.h`` so the same value
|
||||||
is used in rebuilds.
|
is used in rebuilds.
|
||||||
|
|
||||||
Debug info conflicts
|
Debug info conflicts
|
||||||
|
@@ -68,4 +68,4 @@ and frameworks can be controlled from the same registers, all of these
|
|||||||
drivers access their registers through the same regmap.
|
drivers access their registers through the same regmap.
|
||||||
|
|
||||||
For more information regarding the devicetree bindings of the TCU drivers,
|
For more information regarding the devicetree bindings of the TCU drivers,
|
||||||
have a look at Documentation/devicetree/bindings/timer/ingenic,tcu.txt.
|
have a look at Documentation/devicetree/bindings/timer/ingenic,tcu.yaml.
|
||||||
|
@@ -434,7 +434,7 @@ can set up your network then:
|
|||||||
ifconfig arc0 insight
|
ifconfig arc0 insight
|
||||||
route add insight arc0
|
route add insight arc0
|
||||||
route add freedom arc0 /* I would use the subnet here (like I said
|
route add freedom arc0 /* I would use the subnet here (like I said
|
||||||
to to in "single protocol" above),
|
to in "single protocol" above),
|
||||||
but the rest of the subnet
|
but the rest of the subnet
|
||||||
unfortunately lies across the PPP
|
unfortunately lies across the PPP
|
||||||
link on freedom, which confuses
|
link on freedom, which confuses
|
||||||
|
@@ -6,7 +6,7 @@ AX.25
|
|||||||
|
|
||||||
To use the amateur radio protocols within Linux you will need to get a
|
To use the amateur radio protocols within Linux you will need to get a
|
||||||
suitable copy of the AX.25 Utilities. More detailed information about
|
suitable copy of the AX.25 Utilities. More detailed information about
|
||||||
AX.25, NET/ROM and ROSE, associated programs and and utilities can be
|
AX.25, NET/ROM and ROSE, associated programs and utilities can be
|
||||||
found on http://www.linux-ax25.org.
|
found on http://www.linux-ax25.org.
|
||||||
|
|
||||||
There is an active mailing list for discussing Linux amateur radio matters
|
There is an active mailing list for discussing Linux amateur radio matters
|
||||||
|
@@ -26,7 +26,7 @@ Usage
|
|||||||
|
|
||||||
1) Device creation & deletion
|
1) Device creation & deletion
|
||||||
|
|
||||||
a) ip link add dev bareudp0 type bareudp dstport 6635 ethertype 0x8847.
|
a) ip link add dev bareudp0 type bareudp dstport 6635 ethertype mpls_uc
|
||||||
|
|
||||||
This creates a bareudp tunnel device which tunnels L3 traffic with ethertype
|
This creates a bareudp tunnel device which tunnels L3 traffic with ethertype
|
||||||
0x8847 (MPLS traffic). The destination port of the UDP header will be set to
|
0x8847 (MPLS traffic). The destination port of the UDP header will be set to
|
||||||
@@ -34,14 +34,21 @@ Usage
|
|||||||
|
|
||||||
b) ip link delete bareudp0
|
b) ip link delete bareudp0
|
||||||
|
|
||||||
2) Device creation with multiple proto mode enabled
|
2) Device creation with multiproto mode enabled
|
||||||
|
|
||||||
There are two ways to create a bareudp device for MPLS & IP with multiproto mode
|
The multiproto mode allows bareudp tunnels to handle several protocols of the
|
||||||
enabled.
|
same family. It is currently only available for IP and MPLS. This mode has to
|
||||||
|
be enabled explicitly with the "multiproto" flag.
|
||||||
|
|
||||||
a) ip link add dev bareudp0 type bareudp dstport 6635 ethertype 0x8847 multiproto
|
a) ip link add dev bareudp0 type bareudp dstport 6635 ethertype ipv4 multiproto
|
||||||
|
|
||||||
b) ip link add dev bareudp0 type bareudp dstport 6635 ethertype mpls
|
For an IPv4 tunnel the multiproto mode allows the tunnel to also handle
|
||||||
|
IPv6.
|
||||||
|
|
||||||
|
b) ip link add dev bareudp0 type bareudp dstport 6635 ethertype mpls_uc multiproto
|
||||||
|
|
||||||
|
For MPLS, the multiproto mode allows the tunnel to handle both unicast
|
||||||
|
and multicast MPLS packets.
|
||||||
|
|
||||||
3) Device Usage
|
3) Device Usage
|
||||||
|
|
||||||
|
@@ -144,7 +144,7 @@ UCAN_COMMAND_SET_BITTIMING
|
|||||||
|
|
||||||
*Host2Dev; mandatory*
|
*Host2Dev; mandatory*
|
||||||
|
|
||||||
Setup bittiming by sending the the structure
|
Setup bittiming by sending the structure
|
||||||
``ucan_ctl_payload_t.cmd_set_bittiming`` (see ``struct bittiming`` for
|
``ucan_ctl_payload_t.cmd_set_bittiming`` (see ``struct bittiming`` for
|
||||||
details)
|
details)
|
||||||
|
|
||||||
@@ -232,7 +232,7 @@ UCAN_IN_TX_COMPLETE
|
|||||||
zero
|
zero
|
||||||
|
|
||||||
The CAN device has sent a message to the CAN bus. It answers with a
|
The CAN device has sent a message to the CAN bus. It answers with a
|
||||||
list of of tuples <echo-ids, flags>.
|
list of tuples <echo-ids, flags>.
|
||||||
|
|
||||||
The echo-id identifies the frame from (echos the id from a previous
|
The echo-id identifies the frame from (echos the id from a previous
|
||||||
UCAN_OUT_TX message). The flag indicates the result of the
|
UCAN_OUT_TX message). The flag indicates the result of the
|
||||||
|
@@ -95,7 +95,7 @@ Ethernet switch.
|
|||||||
Networking stack hooks
|
Networking stack hooks
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
When a master netdev is used with DSA, a small hook is placed in in the
|
When a master netdev is used with DSA, a small hook is placed in the
|
||||||
networking stack is in order to have the DSA subsystem process the Ethernet
|
networking stack is in order to have the DSA subsystem process the Ethernet
|
||||||
switch specific tagging protocol. DSA accomplishes this by registering a
|
switch specific tagging protocol. DSA accomplishes this by registering a
|
||||||
specific (and fake) Ethernet type (later becoming ``skb->protocol``) with the
|
specific (and fake) Ethernet type (later becoming ``skb->protocol``) with the
|
||||||
|
@@ -741,7 +741,7 @@ tcp_fastopen - INTEGER
|
|||||||
|
|
||||||
Default: 0x1
|
Default: 0x1
|
||||||
|
|
||||||
Note that that additional client or server features are only
|
Note that additional client or server features are only
|
||||||
effective if the basic support (0x1 and 0x2) are enabled respectively.
|
effective if the basic support (0x1 and 0x2) are enabled respectively.
|
||||||
|
|
||||||
tcp_fastopen_blackhole_timeout_sec - INTEGER
|
tcp_fastopen_blackhole_timeout_sec - INTEGER
|
||||||
|
@@ -114,7 +114,7 @@ drop_entry - INTEGER
|
|||||||
modes (when there is no enough available memory, the strategy
|
modes (when there is no enough available memory, the strategy
|
||||||
is enabled and the variable is automatically set to 2,
|
is enabled and the variable is automatically set to 2,
|
||||||
otherwise the strategy is disabled and the variable is set to
|
otherwise the strategy is disabled and the variable is set to
|
||||||
1), and 3 means that that the strategy is always enabled.
|
1), and 3 means that the strategy is always enabled.
|
||||||
|
|
||||||
drop_packet - INTEGER
|
drop_packet - INTEGER
|
||||||
- 0 - disabled (default)
|
- 0 - disabled (default)
|
||||||
|
@@ -186,7 +186,7 @@ About the AF_RXRPC driver:
|
|||||||
time [tunable] after the last connection using it discarded, in case a new
|
time [tunable] after the last connection using it discarded, in case a new
|
||||||
connection is made that could use it.
|
connection is made that could use it.
|
||||||
|
|
||||||
(#) A client-side connection is only shared between calls if they have have
|
(#) A client-side connection is only shared between calls if they have
|
||||||
the same key struct describing their security (and assuming the calls
|
the same key struct describing their security (and assuming the calls
|
||||||
would otherwise share the connection). Non-secured calls would also be
|
would otherwise share the connection). Non-secured calls would also be
|
||||||
able to share connections with each other.
|
able to share connections with each other.
|
||||||
|
@@ -213,7 +213,7 @@ request buffers are not in memory. The operating system handles the fault by
|
|||||||
updating CSB with the following data:
|
updating CSB with the following data:
|
||||||
|
|
||||||
csb.flags = CSB_V;
|
csb.flags = CSB_V;
|
||||||
csb.cc = CSB_CC_TRANSLATION;
|
csb.cc = CSB_CC_FAULT_ADDRESS;
|
||||||
csb.ce = CSB_CE_TERMINATION;
|
csb.ce = CSB_CE_TERMINATION;
|
||||||
csb.address = fault_address;
|
csb.address = fault_address;
|
||||||
|
|
||||||
|
@@ -29,7 +29,7 @@ you probably needn't concern yourself with pcmciautils.
|
|||||||
====================== =============== ========================================
|
====================== =============== ========================================
|
||||||
Program Minimal version Command to check the version
|
Program Minimal version Command to check the version
|
||||||
====================== =============== ========================================
|
====================== =============== ========================================
|
||||||
GNU C 4.8 gcc --version
|
GNU C 4.9 gcc --version
|
||||||
GNU make 3.81 make --version
|
GNU make 3.81 make --version
|
||||||
binutils 2.23 ld -v
|
binutils 2.23 ld -v
|
||||||
flex 2.5.35 flex --version
|
flex 2.5.35 flex --version
|
||||||
|
@@ -319,6 +319,26 @@ If you are afraid to mix up your local variable names, you have another
|
|||||||
problem, which is called the function-growth-hormone-imbalance syndrome.
|
problem, which is called the function-growth-hormone-imbalance syndrome.
|
||||||
See chapter 6 (Functions).
|
See chapter 6 (Functions).
|
||||||
|
|
||||||
|
For symbol names and documentation, avoid introducing new usage of
|
||||||
|
'master / slave' (or 'slave' independent of 'master') and 'blacklist /
|
||||||
|
whitelist'.
|
||||||
|
|
||||||
|
Recommended replacements for 'master / slave' are:
|
||||||
|
'{primary,main} / {secondary,replica,subordinate}'
|
||||||
|
'{initiator,requester} / {target,responder}'
|
||||||
|
'{controller,host} / {device,worker,proxy}'
|
||||||
|
'leader / follower'
|
||||||
|
'director / performer'
|
||||||
|
|
||||||
|
Recommended replacements for 'blacklist/whitelist' are:
|
||||||
|
'denylist / allowlist'
|
||||||
|
'blocklist / passlist'
|
||||||
|
|
||||||
|
Exceptions for introducing new usage is to maintain a userspace ABI/API,
|
||||||
|
or when updating code for an existing (as of 2020) hardware or protocol
|
||||||
|
specification that mandates those terms. For new specifications
|
||||||
|
translate specification usage of the terminology to the kernel coding
|
||||||
|
standard where possible.
|
||||||
|
|
||||||
5) Typedefs
|
5) Typedefs
|
||||||
-----------
|
-----------
|
||||||
|
@@ -4339,14 +4339,15 @@ Errors:
|
|||||||
#define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
|
#define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
|
||||||
|
|
||||||
struct kvm_vmx_nested_state_hdr {
|
struct kvm_vmx_nested_state_hdr {
|
||||||
__u32 flags;
|
|
||||||
__u64 vmxon_pa;
|
__u64 vmxon_pa;
|
||||||
__u64 vmcs12_pa;
|
__u64 vmcs12_pa;
|
||||||
__u64 preemption_timer_deadline;
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
__u16 flags;
|
__u16 flags;
|
||||||
} smm;
|
} smm;
|
||||||
|
|
||||||
|
__u32 flags;
|
||||||
|
__u64 preemption_timer_deadline;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kvm_vmx_nested_state_data {
|
struct kvm_vmx_nested_state_data {
|
||||||
|
45
MAINTAINERS
45
MAINTAINERS
@@ -2929,6 +2929,7 @@ F: include/uapi/linux/atm*
|
|||||||
|
|
||||||
ATMEL MACB ETHERNET DRIVER
|
ATMEL MACB ETHERNET DRIVER
|
||||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
||||||
|
M: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/cadence/
|
F: drivers/net/ethernet/cadence/
|
||||||
|
|
||||||
@@ -3306,7 +3307,7 @@ X: arch/riscv/net/bpf_jit_comp32.c
|
|||||||
|
|
||||||
BPF JIT for S390
|
BPF JIT for S390
|
||||||
M: Ilya Leoshkevich <iii@linux.ibm.com>
|
M: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||||
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
M: Heiko Carstens <hca@linux.ibm.com>
|
||||||
M: Vasily Gorbik <gor@linux.ibm.com>
|
M: Vasily Gorbik <gor@linux.ibm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: bpf@vger.kernel.org
|
L: bpf@vger.kernel.org
|
||||||
@@ -3946,7 +3947,7 @@ L: linux-crypto@vger.kernel.org
|
|||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/char/hw_random/cctrng.c
|
F: drivers/char/hw_random/cctrng.c
|
||||||
F: drivers/char/hw_random/cctrng.h
|
F: drivers/char/hw_random/cctrng.h
|
||||||
F: Documentation/devicetree/bindings/rng/arm-cctrng.txt
|
F: Documentation/devicetree/bindings/rng/arm-cctrng.yaml
|
||||||
W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
|
W: https://developer.arm.com/products/system-ip/trustzone-cryptocell/cryptocell-700-family
|
||||||
|
|
||||||
CEC FRAMEWORK
|
CEC FRAMEWORK
|
||||||
@@ -5021,7 +5022,6 @@ F: drivers/mfd/da91??-*.c
|
|||||||
F: drivers/pinctrl/pinctrl-da90??.c
|
F: drivers/pinctrl/pinctrl-da90??.c
|
||||||
F: drivers/power/supply/da9052-battery.c
|
F: drivers/power/supply/da9052-battery.c
|
||||||
F: drivers/power/supply/da91??-*.c
|
F: drivers/power/supply/da91??-*.c
|
||||||
F: drivers/regulator/da903x.c
|
|
||||||
F: drivers/regulator/da9???-regulator.[ch]
|
F: drivers/regulator/da9???-regulator.[ch]
|
||||||
F: drivers/regulator/slg51000-regulator.[ch]
|
F: drivers/regulator/slg51000-regulator.[ch]
|
||||||
F: drivers/rtc/rtc-da90??.c
|
F: drivers/rtc/rtc-da90??.c
|
||||||
@@ -5111,7 +5111,7 @@ M: Vinod Koul <vkoul@kernel.org>
|
|||||||
L: dmaengine@vger.kernel.org
|
L: dmaengine@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
|
Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
|
||||||
T: git git://git.infradead.org/users/vkoul/slave-dma.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git
|
||||||
F: Documentation/devicetree/bindings/dma/
|
F: Documentation/devicetree/bindings/dma/
|
||||||
F: Documentation/driver-api/dmaengine/
|
F: Documentation/driver-api/dmaengine/
|
||||||
F: drivers/dma/
|
F: drivers/dma/
|
||||||
@@ -5490,7 +5490,7 @@ F: include/uapi/drm/r128_drm.h
|
|||||||
DRM DRIVER FOR RAYDIUM RM67191 PANELS
|
DRM DRIVER FOR RAYDIUM RM67191 PANELS
|
||||||
M: Robert Chiras <robert.chiras@nxp.com>
|
M: Robert Chiras <robert.chiras@nxp.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.txt
|
F: Documentation/devicetree/bindings/display/panel/raydium,rm67191.yaml
|
||||||
F: drivers/gpu/drm/panel/panel-raydium-rm67191.c
|
F: drivers/gpu/drm/panel/panel-raydium-rm67191.c
|
||||||
|
|
||||||
DRM DRIVER FOR ROCKTECH JH057N00900 PANELS
|
DRM DRIVER FOR ROCKTECH JH057N00900 PANELS
|
||||||
@@ -6956,6 +6956,7 @@ M: Timur Tabi <timur@kernel.org>
|
|||||||
M: Nicolin Chen <nicoleotsuka@gmail.com>
|
M: Nicolin Chen <nicoleotsuka@gmail.com>
|
||||||
M: Xiubo Li <Xiubo.Lee@gmail.com>
|
M: Xiubo Li <Xiubo.Lee@gmail.com>
|
||||||
R: Fabio Estevam <festevam@gmail.com>
|
R: Fabio Estevam <festevam@gmail.com>
|
||||||
|
R: Shengjiu Wang <shengjiu.wang@gmail.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
L: linuxppc-dev@lists.ozlabs.org
|
L: linuxppc-dev@lists.ozlabs.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -9305,6 +9306,17 @@ F: Documentation/kbuild/kconfig*
|
|||||||
F: scripts/Kconfig.include
|
F: scripts/Kconfig.include
|
||||||
F: scripts/kconfig/
|
F: scripts/kconfig/
|
||||||
|
|
||||||
|
KCOV
|
||||||
|
R: Dmitry Vyukov <dvyukov@google.com>
|
||||||
|
R: Andrey Konovalov <andreyknvl@google.com>
|
||||||
|
L: kasan-dev@googlegroups.com
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/dev-tools/kcov.rst
|
||||||
|
F: include/linux/kcov.h
|
||||||
|
F: include/uapi/linux/kcov.h
|
||||||
|
F: kernel/kcov.c
|
||||||
|
F: scripts/Makefile.kcov
|
||||||
|
|
||||||
KCSAN
|
KCSAN
|
||||||
M: Marco Elver <elver@google.com>
|
M: Marco Elver <elver@google.com>
|
||||||
R: Dmitry Vyukov <dvyukov@google.com>
|
R: Dmitry Vyukov <dvyukov@google.com>
|
||||||
@@ -11240,7 +11252,7 @@ S: Maintained
|
|||||||
F: drivers/crypto/atmel-ecc.*
|
F: drivers/crypto/atmel-ecc.*
|
||||||
|
|
||||||
MICROCHIP I2C DRIVER
|
MICROCHIP I2C DRIVER
|
||||||
M: Ludovic Desroches <ludovic.desroches@microchip.com>
|
M: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/i2c/busses/i2c-at91-*.c
|
F: drivers/i2c/busses/i2c-at91-*.c
|
||||||
@@ -11333,17 +11345,17 @@ F: drivers/iio/adc/at91-sama5d2_adc.c
|
|||||||
F: include/dt-bindings/iio/adc/at91-sama5d2_adc.h
|
F: include/dt-bindings/iio/adc/at91-sama5d2_adc.h
|
||||||
|
|
||||||
MICROCHIP SAMA5D2-COMPATIBLE SHUTDOWN CONTROLLER
|
MICROCHIP SAMA5D2-COMPATIBLE SHUTDOWN CONTROLLER
|
||||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
M: Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/power/reset/at91-sama5d2_shdwc.c
|
F: drivers/power/reset/at91-sama5d2_shdwc.c
|
||||||
|
|
||||||
MICROCHIP SPI DRIVER
|
MICROCHIP SPI DRIVER
|
||||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
M: Tudor Ambarus <tudor.ambarus@microchip.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/spi/spi-atmel.*
|
F: drivers/spi/spi-atmel.*
|
||||||
|
|
||||||
MICROCHIP SSC DRIVER
|
MICROCHIP SSC DRIVER
|
||||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
M: Codrin Ciubotariu <codrin.ciubotariu@microchip.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
|
||||||
F: drivers/misc/atmel-ssc.c
|
F: drivers/misc/atmel-ssc.c
|
||||||
@@ -14574,8 +14586,8 @@ RENESAS R-CAR THERMAL DRIVERS
|
|||||||
M: Niklas Söderlund <niklas.soderlund@ragnatech.se>
|
M: Niklas Söderlund <niklas.soderlund@ragnatech.se>
|
||||||
L: linux-renesas-soc@vger.kernel.org
|
L: linux-renesas-soc@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.txt
|
F: Documentation/devicetree/bindings/thermal/rcar-gen3-thermal.yaml
|
||||||
F: Documentation/devicetree/bindings/thermal/rcar-thermal.txt
|
F: Documentation/devicetree/bindings/thermal/rcar-thermal.yaml
|
||||||
F: drivers/thermal/rcar_gen3_thermal.c
|
F: drivers/thermal/rcar_gen3_thermal.c
|
||||||
F: drivers/thermal/rcar_thermal.c
|
F: drivers/thermal/rcar_thermal.c
|
||||||
|
|
||||||
@@ -14831,7 +14843,7 @@ S: Maintained
|
|||||||
F: drivers/video/fbdev/savage/
|
F: drivers/video/fbdev/savage/
|
||||||
|
|
||||||
S390
|
S390
|
||||||
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
M: Heiko Carstens <hca@linux.ibm.com>
|
||||||
M: Vasily Gorbik <gor@linux.ibm.com>
|
M: Vasily Gorbik <gor@linux.ibm.com>
|
||||||
M: Christian Borntraeger <borntraeger@de.ibm.com>
|
M: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
@@ -14862,7 +14874,8 @@ F: drivers/s390/block/dasd*
|
|||||||
F: include/linux/dasd_mod.h
|
F: include/linux/dasd_mod.h
|
||||||
|
|
||||||
S390 IOMMU (PCI)
|
S390 IOMMU (PCI)
|
||||||
M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
M: Matthew Rosato <mjrosato@linux.ibm.com>
|
||||||
|
M: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
@@ -14890,7 +14903,7 @@ F: drivers/s390/net/
|
|||||||
|
|
||||||
S390 PCI SUBSYSTEM
|
S390 PCI SUBSYSTEM
|
||||||
M: Niklas Schnelle <schnelle@linux.ibm.com>
|
M: Niklas Schnelle <schnelle@linux.ibm.com>
|
||||||
M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
|
M: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
@@ -17513,7 +17526,7 @@ F: Documentation/admin-guide/ufs.rst
|
|||||||
F: fs/ufs/
|
F: fs/ufs/
|
||||||
|
|
||||||
UHID USERSPACE HID IO DRIVER
|
UHID USERSPACE HID IO DRIVER
|
||||||
M: David Herrmann <dh.herrmann@googlemail.com>
|
M: David Rheinsberg <david.rheinsberg@gmail.com>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hid/uhid.c
|
F: drivers/hid/uhid.c
|
||||||
@@ -18472,7 +18485,7 @@ S: Maintained
|
|||||||
F: drivers/rtc/rtc-sd3078.c
|
F: drivers/rtc/rtc-sd3078.c
|
||||||
|
|
||||||
WIIMOTE HID DRIVER
|
WIIMOTE HID DRIVER
|
||||||
M: David Herrmann <dh.herrmann@googlemail.com>
|
M: David Rheinsberg <david.rheinsberg@gmail.com>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hid/hid-wiimote*
|
F: drivers/hid/hid-wiimote*
|
||||||
|
10
Makefile
10
Makefile
@@ -2,7 +2,7 @@
|
|||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 8
|
PATCHLEVEL = 8
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION = -rc7
|
||||||
NAME = Kleptomaniac Octopus
|
NAME = Kleptomaniac Octopus
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@@ -567,7 +567,7 @@ ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),)
|
|||||||
ifneq ($(CROSS_COMPILE),)
|
ifneq ($(CROSS_COMPILE),)
|
||||||
CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
|
CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
|
||||||
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
|
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
|
||||||
CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)
|
CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
|
||||||
GCC_TOOLCHAIN := $(realpath $(GCC_TOOLCHAIN_DIR)/..)
|
GCC_TOOLCHAIN := $(realpath $(GCC_TOOLCHAIN_DIR)/..)
|
||||||
endif
|
endif
|
||||||
ifneq ($(GCC_TOOLCHAIN),)
|
ifneq ($(GCC_TOOLCHAIN),)
|
||||||
@@ -970,8 +970,8 @@ LDFLAGS_vmlinux += --pack-dyn-relocs=relr
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# Align the bit size of userspace programs with the kernel
|
# Align the bit size of userspace programs with the kernel
|
||||||
KBUILD_USERCFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||||
KBUILD_USERLDFLAGS += $(filter -m32 -m64, $(KBUILD_CFLAGS))
|
KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||||
|
|
||||||
# make the checker run with the right architecture
|
# make the checker run with the right architecture
|
||||||
CHECKFLAGS += --arch=$(ARCH)
|
CHECKFLAGS += --arch=$(ARCH)
|
||||||
@@ -1754,7 +1754,7 @@ PHONY += descend $(build-dirs)
|
|||||||
descend: $(build-dirs)
|
descend: $(build-dirs)
|
||||||
$(build-dirs): prepare
|
$(build-dirs): prepare
|
||||||
$(Q)$(MAKE) $(build)=$@ \
|
$(Q)$(MAKE) $(build)=$@ \
|
||||||
single-build=$(if $(filter-out $@/, $(filter $@/%, $(single-no-ko))),1) \
|
single-build=$(if $(filter-out $@/, $(filter $@/%, $(KBUILD_SINGLE_TARGETS))),1) \
|
||||||
need-builtin=1 need-modorder=1
|
need-builtin=1 need-modorder=1
|
||||||
|
|
||||||
clean-dirs := $(addprefix _clean_, $(clean-dirs))
|
clean-dirs := $(addprefix _clean_, $(clean-dirs))
|
||||||
|
@@ -170,6 +170,15 @@ config ARC_CPU_HS
|
|||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
config ARC_TUNE_MCPU
|
||||||
|
string "Override default -mcpu compiler flag"
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
Override default -mcpu=xxx compiler flag (which is set depending on
|
||||||
|
the ISA version) with the specified value.
|
||||||
|
NOTE: If specified flag isn't supported by current compiler the
|
||||||
|
ISA default value will be used as a fallback.
|
||||||
|
|
||||||
config CPU_BIG_ENDIAN
|
config CPU_BIG_ENDIAN
|
||||||
bool "Enable Big Endian Mode"
|
bool "Enable Big Endian Mode"
|
||||||
help
|
help
|
||||||
@@ -465,6 +474,12 @@ config ARC_IRQ_NO_AUTOSAVE
|
|||||||
This is programmable and can be optionally disabled in which case
|
This is programmable and can be optionally disabled in which case
|
||||||
software INTERRUPT_PROLOGUE/EPILGUE do the needed work
|
software INTERRUPT_PROLOGUE/EPILGUE do the needed work
|
||||||
|
|
||||||
|
config ARC_LPB_DISABLE
|
||||||
|
bool "Disable loop buffer (LPB)"
|
||||||
|
help
|
||||||
|
On HS cores, loop buffer (LPB) is programmable in runtime and can
|
||||||
|
be optionally disabled.
|
||||||
|
|
||||||
endif # ISA_ARCV2
|
endif # ISA_ARCV2
|
||||||
|
|
||||||
endmenu # "ARC CPU Configuration"
|
endmenu # "ARC CPU Configuration"
|
||||||
|
@@ -10,8 +10,25 @@ CROSS_COMPILE := $(call cc-cross-prefix, arc-linux- arceb-linux-)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
|
cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
|
||||||
cflags-$(CONFIG_ISA_ARCOMPACT) += -mA7
|
|
||||||
cflags-$(CONFIG_ISA_ARCV2) += -mcpu=hs38
|
tune-mcpu-def-$(CONFIG_ISA_ARCOMPACT) := -mcpu=arc700
|
||||||
|
tune-mcpu-def-$(CONFIG_ISA_ARCV2) := -mcpu=hs38
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARC_TUNE_MCPU),"")
|
||||||
|
cflags-y += $(tune-mcpu-def-y)
|
||||||
|
else
|
||||||
|
tune-mcpu := $(shell echo $(CONFIG_ARC_TUNE_MCPU))
|
||||||
|
tune-mcpu-ok := $(call cc-option-yn, $(tune-mcpu))
|
||||||
|
ifeq ($(tune-mcpu-ok),y)
|
||||||
|
cflags-y += $(tune-mcpu)
|
||||||
|
else
|
||||||
|
# The flag provided by 'CONFIG_ARC_TUNE_MCPU' option isn't known by this compiler
|
||||||
|
# (probably the compiler is too old). Use ISA default mcpu flag instead as a safe option.
|
||||||
|
$(warning ** WARNING ** CONFIG_ARC_TUNE_MCPU flag '$(tune-mcpu)' is unknown, fallback to '$(tune-mcpu-def-y)')
|
||||||
|
cflags-y += $(tune-mcpu-def-y)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
ifdef CONFIG_ARC_CURR_IN_REG
|
ifdef CONFIG_ARC_CURR_IN_REG
|
||||||
# For a global register defintion, make sure it gets passed to every file
|
# For a global register defintion, make sure it gets passed to every file
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
#define R_ARC_32_PCREL 0x31
|
#define R_ARC_32_PCREL 0x31
|
||||||
|
|
||||||
/*to set parameters in the core dumps */
|
/*to set parameters in the core dumps */
|
||||||
#define ELF_ARCH EM_ARCOMPACT
|
#define ELF_ARCH EM_ARC_INUSE
|
||||||
#define ELF_CLASS ELFCLASS32
|
#define ELF_CLASS ELFCLASS32
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
|
@@ -90,6 +90,9 @@ static inline void arch_local_irq_restore(unsigned long flags)
|
|||||||
/*
|
/*
|
||||||
* Unconditionally Enable IRQs
|
* Unconditionally Enable IRQs
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_ARC_COMPACT_IRQ_LEVELS
|
||||||
|
extern void arch_local_irq_enable(void);
|
||||||
|
#else
|
||||||
static inline void arch_local_irq_enable(void)
|
static inline void arch_local_irq_enable(void)
|
||||||
{
|
{
|
||||||
unsigned long temp;
|
unsigned long temp;
|
||||||
@@ -102,7 +105,7 @@ static inline void arch_local_irq_enable(void)
|
|||||||
: "n"((STATUS_E1_MASK | STATUS_E2_MASK))
|
: "n"((STATUS_E1_MASK | STATUS_E2_MASK))
|
||||||
: "cc", "memory");
|
: "cc", "memory");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unconditionally Disable IRQs
|
* Unconditionally Disable IRQs
|
||||||
|
@@ -165,7 +165,6 @@ END(EV_Extension)
|
|||||||
tracesys:
|
tracesys:
|
||||||
; save EFA in case tracer wants the PC of traced task
|
; save EFA in case tracer wants the PC of traced task
|
||||||
; using ERET won't work since next-PC has already committed
|
; using ERET won't work since next-PC has already committed
|
||||||
lr r12, [efa]
|
|
||||||
GET_CURR_TASK_FIELD_PTR TASK_THREAD, r11
|
GET_CURR_TASK_FIELD_PTR TASK_THREAD, r11
|
||||||
st r12, [r11, THREAD_FAULT_ADDR] ; thread.fault_address
|
st r12, [r11, THREAD_FAULT_ADDR] ; thread.fault_address
|
||||||
|
|
||||||
@@ -208,15 +207,9 @@ tracesys_exit:
|
|||||||
; Breakpoint TRAP
|
; Breakpoint TRAP
|
||||||
; ---------------------------------------------
|
; ---------------------------------------------
|
||||||
trap_with_param:
|
trap_with_param:
|
||||||
|
mov r0, r12 ; EFA in case ptracer/gdb wants stop_pc
|
||||||
; stop_pc info by gdb needs this info
|
|
||||||
lr r0, [efa]
|
|
||||||
mov r1, sp
|
mov r1, sp
|
||||||
|
|
||||||
; Now that we have read EFA, it is safe to do "fake" rtie
|
|
||||||
; and get out of CPU exception mode
|
|
||||||
FAKE_RET_FROM_EXCPN
|
|
||||||
|
|
||||||
; Save callee regs in case gdb wants to have a look
|
; Save callee regs in case gdb wants to have a look
|
||||||
; SP will grow up by size of CALLEE Reg-File
|
; SP will grow up by size of CALLEE Reg-File
|
||||||
; NOTE: clobbers r12
|
; NOTE: clobbers r12
|
||||||
@@ -243,6 +236,10 @@ ENTRY(EV_Trap)
|
|||||||
|
|
||||||
EXCEPTION_PROLOGUE
|
EXCEPTION_PROLOGUE
|
||||||
|
|
||||||
|
lr r12, [efa]
|
||||||
|
|
||||||
|
FAKE_RET_FROM_EXCPN
|
||||||
|
|
||||||
;============ TRAP 1 :breakpoints
|
;============ TRAP 1 :breakpoints
|
||||||
; Check ECR for trap with arg (PROLOGUE ensures r10 has ECR)
|
; Check ECR for trap with arg (PROLOGUE ensures r10 has ECR)
|
||||||
bmsk.f 0, r10, 7
|
bmsk.f 0, r10, 7
|
||||||
@@ -250,9 +247,6 @@ ENTRY(EV_Trap)
|
|||||||
|
|
||||||
;============ TRAP (no param): syscall top level
|
;============ TRAP (no param): syscall top level
|
||||||
|
|
||||||
; First return from Exception to pure K mode (Exception/IRQs renabled)
|
|
||||||
FAKE_RET_FROM_EXCPN
|
|
||||||
|
|
||||||
; If syscall tracing ongoing, invoke pre-post-hooks
|
; If syscall tracing ongoing, invoke pre-post-hooks
|
||||||
GET_CURR_THR_INFO_FLAGS r10
|
GET_CURR_THR_INFO_FLAGS r10
|
||||||
btst r10, TIF_SYSCALL_TRACE
|
btst r10, TIF_SYSCALL_TRACE
|
||||||
|
@@ -59,6 +59,14 @@
|
|||||||
bclr r5, r5, STATUS_AD_BIT
|
bclr r5, r5, STATUS_AD_BIT
|
||||||
#endif
|
#endif
|
||||||
kflag r5
|
kflag r5
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARC_LPB_DISABLE
|
||||||
|
lr r5, [ARC_REG_LPB_BUILD]
|
||||||
|
breq r5, 0, 1f ; LPB doesn't exist
|
||||||
|
mov r5, 1
|
||||||
|
sr r5, [ARC_REG_LPB_CTRL]
|
||||||
|
1:
|
||||||
|
#endif /* CONFIG_ARC_LPB_DISABLE */
|
||||||
#endif
|
#endif
|
||||||
; Config DSP_CTRL properly, so kernel may use integer multiply,
|
; Config DSP_CTRL properly, so kernel may use integer multiply,
|
||||||
; multiply-accumulate, and divide operations
|
; multiply-accumulate, and divide operations
|
||||||
|
@@ -58,10 +58,12 @@ static const struct id_to_str arc_legacy_rel[] = {
|
|||||||
{ 0x00, NULL }
|
{ 0x00, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct id_to_str arc_cpu_rel[] = {
|
static const struct id_to_str arc_hs_ver54_rel[] = {
|
||||||
/* UARCH.MAJOR, Release */
|
/* UARCH.MAJOR, Release */
|
||||||
{ 0, "R3.10a"},
|
{ 0, "R3.10a"},
|
||||||
{ 1, "R3.50a"},
|
{ 1, "R3.50a"},
|
||||||
|
{ 2, "R3.60a"},
|
||||||
|
{ 3, "R4.00a"},
|
||||||
{ 0xFF, NULL }
|
{ 0xFF, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -117,12 +119,6 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
|
|||||||
struct bcr_uarch_build_arcv2 uarch;
|
struct bcr_uarch_build_arcv2 uarch;
|
||||||
const struct id_to_str *tbl;
|
const struct id_to_str *tbl;
|
||||||
|
|
||||||
/*
|
|
||||||
* Up until (including) the first core4 release (0x54) things were
|
|
||||||
* simple: AUX IDENTITY.ARCVER was sufficient to identify arc family
|
|
||||||
* and release: 0x50 to 0x53 was HS38, 0x54 was HS48 (dual issue)
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (cpu->core.family < 0x54) { /* includes arc700 */
|
if (cpu->core.family < 0x54) { /* includes arc700 */
|
||||||
|
|
||||||
for (tbl = &arc_legacy_rel[0]; tbl->id != 0; tbl++) {
|
for (tbl = &arc_legacy_rel[0]; tbl->id != 0; tbl++) {
|
||||||
@@ -143,11 +139,10 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* However the subsequent HS release (same 0x54) allow HS38 or HS48
|
* Initial HS cores bumped AUX IDENTITY.ARCVER for each release until
|
||||||
* configurations and encode this info in a different BCR.
|
* ARCVER 0x54 which introduced AUX MICRO_ARCH_BUILD and subsequent
|
||||||
* The BCR was introduced in 0x54 so can't be read unconditionally.
|
* releases only update it.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
READ_BCR(ARC_REG_MICRO_ARCH_BCR, uarch);
|
READ_BCR(ARC_REG_MICRO_ARCH_BCR, uarch);
|
||||||
|
|
||||||
if (uarch.prod == 4) {
|
if (uarch.prod == 4) {
|
||||||
@@ -158,7 +153,7 @@ static void decode_arc_core(struct cpuinfo_arc *cpu)
|
|||||||
cpu->name = "HS38";
|
cpu->name = "HS38";
|
||||||
}
|
}
|
||||||
|
|
||||||
for (tbl = &arc_cpu_rel[0]; tbl->id != 0xFF; tbl++) {
|
for (tbl = &arc_hs_ver54_rel[0]; tbl->id != 0xFF; tbl++) {
|
||||||
if (uarch.maj == tbl->id) {
|
if (uarch.maj == tbl->id) {
|
||||||
cpu->release = tbl->str;
|
cpu->release = tbl->str;
|
||||||
break;
|
break;
|
||||||
|
@@ -1540,8 +1540,9 @@
|
|||||||
reg = <0xcc020 0x4>;
|
reg = <0xcc020 0x4>;
|
||||||
reg-names = "rev";
|
reg-names = "rev";
|
||||||
/* Domains (P, C): per_pwrdm, l4ls_clkdm */
|
/* Domains (P, C): per_pwrdm, l4ls_clkdm */
|
||||||
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
|
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>,
|
||||||
clock-names = "fck";
|
<&dcan0_fck>;
|
||||||
|
clock-names = "fck", "osc";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges = <0x0 0xcc000 0x2000>;
|
ranges = <0x0 0xcc000 0x2000>;
|
||||||
@@ -1549,6 +1550,8 @@
|
|||||||
dcan0: can@0 {
|
dcan0: can@0 {
|
||||||
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
||||||
reg = <0x0 0x2000>;
|
reg = <0x0 0x2000>;
|
||||||
|
clocks = <&dcan0_fck>;
|
||||||
|
clock-names = "fck";
|
||||||
syscon-raminit = <&scm_conf 0x644 0>;
|
syscon-raminit = <&scm_conf 0x644 0>;
|
||||||
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@@ -1560,8 +1563,9 @@
|
|||||||
reg = <0xd0020 0x4>;
|
reg = <0xd0020 0x4>;
|
||||||
reg-names = "rev";
|
reg-names = "rev";
|
||||||
/* Domains (P, C): per_pwrdm, l4ls_clkdm */
|
/* Domains (P, C): per_pwrdm, l4ls_clkdm */
|
||||||
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;
|
clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>,
|
||||||
clock-names = "fck";
|
<&dcan1_fck>;
|
||||||
|
clock-names = "fck", "osc";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges = <0x0 0xd0000 0x2000>;
|
ranges = <0x0 0xd0000 0x2000>;
|
||||||
@@ -1569,6 +1573,8 @@
|
|||||||
dcan1: can@0 {
|
dcan1: can@0 {
|
||||||
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
||||||
reg = <0x0 0x2000>;
|
reg = <0x0 0x2000>;
|
||||||
|
clocks = <&dcan1_fck>;
|
||||||
|
clock-name = "fck";
|
||||||
syscon-raminit = <&scm_conf 0x644 1>;
|
syscon-raminit = <&scm_conf 0x644 1>;
|
||||||
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@@ -110,7 +110,7 @@
|
|||||||
simple-audio-card,frame-master = <&sound_codec>;
|
simple-audio-card,frame-master = <&sound_codec>;
|
||||||
|
|
||||||
sound_cpu: simple-audio-card,cpu {
|
sound_cpu: simple-audio-card,cpu {
|
||||||
sound-dai = <&ssi2>;
|
sound-dai = <&ssi1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sound_codec: simple-audio-card,codec {
|
sound_codec: simple-audio-card,codec {
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
|
|
||||||
L2: l2-cache-controller@c4200000 {
|
L2: cache-controller@c4200000 {
|
||||||
compatible = "arm,pl310-cache";
|
compatible = "arm,pl310-cache";
|
||||||
reg = <0xc4200000 0x1000>;
|
reg = <0xc4200000 0x1000>;
|
||||||
cache-unified;
|
cache-unified;
|
||||||
|
@@ -105,6 +105,14 @@
|
|||||||
linux,code = <SW_FRONT_PROXIMITY>;
|
linux,code = <SW_FRONT_PROXIMITY>;
|
||||||
linux,can-disable;
|
linux,can-disable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
machine_cover {
|
||||||
|
label = "Machine Cover";
|
||||||
|
gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
|
||||||
|
linux,input-type = <EV_SW>;
|
||||||
|
linux,code = <SW_MACHINE_COVER>;
|
||||||
|
linux,can-disable;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
isp1707: isp1707 {
|
isp1707: isp1707 {
|
||||||
@@ -819,10 +827,6 @@
|
|||||||
pinctrl-0 = <&mmc1_pins>;
|
pinctrl-0 = <&mmc1_pins>;
|
||||||
vmmc-supply = <&vmmc1>;
|
vmmc-supply = <&vmmc1>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
/* For debugging, it is often good idea to remove this GPIO.
|
|
||||||
It means you can remove back cover (to reboot by removing
|
|
||||||
battery) and still use the MMC card. */
|
|
||||||
cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* most boards use vaux3, only some old versions use vmmc2 instead */
|
/* most boards use vaux3, only some old versions use vmmc2 instead */
|
||||||
|
@@ -726,7 +726,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
L2: l2-cache@fffef000 {
|
L2: cache-controller@fffef000 {
|
||||||
compatible = "arm,pl310-cache";
|
compatible = "arm,pl310-cache";
|
||||||
reg = <0xfffef000 0x1000>;
|
reg = <0xfffef000 0x1000>;
|
||||||
interrupts = <0 38 0x04>;
|
interrupts = <0 38 0x04>;
|
||||||
|
@@ -636,7 +636,7 @@
|
|||||||
reg = <0xffcfb100 0x80>;
|
reg = <0xffcfb100 0x80>;
|
||||||
};
|
};
|
||||||
|
|
||||||
L2: l2-cache@fffff000 {
|
L2: cache-controller@fffff000 {
|
||||||
compatible = "arm,pl310-cache";
|
compatible = "arm,pl310-cache";
|
||||||
reg = <0xfffff000 0x1000>;
|
reg = <0xfffff000 0x1000>;
|
||||||
interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@@ -31,15 +31,6 @@
|
|||||||
#if defined(__APCS_26__)
|
#if defined(__APCS_26__)
|
||||||
#error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32
|
#error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
* GCC 4.8.0-4.8.2: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
|
|
||||||
* miscompiles find_get_entry(), and can result in EXT3 and EXT4
|
|
||||||
* filesystem corruption (possibly other FS too).
|
|
||||||
*/
|
|
||||||
#if defined(GCC_VERSION) && GCC_VERSION >= 40800 && GCC_VERSION < 40803
|
|
||||||
#error Your compiler is too buggy; it is known to miscompile kernels
|
|
||||||
#error and result in filesystem corruption and oopses.
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
@@ -289,6 +289,6 @@ struct platform_device *__init imx_add_spi_imx(
|
|||||||
const struct spi_imx_master *pdata);
|
const struct spi_imx_master *pdata);
|
||||||
|
|
||||||
struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase,
|
struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase,
|
||||||
int irq, int irq_err);
|
int irq);
|
||||||
struct platform_device *imx_add_imx_sdma(char *name,
|
struct platform_device *imx_add_imx_sdma(char *name,
|
||||||
resource_size_t iobase, int irq, struct sdma_platform_data *pdata);
|
resource_size_t iobase, int irq, struct sdma_platform_data *pdata);
|
||||||
|
@@ -24,7 +24,8 @@ struct platform_device *__init mxc_register_gpio(char *name, int id,
|
|||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
unsigned int nres;
|
||||||
|
|
||||||
return platform_device_register_resndata(&mxc_aips_bus,
|
nres = irq_high ? ARRAY_SIZE(res) : ARRAY_SIZE(res) - 1;
|
||||||
name, id, res, ARRAY_SIZE(res), NULL, 0);
|
return platform_device_register_resndata(&mxc_aips_bus, name, id, res, nres, NULL, 0);
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
#include "devices-common.h"
|
#include "devices-common.h"
|
||||||
|
|
||||||
struct platform_device __init __maybe_unused *imx_add_imx_dma(char *name,
|
struct platform_device __init __maybe_unused *imx_add_imx_dma(char *name,
|
||||||
resource_size_t iobase, int irq, int irq_err)
|
resource_size_t iobase, int irq)
|
||||||
{
|
{
|
||||||
struct resource res[] = {
|
struct resource res[] = {
|
||||||
{
|
{
|
||||||
@@ -17,10 +17,6 @@ struct platform_device __init __maybe_unused *imx_add_imx_dma(char *name,
|
|||||||
.start = irq,
|
.start = irq,
|
||||||
.end = irq,
|
.end = irq,
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
}, {
|
|
||||||
.start = irq_err,
|
|
||||||
.end = irq_err,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -78,8 +78,7 @@ void __init imx21_soc_init(void)
|
|||||||
mxc_register_gpio("imx21-gpio", 5, MX21_GPIO6_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
|
mxc_register_gpio("imx21-gpio", 5, MX21_GPIO6_BASE_ADDR, SZ_256, MX21_INT_GPIO, 0);
|
||||||
|
|
||||||
pinctrl_provide_dummies();
|
pinctrl_provide_dummies();
|
||||||
imx_add_imx_dma("imx21-dma", MX21_DMA_BASE_ADDR,
|
imx_add_imx_dma("imx21-dma", MX21_DMA_BASE_ADDR, MX21_INT_DMACH0);
|
||||||
MX21_INT_DMACH0, 0); /* No ERR irq */
|
|
||||||
platform_device_register_simple("imx21-audmux", 0, imx21_audmux_res,
|
platform_device_register_simple("imx21-audmux", 0, imx21_audmux_res,
|
||||||
ARRAY_SIZE(imx21_audmux_res));
|
ARRAY_SIZE(imx21_audmux_res));
|
||||||
}
|
}
|
||||||
|
@@ -79,8 +79,7 @@ void __init imx27_soc_init(void)
|
|||||||
mxc_register_gpio("imx21-gpio", 5, MX27_GPIO6_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0);
|
mxc_register_gpio("imx21-gpio", 5, MX27_GPIO6_BASE_ADDR, SZ_256, MX27_INT_GPIO, 0);
|
||||||
|
|
||||||
pinctrl_provide_dummies();
|
pinctrl_provide_dummies();
|
||||||
imx_add_imx_dma("imx27-dma", MX27_DMA_BASE_ADDR,
|
imx_add_imx_dma("imx27-dma", MX27_DMA_BASE_ADDR, MX27_INT_DMACH0);
|
||||||
MX27_INT_DMACH0, 0); /* No ERR irq */
|
|
||||||
/* imx27 has the imx21 type audmux */
|
/* imx27 has the imx21 type audmux */
|
||||||
platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res,
|
platform_device_register_simple("imx21-audmux", 0, imx27_audmux_res,
|
||||||
ARRAY_SIZE(imx27_audmux_res));
|
ARRAY_SIZE(imx27_audmux_res));
|
||||||
|
@@ -3435,7 +3435,7 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
|
|||||||
regs = ioremap(data->module_pa,
|
regs = ioremap(data->module_pa,
|
||||||
data->module_size);
|
data->module_size);
|
||||||
if (!regs)
|
if (!regs)
|
||||||
return -ENOMEM;
|
goto out_free_sysc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -3445,13 +3445,13 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
|
|||||||
if (oh->class->name && strcmp(oh->class->name, data->name)) {
|
if (oh->class->name && strcmp(oh->class->name, data->name)) {
|
||||||
class = kmemdup(oh->class, sizeof(*oh->class), GFP_KERNEL);
|
class = kmemdup(oh->class, sizeof(*oh->class), GFP_KERNEL);
|
||||||
if (!class)
|
if (!class)
|
||||||
return -ENOMEM;
|
goto out_unmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list_empty(&oh->slave_ports)) {
|
if (list_empty(&oh->slave_ports)) {
|
||||||
oi = kcalloc(1, sizeof(*oi), GFP_KERNEL);
|
oi = kcalloc(1, sizeof(*oi), GFP_KERNEL);
|
||||||
if (!oi)
|
if (!oi)
|
||||||
return -ENOMEM;
|
goto out_free_class;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note that we assume interconnect interface clocks will be
|
* Note that we assume interconnect interface clocks will be
|
||||||
@@ -3478,6 +3478,14 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
|
|||||||
spin_unlock_irqrestore(&oh->_lock, flags);
|
spin_unlock_irqrestore(&oh->_lock, flags);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
out_free_class:
|
||||||
|
kfree(class);
|
||||||
|
out_unmap:
|
||||||
|
iounmap(regs);
|
||||||
|
out_free_sysc:
|
||||||
|
kfree(sysc);
|
||||||
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct omap_hwmod_reset omap24xx_reset_quirks[] = {
|
static const struct omap_hwmod_reset omap24xx_reset_quirks[] = {
|
||||||
|
@@ -241,7 +241,6 @@ static int __init fdt_find_hyper_node(unsigned long node, const char *uname,
|
|||||||
* see Documentation/devicetree/bindings/arm/xen.txt for the
|
* see Documentation/devicetree/bindings/arm/xen.txt for the
|
||||||
* documentation of the Xen Device Tree format.
|
* documentation of the Xen Device Tree format.
|
||||||
*/
|
*/
|
||||||
#define GRANT_TABLE_PHYSADDR 0
|
|
||||||
void __init xen_early_init(void)
|
void __init xen_early_init(void)
|
||||||
{
|
{
|
||||||
of_scan_flat_dt(fdt_find_hyper_node, NULL);
|
of_scan_flat_dt(fdt_find_hyper_node, NULL);
|
||||||
|
@@ -137,7 +137,7 @@ export TEXT_OFFSET
|
|||||||
|
|
||||||
core-y += arch/arm64/
|
core-y += arch/arm64/
|
||||||
libs-y := arch/arm64/lib/ $(libs-y)
|
libs-y := arch/arm64/lib/ $(libs-y)
|
||||||
core-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
||||||
|
|
||||||
# Default target when executing plain make
|
# Default target when executing plain make
|
||||||
boot := arch/arm64/boot
|
boot := arch/arm64/boot
|
||||||
|
@@ -77,7 +77,7 @@
|
|||||||
method = "smc";
|
method = "smc";
|
||||||
};
|
};
|
||||||
|
|
||||||
intc: intc@fffc1000 {
|
intc: interrupt-controller@fffc1000 {
|
||||||
compatible = "arm,gic-400", "arm,cortex-a15-gic";
|
compatible = "arm,gic-400", "arm,cortex-a15-gic";
|
||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
@@ -302,7 +302,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
nand: nand@ffb90000 {
|
nand: nand-controller@ffb90000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
compatible = "altr,socfpga-denali-nand";
|
compatible = "altr,socfpga-denali-nand";
|
||||||
@@ -445,7 +445,7 @@
|
|||||||
clock-names = "timer";
|
clock-names = "timer";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart0: serial0@ffc02000 {
|
uart0: serial@ffc02000 {
|
||||||
compatible = "snps,dw-apb-uart";
|
compatible = "snps,dw-apb-uart";
|
||||||
reg = <0xffc02000 0x100>;
|
reg = <0xffc02000 0x100>;
|
||||||
interrupts = <0 108 4>;
|
interrupts = <0 108 4>;
|
||||||
@@ -456,7 +456,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
uart1: serial1@ffc02100 {
|
uart1: serial@ffc02100 {
|
||||||
compatible = "snps,dw-apb-uart";
|
compatible = "snps,dw-apb-uart";
|
||||||
reg = <0xffc02100 0x100>;
|
reg = <0xffc02100 0x100>;
|
||||||
interrupts = <0 109 4>;
|
interrupts = <0 109 4>;
|
||||||
|
@@ -155,6 +155,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&qspi {
|
&qspi {
|
||||||
|
status = "okay";
|
||||||
flash@0 {
|
flash@0 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
@@ -188,6 +188,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&qspi {
|
&qspi {
|
||||||
|
status = "okay";
|
||||||
flash@0 {
|
flash@0 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@@ -211,12 +212,12 @@
|
|||||||
|
|
||||||
qspi_boot: partition@0 {
|
qspi_boot: partition@0 {
|
||||||
label = "Boot and fpga data";
|
label = "Boot and fpga data";
|
||||||
reg = <0x0 0x034B0000>;
|
reg = <0x0 0x03FE0000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
qspi_rootfs: partition@4000000 {
|
qspi_rootfs: partition@3FE0000 {
|
||||||
label = "Root Filesystem - JFFS2";
|
label = "Root Filesystem - JFFS2";
|
||||||
reg = <0x034B0000 0x0EB50000>;
|
reg = <0x03FE0000 0x0C020000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
#include <dt-bindings/sound/meson-aiu.h>
|
#include <dt-bindings/sound/meson-aiu.h>
|
||||||
|
|
||||||
#include "meson-gxl-s905x.dtsi"
|
#include "meson-gxl-s805x.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "libretech,aml-s805x-ac", "amlogic,s805x",
|
compatible = "libretech,aml-s805x-ac", "amlogic,s805x",
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
|
|
||||||
#include "meson-gxl-s905x.dtsi"
|
#include "meson-gxl-s805x.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "amlogic,p241", "amlogic,s805x", "amlogic,meson-gxl";
|
compatible = "amlogic,p241", "amlogic,s805x", "amlogic,meson-gxl";
|
||||||
|
24
arch/arm64/boot/dts/amlogic/meson-gxl-s805x.dtsi
Normal file
24
arch/arm64/boot/dts/amlogic/meson-gxl-s805x.dtsi
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2020 BayLibre SAS
|
||||||
|
* Author: Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "meson-gxl-s905x.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "amlogic,s805x", "amlogic,meson-gxl";
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The S805X Package doesn't seem to handle the 744MHz OPP correctly */
|
||||||
|
&mali {
|
||||||
|
assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
|
||||||
|
<&clkc CLKID_MALI_0>,
|
||||||
|
<&clkc CLKID_MALI>; /* Glitch free mux */
|
||||||
|
assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
|
||||||
|
<0>, /* Do Nothing */
|
||||||
|
<&clkc CLKID_MALI_0>;
|
||||||
|
assigned-clock-rates = <0>, /* Do Nothing */
|
||||||
|
<666666666>,
|
||||||
|
<0>; /* Do Nothing */
|
||||||
|
};
|
@@ -337,6 +337,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&hwrng {
|
||||||
|
clocks = <&clkc CLKID_RNG0>;
|
||||||
|
clock-names = "core";
|
||||||
|
};
|
||||||
|
|
||||||
&i2c_A {
|
&i2c_A {
|
||||||
clocks = <&clkc CLKID_I2C>;
|
clocks = <&clkc CLKID_I2C>;
|
||||||
};
|
};
|
||||||
|
@@ -98,6 +98,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&qspi {
|
&qspi {
|
||||||
|
status = "okay";
|
||||||
flash@0 {
|
flash@0 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
@@ -454,10 +454,7 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
phy-mode = "2500base-x";
|
phy-mode = "2500base-x";
|
||||||
phys = <&cp1_comphy5 2>;
|
phys = <&cp1_comphy5 2>;
|
||||||
fixed-link {
|
managed = "in-band-status";
|
||||||
speed = <2500>;
|
|
||||||
full-duplex;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&cp1_spi1 {
|
&cp1_spi1 {
|
||||||
|
@@ -194,7 +194,7 @@ CONFIG_HOTPLUG_PCI=y
|
|||||||
CONFIG_HOTPLUG_PCI_ACPI=y
|
CONFIG_HOTPLUG_PCI_ACPI=y
|
||||||
CONFIG_PCI_AARDVARK=y
|
CONFIG_PCI_AARDVARK=y
|
||||||
CONFIG_PCI_TEGRA=y
|
CONFIG_PCI_TEGRA=y
|
||||||
CONFIG_PCIE_RCAR=y
|
CONFIG_PCIE_RCAR_HOST=y
|
||||||
CONFIG_PCI_HOST_GENERIC=y
|
CONFIG_PCI_HOST_GENERIC=y
|
||||||
CONFIG_PCI_XGENE=y
|
CONFIG_PCI_XGENE=y
|
||||||
CONFIG_PCIE_ALTERA=y
|
CONFIG_PCIE_ALTERA=y
|
||||||
|
@@ -73,11 +73,11 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||||||
".pushsection .altinstructions,\"a\"\n" \
|
".pushsection .altinstructions,\"a\"\n" \
|
||||||
ALTINSTR_ENTRY(feature) \
|
ALTINSTR_ENTRY(feature) \
|
||||||
".popsection\n" \
|
".popsection\n" \
|
||||||
".pushsection .altinstr_replacement, \"a\"\n" \
|
".subsection 1\n" \
|
||||||
"663:\n\t" \
|
"663:\n\t" \
|
||||||
newinstr "\n" \
|
newinstr "\n" \
|
||||||
"664:\n\t" \
|
"664:\n\t" \
|
||||||
".popsection\n\t" \
|
".previous\n\t" \
|
||||||
".org . - (664b-663b) + (662b-661b)\n\t" \
|
".org . - (664b-663b) + (662b-661b)\n\t" \
|
||||||
".org . - (662b-661b) + (664b-663b)\n" \
|
".org . - (662b-661b) + (664b-663b)\n" \
|
||||||
".endif\n"
|
".endif\n"
|
||||||
@@ -117,9 +117,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||||||
662: .pushsection .altinstructions, "a"
|
662: .pushsection .altinstructions, "a"
|
||||||
altinstruction_entry 661b, 663f, \cap, 662b-661b, 664f-663f
|
altinstruction_entry 661b, 663f, \cap, 662b-661b, 664f-663f
|
||||||
.popsection
|
.popsection
|
||||||
.pushsection .altinstr_replacement, "ax"
|
.subsection 1
|
||||||
663: \insn2
|
663: \insn2
|
||||||
664: .popsection
|
664: .previous
|
||||||
.org . - (664b-663b) + (662b-661b)
|
.org . - (664b-663b) + (662b-661b)
|
||||||
.org . - (662b-661b) + (664b-663b)
|
.org . - (662b-661b) + (664b-663b)
|
||||||
.endif
|
.endif
|
||||||
@@ -160,7 +160,7 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||||||
.pushsection .altinstructions, "a"
|
.pushsection .altinstructions, "a"
|
||||||
altinstruction_entry 663f, 661f, \cap, 664f-663f, 662f-661f
|
altinstruction_entry 663f, 661f, \cap, 664f-663f, 662f-661f
|
||||||
.popsection
|
.popsection
|
||||||
.pushsection .altinstr_replacement, "ax"
|
.subsection 1
|
||||||
.align 2 /* So GAS knows label 661 is suitably aligned */
|
.align 2 /* So GAS knows label 661 is suitably aligned */
|
||||||
661:
|
661:
|
||||||
.endm
|
.endm
|
||||||
@@ -179,9 +179,9 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||||||
.macro alternative_else
|
.macro alternative_else
|
||||||
662:
|
662:
|
||||||
.if .Lasm_alt_mode==0
|
.if .Lasm_alt_mode==0
|
||||||
.pushsection .altinstr_replacement, "ax"
|
.subsection 1
|
||||||
.else
|
.else
|
||||||
.popsection
|
.previous
|
||||||
.endif
|
.endif
|
||||||
663:
|
663:
|
||||||
.endm
|
.endm
|
||||||
@@ -192,7 +192,7 @@ static inline void apply_alternatives_module(void *start, size_t length) { }
|
|||||||
.macro alternative_endif
|
.macro alternative_endif
|
||||||
664:
|
664:
|
||||||
.if .Lasm_alt_mode==0
|
.if .Lasm_alt_mode==0
|
||||||
.popsection
|
.previous
|
||||||
.endif
|
.endif
|
||||||
.org . - (664b-663b) + (662b-661b)
|
.org . - (664b-663b) + (662b-661b)
|
||||||
.org . - (662b-661b) + (664b-663b)
|
.org . - (662b-661b) + (664b-663b)
|
||||||
|
@@ -109,7 +109,7 @@ static inline u32 gic_read_pmr(void)
|
|||||||
return read_sysreg_s(SYS_ICC_PMR_EL1);
|
return read_sysreg_s(SYS_ICC_PMR_EL1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void gic_write_pmr(u32 val)
|
static __always_inline void gic_write_pmr(u32 val)
|
||||||
{
|
{
|
||||||
write_sysreg_s(val, SYS_ICC_PMR_EL1);
|
write_sysreg_s(val, SYS_ICC_PMR_EL1);
|
||||||
}
|
}
|
||||||
|
@@ -58,6 +58,7 @@ struct arch_timer_erratum_workaround {
|
|||||||
u64 (*read_cntvct_el0)(void);
|
u64 (*read_cntvct_el0)(void);
|
||||||
int (*set_next_event_phys)(unsigned long, struct clock_event_device *);
|
int (*set_next_event_phys)(unsigned long, struct clock_event_device *);
|
||||||
int (*set_next_event_virt)(unsigned long, struct clock_event_device *);
|
int (*set_next_event_virt)(unsigned long, struct clock_event_device *);
|
||||||
|
bool disable_compat_vdso;
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
|
DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
|
||||||
|
@@ -675,7 +675,7 @@ static inline bool system_supports_generic_auth(void)
|
|||||||
cpus_have_const_cap(ARM64_HAS_GENERIC_AUTH);
|
cpus_have_const_cap(ARM64_HAS_GENERIC_AUTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool system_uses_irq_prio_masking(void)
|
static __always_inline bool system_uses_irq_prio_masking(void)
|
||||||
{
|
{
|
||||||
return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) &&
|
return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) &&
|
||||||
cpus_have_const_cap(ARM64_HAS_IRQ_PRIO_MASKING);
|
cpus_have_const_cap(ARM64_HAS_IRQ_PRIO_MASKING);
|
||||||
|
@@ -86,6 +86,7 @@
|
|||||||
#define QCOM_CPU_PART_FALKOR 0xC00
|
#define QCOM_CPU_PART_FALKOR 0xC00
|
||||||
#define QCOM_CPU_PART_KRYO 0x200
|
#define QCOM_CPU_PART_KRYO 0x200
|
||||||
#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803
|
#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803
|
||||||
|
#define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804
|
||||||
#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805
|
#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805
|
||||||
|
|
||||||
#define NVIDIA_CPU_PART_DENVER 0x003
|
#define NVIDIA_CPU_PART_DENVER 0x003
|
||||||
@@ -114,6 +115,7 @@
|
|||||||
#define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR)
|
#define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR)
|
||||||
#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)
|
#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)
|
||||||
#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER)
|
#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER)
|
||||||
|
#define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD)
|
||||||
#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER)
|
#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER)
|
||||||
#define MIDR_NVIDIA_DENVER MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_DENVER)
|
#define MIDR_NVIDIA_DENVER MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_DENVER)
|
||||||
#define MIDR_NVIDIA_CARMEL MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_CARMEL)
|
#define MIDR_NVIDIA_CARMEL MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_CARMEL)
|
||||||
|
@@ -109,6 +109,8 @@ void disable_debug_monitors(enum dbg_active_el el);
|
|||||||
|
|
||||||
void user_rewind_single_step(struct task_struct *task);
|
void user_rewind_single_step(struct task_struct *task);
|
||||||
void user_fastforward_single_step(struct task_struct *task);
|
void user_fastforward_single_step(struct task_struct *task);
|
||||||
|
void user_regs_reset_single_step(struct user_pt_regs *regs,
|
||||||
|
struct task_struct *task);
|
||||||
|
|
||||||
void kernel_enable_single_step(struct pt_regs *regs);
|
void kernel_enable_single_step(struct pt_regs *regs);
|
||||||
void kernel_disable_single_step(void);
|
void kernel_disable_single_step(void);
|
||||||
|
@@ -67,7 +67,7 @@ extern bool arm64_use_ng_mappings;
|
|||||||
#define PAGE_HYP __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_HYP_XN)
|
#define PAGE_HYP __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_HYP_XN)
|
||||||
#define PAGE_HYP_EXEC __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_RDONLY)
|
#define PAGE_HYP_EXEC __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_RDONLY)
|
||||||
#define PAGE_HYP_RO __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_RDONLY | PTE_HYP_XN)
|
#define PAGE_HYP_RO __pgprot(_HYP_PAGE_DEFAULT | PTE_HYP | PTE_RDONLY | PTE_HYP_XN)
|
||||||
#define PAGE_HYP_DEVICE __pgprot(PROT_DEVICE_nGnRE | PTE_HYP)
|
#define PAGE_HYP_DEVICE __pgprot(_PROT_DEFAULT | PTE_ATTRINDX(MT_DEVICE_nGnRE) | PTE_HYP | PTE_HYP_XN)
|
||||||
|
|
||||||
#define PAGE_S2_MEMATTR(attr) \
|
#define PAGE_S2_MEMATTR(attr) \
|
||||||
({ \
|
({ \
|
||||||
|
@@ -34,6 +34,10 @@ static inline long syscall_get_error(struct task_struct *task,
|
|||||||
struct pt_regs *regs)
|
struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
unsigned long error = regs->regs[0];
|
unsigned long error = regs->regs[0];
|
||||||
|
|
||||||
|
if (is_compat_thread(task_thread_info(task)))
|
||||||
|
error = sign_extend64(error, 31);
|
||||||
|
|
||||||
return IS_ERR_VALUE(error) ? error : 0;
|
return IS_ERR_VALUE(error) ? error : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +51,13 @@ static inline void syscall_set_return_value(struct task_struct *task,
|
|||||||
struct pt_regs *regs,
|
struct pt_regs *regs,
|
||||||
int error, long val)
|
int error, long val)
|
||||||
{
|
{
|
||||||
regs->regs[0] = (long) error ? error : val;
|
if (error)
|
||||||
|
val = error;
|
||||||
|
|
||||||
|
if (is_compat_thread(task_thread_info(task)))
|
||||||
|
val = lower_32_bits(val);
|
||||||
|
|
||||||
|
regs->regs[0] = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SYSCALL_MAX_ARGS 6
|
#define SYSCALL_MAX_ARGS 6
|
||||||
|
@@ -93,6 +93,7 @@ void arch_release_task_struct(struct task_struct *tsk);
|
|||||||
#define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU)
|
#define _TIF_SYSCALL_EMU (1 << TIF_SYSCALL_EMU)
|
||||||
#define _TIF_UPROBE (1 << TIF_UPROBE)
|
#define _TIF_UPROBE (1 << TIF_UPROBE)
|
||||||
#define _TIF_FSCHECK (1 << TIF_FSCHECK)
|
#define _TIF_FSCHECK (1 << TIF_FSCHECK)
|
||||||
|
#define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP)
|
||||||
#define _TIF_32BIT (1 << TIF_32BIT)
|
#define _TIF_32BIT (1 << TIF_32BIT)
|
||||||
#define _TIF_SVE (1 << TIF_SVE)
|
#define _TIF_SVE (1 << TIF_SVE)
|
||||||
|
|
||||||
|
@@ -2,7 +2,10 @@
|
|||||||
#ifndef __ASM_VDSOCLOCKSOURCE_H
|
#ifndef __ASM_VDSOCLOCKSOURCE_H
|
||||||
#define __ASM_VDSOCLOCKSOURCE_H
|
#define __ASM_VDSOCLOCKSOURCE_H
|
||||||
|
|
||||||
#define VDSO_ARCH_CLOCKMODES \
|
#define VDSO_ARCH_CLOCKMODES \
|
||||||
VDSO_CLOCKMODE_ARCHTIMER
|
/* vdso clocksource for both 32 and 64bit tasks */ \
|
||||||
|
VDSO_CLOCKMODE_ARCHTIMER, \
|
||||||
|
/* vdso clocksource for 64bit tasks only */ \
|
||||||
|
VDSO_CLOCKMODE_ARCHTIMER_NOCOMPAT
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -111,7 +111,7 @@ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode)
|
|||||||
* update. Return something. Core will do another round and then
|
* update. Return something. Core will do another round and then
|
||||||
* see the mode change and fallback to the syscall.
|
* see the mode change and fallback to the syscall.
|
||||||
*/
|
*/
|
||||||
if (clock_mode == VDSO_CLOCKMODE_NONE)
|
if (clock_mode != VDSO_CLOCKMODE_ARCHTIMER)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -152,6 +152,12 @@ static __always_inline const struct vdso_data *__arch_get_vdso_data(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool vdso_clocksource_ok(const struct vdso_data *vd)
|
||||||
|
{
|
||||||
|
return vd->clock_mode == VDSO_CLOCKMODE_ARCHTIMER;
|
||||||
|
}
|
||||||
|
#define vdso_clocksource_ok vdso_clocksource_ok
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
#endif /* !__ASSEMBLY__ */
|
||||||
|
|
||||||
#endif /* __ASM_VDSO_GETTIMEOFDAY_H */
|
#endif /* __ASM_VDSO_GETTIMEOFDAY_H */
|
||||||
|
@@ -43,20 +43,8 @@ bool alternative_is_applied(u16 cpufeature)
|
|||||||
*/
|
*/
|
||||||
static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)
|
||||||
{
|
{
|
||||||
unsigned long replptr;
|
unsigned long replptr = (unsigned long)ALT_REPL_PTR(alt);
|
||||||
|
return !(pc >= replptr && pc <= (replptr + alt->alt_len));
|
||||||
if (kernel_text_address(pc))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
replptr = (unsigned long)ALT_REPL_PTR(alt);
|
|
||||||
if (pc >= replptr && pc <= (replptr + alt->alt_len))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Branching into *another* alternate sequence is doomed, and
|
|
||||||
* we're not even trying to fix it up.
|
|
||||||
*/
|
|
||||||
BUG();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define align_down(x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
|
#define align_down(x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1))
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user