Merge branch 'master' into mm-hotfixes-stable
This commit is contained in:
commit
280330fac4
4
.mailmap
4
.mailmap
@ -71,6 +71,9 @@ Ben M Cahill <ben.m.cahill@intel.com>
|
|||||||
Ben Widawsky <bwidawsk@kernel.org> <ben@bwidawsk.net>
|
Ben Widawsky <bwidawsk@kernel.org> <ben@bwidawsk.net>
|
||||||
Ben Widawsky <bwidawsk@kernel.org> <ben.widawsky@intel.com>
|
Ben Widawsky <bwidawsk@kernel.org> <ben.widawsky@intel.com>
|
||||||
Ben Widawsky <bwidawsk@kernel.org> <benjamin.widawsky@intel.com>
|
Ben Widawsky <bwidawsk@kernel.org> <benjamin.widawsky@intel.com>
|
||||||
|
Bjorn Andersson <andersson@kernel.org> <bjorn@kryo.se>
|
||||||
|
Bjorn Andersson <andersson@kernel.org> <bjorn.andersson@linaro.org>
|
||||||
|
Bjorn Andersson <andersson@kernel.org> <bjorn.andersson@sonymobile.com>
|
||||||
Björn Steinbrink <B.Steinbrink@gmx.de>
|
Björn Steinbrink <B.Steinbrink@gmx.de>
|
||||||
Björn Töpel <bjorn@kernel.org> <bjorn.topel@gmail.com>
|
Björn Töpel <bjorn@kernel.org> <bjorn.topel@gmail.com>
|
||||||
Björn Töpel <bjorn@kernel.org> <bjorn.topel@intel.com>
|
Björn Töpel <bjorn@kernel.org> <bjorn.topel@intel.com>
|
||||||
@ -315,6 +318,7 @@ Morten Welinder <welinder@troll.com>
|
|||||||
Mythri P K <mythripk@ti.com>
|
Mythri P K <mythripk@ti.com>
|
||||||
Nadia Yvette Chambers <nyc@holomorphy.com> William Lee Irwin III <wli@holomorphy.com>
|
Nadia Yvette Chambers <nyc@holomorphy.com> William Lee Irwin III <wli@holomorphy.com>
|
||||||
Nathan Chancellor <nathan@kernel.org> <natechancellor@gmail.com>
|
Nathan Chancellor <nathan@kernel.org> <natechancellor@gmail.com>
|
||||||
|
Neil Armstrong <neil.armstrong@linaro.org> <narmstrong@baylibre.com>
|
||||||
Nguyen Anh Quynh <aquynh@gmail.com>
|
Nguyen Anh Quynh <aquynh@gmail.com>
|
||||||
Nicholas Piggin <npiggin@gmail.com> <npiggen@suse.de>
|
Nicholas Piggin <npiggin@gmail.com> <npiggen@suse.de>
|
||||||
Nicholas Piggin <npiggin@gmail.com> <npiggin@kernel.dk>
|
Nicholas Piggin <npiggin@gmail.com> <npiggin@kernel.dk>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
.. _readme:
|
.. _readme:
|
||||||
|
|
||||||
Linux kernel release 5.x <http://kernel.org/>
|
Linux kernel release 6.x <http://kernel.org/>
|
||||||
=============================================
|
=============================================
|
||||||
|
|
||||||
These are the release notes for Linux version 5. Read them carefully,
|
These are the release notes for Linux version 6. Read them carefully,
|
||||||
as they tell you what this is all about, explain how to install the
|
as they tell you what this is all about, explain how to install the
|
||||||
kernel, and what to do if something goes wrong.
|
kernel, and what to do if something goes wrong.
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ Installing the kernel source
|
|||||||
directory where you have permissions (e.g. your home directory) and
|
directory where you have permissions (e.g. your home directory) and
|
||||||
unpack it::
|
unpack it::
|
||||||
|
|
||||||
xz -cd linux-5.x.tar.xz | tar xvf -
|
xz -cd linux-6.x.tar.xz | tar xvf -
|
||||||
|
|
||||||
Replace "X" with the version number of the latest kernel.
|
Replace "X" with the version number of the latest kernel.
|
||||||
|
|
||||||
@ -72,12 +72,12 @@ Installing the kernel source
|
|||||||
files. They should match the library, and not get messed up by
|
files. They should match the library, and not get messed up by
|
||||||
whatever the kernel-du-jour happens to be.
|
whatever the kernel-du-jour happens to be.
|
||||||
|
|
||||||
- You can also upgrade between 5.x releases by patching. Patches are
|
- You can also upgrade between 6.x releases by patching. Patches are
|
||||||
distributed in the xz format. To install by patching, get all the
|
distributed in the xz format. To install by patching, get all the
|
||||||
newer patch files, enter the top level directory of the kernel source
|
newer patch files, enter the top level directory of the kernel source
|
||||||
(linux-5.x) and execute::
|
(linux-6.x) and execute::
|
||||||
|
|
||||||
xz -cd ../patch-5.x.xz | patch -p1
|
xz -cd ../patch-6.x.xz | patch -p1
|
||||||
|
|
||||||
Replace "x" for all versions bigger than the version "x" of your current
|
Replace "x" for all versions bigger than the version "x" of your current
|
||||||
source tree, **in_order**, and you should be ok. You may want to remove
|
source tree, **in_order**, and you should be ok. You may want to remove
|
||||||
@ -85,13 +85,13 @@ Installing the kernel source
|
|||||||
that there are no failed patches (some-file-name# or some-file-name.rej).
|
that there are no failed patches (some-file-name# or some-file-name.rej).
|
||||||
If there are, either you or I have made a mistake.
|
If there are, either you or I have made a mistake.
|
||||||
|
|
||||||
Unlike patches for the 5.x kernels, patches for the 5.x.y kernels
|
Unlike patches for the 6.x kernels, patches for the 6.x.y kernels
|
||||||
(also known as the -stable kernels) are not incremental but instead apply
|
(also known as the -stable kernels) are not incremental but instead apply
|
||||||
directly to the base 5.x kernel. For example, if your base kernel is 5.0
|
directly to the base 6.x kernel. For example, if your base kernel is 6.0
|
||||||
and you want to apply the 5.0.3 patch, you must not first apply the 5.0.1
|
and you want to apply the 6.0.3 patch, you must not first apply the 6.0.1
|
||||||
and 5.0.2 patches. Similarly, if you are running kernel version 5.0.2 and
|
and 6.0.2 patches. Similarly, if you are running kernel version 6.0.2 and
|
||||||
want to jump to 5.0.3, you must first reverse the 5.0.2 patch (that is,
|
want to jump to 6.0.3, you must first reverse the 6.0.2 patch (that is,
|
||||||
patch -R) **before** applying the 5.0.3 patch. You can read more on this in
|
patch -R) **before** applying the 6.0.3 patch. You can read more on this in
|
||||||
:ref:`Documentation/process/applying-patches.rst <applying_patches>`.
|
:ref:`Documentation/process/applying-patches.rst <applying_patches>`.
|
||||||
|
|
||||||
Alternatively, the script patch-kernel can be used to automate this
|
Alternatively, the script patch-kernel can be used to automate this
|
||||||
@ -114,7 +114,7 @@ Installing the kernel source
|
|||||||
Software requirements
|
Software requirements
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
Compiling and running the 5.x kernels requires up-to-date
|
Compiling and running the 6.x kernels requires up-to-date
|
||||||
versions of various software packages. Consult
|
versions of various software packages. Consult
|
||||||
:ref:`Documentation/process/changes.rst <changes>` for the minimum version numbers
|
:ref:`Documentation/process/changes.rst <changes>` for the minimum version numbers
|
||||||
required and how to get updates for these packages. Beware that using
|
required and how to get updates for these packages. Beware that using
|
||||||
@ -132,12 +132,12 @@ Build directory for the kernel
|
|||||||
place for the output files (including .config).
|
place for the output files (including .config).
|
||||||
Example::
|
Example::
|
||||||
|
|
||||||
kernel source code: /usr/src/linux-5.x
|
kernel source code: /usr/src/linux-6.x
|
||||||
build directory: /home/name/build/kernel
|
build directory: /home/name/build/kernel
|
||||||
|
|
||||||
To configure and build the kernel, use::
|
To configure and build the kernel, use::
|
||||||
|
|
||||||
cd /usr/src/linux-5.x
|
cd /usr/src/linux-6.x
|
||||||
make O=/home/name/build/kernel menuconfig
|
make O=/home/name/build/kernel menuconfig
|
||||||
make O=/home/name/build/kernel
|
make O=/home/name/build/kernel
|
||||||
sudo make O=/home/name/build/kernel modules_install install
|
sudo make O=/home/name/build/kernel modules_install install
|
||||||
|
@ -50,10 +50,10 @@ For a short example, users can monitor the virtual address space of a given
|
|||||||
workload as below. ::
|
workload as below. ::
|
||||||
|
|
||||||
# cd /sys/kernel/mm/damon/admin/
|
# cd /sys/kernel/mm/damon/admin/
|
||||||
# echo 1 > kdamonds/nr && echo 1 > kdamonds/0/contexts/nr
|
# echo 1 > kdamonds/nr_kdamonds && echo 1 > kdamonds/0/contexts/nr_contexts
|
||||||
# echo vaddr > kdamonds/0/contexts/0/operations
|
# echo vaddr > kdamonds/0/contexts/0/operations
|
||||||
# echo 1 > kdamonds/0/contexts/0/targets/nr
|
# echo 1 > kdamonds/0/contexts/0/targets/nr_targets
|
||||||
# echo $(pidof <workload>) > kdamonds/0/contexts/0/targets/0/pid
|
# echo $(pidof <workload>) > kdamonds/0/contexts/0/targets/0/pid_target
|
||||||
# echo on > kdamonds/0/state
|
# echo on > kdamonds/0/state
|
||||||
|
|
||||||
Files Hierarchy
|
Files Hierarchy
|
||||||
@ -366,12 +366,12 @@ memory rate becomes larger than 60%, or lower than 30%". ::
|
|||||||
# echo 1 > kdamonds/0/contexts/0/schemes/nr_schemes
|
# echo 1 > kdamonds/0/contexts/0/schemes/nr_schemes
|
||||||
# cd kdamonds/0/contexts/0/schemes/0
|
# cd kdamonds/0/contexts/0/schemes/0
|
||||||
# # set the basic access pattern and the action
|
# # set the basic access pattern and the action
|
||||||
# echo 4096 > access_patterns/sz/min
|
# echo 4096 > access_pattern/sz/min
|
||||||
# echo 8192 > access_patterns/sz/max
|
# echo 8192 > access_pattern/sz/max
|
||||||
# echo 0 > access_patterns/nr_accesses/min
|
# echo 0 > access_pattern/nr_accesses/min
|
||||||
# echo 5 > access_patterns/nr_accesses/max
|
# echo 5 > access_pattern/nr_accesses/max
|
||||||
# echo 10 > access_patterns/age/min
|
# echo 10 > access_pattern/age/min
|
||||||
# echo 20 > access_patterns/age/max
|
# echo 20 > access_pattern/age/max
|
||||||
# echo pageout > action
|
# echo pageout > action
|
||||||
# # set quotas
|
# # set quotas
|
||||||
# echo 10 > quotas/ms
|
# echo 10 > quotas/ms
|
||||||
|
@ -23,3 +23,4 @@ Block
|
|||||||
stat
|
stat
|
||||||
switching-sched
|
switching-sched
|
||||||
writeback_cache_control
|
writeback_cache_control
|
||||||
|
ublk
|
||||||
|
253
Documentation/block/ublk.rst
Normal file
253
Documentation/block/ublk.rst
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
===========================================
|
||||||
|
Userspace block device driver (ublk driver)
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
Overview
|
||||||
|
========
|
||||||
|
|
||||||
|
ublk is a generic framework for implementing block device logic from userspace.
|
||||||
|
The motivation behind it is that moving virtual block drivers into userspace,
|
||||||
|
such as loop, nbd and similar can be very helpful. It can help to implement
|
||||||
|
new virtual block device such as ublk-qcow2 (there are several attempts of
|
||||||
|
implementing qcow2 driver in kernel).
|
||||||
|
|
||||||
|
Userspace block devices are attractive because:
|
||||||
|
|
||||||
|
- They can be written many programming languages.
|
||||||
|
- They can use libraries that are not available in the kernel.
|
||||||
|
- They can be debugged with tools familiar to application developers.
|
||||||
|
- Crashes do not kernel panic the machine.
|
||||||
|
- Bugs are likely to have a lower security impact than bugs in kernel
|
||||||
|
code.
|
||||||
|
- They can be installed and updated independently of the kernel.
|
||||||
|
- They can be used to simulate block device easily with user specified
|
||||||
|
parameters/setting for test/debug purpose
|
||||||
|
|
||||||
|
ublk block device (``/dev/ublkb*``) is added by ublk driver. Any IO request
|
||||||
|
on the device will be forwarded to ublk userspace program. For convenience,
|
||||||
|
in this document, ``ublk server`` refers to generic ublk userspace
|
||||||
|
program. ``ublksrv`` [#userspace]_ is one of such implementation. It
|
||||||
|
provides ``libublksrv`` [#userspace_lib]_ library for developing specific
|
||||||
|
user block device conveniently, while also generic type block device is
|
||||||
|
included, such as loop and null. Richard W.M. Jones wrote userspace nbd device
|
||||||
|
``nbdublk`` [#userspace_nbdublk]_ based on ``libublksrv`` [#userspace_lib]_.
|
||||||
|
|
||||||
|
After the IO is handled by userspace, the result is committed back to the
|
||||||
|
driver, thus completing the request cycle. This way, any specific IO handling
|
||||||
|
logic is totally done by userspace, such as loop's IO handling, NBD's IO
|
||||||
|
communication, or qcow2's IO mapping.
|
||||||
|
|
||||||
|
``/dev/ublkb*`` is driven by blk-mq request-based driver. Each request is
|
||||||
|
assigned by one queue wide unique tag. ublk server assigns unique tag to each
|
||||||
|
IO too, which is 1:1 mapped with IO of ``/dev/ublkb*``.
|
||||||
|
|
||||||
|
Both the IO request forward and IO handling result committing are done via
|
||||||
|
``io_uring`` passthrough command; that is why ublk is also one io_uring based
|
||||||
|
block driver. It has been observed that using io_uring passthrough command can
|
||||||
|
give better IOPS than block IO; which is why ublk is one of high performance
|
||||||
|
implementation of userspace block device: not only IO request communication is
|
||||||
|
done by io_uring, but also the preferred IO handling in ublk server is io_uring
|
||||||
|
based approach too.
|
||||||
|
|
||||||
|
ublk provides control interface to set/get ublk block device parameters.
|
||||||
|
The interface is extendable and kabi compatible: basically any ublk request
|
||||||
|
queue's parameter or ublk generic feature parameters can be set/get via the
|
||||||
|
interface. Thus, ublk is generic userspace block device framework.
|
||||||
|
For example, it is easy to setup a ublk device with specified block
|
||||||
|
parameters from userspace.
|
||||||
|
|
||||||
|
Using ublk
|
||||||
|
==========
|
||||||
|
|
||||||
|
ublk requires userspace ublk server to handle real block device logic.
|
||||||
|
|
||||||
|
Below is example of using ``ublksrv`` to provide ublk-based loop device.
|
||||||
|
|
||||||
|
- add a device::
|
||||||
|
|
||||||
|
ublk add -t loop -f ublk-loop.img
|
||||||
|
|
||||||
|
- format with xfs, then use it::
|
||||||
|
|
||||||
|
mkfs.xfs /dev/ublkb0
|
||||||
|
mount /dev/ublkb0 /mnt
|
||||||
|
# do anything. all IOs are handled by io_uring
|
||||||
|
...
|
||||||
|
umount /mnt
|
||||||
|
|
||||||
|
- list the devices with their info::
|
||||||
|
|
||||||
|
ublk list
|
||||||
|
|
||||||
|
- delete the device::
|
||||||
|
|
||||||
|
ublk del -a
|
||||||
|
ublk del -n $ublk_dev_id
|
||||||
|
|
||||||
|
See usage details in README of ``ublksrv`` [#userspace_readme]_.
|
||||||
|
|
||||||
|
Design
|
||||||
|
======
|
||||||
|
|
||||||
|
Control plane
|
||||||
|
-------------
|
||||||
|
|
||||||
|
ublk driver provides global misc device node (``/dev/ublk-control``) for
|
||||||
|
managing and controlling ublk devices with help of several control commands:
|
||||||
|
|
||||||
|
- ``UBLK_CMD_ADD_DEV``
|
||||||
|
|
||||||
|
Add a ublk char device (``/dev/ublkc*``) which is talked with ublk server
|
||||||
|
WRT IO command communication. Basic device info is sent together with this
|
||||||
|
command. It sets UAPI structure of ``ublksrv_ctrl_dev_info``,
|
||||||
|
such as ``nr_hw_queues``, ``queue_depth``, and max IO request buffer size,
|
||||||
|
for which the info is negotiated with the driver and sent back to the server.
|
||||||
|
When this command is completed, the basic device info is immutable.
|
||||||
|
|
||||||
|
- ``UBLK_CMD_SET_PARAMS`` / ``UBLK_CMD_GET_PARAMS``
|
||||||
|
|
||||||
|
Set or get parameters of the device, which can be either generic feature
|
||||||
|
related, or request queue limit related, but can't be IO logic specific,
|
||||||
|
because the driver does not handle any IO logic. This command has to be
|
||||||
|
sent before sending ``UBLK_CMD_START_DEV``.
|
||||||
|
|
||||||
|
- ``UBLK_CMD_START_DEV``
|
||||||
|
|
||||||
|
After the server prepares userspace resources (such as creating per-queue
|
||||||
|
pthread & io_uring for handling ublk IO), this command is sent to the
|
||||||
|
driver for allocating & exposing ``/dev/ublkb*``. Parameters set via
|
||||||
|
``UBLK_CMD_SET_PARAMS`` are applied for creating the device.
|
||||||
|
|
||||||
|
- ``UBLK_CMD_STOP_DEV``
|
||||||
|
|
||||||
|
Halt IO on ``/dev/ublkb*`` and remove the device. When this command returns,
|
||||||
|
ublk server will release resources (such as destroying per-queue pthread &
|
||||||
|
io_uring).
|
||||||
|
|
||||||
|
- ``UBLK_CMD_DEL_DEV``
|
||||||
|
|
||||||
|
Remove ``/dev/ublkc*``. When this command returns, the allocated ublk device
|
||||||
|
number can be reused.
|
||||||
|
|
||||||
|
- ``UBLK_CMD_GET_QUEUE_AFFINITY``
|
||||||
|
|
||||||
|
When ``/dev/ublkc`` is added, the driver creates block layer tagset, so
|
||||||
|
that each queue's affinity info is available. The server sends
|
||||||
|
``UBLK_CMD_GET_QUEUE_AFFINITY`` to retrieve queue affinity info. It can
|
||||||
|
set up the per-queue context efficiently, such as bind affine CPUs with IO
|
||||||
|
pthread and try to allocate buffers in IO thread context.
|
||||||
|
|
||||||
|
- ``UBLK_CMD_GET_DEV_INFO``
|
||||||
|
|
||||||
|
For retrieving device info via ``ublksrv_ctrl_dev_info``. It is the server's
|
||||||
|
responsibility to save IO target specific info in userspace.
|
||||||
|
|
||||||
|
Data plane
|
||||||
|
----------
|
||||||
|
|
||||||
|
ublk server needs to create per-queue IO pthread & io_uring for handling IO
|
||||||
|
commands via io_uring passthrough. The per-queue IO pthread
|
||||||
|
focuses on IO handling and shouldn't handle any control & management
|
||||||
|
tasks.
|
||||||
|
|
||||||
|
The's IO is assigned by a unique tag, which is 1:1 mapping with IO
|
||||||
|
request of ``/dev/ublkb*``.
|
||||||
|
|
||||||
|
UAPI structure of ``ublksrv_io_desc`` is defined for describing each IO from
|
||||||
|
the driver. A fixed mmaped area (array) on ``/dev/ublkc*`` is provided for
|
||||||
|
exporting IO info to the server; such as IO offset, length, OP/flags and
|
||||||
|
buffer address. Each ``ublksrv_io_desc`` instance can be indexed via queue id
|
||||||
|
and IO tag directly.
|
||||||
|
|
||||||
|
The following IO commands are communicated via io_uring passthrough command,
|
||||||
|
and each command is only for forwarding the IO and committing the result
|
||||||
|
with specified IO tag in the command data:
|
||||||
|
|
||||||
|
- ``UBLK_IO_FETCH_REQ``
|
||||||
|
|
||||||
|
Sent from the server IO pthread for fetching future incoming IO requests
|
||||||
|
destined to ``/dev/ublkb*``. This command is sent only once from the server
|
||||||
|
IO pthread for ublk driver to setup IO forward environment.
|
||||||
|
|
||||||
|
- ``UBLK_IO_COMMIT_AND_FETCH_REQ``
|
||||||
|
|
||||||
|
When an IO request is destined to ``/dev/ublkb*``, the driver stores
|
||||||
|
the IO's ``ublksrv_io_desc`` to the specified mapped area; then the
|
||||||
|
previous received IO command of this IO tag (either ``UBLK_IO_FETCH_REQ``
|
||||||
|
or ``UBLK_IO_COMMIT_AND_FETCH_REQ)`` is completed, so the server gets
|
||||||
|
the IO notification via io_uring.
|
||||||
|
|
||||||
|
After the server handles the IO, its result is committed back to the
|
||||||
|
driver by sending ``UBLK_IO_COMMIT_AND_FETCH_REQ`` back. Once ublkdrv
|
||||||
|
received this command, it parses the result and complete the request to
|
||||||
|
``/dev/ublkb*``. In the meantime setup environment for fetching future
|
||||||
|
requests with the same IO tag. That is, ``UBLK_IO_COMMIT_AND_FETCH_REQ``
|
||||||
|
is reused for both fetching request and committing back IO result.
|
||||||
|
|
||||||
|
- ``UBLK_IO_NEED_GET_DATA``
|
||||||
|
|
||||||
|
With ``UBLK_F_NEED_GET_DATA`` enabled, the WRITE request will be firstly
|
||||||
|
issued to ublk server without data copy. Then, IO backend of ublk server
|
||||||
|
receives the request and it can allocate data buffer and embed its addr
|
||||||
|
inside this new io command. After the kernel driver gets the command,
|
||||||
|
data copy is done from request pages to this backend's buffer. Finally,
|
||||||
|
backend receives the request again with data to be written and it can
|
||||||
|
truly handle the request.
|
||||||
|
|
||||||
|
``UBLK_IO_NEED_GET_DATA`` adds one additional round-trip and one
|
||||||
|
io_uring_enter() syscall. Any user thinks that it may lower performance
|
||||||
|
should not enable UBLK_F_NEED_GET_DATA. ublk server pre-allocates IO
|
||||||
|
buffer for each IO by default. Any new project should try to use this
|
||||||
|
buffer to communicate with ublk driver. However, existing project may
|
||||||
|
break or not able to consume the new buffer interface; that's why this
|
||||||
|
command is added for backwards compatibility so that existing projects
|
||||||
|
can still consume existing buffers.
|
||||||
|
|
||||||
|
- data copy between ublk server IO buffer and ublk block IO request
|
||||||
|
|
||||||
|
The driver needs to copy the block IO request pages into the server buffer
|
||||||
|
(pages) first for WRITE before notifying the server of the coming IO, so
|
||||||
|
that the server can handle WRITE request.
|
||||||
|
|
||||||
|
When the server handles READ request and sends
|
||||||
|
``UBLK_IO_COMMIT_AND_FETCH_REQ`` to the server, ublkdrv needs to copy
|
||||||
|
the server buffer (pages) read to the IO request pages.
|
||||||
|
|
||||||
|
Future development
|
||||||
|
==================
|
||||||
|
|
||||||
|
Container-aware ublk deivice
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
ublk driver doesn't handle any IO logic. Its function is well defined
|
||||||
|
for now and very limited userspace interfaces are needed, which is also
|
||||||
|
well defined too. It is possible to make ublk devices container-aware block
|
||||||
|
devices in future as Stefan Hajnoczi suggested [#stefan]_, by removing
|
||||||
|
ADMIN privilege.
|
||||||
|
|
||||||
|
Zero copy
|
||||||
|
---------
|
||||||
|
|
||||||
|
Zero copy is a generic requirement for nbd, fuse or similar drivers. A
|
||||||
|
problem [#xiaoguang]_ Xiaoguang mentioned is that pages mapped to userspace
|
||||||
|
can't be remapped any more in kernel with existing mm interfaces. This can
|
||||||
|
occurs when destining direct IO to ``/dev/ublkb*``. Also, he reported that
|
||||||
|
big requests (IO size >= 256 KB) may benefit a lot from zero copy.
|
||||||
|
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. [#userspace] https://github.com/ming1/ubdsrv
|
||||||
|
|
||||||
|
.. [#userspace_lib] https://github.com/ming1/ubdsrv/tree/master/lib
|
||||||
|
|
||||||
|
.. [#userspace_nbdublk] https://gitlab.com/rwmjones/libnbd/-/tree/nbdublk
|
||||||
|
|
||||||
|
.. [#userspace_readme] https://github.com/ming1/ubdsrv/blob/master/README
|
||||||
|
|
||||||
|
.. [#stefan] https://lore.kernel.org/linux-block/YoOr6jBfgVm8GvWg@stefanha-x1.localdomain/
|
||||||
|
|
||||||
|
.. [#xiaoguang] https://lore.kernel.org/linux-block/YoOr6jBfgVm8GvWg@stefanha-x1.localdomain/
|
@ -86,6 +86,7 @@ if major >= 3:
|
|||||||
"__used",
|
"__used",
|
||||||
"__weak",
|
"__weak",
|
||||||
"noinline",
|
"noinline",
|
||||||
|
"__fix_address",
|
||||||
|
|
||||||
# include/linux/memblock.h:
|
# include/linux/memblock.h:
|
||||||
"__init_memblock",
|
"__init_memblock",
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson Firmware registers Interface
|
title: Amlogic Meson Firmware registers Interface
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The Meson SoCs have a register bank with status and data shared with the
|
The Meson SoCs have a register bank with status and data shared with the
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic specific extensions to the Synopsys Designware HDMI Controller
|
title: Amlogic specific extensions to the Synopsys Designware HDMI Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: /schemas/sound/name-prefix.yaml#
|
- $ref: /schemas/sound/name-prefix.yaml#
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson Display Controller
|
title: Amlogic Meson Display Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The Amlogic Meson Display controller is composed of several components
|
The Amlogic Meson Display controller is composed of several components
|
||||||
|
@ -8,7 +8,7 @@ title: Analogix ANX7814 SlimPort (Full-HD Transmitter)
|
|||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Andrzej Hajda <andrzej.hajda@intel.com>
|
- Andrzej Hajda <andrzej.hajda@intel.com>
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
- Robert Foss <robert.foss@linaro.org>
|
- Robert Foss <robert.foss@linaro.org>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
|
@ -8,7 +8,7 @@ title: ITE it66121 HDMI bridge Device Tree Bindings
|
|||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Phong LE <ple@baylibre.com>
|
- Phong LE <ple@baylibre.com>
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The IT66121 is a high-performance and low-power single channel HDMI
|
The IT66121 is a high-performance and low-power single channel HDMI
|
||||||
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Solomon Goldentek Display GKTW70SDAE4SE 7" WVGA LVDS Display Panel
|
title: Solomon Goldentek Display GKTW70SDAE4SE 7" WVGA LVDS Display Panel
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
- Thierry Reding <thierry.reding@gmail.com>
|
- Thierry Reding <thierry.reding@gmail.com>
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
|
@ -34,8 +34,8 @@ Example:
|
|||||||
Use specific request line passing from dma
|
Use specific request line passing from dma
|
||||||
For example, MMC request line is 5
|
For example, MMC request line is 5
|
||||||
|
|
||||||
sdhci: sdhci@98e00000 {
|
mmc: mmc@98e00000 {
|
||||||
compatible = "moxa,moxart-sdhci";
|
compatible = "moxa,moxart-mmc";
|
||||||
reg = <0x98e00000 0x5C>;
|
reg = <0x98e00000 0x5C>;
|
||||||
interrupts = <5 0>;
|
interrupts = <5 0>;
|
||||||
clocks = <&clk_apb>;
|
clocks = <&clk_apb>;
|
||||||
|
@ -48,7 +48,6 @@ required:
|
|||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
- reg-names
|
- reg-names
|
||||||
- intel,vm-map
|
|
||||||
- clocks
|
- clocks
|
||||||
- resets
|
- resets
|
||||||
- "#thermal-sensor-cells"
|
- "#thermal-sensor-cells"
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson I2C Controller
|
title: Amlogic Meson I2C Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
- Beniamino Galvani <b.galvani@gmail.com>
|
- Beniamino Galvani <b.galvani@gmail.com>
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
|
@ -60,6 +60,9 @@ properties:
|
|||||||
power-domains:
|
power-domains:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
|
resets:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
|
@ -57,6 +57,11 @@ properties:
|
|||||||
- description: interrupt ID for I2C event
|
- description: interrupt ID for I2C event
|
||||||
- description: interrupt ID for I2C error
|
- description: interrupt ID for I2C error
|
||||||
|
|
||||||
|
interrupt-names:
|
||||||
|
items:
|
||||||
|
- const: event
|
||||||
|
- const: error
|
||||||
|
|
||||||
resets:
|
resets:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
@ -92,6 +97,8 @@ properties:
|
|||||||
- description: register offset within syscfg
|
- description: register offset within syscfg
|
||||||
- description: register bitmask for FMP bit
|
- description: register bitmask for FMP bit
|
||||||
|
|
||||||
|
wakeup-source: true
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
|
@ -24,8 +24,10 @@ properties:
|
|||||||
|
|
||||||
interrupts:
|
interrupts:
|
||||||
minItems: 1
|
minItems: 1
|
||||||
|
maxItems: 2
|
||||||
description:
|
description:
|
||||||
Should be configured with type IRQ_TYPE_EDGE_RISING.
|
Should be configured with type IRQ_TYPE_EDGE_RISING.
|
||||||
|
If two interrupts are provided, expected order is INT1 and INT2.
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
@ -16,6 +16,7 @@ properties:
|
|||||||
compatible:
|
compatible:
|
||||||
enum:
|
enum:
|
||||||
- goodix,gt1151
|
- goodix,gt1151
|
||||||
|
- goodix,gt1158
|
||||||
- goodix,gt5663
|
- goodix,gt5663
|
||||||
- goodix,gt5688
|
- goodix,gt5688
|
||||||
- goodix,gt911
|
- goodix,gt911
|
||||||
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Generic i.MX bus frequency device
|
title: Generic i.MX bus frequency device
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Leonard Crestez <leonard.crestez@nxp.com>
|
- Peng Fan <peng.fan@nxp.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The i.MX SoC family has multiple buses for which clock frequency (and
|
The i.MX SoC family has multiple buses for which clock frequency (and
|
||||||
|
@ -96,7 +96,7 @@ properties:
|
|||||||
Documentation/devicetree/bindings/arm/cpus.yaml).
|
Documentation/devicetree/bindings/arm/cpus.yaml).
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- fiq-index
|
- apple,fiq-index
|
||||||
- cpus
|
- cpus
|
||||||
|
|
||||||
required:
|
required:
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson Message-Handling-Unit Controller
|
title: Amlogic Meson Message-Handling-Unit Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The Amlogic's Meson SoCs Message-Handling-Unit (MHU) is a mailbox controller
|
The Amlogic's Meson SoCs Message-Handling-Unit (MHU) is a mailbox controller
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic GE2D Acceleration Unit
|
title: Amlogic GE2D Acceleration Unit
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Video Decoder
|
title: Amlogic Video Decoder
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
- Maxime Jourdan <mjourdan@baylibre.com>
|
- Maxime Jourdan <mjourdan@baylibre.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson AO-CEC Controller
|
title: Amlogic Meson AO-CEC Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The Amlogic Meson AO-CEC module is present is Amlogic SoCs and its purpose is
|
The Amlogic Meson AO-CEC module is present is Amlogic SoCs and its purpose is
|
||||||
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: i.MX8M DDR Controller
|
title: i.MX8M DDR Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Leonard Crestez <leonard.crestez@nxp.com>
|
- Peng Fan <peng.fan@nxp.com>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
The DDRC block is integrated in i.MX8M for interfacing with DDR based
|
The DDRC block is integrated in i.MX8M for interfacing with DDR based
|
||||||
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Khadas on-board Microcontroller Device Tree Bindings
|
title: Khadas on-board Microcontroller Device Tree Bindings
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
Khadas embeds a microcontroller on their VIM and Edge boards adding some
|
Khadas embeds a microcontroller on their VIM and Edge boards adding some
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson DWMAC Ethernet controller
|
title: Amlogic Meson DWMAC Ethernet controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
- Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
- Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
|
|
||||||
# We need a select here so we don't match all nodes with 'snps,dwmac'
|
# We need a select here so we don't match all nodes with 'snps,dwmac'
|
||||||
|
@ -40,6 +40,7 @@ properties:
|
|||||||
patternProperties:
|
patternProperties:
|
||||||
'^opp-?[0-9]+$':
|
'^opp-?[0-9]+$':
|
||||||
type: object
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
opp-hz: true
|
opp-hz: true
|
||||||
|
@ -19,6 +19,7 @@ properties:
|
|||||||
patternProperties:
|
patternProperties:
|
||||||
'^opp-?[0-9]+$':
|
'^opp-?[0-9]+$':
|
||||||
type: object
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
opp-level: true
|
opp-level: true
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic AXG MIPI D-PHY
|
title: Amlogic AXG MIPI D-PHY
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic G12A USB2 PHY
|
title: Amlogic G12A USB2 PHY
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic G12A USB3 + PCIE Combo PHY
|
title: Amlogic G12A USB3 + PCIE Combo PHY
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -8,7 +8,6 @@ title: Qualcomm Technologies, Inc. Low Power Audio SubSystem (LPASS)
|
|||||||
Low Power Island (LPI) TLMM block
|
Low Power Island (LPI) TLMM block
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Srinivasa Rao Mandadapu <srivasam@codeaurora.org>
|
|
||||||
- Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
- Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Qualcomm Technologies, Inc. SC7280 TLMM block
|
title: Qualcomm Technologies, Inc. SC7280 TLMM block
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Rajendra Nayak <rnayak@codeaurora.org>
|
- Bjorn Andersson <andersson@kernel.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
This binding describes the Top Level Mode Multiplexer block found in the
|
This binding describes the Top Level Mode Multiplexer block found in the
|
||||||
|
@ -8,7 +8,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Amlogic Meson Everything-Else Power Domains
|
title: Amlogic Meson Everything-Else Power Domains
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |+
|
description: |+
|
||||||
The Everything-Else Power Domains node should be the child of a syscon
|
The Everything-Else Power Domains node should be the child of a syscon
|
||||||
|
@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||||||
title: Qualcomm RPM/RPMh Power domains
|
title: Qualcomm RPM/RPMh Power domains
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Rajendra Nayak <rnayak@codeaurora.org>
|
- Bjorn Andersson <andersson@kernel.org>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh
|
For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh
|
||||||
|
@ -35,6 +35,7 @@ patternProperties:
|
|||||||
description: List of regulators and its properties
|
description: List of regulators and its properties
|
||||||
type: object
|
type: object
|
||||||
$ref: regulator.yaml#
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
qcom,ocp-max-retries:
|
qcom,ocp-max-retries:
|
||||||
@ -100,8 +101,6 @@ patternProperties:
|
|||||||
SAW controlled gang leader. Will be configured as SAW regulator.
|
SAW controlled gang leader. Will be configured as SAW regulator.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|
||||||
unevaluatedProperties: false
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson SoC Reset Controller
|
title: Amlogic Meson SoC Reset Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -17,9 +17,6 @@ description:
|
|||||||
acts as directory-based coherency manager.
|
acts as directory-based coherency manager.
|
||||||
All the properties in ePAPR/DeviceTree specification applies for this platform.
|
All the properties in ePAPR/DeviceTree specification applies for this platform.
|
||||||
|
|
||||||
allOf:
|
|
||||||
- $ref: /schemas/cache-controller.yaml#
|
|
||||||
|
|
||||||
select:
|
select:
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
@ -33,11 +30,16 @@ select:
|
|||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
items:
|
oneOf:
|
||||||
- enum:
|
- items:
|
||||||
- sifive,fu540-c000-ccache
|
- enum:
|
||||||
- sifive,fu740-c000-ccache
|
- sifive,fu540-c000-ccache
|
||||||
- const: cache
|
- sifive,fu740-c000-ccache
|
||||||
|
- const: cache
|
||||||
|
- items:
|
||||||
|
- const: microchip,mpfs-ccache
|
||||||
|
- const: sifive,fu540-c000-ccache
|
||||||
|
- const: cache
|
||||||
|
|
||||||
cache-block-size:
|
cache-block-size:
|
||||||
const: 64
|
const: 64
|
||||||
@ -72,29 +74,46 @@ properties:
|
|||||||
The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
|
The reference to the reserved-memory for the L2 Loosely Integrated Memory region.
|
||||||
The reserved memory node should be defined as per the bindings in reserved-memory.txt.
|
The reserved memory node should be defined as per the bindings in reserved-memory.txt.
|
||||||
|
|
||||||
if:
|
allOf:
|
||||||
properties:
|
- $ref: /schemas/cache-controller.yaml#
|
||||||
compatible:
|
|
||||||
contains:
|
|
||||||
const: sifive,fu540-c000-ccache
|
|
||||||
|
|
||||||
then:
|
- if:
|
||||||
properties:
|
properties:
|
||||||
interrupts:
|
compatible:
|
||||||
description: |
|
contains:
|
||||||
Must contain entries for DirError, DataError and DataFail signals.
|
enum:
|
||||||
maxItems: 3
|
- sifive,fu740-c000-ccache
|
||||||
cache-sets:
|
- microchip,mpfs-ccache
|
||||||
const: 1024
|
|
||||||
|
|
||||||
else:
|
then:
|
||||||
properties:
|
properties:
|
||||||
interrupts:
|
interrupts:
|
||||||
description: |
|
description: |
|
||||||
Must contain entries for DirError, DataError, DataFail, DirFail signals.
|
Must contain entries for DirError, DataError, DataFail, DirFail signals.
|
||||||
minItems: 4
|
minItems: 4
|
||||||
cache-sets:
|
|
||||||
const: 2048
|
else:
|
||||||
|
properties:
|
||||||
|
interrupts:
|
||||||
|
description: |
|
||||||
|
Must contain entries for DirError, DataError and DataFail signals.
|
||||||
|
maxItems: 3
|
||||||
|
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: sifive,fu740-c000-ccache
|
||||||
|
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
cache-sets:
|
||||||
|
const: 2048
|
||||||
|
|
||||||
|
else:
|
||||||
|
properties:
|
||||||
|
cache-sets:
|
||||||
|
const: 1024
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson Random number generator
|
title: Amlogic Meson Random number generator
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson SoC UART Serial Interface
|
title: Amlogic Meson SoC UART Serial Interface
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The Amlogic Meson SoC UART Serial Interface is present on a large range
|
The Amlogic Meson SoC UART Serial Interface is present on a large range
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Canvas Video Lookup Table
|
title: Amlogic Canvas Video Lookup Table
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
- Maxime Jourdan <mjourdan@baylibre.com>
|
- Maxime Jourdan <mjourdan@baylibre.com>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson SPI Communication Controller
|
title: Amlogic Meson SPI Communication Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "spi-controller.yaml#"
|
- $ref: "spi-controller.yaml#"
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson SPI Flash Controller
|
title: Amlogic Meson SPI Flash Controller
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "spi-controller.yaml#"
|
- $ref: "spi-controller.yaml#"
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Amlogic Meson G12A DWC3 USB SoC Controller Glue
|
title: Amlogic Meson G12A DWC3 USB SoC Controller Glue
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
description: |
|
description: |
|
||||||
The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3
|
The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3
|
||||||
|
@ -24,6 +24,7 @@ properties:
|
|||||||
- mediatek,mt2712-mtu3
|
- mediatek,mt2712-mtu3
|
||||||
- mediatek,mt8173-mtu3
|
- mediatek,mt8173-mtu3
|
||||||
- mediatek,mt8183-mtu3
|
- mediatek,mt8183-mtu3
|
||||||
|
- mediatek,mt8188-mtu3
|
||||||
- mediatek,mt8192-mtu3
|
- mediatek,mt8192-mtu3
|
||||||
- mediatek,mt8195-mtu3
|
- mediatek,mt8195-mtu3
|
||||||
- const: mediatek,mtu3
|
- const: mediatek,mtu3
|
||||||
|
@ -33,6 +33,7 @@ properties:
|
|||||||
- qcom,sm6115-dwc3
|
- qcom,sm6115-dwc3
|
||||||
- qcom,sm6125-dwc3
|
- qcom,sm6125-dwc3
|
||||||
- qcom,sm6350-dwc3
|
- qcom,sm6350-dwc3
|
||||||
|
- qcom,sm6375-dwc3
|
||||||
- qcom,sm8150-dwc3
|
- qcom,sm8150-dwc3
|
||||||
- qcom,sm8250-dwc3
|
- qcom,sm8250-dwc3
|
||||||
- qcom,sm8350-dwc3
|
- qcom,sm8350-dwc3
|
||||||
@ -108,12 +109,17 @@ properties:
|
|||||||
HS/FS/LS modes are supported.
|
HS/FS/LS modes are supported.
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|
||||||
|
wakeup-source: true
|
||||||
|
|
||||||
# Required child node:
|
# Required child node:
|
||||||
|
|
||||||
patternProperties:
|
patternProperties:
|
||||||
"^usb@[0-9a-f]+$":
|
"^usb@[0-9a-f]+$":
|
||||||
$ref: snps,dwc3.yaml#
|
$ref: snps,dwc3.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
wakeup-source: false
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
|
@ -8,7 +8,7 @@ $schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
|||||||
title: Meson GXBB SoCs Watchdog timer
|
title: Meson GXBB SoCs Watchdog timer
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Neil Armstrong <narmstrong@baylibre.com>
|
- Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: watchdog.yaml#
|
- $ref: watchdog.yaml#
|
||||||
|
@ -64,7 +64,7 @@ correct address for this module, you could get in big trouble (read:
|
|||||||
crashes, data corruption, etc.). Try this only as a last resort (try BIOS
|
crashes, data corruption, etc.). Try this only as a last resort (try BIOS
|
||||||
updates first, for example), and backup first! An even more dangerous
|
updates first, for example), and backup first! An even more dangerous
|
||||||
option is 'force_addr=<IOPORT>'. This will not only enable the PIIX4 like
|
option is 'force_addr=<IOPORT>'. This will not only enable the PIIX4 like
|
||||||
'force' foes, but it will also set a new base I/O port address. The SMBus
|
'force' does, but it will also set a new base I/O port address. The SMBus
|
||||||
parts of the PIIX4 needs a range of 8 of these addresses to function
|
parts of the PIIX4 needs a range of 8 of these addresses to function
|
||||||
correctly. If these addresses are already reserved by some other device,
|
correctly. If these addresses are already reserved by some other device,
|
||||||
you will get into big trouble! DON'T USE THIS IF YOU ARE NOT VERY SURE
|
you will get into big trouble! DON'T USE THIS IF YOU ARE NOT VERY SURE
|
||||||
@ -86,15 +86,15 @@ If you own Force CPCI735 motherboard or other OSB4 based systems you may need
|
|||||||
to change the SMBus Interrupt Select register so the SMBus controller uses
|
to change the SMBus Interrupt Select register so the SMBus controller uses
|
||||||
the SMI mode.
|
the SMI mode.
|
||||||
|
|
||||||
1) Use lspci command and locate the PCI device with the SMBus controller:
|
1) Use ``lspci`` command and locate the PCI device with the SMBus controller:
|
||||||
00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 4f)
|
00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 4f)
|
||||||
The line may vary for different chipsets. Please consult the driver source
|
The line may vary for different chipsets. Please consult the driver source
|
||||||
for all possible PCI ids (and lspci -n to match them). Lets assume the
|
for all possible PCI ids (and ``lspci -n`` to match them). Let's assume the
|
||||||
device is located at 00:0f.0.
|
device is located at 00:0f.0.
|
||||||
2) Now you just need to change the value in 0xD2 register. Get it first with
|
2) Now you just need to change the value in 0xD2 register. Get it first with
|
||||||
command: lspci -xxx -s 00:0f.0
|
command: ``lspci -xxx -s 00:0f.0``
|
||||||
If the value is 0x3 then you need to change it to 0x1:
|
If the value is 0x3 then you need to change it to 0x1:
|
||||||
setpci -s 00:0f.0 d2.b=1
|
``setpci -s 00:0f.0 d2.b=1``
|
||||||
|
|
||||||
Please note that you don't need to do that in all cases, just when the SMBus is
|
Please note that you don't need to do that in all cases, just when the SMBus is
|
||||||
not working properly.
|
not working properly.
|
||||||
@ -109,6 +109,3 @@ which can easily get corrupted due to a state machine bug. These are mostly
|
|||||||
Thinkpad laptops, but desktop systems may also be affected. We have no list
|
Thinkpad laptops, but desktop systems may also be affected. We have no list
|
||||||
of all affected systems, so the only safe solution was to prevent access to
|
of all affected systems, so the only safe solution was to prevent access to
|
||||||
the SMBus on all IBM systems (detected using DMI data.)
|
the SMBus on all IBM systems (detected using DMI data.)
|
||||||
|
|
||||||
For additional information, read:
|
|
||||||
http://www.lm-sensors.org/browser/lm-sensors/trunk/README
|
|
||||||
|
@ -148,7 +148,7 @@ You can do plain I2C transactions by using read(2) and write(2) calls.
|
|||||||
You do not need to pass the address byte; instead, set it through
|
You do not need to pass the address byte; instead, set it through
|
||||||
ioctl I2C_SLAVE before you try to access the device.
|
ioctl I2C_SLAVE before you try to access the device.
|
||||||
|
|
||||||
You can do SMBus level transactions (see documentation file smbus-protocol
|
You can do SMBus level transactions (see documentation file smbus-protocol.rst
|
||||||
for details) through the following functions::
|
for details) through the following functions::
|
||||||
|
|
||||||
__s32 i2c_smbus_write_quick(int file, __u8 value);
|
__s32 i2c_smbus_write_quick(int file, __u8 value);
|
||||||
|
@ -5,6 +5,8 @@ I2C muxes and complex topologies
|
|||||||
There are a couple of reasons for building more complex I2C topologies
|
There are a couple of reasons for building more complex I2C topologies
|
||||||
than a straight-forward I2C bus with one adapter and one or more devices.
|
than a straight-forward I2C bus with one adapter and one or more devices.
|
||||||
|
|
||||||
|
Some example use cases are:
|
||||||
|
|
||||||
1. A mux may be needed on the bus to prevent address collisions.
|
1. A mux may be needed on the bus to prevent address collisions.
|
||||||
|
|
||||||
2. The bus may be accessible from some external bus master, and arbitration
|
2. The bus may be accessible from some external bus master, and arbitration
|
||||||
@ -14,10 +16,10 @@ than a straight-forward I2C bus with one adapter and one or more devices.
|
|||||||
from the I2C bus, at least most of the time, and sits behind a gate
|
from the I2C bus, at least most of the time, and sits behind a gate
|
||||||
that has to be operated before the device can be accessed.
|
that has to be operated before the device can be accessed.
|
||||||
|
|
||||||
Etc
|
Several types of hardware components such as I2C muxes, I2C gates and I2C
|
||||||
===
|
arbitrators allow to handle such needs.
|
||||||
|
|
||||||
These constructs are represented as I2C adapter trees by Linux, where
|
These components are represented as I2C adapter trees by Linux, where
|
||||||
each adapter has a parent adapter (except the root adapter) and zero or
|
each adapter has a parent adapter (except the root adapter) and zero or
|
||||||
more child adapters. The root adapter is the actual adapter that issues
|
more child adapters. The root adapter is the actual adapter that issues
|
||||||
I2C transfers, and all adapters with a parent are part of an "i2c-mux"
|
I2C transfers, and all adapters with a parent are part of an "i2c-mux"
|
||||||
@ -35,46 +37,7 @@ Locking
|
|||||||
=======
|
=======
|
||||||
|
|
||||||
There are two variants of locking available to I2C muxes, they can be
|
There are two variants of locking available to I2C muxes, they can be
|
||||||
mux-locked or parent-locked muxes. As is evident from below, it can be
|
mux-locked or parent-locked muxes.
|
||||||
useful to know if a mux is mux-locked or if it is parent-locked. The
|
|
||||||
following list was correct at the time of writing:
|
|
||||||
|
|
||||||
In drivers/i2c/muxes/:
|
|
||||||
|
|
||||||
====================== =============================================
|
|
||||||
i2c-arb-gpio-challenge Parent-locked
|
|
||||||
i2c-mux-gpio Normally parent-locked, mux-locked iff
|
|
||||||
all involved gpio pins are controlled by the
|
|
||||||
same I2C root adapter that they mux.
|
|
||||||
i2c-mux-gpmux Normally parent-locked, mux-locked iff
|
|
||||||
specified in device-tree.
|
|
||||||
i2c-mux-ltc4306 Mux-locked
|
|
||||||
i2c-mux-mlxcpld Parent-locked
|
|
||||||
i2c-mux-pca9541 Parent-locked
|
|
||||||
i2c-mux-pca954x Parent-locked
|
|
||||||
i2c-mux-pinctrl Normally parent-locked, mux-locked iff
|
|
||||||
all involved pinctrl devices are controlled
|
|
||||||
by the same I2C root adapter that they mux.
|
|
||||||
i2c-mux-reg Parent-locked
|
|
||||||
====================== =============================================
|
|
||||||
|
|
||||||
In drivers/iio/:
|
|
||||||
|
|
||||||
====================== =============================================
|
|
||||||
gyro/mpu3050 Mux-locked
|
|
||||||
imu/inv_mpu6050/ Mux-locked
|
|
||||||
====================== =============================================
|
|
||||||
|
|
||||||
In drivers/media/:
|
|
||||||
|
|
||||||
======================= =============================================
|
|
||||||
dvb-frontends/lgdt3306a Mux-locked
|
|
||||||
dvb-frontends/m88ds3103 Parent-locked
|
|
||||||
dvb-frontends/rtl2830 Parent-locked
|
|
||||||
dvb-frontends/rtl2832 Mux-locked
|
|
||||||
dvb-frontends/si2168 Mux-locked
|
|
||||||
usb/cx231xx/ Parent-locked
|
|
||||||
======================= =============================================
|
|
||||||
|
|
||||||
|
|
||||||
Mux-locked muxes
|
Mux-locked muxes
|
||||||
@ -89,40 +52,8 @@ full transaction, unrelated I2C transfers may interleave the different
|
|||||||
stages of the transaction. This has the benefit that the mux driver
|
stages of the transaction. This has the benefit that the mux driver
|
||||||
may be easier and cleaner to implement, but it has some caveats.
|
may be easier and cleaner to implement, but it has some caveats.
|
||||||
|
|
||||||
==== =====================================================================
|
|
||||||
ML1. If you build a topology with a mux-locked mux being the parent
|
|
||||||
of a parent-locked mux, this might break the expectation from the
|
|
||||||
parent-locked mux that the root adapter is locked during the
|
|
||||||
transaction.
|
|
||||||
|
|
||||||
ML2. It is not safe to build arbitrary topologies with two (or more)
|
|
||||||
mux-locked muxes that are not siblings, when there are address
|
|
||||||
collisions between the devices on the child adapters of these
|
|
||||||
non-sibling muxes.
|
|
||||||
|
|
||||||
I.e. the select-transfer-deselect transaction targeting e.g. device
|
|
||||||
address 0x42 behind mux-one may be interleaved with a similar
|
|
||||||
operation targeting device address 0x42 behind mux-two. The
|
|
||||||
intension with such a topology would in this hypothetical example
|
|
||||||
be that mux-one and mux-two should not be selected simultaneously,
|
|
||||||
but mux-locked muxes do not guarantee that in all topologies.
|
|
||||||
|
|
||||||
ML3. A mux-locked mux cannot be used by a driver for auto-closing
|
|
||||||
gates/muxes, i.e. something that closes automatically after a given
|
|
||||||
number (one, in most cases) of I2C transfers. Unrelated I2C transfers
|
|
||||||
may creep in and close prematurely.
|
|
||||||
|
|
||||||
ML4. If any non-I2C operation in the mux driver changes the I2C mux state,
|
|
||||||
the driver has to lock the root adapter during that operation.
|
|
||||||
Otherwise garbage may appear on the bus as seen from devices
|
|
||||||
behind the mux, when an unrelated I2C transfer is in flight during
|
|
||||||
the non-I2C mux-changing operation.
|
|
||||||
==== =====================================================================
|
|
||||||
|
|
||||||
|
|
||||||
Mux-locked Example
|
Mux-locked Example
|
||||||
------------------
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
@ -153,6 +84,43 @@ This means that accesses to D2 are lockout out for the full duration
|
|||||||
of the entire operation. But accesses to D3 are possibly interleaved
|
of the entire operation. But accesses to D3 are possibly interleaved
|
||||||
at any point.
|
at any point.
|
||||||
|
|
||||||
|
Mux-locked caveats
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
When using a mux-locked mux, be aware of the following restrictions:
|
||||||
|
|
||||||
|
[ML1]
|
||||||
|
If you build a topology with a mux-locked mux being the parent
|
||||||
|
of a parent-locked mux, this might break the expectation from the
|
||||||
|
parent-locked mux that the root adapter is locked during the
|
||||||
|
transaction.
|
||||||
|
|
||||||
|
[ML2]
|
||||||
|
It is not safe to build arbitrary topologies with two (or more)
|
||||||
|
mux-locked muxes that are not siblings, when there are address
|
||||||
|
collisions between the devices on the child adapters of these
|
||||||
|
non-sibling muxes.
|
||||||
|
|
||||||
|
I.e. the select-transfer-deselect transaction targeting e.g. device
|
||||||
|
address 0x42 behind mux-one may be interleaved with a similar
|
||||||
|
operation targeting device address 0x42 behind mux-two. The
|
||||||
|
intent with such a topology would in this hypothetical example
|
||||||
|
be that mux-one and mux-two should not be selected simultaneously,
|
||||||
|
but mux-locked muxes do not guarantee that in all topologies.
|
||||||
|
|
||||||
|
[ML3]
|
||||||
|
A mux-locked mux cannot be used by a driver for auto-closing
|
||||||
|
gates/muxes, i.e. something that closes automatically after a given
|
||||||
|
number (one, in most cases) of I2C transfers. Unrelated I2C transfers
|
||||||
|
may creep in and close prematurely.
|
||||||
|
|
||||||
|
[ML4]
|
||||||
|
If any non-I2C operation in the mux driver changes the I2C mux state,
|
||||||
|
the driver has to lock the root adapter during that operation.
|
||||||
|
Otherwise garbage may appear on the bus as seen from devices
|
||||||
|
behind the mux, when an unrelated I2C transfer is in flight during
|
||||||
|
the non-I2C mux-changing operation.
|
||||||
|
|
||||||
|
|
||||||
Parent-locked muxes
|
Parent-locked muxes
|
||||||
-------------------
|
-------------------
|
||||||
@ -161,28 +129,10 @@ Parent-locked muxes lock the parent adapter during the full select-
|
|||||||
transfer-deselect transaction. The implication is that the mux driver
|
transfer-deselect transaction. The implication is that the mux driver
|
||||||
has to ensure that any and all I2C transfers through that parent
|
has to ensure that any and all I2C transfers through that parent
|
||||||
adapter during the transaction are unlocked I2C transfers (using e.g.
|
adapter during the transaction are unlocked I2C transfers (using e.g.
|
||||||
__i2c_transfer), or a deadlock will follow. There are a couple of
|
__i2c_transfer), or a deadlock will follow.
|
||||||
caveats.
|
|
||||||
|
|
||||||
==== ====================================================================
|
|
||||||
PL1. If you build a topology with a parent-locked mux being the child
|
|
||||||
of another mux, this might break a possible assumption from the
|
|
||||||
child mux that the root adapter is unused between its select op
|
|
||||||
and the actual transfer (e.g. if the child mux is auto-closing
|
|
||||||
and the parent mux issues I2C transfers as part of its select).
|
|
||||||
This is especially the case if the parent mux is mux-locked, but
|
|
||||||
it may also happen if the parent mux is parent-locked.
|
|
||||||
|
|
||||||
PL2. If select/deselect calls out to other subsystems such as gpio,
|
|
||||||
pinctrl, regmap or iio, it is essential that any I2C transfers
|
|
||||||
caused by these subsystems are unlocked. This can be convoluted to
|
|
||||||
accomplish, maybe even impossible if an acceptably clean solution
|
|
||||||
is sought.
|
|
||||||
==== ====================================================================
|
|
||||||
|
|
||||||
|
|
||||||
Parent-locked Example
|
Parent-locked Example
|
||||||
---------------------
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
@ -212,10 +162,30 @@ When there is an access to D1, this happens:
|
|||||||
9. M1 unlocks its parent adapter.
|
9. M1 unlocks its parent adapter.
|
||||||
10. M1 unlocks muxes on its parent.
|
10. M1 unlocks muxes on its parent.
|
||||||
|
|
||||||
|
|
||||||
This means that accesses to both D2 and D3 are locked out for the full
|
This means that accesses to both D2 and D3 are locked out for the full
|
||||||
duration of the entire operation.
|
duration of the entire operation.
|
||||||
|
|
||||||
|
Parent-locked Caveats
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
When using a parent-locked mux, be aware of the following restrictions:
|
||||||
|
|
||||||
|
[PL1]
|
||||||
|
If you build a topology with a parent-locked mux being the child
|
||||||
|
of another mux, this might break a possible assumption from the
|
||||||
|
child mux that the root adapter is unused between its select op
|
||||||
|
and the actual transfer (e.g. if the child mux is auto-closing
|
||||||
|
and the parent mux issues I2C transfers as part of its select).
|
||||||
|
This is especially the case if the parent mux is mux-locked, but
|
||||||
|
it may also happen if the parent mux is parent-locked.
|
||||||
|
|
||||||
|
[PL2]
|
||||||
|
If select/deselect calls out to other subsystems such as gpio,
|
||||||
|
pinctrl, regmap or iio, it is essential that any I2C transfers
|
||||||
|
caused by these subsystems are unlocked. This can be convoluted to
|
||||||
|
accomplish, maybe even impossible if an acceptably clean solution
|
||||||
|
is sought.
|
||||||
|
|
||||||
|
|
||||||
Complex Examples
|
Complex Examples
|
||||||
================
|
================
|
||||||
@ -261,8 +231,10 @@ This is a good topology::
|
|||||||
When device D1 is accessed, accesses to D2 are locked out for the
|
When device D1 is accessed, accesses to D2 are locked out for the
|
||||||
full duration of the operation (muxes on the top child adapter of M1
|
full duration of the operation (muxes on the top child adapter of M1
|
||||||
are locked). But accesses to D3 and D4 are possibly interleaved at
|
are locked). But accesses to D3 and D4 are possibly interleaved at
|
||||||
any point. Accesses to D3 locks out D1 and D2, but accesses to D4
|
any point.
|
||||||
are still possibly interleaved.
|
|
||||||
|
Accesses to D3 locks out D1 and D2, but accesses to D4 are still possibly
|
||||||
|
interleaved.
|
||||||
|
|
||||||
|
|
||||||
Mux-locked mux as parent of parent-locked mux
|
Mux-locked mux as parent of parent-locked mux
|
||||||
@ -394,3 +366,47 @@ This is a good topology::
|
|||||||
When D1 or D2 are accessed, accesses to D3 and D4 are locked out while
|
When D1 or D2 are accessed, accesses to D3 and D4 are locked out while
|
||||||
accesses to D5 may interleave. When D3 or D4 are accessed, accesses to
|
accesses to D5 may interleave. When D3 or D4 are accessed, accesses to
|
||||||
all other devices are locked out.
|
all other devices are locked out.
|
||||||
|
|
||||||
|
|
||||||
|
Mux type of existing device drivers
|
||||||
|
===================================
|
||||||
|
|
||||||
|
Whether a device is mux-locked or parent-locked depends on its
|
||||||
|
implementation. The following list was correct at the time of writing:
|
||||||
|
|
||||||
|
In drivers/i2c/muxes/:
|
||||||
|
|
||||||
|
====================== =============================================
|
||||||
|
i2c-arb-gpio-challenge Parent-locked
|
||||||
|
i2c-mux-gpio Normally parent-locked, mux-locked iff
|
||||||
|
all involved gpio pins are controlled by the
|
||||||
|
same I2C root adapter that they mux.
|
||||||
|
i2c-mux-gpmux Normally parent-locked, mux-locked iff
|
||||||
|
specified in device-tree.
|
||||||
|
i2c-mux-ltc4306 Mux-locked
|
||||||
|
i2c-mux-mlxcpld Parent-locked
|
||||||
|
i2c-mux-pca9541 Parent-locked
|
||||||
|
i2c-mux-pca954x Parent-locked
|
||||||
|
i2c-mux-pinctrl Normally parent-locked, mux-locked iff
|
||||||
|
all involved pinctrl devices are controlled
|
||||||
|
by the same I2C root adapter that they mux.
|
||||||
|
i2c-mux-reg Parent-locked
|
||||||
|
====================== =============================================
|
||||||
|
|
||||||
|
In drivers/iio/:
|
||||||
|
|
||||||
|
====================== =============================================
|
||||||
|
gyro/mpu3050 Mux-locked
|
||||||
|
imu/inv_mpu6050/ Mux-locked
|
||||||
|
====================== =============================================
|
||||||
|
|
||||||
|
In drivers/media/:
|
||||||
|
|
||||||
|
======================= =============================================
|
||||||
|
dvb-frontends/lgdt3306a Mux-locked
|
||||||
|
dvb-frontends/m88ds3103 Parent-locked
|
||||||
|
dvb-frontends/rtl2830 Parent-locked
|
||||||
|
dvb-frontends/rtl2832 Mux-locked
|
||||||
|
dvb-frontends/si2168 Mux-locked
|
||||||
|
usb/cx231xx/ Parent-locked
|
||||||
|
======================= =============================================
|
||||||
|
@ -32,9 +32,9 @@ User manual
|
|||||||
===========
|
===========
|
||||||
|
|
||||||
I2C slave backends behave like standard I2C clients. So, you can instantiate
|
I2C slave backends behave like standard I2C clients. So, you can instantiate
|
||||||
them as described in the document 'instantiating-devices'. The only difference
|
them as described in the document instantiating-devices.rst. The only
|
||||||
is that i2c slave backends have their own address space. So, you have to add
|
difference is that i2c slave backends have their own address space. So, you
|
||||||
0x1000 to the address you would originally request. An example for
|
have to add 0x1000 to the address you would originally request. An example for
|
||||||
instantiating the slave-eeprom driver from userspace at the 7 bit address 0x64
|
instantiating the slave-eeprom driver from userspace at the 7 bit address 0x64
|
||||||
on bus 1::
|
on bus 1::
|
||||||
|
|
||||||
|
@ -364,7 +364,7 @@ stop condition is issued between transaction. The i2c_msg structure
|
|||||||
contains for each message the client address, the number of bytes of the
|
contains for each message the client address, the number of bytes of the
|
||||||
message and the message data itself.
|
message and the message data itself.
|
||||||
|
|
||||||
You can read the file ``i2c-protocol`` for more information about the
|
You can read the file i2c-protocol.rst for more information about the
|
||||||
actual I2C protocol.
|
actual I2C protocol.
|
||||||
|
|
||||||
|
|
||||||
@ -414,7 +414,7 @@ transactions return 0 on success; the 'read' transactions return the read
|
|||||||
value, except for block transactions, which return the number of values
|
value, except for block transactions, which return the number of values
|
||||||
read. The block buffers need not be longer than 32 bytes.
|
read. The block buffers need not be longer than 32 bytes.
|
||||||
|
|
||||||
You can read the file ``smbus-protocol`` for more information about the
|
You can read the file smbus-protocol.rst for more information about the
|
||||||
actual SMBus protocol.
|
actual SMBus protocol.
|
||||||
|
|
||||||
|
|
||||||
|
@ -517,6 +517,7 @@ All I-Force devices are supported by the iforce module. This includes:
|
|||||||
* AVB Mag Turbo Force
|
* AVB Mag Turbo Force
|
||||||
* AVB Top Shot Pegasus
|
* AVB Top Shot Pegasus
|
||||||
* AVB Top Shot Force Feedback Racing Wheel
|
* AVB Top Shot Force Feedback Racing Wheel
|
||||||
|
* Boeder Force Feedback Wheel
|
||||||
* Logitech WingMan Force
|
* Logitech WingMan Force
|
||||||
* Logitech WingMan Force Wheel
|
* Logitech WingMan Force Wheel
|
||||||
* Guillemot Race Leader Force Feedback
|
* Guillemot Race Leader Force Feedback
|
||||||
|
@ -67,7 +67,7 @@ The ``netdevsim`` driver supports rate objects management, which includes:
|
|||||||
- setting tx_share and tx_max rate values for any rate object type;
|
- setting tx_share and tx_max rate values for any rate object type;
|
||||||
- setting parent node for any rate object type.
|
- setting parent node for any rate object type.
|
||||||
|
|
||||||
Rate nodes and it's parameters are exposed in ``netdevsim`` debugfs in RO mode.
|
Rate nodes and their parameters are exposed in ``netdevsim`` debugfs in RO mode.
|
||||||
For example created rate node with name ``some_group``:
|
For example created rate node with name ``some_group``:
|
||||||
|
|
||||||
.. code:: shell
|
.. code:: shell
|
||||||
|
@ -8,7 +8,7 @@ Transmit path guidelines:
|
|||||||
|
|
||||||
1) The ndo_start_xmit method must not return NETDEV_TX_BUSY under
|
1) The ndo_start_xmit method must not return NETDEV_TX_BUSY under
|
||||||
any normal circumstances. It is considered a hard error unless
|
any normal circumstances. It is considered a hard error unless
|
||||||
there is no way your device can tell ahead of time when it's
|
there is no way your device can tell ahead of time when its
|
||||||
transmit function will become busy.
|
transmit function will become busy.
|
||||||
|
|
||||||
Instead it must maintain the queue properly. For example,
|
Instead it must maintain the queue properly. For example,
|
||||||
|
@ -1035,7 +1035,10 @@ tcp_limit_output_bytes - INTEGER
|
|||||||
tcp_challenge_ack_limit - INTEGER
|
tcp_challenge_ack_limit - INTEGER
|
||||||
Limits number of Challenge ACK sent per second, as recommended
|
Limits number of Challenge ACK sent per second, as recommended
|
||||||
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
|
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
|
||||||
Default: 1000
|
Note that this per netns rate limit can allow some side channel
|
||||||
|
attacks and probably should not be enabled.
|
||||||
|
TCP stack implements per TCP socket limits anyway.
|
||||||
|
Default: INT_MAX (unlimited)
|
||||||
|
|
||||||
UDP variables
|
UDP variables
|
||||||
=============
|
=============
|
||||||
|
@ -11,7 +11,7 @@ Initial Release:
|
|||||||
================
|
================
|
||||||
This is conceptually very similar to the macvlan driver with one major
|
This is conceptually very similar to the macvlan driver with one major
|
||||||
exception of using L3 for mux-ing /demux-ing among slaves. This property makes
|
exception of using L3 for mux-ing /demux-ing among slaves. This property makes
|
||||||
the master device share the L2 with it's slave devices. I have developed this
|
the master device share the L2 with its slave devices. I have developed this
|
||||||
driver in conjunction with network namespaces and not sure if there is use case
|
driver in conjunction with network namespaces and not sure if there is use case
|
||||||
outside of it.
|
outside of it.
|
||||||
|
|
||||||
|
@ -530,7 +530,7 @@ its tunnel close actions. For L2TPIP sockets, the socket's close
|
|||||||
handler initiates the same tunnel close actions. All sessions are
|
handler initiates the same tunnel close actions. All sessions are
|
||||||
first closed. Each session drops its tunnel ref. When the tunnel ref
|
first closed. Each session drops its tunnel ref. When the tunnel ref
|
||||||
reaches zero, the tunnel puts its socket ref. When the socket is
|
reaches zero, the tunnel puts its socket ref. When the socket is
|
||||||
eventually destroyed, it's sk_destruct finally frees the L2TP tunnel
|
eventually destroyed, its sk_destruct finally frees the L2TP tunnel
|
||||||
context.
|
context.
|
||||||
|
|
||||||
Sessions
|
Sessions
|
||||||
|
@ -47,7 +47,6 @@ allow_join_initial_addr_port - BOOLEAN
|
|||||||
Default: 1
|
Default: 1
|
||||||
|
|
||||||
pm_type - INTEGER
|
pm_type - INTEGER
|
||||||
|
|
||||||
Set the default path manager type to use for each new MPTCP
|
Set the default path manager type to use for each new MPTCP
|
||||||
socket. In-kernel path management will control subflow
|
socket. In-kernel path management will control subflow
|
||||||
connections and address advertisements according to
|
connections and address advertisements according to
|
||||||
|
@ -70,15 +70,6 @@ nf_conntrack_generic_timeout - INTEGER (seconds)
|
|||||||
Default for generic timeout. This refers to layer 4 unknown/unsupported
|
Default for generic timeout. This refers to layer 4 unknown/unsupported
|
||||||
protocols.
|
protocols.
|
||||||
|
|
||||||
nf_conntrack_helper - BOOLEAN
|
|
||||||
- 0 - disabled (default)
|
|
||||||
- not 0 - enabled
|
|
||||||
|
|
||||||
Enable automatic conntrack helper assignment.
|
|
||||||
If disabled it is required to set up iptables rules to assign
|
|
||||||
helpers to connections. See the CT target description in the
|
|
||||||
iptables-extensions(8) man page for further information.
|
|
||||||
|
|
||||||
nf_conntrack_icmp_timeout - INTEGER (seconds)
|
nf_conntrack_icmp_timeout - INTEGER (seconds)
|
||||||
default 30
|
default 30
|
||||||
|
|
||||||
|
@ -1055,17 +1055,6 @@ The kernel interface functions are as follows:
|
|||||||
first function to change. Note that this must be called in TASK_RUNNING
|
first function to change. Note that this must be called in TASK_RUNNING
|
||||||
state.
|
state.
|
||||||
|
|
||||||
(#) Get reply timestamp::
|
|
||||||
|
|
||||||
bool rxrpc_kernel_get_reply_time(struct socket *sock,
|
|
||||||
struct rxrpc_call *call,
|
|
||||||
ktime_t *_ts)
|
|
||||||
|
|
||||||
This allows the timestamp on the first DATA packet of the reply of a
|
|
||||||
client call to be queried, provided that it is still in the Rx ring. If
|
|
||||||
successful, the timestamp will be stored into ``*_ts`` and true will be
|
|
||||||
returned; false will be returned otherwise.
|
|
||||||
|
|
||||||
(#) Get remote client epoch::
|
(#) Get remote client epoch::
|
||||||
|
|
||||||
u32 rxrpc_kernel_get_epoch(struct socket *sock,
|
u32 rxrpc_kernel_get_epoch(struct socket *sock,
|
||||||
|
@ -159,7 +159,7 @@ tools such as iproute2.
|
|||||||
|
|
||||||
The switchdev driver can know a particular port's position in the topology by
|
The switchdev driver can know a particular port's position in the topology by
|
||||||
monitoring NETDEV_CHANGEUPPER notifications. For example, a port moved into a
|
monitoring NETDEV_CHANGEUPPER notifications. For example, a port moved into a
|
||||||
bond will see it's upper master change. If that bond is moved into a bridge,
|
bond will see its upper master change. If that bond is moved into a bridge,
|
||||||
the bond's upper master will change. And so on. The driver will track such
|
the bond's upper master will change. And so on. The driver will track such
|
||||||
movements to know what position a port is in in the overall topology by
|
movements to know what position a port is in in the overall topology by
|
||||||
registering for netdevice events and acting on NETDEV_CHANGEUPPER.
|
registering for netdevice events and acting on NETDEV_CHANGEUPPER.
|
||||||
|
@ -70,8 +70,16 @@
|
|||||||
|
|
||||||
% Translations have Asian (CJK) characters which are only displayed if
|
% Translations have Asian (CJK) characters which are only displayed if
|
||||||
% xeCJK is used
|
% xeCJK is used
|
||||||
|
\usepackage{ifthen}
|
||||||
|
\newboolean{enablecjk}
|
||||||
|
\setboolean{enablecjk}{false}
|
||||||
\IfFontExistsTF{Noto Sans CJK SC}{
|
\IfFontExistsTF{Noto Sans CJK SC}{
|
||||||
% Load xeCJK when CJK font is available
|
\IfFileExists{xeCJK.sty}{
|
||||||
|
\setboolean{enablecjk}{true}
|
||||||
|
}{}
|
||||||
|
}{}
|
||||||
|
\ifthenelse{\boolean{enablecjk}}{
|
||||||
|
% Load xeCJK when both the Noto Sans CJK font and xeCJK.sty are available.
|
||||||
\usepackage{xeCJK}
|
\usepackage{xeCJK}
|
||||||
% Noto CJK fonts don't provide slant shape. [AutoFakeSlant] permits
|
% Noto CJK fonts don't provide slant shape. [AutoFakeSlant] permits
|
||||||
% its emulation.
|
% its emulation.
|
||||||
@ -196,7 +204,7 @@
|
|||||||
% Inactivate CJK after tableofcontents
|
% Inactivate CJK after tableofcontents
|
||||||
\apptocmd{\sphinxtableofcontents}{\kerneldocCJKoff}{}{}
|
\apptocmd{\sphinxtableofcontents}{\kerneldocCJKoff}{}{}
|
||||||
\xeCJKsetup{CJKspace = true}% For inter-phrase space of Korean TOC
|
\xeCJKsetup{CJKspace = true}% For inter-phrase space of Korean TOC
|
||||||
}{ % No CJK font found
|
}{ % Don't enable CJK
|
||||||
% Custom macros to on/off CJK and switch CJK fonts (Dummy)
|
% Custom macros to on/off CJK and switch CJK fonts (Dummy)
|
||||||
\newcommand{\kerneldocCJKon}{}
|
\newcommand{\kerneldocCJKon}{}
|
||||||
\newcommand{\kerneldocCJKoff}{}
|
\newcommand{\kerneldocCJKoff}{}
|
||||||
@ -204,14 +212,16 @@
|
|||||||
%% and ignore the argument (#1) in their definitions, whole contents of
|
%% and ignore the argument (#1) in their definitions, whole contents of
|
||||||
%% CJK chapters can be ignored.
|
%% CJK chapters can be ignored.
|
||||||
\newcommand{\kerneldocBeginSC}[1]{%
|
\newcommand{\kerneldocBeginSC}[1]{%
|
||||||
%% Put a note on missing CJK fonts in place of zh_CN translation.
|
%% Put a note on missing CJK fonts or the xecjk package in place of
|
||||||
\begin{sphinxadmonition}{note}{Note on missing fonts:}
|
%% zh_CN translation.
|
||||||
|
\begin{sphinxadmonition}{note}{Note on missing fonts and a package:}
|
||||||
Translations of Simplified Chinese (zh\_CN), Traditional Chinese
|
Translations of Simplified Chinese (zh\_CN), Traditional Chinese
|
||||||
(zh\_TW), Korean (ko\_KR), and Japanese (ja\_JP) were skipped
|
(zh\_TW), Korean (ko\_KR), and Japanese (ja\_JP) were skipped
|
||||||
due to the lack of suitable font families.
|
due to the lack of suitable font families and/or the texlive-xecjk
|
||||||
|
package.
|
||||||
|
|
||||||
If you want them, please install ``Noto Sans CJK'' font families
|
If you want them, please install ``Noto Sans CJK'' font families
|
||||||
by following instructions from
|
along with the texlive-xecjk package by following instructions from
|
||||||
\sphinxcode{./scripts/sphinx-pre-install}.
|
\sphinxcode{./scripts/sphinx-pre-install}.
|
||||||
Having optional ``Noto Serif CJK'' font families will improve
|
Having optional ``Noto Serif CJK'' font families will improve
|
||||||
the looks of those translations.
|
the looks of those translations.
|
||||||
|
@ -35,8 +35,7 @@ Linux カーネルに変更を加えたいと思っている個人又は会社
|
|||||||
てもらえやすくする提案を集めたものです。
|
てもらえやすくする提案を集めたものです。
|
||||||
|
|
||||||
コードを投稿する前に、Documentation/process/submit-checklist.rst の項目リストに目
|
コードを投稿する前に、Documentation/process/submit-checklist.rst の項目リストに目
|
||||||
を通してチェックしてください。もしあなたがドライバーを投稿しようとし
|
を通してチェックしてください。
|
||||||
ているなら、Documentation/process/submitting-drivers.rst にも目を通してください。
|
|
||||||
|
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
セクション1 パッチの作り方と送り方
|
セクション1 パッチの作り方と送り方
|
||||||
|
77
MAINTAINERS
77
MAINTAINERS
@ -671,7 +671,8 @@ F: fs/afs/
|
|||||||
F: include/trace/events/afs.h
|
F: include/trace/events/afs.h
|
||||||
|
|
||||||
AGPGART DRIVER
|
AGPGART DRIVER
|
||||||
M: David Airlie <airlied@linux.ie>
|
M: David Airlie <airlied@redhat.com>
|
||||||
|
L: dri-devel@lists.freedesktop.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://anongit.freedesktop.org/drm/drm
|
T: git git://anongit.freedesktop.org/drm/drm
|
||||||
F: drivers/char/agp/
|
F: drivers/char/agp/
|
||||||
@ -1010,7 +1011,6 @@ F: drivers/spi/spi-amd.c
|
|||||||
|
|
||||||
AMD MP2 I2C DRIVER
|
AMD MP2 I2C DRIVER
|
||||||
M: Elie Morisse <syniurge@gmail.com>
|
M: Elie Morisse <syniurge@gmail.com>
|
||||||
M: Nehal Shah <nehal-bakulchandra.shah@amd.com>
|
|
||||||
M: Shyam Sundar S K <shyam-sundar.s-k@amd.com>
|
M: Shyam Sundar S K <shyam-sundar.s-k@amd.com>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -1803,7 +1803,7 @@ N: sun[x456789]i
|
|||||||
N: sun50i
|
N: sun50i
|
||||||
|
|
||||||
ARM/Amlogic Meson SoC CLOCK FRAMEWORK
|
ARM/Amlogic Meson SoC CLOCK FRAMEWORK
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
M: Jerome Brunet <jbrunet@baylibre.com>
|
M: Jerome Brunet <jbrunet@baylibre.com>
|
||||||
L: linux-amlogic@lists.infradead.org
|
L: linux-amlogic@lists.infradead.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -1828,7 +1828,7 @@ F: Documentation/devicetree/bindings/sound/amlogic*
|
|||||||
F: sound/soc/meson/
|
F: sound/soc/meson/
|
||||||
|
|
||||||
ARM/Amlogic Meson SoC support
|
ARM/Amlogic Meson SoC support
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
M: Kevin Hilman <khilman@baylibre.com>
|
M: Kevin Hilman <khilman@baylibre.com>
|
||||||
R: Jerome Brunet <jbrunet@baylibre.com>
|
R: Jerome Brunet <jbrunet@baylibre.com>
|
||||||
R: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
R: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
|
||||||
@ -2531,7 +2531,7 @@ W: http://www.digriz.org.uk/ts78xx/kernel
|
|||||||
F: arch/arm/mach-orion5x/ts78xx-*
|
F: arch/arm/mach-orion5x/ts78xx-*
|
||||||
|
|
||||||
ARM/OXNAS platform support
|
ARM/OXNAS platform support
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
L: linux-oxnas@groups.io (moderated for non-subscribers)
|
L: linux-oxnas@groups.io (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -2579,7 +2579,7 @@ W: http://www.armlinux.org.uk/
|
|||||||
|
|
||||||
ARM/QUALCOMM SUPPORT
|
ARM/QUALCOMM SUPPORT
|
||||||
M: Andy Gross <agross@kernel.org>
|
M: Andy Gross <agross@kernel.org>
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <andersson@kernel.org>
|
||||||
R: Konrad Dybcio <konrad.dybcio@somainline.org>
|
R: Konrad Dybcio <konrad.dybcio@somainline.org>
|
||||||
L: linux-arm-msm@vger.kernel.org
|
L: linux-arm-msm@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -5244,6 +5244,7 @@ F: block/blk-throttle.c
|
|||||||
F: include/linux/blk-cgroup.h
|
F: include/linux/blk-cgroup.h
|
||||||
|
|
||||||
CONTROL GROUP - CPUSET
|
CONTROL GROUP - CPUSET
|
||||||
|
M: Waiman Long <longman@redhat.com>
|
||||||
M: Zefan Li <lizefan.x@bytedance.com>
|
M: Zefan Li <lizefan.x@bytedance.com>
|
||||||
L: cgroups@vger.kernel.org
|
L: cgroups@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -6752,7 +6753,7 @@ F: Documentation/devicetree/bindings/display/panel/samsung,lms380kf01.yaml
|
|||||||
F: drivers/gpu/drm/panel/panel-widechips-ws2401.c
|
F: drivers/gpu/drm/panel/panel-widechips-ws2401.c
|
||||||
|
|
||||||
DRM DRIVERS
|
DRM DRIVERS
|
||||||
M: David Airlie <airlied@linux.ie>
|
M: David Airlie <airlied@gmail.com>
|
||||||
M: Daniel Vetter <daniel@ffwll.ch>
|
M: Daniel Vetter <daniel@ffwll.ch>
|
||||||
L: dri-devel@lists.freedesktop.org
|
L: dri-devel@lists.freedesktop.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -6791,7 +6792,7 @@ F: Documentation/devicetree/bindings/display/allwinner*
|
|||||||
F: drivers/gpu/drm/sun4i/
|
F: drivers/gpu/drm/sun4i/
|
||||||
|
|
||||||
DRM DRIVERS FOR AMLOGIC SOCS
|
DRM DRIVERS FOR AMLOGIC SOCS
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
L: dri-devel@lists.freedesktop.org
|
L: dri-devel@lists.freedesktop.org
|
||||||
L: linux-amlogic@lists.infradead.org
|
L: linux-amlogic@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -6813,7 +6814,7 @@ F: drivers/gpu/drm/atmel-hlcdc/
|
|||||||
|
|
||||||
DRM DRIVERS FOR BRIDGE CHIPS
|
DRM DRIVERS FOR BRIDGE CHIPS
|
||||||
M: Andrzej Hajda <andrzej.hajda@intel.com>
|
M: Andrzej Hajda <andrzej.hajda@intel.com>
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
M: Robert Foss <robert.foss@linaro.org>
|
M: Robert Foss <robert.foss@linaro.org>
|
||||||
R: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
|
R: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
|
||||||
R: Jonas Karlman <jonas@kwiboo.se>
|
R: Jonas Karlman <jonas@kwiboo.se>
|
||||||
@ -8651,8 +8652,8 @@ F: drivers/input/touchscreen/goodix*
|
|||||||
|
|
||||||
GOOGLE ETHERNET DRIVERS
|
GOOGLE ETHERNET DRIVERS
|
||||||
M: Jeroen de Borst <jeroendb@google.com>
|
M: Jeroen de Borst <jeroendb@google.com>
|
||||||
R: Catherine Sullivan <csully@google.com>
|
M: Catherine Sullivan <csully@google.com>
|
||||||
R: David Awogbemila <awogbemila@google.com>
|
R: Shailend Chand <shailend@google.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/networking/device_drivers/ethernet/google/gve.rst
|
F: Documentation/networking/device_drivers/ethernet/google/gve.rst
|
||||||
@ -8942,7 +8943,7 @@ F: include/linux/hw_random.h
|
|||||||
|
|
||||||
HARDWARE SPINLOCK CORE
|
HARDWARE SPINLOCK CORE
|
||||||
M: Ohad Ben-Cohen <ohad@wizery.com>
|
M: Ohad Ben-Cohen <ohad@wizery.com>
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <andersson@kernel.org>
|
||||||
R: Baolin Wang <baolin.wang7@gmail.com>
|
R: Baolin Wang <baolin.wang7@gmail.com>
|
||||||
L: linux-remoteproc@vger.kernel.org
|
L: linux-remoteproc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -9121,7 +9122,7 @@ S: Maintained
|
|||||||
F: drivers/dma/hisi_dma.c
|
F: drivers/dma/hisi_dma.c
|
||||||
|
|
||||||
HISILICON GPIO DRIVER
|
HISILICON GPIO DRIVER
|
||||||
M: Luo Jiaxing <luojiaxing@huawei.com>
|
M: Jay Fang <f.fangjian@huawei.com>
|
||||||
L: linux-gpio@vger.kernel.org
|
L: linux-gpio@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/gpio/gpio-hisi.c
|
F: drivers/gpio/gpio-hisi.c
|
||||||
@ -9207,8 +9208,8 @@ F: Documentation/ABI/testing/debugfs-hisi-zip
|
|||||||
F: drivers/crypto/hisilicon/zip/
|
F: drivers/crypto/hisilicon/zip/
|
||||||
|
|
||||||
HISILICON ROCE DRIVER
|
HISILICON ROCE DRIVER
|
||||||
|
M: Haoyue Xu <xuhaoyue1@hisilicon.com>
|
||||||
M: Wenpeng Liang <liangwenpeng@huawei.com>
|
M: Wenpeng Liang <liangwenpeng@huawei.com>
|
||||||
M: Weihang Li <liweihang@huawei.com>
|
|
||||||
L: linux-rdma@vger.kernel.org
|
L: linux-rdma@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/infiniband/hisilicon-hns-roce.txt
|
F: Documentation/devicetree/bindings/infiniband/hisilicon-hns-roce.txt
|
||||||
@ -10031,6 +10032,7 @@ F: Documentation/devicetree/bindings/input/
|
|||||||
F: Documentation/devicetree/bindings/serio/
|
F: Documentation/devicetree/bindings/serio/
|
||||||
F: Documentation/input/
|
F: Documentation/input/
|
||||||
F: drivers/input/
|
F: drivers/input/
|
||||||
|
F: include/dt-bindings/input/
|
||||||
F: include/linux/input.h
|
F: include/linux/input.h
|
||||||
F: include/linux/input/
|
F: include/linux/input/
|
||||||
F: include/uapi/linux/input-event-codes.h
|
F: include/uapi/linux/input-event-codes.h
|
||||||
@ -10826,7 +10828,7 @@ F: drivers/media/tuners/it913x*
|
|||||||
|
|
||||||
ITE IT66121 HDMI BRIDGE DRIVER
|
ITE IT66121 HDMI BRIDGE DRIVER
|
||||||
M: Phong LE <ple@baylibre.com>
|
M: Phong LE <ple@baylibre.com>
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://anongit.freedesktop.org/drm/drm-misc
|
T: git git://anongit.freedesktop.org/drm/drm-misc
|
||||||
F: Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml
|
F: Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml
|
||||||
@ -11345,7 +11347,7 @@ F: kernel/debug/
|
|||||||
F: kernel/module/kdb.c
|
F: kernel/module/kdb.c
|
||||||
|
|
||||||
KHADAS MCU MFD DRIVER
|
KHADAS MCU MFD DRIVER
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
L: linux-amlogic@lists.infradead.org
|
L: linux-amlogic@lists.infradead.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/mfd/khadas,mcu.yaml
|
F: Documentation/devicetree/bindings/mfd/khadas,mcu.yaml
|
||||||
@ -13216,7 +13218,7 @@ S: Maintained
|
|||||||
F: drivers/watchdog/menz69_wdt.c
|
F: drivers/watchdog/menz69_wdt.c
|
||||||
|
|
||||||
MESON AO CEC DRIVER FOR AMLOGIC SOCS
|
MESON AO CEC DRIVER FOR AMLOGIC SOCS
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
L: linux-amlogic@lists.infradead.org
|
L: linux-amlogic@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -13227,7 +13229,7 @@ F: drivers/media/cec/platform/meson/ao-cec-g12a.c
|
|||||||
F: drivers/media/cec/platform/meson/ao-cec.c
|
F: drivers/media/cec/platform/meson/ao-cec.c
|
||||||
|
|
||||||
MESON GE2D DRIVER FOR AMLOGIC SOCS
|
MESON GE2D DRIVER FOR AMLOGIC SOCS
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
L: linux-amlogic@lists.infradead.org
|
L: linux-amlogic@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -13243,7 +13245,7 @@ F: Documentation/devicetree/bindings/mtd/amlogic,meson-nand.txt
|
|||||||
F: drivers/mtd/nand/raw/meson_*
|
F: drivers/mtd/nand/raw/meson_*
|
||||||
|
|
||||||
MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
|
MESON VIDEO DECODER DRIVER FOR AMLOGIC SOCS
|
||||||
M: Neil Armstrong <narmstrong@baylibre.com>
|
M: Neil Armstrong <neil.armstrong@linaro.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
L: linux-amlogic@lists.infradead.org
|
L: linux-amlogic@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -16123,7 +16125,7 @@ F: drivers/gpio/gpio-sama5d2-piobu.c
|
|||||||
F: drivers/pinctrl/pinctrl-at91*
|
F: drivers/pinctrl/pinctrl-at91*
|
||||||
|
|
||||||
PIN CONTROLLER - QUALCOMM
|
PIN CONTROLLER - QUALCOMM
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <andersson@kernel.org>
|
||||||
L: linux-arm-msm@vger.kernel.org
|
L: linux-arm-msm@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/pinctrl/qcom,*.txt
|
F: Documentation/devicetree/bindings/pinctrl/qcom,*.txt
|
||||||
@ -16816,7 +16818,7 @@ F: Documentation/devicetree/bindings/media/*camss*
|
|||||||
F: drivers/media/platform/qcom/camss/
|
F: drivers/media/platform/qcom/camss/
|
||||||
|
|
||||||
QUALCOMM CLOCK DRIVERS
|
QUALCOMM CLOCK DRIVERS
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <andersson@kernel.org>
|
||||||
L: linux-arm-msm@vger.kernel.org
|
L: linux-arm-msm@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux.git
|
||||||
@ -16855,6 +16857,7 @@ F: drivers/net/ethernet/qualcomm/emac/
|
|||||||
|
|
||||||
QUALCOMM ETHQOS ETHERNET DRIVER
|
QUALCOMM ETHQOS ETHERNET DRIVER
|
||||||
M: Vinod Koul <vkoul@kernel.org>
|
M: Vinod Koul <vkoul@kernel.org>
|
||||||
|
R: Bhupesh Sharma <bhupesh.sharma@linaro.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/net/qcom,ethqos.txt
|
F: Documentation/devicetree/bindings/net/qcom,ethqos.txt
|
||||||
@ -17305,7 +17308,7 @@ S: Supported
|
|||||||
F: fs/reiserfs/
|
F: fs/reiserfs/
|
||||||
|
|
||||||
REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM
|
REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <andersson@kernel.org>
|
||||||
M: Mathieu Poirier <mathieu.poirier@linaro.org>
|
M: Mathieu Poirier <mathieu.poirier@linaro.org>
|
||||||
L: linux-remoteproc@vger.kernel.org
|
L: linux-remoteproc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -17318,7 +17321,7 @@ F: include/linux/remoteproc.h
|
|||||||
F: include/linux/remoteproc/
|
F: include/linux/remoteproc/
|
||||||
|
|
||||||
REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM
|
REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <andersson@kernel.org>
|
||||||
M: Mathieu Poirier <mathieu.poirier@linaro.org>
|
M: Mathieu Poirier <mathieu.poirier@linaro.org>
|
||||||
L: linux-remoteproc@vger.kernel.org
|
L: linux-remoteproc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -17530,9 +17533,19 @@ M: Conor Dooley <conor.dooley@microchip.com>
|
|||||||
M: Daire McNamara <daire.mcnamara@microchip.com>
|
M: Daire McNamara <daire.mcnamara@microchip.com>
|
||||||
L: linux-riscv@lists.infradead.org
|
L: linux-riscv@lists.infradead.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
F: Documentation/devicetree/bindings/clock/microchip,mpfs.yaml
|
||||||
|
F: Documentation/devicetree/bindings/gpio/microchip,mpfs-gpio.yaml
|
||||||
|
F: Documentation/devicetree/bindings/i2c/microchip,corei2c.yaml
|
||||||
|
F: Documentation/devicetree/bindings/mailbox/microchip,mpfs-mailbox.yaml
|
||||||
|
F: Documentation/devicetree/bindings/net/can/microchip,mpfs-can.yaml
|
||||||
|
F: Documentation/devicetree/bindings/pwm/microchip,corepwm.yaml
|
||||||
|
F: Documentation/devicetree/bindings/soc/microchip/microchip,mpfs-sys-controller.yaml
|
||||||
|
F: Documentation/devicetree/bindings/spi/microchip,mpfs-spi.yaml
|
||||||
|
F: Documentation/devicetree/bindings/usb/microchip,mpfs-musb.yaml
|
||||||
F: arch/riscv/boot/dts/microchip/
|
F: arch/riscv/boot/dts/microchip/
|
||||||
F: drivers/char/hw_random/mpfs-rng.c
|
F: drivers/char/hw_random/mpfs-rng.c
|
||||||
F: drivers/clk/microchip/clk-mpfs.c
|
F: drivers/clk/microchip/clk-mpfs.c
|
||||||
|
F: drivers/i2c/busses/i2c-microchip-core.c
|
||||||
F: drivers/mailbox/mailbox-mpfs.c
|
F: drivers/mailbox/mailbox-mpfs.c
|
||||||
F: drivers/pci/controller/pcie-microchip-host.c
|
F: drivers/pci/controller/pcie-microchip-host.c
|
||||||
F: drivers/rtc/rtc-mpfs.c
|
F: drivers/rtc/rtc-mpfs.c
|
||||||
@ -17733,6 +17746,17 @@ L: linux-rdma@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/infiniband/ulp/rtrs/
|
F: drivers/infiniband/ulp/rtrs/
|
||||||
|
|
||||||
|
RUNTIME VERIFICATION (RV)
|
||||||
|
M: Daniel Bristot de Oliveira <bristot@kernel.org>
|
||||||
|
M: Steven Rostedt <rostedt@goodmis.org>
|
||||||
|
L: linux-trace-devel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/trace/rv/
|
||||||
|
F: include/linux/rv.h
|
||||||
|
F: include/rv/
|
||||||
|
F: kernel/trace/rv/
|
||||||
|
F: tools/verification/
|
||||||
|
|
||||||
RXRPC SOCKETS (AF_RXRPC)
|
RXRPC SOCKETS (AF_RXRPC)
|
||||||
M: David Howells <dhowells@redhat.com>
|
M: David Howells <dhowells@redhat.com>
|
||||||
M: Marc Dionne <marc.dionne@auristor.com>
|
M: Marc Dionne <marc.dionne@auristor.com>
|
||||||
@ -19936,6 +19960,7 @@ S: Supported
|
|||||||
F: drivers/net/team/
|
F: drivers/net/team/
|
||||||
F: include/linux/if_team.h
|
F: include/linux/if_team.h
|
||||||
F: include/uapi/linux/if_team.h
|
F: include/uapi/linux/if_team.h
|
||||||
|
F: tools/testing/selftests/drivers/net/team/
|
||||||
|
|
||||||
TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT
|
TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT
|
||||||
M: "Savoir-faire Linux Inc." <kernel@savoirfairelinux.com>
|
M: "Savoir-faire Linux Inc." <kernel@savoirfairelinux.com>
|
||||||
@ -20599,6 +20624,7 @@ F: include/*/ftrace.h
|
|||||||
F: include/linux/trace*.h
|
F: include/linux/trace*.h
|
||||||
F: include/trace/
|
F: include/trace/
|
||||||
F: kernel/trace/
|
F: kernel/trace/
|
||||||
|
F: scripts/tracing/
|
||||||
F: tools/testing/selftests/ftrace/
|
F: tools/testing/selftests/ftrace/
|
||||||
|
|
||||||
TRACING MMIO ACCESSES (MMIOTRACE)
|
TRACING MMIO ACCESSES (MMIOTRACE)
|
||||||
@ -20763,6 +20789,7 @@ UBLK USERSPACE BLOCK DRIVER
|
|||||||
M: Ming Lei <ming.lei@redhat.com>
|
M: Ming Lei <ming.lei@redhat.com>
|
||||||
L: linux-block@vger.kernel.org
|
L: linux-block@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/block/ublk.rst
|
||||||
F: drivers/block/ublk_drv.c
|
F: drivers/block/ublk_drv.c
|
||||||
F: include/uapi/linux/ublk_cmd.h
|
F: include/uapi/linux/ublk_cmd.h
|
||||||
|
|
||||||
@ -21540,7 +21567,7 @@ F: drivers/gpio/gpio-virtio.c
|
|||||||
F: include/uapi/linux/virtio_gpio.h
|
F: include/uapi/linux/virtio_gpio.h
|
||||||
|
|
||||||
VIRTIO GPU DRIVER
|
VIRTIO GPU DRIVER
|
||||||
M: David Airlie <airlied@linux.ie>
|
M: David Airlie <airlied@redhat.com>
|
||||||
M: Gerd Hoffmann <kraxel@redhat.com>
|
M: Gerd Hoffmann <kraxel@redhat.com>
|
||||||
R: Gurchetan Singh <gurchetansingh@chromium.org>
|
R: Gurchetan Singh <gurchetansingh@chromium.org>
|
||||||
R: Chia-I Wu <olvaffe@gmail.com>
|
R: Chia-I Wu <olvaffe@gmail.com>
|
||||||
@ -22304,7 +22331,7 @@ M: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
|
|||||||
R: Srinivas Neeli <srinivas.neeli@xilinx.com>
|
R: Srinivas Neeli <srinivas.neeli@xilinx.com>
|
||||||
R: Michal Simek <michal.simek@xilinx.com>
|
R: Michal Simek <michal.simek@xilinx.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/gpio/gpio-xilinx.txt
|
F: Documentation/devicetree/bindings/gpio/xlnx,gpio-xilinx.yaml
|
||||||
F: Documentation/devicetree/bindings/gpio/gpio-zynq.yaml
|
F: Documentation/devicetree/bindings/gpio/gpio-zynq.yaml
|
||||||
F: drivers/gpio/gpio-xilinx.c
|
F: drivers/gpio/gpio-xilinx.c
|
||||||
F: drivers/gpio/gpio-zynq.c
|
F: drivers/gpio/gpio-zynq.c
|
||||||
|
5
Makefile
5
Makefile
@ -2,7 +2,7 @@
|
|||||||
VERSION = 6
|
VERSION = 6
|
||||||
PATCHLEVEL = 0
|
PATCHLEVEL = 0
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION =
|
||||||
NAME = Hurr durr I'ma ninja sloth
|
NAME = Hurr durr I'ma ninja sloth
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@ -1287,8 +1287,7 @@ hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj
|
|||||||
|
|
||||||
PHONY += headers
|
PHONY += headers
|
||||||
headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts
|
headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts
|
||||||
$(if $(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/Kbuild),, \
|
$(if $(filter um, $(SRCARCH)), $(error Headers not exportable for UML))
|
||||||
$(error Headers not exportable for the $(SRCARCH) architecture))
|
|
||||||
$(Q)$(MAKE) $(hdr-inst)=include/uapi
|
$(Q)$(MAKE) $(hdr-inst)=include/uapi
|
||||||
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi
|
$(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi
|
||||||
|
|
||||||
|
@ -923,6 +923,9 @@ config HAVE_SOFTIRQ_ON_OWN_STACK
|
|||||||
Architecture provides a function to run __do_softirq() on a
|
Architecture provides a function to run __do_softirq() on a
|
||||||
separate stack.
|
separate stack.
|
||||||
|
|
||||||
|
config SOFTIRQ_ON_OWN_STACK
|
||||||
|
def_bool HAVE_SOFTIRQ_ON_OWN_STACK && !PREEMPT_RT
|
||||||
|
|
||||||
config ALTERNATE_USER_ADDRESS_SPACE
|
config ALTERNATE_USER_ADDRESS_SPACE
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
@ -1502,8 +1502,7 @@
|
|||||||
mmc1: mmc@0 {
|
mmc1: mmc@0 {
|
||||||
compatible = "ti,am335-sdhci";
|
compatible = "ti,am335-sdhci";
|
||||||
ti,needs-special-reset;
|
ti,needs-special-reset;
|
||||||
dmas = <&edma_xbar 24 0 0
|
dmas = <&edma 24 0>, <&edma 25 0>;
|
||||||
&edma_xbar 25 0 0>;
|
|
||||||
dma-names = "tx", "rx";
|
dma-names = "tx", "rx";
|
||||||
interrupts = <64>;
|
interrupts = <64>;
|
||||||
reg = <0x0 0x1000>;
|
reg = <0x0 0x1000>;
|
||||||
|
@ -25,6 +25,10 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&usb4_tm {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
&atl_tm {
|
&atl_tm {
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -399,7 +399,7 @@
|
|||||||
compatible = "arm,pl022", "arm,primecell";
|
compatible = "arm,pl022", "arm,primecell";
|
||||||
reg = <0x1000d000 0x1000>;
|
reg = <0x1000d000 0x1000>;
|
||||||
clocks = <&sspclk>, <&pclk>;
|
clocks = <&sspclk>, <&pclk>;
|
||||||
clock-names = "SSPCLK", "apb_pclk";
|
clock-names = "sspclk", "apb_pclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
wdog: watchdog@10010000 {
|
wdog: watchdog@10010000 {
|
||||||
|
@ -410,7 +410,7 @@
|
|||||||
interrupt-parent = <&intc_dc1176>;
|
interrupt-parent = <&intc_dc1176>;
|
||||||
interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&sspclk>, <&pclk>;
|
clocks = <&sspclk>, <&pclk>;
|
||||||
clock-names = "SSPCLK", "apb_pclk";
|
clock-names = "sspclk", "apb_pclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
pb1176_serial0: serial@1010c000 {
|
pb1176_serial0: serial@1010c000 {
|
||||||
|
@ -555,7 +555,7 @@
|
|||||||
interrupt-parent = <&intc_pb11mp>;
|
interrupt-parent = <&intc_pb11mp>;
|
||||||
interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&sspclk>, <&pclk>;
|
clocks = <&sspclk>, <&pclk>;
|
||||||
clock-names = "SSPCLK", "apb_pclk";
|
clock-names = "sspclk", "apb_pclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
watchdog@1000f000 {
|
watchdog@1000f000 {
|
||||||
|
@ -390,7 +390,7 @@
|
|||||||
compatible = "arm,pl022", "arm,primecell";
|
compatible = "arm,pl022", "arm,primecell";
|
||||||
reg = <0x1000d000 0x1000>;
|
reg = <0x1000d000 0x1000>;
|
||||||
clocks = <&sspclk>, <&pclk>;
|
clocks = <&sspclk>, <&pclk>;
|
||||||
clock-names = "SSPCLK", "apb_pclk";
|
clock-names = "sspclk", "apb_pclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
wdog0: watchdog@1000f000 {
|
wdog0: watchdog@1000f000 {
|
||||||
|
@ -76,8 +76,8 @@
|
|||||||
regulators {
|
regulators {
|
||||||
vdd_3v3: VDD_IO {
|
vdd_3v3: VDD_IO {
|
||||||
regulator-name = "VDD_IO";
|
regulator-name = "VDD_IO";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -95,8 +95,8 @@
|
|||||||
|
|
||||||
vddio_ddr: VDD_DDR {
|
vddio_ddr: VDD_DDR {
|
||||||
regulator-name = "VDD_DDR";
|
regulator-name = "VDD_DDR";
|
||||||
regulator-min-microvolt = <600000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <1850000>;
|
regulator-max-microvolt = <1200000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -118,8 +118,8 @@
|
|||||||
|
|
||||||
vdd_core: VDD_CORE {
|
vdd_core: VDD_CORE {
|
||||||
regulator-name = "VDD_CORE";
|
regulator-name = "VDD_CORE";
|
||||||
regulator-min-microvolt = <600000>;
|
regulator-min-microvolt = <1250000>;
|
||||||
regulator-max-microvolt = <1850000>;
|
regulator-max-microvolt = <1250000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -160,8 +160,8 @@
|
|||||||
|
|
||||||
LDO1 {
|
LDO1 {
|
||||||
regulator-name = "LDO1";
|
regulator-name = "LDO1";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
|
||||||
regulator-state-standby {
|
regulator-state-standby {
|
||||||
@ -175,9 +175,8 @@
|
|||||||
|
|
||||||
LDO2 {
|
LDO2 {
|
||||||
regulator-name = "LDO2";
|
regulator-name = "LDO2";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
|
||||||
|
|
||||||
regulator-state-standby {
|
regulator-state-standby {
|
||||||
regulator-on-in-suspend;
|
regulator-on-in-suspend;
|
||||||
|
@ -196,8 +196,8 @@
|
|||||||
regulators {
|
regulators {
|
||||||
vdd_io_reg: VDD_IO {
|
vdd_io_reg: VDD_IO {
|
||||||
regulator-name = "VDD_IO";
|
regulator-name = "VDD_IO";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -215,8 +215,8 @@
|
|||||||
|
|
||||||
VDD_DDR {
|
VDD_DDR {
|
||||||
regulator-name = "VDD_DDR";
|
regulator-name = "VDD_DDR";
|
||||||
regulator-min-microvolt = <600000>;
|
regulator-min-microvolt = <1350000>;
|
||||||
regulator-max-microvolt = <1850000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -234,8 +234,8 @@
|
|||||||
|
|
||||||
VDD_CORE {
|
VDD_CORE {
|
||||||
regulator-name = "VDD_CORE";
|
regulator-name = "VDD_CORE";
|
||||||
regulator-min-microvolt = <600000>;
|
regulator-min-microvolt = <1250000>;
|
||||||
regulator-max-microvolt = <1850000>;
|
regulator-max-microvolt = <1250000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -257,7 +257,6 @@
|
|||||||
regulator-max-microvolt = <1850000>;
|
regulator-max-microvolt = <1850000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
|
||||||
|
|
||||||
regulator-state-standby {
|
regulator-state-standby {
|
||||||
regulator-on-in-suspend;
|
regulator-on-in-suspend;
|
||||||
@ -272,8 +271,8 @@
|
|||||||
|
|
||||||
LDO1 {
|
LDO1 {
|
||||||
regulator-name = "LDO1";
|
regulator-name = "LDO1";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <2500000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <2500000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
|
||||||
regulator-state-standby {
|
regulator-state-standby {
|
||||||
@ -287,8 +286,8 @@
|
|||||||
|
|
||||||
LDO2 {
|
LDO2 {
|
||||||
regulator-name = "LDO2";
|
regulator-name = "LDO2";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
|
||||||
regulator-state-standby {
|
regulator-state-standby {
|
||||||
|
@ -244,8 +244,8 @@
|
|||||||
regulators {
|
regulators {
|
||||||
vdd_3v3: VDD_IO {
|
vdd_3v3: VDD_IO {
|
||||||
regulator-name = "VDD_IO";
|
regulator-name = "VDD_IO";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -264,8 +264,8 @@
|
|||||||
|
|
||||||
vddioddr: VDD_DDR {
|
vddioddr: VDD_DDR {
|
||||||
regulator-name = "VDD_DDR";
|
regulator-name = "VDD_DDR";
|
||||||
regulator-min-microvolt = <1300000>;
|
regulator-min-microvolt = <1350000>;
|
||||||
regulator-max-microvolt = <1450000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -285,8 +285,8 @@
|
|||||||
|
|
||||||
vddcore: VDD_CORE {
|
vddcore: VDD_CORE {
|
||||||
regulator-name = "VDD_CORE";
|
regulator-name = "VDD_CORE";
|
||||||
regulator-min-microvolt = <1100000>;
|
regulator-min-microvolt = <1150000>;
|
||||||
regulator-max-microvolt = <1850000>;
|
regulator-max-microvolt = <1150000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@ -306,7 +306,7 @@
|
|||||||
vddcpu: VDD_OTHER {
|
vddcpu: VDD_OTHER {
|
||||||
regulator-name = "VDD_OTHER";
|
regulator-name = "VDD_OTHER";
|
||||||
regulator-min-microvolt = <1050000>;
|
regulator-min-microvolt = <1050000>;
|
||||||
regulator-max-microvolt = <1850000>;
|
regulator-max-microvolt = <1250000>;
|
||||||
regulator-initial-mode = <2>;
|
regulator-initial-mode = <2>;
|
||||||
regulator-allowed-modes = <2>, <4>;
|
regulator-allowed-modes = <2>, <4>;
|
||||||
regulator-ramp-delay = <3125>;
|
regulator-ramp-delay = <3125>;
|
||||||
@ -326,8 +326,8 @@
|
|||||||
|
|
||||||
vldo1: LDO1 {
|
vldo1: LDO1 {
|
||||||
regulator-name = "LDO1";
|
regulator-name = "LDO1";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3700000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
|
||||||
regulator-state-standby {
|
regulator-state-standby {
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
next-level-cache = <&L2_0>;
|
next-level-cache = <&L2_0>;
|
||||||
enable-method = "psci";
|
enable-method = "psci";
|
||||||
};
|
};
|
||||||
|
|
||||||
CA7_2: cpu@2 {
|
CA7_2: cpu@2 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a7";
|
compatible = "arm,cortex-a7";
|
||||||
@ -39,6 +40,7 @@
|
|||||||
next-level-cache = <&L2_0>;
|
next-level-cache = <&L2_0>;
|
||||||
enable-method = "psci";
|
enable-method = "psci";
|
||||||
};
|
};
|
||||||
|
|
||||||
L2_0: l2-cache0 {
|
L2_0: l2-cache0 {
|
||||||
compatible = "cache";
|
compatible = "cache";
|
||||||
};
|
};
|
||||||
@ -46,10 +48,10 @@
|
|||||||
|
|
||||||
timer {
|
timer {
|
||||||
compatible = "arm,armv7-timer";
|
compatible = "arm,armv7-timer";
|
||||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
|
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_LOW)>;
|
||||||
arm,cpu-registers-not-fw-configured;
|
arm,cpu-registers-not-fw-configured;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -80,23 +82,23 @@
|
|||||||
psci {
|
psci {
|
||||||
compatible = "arm,psci-0.2";
|
compatible = "arm,psci-0.2";
|
||||||
method = "smc";
|
method = "smc";
|
||||||
cpu_off = <1>;
|
|
||||||
cpu_on = <2>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
axi@81000000 {
|
axi@81000000 {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges = <0 0x81000000 0x4000>;
|
ranges = <0 0x81000000 0x8000>;
|
||||||
|
|
||||||
gic: interrupt-controller@1000 {
|
gic: interrupt-controller@1000 {
|
||||||
compatible = "arm,cortex-a7-gic";
|
compatible = "arm,cortex-a7-gic";
|
||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
#address-cells = <0>;
|
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(3) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||||
reg = <0x1000 0x1000>,
|
reg = <0x1000 0x1000>,
|
||||||
<0x2000 0x2000>;
|
<0x2000 0x2000>,
|
||||||
|
<0x4000 0x2000>,
|
||||||
|
<0x6000 0x2000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -40,10 +40,10 @@
|
|||||||
|
|
||||||
timer {
|
timer {
|
||||||
compatible = "arm,armv7-timer";
|
compatible = "arm,armv7-timer";
|
||||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
|
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
|
||||||
arm,cpu-registers-not-fw-configured;
|
arm,cpu-registers-not-fw-configured;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -65,23 +65,23 @@
|
|||||||
psci {
|
psci {
|
||||||
compatible = "arm,psci-0.2";
|
compatible = "arm,psci-0.2";
|
||||||
method = "smc";
|
method = "smc";
|
||||||
cpu_off = <1>;
|
|
||||||
cpu_on = <2>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
axi@81000000 {
|
axi@81000000 {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges = <0 0x81000000 0x4000>;
|
ranges = <0 0x81000000 0x8000>;
|
||||||
|
|
||||||
gic: interrupt-controller@1000 {
|
gic: interrupt-controller@1000 {
|
||||||
compatible = "arm,cortex-a7-gic";
|
compatible = "arm,cortex-a7-gic";
|
||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
#address-cells = <0>;
|
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||||
reg = <0x1000 0x1000>,
|
reg = <0x1000 0x1000>,
|
||||||
<0x2000 0x2000>;
|
<0x2000 0x2000>,
|
||||||
|
<0x4000 0x2000>,
|
||||||
|
<0x6000 0x2000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
next-level-cache = <&L2_0>;
|
next-level-cache = <&L2_0>;
|
||||||
enable-method = "psci";
|
enable-method = "psci";
|
||||||
};
|
};
|
||||||
|
|
||||||
L2_0: l2-cache0 {
|
L2_0: l2-cache0 {
|
||||||
compatible = "cache";
|
compatible = "cache";
|
||||||
};
|
};
|
||||||
@ -39,10 +40,10 @@
|
|||||||
|
|
||||||
timer {
|
timer {
|
||||||
compatible = "arm,armv7-timer";
|
compatible = "arm,armv7-timer";
|
||||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
|
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
|
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
|
||||||
arm,cpu-registers-not-fw-configured;
|
arm,cpu-registers-not-fw-configured;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -51,16 +51,6 @@
|
|||||||
vin-supply = <®_3p3v_s5>;
|
vin-supply = <®_3p3v_s5>;
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_3p3v_s0: regulator-3p3v-s0 {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "V_3V3_S0";
|
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
vin-supply = <®_3p3v_s5>;
|
|
||||||
};
|
|
||||||
|
|
||||||
reg_3p3v_s5: regulator-3p3v-s5 {
|
reg_3p3v_s5: regulator-3p3v-s5 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "V_3V3_S5";
|
regulator-name = "V_3V3_S5";
|
||||||
@ -259,7 +249,7 @@
|
|||||||
|
|
||||||
/* default boot source: workaround #1 for errata ERR006282 */
|
/* default boot source: workaround #1 for errata ERR006282 */
|
||||||
smarc_flash: flash@0 {
|
smarc_flash: flash@0 {
|
||||||
compatible = "winbond,w25q16dw", "jedec,spi-nor";
|
compatible = "jedec,spi-nor";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
spi-max-frequency = <20000000>;
|
spi-max-frequency = <20000000>;
|
||||||
};
|
};
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
|
enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
backlight_led: backlight_led {
|
backlight_led: backlight-led {
|
||||||
compatible = "pwm-backlight";
|
compatible = "pwm-backlight";
|
||||||
pwms = <&pwm3 0 5000000 0>;
|
pwms = <&pwm3 0 5000000 0>;
|
||||||
brightness-levels = <0 16 64 255>;
|
brightness-levels = <0 16 64 255>;
|
||||||
|
@ -178,12 +178,12 @@
|
|||||||
clock-names = "uartclk", "apb_pclk";
|
clock-names = "uartclk", "apb_pclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
ssp@300000 {
|
spi@300000 {
|
||||||
compatible = "arm,pl022", "arm,primecell";
|
compatible = "arm,pl022", "arm,primecell";
|
||||||
reg = <0x00300000 0x1000>;
|
reg = <0x00300000 0x1000>;
|
||||||
interrupts-extended = <&impd1_vic 3>;
|
interrupts-extended = <&impd1_vic 3>;
|
||||||
clocks = <&impd1_sspclk>, <&sysclk>;
|
clocks = <&impd1_sspclk>, <&sysclk>;
|
||||||
clock-names = "spiclk", "apb_pclk";
|
clock-names = "sspclk", "apb_pclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
impd1_gpio0: gpio@400000 {
|
impd1_gpio0: gpio@400000 {
|
||||||
@ -249,6 +249,7 @@
|
|||||||
/* 640x480 16bpp @ 25.175MHz is 36827428 bytes/s */
|
/* 640x480 16bpp @ 25.175MHz is 36827428 bytes/s */
|
||||||
max-memory-bandwidth = <40000000>;
|
max-memory-bandwidth = <40000000>;
|
||||||
memory-region = <&impd1_ram>;
|
memory-region = <&impd1_ram>;
|
||||||
|
dma-ranges;
|
||||||
|
|
||||||
port@0 {
|
port@0 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
@ -160,6 +160,7 @@
|
|||||||
|
|
||||||
pci: pciv3@62000000 {
|
pci: pciv3@62000000 {
|
||||||
compatible = "arm,integrator-ap-pci", "v3,v360epc-pci";
|
compatible = "arm,integrator-ap-pci", "v3,v360epc-pci";
|
||||||
|
device_type = "pci";
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
@ -261,7 +262,7 @@
|
|||||||
lm0: bus@c0000000 {
|
lm0: bus@c0000000 {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
ranges = <0x00000000 0xc0000000 0x10000000>;
|
ranges = <0x00000000 0xc0000000 0x10000000>;
|
||||||
dma-ranges = <0x00000000 0x80000000 0x10000000>;
|
dma-ranges = <0x00000000 0xc0000000 0x10000000>;
|
||||||
reg = <0xc0000000 0x10000000>;
|
reg = <0xc0000000 0x10000000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@ -269,7 +270,7 @@
|
|||||||
lm1: bus@d0000000 {
|
lm1: bus@d0000000 {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
ranges = <0x00000000 0xd0000000 0x10000000>;
|
ranges = <0x00000000 0xd0000000 0x10000000>;
|
||||||
dma-ranges = <0x00000000 0x80000000 0x10000000>;
|
dma-ranges = <0x00000000 0xd0000000 0x10000000>;
|
||||||
reg = <0xd0000000 0x10000000>;
|
reg = <0xd0000000 0x10000000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@ -277,7 +278,7 @@
|
|||||||
lm2: bus@e0000000 {
|
lm2: bus@e0000000 {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
ranges = <0x00000000 0xe0000000 0x10000000>;
|
ranges = <0x00000000 0xe0000000 0x10000000>;
|
||||||
dma-ranges = <0x00000000 0x80000000 0x10000000>;
|
dma-ranges = <0x00000000 0xe0000000 0x10000000>;
|
||||||
reg = <0xe0000000 0x10000000>;
|
reg = <0xe0000000 0x10000000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@ -285,7 +286,7 @@
|
|||||||
lm3: bus@f0000000 {
|
lm3: bus@f0000000 {
|
||||||
compatible = "simple-bus";
|
compatible = "simple-bus";
|
||||||
ranges = <0x00000000 0xf0000000 0x10000000>;
|
ranges = <0x00000000 0xf0000000 0x10000000>;
|
||||||
dma-ranges = <0x00000000 0x80000000 0x10000000>;
|
dma-ranges = <0x00000000 0xf0000000 0x10000000>;
|
||||||
reg = <0xf0000000 0x10000000>;
|
reg = <0xf0000000 0x10000000>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
@ -541,13 +541,13 @@
|
|||||||
|
|
||||||
phy0: ethernet-phy@1 {
|
phy0: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
phy1: ethernet-phy@2 {
|
phy1: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
clocks = <&ref12>;
|
clocks = <&ref12>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&sdhci {
|
&mmc {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -93,8 +93,8 @@
|
|||||||
clock-names = "PCLK";
|
clock-names = "PCLK";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdhci: sdhci@98e00000 {
|
mmc: mmc@98e00000 {
|
||||||
compatible = "moxa,moxart-sdhci";
|
compatible = "moxa,moxart-mmc";
|
||||||
reg = <0x98e00000 0x5C>;
|
reg = <0x98e00000 0x5C>;
|
||||||
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clk_apb>;
|
clocks = <&clk_apb>;
|
||||||
|
@ -391,7 +391,7 @@
|
|||||||
reg = <0x101f4000 0x1000>;
|
reg = <0x101f4000 0x1000>;
|
||||||
interrupts = <11>;
|
interrupts = <11>;
|
||||||
clocks = <&xtal24mhz>, <&pclk>;
|
clocks = <&xtal24mhz>, <&pclk>;
|
||||||
clock-names = "SSPCLK", "apb_pclk";
|
clock-names = "sspclk", "apb_pclk";
|
||||||
};
|
};
|
||||||
|
|
||||||
fpga {
|
fpga {
|
||||||
|
@ -196,7 +196,6 @@ CONFIG_RTC_DRV_AT91SAM9=y
|
|||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
CONFIG_AT_HDMAC=y
|
CONFIG_AT_HDMAC=y
|
||||||
CONFIG_AT_XDMAC=y
|
CONFIG_AT_XDMAC=y
|
||||||
CONFIG_MICROCHIP_PIT64B=y
|
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
CONFIG_IIO=y
|
CONFIG_IIO=y
|
||||||
CONFIG_AT91_ADC=y
|
CONFIG_AT91_ADC=y
|
||||||
|
@ -188,7 +188,6 @@ CONFIG_RTC_DRV_AT91SAM9=y
|
|||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
CONFIG_AT_XDMAC=y
|
CONFIG_AT_XDMAC=y
|
||||||
CONFIG_STAGING=y
|
CONFIG_STAGING=y
|
||||||
CONFIG_MICROCHIP_PIT64B=y
|
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
CONFIG_IIO=y
|
CONFIG_IIO=y
|
||||||
CONFIG_IIO_SW_TRIGGER=y
|
CONFIG_IIO_SW_TRIGGER=y
|
||||||
|
@ -70,7 +70,7 @@ static void __init init_irq_stacks(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_PREEMPT_RT
|
#ifdef CONFIG_SOFTIRQ_ON_OWN_STACK
|
||||||
static void ____do_softirq(void *arg)
|
static void ____do_softirq(void *arg)
|
||||||
{
|
{
|
||||||
__do_softirq();
|
__do_softirq();
|
||||||
|
@ -541,9 +541,41 @@ extern u32 at91_pm_suspend_in_sram_sz;
|
|||||||
|
|
||||||
static int at91_suspend_finish(unsigned long val)
|
static int at91_suspend_finish(unsigned long val)
|
||||||
{
|
{
|
||||||
|
unsigned char modified_gray_code[] = {
|
||||||
|
0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x04, 0x05, 0x0c, 0x0d,
|
||||||
|
0x0e, 0x0f, 0x0a, 0x0b, 0x08, 0x09, 0x18, 0x19, 0x1a, 0x1b,
|
||||||
|
0x1e, 0x1f, 0x1c, 0x1d, 0x14, 0x15, 0x16, 0x17, 0x12, 0x13,
|
||||||
|
0x10, 0x11,
|
||||||
|
};
|
||||||
|
unsigned int tmp, index;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (soc_pm.data.mode == AT91_PM_BACKUP && soc_pm.data.ramc_phy) {
|
if (soc_pm.data.mode == AT91_PM_BACKUP && soc_pm.data.ramc_phy) {
|
||||||
|
/*
|
||||||
|
* Bootloader will perform DDR recalibration and will try to
|
||||||
|
* restore the ZQ0SR0 with the value saved here. But the
|
||||||
|
* calibration is buggy and restoring some values from ZQ0SR0
|
||||||
|
* is forbidden and risky thus we need to provide processed
|
||||||
|
* values for these (modified gray code values).
|
||||||
|
*/
|
||||||
|
tmp = readl(soc_pm.data.ramc_phy + DDR3PHY_ZQ0SR0);
|
||||||
|
|
||||||
|
/* Store pull-down output impedance select. */
|
||||||
|
index = (tmp >> DDR3PHY_ZQ0SR0_PDO_OFF) & 0x1f;
|
||||||
|
soc_pm.bu->ddr_phy_calibration[0] = modified_gray_code[index];
|
||||||
|
|
||||||
|
/* Store pull-up output impedance select. */
|
||||||
|
index = (tmp >> DDR3PHY_ZQ0SR0_PUO_OFF) & 0x1f;
|
||||||
|
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
|
||||||
|
|
||||||
|
/* Store pull-down on-die termination impedance select. */
|
||||||
|
index = (tmp >> DDR3PHY_ZQ0SR0_PDODT_OFF) & 0x1f;
|
||||||
|
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
|
||||||
|
|
||||||
|
/* Store pull-up on-die termination impedance select. */
|
||||||
|
index = (tmp >> DDR3PHY_ZQ0SRO_PUODT_OFF) & 0x1f;
|
||||||
|
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The 1st 8 words of memory might get corrupted in the process
|
* The 1st 8 words of memory might get corrupted in the process
|
||||||
* of DDR PHY recalibration; it is saved here in securam and it
|
* of DDR PHY recalibration; it is saved here in securam and it
|
||||||
@ -1066,10 +1098,6 @@ static int __init at91_pm_backup_init(void)
|
|||||||
of_scan_flat_dt(at91_pm_backup_scan_memcs, &located);
|
of_scan_flat_dt(at91_pm_backup_scan_memcs, &located);
|
||||||
if (!located)
|
if (!located)
|
||||||
goto securam_fail;
|
goto securam_fail;
|
||||||
|
|
||||||
/* DDR3PHY_ZQ0SR0 */
|
|
||||||
soc_pm.bu->ddr_phy_calibration[0] = readl(soc_pm.data.ramc_phy +
|
|
||||||
0x188);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -172,9 +172,15 @@ sr_ena_2:
|
|||||||
/* Put DDR PHY's DLL in bypass mode for non-backup modes. */
|
/* Put DDR PHY's DLL in bypass mode for non-backup modes. */
|
||||||
cmp r7, #AT91_PM_BACKUP
|
cmp r7, #AT91_PM_BACKUP
|
||||||
beq sr_ena_3
|
beq sr_ena_3
|
||||||
ldr tmp1, [r3, #DDR3PHY_PIR]
|
|
||||||
orr tmp1, tmp1, #DDR3PHY_PIR_DLLBYP
|
/* Disable DX DLLs. */
|
||||||
str tmp1, [r3, #DDR3PHY_PIR]
|
ldr tmp1, [r3, #DDR3PHY_DX0DLLCR]
|
||||||
|
orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
|
||||||
|
str tmp1, [r3, #DDR3PHY_DX0DLLCR]
|
||||||
|
|
||||||
|
ldr tmp1, [r3, #DDR3PHY_DX1DLLCR]
|
||||||
|
orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
|
||||||
|
str tmp1, [r3, #DDR3PHY_DX1DLLCR]
|
||||||
|
|
||||||
sr_ena_3:
|
sr_ena_3:
|
||||||
/* Power down DDR PHY data receivers. */
|
/* Power down DDR PHY data receivers. */
|
||||||
@ -221,10 +227,14 @@ sr_ena_3:
|
|||||||
bic tmp1, tmp1, #DDR3PHY_DSGCR_ODTPDD_ODT0
|
bic tmp1, tmp1, #DDR3PHY_DSGCR_ODTPDD_ODT0
|
||||||
str tmp1, [r3, #DDR3PHY_DSGCR]
|
str tmp1, [r3, #DDR3PHY_DSGCR]
|
||||||
|
|
||||||
/* Take DDR PHY's DLL out of bypass mode. */
|
/* Enable DX DLLs. */
|
||||||
ldr tmp1, [r3, #DDR3PHY_PIR]
|
ldr tmp1, [r3, #DDR3PHY_DX0DLLCR]
|
||||||
bic tmp1, tmp1, #DDR3PHY_PIR_DLLBYP
|
bic tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
|
||||||
str tmp1, [r3, #DDR3PHY_PIR]
|
str tmp1, [r3, #DDR3PHY_DX0DLLCR]
|
||||||
|
|
||||||
|
ldr tmp1, [r3, #DDR3PHY_DX1DLLCR]
|
||||||
|
bic tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS
|
||||||
|
str tmp1, [r3, #DDR3PHY_DX1DLLCR]
|
||||||
|
|
||||||
/* Enable quasi-dynamic programming. */
|
/* Enable quasi-dynamic programming. */
|
||||||
mov tmp1, #0
|
mov tmp1, #0
|
||||||
|
@ -46,7 +46,7 @@ static void __init ixp4xx_of_map_io(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We handle 4 differen SoC families. These compatible strings are enough
|
* We handle 4 different SoC families. These compatible strings are enough
|
||||||
* to provide the core so that different boards can add their more detailed
|
* to provide the core so that different boards can add their more detailed
|
||||||
* specifics.
|
* specifics.
|
||||||
*/
|
*/
|
||||||
|
@ -18,8 +18,8 @@ config SOC_SP7021
|
|||||||
select ARM_PSCI
|
select ARM_PSCI
|
||||||
select PINCTRL
|
select PINCTRL
|
||||||
select PINCTRL_SPPCTL
|
select PINCTRL_SPPCTL
|
||||||
select SERIAL_SUNPLUS
|
select SERIAL_SUNPLUS if TTY
|
||||||
select SERIAL_SUNPLUS_CONSOLE
|
select SERIAL_SUNPLUS_CONSOLE if TTY
|
||||||
help
|
help
|
||||||
Support for Sunplus SP7021 SoC. It is based on ARM 4-core
|
Support for Sunplus SP7021 SoC. It is based on ARM 4-core
|
||||||
Cortex-A7 with various peripherals (e.g.: I2C, SPI, SDIO,
|
Cortex-A7 with various peripherals (e.g.: I2C, SPI, SDIO,
|
||||||
|
@ -1887,6 +1887,8 @@ config ARM64_BTI_KERNEL
|
|||||||
depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI
|
depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI
|
||||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697
|
||||||
depends on !CC_IS_GCC || GCC_VERSION >= 100100
|
depends on !CC_IS_GCC || GCC_VERSION >= 100100
|
||||||
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671
|
||||||
|
depends on !CC_IS_GCC
|
||||||
# https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9
|
# https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9
|
||||||
depends on !CC_IS_CLANG || CLANG_VERSION >= 120000
|
depends on !CC_IS_CLANG || CLANG_VERSION >= 120000
|
||||||
depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
|
depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
|
||||||
|
@ -26,7 +26,8 @@
|
|||||||
compatible = "arm,mhu", "arm,primecell";
|
compatible = "arm,mhu", "arm,primecell";
|
||||||
reg = <0x0 0x2b1f0000 0x0 0x1000>;
|
reg = <0x0 0x2b1f0000 0x0 0x1000>;
|
||||||
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
<GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
#mbox-cells = <1>;
|
#mbox-cells = <1>;
|
||||||
clocks = <&soc_refclk100mhz>;
|
clocks = <&soc_refclk100mhz>;
|
||||||
clock-names = "apb_pclk";
|
clock-names = "apb_pclk";
|
||||||
|
@ -67,7 +67,6 @@
|
|||||||
port@0 {
|
port@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
csys2_funnel_in_port0: endpoint {
|
csys2_funnel_in_port0: endpoint {
|
||||||
slave-mode;
|
|
||||||
remote-endpoint = <&etf0_out_port>;
|
remote-endpoint = <&etf0_out_port>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -75,7 +74,6 @@
|
|||||||
port@1 {
|
port@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
csys2_funnel_in_port1: endpoint {
|
csys2_funnel_in_port1: endpoint {
|
||||||
slave-mode;
|
|
||||||
remote-endpoint = <&etf1_out_port>;
|
remote-endpoint = <&etf1_out_port>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
&enetc_port0 {
|
&enetc_port0 {
|
||||||
phy-handle = <&slot1_sgmii>;
|
phy-handle = <&slot1_sgmii>;
|
||||||
phy-mode = "2500base-x";
|
phy-mode = "2500base-x";
|
||||||
managed = "in-band-status";
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user