Merge branch 'linus' into locking/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
0614621d89
20
CREDITS
20
CREDITS
|
@ -842,10 +842,9 @@ D: ax25-utils maintainer.
|
||||||
|
|
||||||
N: Helge Deller
|
N: Helge Deller
|
||||||
E: deller@gmx.de
|
E: deller@gmx.de
|
||||||
E: hdeller@redhat.de
|
W: http://www.parisc-linux.org/
|
||||||
D: PA-RISC Linux hacker, LASI-, ASP-, WAX-, LCD/LED-driver
|
D: PA-RISC Linux architecture maintainer
|
||||||
S: Schimmelsrain 1
|
D: LASI-, ASP-, WAX-, LCD/LED-driver
|
||||||
S: D-69231 Rauenberg
|
|
||||||
S: Germany
|
S: Germany
|
||||||
|
|
||||||
N: Jean Delvare
|
N: Jean Delvare
|
||||||
|
@ -1361,7 +1360,7 @@ S: Stellenbosch, Western Cape
|
||||||
S: South Africa
|
S: South Africa
|
||||||
|
|
||||||
N: Grant Grundler
|
N: Grant Grundler
|
||||||
E: grundler@parisc-linux.org
|
E: grantgrundler@gmail.com
|
||||||
W: http://obmouse.sourceforge.net/
|
W: http://obmouse.sourceforge.net/
|
||||||
W: http://www.parisc-linux.org/
|
W: http://www.parisc-linux.org/
|
||||||
D: obmouse - rewrote Olivier Florent's Omnibook 600 "pop-up" mouse driver
|
D: obmouse - rewrote Olivier Florent's Omnibook 600 "pop-up" mouse driver
|
||||||
|
@ -2492,7 +2491,7 @@ S: Syracuse, New York 13206
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
N: Kyle McMartin
|
N: Kyle McMartin
|
||||||
E: kyle@parisc-linux.org
|
E: kyle@mcmartin.ca
|
||||||
D: Linux/PARISC hacker
|
D: Linux/PARISC hacker
|
||||||
D: AD1889 sound driver
|
D: AD1889 sound driver
|
||||||
S: Ottawa, Canada
|
S: Ottawa, Canada
|
||||||
|
@ -3780,14 +3779,13 @@ S: 21513 Conradia Ct
|
||||||
S: Cupertino, CA 95014
|
S: Cupertino, CA 95014
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
N: Thibaut Varene
|
N: Thibaut Varène
|
||||||
E: T-Bone@parisc-linux.org
|
E: hacks+kernel@slashdirt.org
|
||||||
W: http://www.parisc-linux.org/~varenet/
|
W: http://hacks.slashdirt.org/
|
||||||
P: 1024D/B7D2F063 E67C 0D43 A75E 12A5 BB1C FA2F 1E32 C3DA B7D2 F063
|
|
||||||
D: PA-RISC port minion, PDC and GSCPS2 drivers, debuglocks and other bits
|
D: PA-RISC port minion, PDC and GSCPS2 drivers, debuglocks and other bits
|
||||||
D: Some ARM at91rm9200 bits, S1D13XXX FB driver, random patches here and there
|
D: Some ARM at91rm9200 bits, S1D13XXX FB driver, random patches here and there
|
||||||
D: AD1889 sound driver
|
D: AD1889 sound driver
|
||||||
S: Paris, France
|
S: France
|
||||||
|
|
||||||
N: Heikki Vatiainen
|
N: Heikki Vatiainen
|
||||||
E: hessu@cs.tut.fi
|
E: hessu@cs.tut.fi
|
||||||
|
|
|
@ -24,7 +24,7 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/
|
||||||
cpld3_version
|
cpld3_version
|
||||||
|
|
||||||
Date: November 2018
|
Date: November 2018
|
||||||
KernelVersion: 4.21
|
KernelVersion: 5.0
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
Description: These files show with which CPLD versions have been burned
|
Description: These files show with which CPLD versions have been burned
|
||||||
on LED board.
|
on LED board.
|
||||||
|
@ -35,7 +35,7 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/
|
||||||
jtag_enable
|
jtag_enable
|
||||||
|
|
||||||
Date: November 2018
|
Date: November 2018
|
||||||
KernelVersion: 4.21
|
KernelVersion: 5.0
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
Description: These files enable and disable the access to the JTAG domain.
|
Description: These files enable and disable the access to the JTAG domain.
|
||||||
By default access to the JTAG domain is disabled.
|
By default access to the JTAG domain is disabled.
|
||||||
|
@ -105,7 +105,7 @@ What: /sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/
|
||||||
reset_voltmon_upgrade_fail
|
reset_voltmon_upgrade_fail
|
||||||
|
|
||||||
Date: November 2018
|
Date: November 2018
|
||||||
KernelVersion: 4.21
|
KernelVersion: 5.0
|
||||||
Contact: Vadim Pasternak <vadimpmellanox.com>
|
Contact: Vadim Pasternak <vadimpmellanox.com>
|
||||||
Description: These files show the system reset cause, as following: ComEx
|
Description: These files show the system reset cause, as following: ComEx
|
||||||
power fail, reset from ComEx, system platform reset, reset
|
power fail, reset from ComEx, system platform reset, reset
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
.. _readme:
|
.. _readme:
|
||||||
|
|
||||||
Linux kernel release 4.x <http://kernel.org/>
|
Linux kernel release 5.x <http://kernel.org/>
|
||||||
=============================================
|
=============================================
|
||||||
|
|
||||||
These are the release notes for Linux version 4. Read them carefully,
|
These are the release notes for Linux version 5. 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-4.X.tar.xz | tar xvf -
|
xz -cd linux-5.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,26 +72,26 @@ 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 4.x releases by patching. Patches are
|
- You can also upgrade between 5.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-4.X) and execute::
|
(linux-5.x) and execute::
|
||||||
|
|
||||||
xz -cd ../patch-4.x.xz | patch -p1
|
xz -cd ../patch-5.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
|
||||||
the backup files (some-file-name~ or some-file-name.orig), and make sure
|
the backup files (some-file-name~ or some-file-name.orig), and make sure
|
||||||
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 4.x kernels, patches for the 4.x.y kernels
|
Unlike patches for the 5.x kernels, patches for the 5.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 4.x kernel. For example, if your base kernel is 4.0
|
directly to the base 5.x kernel. For example, if your base kernel is 5.0
|
||||||
and you want to apply the 4.0.3 patch, you must not first apply the 4.0.1
|
and you want to apply the 5.0.3 patch, you must not first apply the 5.0.1
|
||||||
and 4.0.2 patches. Similarly, if you are running kernel version 4.0.2 and
|
and 5.0.2 patches. Similarly, if you are running kernel version 5.0.2 and
|
||||||
want to jump to 4.0.3, you must first reverse the 4.0.2 patch (that is,
|
want to jump to 5.0.3, you must first reverse the 5.0.2 patch (that is,
|
||||||
patch -R) **before** applying the 4.0.3 patch. You can read more on this in
|
patch -R) **before** applying the 5.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 4.x kernels requires up-to-date
|
Compiling and running the 5.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-4.X
|
kernel source code: /usr/src/linux-5.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-4.X
|
cd /usr/src/linux-5.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
|
||||||
|
|
|
@ -1696,12 +1696,11 @@
|
||||||
By default, super page will be supported if Intel IOMMU
|
By default, super page will be supported if Intel IOMMU
|
||||||
has the capability. With this option, super page will
|
has the capability. With this option, super page will
|
||||||
not be supported.
|
not be supported.
|
||||||
sm_off [Default Off]
|
sm_on [Default Off]
|
||||||
By default, scalable mode will be supported if the
|
By default, scalable mode will be disabled even if the
|
||||||
hardware advertises that it has support for the scalable
|
hardware advertises that it has support for the scalable
|
||||||
mode translation. With this option set, scalable mode
|
mode translation. With this option set, scalable mode
|
||||||
will not be used even on hardware which claims to support
|
will be used on hardware which claims to support it.
|
||||||
it.
|
|
||||||
tboot_noforce [Default Off]
|
tboot_noforce [Default Off]
|
||||||
Do not force the Intel IOMMU enabled under tboot.
|
Do not force the Intel IOMMU enabled under tboot.
|
||||||
By default, tboot will force Intel IOMMU on, which
|
By default, tboot will force Intel IOMMU on, which
|
||||||
|
|
|
@ -533,16 +533,12 @@ Bridge VLAN filtering
|
||||||
function that the driver has to call for each VLAN the given port is a member
|
function that the driver has to call for each VLAN the given port is a member
|
||||||
of. A switchdev object is used to carry the VID and bridge flags.
|
of. A switchdev object is used to carry the VID and bridge flags.
|
||||||
|
|
||||||
- port_fdb_prepare: bridge layer function invoked when the bridge prepares the
|
|
||||||
installation of a Forwarding Database entry. If the operation is not
|
|
||||||
supported, this function should return -EOPNOTSUPP to inform the bridge code
|
|
||||||
to fallback to a software implementation. No hardware setup must be done in
|
|
||||||
this function. See port_fdb_add for this and details.
|
|
||||||
|
|
||||||
- port_fdb_add: bridge layer function invoked when the bridge wants to install a
|
- port_fdb_add: bridge layer function invoked when the bridge wants to install a
|
||||||
Forwarding Database entry, the switch hardware should be programmed with the
|
Forwarding Database entry, the switch hardware should be programmed with the
|
||||||
specified address in the specified VLAN Id in the forwarding database
|
specified address in the specified VLAN Id in the forwarding database
|
||||||
associated with this VLAN ID
|
associated with this VLAN ID. If the operation is not supported, this
|
||||||
|
function should return -EOPNOTSUPP to inform the bridge code to fallback to
|
||||||
|
a software implementation.
|
||||||
|
|
||||||
Note: VLAN ID 0 corresponds to the port private database, which, in the context
|
Note: VLAN ID 0 corresponds to the port private database, which, in the context
|
||||||
of DSA, would be the its port-based VLAN, used by the associated bridge device.
|
of DSA, would be the its port-based VLAN, used by the associated bridge device.
|
||||||
|
|
|
@ -7,7 +7,7 @@ Intro
|
||||||
=====
|
=====
|
||||||
|
|
||||||
The MSG_ZEROCOPY flag enables copy avoidance for socket send calls.
|
The MSG_ZEROCOPY flag enables copy avoidance for socket send calls.
|
||||||
The feature is currently implemented for TCP sockets.
|
The feature is currently implemented for TCP and UDP sockets.
|
||||||
|
|
||||||
|
|
||||||
Opportunity and Caveats
|
Opportunity and Caveats
|
||||||
|
|
|
@ -22,8 +22,9 @@ and changeable from userspace under certain rules.
|
||||||
2. Querying from userspace
|
2. Querying from userspace
|
||||||
|
|
||||||
Both admin and operational state can be queried via the netlink
|
Both admin and operational state can be queried via the netlink
|
||||||
operation RTM_GETLINK. It is also possible to subscribe to RTMGRP_LINK
|
operation RTM_GETLINK. It is also possible to subscribe to RTNLGRP_LINK
|
||||||
to be notified of updates. This is important for setting from userspace.
|
to be notified of updates while the interface is admin up. This is
|
||||||
|
important for setting from userspace.
|
||||||
|
|
||||||
These values contain interface state:
|
These values contain interface state:
|
||||||
|
|
||||||
|
@ -101,8 +102,9 @@ because some driver controlled protocol establishment has to
|
||||||
complete. Corresponding functions are netif_dormant_on() to set the
|
complete. Corresponding functions are netif_dormant_on() to set the
|
||||||
flag, netif_dormant_off() to clear it and netif_dormant() to query.
|
flag, netif_dormant_off() to clear it and netif_dormant() to query.
|
||||||
|
|
||||||
On device allocation, networking core sets the flags equivalent to
|
On device allocation, both flags __LINK_STATE_NOCARRIER and
|
||||||
netif_carrier_ok() and !netif_dormant().
|
__LINK_STATE_DORMANT are cleared, so the effective state is equivalent
|
||||||
|
to netif_carrier_ok() and !netif_dormant().
|
||||||
|
|
||||||
|
|
||||||
Whenever the driver CHANGES one of these flags, a workqueue event is
|
Whenever the driver CHANGES one of these flags, a workqueue event is
|
||||||
|
@ -133,11 +135,11 @@ netif_carrier_ok() && !netif_dormant() is set by the
|
||||||
driver. Afterwards, the userspace application can set IFLA_OPERSTATE
|
driver. Afterwards, the userspace application can set IFLA_OPERSTATE
|
||||||
to IF_OPER_DORMANT or IF_OPER_UP as long as the driver does not set
|
to IF_OPER_DORMANT or IF_OPER_UP as long as the driver does not set
|
||||||
netif_carrier_off() or netif_dormant_on(). Changes made by userspace
|
netif_carrier_off() or netif_dormant_on(). Changes made by userspace
|
||||||
are multicasted on the netlink group RTMGRP_LINK.
|
are multicasted on the netlink group RTNLGRP_LINK.
|
||||||
|
|
||||||
So basically a 802.1X supplicant interacts with the kernel like this:
|
So basically a 802.1X supplicant interacts with the kernel like this:
|
||||||
|
|
||||||
-subscribe to RTMGRP_LINK
|
-subscribe to RTNLGRP_LINK
|
||||||
-set IFLA_LINKMODE to 1 via RTM_SETLINK
|
-set IFLA_LINKMODE to 1 via RTM_SETLINK
|
||||||
-query RTM_GETLINK once to get initial state
|
-query RTM_GETLINK once to get initial state
|
||||||
-if initial flags are not (IFF_LOWER_UP && !IFF_DORMANT), wait until
|
-if initial flags are not (IFF_LOWER_UP && !IFF_DORMANT), wait until
|
||||||
|
|
|
@ -92,11 +92,11 @@ device.
|
||||||
Switch ID
|
Switch ID
|
||||||
^^^^^^^^^
|
^^^^^^^^^
|
||||||
|
|
||||||
The switchdev driver must implement the switchdev op switchdev_port_attr_get
|
The switchdev driver must implement the net_device operation
|
||||||
for SWITCHDEV_ATTR_ID_PORT_PARENT_ID for each port netdev, returning the same
|
ndo_get_port_parent_id for each port netdev, returning the same physical ID for
|
||||||
physical ID for each port of a switch. The ID must be unique between switches
|
each port of a switch. The ID must be unique between switches on the same
|
||||||
on the same system. The ID does not need to be unique between switches on
|
system. The ID does not need to be unique between switches on different
|
||||||
different systems.
|
systems.
|
||||||
|
|
||||||
The switch ID is used to locate ports on a switch and to know if aggregated
|
The switch ID is used to locate ports on a switch and to know if aggregated
|
||||||
ports belong to the same switch.
|
ports belong to the same switch.
|
||||||
|
|
|
@ -216,14 +216,14 @@ You can use the ``interdiff`` program (http://cyberelk.net/tim/patchutils/) to
|
||||||
generate a patch representing the differences between two patches and then
|
generate a patch representing the differences between two patches and then
|
||||||
apply the result.
|
apply the result.
|
||||||
|
|
||||||
This will let you move from something like 4.7.2 to 4.7.3 in a single
|
This will let you move from something like 5.7.2 to 5.7.3 in a single
|
||||||
step. The -z flag to interdiff will even let you feed it patches in gzip or
|
step. The -z flag to interdiff will even let you feed it patches in gzip or
|
||||||
bzip2 compressed form directly without the use of zcat or bzcat or manual
|
bzip2 compressed form directly without the use of zcat or bzcat or manual
|
||||||
decompression.
|
decompression.
|
||||||
|
|
||||||
Here's how you'd go from 4.7.2 to 4.7.3 in a single step::
|
Here's how you'd go from 5.7.2 to 5.7.3 in a single step::
|
||||||
|
|
||||||
interdiff -z ../patch-4.7.2.gz ../patch-4.7.3.gz | patch -p1
|
interdiff -z ../patch-5.7.2.gz ../patch-5.7.3.gz | patch -p1
|
||||||
|
|
||||||
Although interdiff may save you a step or two you are generally advised to
|
Although interdiff may save you a step or two you are generally advised to
|
||||||
do the additional steps since interdiff can get things wrong in some cases.
|
do the additional steps since interdiff can get things wrong in some cases.
|
||||||
|
@ -245,62 +245,67 @@ The patches are available at http://kernel.org/
|
||||||
Most recent patches are linked from the front page, but they also have
|
Most recent patches are linked from the front page, but they also have
|
||||||
specific homes.
|
specific homes.
|
||||||
|
|
||||||
The 4.x.y (-stable) and 4.x patches live at
|
The 5.x.y (-stable) and 5.x patches live at
|
||||||
|
|
||||||
https://www.kernel.org/pub/linux/kernel/v4.x/
|
https://www.kernel.org/pub/linux/kernel/v5.x/
|
||||||
|
|
||||||
The -rc patches live at
|
The -rc patches are not stored on the webserver but are generated on
|
||||||
|
demand from git tags such as
|
||||||
|
|
||||||
https://www.kernel.org/pub/linux/kernel/v4.x/testing/
|
https://git.kernel.org/torvalds/p/v5.1-rc1/v5.0
|
||||||
|
|
||||||
|
The stable -rc patches live at
|
||||||
|
|
||||||
|
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/
|
||||||
|
|
||||||
|
|
||||||
The 4.x kernels
|
The 5.x kernels
|
||||||
===============
|
===============
|
||||||
|
|
||||||
These are the base stable releases released by Linus. The highest numbered
|
These are the base stable releases released by Linus. The highest numbered
|
||||||
release is the most recent.
|
release is the most recent.
|
||||||
|
|
||||||
If regressions or other serious flaws are found, then a -stable fix patch
|
If regressions or other serious flaws are found, then a -stable fix patch
|
||||||
will be released (see below) on top of this base. Once a new 4.x base
|
will be released (see below) on top of this base. Once a new 5.x base
|
||||||
kernel is released, a patch is made available that is a delta between the
|
kernel is released, a patch is made available that is a delta between the
|
||||||
previous 4.x kernel and the new one.
|
previous 5.x kernel and the new one.
|
||||||
|
|
||||||
To apply a patch moving from 4.6 to 4.7, you'd do the following (note
|
To apply a patch moving from 5.6 to 5.7, you'd do the following (note
|
||||||
that such patches do **NOT** apply on top of 4.x.y kernels but on top of the
|
that such patches do **NOT** apply on top of 5.x.y kernels but on top of the
|
||||||
base 4.x kernel -- if you need to move from 4.x.y to 4.x+1 you need to
|
base 5.x kernel -- if you need to move from 5.x.y to 5.x+1 you need to
|
||||||
first revert the 4.x.y patch).
|
first revert the 5.x.y patch).
|
||||||
|
|
||||||
Here are some examples::
|
Here are some examples::
|
||||||
|
|
||||||
# moving from 4.6 to 4.7
|
# moving from 5.6 to 5.7
|
||||||
|
|
||||||
$ cd ~/linux-4.6 # change to kernel source dir
|
$ cd ~/linux-5.6 # change to kernel source dir
|
||||||
$ patch -p1 < ../patch-4.7 # apply the 4.7 patch
|
$ patch -p1 < ../patch-5.7 # apply the 5.7 patch
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ mv linux-4.6 linux-4.7 # rename source dir
|
$ mv linux-5.6 linux-5.7 # rename source dir
|
||||||
|
|
||||||
# moving from 4.6.1 to 4.7
|
# moving from 5.6.1 to 5.7
|
||||||
|
|
||||||
$ cd ~/linux-4.6.1 # change to kernel source dir
|
$ cd ~/linux-5.6.1 # change to kernel source dir
|
||||||
$ patch -p1 -R < ../patch-4.6.1 # revert the 4.6.1 patch
|
$ patch -p1 -R < ../patch-5.6.1 # revert the 5.6.1 patch
|
||||||
# source dir is now 4.6
|
# source dir is now 5.6
|
||||||
$ patch -p1 < ../patch-4.7 # apply new 4.7 patch
|
$ patch -p1 < ../patch-5.7 # apply new 5.7 patch
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ mv linux-4.6.1 linux-4.7 # rename source dir
|
$ mv linux-5.6.1 linux-5.7 # rename source dir
|
||||||
|
|
||||||
|
|
||||||
The 4.x.y kernels
|
The 5.x.y kernels
|
||||||
=================
|
=================
|
||||||
|
|
||||||
Kernels with 3-digit versions are -stable kernels. They contain small(ish)
|
Kernels with 3-digit versions are -stable kernels. They contain small(ish)
|
||||||
critical fixes for security problems or significant regressions discovered
|
critical fixes for security problems or significant regressions discovered
|
||||||
in a given 4.x kernel.
|
in a given 5.x kernel.
|
||||||
|
|
||||||
This is the recommended branch for users who want the most recent stable
|
This is the recommended branch for users who want the most recent stable
|
||||||
kernel and are not interested in helping test development/experimental
|
kernel and are not interested in helping test development/experimental
|
||||||
versions.
|
versions.
|
||||||
|
|
||||||
If no 4.x.y kernel is available, then the highest numbered 4.x kernel is
|
If no 5.x.y kernel is available, then the highest numbered 5.x kernel is
|
||||||
the current stable kernel.
|
the current stable kernel.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
@ -308,23 +313,23 @@ the current stable kernel.
|
||||||
The -stable team usually do make incremental patches available as well
|
The -stable team usually do make incremental patches available as well
|
||||||
as patches against the latest mainline release, but I only cover the
|
as patches against the latest mainline release, but I only cover the
|
||||||
non-incremental ones below. The incremental ones can be found at
|
non-incremental ones below. The incremental ones can be found at
|
||||||
https://www.kernel.org/pub/linux/kernel/v4.x/incr/
|
https://www.kernel.org/pub/linux/kernel/v5.x/incr/
|
||||||
|
|
||||||
These patches are not incremental, meaning that for example the 4.7.3
|
These patches are not incremental, meaning that for example the 5.7.3
|
||||||
patch does not apply on top of the 4.7.2 kernel source, but rather on top
|
patch does not apply on top of the 5.7.2 kernel source, but rather on top
|
||||||
of the base 4.7 kernel source.
|
of the base 5.7 kernel source.
|
||||||
|
|
||||||
So, in order to apply the 4.7.3 patch to your existing 4.7.2 kernel
|
So, in order to apply the 5.7.3 patch to your existing 5.7.2 kernel
|
||||||
source you have to first back out the 4.7.2 patch (so you are left with a
|
source you have to first back out the 5.7.2 patch (so you are left with a
|
||||||
base 4.7 kernel source) and then apply the new 4.7.3 patch.
|
base 5.7 kernel source) and then apply the new 5.7.3 patch.
|
||||||
|
|
||||||
Here's a small example::
|
Here's a small example::
|
||||||
|
|
||||||
$ cd ~/linux-4.7.2 # change to the kernel source dir
|
$ cd ~/linux-5.7.2 # change to the kernel source dir
|
||||||
$ patch -p1 -R < ../patch-4.7.2 # revert the 4.7.2 patch
|
$ patch -p1 -R < ../patch-5.7.2 # revert the 5.7.2 patch
|
||||||
$ patch -p1 < ../patch-4.7.3 # apply the new 4.7.3 patch
|
$ patch -p1 < ../patch-5.7.3 # apply the new 5.7.3 patch
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ mv linux-4.7.2 linux-4.7.3 # rename the kernel source dir
|
$ mv linux-5.7.2 linux-5.7.3 # rename the kernel source dir
|
||||||
|
|
||||||
The -rc kernels
|
The -rc kernels
|
||||||
===============
|
===============
|
||||||
|
@ -343,38 +348,38 @@ This is a good branch to run for people who want to help out testing
|
||||||
development kernels but do not want to run some of the really experimental
|
development kernels but do not want to run some of the really experimental
|
||||||
stuff (such people should see the sections about -next and -mm kernels below).
|
stuff (such people should see the sections about -next and -mm kernels below).
|
||||||
|
|
||||||
The -rc patches are not incremental, they apply to a base 4.x kernel, just
|
The -rc patches are not incremental, they apply to a base 5.x kernel, just
|
||||||
like the 4.x.y patches described above. The kernel version before the -rcN
|
like the 5.x.y patches described above. The kernel version before the -rcN
|
||||||
suffix denotes the version of the kernel that this -rc kernel will eventually
|
suffix denotes the version of the kernel that this -rc kernel will eventually
|
||||||
turn into.
|
turn into.
|
||||||
|
|
||||||
So, 4.8-rc5 means that this is the fifth release candidate for the 4.8
|
So, 5.8-rc5 means that this is the fifth release candidate for the 5.8
|
||||||
kernel and the patch should be applied on top of the 4.7 kernel source.
|
kernel and the patch should be applied on top of the 5.7 kernel source.
|
||||||
|
|
||||||
Here are 3 examples of how to apply these patches::
|
Here are 3 examples of how to apply these patches::
|
||||||
|
|
||||||
# first an example of moving from 4.7 to 4.8-rc3
|
# first an example of moving from 5.7 to 5.8-rc3
|
||||||
|
|
||||||
$ cd ~/linux-4.7 # change to the 4.7 source dir
|
$ cd ~/linux-5.7 # change to the 5.7 source dir
|
||||||
$ patch -p1 < ../patch-4.8-rc3 # apply the 4.8-rc3 patch
|
$ patch -p1 < ../patch-5.8-rc3 # apply the 5.8-rc3 patch
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ mv linux-4.7 linux-4.8-rc3 # rename the source dir
|
$ mv linux-5.7 linux-5.8-rc3 # rename the source dir
|
||||||
|
|
||||||
# now let's move from 4.8-rc3 to 4.8-rc5
|
# now let's move from 5.8-rc3 to 5.8-rc5
|
||||||
|
|
||||||
$ cd ~/linux-4.8-rc3 # change to the 4.8-rc3 dir
|
$ cd ~/linux-5.8-rc3 # change to the 5.8-rc3 dir
|
||||||
$ patch -p1 -R < ../patch-4.8-rc3 # revert the 4.8-rc3 patch
|
$ patch -p1 -R < ../patch-5.8-rc3 # revert the 5.8-rc3 patch
|
||||||
$ patch -p1 < ../patch-4.8-rc5 # apply the new 4.8-rc5 patch
|
$ patch -p1 < ../patch-5.8-rc5 # apply the new 5.8-rc5 patch
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ mv linux-4.8-rc3 linux-4.8-rc5 # rename the source dir
|
$ mv linux-5.8-rc3 linux-5.8-rc5 # rename the source dir
|
||||||
|
|
||||||
# finally let's try and move from 4.7.3 to 4.8-rc5
|
# finally let's try and move from 5.7.3 to 5.8-rc5
|
||||||
|
|
||||||
$ cd ~/linux-4.7.3 # change to the kernel source dir
|
$ cd ~/linux-5.7.3 # change to the kernel source dir
|
||||||
$ patch -p1 -R < ../patch-4.7.3 # revert the 4.7.3 patch
|
$ patch -p1 -R < ../patch-5.7.3 # revert the 5.7.3 patch
|
||||||
$ patch -p1 < ../patch-4.8-rc5 # apply new 4.8-rc5 patch
|
$ patch -p1 < ../patch-5.8-rc5 # apply new 5.8-rc5 patch
|
||||||
$ cd ..
|
$ cd ..
|
||||||
$ mv linux-4.7.3 linux-4.8-rc5 # rename the kernel source dir
|
$ mv linux-5.7.3 linux-5.8-rc5 # rename the kernel source dir
|
||||||
|
|
||||||
|
|
||||||
The -mm patches and the linux-next tree
|
The -mm patches and the linux-next tree
|
||||||
|
|
|
@ -80,7 +80,9 @@ nonzero when shrink_dcache_pages() has been called and the
|
||||||
dcache isn't pruned yet.
|
dcache isn't pruned yet.
|
||||||
|
|
||||||
nr_negative shows the number of unused dentries that are also
|
nr_negative shows the number of unused dentries that are also
|
||||||
negative dentries which do not mapped to actual files.
|
negative dentries which do not map to any files. Instead,
|
||||||
|
they help speeding up rejection of non-existing files provided
|
||||||
|
by the users.
|
||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
.. _it_readme:
|
.. _it_readme:
|
||||||
|
|
||||||
Rilascio del kernel Linux 4.x <http://kernel.org/>
|
Rilascio del kernel Linux 5.x <http://kernel.org/>
|
||||||
===================================================
|
===================================================
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
51
MAINTAINERS
51
MAINTAINERS
|
@ -409,8 +409,7 @@ F: drivers/platform/x86/wmi.c
|
||||||
F: include/uapi/linux/wmi.h
|
F: include/uapi/linux/wmi.h
|
||||||
|
|
||||||
AD1889 ALSA SOUND DRIVER
|
AD1889 ALSA SOUND DRIVER
|
||||||
M: Thibaut Varene <T-Bone@parisc-linux.org>
|
W: https://parisc.wiki.kernel.org/index.php/AD1889
|
||||||
W: http://wiki.parisc-linux.org/AD1889
|
|
||||||
L: linux-parisc@vger.kernel.org
|
L: linux-parisc@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: sound/pci/ad1889.*
|
F: sound/pci/ad1889.*
|
||||||
|
@ -2849,8 +2848,11 @@ F: include/uapi/linux/if_bonding.h
|
||||||
BPF (Safe dynamic programs and tools)
|
BPF (Safe dynamic programs and tools)
|
||||||
M: Alexei Starovoitov <ast@kernel.org>
|
M: Alexei Starovoitov <ast@kernel.org>
|
||||||
M: Daniel Borkmann <daniel@iogearbox.net>
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
|
R: Martin KaFai Lau <kafai@fb.com>
|
||||||
|
R: Song Liu <songliubraving@fb.com>
|
||||||
|
R: Yonghong Song <yhs@fb.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: linux-kernel@vger.kernel.org
|
L: bpf@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git
|
||||||
Q: https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147
|
Q: https://patchwork.ozlabs.org/project/netdev/list/?delegate=77147
|
||||||
|
@ -2874,10 +2876,13 @@ F: samples/bpf/
|
||||||
F: tools/bpf/
|
F: tools/bpf/
|
||||||
F: tools/lib/bpf/
|
F: tools/lib/bpf/
|
||||||
F: tools/testing/selftests/bpf/
|
F: tools/testing/selftests/bpf/
|
||||||
|
K: bpf
|
||||||
|
N: bpf
|
||||||
|
|
||||||
BPF JIT for ARM
|
BPF JIT for ARM
|
||||||
M: Shubham Bansal <illusionist.neo@gmail.com>
|
M: Shubham Bansal <illusionist.neo@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/net/
|
F: arch/arm/net/
|
||||||
|
|
||||||
|
@ -2886,18 +2891,21 @@ M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
M: Alexei Starovoitov <ast@kernel.org>
|
M: Alexei Starovoitov <ast@kernel.org>
|
||||||
M: Zi Shen Lim <zlim.lnx@gmail.com>
|
M: Zi Shen Lim <zlim.lnx@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/arm64/net/
|
F: arch/arm64/net/
|
||||||
|
|
||||||
BPF JIT for MIPS (32-BIT AND 64-BIT)
|
BPF JIT for MIPS (32-BIT AND 64-BIT)
|
||||||
M: Paul Burton <paul.burton@mips.com>
|
M: Paul Burton <paul.burton@mips.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/mips/net/
|
F: arch/mips/net/
|
||||||
|
|
||||||
BPF JIT for NFP NICs
|
BPF JIT for NFP NICs
|
||||||
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
M: Jakub Kicinski <jakub.kicinski@netronome.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/netronome/nfp/bpf/
|
F: drivers/net/ethernet/netronome/nfp/bpf/
|
||||||
|
|
||||||
|
@ -2905,6 +2913,7 @@ BPF JIT for POWERPC (32-BIT AND 64-BIT)
|
||||||
M: Naveen N. Rao <naveen.n.rao@linux.ibm.com>
|
M: Naveen N. Rao <naveen.n.rao@linux.ibm.com>
|
||||||
M: Sandipan Das <sandipan@linux.ibm.com>
|
M: Sandipan Das <sandipan@linux.ibm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/powerpc/net/
|
F: arch/powerpc/net/
|
||||||
|
|
||||||
|
@ -2912,6 +2921,7 @@ BPF JIT for S390
|
||||||
M: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
M: Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
M: Heiko Carstens <heiko.carstens@de.ibm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/s390/net/
|
F: arch/s390/net/
|
||||||
X: arch/s390/net/pnet.c
|
X: arch/s390/net/pnet.c
|
||||||
|
@ -2919,12 +2929,14 @@ X: arch/s390/net/pnet.c
|
||||||
BPF JIT for SPARC (32-BIT AND 64-BIT)
|
BPF JIT for SPARC (32-BIT AND 64-BIT)
|
||||||
M: David S. Miller <davem@davemloft.net>
|
M: David S. Miller <davem@davemloft.net>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/sparc/net/
|
F: arch/sparc/net/
|
||||||
|
|
||||||
BPF JIT for X86 32-BIT
|
BPF JIT for X86 32-BIT
|
||||||
M: Wang YanQing <udknight@gmail.com>
|
M: Wang YanQing <udknight@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/x86/net/bpf_jit_comp32.c
|
F: arch/x86/net/bpf_jit_comp32.c
|
||||||
|
|
||||||
|
@ -2932,6 +2944,7 @@ BPF JIT for X86 64-BIT
|
||||||
M: Alexei Starovoitov <ast@kernel.org>
|
M: Alexei Starovoitov <ast@kernel.org>
|
||||||
M: Daniel Borkmann <daniel@iogearbox.net>
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/x86/net/
|
F: arch/x86/net/
|
||||||
X: arch/x86/net/bpf_jit_comp32.c
|
X: arch/x86/net/bpf_jit_comp32.c
|
||||||
|
@ -3386,9 +3399,8 @@ F: Documentation/media/v4l-drivers/cafe_ccic*
|
||||||
F: drivers/media/platform/marvell-ccic/
|
F: drivers/media/platform/marvell-ccic/
|
||||||
|
|
||||||
CAIF NETWORK LAYER
|
CAIF NETWORK LAYER
|
||||||
M: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Orphan
|
||||||
F: Documentation/networking/caif/
|
F: Documentation/networking/caif/
|
||||||
F: drivers/net/caif/
|
F: drivers/net/caif/
|
||||||
F: include/uapi/linux/caif/
|
F: include/uapi/linux/caif/
|
||||||
|
@ -5182,7 +5194,7 @@ DRM DRIVERS FOR XEN
|
||||||
M: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
|
M: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
|
||||||
T: git git://anongit.freedesktop.org/drm/drm-misc
|
T: git git://anongit.freedesktop.org/drm/drm-misc
|
||||||
L: dri-devel@lists.freedesktop.org
|
L: dri-devel@lists.freedesktop.org
|
||||||
L: xen-devel@lists.xen.org
|
L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/gpu/drm/xen/
|
F: drivers/gpu/drm/xen/
|
||||||
F: Documentation/gpu/xen-front.rst
|
F: Documentation/gpu/xen-front.rst
|
||||||
|
@ -6147,7 +6159,7 @@ FREESCALE SOC SOUND DRIVERS
|
||||||
M: Timur Tabi <timur@kernel.org>
|
M: Timur Tabi <timur@kernel.org>
|
||||||
M: Nicolin Chen <nicoleotsuka@gmail.com>
|
M: Nicolin Chen <nicoleotsuka@gmail.com>
|
||||||
M: Xiubo Li <Xiubo.Lee@gmail.com>
|
M: Xiubo Li <Xiubo.Lee@gmail.com>
|
||||||
R: Fabio Estevam <fabio.estevam@nxp.com>
|
R: Fabio Estevam <festevam@gmail.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
L: linuxppc-dev@lists.ozlabs.org
|
L: linuxppc-dev@lists.ozlabs.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -8483,6 +8495,7 @@ L7 BPF FRAMEWORK
|
||||||
M: John Fastabend <john.fastabend@gmail.com>
|
M: John Fastabend <john.fastabend@gmail.com>
|
||||||
M: Daniel Borkmann <daniel@iogearbox.net>
|
M: Daniel Borkmann <daniel@iogearbox.net>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: include/linux/skmsg.h
|
F: include/linux/skmsg.h
|
||||||
F: net/core/skmsg.c
|
F: net/core/skmsg.c
|
||||||
|
@ -10894,7 +10907,7 @@ F: include/linux/nvmem-consumer.h
|
||||||
F: include/linux/nvmem-provider.h
|
F: include/linux/nvmem-provider.h
|
||||||
|
|
||||||
NXP SGTL5000 DRIVER
|
NXP SGTL5000 DRIVER
|
||||||
M: Fabio Estevam <fabio.estevam@nxp.com>
|
M: Fabio Estevam <festevam@gmail.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/sound/sgtl5000.txt
|
F: Documentation/devicetree/bindings/sound/sgtl5000.txt
|
||||||
|
@ -11308,10 +11321,12 @@ F: include/dt-bindings/
|
||||||
|
|
||||||
OPENCORES I2C BUS DRIVER
|
OPENCORES I2C BUS DRIVER
|
||||||
M: Peter Korsgaard <peter@korsgaard.com>
|
M: Peter Korsgaard <peter@korsgaard.com>
|
||||||
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/i2c/busses/i2c-ocores
|
F: Documentation/i2c/busses/i2c-ocores
|
||||||
F: drivers/i2c/busses/i2c-ocores.c
|
F: drivers/i2c/busses/i2c-ocores.c
|
||||||
|
F: include/linux/platform_data/i2c-ocores.h
|
||||||
|
|
||||||
OPENRISC ARCHITECTURE
|
OPENRISC ARCHITECTURE
|
||||||
M: Jonas Bonn <jonas@southpole.se>
|
M: Jonas Bonn <jonas@southpole.se>
|
||||||
|
@ -11482,7 +11497,7 @@ F: Documentation/blockdev/paride.txt
|
||||||
F: drivers/block/paride/
|
F: drivers/block/paride/
|
||||||
|
|
||||||
PARISC ARCHITECTURE
|
PARISC ARCHITECTURE
|
||||||
M: "James E.J. Bottomley" <jejb@parisc-linux.org>
|
M: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
|
||||||
M: Helge Deller <deller@gmx.de>
|
M: Helge Deller <deller@gmx.de>
|
||||||
L: linux-parisc@vger.kernel.org
|
L: linux-parisc@vger.kernel.org
|
||||||
W: http://www.parisc-linux.org/
|
W: http://www.parisc-linux.org/
|
||||||
|
@ -12869,6 +12884,13 @@ F: Documentation/devicetree/bindings/net/dsa/realtek-smi.txt
|
||||||
F: drivers/net/dsa/realtek-smi*
|
F: drivers/net/dsa/realtek-smi*
|
||||||
F: drivers/net/dsa/rtl83*
|
F: drivers/net/dsa/rtl83*
|
||||||
|
|
||||||
|
REDPINE WIRELESS DRIVER
|
||||||
|
M: Amitkumar Karwar <amitkarwar@gmail.com>
|
||||||
|
M: Siva Rebbagondla <siva8118@gmail.com>
|
||||||
|
L: linux-wireless@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/net/wireless/rsi/
|
||||||
|
|
||||||
REGISTER MAP ABSTRACTION
|
REGISTER MAP ABSTRACTION
|
||||||
M: Mark Brown <broonie@kernel.org>
|
M: Mark Brown <broonie@kernel.org>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
|
@ -13697,6 +13719,15 @@ L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/sfc/
|
F: drivers/net/ethernet/sfc/
|
||||||
|
|
||||||
|
SFF/SFP/SFP+ MODULE SUPPORT
|
||||||
|
M: Russell King <linux@armlinux.org.uk>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/net/phy/phylink.c
|
||||||
|
F: drivers/net/phy/sfp*
|
||||||
|
F: include/linux/phylink.h
|
||||||
|
F: include/linux/sfp.h
|
||||||
|
|
||||||
SGI GRU DRIVER
|
SGI GRU DRIVER
|
||||||
M: Dimitri Sivanich <sivanich@sgi.com>
|
M: Dimitri Sivanich <sivanich@sgi.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -16692,6 +16723,7 @@ M: Jesper Dangaard Brouer <hawk@kernel.org>
|
||||||
M: John Fastabend <john.fastabend@gmail.com>
|
M: John Fastabend <john.fastabend@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: xdp-newbies@vger.kernel.org
|
L: xdp-newbies@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: net/core/xdp.c
|
F: net/core/xdp.c
|
||||||
F: include/net/xdp.h
|
F: include/net/xdp.h
|
||||||
|
@ -16705,6 +16737,7 @@ XDP SOCKETS (AF_XDP)
|
||||||
M: Björn Töpel <bjorn.topel@intel.com>
|
M: Björn Töpel <bjorn.topel@intel.com>
|
||||||
M: Magnus Karlsson <magnus.karlsson@intel.com>
|
M: Magnus Karlsson <magnus.karlsson@intel.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
L: bpf@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: kernel/bpf/xskmap.c
|
F: kernel/bpf/xskmap.c
|
||||||
F: net/xdp/
|
F: net/xdp/
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -2,7 +2,7 @@
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 0
|
PATCHLEVEL = 0
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc5
|
EXTRAVERSION = -rc8
|
||||||
NAME = Shy Crocodile
|
NAME = Shy Crocodile
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -56,15 +56,15 @@
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_DP264) || \
|
#elif defined(CONFIG_ALPHA_DP264) || \
|
||||||
defined(CONFIG_ALPHA_LYNX) || \
|
defined(CONFIG_ALPHA_LYNX) || \
|
||||||
defined(CONFIG_ALPHA_SHARK) || \
|
defined(CONFIG_ALPHA_SHARK)
|
||||||
defined(CONFIG_ALPHA_EIGER)
|
|
||||||
# define NR_IRQS 64
|
# define NR_IRQS 64
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_TITAN)
|
#elif defined(CONFIG_ALPHA_TITAN)
|
||||||
#define NR_IRQS 80
|
#define NR_IRQS 80
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_RAWHIDE) || \
|
#elif defined(CONFIG_ALPHA_RAWHIDE) || \
|
||||||
defined(CONFIG_ALPHA_TAKARA)
|
defined(CONFIG_ALPHA_TAKARA) || \
|
||||||
|
defined(CONFIG_ALPHA_EIGER)
|
||||||
# define NR_IRQS 128
|
# define NR_IRQS 128
|
||||||
|
|
||||||
#elif defined(CONFIG_ALPHA_WILDFIRE)
|
#elif defined(CONFIG_ALPHA_WILDFIRE)
|
||||||
|
|
|
@ -78,7 +78,7 @@ __load_new_mm_context(struct mm_struct *next_mm)
|
||||||
/* Macro for exception fixup code to access integer registers. */
|
/* Macro for exception fixup code to access integer registers. */
|
||||||
#define dpf_reg(r) \
|
#define dpf_reg(r) \
|
||||||
(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \
|
(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \
|
||||||
(r) <= 18 ? (r)+8 : (r)-10])
|
(r) <= 18 ? (r)+10 : (r)-10])
|
||||||
|
|
||||||
asmlinkage void
|
asmlinkage void
|
||||||
do_page_fault(unsigned long address, unsigned long mmcsr,
|
do_page_fault(unsigned long address, unsigned long mmcsr,
|
||||||
|
|
|
@ -191,7 +191,6 @@ config NR_CPUS
|
||||||
|
|
||||||
config ARC_SMP_HALT_ON_RESET
|
config ARC_SMP_HALT_ON_RESET
|
||||||
bool "Enable Halt-on-reset boot mode"
|
bool "Enable Halt-on-reset boot mode"
|
||||||
default y if ARC_UBOOT_SUPPORT
|
|
||||||
help
|
help
|
||||||
In SMP configuration cores can be configured as Halt-on-reset
|
In SMP configuration cores can be configured as Halt-on-reset
|
||||||
or they could all start at same time. For Halt-on-reset, non
|
or they could all start at same time. For Halt-on-reset, non
|
||||||
|
@ -407,6 +406,14 @@ config ARC_HAS_ACCL_REGS
|
||||||
(also referred to as r58:r59). These can also be used by gcc as GPR so
|
(also referred to as r58:r59). These can also be used by gcc as GPR so
|
||||||
kernel needs to save/restore per process
|
kernel needs to save/restore per process
|
||||||
|
|
||||||
|
config ARC_IRQ_NO_AUTOSAVE
|
||||||
|
bool "Disable hardware autosave regfile on interrupts"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
On HS cores, taken interrupt auto saves the regfile on stack.
|
||||||
|
This is programmable and can be optionally disabled in which case
|
||||||
|
software INTERRUPT_PROLOGUE/EPILGUE do the needed work
|
||||||
|
|
||||||
endif # ISA_ARCV2
|
endif # ISA_ARCV2
|
||||||
|
|
||||||
endmenu # "ARC CPU Configuration"
|
endmenu # "ARC CPU Configuration"
|
||||||
|
@ -515,17 +522,6 @@ config ARC_DBG_TLB_PARANOIA
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
config ARC_UBOOT_SUPPORT
|
|
||||||
bool "Support uboot arg Handling"
|
|
||||||
help
|
|
||||||
ARC Linux by default checks for uboot provided args as pointers to
|
|
||||||
external cmdline or DTB. This however breaks in absence of uboot,
|
|
||||||
when booting from Metaware debugger directly, as the registers are
|
|
||||||
not zeroed out on reset by mdb and/or ARCv2 based cores. The bogus
|
|
||||||
registers look like uboot args to kernel which then chokes.
|
|
||||||
So only enable the uboot arg checking/processing if users are sure
|
|
||||||
of uboot being in play.
|
|
||||||
|
|
||||||
config ARC_BUILTIN_DTB_NAME
|
config ARC_BUILTIN_DTB_NAME
|
||||||
string "Built in DTB"
|
string "Built in DTB"
|
||||||
help
|
help
|
||||||
|
|
|
@ -31,7 +31,6 @@ CONFIG_ARC_CACHE_LINE_SHIFT=5
|
||||||
# CONFIG_ARC_HAS_LLSC is not set
|
# CONFIG_ARC_HAS_LLSC is not set
|
||||||
CONFIG_ARC_KVADDR_SIZE=402
|
CONFIG_ARC_KVADDR_SIZE=402
|
||||||
CONFIG_ARC_EMUL_UNALIGNED=y
|
CONFIG_ARC_EMUL_UNALIGNED=y
|
||||||
CONFIG_ARC_UBOOT_SUPPORT=y
|
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
|
|
|
@ -13,7 +13,6 @@ CONFIG_PARTITION_ADVANCED=y
|
||||||
CONFIG_ARC_PLAT_AXS10X=y
|
CONFIG_ARC_PLAT_AXS10X=y
|
||||||
CONFIG_AXS103=y
|
CONFIG_AXS103=y
|
||||||
CONFIG_ISA_ARCV2=y
|
CONFIG_ISA_ARCV2=y
|
||||||
CONFIG_ARC_UBOOT_SUPPORT=y
|
|
||||||
CONFIG_ARC_BUILTIN_DTB_NAME="vdk_hs38"
|
CONFIG_ARC_BUILTIN_DTB_NAME="vdk_hs38"
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
|
|
|
@ -15,8 +15,6 @@ CONFIG_AXS103=y
|
||||||
CONFIG_ISA_ARCV2=y
|
CONFIG_ISA_ARCV2=y
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
# CONFIG_ARC_TIMERS_64BIT is not set
|
# CONFIG_ARC_TIMERS_64BIT is not set
|
||||||
# CONFIG_ARC_SMP_HALT_ON_RESET is not set
|
|
||||||
CONFIG_ARC_UBOOT_SUPPORT=y
|
|
||||||
CONFIG_ARC_BUILTIN_DTB_NAME="vdk_hs38_smp"
|
CONFIG_ARC_BUILTIN_DTB_NAME="vdk_hs38_smp"
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
|
|
|
@ -151,6 +151,14 @@ struct bcr_isa_arcv2 {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct bcr_uarch_build_arcv2 {
|
||||||
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
|
unsigned int pad:8, prod:8, maj:8, min:8;
|
||||||
|
#else
|
||||||
|
unsigned int min:8, maj:8, prod:8, pad:8;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
struct bcr_mpy {
|
struct bcr_mpy {
|
||||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
unsigned int pad:8, x1616:8, dsp:4, cycles:2, type:2, ver:8;
|
unsigned int pad:8, x1616:8, dsp:4, cycles:2, type:2, ver:8;
|
||||||
|
|
|
@ -52,6 +52,17 @@
|
||||||
#define cache_line_size() SMP_CACHE_BYTES
|
#define cache_line_size() SMP_CACHE_BYTES
|
||||||
#define ARCH_DMA_MINALIGN SMP_CACHE_BYTES
|
#define ARCH_DMA_MINALIGN SMP_CACHE_BYTES
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure slab-allocated buffers are 64-bit aligned when atomic64_t uses
|
||||||
|
* ARCv2 64-bit atomics (LLOCKD/SCONDD). This guarantess runtime 64-bit
|
||||||
|
* alignment for any atomic64_t embedded in buffer.
|
||||||
|
* Default ARCH_SLAB_MINALIGN is __alignof__(long long) which has a relaxed
|
||||||
|
* value of 4 (and not 8) in ARC ABI.
|
||||||
|
*/
|
||||||
|
#if defined(CONFIG_ARC_HAS_LL64) && defined(CONFIG_ARC_HAS_LLSC)
|
||||||
|
#define ARCH_SLAB_MINALIGN 8
|
||||||
|
#endif
|
||||||
|
|
||||||
extern void arc_cache_init(void);
|
extern void arc_cache_init(void);
|
||||||
extern char *arc_cache_mumbojumbo(int cpu_id, char *buf, int len);
|
extern char *arc_cache_mumbojumbo(int cpu_id, char *buf, int len);
|
||||||
extern void read_decode_cache_bcr(void);
|
extern void read_decode_cache_bcr(void);
|
||||||
|
|
|
@ -17,6 +17,33 @@
|
||||||
;
|
;
|
||||||
; Now manually save: r12, sp, fp, gp, r25
|
; Now manually save: r12, sp, fp, gp, r25
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARC_IRQ_NO_AUTOSAVE
|
||||||
|
.ifnc \called_from, exception
|
||||||
|
st.as r9, [sp, -10] ; save r9 in it's final stack slot
|
||||||
|
sub sp, sp, 12 ; skip JLI, LDI, EI
|
||||||
|
|
||||||
|
PUSH lp_count
|
||||||
|
PUSHAX lp_start
|
||||||
|
PUSHAX lp_end
|
||||||
|
PUSH blink
|
||||||
|
|
||||||
|
PUSH r11
|
||||||
|
PUSH r10
|
||||||
|
|
||||||
|
sub sp, sp, 4 ; skip r9
|
||||||
|
|
||||||
|
PUSH r8
|
||||||
|
PUSH r7
|
||||||
|
PUSH r6
|
||||||
|
PUSH r5
|
||||||
|
PUSH r4
|
||||||
|
PUSH r3
|
||||||
|
PUSH r2
|
||||||
|
PUSH r1
|
||||||
|
PUSH r0
|
||||||
|
.endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_HAS_ACCL_REGS
|
#ifdef CONFIG_ARC_HAS_ACCL_REGS
|
||||||
PUSH r59
|
PUSH r59
|
||||||
PUSH r58
|
PUSH r58
|
||||||
|
@ -86,6 +113,33 @@
|
||||||
POP r59
|
POP r59
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARC_IRQ_NO_AUTOSAVE
|
||||||
|
.ifnc \called_from, exception
|
||||||
|
POP r0
|
||||||
|
POP r1
|
||||||
|
POP r2
|
||||||
|
POP r3
|
||||||
|
POP r4
|
||||||
|
POP r5
|
||||||
|
POP r6
|
||||||
|
POP r7
|
||||||
|
POP r8
|
||||||
|
POP r9
|
||||||
|
POP r10
|
||||||
|
POP r11
|
||||||
|
|
||||||
|
POP blink
|
||||||
|
POPAX lp_end
|
||||||
|
POPAX lp_start
|
||||||
|
|
||||||
|
POP r9
|
||||||
|
mov lp_count, r9
|
||||||
|
|
||||||
|
add sp, sp, 12 ; skip JLI, LDI, EI
|
||||||
|
ld.as r9, [sp, -10] ; reload r9 which got clobbered
|
||||||
|
.endif
|
||||||
|
#endif
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -207,7 +207,7 @@ raw_copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||||
*/
|
*/
|
||||||
"=&r" (tmp), "+r" (to), "+r" (from)
|
"=&r" (tmp), "+r" (to), "+r" (from)
|
||||||
:
|
:
|
||||||
: "lp_count", "lp_start", "lp_end", "memory");
|
: "lp_count", "memory");
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
@ -433,7 +433,7 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||||
*/
|
*/
|
||||||
"=&r" (tmp), "+r" (to), "+r" (from)
|
"=&r" (tmp), "+r" (to), "+r" (from)
|
||||||
:
|
:
|
||||||
: "lp_count", "lp_start", "lp_end", "memory");
|
: "lp_count", "memory");
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
@ -653,7 +653,7 @@ static inline unsigned long __arc_clear_user(void __user *to, unsigned long n)
|
||||||
" .previous \n"
|
" .previous \n"
|
||||||
: "+r"(d_char), "+r"(res)
|
: "+r"(d_char), "+r"(res)
|
||||||
: "i"(0)
|
: "i"(0)
|
||||||
: "lp_count", "lp_start", "lp_end", "memory");
|
: "lp_count", "memory");
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -686,7 +686,7 @@ __arc_strncpy_from_user(char *dst, const char __user *src, long count)
|
||||||
" .previous \n"
|
" .previous \n"
|
||||||
: "+r"(res), "+r"(dst), "+r"(src), "=r"(val)
|
: "+r"(res), "+r"(dst), "+r"(src), "=r"(val)
|
||||||
: "g"(-EFAULT), "r"(count)
|
: "g"(-EFAULT), "r"(count)
|
||||||
: "lp_count", "lp_start", "lp_end", "memory");
|
: "lp_count", "memory");
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
@ -209,7 +209,9 @@ restore_regs:
|
||||||
;####### Return from Intr #######
|
;####### Return from Intr #######
|
||||||
|
|
||||||
debug_marker_l1:
|
debug_marker_l1:
|
||||||
bbit1.nt r0, STATUS_DE_BIT, .Lintr_ret_to_delay_slot
|
; bbit1.nt r0, STATUS_DE_BIT, .Lintr_ret_to_delay_slot
|
||||||
|
btst r0, STATUS_DE_BIT ; Z flag set if bit clear
|
||||||
|
bnz .Lintr_ret_to_delay_slot ; branch if STATUS_DE_BIT set
|
||||||
|
|
||||||
.Lisr_ret_fast_path:
|
.Lisr_ret_fast_path:
|
||||||
; Handle special case #1: (Entry via Exception, Return via IRQ)
|
; Handle special case #1: (Entry via Exception, Return via IRQ)
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <asm/entry.h>
|
#include <asm/entry.h>
|
||||||
#include <asm/arcregs.h>
|
#include <asm/arcregs.h>
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
|
#include <asm/irqflags.h>
|
||||||
|
|
||||||
.macro CPU_EARLY_SETUP
|
.macro CPU_EARLY_SETUP
|
||||||
|
|
||||||
|
@ -47,6 +48,15 @@
|
||||||
sr r5, [ARC_REG_DC_CTRL]
|
sr r5, [ARC_REG_DC_CTRL]
|
||||||
|
|
||||||
1:
|
1:
|
||||||
|
|
||||||
|
#ifdef CONFIG_ISA_ARCV2
|
||||||
|
; Unaligned access is disabled at reset, so re-enable early as
|
||||||
|
; gcc 7.3.1 (ARC GNU 2018.03) onwards generates unaligned access
|
||||||
|
; by default
|
||||||
|
lr r5, [status32]
|
||||||
|
bset r5, r5, STATUS_AD_BIT
|
||||||
|
kflag r5
|
||||||
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.section .init.text, "ax",@progbits
|
.section .init.text, "ax",@progbits
|
||||||
|
@ -90,15 +100,13 @@ ENTRY(stext)
|
||||||
st.ab 0, [r5, 4]
|
st.ab 0, [r5, 4]
|
||||||
1:
|
1:
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_UBOOT_SUPPORT
|
|
||||||
; Uboot - kernel ABI
|
; Uboot - kernel ABI
|
||||||
; r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2
|
; r0 = [0] No uboot interaction, [1] cmdline in r2, [2] DTB in r2
|
||||||
; r1 = magic number (board identity, unused as of now
|
; r1 = magic number (always zero as of now)
|
||||||
; r2 = pointer to uboot provided cmdline or external DTB in mem
|
; r2 = pointer to uboot provided cmdline or external DTB in mem
|
||||||
; These are handled later in setup_arch()
|
; These are handled later in handle_uboot_args()
|
||||||
st r0, [@uboot_tag]
|
st r0, [@uboot_tag]
|
||||||
st r2, [@uboot_arg]
|
st r2, [@uboot_arg]
|
||||||
#endif
|
|
||||||
|
|
||||||
; setup "current" tsk and optionally cache it in dedicated r25
|
; setup "current" tsk and optionally cache it in dedicated r25
|
||||||
mov r9, @init_task
|
mov r9, @init_task
|
||||||
|
|
|
@ -49,11 +49,13 @@ void arc_init_IRQ(void)
|
||||||
|
|
||||||
*(unsigned int *)&ictrl = 0;
|
*(unsigned int *)&ictrl = 0;
|
||||||
|
|
||||||
|
#ifndef CONFIG_ARC_IRQ_NO_AUTOSAVE
|
||||||
ictrl.save_nr_gpr_pairs = 6; /* r0 to r11 (r12 saved manually) */
|
ictrl.save_nr_gpr_pairs = 6; /* r0 to r11 (r12 saved manually) */
|
||||||
ictrl.save_blink = 1;
|
ictrl.save_blink = 1;
|
||||||
ictrl.save_lp_regs = 1; /* LP_COUNT, LP_START, LP_END */
|
ictrl.save_lp_regs = 1; /* LP_COUNT, LP_START, LP_END */
|
||||||
ictrl.save_u_to_u = 0; /* user ctxt saved on kernel stack */
|
ictrl.save_u_to_u = 0; /* user ctxt saved on kernel stack */
|
||||||
ictrl.save_idx_regs = 1; /* JLI, LDI, EI */
|
ictrl.save_idx_regs = 1; /* JLI, LDI, EI */
|
||||||
|
#endif
|
||||||
|
|
||||||
WRITE_AUX(AUX_IRQ_CTRL, ictrl);
|
WRITE_AUX(AUX_IRQ_CTRL, ictrl);
|
||||||
|
|
||||||
|
|
|
@ -199,20 +199,36 @@ static void read_arc_build_cfg_regs(void)
|
||||||
cpu->bpu.ret_stk = 4 << bpu.rse;
|
cpu->bpu.ret_stk = 4 << bpu.rse;
|
||||||
|
|
||||||
if (cpu->core.family >= 0x54) {
|
if (cpu->core.family >= 0x54) {
|
||||||
unsigned int exec_ctrl;
|
|
||||||
|
|
||||||
READ_BCR(AUX_EXEC_CTRL, exec_ctrl);
|
struct bcr_uarch_build_arcv2 uarch;
|
||||||
cpu->extn.dual_enb = !(exec_ctrl & 1);
|
|
||||||
|
|
||||||
/* dual issue always present for this core */
|
/*
|
||||||
cpu->extn.dual = 1;
|
* The first 0x54 core (uarch maj:min 0:1 or 0:2) was
|
||||||
|
* dual issue only (HS4x). But next uarch rev (1:0)
|
||||||
|
* allows it be configured for single issue (HS3x)
|
||||||
|
* Ensure we fiddle with dual issue only on HS4x
|
||||||
|
*/
|
||||||
|
READ_BCR(ARC_REG_MICRO_ARCH_BCR, uarch);
|
||||||
|
|
||||||
|
if (uarch.prod == 4) {
|
||||||
|
unsigned int exec_ctrl;
|
||||||
|
|
||||||
|
/* dual issue hardware always present */
|
||||||
|
cpu->extn.dual = 1;
|
||||||
|
|
||||||
|
READ_BCR(AUX_EXEC_CTRL, exec_ctrl);
|
||||||
|
|
||||||
|
/* dual issue hardware enabled ? */
|
||||||
|
cpu->extn.dual_enb = !(exec_ctrl & 1);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
READ_BCR(ARC_REG_AP_BCR, ap);
|
READ_BCR(ARC_REG_AP_BCR, ap);
|
||||||
if (ap.ver) {
|
if (ap.ver) {
|
||||||
cpu->extn.ap_num = 2 << ap.num;
|
cpu->extn.ap_num = 2 << ap.num;
|
||||||
cpu->extn.ap_full = !!ap.min;
|
cpu->extn.ap_full = !ap.min;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ_BCR(ARC_REG_SMART_BCR, bcr);
|
READ_BCR(ARC_REG_SMART_BCR, bcr);
|
||||||
|
@ -462,43 +478,78 @@ void setup_processor(void)
|
||||||
arc_chk_core_config();
|
arc_chk_core_config();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int is_kernel(unsigned long addr)
|
static inline bool uboot_arg_invalid(unsigned long addr)
|
||||||
{
|
{
|
||||||
if (addr >= (unsigned long)_stext && addr <= (unsigned long)_end)
|
/*
|
||||||
return 1;
|
* Check that it is a untranslated address (although MMU is not enabled
|
||||||
return 0;
|
* yet, it being a high address ensures this is not by fluke)
|
||||||
|
*/
|
||||||
|
if (addr < PAGE_OFFSET)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
/* Check that address doesn't clobber resident kernel image */
|
||||||
|
return addr >= (unsigned long)_stext && addr <= (unsigned long)_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define IGNORE_ARGS "Ignore U-boot args: "
|
||||||
|
|
||||||
|
/* uboot_tag values for U-boot - kernel ABI revision 0; see head.S */
|
||||||
|
#define UBOOT_TAG_NONE 0
|
||||||
|
#define UBOOT_TAG_CMDLINE 1
|
||||||
|
#define UBOOT_TAG_DTB 2
|
||||||
|
|
||||||
|
void __init handle_uboot_args(void)
|
||||||
|
{
|
||||||
|
bool use_embedded_dtb = true;
|
||||||
|
bool append_cmdline = false;
|
||||||
|
|
||||||
|
/* check that we know this tag */
|
||||||
|
if (uboot_tag != UBOOT_TAG_NONE &&
|
||||||
|
uboot_tag != UBOOT_TAG_CMDLINE &&
|
||||||
|
uboot_tag != UBOOT_TAG_DTB) {
|
||||||
|
pr_warn(IGNORE_ARGS "invalid uboot tag: '%08x'\n", uboot_tag);
|
||||||
|
goto ignore_uboot_args;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uboot_tag != UBOOT_TAG_NONE &&
|
||||||
|
uboot_arg_invalid((unsigned long)uboot_arg)) {
|
||||||
|
pr_warn(IGNORE_ARGS "invalid uboot arg: '%px'\n", uboot_arg);
|
||||||
|
goto ignore_uboot_args;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* see if U-boot passed an external Device Tree blob */
|
||||||
|
if (uboot_tag == UBOOT_TAG_DTB) {
|
||||||
|
machine_desc = setup_machine_fdt((void *)uboot_arg);
|
||||||
|
|
||||||
|
/* external Device Tree blob is invalid - use embedded one */
|
||||||
|
use_embedded_dtb = !machine_desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uboot_tag == UBOOT_TAG_CMDLINE)
|
||||||
|
append_cmdline = true;
|
||||||
|
|
||||||
|
ignore_uboot_args:
|
||||||
|
|
||||||
|
if (use_embedded_dtb) {
|
||||||
|
machine_desc = setup_machine_fdt(__dtb_start);
|
||||||
|
if (!machine_desc)
|
||||||
|
panic("Embedded DT invalid\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE: @boot_command_line is populated by setup_machine_fdt() so this
|
||||||
|
* append processing can only happen after.
|
||||||
|
*/
|
||||||
|
if (append_cmdline) {
|
||||||
|
/* Ensure a whitespace between the 2 cmdlines */
|
||||||
|
strlcat(boot_command_line, " ", COMMAND_LINE_SIZE);
|
||||||
|
strlcat(boot_command_line, uboot_arg, COMMAND_LINE_SIZE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init setup_arch(char **cmdline_p)
|
void __init setup_arch(char **cmdline_p)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ARC_UBOOT_SUPPORT
|
handle_uboot_args();
|
||||||
/* make sure that uboot passed pointer to cmdline/dtb is valid */
|
|
||||||
if (uboot_tag && is_kernel((unsigned long)uboot_arg))
|
|
||||||
panic("Invalid uboot arg\n");
|
|
||||||
|
|
||||||
/* See if u-boot passed an external Device Tree blob */
|
|
||||||
machine_desc = setup_machine_fdt(uboot_arg); /* uboot_tag == 2 */
|
|
||||||
if (!machine_desc)
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
/* No, so try the embedded one */
|
|
||||||
machine_desc = setup_machine_fdt(__dtb_start);
|
|
||||||
if (!machine_desc)
|
|
||||||
panic("Embedded DT invalid\n");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If we are here, it is established that @uboot_arg didn't
|
|
||||||
* point to DT blob. Instead if u-boot says it is cmdline,
|
|
||||||
* append to embedded DT cmdline.
|
|
||||||
* setup_machine_fdt() would have populated @boot_command_line
|
|
||||||
*/
|
|
||||||
if (uboot_tag == 1) {
|
|
||||||
/* Ensure a whitespace between the 2 cmdlines */
|
|
||||||
strlcat(boot_command_line, " ", COMMAND_LINE_SIZE);
|
|
||||||
strlcat(boot_command_line, uboot_arg,
|
|
||||||
COMMAND_LINE_SIZE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Save unparsed command line copy for /proc/cmdline */
|
/* Save unparsed command line copy for /proc/cmdline */
|
||||||
*cmdline_p = boot_command_line;
|
*cmdline_p = boot_command_line;
|
||||||
|
|
|
@ -25,15 +25,11 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_HAS_LL64
|
#ifdef CONFIG_ARC_HAS_LL64
|
||||||
# define PREFETCH_READ(RX) prefetch [RX, 56]
|
|
||||||
# define PREFETCH_WRITE(RX) prefetchw [RX, 64]
|
|
||||||
# define LOADX(DST,RX) ldd.ab DST, [RX, 8]
|
# define LOADX(DST,RX) ldd.ab DST, [RX, 8]
|
||||||
# define STOREX(SRC,RX) std.ab SRC, [RX, 8]
|
# define STOREX(SRC,RX) std.ab SRC, [RX, 8]
|
||||||
# define ZOLSHFT 5
|
# define ZOLSHFT 5
|
||||||
# define ZOLAND 0x1F
|
# define ZOLAND 0x1F
|
||||||
#else
|
#else
|
||||||
# define PREFETCH_READ(RX) prefetch [RX, 28]
|
|
||||||
# define PREFETCH_WRITE(RX) prefetchw [RX, 32]
|
|
||||||
# define LOADX(DST,RX) ld.ab DST, [RX, 4]
|
# define LOADX(DST,RX) ld.ab DST, [RX, 4]
|
||||||
# define STOREX(SRC,RX) st.ab SRC, [RX, 4]
|
# define STOREX(SRC,RX) st.ab SRC, [RX, 4]
|
||||||
# define ZOLSHFT 4
|
# define ZOLSHFT 4
|
||||||
|
@ -41,8 +37,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ENTRY_CFI(memcpy)
|
ENTRY_CFI(memcpy)
|
||||||
prefetch [r1] ; Prefetch the read location
|
|
||||||
prefetchw [r0] ; Prefetch the write location
|
|
||||||
mov.f 0, r2
|
mov.f 0, r2
|
||||||
;;; if size is zero
|
;;; if size is zero
|
||||||
jz.d [blink]
|
jz.d [blink]
|
||||||
|
@ -72,8 +66,6 @@ ENTRY_CFI(memcpy)
|
||||||
lpnz @.Lcopy32_64bytes
|
lpnz @.Lcopy32_64bytes
|
||||||
;; LOOP START
|
;; LOOP START
|
||||||
LOADX (r6, r1)
|
LOADX (r6, r1)
|
||||||
PREFETCH_READ (r1)
|
|
||||||
PREFETCH_WRITE (r3)
|
|
||||||
LOADX (r8, r1)
|
LOADX (r8, r1)
|
||||||
LOADX (r10, r1)
|
LOADX (r10, r1)
|
||||||
LOADX (r4, r1)
|
LOADX (r4, r1)
|
||||||
|
@ -117,9 +109,7 @@ ENTRY_CFI(memcpy)
|
||||||
lpnz @.Lcopy8bytes_1
|
lpnz @.Lcopy8bytes_1
|
||||||
;; LOOP START
|
;; LOOP START
|
||||||
ld.ab r6, [r1, 4]
|
ld.ab r6, [r1, 4]
|
||||||
prefetch [r1, 28] ;Prefetch the next read location
|
|
||||||
ld.ab r8, [r1,4]
|
ld.ab r8, [r1,4]
|
||||||
prefetchw [r3, 32] ;Prefetch the next write location
|
|
||||||
|
|
||||||
SHIFT_1 (r7, r6, 24)
|
SHIFT_1 (r7, r6, 24)
|
||||||
or r7, r7, r5
|
or r7, r7, r5
|
||||||
|
@ -162,9 +152,7 @@ ENTRY_CFI(memcpy)
|
||||||
lpnz @.Lcopy8bytes_2
|
lpnz @.Lcopy8bytes_2
|
||||||
;; LOOP START
|
;; LOOP START
|
||||||
ld.ab r6, [r1, 4]
|
ld.ab r6, [r1, 4]
|
||||||
prefetch [r1, 28] ;Prefetch the next read location
|
|
||||||
ld.ab r8, [r1,4]
|
ld.ab r8, [r1,4]
|
||||||
prefetchw [r3, 32] ;Prefetch the next write location
|
|
||||||
|
|
||||||
SHIFT_1 (r7, r6, 16)
|
SHIFT_1 (r7, r6, 16)
|
||||||
or r7, r7, r5
|
or r7, r7, r5
|
||||||
|
@ -204,9 +192,7 @@ ENTRY_CFI(memcpy)
|
||||||
lpnz @.Lcopy8bytes_3
|
lpnz @.Lcopy8bytes_3
|
||||||
;; LOOP START
|
;; LOOP START
|
||||||
ld.ab r6, [r1, 4]
|
ld.ab r6, [r1, 4]
|
||||||
prefetch [r1, 28] ;Prefetch the next read location
|
|
||||||
ld.ab r8, [r1,4]
|
ld.ab r8, [r1,4]
|
||||||
prefetchw [r3, 32] ;Prefetch the next write location
|
|
||||||
|
|
||||||
SHIFT_1 (r7, r6, 8)
|
SHIFT_1 (r7, r6, 8)
|
||||||
or r7, r7, r5
|
or r7, r7, r5
|
||||||
|
|
|
@ -9,6 +9,7 @@ menuconfig ARC_SOC_HSDK
|
||||||
bool "ARC HS Development Kit SOC"
|
bool "ARC HS Development Kit SOC"
|
||||||
depends on ISA_ARCV2
|
depends on ISA_ARCV2
|
||||||
select ARC_HAS_ACCL_REGS
|
select ARC_HAS_ACCL_REGS
|
||||||
|
select ARC_IRQ_NO_AUTOSAVE
|
||||||
select CLK_HSDK
|
select CLK_HSDK
|
||||||
select RESET_HSDK
|
select RESET_HSDK
|
||||||
select HAVE_PCI
|
select HAVE_PCI
|
||||||
|
|
|
@ -1400,6 +1400,7 @@ config NR_CPUS
|
||||||
config HOTPLUG_CPU
|
config HOTPLUG_CPU
|
||||||
bool "Support for hot-pluggable CPUs"
|
bool "Support for hot-pluggable CPUs"
|
||||||
depends on SMP
|
depends on SMP
|
||||||
|
select GENERIC_IRQ_MIGRATION
|
||||||
help
|
help
|
||||||
Say Y here to experiment with turning CPUs off and on. CPUs
|
Say Y here to experiment with turning CPUs off and on. CPUs
|
||||||
can be controlled through /sys/devices/system/cpu.
|
can be controlled through /sys/devices/system/cpu.
|
||||||
|
|
|
@ -729,7 +729,7 @@
|
||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy-handle = <ðphy0>;
|
phy-handle = <ðphy0>;
|
||||||
phy-mode = "rgmii-txid";
|
phy-mode = "rgmii-id";
|
||||||
};
|
};
|
||||||
|
|
||||||
&tscadc {
|
&tscadc {
|
||||||
|
|
|
@ -651,13 +651,13 @@
|
||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy-handle = <ðphy0>;
|
phy-handle = <ðphy0>;
|
||||||
phy-mode = "rgmii-txid";
|
phy-mode = "rgmii-id";
|
||||||
dual_emac_res_vlan = <1>;
|
dual_emac_res_vlan = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
&cpsw_emac1 {
|
||||||
phy-handle = <ðphy1>;
|
phy-handle = <ðphy1>;
|
||||||
phy-mode = "rgmii-txid";
|
phy-mode = "rgmii-id";
|
||||||
dual_emac_res_vlan = <2>;
|
dual_emac_res_vlan = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -215,7 +215,7 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmc1_pins>;
|
pinctrl-0 = <&mmc1_pins>;
|
||||||
bus-width = <0x4>;
|
bus-width = <0x4>;
|
||||||
cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
cd-inverted;
|
||||||
max-frequency = <26000000>;
|
max-frequency = <26000000>;
|
||||||
vmmc-supply = <&vmmcsd_fixed>;
|
vmmc-supply = <&vmmcsd_fixed>;
|
||||||
|
|
|
@ -144,30 +144,32 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
nand@d0000 {
|
nand-controller@d0000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "pxa3xx_nand-0";
|
|
||||||
num-cs = <1>;
|
|
||||||
marvell,nand-keep-config;
|
|
||||||
nand-on-flash-bbt;
|
|
||||||
|
|
||||||
partitions {
|
nand@0 {
|
||||||
compatible = "fixed-partitions";
|
reg = <0>;
|
||||||
#address-cells = <1>;
|
label = "pxa3xx_nand-0";
|
||||||
#size-cells = <1>;
|
nand-rb = <0>;
|
||||||
|
nand-on-flash-bbt;
|
||||||
|
|
||||||
partition@0 {
|
partitions {
|
||||||
label = "U-Boot";
|
compatible = "fixed-partitions";
|
||||||
reg = <0 0x800000>;
|
#address-cells = <1>;
|
||||||
};
|
#size-cells = <1>;
|
||||||
partition@800000 {
|
|
||||||
label = "Linux";
|
|
||||||
reg = <0x800000 0x800000>;
|
|
||||||
};
|
|
||||||
partition@1000000 {
|
|
||||||
label = "Filesystem";
|
|
||||||
reg = <0x1000000 0x3f000000>;
|
|
||||||
|
|
||||||
|
partition@0 {
|
||||||
|
label = "U-Boot";
|
||||||
|
reg = <0 0x800000>;
|
||||||
|
};
|
||||||
|
partition@800000 {
|
||||||
|
label = "Linux";
|
||||||
|
reg = <0x800000 0x800000>;
|
||||||
|
};
|
||||||
|
partition@1000000 {
|
||||||
|
label = "Filesystem";
|
||||||
|
reg = <0x1000000 0x3f000000>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -160,12 +160,15 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
nand@d0000 {
|
nand-controller@d0000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "pxa3xx_nand-0";
|
|
||||||
num-cs = <1>;
|
nand@0 {
|
||||||
marvell,nand-keep-config;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
label = "pxa3xx_nand-0";
|
||||||
|
nand-rb = <0>;
|
||||||
|
nand-on-flash-bbt;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -81,49 +81,52 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nand@d0000 {
|
nand-controller@d0000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
label = "pxa3xx_nand-0";
|
|
||||||
num-cs = <1>;
|
|
||||||
marvell,nand-keep-config;
|
|
||||||
nand-on-flash-bbt;
|
|
||||||
|
|
||||||
partitions {
|
nand@0 {
|
||||||
compatible = "fixed-partitions";
|
reg = <0>;
|
||||||
#address-cells = <1>;
|
label = "pxa3xx_nand-0";
|
||||||
#size-cells = <1>;
|
nand-rb = <0>;
|
||||||
|
nand-on-flash-bbt;
|
||||||
|
|
||||||
partition@0 {
|
partitions {
|
||||||
label = "u-boot";
|
compatible = "fixed-partitions";
|
||||||
reg = <0x00000000 0x000e0000>;
|
#address-cells = <1>;
|
||||||
read-only;
|
#size-cells = <1>;
|
||||||
};
|
|
||||||
|
|
||||||
partition@e0000 {
|
partition@0 {
|
||||||
label = "u-boot-env";
|
label = "u-boot";
|
||||||
reg = <0x000e0000 0x00020000>;
|
reg = <0x00000000 0x000e0000>;
|
||||||
read-only;
|
read-only;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@100000 {
|
partition@e0000 {
|
||||||
label = "u-boot-env2";
|
label = "u-boot-env";
|
||||||
reg = <0x00100000 0x00020000>;
|
reg = <0x000e0000 0x00020000>;
|
||||||
read-only;
|
read-only;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@120000 {
|
partition@100000 {
|
||||||
label = "zImage";
|
label = "u-boot-env2";
|
||||||
reg = <0x00120000 0x00400000>;
|
reg = <0x00100000 0x00020000>;
|
||||||
};
|
read-only;
|
||||||
|
};
|
||||||
|
|
||||||
partition@520000 {
|
partition@120000 {
|
||||||
label = "initrd";
|
label = "zImage";
|
||||||
reg = <0x00520000 0x00400000>;
|
reg = <0x00120000 0x00400000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@e00000 {
|
partition@520000 {
|
||||||
label = "boot";
|
label = "initrd";
|
||||||
reg = <0x00e00000 0x3f200000>;
|
reg = <0x00520000 0x00400000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
partition@e00000 {
|
||||||
|
label = "boot";
|
||||||
|
reg = <0x00e00000 0x3f200000>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -476,7 +476,7 @@
|
||||||
clocksource: timer@20000 {
|
clocksource: timer@20000 {
|
||||||
compatible = "ti,da830-timer";
|
compatible = "ti,da830-timer";
|
||||||
reg = <0x20000 0x1000>;
|
reg = <0x20000 0x1000>;
|
||||||
interrupts = <12>, <13>;
|
interrupts = <21>, <22>;
|
||||||
interrupt-names = "tint12", "tint34";
|
interrupt-names = "tint12", "tint34";
|
||||||
clocks = <&pll0_auxclk>;
|
clocks = <&pll0_auxclk>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -103,7 +103,7 @@
|
||||||
power {
|
power {
|
||||||
label = "Power Button";
|
label = "Power Button";
|
||||||
gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
|
||||||
gpio-key,wakeup;
|
wakeup-source;
|
||||||
linux,code = <KEY_POWER>;
|
linux,code = <KEY_POWER>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -309,7 +309,7 @@
|
||||||
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
|
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
|
||||||
cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
|
||||||
keep-power-in-suspend;
|
keep-power-in-suspend;
|
||||||
enable-sdio-wakeup;
|
wakeup-source;
|
||||||
vmmc-supply = <®_sd3_vmmc>;
|
vmmc-supply = <®_sd3_vmmc>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -467,7 +467,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gpt: gpt@2098000 {
|
gpt: gpt@2098000 {
|
||||||
compatible = "fsl,imx6sx-gpt", "fsl,imx31-gpt";
|
compatible = "fsl,imx6sx-gpt", "fsl,imx6dl-gpt";
|
||||||
reg = <0x02098000 0x4000>;
|
reg = <0x02098000 0x4000>;
|
||||||
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&clks IMX6SX_CLK_GPT_BUS>,
|
clocks = <&clks IMX6SX_CLK_GPT_BUS>,
|
||||||
|
|
|
@ -274,7 +274,7 @@
|
||||||
compatible = "amlogic,meson6-dwmac", "snps,dwmac";
|
compatible = "amlogic,meson6-dwmac", "snps,dwmac";
|
||||||
reg = <0xc9410000 0x10000
|
reg = <0xc9410000 0x10000
|
||||||
0xc1108108 0x4>;
|
0xc1108108 0x4>;
|
||||||
interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>;
|
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "macirq";
|
interrupt-names = "macirq";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
|
@ -205,8 +205,7 @@
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -221,7 +221,6 @@
|
||||||
/* Realtek RTL8211F (0x001cc916) */
|
/* Realtek RTL8211F (0x001cc916) */
|
||||||
eth_phy: ethernet-phy@0 {
|
eth_phy: ethernet-phy@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
eee-broken-1000t;
|
|
||||||
interrupt-parent = <&gpio_intc>;
|
interrupt-parent = <&gpio_intc>;
|
||||||
/* GPIOH_3 */
|
/* GPIOH_3 */
|
||||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
@ -273,8 +272,7 @@
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&tflash_vdd>;
|
vmmc-supply = <&tflash_vdd>;
|
||||||
vqmmc-supply = <&tf_io>;
|
vqmmc-supply = <&tf_io>;
|
||||||
|
|
|
@ -206,8 +206,7 @@
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -105,7 +105,7 @@
|
||||||
interrupts-extended = <
|
interrupts-extended = <
|
||||||
&cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
|
&cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
|
||||||
&cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
|
&cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
|
||||||
&cpcap 48 1
|
&cpcap 48 0
|
||||||
>;
|
>;
|
||||||
interrupt-names =
|
interrupt-names =
|
||||||
"id_ground", "id_float", "se0conn", "vbusvld",
|
"id_ground", "id_float", "se0conn", "vbusvld",
|
||||||
|
|
|
@ -714,11 +714,7 @@
|
||||||
|
|
||||||
vdda-supply = <&vdac>;
|
vdda-supply = <&vdac>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
port {
|
port {
|
||||||
reg = <0>;
|
|
||||||
venc_out: endpoint {
|
venc_out: endpoint {
|
||||||
remote-endpoint = <&opa_in>;
|
remote-endpoint = <&opa_in>;
|
||||||
ti,channels = <1>;
|
ti,channels = <1>;
|
||||||
|
|
|
@ -814,7 +814,7 @@
|
||||||
/* For debugging, it is often good idea to remove this GPIO.
|
/* For debugging, it is often good idea to remove this GPIO.
|
||||||
It means you can remove back cover (to reboot by removing
|
It means you can remove back cover (to reboot by removing
|
||||||
battery) and still use the MMC card. */
|
battery) and still use the MMC card. */
|
||||||
cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */
|
cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* most boards use vaux3, only some old versions use vmmc2 instead */
|
/* most boards use vaux3, only some old versions use vmmc2 instead */
|
||||||
|
|
|
@ -370,6 +370,19 @@
|
||||||
compatible = "ti,omap2-onenand";
|
compatible = "ti,omap2-onenand";
|
||||||
reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
|
reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These timings are based on CONFIG_OMAP_GPMC_DEBUG=y reported
|
||||||
|
* bootloader set values when booted with v4.19 using both N950
|
||||||
|
* and N9 devices (OneNAND Manufacturer: Samsung):
|
||||||
|
*
|
||||||
|
* gpmc cs0 before gpmc_cs_program_settings:
|
||||||
|
* cs0 GPMC_CS_CONFIG1: 0xfd001202
|
||||||
|
* cs0 GPMC_CS_CONFIG2: 0x00181800
|
||||||
|
* cs0 GPMC_CS_CONFIG3: 0x00030300
|
||||||
|
* cs0 GPMC_CS_CONFIG4: 0x18001804
|
||||||
|
* cs0 GPMC_CS_CONFIG5: 0x03171d1d
|
||||||
|
* cs0 GPMC_CS_CONFIG6: 0x97080000
|
||||||
|
*/
|
||||||
gpmc,sync-read;
|
gpmc,sync-read;
|
||||||
gpmc,sync-write;
|
gpmc,sync-write;
|
||||||
gpmc,burst-length = <16>;
|
gpmc,burst-length = <16>;
|
||||||
|
@ -379,26 +392,27 @@
|
||||||
gpmc,device-width = <2>;
|
gpmc,device-width = <2>;
|
||||||
gpmc,mux-add-data = <2>;
|
gpmc,mux-add-data = <2>;
|
||||||
gpmc,cs-on-ns = <0>;
|
gpmc,cs-on-ns = <0>;
|
||||||
gpmc,cs-rd-off-ns = <87>;
|
gpmc,cs-rd-off-ns = <122>;
|
||||||
gpmc,cs-wr-off-ns = <87>;
|
gpmc,cs-wr-off-ns = <122>;
|
||||||
gpmc,adv-on-ns = <0>;
|
gpmc,adv-on-ns = <0>;
|
||||||
gpmc,adv-rd-off-ns = <10>;
|
gpmc,adv-rd-off-ns = <15>;
|
||||||
gpmc,adv-wr-off-ns = <10>;
|
gpmc,adv-wr-off-ns = <15>;
|
||||||
gpmc,oe-on-ns = <15>;
|
gpmc,oe-on-ns = <20>;
|
||||||
gpmc,oe-off-ns = <87>;
|
gpmc,oe-off-ns = <122>;
|
||||||
gpmc,we-on-ns = <0>;
|
gpmc,we-on-ns = <0>;
|
||||||
gpmc,we-off-ns = <87>;
|
gpmc,we-off-ns = <122>;
|
||||||
gpmc,rd-cycle-ns = <112>;
|
gpmc,rd-cycle-ns = <148>;
|
||||||
gpmc,wr-cycle-ns = <112>;
|
gpmc,wr-cycle-ns = <148>;
|
||||||
gpmc,access-ns = <81>;
|
gpmc,access-ns = <117>;
|
||||||
gpmc,page-burst-access-ns = <15>;
|
gpmc,page-burst-access-ns = <15>;
|
||||||
gpmc,bus-turnaround-ns = <0>;
|
gpmc,bus-turnaround-ns = <0>;
|
||||||
gpmc,cycle2cycle-delay-ns = <0>;
|
gpmc,cycle2cycle-delay-ns = <0>;
|
||||||
gpmc,wait-monitoring-ns = <0>;
|
gpmc,wait-monitoring-ns = <0>;
|
||||||
gpmc,clk-activation-ns = <5>;
|
gpmc,clk-activation-ns = <10>;
|
||||||
gpmc,wr-data-mux-bus-ns = <30>;
|
gpmc,wr-data-mux-bus-ns = <40>;
|
||||||
gpmc,wr-access-ns = <81>;
|
gpmc,wr-access-ns = <117>;
|
||||||
gpmc,sync-clk-ps = <15000>;
|
|
||||||
|
gpmc,sync-clk-ps = <15000>; /* TBC; Where this value came? */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* MTD partition table corresponding to Nokia's MeeGo 1.2
|
* MTD partition table corresponding to Nokia's MeeGo 1.2
|
||||||
|
|
|
@ -644,6 +644,17 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Configure pwm clock source for timers 8 & 9 */
|
||||||
|
&timer8 {
|
||||||
|
assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
|
||||||
|
assigned-clock-parents = <&sys_clkin_ck>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&timer9 {
|
||||||
|
assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
|
||||||
|
assigned-clock-parents = <&sys_clkin_ck>;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
|
* As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
|
||||||
* uart1 wakeirq.
|
* uart1 wakeirq.
|
||||||
|
|
|
@ -317,7 +317,8 @@
|
||||||
|
|
||||||
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0) /* sys_nirq1 */
|
/* sys_nirq1 is pulled down as the SoC is inverting it for GIC */
|
||||||
|
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0)
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -385,7 +386,8 @@
|
||||||
|
|
||||||
palmas: palmas@48 {
|
palmas: palmas@48 {
|
||||||
compatible = "ti,palmas";
|
compatible = "ti,palmas";
|
||||||
interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */
|
/* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
|
||||||
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_LOW>;
|
||||||
reg = <0x48>;
|
reg = <0x48>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
|
@ -651,7 +653,8 @@
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&twl6040_pins>;
|
pinctrl-0 = <&twl6040_pins>;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 119 IRQ_TYPE_NONE>; /* IRQ_SYS_2N cascaded to gic */
|
/* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
|
||||||
|
interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
/* audpwron gpio defined in the board specific dts */
|
/* audpwron gpio defined in the board specific dts */
|
||||||
|
|
||||||
|
|
|
@ -181,6 +181,13 @@
|
||||||
OMAP5_IOPAD(0x0042, PIN_INPUT_PULLDOWN | MUX_MODE6) /* llib_wakereqin.gpio1_wk15 */
|
OMAP5_IOPAD(0x0042, PIN_INPUT_PULLDOWN | MUX_MODE6) /* llib_wakereqin.gpio1_wk15 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
/* sys_nirq1 is pulled down as the SoC is inverting it for GIC */
|
||||||
|
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0)
|
||||||
|
>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&omap5_pmx_core {
|
&omap5_pmx_core {
|
||||||
|
@ -414,8 +421,11 @@
|
||||||
|
|
||||||
palmas: palmas@48 {
|
palmas: palmas@48 {
|
||||||
compatible = "ti,palmas";
|
compatible = "ti,palmas";
|
||||||
interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */
|
|
||||||
reg = <0x48>;
|
reg = <0x48>;
|
||||||
|
pinctrl-0 = <&palmas_sys_nirq_pins>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
/* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
|
||||||
|
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
ti,system-power-controller;
|
ti,system-power-controller;
|
||||||
|
|
|
@ -1046,8 +1046,6 @@
|
||||||
<SYSC_IDLE_SMART>,
|
<SYSC_IDLE_SMART>,
|
||||||
<SYSC_IDLE_SMART_WKUP>;
|
<SYSC_IDLE_SMART_WKUP>;
|
||||||
ti,syss-mask = <1>;
|
ti,syss-mask = <1>;
|
||||||
ti,no-reset-on-init;
|
|
||||||
ti,no-idle-on-init;
|
|
||||||
/* Domains (V, P, C): core, core_pwrdm, l4per_clkdm */
|
/* Domains (V, P, C): core, core_pwrdm, l4per_clkdm */
|
||||||
clocks = <&l4per_clkctrl OMAP5_UART3_CLKCTRL 0>;
|
clocks = <&l4per_clkctrl OMAP5_UART3_CLKCTRL 0>;
|
||||||
clock-names = "fck";
|
clock-names = "fck";
|
||||||
|
|
|
@ -1681,15 +1681,12 @@
|
||||||
|
|
||||||
du: display@feb00000 {
|
du: display@feb00000 {
|
||||||
compatible = "renesas,du-r8a7743";
|
compatible = "renesas,du-r8a7743";
|
||||||
reg = <0 0xfeb00000 0 0x40000>,
|
reg = <0 0xfeb00000 0 0x40000>;
|
||||||
<0 0xfeb90000 0 0x1c>;
|
|
||||||
reg-names = "du", "lvds.0";
|
|
||||||
interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
|
<GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cpg CPG_MOD 724>,
|
clocks = <&cpg CPG_MOD 724>,
|
||||||
<&cpg CPG_MOD 723>,
|
<&cpg CPG_MOD 723>;
|
||||||
<&cpg CPG_MOD 726>;
|
clock-names = "du.0", "du.1";
|
||||||
clock-names = "du.0", "du.1", "lvds.0";
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
|
@ -1704,6 +1701,33 @@
|
||||||
port@1 {
|
port@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
du_out_lvds0: endpoint {
|
du_out_lvds0: endpoint {
|
||||||
|
remote-endpoint = <&lvds0_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lvds0: lvds@feb90000 {
|
||||||
|
compatible = "renesas,r8a7743-lvds";
|
||||||
|
reg = <0 0xfeb90000 0 0x1c>;
|
||||||
|
clocks = <&cpg CPG_MOD 726>;
|
||||||
|
power-domains = <&sysc R8A7743_PD_ALWAYS_ON>;
|
||||||
|
resets = <&cpg 726>;
|
||||||
|
status = "disabled";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
lvds0_in: endpoint {
|
||||||
|
remote-endpoint = <&du_out_lvds0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
lvds0_out: endpoint {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -719,7 +719,6 @@
|
||||||
pm_qos = <&qos_lcdc0>,
|
pm_qos = <&qos_lcdc0>,
|
||||||
<&qos_lcdc1>,
|
<&qos_lcdc1>,
|
||||||
<&qos_cif0>,
|
<&qos_cif0>,
|
||||||
<&qos_cif1>,
|
|
||||||
<&qos_ipp>,
|
<&qos_ipp>,
|
||||||
<&qos_rga>;
|
<&qos_rga>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -216,6 +216,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <24000000>;
|
clock-frequency = <24000000>;
|
||||||
|
clock-output-names = "osc24M";
|
||||||
};
|
};
|
||||||
|
|
||||||
osc32k: clk-32k {
|
osc32k: clk-32k {
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
serial0 = &uart0;
|
serial0 = &uart0;
|
||||||
/* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */
|
ethernet0 = &emac;
|
||||||
ethernet1 = &sdiowifi;
|
ethernet1 = &sdiowifi;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,10 +13,25 @@
|
||||||
stdout-path = "serial0:115200n8";
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
memory@80000000 {
|
/*
|
||||||
|
* Note that recent version of the device tree compiler (starting with
|
||||||
|
* version 1.4.2) warn about this node containing a reg property, but
|
||||||
|
* missing a unit-address. However, the bootloader on these Chromebook
|
||||||
|
* devices relies on the full name of this node to be exactly /memory.
|
||||||
|
* Adding the unit-address causes the bootloader to create a /memory
|
||||||
|
* node and write the memory bank configuration to that node, which in
|
||||||
|
* turn leads the kernel to believe that the device has 2 GiB of
|
||||||
|
* memory instead of the amount detected by the bootloader.
|
||||||
|
*
|
||||||
|
* The name of this node is effectively ABI and must not be changed.
|
||||||
|
*/
|
||||||
|
memory {
|
||||||
|
device_type = "memory";
|
||||||
reg = <0x0 0x80000000 0x0 0x80000000>;
|
reg = <0x0 0x80000000 0x0 0x80000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/delete-node/ memory@80000000;
|
||||||
|
|
||||||
host1x@50000000 {
|
host1x@50000000 {
|
||||||
hdmi@54280000 {
|
hdmi@54280000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -110,11 +110,11 @@
|
||||||
bus-num = <3>;
|
bus-num = <3>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
spi-slave;
|
spi-slave;
|
||||||
|
#address-cells = <0>;
|
||||||
|
|
||||||
slave@0 {
|
slave {
|
||||||
compatible = "lwn,bk4";
|
compatible = "lwn,bk4";
|
||||||
spi-max-frequency = <30000000>;
|
spi-max-frequency = <30000000>;
|
||||||
reg = <0>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
struct irqaction;
|
struct irqaction;
|
||||||
struct pt_regs;
|
struct pt_regs;
|
||||||
extern void migrate_irqs(void);
|
|
||||||
|
|
||||||
extern void asm_do_IRQ(unsigned int, struct pt_regs *);
|
extern void asm_do_IRQ(unsigned int, struct pt_regs *);
|
||||||
void handle_IRQ(unsigned int, struct pt_regs *);
|
void handle_IRQ(unsigned int, struct pt_regs *);
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
#define KVM_REQ_SLEEP \
|
#define KVM_REQ_SLEEP \
|
||||||
KVM_ARCH_REQ_FLAGS(0, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
|
KVM_ARCH_REQ_FLAGS(0, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
|
||||||
#define KVM_REQ_IRQ_PENDING KVM_ARCH_REQ(1)
|
#define KVM_REQ_IRQ_PENDING KVM_ARCH_REQ(1)
|
||||||
|
#define KVM_REQ_VCPU_RESET KVM_ARCH_REQ(2)
|
||||||
|
|
||||||
DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
|
DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
|
||||||
|
|
||||||
|
@ -147,6 +148,13 @@ struct kvm_cpu_context {
|
||||||
|
|
||||||
typedef struct kvm_cpu_context kvm_cpu_context_t;
|
typedef struct kvm_cpu_context kvm_cpu_context_t;
|
||||||
|
|
||||||
|
struct vcpu_reset_state {
|
||||||
|
unsigned long pc;
|
||||||
|
unsigned long r0;
|
||||||
|
bool be;
|
||||||
|
bool reset;
|
||||||
|
};
|
||||||
|
|
||||||
struct kvm_vcpu_arch {
|
struct kvm_vcpu_arch {
|
||||||
struct kvm_cpu_context ctxt;
|
struct kvm_cpu_context ctxt;
|
||||||
|
|
||||||
|
@ -186,6 +194,8 @@ struct kvm_vcpu_arch {
|
||||||
/* Cache some mmu pages needed inside spinlock regions */
|
/* Cache some mmu pages needed inside spinlock regions */
|
||||||
struct kvm_mmu_memory_cache mmu_page_cache;
|
struct kvm_mmu_memory_cache mmu_page_cache;
|
||||||
|
|
||||||
|
struct vcpu_reset_state reset_state;
|
||||||
|
|
||||||
/* Detect first run of a vcpu */
|
/* Detect first run of a vcpu */
|
||||||
bool has_run_once;
|
bool has_run_once;
|
||||||
};
|
};
|
||||||
|
|
|
@ -76,4 +76,9 @@ static inline bool kvm_stage2_has_pud(struct kvm *kvm)
|
||||||
#define S2_PMD_MASK PMD_MASK
|
#define S2_PMD_MASK PMD_MASK
|
||||||
#define S2_PMD_SIZE PMD_SIZE
|
#define S2_PMD_SIZE PMD_SIZE
|
||||||
|
|
||||||
|
static inline bool kvm_stage2_has_pmd(struct kvm *kvm)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __ARM_S2_PGTABLE_H_ */
|
#endif /* __ARM_S2_PGTABLE_H_ */
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/ratelimit.h>
|
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/kallsyms.h>
|
#include <linux/kallsyms.h>
|
||||||
|
@ -109,64 +108,3 @@ int __init arch_probe_nr_irqs(void)
|
||||||
return nr_irqs;
|
return nr_irqs;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
|
||||||
static bool migrate_one_irq(struct irq_desc *desc)
|
|
||||||
{
|
|
||||||
struct irq_data *d = irq_desc_get_irq_data(desc);
|
|
||||||
const struct cpumask *affinity = irq_data_get_affinity_mask(d);
|
|
||||||
struct irq_chip *c;
|
|
||||||
bool ret = false;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If this is a per-CPU interrupt, or the affinity does not
|
|
||||||
* include this CPU, then we have nothing to do.
|
|
||||||
*/
|
|
||||||
if (irqd_is_per_cpu(d) || !cpumask_test_cpu(smp_processor_id(), affinity))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) {
|
|
||||||
affinity = cpu_online_mask;
|
|
||||||
ret = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
c = irq_data_get_irq_chip(d);
|
|
||||||
if (!c->irq_set_affinity)
|
|
||||||
pr_debug("IRQ%u: unable to set affinity\n", d->irq);
|
|
||||||
else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret)
|
|
||||||
cpumask_copy(irq_data_get_affinity_mask(d), affinity);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The current CPU has been marked offline. Migrate IRQs off this CPU.
|
|
||||||
* If the affinity settings do not allow other CPUs, force them onto any
|
|
||||||
* available CPU.
|
|
||||||
*
|
|
||||||
* Note: we must iterate over all IRQs, whether they have an attached
|
|
||||||
* action structure or not, as we need to get chained interrupts too.
|
|
||||||
*/
|
|
||||||
void migrate_irqs(void)
|
|
||||||
{
|
|
||||||
unsigned int i;
|
|
||||||
struct irq_desc *desc;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
|
|
||||||
for_each_irq_desc(i, desc) {
|
|
||||||
bool affinity_broken;
|
|
||||||
|
|
||||||
raw_spin_lock(&desc->lock);
|
|
||||||
affinity_broken = migrate_one_irq(desc);
|
|
||||||
raw_spin_unlock(&desc->lock);
|
|
||||||
|
|
||||||
if (affinity_broken)
|
|
||||||
pr_warn_ratelimited("IRQ%u no longer affine to CPU%u\n",
|
|
||||||
i, smp_processor_id());
|
|
||||||
}
|
|
||||||
|
|
||||||
local_irq_restore(flags);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_HOTPLUG_CPU */
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ int __cpu_disable(void)
|
||||||
/*
|
/*
|
||||||
* OK - migrate IRQs away from this CPU
|
* OK - migrate IRQs away from this CPU
|
||||||
*/
|
*/
|
||||||
migrate_irqs();
|
irq_migrate_all_off_this_cpu();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush user cache and TLB mappings, and then remove this CPU
|
* Flush user cache and TLB mappings, and then remove this CPU
|
||||||
|
|
|
@ -1450,6 +1450,6 @@ void kvm_reset_coprocs(struct kvm_vcpu *vcpu)
|
||||||
reset_coproc_regs(vcpu, table, num);
|
reset_coproc_regs(vcpu, table, num);
|
||||||
|
|
||||||
for (num = 1; num < NR_CP15_REGS; num++)
|
for (num = 1; num < NR_CP15_REGS; num++)
|
||||||
if (vcpu_cp15(vcpu, num) == 0x42424242)
|
WARN(vcpu_cp15(vcpu, num) == 0x42424242,
|
||||||
panic("Didn't reset vcpu_cp15(vcpu, %zi)", num);
|
"Didn't reset vcpu_cp15(vcpu, %zi)", num);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <asm/cputype.h>
|
#include <asm/cputype.h>
|
||||||
#include <asm/kvm_arm.h>
|
#include <asm/kvm_arm.h>
|
||||||
#include <asm/kvm_coproc.h>
|
#include <asm/kvm_coproc.h>
|
||||||
|
#include <asm/kvm_emulate.h>
|
||||||
|
|
||||||
#include <kvm/arm_arch_timer.h>
|
#include <kvm/arm_arch_timer.h>
|
||||||
|
|
||||||
|
@ -69,6 +70,29 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
|
||||||
/* Reset CP15 registers */
|
/* Reset CP15 registers */
|
||||||
kvm_reset_coprocs(vcpu);
|
kvm_reset_coprocs(vcpu);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Additional reset state handling that PSCI may have imposed on us.
|
||||||
|
* Must be done after all the sys_reg reset.
|
||||||
|
*/
|
||||||
|
if (READ_ONCE(vcpu->arch.reset_state.reset)) {
|
||||||
|
unsigned long target_pc = vcpu->arch.reset_state.pc;
|
||||||
|
|
||||||
|
/* Gracefully handle Thumb2 entry point */
|
||||||
|
if (target_pc & 1) {
|
||||||
|
target_pc &= ~1UL;
|
||||||
|
vcpu_set_thumb(vcpu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Propagate caller endianness */
|
||||||
|
if (vcpu->arch.reset_state.be)
|
||||||
|
kvm_vcpu_set_be(vcpu);
|
||||||
|
|
||||||
|
*vcpu_pc(vcpu) = target_pc;
|
||||||
|
vcpu_set_reg(vcpu, 0, vcpu->arch.reset_state.r0);
|
||||||
|
|
||||||
|
vcpu->arch.reset_state.reset = false;
|
||||||
|
}
|
||||||
|
|
||||||
/* Reset arch_timer context */
|
/* Reset arch_timer context */
|
||||||
return kvm_timer_vcpu_reset(vcpu);
|
return kvm_timer_vcpu_reset(vcpu);
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,8 +75,7 @@ void __init n2100_map_io(void)
|
||||||
/*
|
/*
|
||||||
* N2100 PCI.
|
* N2100 PCI.
|
||||||
*/
|
*/
|
||||||
static int __init
|
static int n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
|
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,10 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
|
||||||
mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) &&
|
mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) &&
|
||||||
(cx->mpu_logic_state == PWRDM_POWER_OFF);
|
(cx->mpu_logic_state == PWRDM_POWER_OFF);
|
||||||
|
|
||||||
|
/* Enter broadcast mode for periodic timers */
|
||||||
|
tick_broadcast_enable();
|
||||||
|
|
||||||
|
/* Enter broadcast mode for one-shot timers */
|
||||||
tick_broadcast_enter();
|
tick_broadcast_enter();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -218,15 +222,6 @@ fail:
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* For each cpu, setup the broadcast timer because local timers
|
|
||||||
* stops for the states above C1.
|
|
||||||
*/
|
|
||||||
static void omap_setup_broadcast_timer(void *arg)
|
|
||||||
{
|
|
||||||
tick_broadcast_enable();
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct cpuidle_driver omap4_idle_driver = {
|
static struct cpuidle_driver omap4_idle_driver = {
|
||||||
.name = "omap4_idle",
|
.name = "omap4_idle",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
@ -319,8 +314,5 @@ int __init omap4_idle_init(void)
|
||||||
if (!cpu_clkdm[0] || !cpu_clkdm[1])
|
if (!cpu_clkdm[0] || !cpu_clkdm[1])
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
/* Configure the broadcast timer on each cpu */
|
|
||||||
on_each_cpu(omap_setup_broadcast_timer, NULL, 1);
|
|
||||||
|
|
||||||
return cpuidle_register(idle_driver, cpu_online_mask);
|
return cpuidle_register(idle_driver, cpu_online_mask);
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,6 +83,7 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
|
||||||
u32 enable_mask, enable_shift;
|
u32 enable_mask, enable_shift;
|
||||||
u32 pipd_mask, pipd_shift;
|
u32 pipd_mask, pipd_shift;
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (dsi_id == 0) {
|
if (dsi_id == 0) {
|
||||||
enable_mask = OMAP4_DSI1_LANEENABLE_MASK;
|
enable_mask = OMAP4_DSI1_LANEENABLE_MASK;
|
||||||
|
@ -98,7 +99,11 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
regmap_read(omap4_dsi_mux_syscon, OMAP4_DSIPHY_SYSCON_OFFSET, ®);
|
ret = regmap_read(omap4_dsi_mux_syscon,
|
||||||
|
OMAP4_DSIPHY_SYSCON_OFFSET,
|
||||||
|
®);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
reg &= ~enable_mask;
|
reg &= ~enable_mask;
|
||||||
reg &= ~pipd_mask;
|
reg &= ~pipd_mask;
|
||||||
|
|
|
@ -50,6 +50,9 @@
|
||||||
#define OMAP4_NR_BANKS 4
|
#define OMAP4_NR_BANKS 4
|
||||||
#define OMAP4_NR_IRQS 128
|
#define OMAP4_NR_IRQS 128
|
||||||
|
|
||||||
|
#define SYS_NIRQ1_EXT_SYS_IRQ_1 7
|
||||||
|
#define SYS_NIRQ2_EXT_SYS_IRQ_2 119
|
||||||
|
|
||||||
static void __iomem *wakeupgen_base;
|
static void __iomem *wakeupgen_base;
|
||||||
static void __iomem *sar_base;
|
static void __iomem *sar_base;
|
||||||
static DEFINE_RAW_SPINLOCK(wakeupgen_lock);
|
static DEFINE_RAW_SPINLOCK(wakeupgen_lock);
|
||||||
|
@ -153,6 +156,37 @@ static void wakeupgen_unmask(struct irq_data *d)
|
||||||
irq_chip_unmask_parent(d);
|
irq_chip_unmask_parent(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The sys_nirq pins bypass peripheral modules and are wired directly
|
||||||
|
* to MPUSS wakeupgen. They get automatically inverted for GIC.
|
||||||
|
*/
|
||||||
|
static int wakeupgen_irq_set_type(struct irq_data *d, unsigned int type)
|
||||||
|
{
|
||||||
|
bool inverted = false;
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case IRQ_TYPE_LEVEL_LOW:
|
||||||
|
type &= ~IRQ_TYPE_LEVEL_MASK;
|
||||||
|
type |= IRQ_TYPE_LEVEL_HIGH;
|
||||||
|
inverted = true;
|
||||||
|
break;
|
||||||
|
case IRQ_TYPE_EDGE_FALLING:
|
||||||
|
type &= ~IRQ_TYPE_EDGE_BOTH;
|
||||||
|
type |= IRQ_TYPE_EDGE_RISING;
|
||||||
|
inverted = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inverted && d->hwirq != SYS_NIRQ1_EXT_SYS_IRQ_1 &&
|
||||||
|
d->hwirq != SYS_NIRQ2_EXT_SYS_IRQ_2)
|
||||||
|
pr_warn("wakeupgen: irq%li polarity inverted in dts\n",
|
||||||
|
d->hwirq);
|
||||||
|
|
||||||
|
return irq_chip_set_type_parent(d, type);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
static DEFINE_PER_CPU(u32 [MAX_NR_REG_BANKS], irqmasks);
|
static DEFINE_PER_CPU(u32 [MAX_NR_REG_BANKS], irqmasks);
|
||||||
|
|
||||||
|
@ -446,7 +480,7 @@ static struct irq_chip wakeupgen_chip = {
|
||||||
.irq_mask = wakeupgen_mask,
|
.irq_mask = wakeupgen_mask,
|
||||||
.irq_unmask = wakeupgen_unmask,
|
.irq_unmask = wakeupgen_unmask,
|
||||||
.irq_retrigger = irq_chip_retrigger_hierarchy,
|
.irq_retrigger = irq_chip_retrigger_hierarchy,
|
||||||
.irq_set_type = irq_chip_set_type_parent,
|
.irq_set_type = wakeupgen_irq_set_type,
|
||||||
.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND,
|
.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND,
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
.irq_set_affinity = irq_chip_set_affinity_parent,
|
.irq_set_affinity = irq_chip_set_affinity_parent,
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <asm/suspend.h>
|
#include <asm/suspend.h>
|
||||||
#include "smc.h"
|
#include "smc.h"
|
||||||
|
#include "pm.h"
|
||||||
|
|
||||||
static int tango_pm_powerdown(unsigned long arg)
|
static int tango_pm_powerdown(unsigned long arg)
|
||||||
{
|
{
|
||||||
|
@ -24,10 +25,7 @@ static const struct platform_suspend_ops tango_pm_ops = {
|
||||||
.valid = suspend_valid_only_mem,
|
.valid = suspend_valid_only_mem,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init tango_pm_init(void)
|
void __init tango_pm_init(void)
|
||||||
{
|
{
|
||||||
suspend_set_ops(&tango_pm_ops);
|
suspend_set_ops(&tango_pm_ops);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
late_initcall(tango_pm_init);
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
|
||||||
|
#ifdef CONFIG_SUSPEND
|
||||||
|
void __init tango_pm_init(void);
|
||||||
|
#else
|
||||||
|
#define tango_pm_init NULL
|
||||||
|
#endif
|
|
@ -2,6 +2,7 @@
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/hardware/cache-l2x0.h>
|
#include <asm/hardware/cache-l2x0.h>
|
||||||
#include "smc.h"
|
#include "smc.h"
|
||||||
|
#include "pm.h"
|
||||||
|
|
||||||
static void tango_l2c_write(unsigned long val, unsigned int reg)
|
static void tango_l2c_write(unsigned long val, unsigned int reg)
|
||||||
{
|
{
|
||||||
|
@ -15,4 +16,5 @@ DT_MACHINE_START(TANGO_DT, "Sigma Tango DT")
|
||||||
.dt_compat = tango_dt_compat,
|
.dt_compat = tango_dt_compat,
|
||||||
.l2c_aux_mask = ~0,
|
.l2c_aux_mask = ~0,
|
||||||
.l2c_write_sec = tango_l2c_write,
|
.l2c_write_sec = tango_l2c_write,
|
||||||
|
.init_late = tango_pm_init,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
|
|
@ -2390,4 +2390,6 @@ void arch_teardown_dma_ops(struct device *dev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
arm_teardown_iommu_dma_ops(dev);
|
arm_teardown_iommu_dma_ops(dev);
|
||||||
|
/* Let arch_setup_dma_ops() start again from scratch upon re-probe */
|
||||||
|
set_dma_ops(dev, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -190,8 +190,6 @@ static int pxa_ssp_remove(struct platform_device *pdev)
|
||||||
if (ssp == NULL)
|
if (ssp == NULL)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
iounmap(ssp->mmio_base);
|
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
release_mem_region(res->start, resource_size(res));
|
release_mem_region(res->start, resource_size(res));
|
||||||
|
|
||||||
|
@ -201,7 +199,6 @@ static int pxa_ssp_remove(struct platform_device *pdev)
|
||||||
list_del(&ssp->node);
|
list_del(&ssp->node);
|
||||||
mutex_unlock(&ssp_lock);
|
mutex_unlock(&ssp_lock);
|
||||||
|
|
||||||
kfree(ssp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -247,7 +247,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *or
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Copy arch-dep-instance from template. */
|
/* Copy arch-dep-instance from template. */
|
||||||
memcpy(code, (unsigned char *)optprobe_template_entry,
|
memcpy(code, (unsigned long *)&optprobe_template_entry,
|
||||||
TMPL_END_IDX * sizeof(kprobe_opcode_t));
|
TMPL_END_IDX * sizeof(kprobe_opcode_t));
|
||||||
|
|
||||||
/* Adjust buffer according to instruction. */
|
/* Adjust buffer according to instruction. */
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/dma-mapping.h>
|
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/swiotlb.h>
|
#include <linux/swiotlb.h>
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,7 @@
|
||||||
reg = <0x3a3>;
|
reg = <0x3a3>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -390,7 +390,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
video-codec@1c0e000 {
|
video-codec@1c0e000 {
|
||||||
compatible = "allwinner,sun50i-h5-video-engine";
|
compatible = "allwinner,sun50i-a64-video-engine";
|
||||||
reg = <0x01c0e000 0x1000>;
|
reg = <0x01c0e000 0x1000>;
|
||||||
clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
|
||||||
<&ccu CLK_DRAM_VE>;
|
<&ccu CLK_DRAM_VE>;
|
||||||
|
|
|
@ -187,8 +187,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -305,8 +305,7 @@
|
||||||
max-frequency = <200000000>;
|
max-frequency = <200000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddio_ao3v3>;
|
vmmc-supply = <&vddio_ao3v3>;
|
||||||
vqmmc-supply = <&vddio_tf>;
|
vqmmc-supply = <&vddio_tf>;
|
||||||
|
|
|
@ -238,8 +238,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -258,8 +258,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&tflash_vdd>;
|
vmmc-supply = <&tflash_vdd>;
|
||||||
vqmmc-supply = <&tf_io>;
|
vqmmc-supply = <&tf_io>;
|
||||||
|
|
|
@ -196,8 +196,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -154,8 +154,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -211,8 +211,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vcc_3v3>;
|
vqmmc-supply = <&vcc_3v3>;
|
||||||
|
|
|
@ -131,8 +131,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -238,8 +238,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vcc_3v3>;
|
vmmc-supply = <&vcc_3v3>;
|
||||||
vqmmc-supply = <&vcc_card>;
|
vqmmc-supply = <&vcc_card>;
|
||||||
|
|
|
@ -183,8 +183,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_card>;
|
vqmmc-supply = <&vddio_card>;
|
||||||
|
|
|
@ -137,8 +137,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -356,8 +356,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -147,8 +147,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -170,8 +170,7 @@
|
||||||
max-frequency = <100000000>;
|
max-frequency = <100000000>;
|
||||||
disable-wp;
|
disable-wp;
|
||||||
|
|
||||||
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
|
cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
|
||||||
cd-inverted;
|
|
||||||
|
|
||||||
vmmc-supply = <&vddao_3v3>;
|
vmmc-supply = <&vddao_3v3>;
|
||||||
vqmmc-supply = <&vddio_boot>;
|
vqmmc-supply = <&vddio_boot>;
|
||||||
|
|
|
@ -227,34 +227,34 @@
|
||||||
|
|
||||||
pinctrl_usdhc1_100mhz: usdhc1-100grp {
|
pinctrl_usdhc1_100mhz: usdhc1-100grp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x85
|
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x8d
|
||||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc5
|
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc5
|
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc5
|
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc5
|
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc5
|
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc5
|
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc5
|
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc5
|
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc5
|
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xcd
|
||||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x85
|
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x8d
|
||||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_usdhc1_200mhz: usdhc1-200grp {
|
pinctrl_usdhc1_200mhz: usdhc1-200grp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x87
|
MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x9f
|
||||||
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xc7
|
MX8MQ_IOMUXC_SD1_CMD_USDHC1_CMD 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xc7
|
MX8MQ_IOMUXC_SD1_DATA0_USDHC1_DATA0 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xc7
|
MX8MQ_IOMUXC_SD1_DATA1_USDHC1_DATA1 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xc7
|
MX8MQ_IOMUXC_SD1_DATA2_USDHC1_DATA2 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xc7
|
MX8MQ_IOMUXC_SD1_DATA3_USDHC1_DATA3 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xc7
|
MX8MQ_IOMUXC_SD1_DATA4_USDHC1_DATA4 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xc7
|
MX8MQ_IOMUXC_SD1_DATA5_USDHC1_DATA5 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xc7
|
MX8MQ_IOMUXC_SD1_DATA6_USDHC1_DATA6 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xc7
|
MX8MQ_IOMUXC_SD1_DATA7_USDHC1_DATA7 0xdf
|
||||||
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x87
|
MX8MQ_IOMUXC_SD1_STROBE_USDHC1_STROBE 0x9f
|
||||||
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
MX8MQ_IOMUXC_SD1_RESET_B_USDHC1_RESET_B 0xc1
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -360,6 +360,8 @@
|
||||||
<&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
|
<&clk IMX8MQ_CLK_NAND_USDHC_BUS>,
|
||||||
<&clk IMX8MQ_CLK_USDHC1_ROOT>;
|
<&clk IMX8MQ_CLK_USDHC1_ROOT>;
|
||||||
clock-names = "ipg", "ahb", "per";
|
clock-names = "ipg", "ahb", "per";
|
||||||
|
assigned-clocks = <&clk IMX8MQ_CLK_USDHC1>;
|
||||||
|
assigned-clock-rates = <400000000>;
|
||||||
fsl,tuning-start-tap = <20>;
|
fsl,tuning-start-tap = <20>;
|
||||||
fsl,tuning-step = <2>;
|
fsl,tuning-step = <2>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
|
|
@ -351,7 +351,7 @@
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&cp0_copper_eth_phy_reset>;
|
pinctrl-0 = <&cp0_copper_eth_phy_reset>;
|
||||||
reset-gpios = <&cp1_gpio1 11 GPIO_ACTIVE_LOW>;
|
reset-gpios = <&cp0_gpio2 11 GPIO_ACTIVE_LOW>;
|
||||||
reset-assert-us = <10000>;
|
reset-assert-us = <10000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -404,7 +404,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
intc: interrupt-controller@9bc0000 {
|
intc: interrupt-controller@9bc0000 {
|
||||||
compatible = "arm,gic-v3";
|
compatible = "qcom,msm8996-gic-v3", "arm,gic-v3";
|
||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#redistributor-regions = <1>;
|
#redistributor-regions = <1>;
|
||||||
|
|
|
@ -1011,6 +1011,9 @@
|
||||||
<&cpg CPG_CORE R8A774A1_CLK_S3D1>,
|
<&cpg CPG_CORE R8A774A1_CLK_S3D1>,
|
||||||
<&scif_clk>;
|
<&scif_clk>;
|
||||||
clock-names = "fck", "brg_int", "scif_clk";
|
clock-names = "fck", "brg_int", "scif_clk";
|
||||||
|
dmas = <&dmac1 0x13>, <&dmac1 0x12>,
|
||||||
|
<&dmac2 0x13>, <&dmac2 0x12>;
|
||||||
|
dma-names = "tx", "rx", "tx", "rx";
|
||||||
power-domains = <&sysc R8A774A1_PD_ALWAYS_ON>;
|
power-domains = <&sysc R8A774A1_PD_ALWAYS_ON>;
|
||||||
resets = <&cpg 310>;
|
resets = <&cpg 310>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
|
@ -1262,6 +1262,9 @@
|
||||||
<&cpg CPG_CORE R8A7796_CLK_S3D1>,
|
<&cpg CPG_CORE R8A7796_CLK_S3D1>,
|
||||||
<&scif_clk>;
|
<&scif_clk>;
|
||||||
clock-names = "fck", "brg_int", "scif_clk";
|
clock-names = "fck", "brg_int", "scif_clk";
|
||||||
|
dmas = <&dmac1 0x13>, <&dmac1 0x12>,
|
||||||
|
<&dmac2 0x13>, <&dmac2 0x12>;
|
||||||
|
dma-names = "tx", "rx", "tx", "rx";
|
||||||
power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
|
power-domains = <&sysc R8A7796_PD_ALWAYS_ON>;
|
||||||
resets = <&cpg 310>;
|
resets = <&cpg 310>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
|
@ -1068,6 +1068,9 @@
|
||||||
<&cpg CPG_CORE R8A77965_CLK_S3D1>,
|
<&cpg CPG_CORE R8A77965_CLK_S3D1>,
|
||||||
<&scif_clk>;
|
<&scif_clk>;
|
||||||
clock-names = "fck", "brg_int", "scif_clk";
|
clock-names = "fck", "brg_int", "scif_clk";
|
||||||
|
dmas = <&dmac1 0x13>, <&dmac1 0x12>,
|
||||||
|
<&dmac2 0x13>, <&dmac2 0x12>;
|
||||||
|
dma-names = "tx", "rx", "tx", "rx";
|
||||||
power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
|
power-domains = <&sysc R8A77965_PD_ALWAYS_ON>;
|
||||||
resets = <&cpg 310>;
|
resets = <&cpg 310>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
pinctrl-0 = <&usb30_host_drv>;
|
pinctrl-0 = <&usb30_host_drv>;
|
||||||
regulator-name = "vcc_host_5v";
|
regulator-name = "vcc_host_5v";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
vin-supply = <&vcc_sys>;
|
vin-supply = <&vcc_sys>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -51,6 +52,7 @@
|
||||||
pinctrl-0 = <&usb20_host_drv>;
|
pinctrl-0 = <&usb20_host_drv>;
|
||||||
regulator-name = "vcc_host1_5v";
|
regulator-name = "vcc_host1_5v";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
vin-supply = <&vcc_sys>;
|
vin-supply = <&vcc_sys>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue