mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
Merge 4.5-rc4 into char-misc-next
We want those fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
commit
1b79dff672
1
.mailmap
1
.mailmap
@ -21,6 +21,7 @@ Andrey Ryabinin <ryabinin.a.a@gmail.com> <a.ryabinin@samsung.com>
|
|||||||
Andrew Morton <akpm@linux-foundation.org>
|
Andrew Morton <akpm@linux-foundation.org>
|
||||||
Andrew Vasquez <andrew.vasquez@qlogic.com>
|
Andrew Vasquez <andrew.vasquez@qlogic.com>
|
||||||
Andy Adamson <andros@citi.umich.edu>
|
Andy Adamson <andros@citi.umich.edu>
|
||||||
|
Antonio Ospite <ao2@ao2.it> <ao2@amarulasolutions.com>
|
||||||
Archit Taneja <archit@ti.com>
|
Archit Taneja <archit@ti.com>
|
||||||
Arnaud Patard <arnaud.patard@rtp-net.org>
|
Arnaud Patard <arnaud.patard@rtp-net.org>
|
||||||
Arnd Bergmann <arnd@arndb.de>
|
Arnd Bergmann <arnd@arndb.de>
|
||||||
|
@ -3,7 +3,7 @@ Linux IOMMU Support
|
|||||||
|
|
||||||
The architecture spec can be obtained from the below location.
|
The architecture spec can be obtained from the below location.
|
||||||
|
|
||||||
http://www.intel.com/technology/virtualization/
|
http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/vt-directed-io-spec.pdf
|
||||||
|
|
||||||
This guide gives a quick cheat sheet for some basic understanding.
|
This guide gives a quick cheat sheet for some basic understanding.
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ This is the authoritative documentation on the design, interface and
|
|||||||
conventions of cgroup v2. It describes all userland-visible aspects
|
conventions of cgroup v2. It describes all userland-visible aspects
|
||||||
of cgroup including core and specific controller behaviors. All
|
of cgroup including core and specific controller behaviors. All
|
||||||
future changes must be reflected in this document. Documentation for
|
future changes must be reflected in this document. Documentation for
|
||||||
v1 is available under Documentation/cgroup-legacy/.
|
v1 is available under Documentation/cgroup-v1/.
|
||||||
|
|
||||||
CONTENTS
|
CONTENTS
|
||||||
|
|
||||||
@ -843,6 +843,10 @@ PAGE_SIZE multiple when read back.
|
|||||||
Amount of memory used to cache filesystem data,
|
Amount of memory used to cache filesystem data,
|
||||||
including tmpfs and shared memory.
|
including tmpfs and shared memory.
|
||||||
|
|
||||||
|
sock
|
||||||
|
|
||||||
|
Amount of memory used in network transmission buffers
|
||||||
|
|
||||||
file_mapped
|
file_mapped
|
||||||
|
|
||||||
Amount of cached filesystem data mapped with mmap()
|
Amount of cached filesystem data mapped with mmap()
|
||||||
|
@ -68,7 +68,7 @@ ethernet@f0b60000 {
|
|||||||
phy1: ethernet-phy@1 {
|
phy1: ethernet-phy@1 {
|
||||||
max-speed = <1000>;
|
max-speed = <1000>;
|
||||||
reg = <0x1>;
|
reg = <0x1>;
|
||||||
compatible = "brcm,28nm-gphy", "ethernet-phy-ieee802.3-c22";
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -115,7 +115,7 @@ ethernet@f0ba0000 {
|
|||||||
phy0: ethernet-phy@0 {
|
phy0: ethernet-phy@0 {
|
||||||
max-speed = <1000>;
|
max-speed = <1000>;
|
||||||
reg = <0x0>;
|
reg = <0x0>;
|
||||||
compatible = "brcm,bcm53125", "ethernet-phy-ieee802.3-c22";
|
compatible = "ethernet-phy-ieee802.3-c22";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -4,8 +4,6 @@ Required properties:
|
|||||||
- compatible: should be "hisilicon,hns-dsaf-v1" or "hisilicon,hns-dsaf-v2".
|
- compatible: should be "hisilicon,hns-dsaf-v1" or "hisilicon,hns-dsaf-v2".
|
||||||
"hisilicon,hns-dsaf-v1" is for hip05.
|
"hisilicon,hns-dsaf-v1" is for hip05.
|
||||||
"hisilicon,hns-dsaf-v2" is for Hi1610 and Hi1612.
|
"hisilicon,hns-dsaf-v2" is for Hi1610 and Hi1612.
|
||||||
- dsa-name: dsa fabric name who provide this interface.
|
|
||||||
should be "dsafX", X is the dsaf id.
|
|
||||||
- mode: dsa fabric mode string. only support one of dsaf modes like these:
|
- mode: dsa fabric mode string. only support one of dsaf modes like these:
|
||||||
"2port-64vf",
|
"2port-64vf",
|
||||||
"6port-16rss",
|
"6port-16rss",
|
||||||
@ -26,9 +24,8 @@ Required properties:
|
|||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
dsa: dsa@c7000000 {
|
dsaf0: dsa@c7000000 {
|
||||||
compatible = "hisilicon,hns-dsaf-v1";
|
compatible = "hisilicon,hns-dsaf-v1";
|
||||||
dsa_name = "dsaf0";
|
|
||||||
mode = "6port-16rss";
|
mode = "6port-16rss";
|
||||||
interrupt-parent = <&mbigen_dsa>;
|
interrupt-parent = <&mbigen_dsa>;
|
||||||
reg = <0x0 0xC0000000 0x0 0x420000
|
reg = <0x0 0xC0000000 0x0 0x420000
|
||||||
|
@ -4,8 +4,9 @@ Required properties:
|
|||||||
- compatible: "hisilicon,hns-nic-v1" or "hisilicon,hns-nic-v2".
|
- compatible: "hisilicon,hns-nic-v1" or "hisilicon,hns-nic-v2".
|
||||||
"hisilicon,hns-nic-v1" is for hip05.
|
"hisilicon,hns-nic-v1" is for hip05.
|
||||||
"hisilicon,hns-nic-v2" is for Hi1610 and Hi1612.
|
"hisilicon,hns-nic-v2" is for Hi1610 and Hi1612.
|
||||||
- ae-name: accelerator name who provides this interface,
|
- ae-handle: accelerator engine handle for hns,
|
||||||
is simply a name referring to the name of name in the accelerator node.
|
specifies a reference to the associating hardware driver node.
|
||||||
|
see Documentation/devicetree/bindings/net/hisilicon-hns-dsaf.txt
|
||||||
- port-id: is the index of port provided by DSAF (the accelerator). DSAF can
|
- port-id: is the index of port provided by DSAF (the accelerator). DSAF can
|
||||||
connect to 8 PHYs. Port 0 to 1 are both used for adminstration purpose. They
|
connect to 8 PHYs. Port 0 to 1 are both used for adminstration purpose. They
|
||||||
are called debug ports.
|
are called debug ports.
|
||||||
@ -41,7 +42,7 @@ Example:
|
|||||||
|
|
||||||
ethernet@0{
|
ethernet@0{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <0>;
|
port-id = <0>;
|
||||||
local-mac-address = [a2 14 e4 4b 56 76];
|
local-mac-address = [a2 14 e4 4b 56 76];
|
||||||
};
|
};
|
||||||
|
@ -6,12 +6,17 @@ Required properties:
|
|||||||
- interrupts: interrupt for the device
|
- interrupts: interrupt for the device
|
||||||
- phy: See ethernet.txt file in the same directory.
|
- phy: See ethernet.txt file in the same directory.
|
||||||
- phy-mode: See ethernet.txt file in the same directory
|
- phy-mode: See ethernet.txt file in the same directory
|
||||||
- clocks: a pointer to the reference clock for this device.
|
- clocks: List of clocks for this device. At least one clock is
|
||||||
|
mandatory for the core clock. If several clocks are given, then the
|
||||||
|
clock-names property must be used to identify them.
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
- tx-csum-limit: maximum mtu supported by port that allow TX checksum.
|
- tx-csum-limit: maximum mtu supported by port that allow TX checksum.
|
||||||
Value is presented in bytes. If not used, by default 1600B is set for
|
Value is presented in bytes. If not used, by default 1600B is set for
|
||||||
"marvell,armada-370-neta" and 9800B for others.
|
"marvell,armada-370-neta" and 9800B for others.
|
||||||
|
- clock-names: List of names corresponding to clocks property; shall be
|
||||||
|
"core" for core clock and "bus" for the optional bus clock.
|
||||||
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -38,7 +38,6 @@ Example :
|
|||||||
|
|
||||||
phy11: ethernet-phy@1 {
|
phy11: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -48,7 +47,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy12: ethernet-phy@2 {
|
phy12: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -58,7 +56,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy13: ethernet-phy@3 {
|
phy13: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -68,7 +65,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy14: ethernet-phy@4 {
|
phy14: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -85,7 +81,6 @@ Example :
|
|||||||
|
|
||||||
phy21: ethernet-phy@1 {
|
phy21: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -95,7 +90,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy22: ethernet-phy@2 {
|
phy22: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -105,7 +99,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy23: ethernet-phy@3 {
|
phy23: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -115,7 +108,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy24: ethernet-phy@4 {
|
phy24: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -47,7 +47,6 @@ Example :
|
|||||||
|
|
||||||
phy11: ethernet-phy@1 {
|
phy11: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -57,7 +56,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy12: ethernet-phy@2 {
|
phy12: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -67,7 +65,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy13: ethernet-phy@3 {
|
phy13: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -77,7 +74,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy14: ethernet-phy@4 {
|
phy14: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -94,7 +90,6 @@ Example :
|
|||||||
|
|
||||||
phy21: ethernet-phy@1 {
|
phy21: ethernet-phy@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -104,7 +99,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy22: ethernet-phy@2 {
|
phy22: ethernet-phy@2 {
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -114,7 +108,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy23: ethernet-phy@3 {
|
phy23: ethernet-phy@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
@ -124,7 +117,6 @@ Example :
|
|||||||
};
|
};
|
||||||
phy24: ethernet-phy@4 {
|
phy24: ethernet-phy@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
compatible = "marvell,88e1149r";
|
|
||||||
marvell,reg-init = <3 0x10 0 0x5777>,
|
marvell,reg-init = <3 0x10 0 0x5777>,
|
||||||
<3 0x11 0 0x00aa>,
|
<3 0x11 0 0x00aa>,
|
||||||
<3 0x12 0 0x4105>,
|
<3 0x12 0 0x4105>,
|
||||||
|
@ -17,8 +17,7 @@ Optional Properties:
|
|||||||
"ethernet-phy-ieee802.3-c22" or "ethernet-phy-ieee802.3-c45" for
|
"ethernet-phy-ieee802.3-c22" or "ethernet-phy-ieee802.3-c45" for
|
||||||
PHYs that implement IEEE802.3 clause 22 or IEEE802.3 clause 45
|
PHYs that implement IEEE802.3 clause 22 or IEEE802.3 clause 45
|
||||||
specifications. If neither of these are specified, the default is to
|
specifications. If neither of these are specified, the default is to
|
||||||
assume clause 22. The compatible list may also contain other
|
assume clause 22.
|
||||||
elements.
|
|
||||||
|
|
||||||
If the phy's identifier is known then the list may contain an entry
|
If the phy's identifier is known then the list may contain an entry
|
||||||
of the form: "ethernet-phy-idAAAA.BBBB" where
|
of the form: "ethernet-phy-idAAAA.BBBB" where
|
||||||
@ -28,6 +27,9 @@ Optional Properties:
|
|||||||
4 hex digits. This is the chip vendor OUI bits 19:24,
|
4 hex digits. This is the chip vendor OUI bits 19:24,
|
||||||
followed by 10 bits of a vendor specific ID.
|
followed by 10 bits of a vendor specific ID.
|
||||||
|
|
||||||
|
The compatible list should not contain other values than those
|
||||||
|
listed here.
|
||||||
|
|
||||||
- max-speed: Maximum PHY supported speed (10, 100, 1000...)
|
- max-speed: Maximum PHY supported speed (10, 100, 1000...)
|
||||||
|
|
||||||
- broken-turn-around: If set, indicates the PHY device does not correctly
|
- broken-turn-around: If set, indicates the PHY device does not correctly
|
||||||
|
@ -8,6 +8,7 @@ OHCI and EHCI controllers.
|
|||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC;
|
- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC;
|
||||||
"renesas,pci-r8a7791" for the R8A7791 SoC;
|
"renesas,pci-r8a7791" for the R8A7791 SoC;
|
||||||
|
"renesas,pci-r8a7793" for the R8A7793 SoC;
|
||||||
"renesas,pci-r8a7794" for the R8A7794 SoC;
|
"renesas,pci-r8a7794" for the R8A7794 SoC;
|
||||||
"renesas,pci-rcar-gen2" for a generic R-Car Gen2 compatible device
|
"renesas,pci-rcar-gen2" for a generic R-Car Gen2 compatible device
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ Required properties:
|
|||||||
compatible: "renesas,pcie-r8a7779" for the R8A7779 SoC;
|
compatible: "renesas,pcie-r8a7779" for the R8A7779 SoC;
|
||||||
"renesas,pcie-r8a7790" for the R8A7790 SoC;
|
"renesas,pcie-r8a7790" for the R8A7790 SoC;
|
||||||
"renesas,pcie-r8a7791" for the R8A7791 SoC;
|
"renesas,pcie-r8a7791" for the R8A7791 SoC;
|
||||||
|
"renesas,pcie-r8a7793" for the R8A7793 SoC;
|
||||||
"renesas,pcie-r8a7795" for the R8A7795 SoC;
|
"renesas,pcie-r8a7795" for the R8A7795 SoC;
|
||||||
"renesas,pcie-rcar-gen2" for a generic R-Car Gen2 compatible device.
|
"renesas,pcie-rcar-gen2" for a generic R-Car Gen2 compatible device.
|
||||||
|
|
||||||
|
@ -30,6 +30,8 @@ The compatible list for this generic sound card currently:
|
|||||||
"fsl,imx-audio-sgtl5000"
|
"fsl,imx-audio-sgtl5000"
|
||||||
(compatible with Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt)
|
(compatible with Documentation/devicetree/bindings/sound/imx-audio-sgtl5000.txt)
|
||||||
|
|
||||||
|
"fsl,imx-audio-wm8960"
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
|
|
||||||
- compatible : Contains one of entries in the compatible list.
|
- compatible : Contains one of entries in the compatible list.
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
* Renesas R-Car Thermal
|
* Renesas R-Car Thermal
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : "renesas,thermal-<soctype>", "renesas,rcar-thermal"
|
- compatible : "renesas,thermal-<soctype>",
|
||||||
as fallback.
|
"renesas,rcar-gen2-thermal" (with thermal-zone) or
|
||||||
|
"renesas,rcar-thermal" (without thermal-zone) as fallback.
|
||||||
Examples with soctypes are:
|
Examples with soctypes are:
|
||||||
- "renesas,thermal-r8a73a4" (R-Mobile APE6)
|
- "renesas,thermal-r8a73a4" (R-Mobile APE6)
|
||||||
- "renesas,thermal-r8a7779" (R-Car H1)
|
- "renesas,thermal-r8a7779" (R-Car H1)
|
||||||
@ -36,3 +37,35 @@ thermal@e61f0000 {
|
|||||||
0xe61f0300 0x38>;
|
0xe61f0300 0x38>;
|
||||||
interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Example (with thermal-zone):
|
||||||
|
|
||||||
|
thermal-zones {
|
||||||
|
cpu_thermal: cpu-thermal {
|
||||||
|
polling-delay-passive = <1000>;
|
||||||
|
polling-delay = <5000>;
|
||||||
|
|
||||||
|
thermal-sensors = <&thermal>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
cpu-crit {
|
||||||
|
temperature = <115000>;
|
||||||
|
hysteresis = <0>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
cooling-maps {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
thermal: thermal@e61f0000 {
|
||||||
|
compatible = "renesas,thermal-r8a7790",
|
||||||
|
"renesas,rcar-gen2-thermal",
|
||||||
|
"renesas,rcar-thermal";
|
||||||
|
reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>;
|
||||||
|
interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&mstp5_clks R8A7790_CLK_THERMAL>;
|
||||||
|
power-domains = <&cpg_clocks>;
|
||||||
|
#thermal-sensor-cells = <0>;
|
||||||
|
};
|
||||||
|
@ -240,8 +240,8 @@ Table 1-2: Contents of the status files (as of 4.1)
|
|||||||
RssFile size of resident file mappings
|
RssFile size of resident file mappings
|
||||||
RssShmem size of resident shmem memory (includes SysV shm,
|
RssShmem size of resident shmem memory (includes SysV shm,
|
||||||
mapping of tmpfs and shared anonymous mappings)
|
mapping of tmpfs and shared anonymous mappings)
|
||||||
VmData size of data, stack, and text segments
|
VmData size of private data segments
|
||||||
VmStk size of data, stack, and text segments
|
VmStk size of stack segments
|
||||||
VmExe size of text segment
|
VmExe size of text segment
|
||||||
VmLib size of shared library code
|
VmLib size of shared library code
|
||||||
VmPTE size of page table entries
|
VmPTE size of page table entries
|
||||||
@ -356,7 +356,7 @@ address perms offset dev inode pathname
|
|||||||
a7cb1000-a7cb2000 ---p 00000000 00:00 0
|
a7cb1000-a7cb2000 ---p 00000000 00:00 0
|
||||||
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
|
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
|
||||||
a7eb2000-a7eb3000 ---p 00000000 00:00 0
|
a7eb2000-a7eb3000 ---p 00000000 00:00 0
|
||||||
a7eb3000-a7ed5000 rw-p 00000000 00:00 0 [stack:1001]
|
a7eb3000-a7ed5000 rw-p 00000000 00:00 0
|
||||||
a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6
|
a7ed5000-a8008000 r-xp 00000000 03:00 4222 /lib/libc.so.6
|
||||||
a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6
|
a8008000-a800a000 r--p 00133000 03:00 4222 /lib/libc.so.6
|
||||||
a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6
|
a800a000-a800b000 rw-p 00135000 03:00 4222 /lib/libc.so.6
|
||||||
@ -388,7 +388,6 @@ is not associated with a file:
|
|||||||
|
|
||||||
[heap] = the heap of the program
|
[heap] = the heap of the program
|
||||||
[stack] = the stack of the main process
|
[stack] = the stack of the main process
|
||||||
[stack:1001] = the stack of the thread with tid 1001
|
|
||||||
[vdso] = the "virtual dynamic shared object",
|
[vdso] = the "virtual dynamic shared object",
|
||||||
the kernel system call handler
|
the kernel system call handler
|
||||||
|
|
||||||
@ -396,10 +395,8 @@ is not associated with a file:
|
|||||||
|
|
||||||
The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint
|
The /proc/PID/task/TID/maps is a view of the virtual memory from the viewpoint
|
||||||
of the individual tasks of a process. In this file you will see a mapping marked
|
of the individual tasks of a process. In this file you will see a mapping marked
|
||||||
as [stack] if that task sees it as a stack. This is a key difference from the
|
as [stack] if that task sees it as a stack. Hence, for the example above, the
|
||||||
content of /proc/PID/maps, where you will see all mappings that are being used
|
task-level map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:
|
||||||
as stack by all of those tasks. Hence, for the example above, the task-level
|
|
||||||
map, i.e. /proc/PID/task/TID/maps for thread 1001 will look like this:
|
|
||||||
|
|
||||||
08048000-08049000 r-xp 00000000 03:00 8312 /opt/test
|
08048000-08049000 r-xp 00000000 03:00 8312 /opt/test
|
||||||
08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test
|
08049000-0804a000 rw-p 00001000 03:00 8312 /opt/test
|
||||||
|
@ -1496,6 +1496,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
could change it dynamically, usually by
|
could change it dynamically, usually by
|
||||||
/sys/module/printk/parameters/ignore_loglevel.
|
/sys/module/printk/parameters/ignore_loglevel.
|
||||||
|
|
||||||
|
ignore_rlimit_data
|
||||||
|
Ignore RLIMIT_DATA setting for data mappings,
|
||||||
|
print warning at first misuse. Can be changed via
|
||||||
|
/sys/module/kernel/parameters/ignore_rlimit_data.
|
||||||
|
|
||||||
ihash_entries= [KNL]
|
ihash_entries= [KNL]
|
||||||
Set number of hash buckets for inode cache.
|
Set number of hash buckets for inode cache.
|
||||||
|
|
||||||
@ -4230,6 +4235,17 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
The default value of this parameter is determined by
|
The default value of this parameter is determined by
|
||||||
the config option CONFIG_WQ_POWER_EFFICIENT_DEFAULT.
|
the config option CONFIG_WQ_POWER_EFFICIENT_DEFAULT.
|
||||||
|
|
||||||
|
workqueue.debug_force_rr_cpu
|
||||||
|
Workqueue used to implicitly guarantee that work
|
||||||
|
items queued without explicit CPU specified are put
|
||||||
|
on the local CPU. This guarantee is no longer true
|
||||||
|
and while local CPU is still preferred work items
|
||||||
|
may be put on foreign CPUs. This debug option
|
||||||
|
forces round-robin CPU selection to flush out
|
||||||
|
usages which depend on the now broken guarantee.
|
||||||
|
When enabled, memory and cache locality will be
|
||||||
|
impacted.
|
||||||
|
|
||||||
x2apic_phys [X86-64,APIC] Use x2apic physical mode instead of
|
x2apic_phys [X86-64,APIC] Use x2apic physical mode instead of
|
||||||
default x2apic cluster mode on platforms
|
default x2apic cluster mode on platforms
|
||||||
supporting x2apic.
|
supporting x2apic.
|
||||||
|
@ -594,7 +594,7 @@ tcp_fastopen - INTEGER
|
|||||||
|
|
||||||
tcp_syn_retries - INTEGER
|
tcp_syn_retries - INTEGER
|
||||||
Number of times initial SYNs for an active TCP connection attempt
|
Number of times initial SYNs for an active TCP connection attempt
|
||||||
will be retransmitted. Should not be higher than 255. Default value
|
will be retransmitted. Should not be higher than 127. Default value
|
||||||
is 6, which corresponds to 63seconds till the last retransmission
|
is 6, which corresponds to 63seconds till the last retransmission
|
||||||
with the current initial RTO of 1second. With this the final timeout
|
with the current initial RTO of 1second. With this the final timeout
|
||||||
for an active TCP connection attempt will happen after 127seconds.
|
for an active TCP connection attempt will happen after 127seconds.
|
||||||
|
@ -3025,7 +3025,7 @@ len must be a multiple of sizeof(struct kvm_s390_irq). It must be > 0
|
|||||||
and it must not exceed (max_vcpus + 32) * sizeof(struct kvm_s390_irq),
|
and it must not exceed (max_vcpus + 32) * sizeof(struct kvm_s390_irq),
|
||||||
which is the maximum number of possibly pending cpu-local interrupts.
|
which is the maximum number of possibly pending cpu-local interrupts.
|
||||||
|
|
||||||
4.90 KVM_SMI
|
4.96 KVM_SMI
|
||||||
|
|
||||||
Capability: KVM_CAP_X86_SMM
|
Capability: KVM_CAP_X86_SMM
|
||||||
Architectures: x86
|
Architectures: x86
|
||||||
|
75
MAINTAINERS
75
MAINTAINERS
@ -223,9 +223,7 @@ F: drivers/scsi/aacraid/
|
|||||||
|
|
||||||
ABI/API
|
ABI/API
|
||||||
L: linux-api@vger.kernel.org
|
L: linux-api@vger.kernel.org
|
||||||
F: Documentation/ABI/
|
|
||||||
F: include/linux/syscalls.h
|
F: include/linux/syscalls.h
|
||||||
F: include/uapi/
|
|
||||||
F: kernel/sys_ni.c
|
F: kernel/sys_ni.c
|
||||||
|
|
||||||
ABIT UGURU 1,2 HARDWARE MONITOR DRIVER
|
ABIT UGURU 1,2 HARDWARE MONITOR DRIVER
|
||||||
@ -686,13 +684,6 @@ M: Michael Hanselmann <linux-kernel@hansmi.ch>
|
|||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/macintosh/ams/
|
F: drivers/macintosh/ams/
|
||||||
|
|
||||||
AMSO1100 RNIC DRIVER
|
|
||||||
M: Tom Tucker <tom@opengridcomputing.com>
|
|
||||||
M: Steve Wise <swise@opengridcomputing.com>
|
|
||||||
L: linux-rdma@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/infiniband/hw/amso1100/
|
|
||||||
|
|
||||||
ANALOG DEVICES INC AD9389B DRIVER
|
ANALOG DEVICES INC AD9389B DRIVER
|
||||||
M: Hans Verkuil <hans.verkuil@cisco.com>
|
M: Hans Verkuil <hans.verkuil@cisco.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
@ -967,6 +958,8 @@ M: Rob Herring <robh@kernel.org>
|
|||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-highbank/
|
F: arch/arm/mach-highbank/
|
||||||
|
F: arch/arm/boot/dts/highbank.dts
|
||||||
|
F: arch/arm/boot/dts/ecx-*.dts*
|
||||||
|
|
||||||
ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
|
ARM/CAVIUM NETWORKS CNS3XXX MACHINE SUPPORT
|
||||||
M: Krzysztof Halasa <khalasa@piap.pl>
|
M: Krzysztof Halasa <khalasa@piap.pl>
|
||||||
@ -1042,6 +1035,7 @@ M: Barry Song <baohua@kernel.org>
|
|||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/boot/dts/prima2*
|
||||||
F: arch/arm/mach-prima2/
|
F: arch/arm/mach-prima2/
|
||||||
F: drivers/clk/sirf/
|
F: drivers/clk/sirf/
|
||||||
F: drivers/clocksource/timer-prima2.c
|
F: drivers/clocksource/timer-prima2.c
|
||||||
@ -1143,6 +1137,10 @@ W: http://www.hisilicon.com
|
|||||||
S: Supported
|
S: Supported
|
||||||
T: git git://github.com/hisilicon/linux-hisi.git
|
T: git git://github.com/hisilicon/linux-hisi.git
|
||||||
F: arch/arm/mach-hisi/
|
F: arch/arm/mach-hisi/
|
||||||
|
F: arch/arm/boot/dts/hi3*
|
||||||
|
F: arch/arm/boot/dts/hip*
|
||||||
|
F: arch/arm/boot/dts/hisi*
|
||||||
|
F: arch/arm64/boot/dts/hisilicon/
|
||||||
|
|
||||||
ARM/HP JORNADA 7XX MACHINE SUPPORT
|
ARM/HP JORNADA 7XX MACHINE SUPPORT
|
||||||
M: Kristoffer Ericson <kristoffer.ericson@gmail.com>
|
M: Kristoffer Ericson <kristoffer.ericson@gmail.com>
|
||||||
@ -1219,6 +1217,7 @@ M: Santosh Shilimkar <ssantosh@kernel.org>
|
|||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-keystone/
|
F: arch/arm/mach-keystone/
|
||||||
|
F: arch/arm/boot/dts/k2*
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
|
||||||
|
|
||||||
ARM/TEXAS INSTRUMENT KEYSTONE CLOCK FRAMEWORK
|
ARM/TEXAS INSTRUMENT KEYSTONE CLOCK FRAMEWORK
|
||||||
@ -1287,6 +1286,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-berlin/
|
F: arch/arm/mach-berlin/
|
||||||
F: arch/arm/boot/dts/berlin*
|
F: arch/arm/boot/dts/berlin*
|
||||||
|
F: arch/arm64/boot/dts/marvell/berlin*
|
||||||
|
|
||||||
|
|
||||||
ARM/Marvell Dove/MV78xx0/Orion SOC support
|
ARM/Marvell Dove/MV78xx0/Orion SOC support
|
||||||
@ -1425,6 +1425,7 @@ S: Maintained
|
|||||||
F: arch/arm/boot/dts/qcom-*.dts
|
F: arch/arm/boot/dts/qcom-*.dts
|
||||||
F: arch/arm/boot/dts/qcom-*.dtsi
|
F: arch/arm/boot/dts/qcom-*.dtsi
|
||||||
F: arch/arm/mach-qcom/
|
F: arch/arm/mach-qcom/
|
||||||
|
F: arch/arm64/boot/dts/qcom/*
|
||||||
F: drivers/soc/qcom/
|
F: drivers/soc/qcom/
|
||||||
F: drivers/tty/serial/msm_serial.h
|
F: drivers/tty/serial/msm_serial.h
|
||||||
F: drivers/tty/serial/msm_serial.c
|
F: drivers/tty/serial/msm_serial.c
|
||||||
@ -1484,6 +1485,8 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|||||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/boot/dts/s3c*
|
F: arch/arm/boot/dts/s3c*
|
||||||
|
F: arch/arm/boot/dts/s5p*
|
||||||
|
F: arch/arm/boot/dts/samsung*
|
||||||
F: arch/arm/boot/dts/exynos*
|
F: arch/arm/boot/dts/exynos*
|
||||||
F: arch/arm64/boot/dts/exynos/
|
F: arch/arm64/boot/dts/exynos/
|
||||||
F: arch/arm/plat-samsung/
|
F: arch/arm/plat-samsung/
|
||||||
@ -1563,6 +1566,7 @@ S: Maintained
|
|||||||
F: arch/arm/mach-socfpga/
|
F: arch/arm/mach-socfpga/
|
||||||
F: arch/arm/boot/dts/socfpga*
|
F: arch/arm/boot/dts/socfpga*
|
||||||
F: arch/arm/configs/socfpga_defconfig
|
F: arch/arm/configs/socfpga_defconfig
|
||||||
|
F: arch/arm64/boot/dts/altera/
|
||||||
W: http://www.rocketboards.org
|
W: http://www.rocketboards.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux.git
|
||||||
|
|
||||||
@ -1716,7 +1720,7 @@ M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
|
|||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/boot/dts/vexpress*
|
F: arch/arm/boot/dts/vexpress*
|
||||||
F: arch/arm64/boot/dts/arm/vexpress*
|
F: arch/arm64/boot/dts/arm/
|
||||||
F: arch/arm/mach-vexpress/
|
F: arch/arm/mach-vexpress/
|
||||||
F: */*/vexpress*
|
F: */*/vexpress*
|
||||||
F: */*/*/vexpress*
|
F: */*/*/vexpress*
|
||||||
@ -2343,6 +2347,7 @@ F: arch/arm/mach-bcm/
|
|||||||
F: arch/arm/boot/dts/bcm113*
|
F: arch/arm/boot/dts/bcm113*
|
||||||
F: arch/arm/boot/dts/bcm216*
|
F: arch/arm/boot/dts/bcm216*
|
||||||
F: arch/arm/boot/dts/bcm281*
|
F: arch/arm/boot/dts/bcm281*
|
||||||
|
F: arch/arm64/boot/dts/broadcom/
|
||||||
F: arch/arm/configs/bcm_defconfig
|
F: arch/arm/configs/bcm_defconfig
|
||||||
F: drivers/mmc/host/sdhci-bcm-kona.c
|
F: drivers/mmc/host/sdhci-bcm-kona.c
|
||||||
F: drivers/clocksource/bcm_kona_timer.c
|
F: drivers/clocksource/bcm_kona_timer.c
|
||||||
@ -2357,14 +2362,6 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/rpi/linux-rpi.git
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
N: bcm2835
|
N: bcm2835
|
||||||
|
|
||||||
BROADCOM BCM33XX MIPS ARCHITECTURE
|
|
||||||
M: Kevin Cernekee <cernekee@gmail.com>
|
|
||||||
L: linux-mips@linux-mips.org
|
|
||||||
S: Maintained
|
|
||||||
F: arch/mips/bcm3384/*
|
|
||||||
F: arch/mips/include/asm/mach-bcm3384/*
|
|
||||||
F: arch/mips/kernel/*bmips*
|
|
||||||
|
|
||||||
BROADCOM BCM47XX MIPS ARCHITECTURE
|
BROADCOM BCM47XX MIPS ARCHITECTURE
|
||||||
M: Hauke Mehrtens <hauke@hauke-m.de>
|
M: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
M: Rafał Miłecki <zajec5@gmail.com>
|
M: Rafał Miłecki <zajec5@gmail.com>
|
||||||
@ -3445,7 +3442,7 @@ S: Maintained
|
|||||||
F: drivers/usb/dwc2/
|
F: drivers/usb/dwc2/
|
||||||
|
|
||||||
DESIGNWARE USB3 DRD IP DRIVER
|
DESIGNWARE USB3 DRD IP DRIVER
|
||||||
M: Felipe Balbi <balbi@ti.com>
|
M: Felipe Balbi <balbi@kernel.org>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: linux-omap@vger.kernel.org
|
L: linux-omap@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
||||||
@ -4184,13 +4181,6 @@ W: http://aeschi.ch.eu.org/efs/
|
|||||||
S: Orphan
|
S: Orphan
|
||||||
F: fs/efs/
|
F: fs/efs/
|
||||||
|
|
||||||
EHCA (IBM GX bus InfiniBand adapter) DRIVER
|
|
||||||
M: Hoang-Nam Nguyen <hnguyen@de.ibm.com>
|
|
||||||
M: Christoph Raisch <raisch@de.ibm.com>
|
|
||||||
L: linux-rdma@vger.kernel.org
|
|
||||||
S: Supported
|
|
||||||
F: drivers/infiniband/hw/ehca/
|
|
||||||
|
|
||||||
EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER
|
EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER
|
||||||
M: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
|
M: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
@ -5810,12 +5800,6 @@ M: Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: net/ipv4/netfilter/ipt_MASQUERADE.c
|
F: net/ipv4/netfilter/ipt_MASQUERADE.c
|
||||||
|
|
||||||
IPATH DRIVER
|
|
||||||
M: Mike Marciniszyn <infinipath@intel.com>
|
|
||||||
L: linux-rdma@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/staging/rdma/ipath/
|
|
||||||
|
|
||||||
IPMI SUBSYSTEM
|
IPMI SUBSYSTEM
|
||||||
M: Corey Minyard <minyard@acm.org>
|
M: Corey Minyard <minyard@acm.org>
|
||||||
L: openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
|
L: openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
|
||||||
@ -7371,7 +7355,7 @@ F: drivers/tty/isicom.c
|
|||||||
F: include/linux/isicom.h
|
F: include/linux/isicom.h
|
||||||
|
|
||||||
MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
|
MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
|
||||||
M: Felipe Balbi <balbi@ti.com>
|
M: Felipe Balbi <balbi@kernel.org>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -7940,7 +7924,7 @@ F: drivers/media/platform/omap3isp/
|
|||||||
F: drivers/staging/media/omap4iss/
|
F: drivers/staging/media/omap4iss/
|
||||||
|
|
||||||
OMAP USB SUPPORT
|
OMAP USB SUPPORT
|
||||||
M: Felipe Balbi <balbi@ti.com>
|
M: Felipe Balbi <balbi@kernel.org>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: linux-omap@vger.kernel.org
|
L: linux-omap@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
||||||
@ -8819,6 +8803,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|||||||
T: git git://github.com/hzhuang1/linux.git
|
T: git git://github.com/hzhuang1/linux.git
|
||||||
T: git git://github.com/rjarzmik/linux.git
|
T: git git://github.com/rjarzmik/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/boot/dts/pxa*
|
||||||
F: arch/arm/mach-pxa/
|
F: arch/arm/mach-pxa/
|
||||||
F: drivers/dma/pxa*
|
F: drivers/dma/pxa*
|
||||||
F: drivers/pcmcia/pxa2xx*
|
F: drivers/pcmcia/pxa2xx*
|
||||||
@ -8848,6 +8833,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|||||||
T: git git://github.com/hzhuang1/linux.git
|
T: git git://github.com/hzhuang1/linux.git
|
||||||
T: git git://git.linaro.org/people/ycmiao/pxa-linux.git
|
T: git git://git.linaro.org/people/ycmiao/pxa-linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/boot/dts/mmp*
|
||||||
F: arch/arm/mach-mmp/
|
F: arch/arm/mach-mmp/
|
||||||
|
|
||||||
PXA MMCI DRIVER
|
PXA MMCI DRIVER
|
||||||
@ -9794,10 +9780,11 @@ S: Supported
|
|||||||
F: drivers/scsi/be2iscsi/
|
F: drivers/scsi/be2iscsi/
|
||||||
|
|
||||||
Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER
|
Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER
|
||||||
M: Sathya Perla <sathya.perla@avagotech.com>
|
M: Sathya Perla <sathya.perla@broadcom.com>
|
||||||
M: Ajit Khaparde <ajit.khaparde@avagotech.com>
|
M: Ajit Khaparde <ajit.khaparde@broadcom.com>
|
||||||
M: Padmanabh Ratnakar <padmanabh.ratnakar@avagotech.com>
|
M: Padmanabh Ratnakar <padmanabh.ratnakar@broadcom.com>
|
||||||
M: Sriharsha Basavapatna <sriharsha.basavapatna@avagotech.com>
|
M: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
|
||||||
|
M: Somnath Kotur <somnath.kotur@broadcom.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
W: http://www.emulex.com
|
W: http://www.emulex.com
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -10159,6 +10146,7 @@ S: Supported
|
|||||||
F: drivers/media/pci/solo6x10/
|
F: drivers/media/pci/solo6x10/
|
||||||
|
|
||||||
SOFTWARE RAID (Multiple Disks) SUPPORT
|
SOFTWARE RAID (Multiple Disks) SUPPORT
|
||||||
|
M: Shaohua Li <shli@kernel.org>
|
||||||
L: linux-raid@vger.kernel.org
|
L: linux-raid@vger.kernel.org
|
||||||
T: git git://neil.brown.name/md
|
T: git git://neil.brown.name/md
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -10174,7 +10162,7 @@ F: drivers/net/ethernet/natsemi/sonic.*
|
|||||||
|
|
||||||
SONICS SILICON BACKPLANE DRIVER (SSB)
|
SONICS SILICON BACKPLANE DRIVER (SSB)
|
||||||
M: Michael Buesch <m@bues.ch>
|
M: Michael Buesch <m@bues.ch>
|
||||||
L: netdev@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/ssb/
|
F: drivers/ssb/
|
||||||
F: include/linux/ssb/
|
F: include/linux/ssb/
|
||||||
@ -10292,6 +10280,7 @@ L: spear-devel@list.st.com
|
|||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.st.com/spear
|
W: http://www.st.com/spear
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/boot/dts/spear*
|
||||||
F: arch/arm/mach-spear/
|
F: arch/arm/mach-spear/
|
||||||
|
|
||||||
SPEAR CLOCK FRAMEWORK SUPPORT
|
SPEAR CLOCK FRAMEWORK SUPPORT
|
||||||
@ -11319,7 +11308,7 @@ F: Documentation/usb/ehci.txt
|
|||||||
F: drivers/usb/host/ehci*
|
F: drivers/usb/host/ehci*
|
||||||
|
|
||||||
USB GADGET/PERIPHERAL SUBSYSTEM
|
USB GADGET/PERIPHERAL SUBSYSTEM
|
||||||
M: Felipe Balbi <balbi@ti.com>
|
M: Felipe Balbi <balbi@kernel.org>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
W: http://www.linux-usb.org/gadget
|
W: http://www.linux-usb.org/gadget
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
||||||
@ -11395,7 +11384,7 @@ S: Maintained
|
|||||||
F: drivers/net/usb/pegasus.*
|
F: drivers/net/usb/pegasus.*
|
||||||
|
|
||||||
USB PHY LAYER
|
USB PHY LAYER
|
||||||
M: Felipe Balbi <balbi@ti.com>
|
M: Felipe Balbi <balbi@kernel.org>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -12134,7 +12123,7 @@ F: drivers/net/hamradio/*scc.c
|
|||||||
F: drivers/net/hamradio/z8530.h
|
F: drivers/net/hamradio/z8530.h
|
||||||
|
|
||||||
ZBUD COMPRESSED PAGE ALLOCATOR
|
ZBUD COMPRESSED PAGE ALLOCATOR
|
||||||
M: Seth Jennings <sjennings@variantweb.net>
|
M: Seth Jennings <sjenning@redhat.com>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: mm/zbud.c
|
F: mm/zbud.c
|
||||||
@ -12189,7 +12178,7 @@ F: include/linux/zsmalloc.h
|
|||||||
F: Documentation/vm/zsmalloc.txt
|
F: Documentation/vm/zsmalloc.txt
|
||||||
|
|
||||||
ZSWAP COMPRESSED SWAP CACHING
|
ZSWAP COMPRESSED SWAP CACHING
|
||||||
M: Seth Jennings <sjennings@variantweb.net>
|
M: Seth Jennings <sjenning@redhat.com>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: mm/zswap.c
|
F: mm/zswap.c
|
||||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 5
|
PATCHLEVEL = 5
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION = -rc4
|
||||||
NAME = Blurry Fish Butt
|
NAME = Blurry Fish Butt
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -338,6 +338,19 @@ config ARC_PAGE_SIZE_4K
|
|||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "MMU Super Page Size"
|
||||||
|
depends on ISA_ARCV2 && TRANSPARENT_HUGEPAGE
|
||||||
|
default ARC_HUGEPAGE_2M
|
||||||
|
|
||||||
|
config ARC_HUGEPAGE_2M
|
||||||
|
bool "2MB"
|
||||||
|
|
||||||
|
config ARC_HUGEPAGE_16M
|
||||||
|
bool "16MB"
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|
||||||
if ISA_ARCOMPACT
|
if ISA_ARCOMPACT
|
||||||
|
|
||||||
config ARC_COMPACT_IRQ_LEVELS
|
config ARC_COMPACT_IRQ_LEVELS
|
||||||
@ -410,7 +423,7 @@ config ARC_HAS_RTC
|
|||||||
default n
|
default n
|
||||||
depends on !SMP
|
depends on !SMP
|
||||||
|
|
||||||
config ARC_HAS_GRTC
|
config ARC_HAS_GFRC
|
||||||
bool "SMP synchronized 64-bit cycle counter"
|
bool "SMP synchronized 64-bit cycle counter"
|
||||||
default y
|
default y
|
||||||
depends on SMP
|
depends on SMP
|
||||||
@ -566,6 +579,12 @@ endmenu
|
|||||||
endmenu # "ARC Architecture Configuration"
|
endmenu # "ARC Architecture Configuration"
|
||||||
|
|
||||||
source "mm/Kconfig"
|
source "mm/Kconfig"
|
||||||
|
|
||||||
|
config FORCE_MAX_ZONEORDER
|
||||||
|
int "Maximum zone order"
|
||||||
|
default "12" if ARC_HUGEPAGE_16M
|
||||||
|
default "11"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "net/Kconfig"
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
@ -16,7 +16,7 @@ CONFIG_ARC_PLAT_AXS10X=y
|
|||||||
CONFIG_AXS103=y
|
CONFIG_AXS103=y
|
||||||
CONFIG_ISA_ARCV2=y
|
CONFIG_ISA_ARCV2=y
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
# CONFIG_ARC_HAS_GRTC is not set
|
# CONFIG_ARC_HAS_GFRC is not set
|
||||||
CONFIG_ARC_UBOOT_SUPPORT=y
|
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
|
||||||
|
@ -349,14 +349,13 @@ struct cpuinfo_arc {
|
|||||||
struct cpuinfo_arc_bpu bpu;
|
struct cpuinfo_arc_bpu bpu;
|
||||||
struct bcr_identity core;
|
struct bcr_identity core;
|
||||||
struct bcr_isa isa;
|
struct bcr_isa isa;
|
||||||
struct bcr_timer timers;
|
|
||||||
unsigned int vec_base;
|
unsigned int vec_base;
|
||||||
struct cpuinfo_arc_ccm iccm, dccm;
|
struct cpuinfo_arc_ccm iccm, dccm;
|
||||||
struct {
|
struct {
|
||||||
unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, pad1:3,
|
unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, pad1:3,
|
||||||
fpu_sp:1, fpu_dp:1, pad2:6,
|
fpu_sp:1, fpu_dp:1, pad2:6,
|
||||||
debug:1, ap:1, smart:1, rtt:1, pad3:4,
|
debug:1, ap:1, smart:1, rtt:1, pad3:4,
|
||||||
pad4:8;
|
timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4;
|
||||||
} extn;
|
} extn;
|
||||||
struct bcr_mpy extn_mpy;
|
struct bcr_mpy extn_mpy;
|
||||||
struct bcr_extn_xymem extn_xymem;
|
struct bcr_extn_xymem extn_xymem;
|
||||||
|
@ -30,8 +30,11 @@
|
|||||||
/* Was Intr taken in User Mode */
|
/* Was Intr taken in User Mode */
|
||||||
#define AUX_IRQ_ACT_BIT_U 31
|
#define AUX_IRQ_ACT_BIT_U 31
|
||||||
|
|
||||||
/* 0 is highest level, but taken by FIRQs, if present in design */
|
/*
|
||||||
#define ARCV2_IRQ_DEF_PRIO 0
|
* User space should be interruptable even by lowest prio interrupt
|
||||||
|
* Safe even if actual interrupt priorities is fewer or even one
|
||||||
|
*/
|
||||||
|
#define ARCV2_IRQ_DEF_PRIO 15
|
||||||
|
|
||||||
/* seed value for status register */
|
/* seed value for status register */
|
||||||
#define ISA_INIT_STATUS_BITS (STATUS_IE_MASK | STATUS_AD_MASK | \
|
#define ISA_INIT_STATUS_BITS (STATUS_IE_MASK | STATUS_AD_MASK | \
|
||||||
|
@ -39,8 +39,8 @@ struct mcip_cmd {
|
|||||||
#define CMD_DEBUG_SET_MASK 0x34
|
#define CMD_DEBUG_SET_MASK 0x34
|
||||||
#define CMD_DEBUG_SET_SELECT 0x36
|
#define CMD_DEBUG_SET_SELECT 0x36
|
||||||
|
|
||||||
#define CMD_GRTC_READ_LO 0x42
|
#define CMD_GFRC_READ_LO 0x42
|
||||||
#define CMD_GRTC_READ_HI 0x43
|
#define CMD_GFRC_READ_HI 0x43
|
||||||
|
|
||||||
#define CMD_IDU_ENABLE 0x71
|
#define CMD_IDU_ENABLE 0x71
|
||||||
#define CMD_IDU_DISABLE 0x72
|
#define CMD_IDU_DISABLE 0x72
|
||||||
|
@ -179,37 +179,44 @@
|
|||||||
#define __S111 PAGE_U_X_W_R
|
#define __S111 PAGE_U_X_W_R
|
||||||
|
|
||||||
/****************************************************************
|
/****************************************************************
|
||||||
* Page Table Lookup split
|
* 2 tier (PGD:PTE) software page walker
|
||||||
*
|
*
|
||||||
* We implement 2 tier paging and since this is all software, we are free
|
* [31] 32 bit virtual address [0]
|
||||||
* to customize the span of a PGD / PTE entry to suit us
|
|
||||||
*
|
|
||||||
* 32 bit virtual address
|
|
||||||
* -------------------------------------------------------
|
* -------------------------------------------------------
|
||||||
* | BITS_FOR_PGD | BITS_FOR_PTE | BITS_IN_PAGE |
|
* | | <------------ PGDIR_SHIFT ----------> |
|
||||||
|
* | | |
|
||||||
|
* | BITS_FOR_PGD | BITS_FOR_PTE | <-- PAGE_SHIFT --> |
|
||||||
* -------------------------------------------------------
|
* -------------------------------------------------------
|
||||||
* | | |
|
* | | |
|
||||||
* | | --> off in page frame
|
* | | --> off in page frame
|
||||||
* | |
|
|
||||||
* | ---> index into Page Table
|
* | ---> index into Page Table
|
||||||
* |
|
|
||||||
* ----> index into Page Directory
|
* ----> index into Page Directory
|
||||||
|
*
|
||||||
|
* In a single page size configuration, only PAGE_SHIFT is fixed
|
||||||
|
* So both PGD and PTE sizing can be tweaked
|
||||||
|
* e.g. 8K page (PAGE_SHIFT 13) can have
|
||||||
|
* - PGDIR_SHIFT 21 -> 11:8:13 address split
|
||||||
|
* - PGDIR_SHIFT 24 -> 8:11:13 address split
|
||||||
|
*
|
||||||
|
* If Super Page is configured, PGDIR_SHIFT becomes fixed too,
|
||||||
|
* so the sizing flexibility is gone.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define BITS_IN_PAGE PAGE_SHIFT
|
#if defined(CONFIG_ARC_HUGEPAGE_16M)
|
||||||
|
#define PGDIR_SHIFT 24
|
||||||
/* Optimal Sizing of Pg Tbl - based on MMU page size */
|
#elif defined(CONFIG_ARC_HUGEPAGE_2M)
|
||||||
#if defined(CONFIG_ARC_PAGE_SIZE_8K)
|
#define PGDIR_SHIFT 21
|
||||||
#define BITS_FOR_PTE 8 /* 11:8:13 */
|
#else
|
||||||
#elif defined(CONFIG_ARC_PAGE_SIZE_16K)
|
/*
|
||||||
#define BITS_FOR_PTE 8 /* 10:8:14 */
|
* Only Normal page support so "hackable" (see comment above)
|
||||||
#elif defined(CONFIG_ARC_PAGE_SIZE_4K)
|
* Default value provides 11:8:13 (8K), 11:9:12 (4K)
|
||||||
#define BITS_FOR_PTE 9 /* 11:9:12 */
|
*/
|
||||||
|
#define PGDIR_SHIFT 21
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BITS_FOR_PGD (32 - BITS_FOR_PTE - BITS_IN_PAGE)
|
#define BITS_FOR_PTE (PGDIR_SHIFT - PAGE_SHIFT)
|
||||||
|
#define BITS_FOR_PGD (32 - PGDIR_SHIFT)
|
||||||
|
|
||||||
#define PGDIR_SHIFT (32 - BITS_FOR_PGD)
|
|
||||||
#define PGDIR_SIZE (1UL << PGDIR_SHIFT) /* vaddr span, not PDG sz */
|
#define PGDIR_SIZE (1UL << PGDIR_SHIFT) /* vaddr span, not PDG sz */
|
||||||
#define PGDIR_MASK (~(PGDIR_SIZE-1))
|
#define PGDIR_MASK (~(PGDIR_SIZE-1))
|
||||||
|
|
||||||
|
@ -211,7 +211,11 @@ debug_marker_syscall:
|
|||||||
; (since IRQ NOT allowed in DS in ARCv2, this can only happen if orig
|
; (since IRQ NOT allowed in DS in ARCv2, this can only happen if orig
|
||||||
; entry was via Exception in DS which got preempted in kernel).
|
; entry was via Exception in DS which got preempted in kernel).
|
||||||
;
|
;
|
||||||
; IRQ RTIE won't reliably restore DE bit and/or BTA, needs handling
|
; IRQ RTIE won't reliably restore DE bit and/or BTA, needs workaround
|
||||||
|
;
|
||||||
|
; Solution is return from Intr w/o any delay slot quirks into a kernel trampoline
|
||||||
|
; and from pure kernel mode return to delay slot which handles DS bit/BTA correctly
|
||||||
|
|
||||||
.Lintr_ret_to_delay_slot:
|
.Lintr_ret_to_delay_slot:
|
||||||
debug_marker_ds:
|
debug_marker_ds:
|
||||||
|
|
||||||
@ -222,18 +226,23 @@ debug_marker_ds:
|
|||||||
ld r2, [sp, PT_ret]
|
ld r2, [sp, PT_ret]
|
||||||
ld r3, [sp, PT_status32]
|
ld r3, [sp, PT_status32]
|
||||||
|
|
||||||
|
; STAT32 for Int return created from scratch
|
||||||
|
; (No delay dlot, disable Further intr in trampoline)
|
||||||
|
|
||||||
bic r0, r3, STATUS_U_MASK|STATUS_DE_MASK|STATUS_IE_MASK|STATUS_L_MASK
|
bic r0, r3, STATUS_U_MASK|STATUS_DE_MASK|STATUS_IE_MASK|STATUS_L_MASK
|
||||||
st r0, [sp, PT_status32]
|
st r0, [sp, PT_status32]
|
||||||
|
|
||||||
mov r1, .Lintr_ret_to_delay_slot_2
|
mov r1, .Lintr_ret_to_delay_slot_2
|
||||||
st r1, [sp, PT_ret]
|
st r1, [sp, PT_ret]
|
||||||
|
|
||||||
|
; Orig exception PC/STAT32 safekept @orig_r0 and @event stack slots
|
||||||
st r2, [sp, 0]
|
st r2, [sp, 0]
|
||||||
st r3, [sp, 4]
|
st r3, [sp, 4]
|
||||||
|
|
||||||
b .Lisr_ret_fast_path
|
b .Lisr_ret_fast_path
|
||||||
|
|
||||||
.Lintr_ret_to_delay_slot_2:
|
.Lintr_ret_to_delay_slot_2:
|
||||||
|
; Trampoline to restore orig exception PC/STAT32/BTA/AUX_USER_SP
|
||||||
sub sp, sp, SZ_PT_REGS
|
sub sp, sp, SZ_PT_REGS
|
||||||
st r9, [sp, -4]
|
st r9, [sp, -4]
|
||||||
|
|
||||||
@ -243,11 +252,19 @@ debug_marker_ds:
|
|||||||
ld r9, [sp, 4]
|
ld r9, [sp, 4]
|
||||||
sr r9, [erstatus]
|
sr r9, [erstatus]
|
||||||
|
|
||||||
|
; restore AUX_USER_SP if returning to U mode
|
||||||
|
bbit0 r9, STATUS_U_BIT, 1f
|
||||||
|
ld r9, [sp, PT_sp]
|
||||||
|
sr r9, [AUX_USER_SP]
|
||||||
|
|
||||||
|
1:
|
||||||
ld r9, [sp, 8]
|
ld r9, [sp, 8]
|
||||||
sr r9, [erbta]
|
sr r9, [erbta]
|
||||||
|
|
||||||
ld r9, [sp, -4]
|
ld r9, [sp, -4]
|
||||||
add sp, sp, SZ_PT_REGS
|
add sp, sp, SZ_PT_REGS
|
||||||
|
|
||||||
|
; return from pure kernel mode to delay slot
|
||||||
rtie
|
rtie
|
||||||
|
|
||||||
END(ret_from_exception)
|
END(ret_from_exception)
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
#include <linux/irqchip.h>
|
#include <linux/irqchip.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
|
static int irq_prio;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Early Hardware specific Interrupt setup
|
* Early Hardware specific Interrupt setup
|
||||||
* -Called very early (start_kernel -> setup_arch -> setup_processor)
|
* -Called very early (start_kernel -> setup_arch -> setup_processor)
|
||||||
@ -24,6 +26,14 @@ void arc_init_IRQ(void)
|
|||||||
{
|
{
|
||||||
unsigned int tmp;
|
unsigned int tmp;
|
||||||
|
|
||||||
|
struct irq_build {
|
||||||
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
|
unsigned int pad:3, firq:1, prio:4, exts:8, irqs:8, ver:8;
|
||||||
|
#else
|
||||||
|
unsigned int ver:8, irqs:8, exts:8, prio:4, firq:1, pad:3;
|
||||||
|
#endif
|
||||||
|
} irq_bcr;
|
||||||
|
|
||||||
struct aux_irq_ctrl {
|
struct aux_irq_ctrl {
|
||||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
unsigned int res3:18, save_idx_regs:1, res2:1,
|
unsigned int res3:18, save_idx_regs:1, res2:1,
|
||||||
@ -46,28 +56,25 @@ void arc_init_IRQ(void)
|
|||||||
|
|
||||||
WRITE_AUX(AUX_IRQ_CTRL, ictrl);
|
WRITE_AUX(AUX_IRQ_CTRL, ictrl);
|
||||||
|
|
||||||
/* setup status32, don't enable intr yet as kernel doesn't want */
|
|
||||||
tmp = read_aux_reg(0xa);
|
|
||||||
tmp |= ISA_INIT_STATUS_BITS;
|
|
||||||
tmp &= ~STATUS_IE_MASK;
|
|
||||||
asm volatile("flag %0 \n"::"r"(tmp));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ARCv2 core intc provides multiple interrupt priorities (upto 16).
|
* ARCv2 core intc provides multiple interrupt priorities (upto 16).
|
||||||
* Typical builds though have only two levels (0-high, 1-low)
|
* Typical builds though have only two levels (0-high, 1-low)
|
||||||
* Linux by default uses lower prio 1 for most irqs, reserving 0 for
|
* Linux by default uses lower prio 1 for most irqs, reserving 0 for
|
||||||
* NMI style interrupts in future (say perf)
|
* NMI style interrupts in future (say perf)
|
||||||
*
|
|
||||||
* Read the intc BCR to confirm that Linux default priority is avail
|
|
||||||
* in h/w
|
|
||||||
*
|
|
||||||
* Note:
|
|
||||||
* IRQ_BCR[27..24] contains N-1 (for N priority levels) and prio level
|
|
||||||
* is 0 based.
|
|
||||||
*/
|
*/
|
||||||
tmp = (read_aux_reg(ARC_REG_IRQ_BCR) >> 24 ) & 0xF;
|
|
||||||
if (ARCV2_IRQ_DEF_PRIO > tmp)
|
READ_BCR(ARC_REG_IRQ_BCR, irq_bcr);
|
||||||
panic("Linux default irq prio incorrect\n");
|
|
||||||
|
irq_prio = irq_bcr.prio; /* Encoded as N-1 for N levels */
|
||||||
|
pr_info("archs-intc\t: %d priority levels (default %d)%s\n",
|
||||||
|
irq_prio + 1, irq_prio,
|
||||||
|
irq_bcr.firq ? " FIRQ (not used)":"");
|
||||||
|
|
||||||
|
/* setup status32, don't enable intr yet as kernel doesn't want */
|
||||||
|
tmp = read_aux_reg(0xa);
|
||||||
|
tmp |= STATUS_AD_MASK | (irq_prio << 1);
|
||||||
|
tmp &= ~STATUS_IE_MASK;
|
||||||
|
asm volatile("flag %0 \n"::"r"(tmp));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void arcv2_irq_mask(struct irq_data *data)
|
static void arcv2_irq_mask(struct irq_data *data)
|
||||||
@ -86,7 +93,7 @@ void arcv2_irq_enable(struct irq_data *data)
|
|||||||
{
|
{
|
||||||
/* set default priority */
|
/* set default priority */
|
||||||
write_aux_reg(AUX_IRQ_SELECT, data->irq);
|
write_aux_reg(AUX_IRQ_SELECT, data->irq);
|
||||||
write_aux_reg(AUX_IRQ_PRIORITY, ARCV2_IRQ_DEF_PRIO);
|
write_aux_reg(AUX_IRQ_PRIORITY, irq_prio);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* hw auto enables (linux unmask) all by default
|
* hw auto enables (linux unmask) all by default
|
||||||
|
@ -96,13 +96,13 @@ static void mcip_probe_n_setup(void)
|
|||||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
unsigned int pad3:8,
|
unsigned int pad3:8,
|
||||||
idu:1, llm:1, num_cores:6,
|
idu:1, llm:1, num_cores:6,
|
||||||
iocoh:1, grtc:1, dbg:1, pad2:1,
|
iocoh:1, gfrc:1, dbg:1, pad2:1,
|
||||||
msg:1, sem:1, ipi:1, pad:1,
|
msg:1, sem:1, ipi:1, pad:1,
|
||||||
ver:8;
|
ver:8;
|
||||||
#else
|
#else
|
||||||
unsigned int ver:8,
|
unsigned int ver:8,
|
||||||
pad:1, ipi:1, sem:1, msg:1,
|
pad:1, ipi:1, sem:1, msg:1,
|
||||||
pad2:1, dbg:1, grtc:1, iocoh:1,
|
pad2:1, dbg:1, gfrc:1, iocoh:1,
|
||||||
num_cores:6, llm:1, idu:1,
|
num_cores:6, llm:1, idu:1,
|
||||||
pad3:8;
|
pad3:8;
|
||||||
#endif
|
#endif
|
||||||
@ -116,7 +116,7 @@ static void mcip_probe_n_setup(void)
|
|||||||
IS_AVAIL1(mp.ipi, "IPI "),
|
IS_AVAIL1(mp.ipi, "IPI "),
|
||||||
IS_AVAIL1(mp.idu, "IDU "),
|
IS_AVAIL1(mp.idu, "IDU "),
|
||||||
IS_AVAIL1(mp.dbg, "DEBUG "),
|
IS_AVAIL1(mp.dbg, "DEBUG "),
|
||||||
IS_AVAIL1(mp.grtc, "GRTC"));
|
IS_AVAIL1(mp.gfrc, "GFRC"));
|
||||||
|
|
||||||
idu_detected = mp.idu;
|
idu_detected = mp.idu;
|
||||||
|
|
||||||
@ -125,8 +125,8 @@ static void mcip_probe_n_setup(void)
|
|||||||
__mcip_cmd_data(CMD_DEBUG_SET_MASK, 0xf, 0xf);
|
__mcip_cmd_data(CMD_DEBUG_SET_MASK, 0xf, 0xf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_ARC_HAS_GRTC) && !mp.grtc)
|
if (IS_ENABLED(CONFIG_ARC_HAS_GFRC) && !mp.gfrc)
|
||||||
panic("kernel trying to use non-existent GRTC\n");
|
panic("kernel trying to use non-existent GFRC\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
struct plat_smp_ops plat_smp_ops = {
|
struct plat_smp_ops plat_smp_ops = {
|
||||||
|
@ -45,6 +45,7 @@ struct cpuinfo_arc cpuinfo_arc700[NR_CPUS];
|
|||||||
static void read_arc_build_cfg_regs(void)
|
static void read_arc_build_cfg_regs(void)
|
||||||
{
|
{
|
||||||
struct bcr_perip uncached_space;
|
struct bcr_perip uncached_space;
|
||||||
|
struct bcr_timer timer;
|
||||||
struct bcr_generic bcr;
|
struct bcr_generic bcr;
|
||||||
struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()];
|
struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()];
|
||||||
unsigned long perip_space;
|
unsigned long perip_space;
|
||||||
@ -53,7 +54,11 @@ static void read_arc_build_cfg_regs(void)
|
|||||||
READ_BCR(AUX_IDENTITY, cpu->core);
|
READ_BCR(AUX_IDENTITY, cpu->core);
|
||||||
READ_BCR(ARC_REG_ISA_CFG_BCR, cpu->isa);
|
READ_BCR(ARC_REG_ISA_CFG_BCR, cpu->isa);
|
||||||
|
|
||||||
READ_BCR(ARC_REG_TIMERS_BCR, cpu->timers);
|
READ_BCR(ARC_REG_TIMERS_BCR, timer);
|
||||||
|
cpu->extn.timer0 = timer.t0;
|
||||||
|
cpu->extn.timer1 = timer.t1;
|
||||||
|
cpu->extn.rtc = timer.rtc;
|
||||||
|
|
||||||
cpu->vec_base = read_aux_reg(AUX_INTR_VEC_BASE);
|
cpu->vec_base = read_aux_reg(AUX_INTR_VEC_BASE);
|
||||||
|
|
||||||
READ_BCR(ARC_REG_D_UNCACH_BCR, uncached_space);
|
READ_BCR(ARC_REG_D_UNCACH_BCR, uncached_space);
|
||||||
@ -208,9 +213,9 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
|
|||||||
(unsigned int)(arc_get_core_freq() / 10000) % 100);
|
(unsigned int)(arc_get_core_freq() / 10000) % 100);
|
||||||
|
|
||||||
n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s\nISA Extn\t: ",
|
n += scnprintf(buf + n, len - n, "Timers\t\t: %s%s%s%s\nISA Extn\t: ",
|
||||||
IS_AVAIL1(cpu->timers.t0, "Timer0 "),
|
IS_AVAIL1(cpu->extn.timer0, "Timer0 "),
|
||||||
IS_AVAIL1(cpu->timers.t1, "Timer1 "),
|
IS_AVAIL1(cpu->extn.timer1, "Timer1 "),
|
||||||
IS_AVAIL2(cpu->timers.rtc, "64-bit RTC ",
|
IS_AVAIL2(cpu->extn.rtc, "Local-64-bit-Ctr ",
|
||||||
CONFIG_ARC_HAS_RTC));
|
CONFIG_ARC_HAS_RTC));
|
||||||
|
|
||||||
n += i = scnprintf(buf + n, len - n, "%s%s%s%s%s",
|
n += i = scnprintf(buf + n, len - n, "%s%s%s%s%s",
|
||||||
@ -293,13 +298,13 @@ static void arc_chk_core_config(void)
|
|||||||
struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()];
|
struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()];
|
||||||
int fpu_enabled;
|
int fpu_enabled;
|
||||||
|
|
||||||
if (!cpu->timers.t0)
|
if (!cpu->extn.timer0)
|
||||||
panic("Timer0 is not present!\n");
|
panic("Timer0 is not present!\n");
|
||||||
|
|
||||||
if (!cpu->timers.t1)
|
if (!cpu->extn.timer1)
|
||||||
panic("Timer1 is not present!\n");
|
panic("Timer1 is not present!\n");
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_ARC_HAS_RTC) && !cpu->timers.rtc)
|
if (IS_ENABLED(CONFIG_ARC_HAS_RTC) && !cpu->extn.rtc)
|
||||||
panic("RTC is not present\n");
|
panic("RTC is not present\n");
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_HAS_DCCM
|
#ifdef CONFIG_ARC_HAS_DCCM
|
||||||
@ -334,6 +339,7 @@ static void arc_chk_core_config(void)
|
|||||||
panic("FPU non-existent, disable CONFIG_ARC_FPU_SAVE_RESTORE\n");
|
panic("FPU non-existent, disable CONFIG_ARC_FPU_SAVE_RESTORE\n");
|
||||||
|
|
||||||
if (is_isa_arcv2() && IS_ENABLED(CONFIG_SMP) && cpu->isa.atomic &&
|
if (is_isa_arcv2() && IS_ENABLED(CONFIG_SMP) && cpu->isa.atomic &&
|
||||||
|
IS_ENABLED(CONFIG_ARC_HAS_LLSC) &&
|
||||||
!IS_ENABLED(CONFIG_ARC_STAR_9000923308))
|
!IS_ENABLED(CONFIG_ARC_STAR_9000923308))
|
||||||
panic("llock/scond livelock workaround missing\n");
|
panic("llock/scond livelock workaround missing\n");
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
/********** Clock Source Device *********/
|
/********** Clock Source Device *********/
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_HAS_GRTC
|
#ifdef CONFIG_ARC_HAS_GFRC
|
||||||
|
|
||||||
static int arc_counter_setup(void)
|
static int arc_counter_setup(void)
|
||||||
{
|
{
|
||||||
@ -83,10 +83,10 @@ static cycle_t arc_counter_read(struct clocksource *cs)
|
|||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
|
|
||||||
__mcip_cmd(CMD_GRTC_READ_LO, 0);
|
__mcip_cmd(CMD_GFRC_READ_LO, 0);
|
||||||
stamp.l = read_aux_reg(ARC_REG_MCIP_READBACK);
|
stamp.l = read_aux_reg(ARC_REG_MCIP_READBACK);
|
||||||
|
|
||||||
__mcip_cmd(CMD_GRTC_READ_HI, 0);
|
__mcip_cmd(CMD_GFRC_READ_HI, 0);
|
||||||
stamp.h = read_aux_reg(ARC_REG_MCIP_READBACK);
|
stamp.h = read_aux_reg(ARC_REG_MCIP_READBACK);
|
||||||
|
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
@ -95,7 +95,7 @@ static cycle_t arc_counter_read(struct clocksource *cs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct clocksource arc_counter = {
|
static struct clocksource arc_counter = {
|
||||||
.name = "ARConnect GRTC",
|
.name = "ARConnect GFRC",
|
||||||
.rating = 400,
|
.rating = 400,
|
||||||
.read = arc_counter_read,
|
.read = arc_counter_read,
|
||||||
.mask = CLOCKSOURCE_MASK(64),
|
.mask = CLOCKSOURCE_MASK(64),
|
||||||
|
@ -106,6 +106,15 @@ ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
|||||||
KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
|
KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# -fstack-protector-strong triggers protection checks in this code,
|
||||||
|
# but it is being used too early to link to meaningful stack_chk logic.
|
||||||
|
nossp_flags := $(call cc-option, -fno-stack-protector)
|
||||||
|
CFLAGS_atags_to_fdt.o := $(nossp_flags)
|
||||||
|
CFLAGS_fdt.o := $(nossp_flags)
|
||||||
|
CFLAGS_fdt_ro.o := $(nossp_flags)
|
||||||
|
CFLAGS_fdt_rw.o := $(nossp_flags)
|
||||||
|
CFLAGS_fdt_wip.o := $(nossp_flags)
|
||||||
|
|
||||||
ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj)
|
ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj)
|
||||||
asflags-y := -DZIMAGE
|
asflags-y := -DZIMAGE
|
||||||
|
|
||||||
|
@ -439,6 +439,7 @@
|
|||||||
ti,mbox-num-users = <4>;
|
ti,mbox-num-users = <4>;
|
||||||
ti,mbox-num-fifos = <8>;
|
ti,mbox-num-fifos = <8>;
|
||||||
mbox_wkupm3: wkup_m3 {
|
mbox_wkupm3: wkup_m3 {
|
||||||
|
ti,mbox-send-noirq;
|
||||||
ti,mbox-tx = <0 0 0>;
|
ti,mbox-tx = <0 0 0>;
|
||||||
ti,mbox-rx = <0 0 3>;
|
ti,mbox-rx = <0 0 3>;
|
||||||
};
|
};
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
global_timer: timer@48240200 {
|
global_timer: timer@48240200 {
|
||||||
compatible = "arm,cortex-a9-global-timer";
|
compatible = "arm,cortex-a9-global-timer";
|
||||||
reg = <0x48240200 0x100>;
|
reg = <0x48240200 0x100>;
|
||||||
interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
clocks = <&mpu_periphclk>;
|
clocks = <&mpu_periphclk>;
|
||||||
};
|
};
|
||||||
@ -81,7 +81,7 @@
|
|||||||
local_timer: timer@48240600 {
|
local_timer: timer@48240600 {
|
||||||
compatible = "arm,cortex-a9-twd-timer";
|
compatible = "arm,cortex-a9-twd-timer";
|
||||||
reg = <0x48240600 0x100>;
|
reg = <0x48240600 0x100>;
|
||||||
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>;
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
clocks = <&mpu_periphclk>;
|
clocks = <&mpu_periphclk>;
|
||||||
};
|
};
|
||||||
@ -290,6 +290,7 @@
|
|||||||
ti,mbox-num-users = <4>;
|
ti,mbox-num-users = <4>;
|
||||||
ti,mbox-num-fifos = <8>;
|
ti,mbox-num-fifos = <8>;
|
||||||
mbox_wkupm3: wkup_m3 {
|
mbox_wkupm3: wkup_m3 {
|
||||||
|
ti,mbox-send-noirq;
|
||||||
ti,mbox-tx = <0 0 0>;
|
ti,mbox-tx = <0 0 0>;
|
||||||
ti,mbox-rx = <0 0 3>;
|
ti,mbox-rx = <0 0 3>;
|
||||||
};
|
};
|
||||||
|
@ -590,8 +590,6 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pixcir_ts_pins>;
|
pinctrl-0 = <&pixcir_ts_pins>;
|
||||||
reg = <0x5c>;
|
reg = <0x5c>;
|
||||||
interrupt-parent = <&gpio3>;
|
|
||||||
interrupts = <22 0>;
|
|
||||||
|
|
||||||
attb-gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
|
attb-gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
@ -599,7 +597,7 @@
|
|||||||
* 0x264 represents the offset of padconf register of
|
* 0x264 represents the offset of padconf register of
|
||||||
* gpio3_22 from am43xx_pinmux base.
|
* gpio3_22 from am43xx_pinmux base.
|
||||||
*/
|
*/
|
||||||
interrupts-extended = <&gpio3 22 IRQ_TYPE_NONE>,
|
interrupts-extended = <&gpio3 22 IRQ_TYPE_EDGE_FALLING>,
|
||||||
<&am43xx_pinmux 0x264>;
|
<&am43xx_pinmux 0x264>;
|
||||||
interrupt-names = "tsc", "wakeup";
|
interrupt-names = "tsc", "wakeup";
|
||||||
|
|
||||||
|
@ -491,7 +491,7 @@
|
|||||||
pinctrl-0 = <&pixcir_ts_pins>;
|
pinctrl-0 = <&pixcir_ts_pins>;
|
||||||
reg = <0x5c>;
|
reg = <0x5c>;
|
||||||
interrupt-parent = <&gpio1>;
|
interrupt-parent = <&gpio1>;
|
||||||
interrupts = <17 0>;
|
interrupts = <17 IRQ_TYPE_EDGE_FALLING>;
|
||||||
|
|
||||||
attb-gpio = <&gpio1 17 GPIO_ACTIVE_HIGH>;
|
attb-gpio = <&gpio1 17 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@
|
|||||||
DRA7XX_CORE_IOPAD(0x35b8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d20.rgmii1_rd3 */
|
DRA7XX_CORE_IOPAD(0x35b8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d20.rgmii1_rd3 */
|
||||||
DRA7XX_CORE_IOPAD(0x35bc, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d21.rgmii1_rd2 */
|
DRA7XX_CORE_IOPAD(0x35bc, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d21.rgmii1_rd2 */
|
||||||
DRA7XX_CORE_IOPAD(0x35c0, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d22.rgmii1_rd1 */
|
DRA7XX_CORE_IOPAD(0x35c0, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d22.rgmii1_rd1 */
|
||||||
DRA7XX_CORE_IOPAD(0x35c4, PIN_INPUT_PULLUP | MUX_MODE3) /* vin2a_d23.rgmii1_rd0 */
|
DRA7XX_CORE_IOPAD(0x35c4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* vin2a_d23.rgmii1_rd0 */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -492,14 +492,14 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&qspi1_pins>;
|
pinctrl-0 = <&qspi1_pins>;
|
||||||
|
|
||||||
spi-max-frequency = <20000000>;
|
spi-max-frequency = <48000000>;
|
||||||
|
|
||||||
spi_flash: spi_flash@0 {
|
spi_flash: spi_flash@0 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
compatible = "spansion,m25p80", "jedec,spi-nor";
|
compatible = "spansion,m25p80", "jedec,spi-nor";
|
||||||
reg = <0>; /* CS0 */
|
reg = <0>; /* CS0 */
|
||||||
spi-max-frequency = <20000000>;
|
spi-max-frequency = <48000000>;
|
||||||
|
|
||||||
partition@0 {
|
partition@0 {
|
||||||
label = "uboot";
|
label = "uboot";
|
||||||
@ -559,13 +559,13 @@
|
|||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy_id = <&davinci_mdio>, <0>;
|
phy_id = <&davinci_mdio>, <0>;
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii-txid";
|
||||||
dual_emac_res_vlan = <0>;
|
dual_emac_res_vlan = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
&cpsw_emac1 {
|
||||||
phy_id = <&davinci_mdio>, <1>;
|
phy_id = <&davinci_mdio>, <1>;
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii-txid";
|
||||||
dual_emac_res_vlan = <1>;
|
dual_emac_res_vlan = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -588,7 +588,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&usb2 {
|
&usb2 {
|
||||||
dr_mode = "peripheral";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
|
|
||||||
&mcasp3 {
|
&mcasp3 {
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
&dra7_pmx_core {
|
&dra7_pmx_core {
|
||||||
uart3_pins_default: uart3_pins_default {
|
uart3_pins_default: uart3_pins_default {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
DRA7XX_CORE_IOPAD(0x37f8, PIN_INPUT_SLEW | MUX_MODE2) /* uart2_ctsn.uart3_rxd */
|
DRA7XX_CORE_IOPAD(0x3648, PIN_INPUT_SLEW | MUX_MODE0) /* uart3_rxd */
|
||||||
DRA7XX_CORE_IOPAD(0x37fc, PIN_INPUT_SLEW | MUX_MODE1) /* uart2_rtsn.uart3_txd */
|
DRA7XX_CORE_IOPAD(0x364c, PIN_INPUT_SLEW | MUX_MODE0) /* uart3_txd */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -108,9 +108,9 @@
|
|||||||
pinctrl-0 = <&i2c5_pins_default>;
|
pinctrl-0 = <&i2c5_pins_default>;
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
eeprom_base: atmel@50 {
|
eeprom_base: atmel@54 {
|
||||||
compatible = "atmel,24c08";
|
compatible = "atmel,24c08";
|
||||||
reg = <0x50>;
|
reg = <0x54>;
|
||||||
pagesize = <16>;
|
pagesize = <16>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -152,6 +152,7 @@
|
|||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
|
||||||
partitions {
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
@ -114,9 +114,15 @@
|
|||||||
|
|
||||||
macb0: ethernet@f8008000 {
|
macb0: ethernet@f8008000 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_macb0_default>;
|
pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq>;
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
ethernet-phy@1 {
|
||||||
|
reg = <0x1>;
|
||||||
|
interrupt-parent = <&pioA>;
|
||||||
|
interrupts = <73 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pdmic@f8018000 {
|
pdmic@f8018000 {
|
||||||
@ -300,6 +306,10 @@
|
|||||||
bias-disable;
|
bias-disable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pinctrl_macb0_phy_irq: macb0_phy_irq {
|
||||||
|
pinmux = <PIN_PC9__GPIO>;
|
||||||
|
};
|
||||||
|
|
||||||
pinctrl_pdmic_default: pdmic_default {
|
pinctrl_pdmic_default: pdmic_default {
|
||||||
pinmux = <PIN_PB26__PDMIC_DAT>,
|
pinmux = <PIN_PB26__PDMIC_DAT>,
|
||||||
<PIN_PB27__PDMIC_CLK>;
|
<PIN_PB27__PDMIC_CLK>;
|
||||||
|
@ -86,10 +86,12 @@
|
|||||||
macb0: ethernet@f8020000 {
|
macb0: ethernet@f8020000 {
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
|
||||||
|
|
||||||
phy0: ethernet-phy@1 {
|
phy0: ethernet-phy@1 {
|
||||||
interrupt-parent = <&pioE>;
|
interrupt-parent = <&pioE>;
|
||||||
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
|
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -152,6 +154,10 @@
|
|||||||
atmel,pins =
|
atmel,pins =
|
||||||
<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
||||||
};
|
};
|
||||||
|
pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
|
||||||
|
atmel,pins =
|
||||||
|
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -160,8 +160,15 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
macb0: ethernet@f8020000 {
|
macb0: ethernet@f8020000 {
|
||||||
|
pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
ethernet-phy@1 {
|
||||||
|
reg = <0x1>;
|
||||||
|
interrupt-parent = <&pioE>;
|
||||||
|
interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc1: mmc@fc000000 {
|
mmc1: mmc@fc000000 {
|
||||||
@ -193,6 +200,10 @@
|
|||||||
|
|
||||||
pinctrl@fc06a000 {
|
pinctrl@fc06a000 {
|
||||||
board {
|
board {
|
||||||
|
pinctrl_macb0_phy_irq: macb0_phy_irq {
|
||||||
|
atmel,pins =
|
||||||
|
<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
|
||||||
|
};
|
||||||
pinctrl_mmc0_cd: mmc0_cd {
|
pinctrl_mmc0_cd: mmc0_cd {
|
||||||
atmel,pins =
|
atmel,pins =
|
||||||
<AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
<AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
|
||||||
|
@ -215,7 +215,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
panel: panel {
|
panel: panel {
|
||||||
compatible = "qd,qd43003c0-40", "simple-panel";
|
compatible = "qiaodian,qd43003c0-40", "simple-panel";
|
||||||
backlight = <&backlight>;
|
backlight = <&backlight>;
|
||||||
power-supply = <&panel_reg>;
|
power-supply = <&panel_reg>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Device Tree file for Buffalo Linkstation LS-WVL/VL
|
* Device Tree file for Buffalo Linkstation LS-WVL/VL
|
||||||
*
|
*
|
||||||
* Copyright (C) 2015, rogershimizu@gmail.com
|
* Copyright (C) 2015, 2016
|
||||||
|
* Roger Shimizu <rogershimizu@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -156,21 +157,21 @@
|
|||||||
button@1 {
|
button@1 {
|
||||||
label = "Function Button";
|
label = "Function Button";
|
||||||
linux,code = <KEY_OPTION>;
|
linux,code = <KEY_OPTION>;
|
||||||
gpios = <&gpio0 45 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
button@2 {
|
button@2 {
|
||||||
label = "Power-on Switch";
|
label = "Power-on Switch";
|
||||||
linux,code = <KEY_RESERVED>;
|
linux,code = <KEY_RESERVED>;
|
||||||
linux,input-type = <5>;
|
linux,input-type = <5>;
|
||||||
gpios = <&gpio0 46 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
button@3 {
|
button@3 {
|
||||||
label = "Power-auto Switch";
|
label = "Power-auto Switch";
|
||||||
linux,code = <KEY_ESC>;
|
linux,code = <KEY_ESC>;
|
||||||
linux,input-type = <5>;
|
linux,input-type = <5>;
|
||||||
gpios = <&gpio0 47 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -185,38 +186,38 @@
|
|||||||
|
|
||||||
led@1 {
|
led@1 {
|
||||||
label = "lswvl:red:alarm";
|
label = "lswvl:red:alarm";
|
||||||
gpios = <&gpio0 36 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@2 {
|
led@2 {
|
||||||
label = "lswvl:red:func";
|
label = "lswvl:red:func";
|
||||||
gpios = <&gpio0 37 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@3 {
|
led@3 {
|
||||||
label = "lswvl:amber:info";
|
label = "lswvl:amber:info";
|
||||||
gpios = <&gpio0 38 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@4 {
|
led@4 {
|
||||||
label = "lswvl:blue:func";
|
label = "lswvl:blue:func";
|
||||||
gpios = <&gpio0 39 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@5 {
|
led@5 {
|
||||||
label = "lswvl:blue:power";
|
label = "lswvl:blue:power";
|
||||||
gpios = <&gpio0 40 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
|
||||||
default-state = "keep";
|
default-state = "keep";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@6 {
|
led@6 {
|
||||||
label = "lswvl:red:hdderr0";
|
label = "lswvl:red:hdderr0";
|
||||||
gpios = <&gpio0 34 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@7 {
|
led@7 {
|
||||||
label = "lswvl:red:hdderr1";
|
label = "lswvl:red:hdderr1";
|
||||||
gpios = <&gpio0 35 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -233,7 +234,7 @@
|
|||||||
3250 1
|
3250 1
|
||||||
5000 0>;
|
5000 0>;
|
||||||
|
|
||||||
alarm-gpios = <&gpio0 43 GPIO_ACTIVE_HIGH>;
|
alarm-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
restart_poweroff {
|
restart_poweroff {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Device Tree file for Buffalo Linkstation LS-WXL/WSXL
|
* Device Tree file for Buffalo Linkstation LS-WXL/WSXL
|
||||||
*
|
*
|
||||||
* Copyright (C) 2015, rogershimizu@gmail.com
|
* Copyright (C) 2015, 2016
|
||||||
|
* Roger Shimizu <rogershimizu@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -156,21 +157,21 @@
|
|||||||
button@1 {
|
button@1 {
|
||||||
label = "Function Button";
|
label = "Function Button";
|
||||||
linux,code = <KEY_OPTION>;
|
linux,code = <KEY_OPTION>;
|
||||||
gpios = <&gpio1 41 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
button@2 {
|
button@2 {
|
||||||
label = "Power-on Switch";
|
label = "Power-on Switch";
|
||||||
linux,code = <KEY_RESERVED>;
|
linux,code = <KEY_RESERVED>;
|
||||||
linux,input-type = <5>;
|
linux,input-type = <5>;
|
||||||
gpios = <&gpio1 42 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
button@3 {
|
button@3 {
|
||||||
label = "Power-auto Switch";
|
label = "Power-auto Switch";
|
||||||
linux,code = <KEY_ESC>;
|
linux,code = <KEY_ESC>;
|
||||||
linux,input-type = <5>;
|
linux,input-type = <5>;
|
||||||
gpios = <&gpio1 43 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -185,12 +186,12 @@
|
|||||||
|
|
||||||
led@1 {
|
led@1 {
|
||||||
label = "lswxl:blue:func";
|
label = "lswxl:blue:func";
|
||||||
gpios = <&gpio1 36 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@2 {
|
led@2 {
|
||||||
label = "lswxl:red:alarm";
|
label = "lswxl:red:alarm";
|
||||||
gpios = <&gpio1 49 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@3 {
|
led@3 {
|
||||||
@ -200,23 +201,23 @@
|
|||||||
|
|
||||||
led@4 {
|
led@4 {
|
||||||
label = "lswxl:blue:power";
|
label = "lswxl:blue:power";
|
||||||
gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
|
||||||
|
default-state = "keep";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@5 {
|
led@5 {
|
||||||
label = "lswxl:red:func";
|
label = "lswxl:red:func";
|
||||||
gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||||
default-state = "keep";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
led@6 {
|
led@6 {
|
||||||
label = "lswxl:red:hdderr0";
|
label = "lswxl:red:hdderr0";
|
||||||
gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
led@7 {
|
led@7 {
|
||||||
label = "lswxl:red:hdderr1";
|
label = "lswxl:red:hdderr1";
|
||||||
gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -225,15 +226,15 @@
|
|||||||
pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
|
pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
|
||||||
gpios = <&gpio0 47 GPIO_ACTIVE_LOW
|
gpios = <&gpio1 16 GPIO_ACTIVE_LOW
|
||||||
&gpio0 48 GPIO_ACTIVE_LOW>;
|
&gpio1 15 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
gpio-fan,speed-map = <0 3
|
gpio-fan,speed-map = <0 3
|
||||||
1500 2
|
1500 2
|
||||||
3250 1
|
3250 1
|
||||||
5000 0>;
|
5000 0>;
|
||||||
|
|
||||||
alarm-gpios = <&gpio1 49 GPIO_ACTIVE_HIGH>;
|
alarm-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
restart_poweroff {
|
restart_poweroff {
|
||||||
@ -256,7 +257,7 @@
|
|||||||
enable-active-high;
|
enable-active-high;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
gpio = <&gpio0 37 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
hdd_power0: regulator@2 {
|
hdd_power0: regulator@2 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
|
@ -131,6 +131,7 @@
|
|||||||
chip-delay = <40>;
|
chip-delay = <40>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
partitions {
|
partitions {
|
||||||
|
compatible = "fixed-partitions";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
@ -112,14 +112,6 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
|
||||||
clock-frequency = <400000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c3 {
|
|
||||||
clock-frequency = <400000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Only found on the wireless SOM. For the SOM without wireless, the pins for
|
* Only found on the wireless SOM. For the SOM without wireless, the pins for
|
||||||
* MMC3 can be routed with jumpers to the second MMC slot on the devkit and
|
* MMC3 can be routed with jumpers to the second MMC slot on the devkit and
|
||||||
@ -143,6 +135,7 @@
|
|||||||
interrupt-parent = <&gpio5>;
|
interrupt-parent = <&gpio5>;
|
||||||
interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
|
interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; /* gpio 152 */
|
||||||
ref-clock-frequency = <26000000>;
|
ref-clock-frequency = <26000000>;
|
||||||
|
tcxo-clock-frequency = <26000000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -130,6 +130,16 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&gpio8 {
|
||||||
|
/* TI trees use GPIO instead of msecure, see also muxing */
|
||||||
|
p234 {
|
||||||
|
gpio-hog;
|
||||||
|
gpios = <10 GPIO_ACTIVE_HIGH>;
|
||||||
|
output-high;
|
||||||
|
line-name = "gpio8_234/msecure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&omap5_pmx_core {
|
&omap5_pmx_core {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <
|
pinctrl-0 = <
|
||||||
@ -213,6 +223,13 @@
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* TI trees use GPIO mode; msecure mode does not work reliably? */
|
||||||
|
palmas_msecure_pins: palmas_msecure_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP5_IOPAD(0x180, PIN_OUTPUT | MUX_MODE6) /* gpio8_234 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
usbhost_pins: pinmux_usbhost_pins {
|
usbhost_pins: pinmux_usbhost_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP5_IOPAD(0x0c4, PIN_INPUT | MUX_MODE0) /* usbb2_hsic_strobe */
|
OMAP5_IOPAD(0x0c4, PIN_INPUT | MUX_MODE0) /* usbb2_hsic_strobe */
|
||||||
@ -278,6 +295,12 @@
|
|||||||
&usbhost_wkup_pins
|
&usbhost_wkup_pins
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
|
||||||
|
pinctrl-single,pins = <
|
||||||
|
OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0) /* sys_nirq1 */
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
usbhost_wkup_pins: pinmux_usbhost_wkup_pins {
|
usbhost_wkup_pins: pinmux_usbhost_wkup_pins {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
OMAP5_IOPAD(0x05a, PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */
|
OMAP5_IOPAD(0x05a, PIN_OUTPUT | MUX_MODE0) /* fref_clk1_out, USB hub clk */
|
||||||
@ -345,6 +368,8 @@
|
|||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
ti,system-power-controller;
|
ti,system-power-controller;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&palmas_sys_nirq_pins &palmas_msecure_pins>;
|
||||||
|
|
||||||
extcon_usb3: palmas_usb {
|
extcon_usb3: palmas_usb {
|
||||||
compatible = "ti,palmas-usb-vid";
|
compatible = "ti,palmas-usb-vid";
|
||||||
@ -358,6 +383,14 @@
|
|||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
rtc {
|
||||||
|
compatible = "ti,palmas-rtc";
|
||||||
|
interrupt-parent = <&palmas>;
|
||||||
|
interrupts = <8 IRQ_TYPE_NONE>;
|
||||||
|
ti,backup-battery-chargeable;
|
||||||
|
ti,backup-battery-charge-high-current;
|
||||||
|
};
|
||||||
|
|
||||||
palmas_pmic {
|
palmas_pmic {
|
||||||
compatible = "ti,palmas-pmic";
|
compatible = "ti,palmas-pmic";
|
||||||
interrupt-parent = <&palmas>;
|
interrupt-parent = <&palmas>;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Device Tree file for Buffalo Linkstation LS-WTGL
|
* Device Tree file for Buffalo Linkstation LS-WTGL
|
||||||
*
|
*
|
||||||
* Copyright (C) 2015, Roger Shimizu <rogershimizu@gmail.com>
|
* Copyright (C) 2015, 2016
|
||||||
|
* Roger Shimizu <rogershimizu@gmail.com>
|
||||||
*
|
*
|
||||||
* This file is dual-licensed: you can use it either under the terms
|
* This file is dual-licensed: you can use it either under the terms
|
||||||
* of the GPL or the X11 license, at your option. Note that this dual
|
* of the GPL or the X11 license, at your option. Note that this dual
|
||||||
@ -69,8 +70,6 @@
|
|||||||
|
|
||||||
internal-regs {
|
internal-regs {
|
||||||
pinctrl: pinctrl@10000 {
|
pinctrl: pinctrl@10000 {
|
||||||
pinctrl-0 = <&pmx_usb_power &pmx_power_hdd
|
|
||||||
&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
|
||||||
pmx_led_power: pmx-leds {
|
pmx_led_power: pmx-leds {
|
||||||
@ -162,6 +161,7 @@
|
|||||||
led@1 {
|
led@1 {
|
||||||
label = "lswtgl:blue:power";
|
label = "lswtgl:blue:power";
|
||||||
gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
|
gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
|
||||||
|
default-state = "keep";
|
||||||
};
|
};
|
||||||
|
|
||||||
led@2 {
|
led@2 {
|
||||||
@ -188,7 +188,7 @@
|
|||||||
3250 1
|
3250 1
|
||||||
5000 0>;
|
5000 0>;
|
||||||
|
|
||||||
alarm-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
|
alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
restart_poweroff {
|
restart_poweroff {
|
||||||
|
@ -1342,7 +1342,7 @@
|
|||||||
dbgu: serial@fc069000 {
|
dbgu: serial@fc069000 {
|
||||||
compatible = "atmel,at91sam9260-dbgu", "atmel,at91sam9260-usart";
|
compatible = "atmel,at91sam9260-dbgu", "atmel,at91sam9260-usart";
|
||||||
reg = <0xfc069000 0x200>;
|
reg = <0xfc069000 0x200>;
|
||||||
interrupts = <2 IRQ_TYPE_LEVEL_HIGH 7>;
|
interrupts = <45 IRQ_TYPE_LEVEL_HIGH 7>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_dbgu>;
|
pinctrl-0 = <&pinctrl_dbgu>;
|
||||||
clocks = <&dbgu_clk>;
|
clocks = <&dbgu_clk>;
|
||||||
|
@ -127,22 +127,14 @@
|
|||||||
};
|
};
|
||||||
mmcsd_default_mode: mmcsd_default {
|
mmcsd_default_mode: mmcsd_default {
|
||||||
mmcsd_default_cfg1 {
|
mmcsd_default_cfg1 {
|
||||||
/* MCCLK */
|
/*
|
||||||
pins = "GPIO8_B10";
|
* MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
|
||||||
ste,output = <0>;
|
* MCCMD, MCDAT3-0, MCMSFBCLK
|
||||||
};
|
*/
|
||||||
mmcsd_default_cfg2 {
|
pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11",
|
||||||
/* MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2 */
|
"GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12",
|
||||||
pins = "GPIO10_C11", "GPIO15_A12",
|
"GPIO16_C13", "GPIO23_D15", "GPIO24_C15";
|
||||||
"GPIO16_C13", "GPIO23_D15";
|
ste,output = <2>;
|
||||||
ste,output = <1>;
|
|
||||||
};
|
|
||||||
mmcsd_default_cfg3 {
|
|
||||||
/* MCCMD, MCDAT3-0, MCMSFBCLK */
|
|
||||||
pins = "GPIO9_A10", "GPIO11_B11",
|
|
||||||
"GPIO12_A11", "GPIO13_C12",
|
|
||||||
"GPIO14_B12", "GPIO24_C15";
|
|
||||||
ste,input = <1>;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -802,10 +794,21 @@
|
|||||||
clock-names = "mclk", "apb_pclk";
|
clock-names = "mclk", "apb_pclk";
|
||||||
interrupt-parent = <&vica>;
|
interrupt-parent = <&vica>;
|
||||||
interrupts = <22>;
|
interrupts = <22>;
|
||||||
max-frequency = <48000000>;
|
max-frequency = <400000>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
cap-sd-highspeed;
|
cap-sd-highspeed;
|
||||||
|
full-pwr-cycle;
|
||||||
|
/*
|
||||||
|
* The STw4811 circuit used with the Nomadik strictly
|
||||||
|
* requires that all of these signal direction pins be
|
||||||
|
* routed and used for its 4-bit levelshifter.
|
||||||
|
*/
|
||||||
|
st,sig-dir-dat0;
|
||||||
|
st,sig-dir-dat2;
|
||||||
|
st,sig-dir-dat31;
|
||||||
|
st,sig-dir-cmd;
|
||||||
|
st,sig-pin-fbclk;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
|
pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
|
||||||
vmmc-supply = <&vmmc_regulator>;
|
vmmc-supply = <&vmmc_regulator>;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <asm/div64.h>
|
||||||
#include <asm/hardware/icst.h>
|
#include <asm/hardware/icst.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -29,7 +29,11 @@ EXPORT_SYMBOL(icst525_s2div);
|
|||||||
|
|
||||||
unsigned long icst_hz(const struct icst_params *p, struct icst_vco vco)
|
unsigned long icst_hz(const struct icst_params *p, struct icst_vco vco)
|
||||||
{
|
{
|
||||||
return p->ref * 2 * (vco.v + 8) / ((vco.r + 2) * p->s2div[vco.s]);
|
u64 dividend = p->ref * 2 * (u64)(vco.v + 8);
|
||||||
|
u32 divisor = (vco.r + 2) * p->s2div[vco.s];
|
||||||
|
|
||||||
|
do_div(dividend, divisor);
|
||||||
|
return (unsigned long)dividend;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(icst_hz);
|
EXPORT_SYMBOL(icst_hz);
|
||||||
@ -58,6 +62,7 @@ icst_hz_to_vco(const struct icst_params *p, unsigned long freq)
|
|||||||
|
|
||||||
if (f > p->vco_min && f <= p->vco_max)
|
if (f > p->vco_min && f <= p->vco_max)
|
||||||
break;
|
break;
|
||||||
|
i++;
|
||||||
} while (i < 8);
|
} while (i < 8);
|
||||||
|
|
||||||
if (i >= 8)
|
if (i >= 8)
|
||||||
|
@ -426,6 +426,7 @@ CONFIG_SUNXI_WATCHDOG=y
|
|||||||
CONFIG_IMX2_WDT=y
|
CONFIG_IMX2_WDT=y
|
||||||
CONFIG_TEGRA_WATCHDOG=m
|
CONFIG_TEGRA_WATCHDOG=m
|
||||||
CONFIG_MESON_WATCHDOG=y
|
CONFIG_MESON_WATCHDOG=y
|
||||||
|
CONFIG_DW_WATCHDOG=y
|
||||||
CONFIG_DIGICOLOR_WATCHDOG=y
|
CONFIG_DIGICOLOR_WATCHDOG=y
|
||||||
CONFIG_MFD_AS3711=y
|
CONFIG_MFD_AS3711=y
|
||||||
CONFIG_MFD_AS3722=y
|
CONFIG_MFD_AS3722=y
|
||||||
|
@ -50,6 +50,7 @@ CONFIG_SOC_AM33XX=y
|
|||||||
CONFIG_SOC_AM43XX=y
|
CONFIG_SOC_AM43XX=y
|
||||||
CONFIG_SOC_DRA7XX=y
|
CONFIG_SOC_DRA7XX=y
|
||||||
CONFIG_ARM_THUMBEE=y
|
CONFIG_ARM_THUMBEE=y
|
||||||
|
CONFIG_ARM_KERNMEM_PERMS=y
|
||||||
CONFIG_ARM_ERRATA_411920=y
|
CONFIG_ARM_ERRATA_411920=y
|
||||||
CONFIG_ARM_ERRATA_430973=y
|
CONFIG_ARM_ERRATA_430973=y
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
@ -177,6 +178,7 @@ CONFIG_TI_CPTS=y
|
|||||||
CONFIG_AT803X_PHY=y
|
CONFIG_AT803X_PHY=y
|
||||||
CONFIG_SMSC_PHY=y
|
CONFIG_SMSC_PHY=y
|
||||||
CONFIG_USB_USBNET=m
|
CONFIG_USB_USBNET=m
|
||||||
|
CONFIG_USB_NET_SMSC75XX=m
|
||||||
CONFIG_USB_NET_SMSC95XX=m
|
CONFIG_USB_NET_SMSC95XX=m
|
||||||
CONFIG_USB_ALI_M5632=y
|
CONFIG_USB_ALI_M5632=y
|
||||||
CONFIG_USB_AN2720=y
|
CONFIG_USB_AN2720=y
|
||||||
@ -290,24 +292,23 @@ CONFIG_FB=y
|
|||||||
CONFIG_FIRMWARE_EDID=y
|
CONFIG_FIRMWARE_EDID=y
|
||||||
CONFIG_FB_MODE_HELPERS=y
|
CONFIG_FB_MODE_HELPERS=y
|
||||||
CONFIG_FB_TILEBLITTING=y
|
CONFIG_FB_TILEBLITTING=y
|
||||||
CONFIG_OMAP2_DSS=m
|
CONFIG_FB_OMAP5_DSS_HDMI=y
|
||||||
CONFIG_OMAP5_DSS_HDMI=y
|
CONFIG_FB_OMAP2_DSS_SDI=y
|
||||||
CONFIG_OMAP2_DSS_SDI=y
|
CONFIG_FB_OMAP2_DSS_DSI=y
|
||||||
CONFIG_OMAP2_DSS_DSI=y
|
|
||||||
CONFIG_FB_OMAP2=m
|
CONFIG_FB_OMAP2=m
|
||||||
CONFIG_DISPLAY_ENCODER_TFP410=m
|
CONFIG_FB_OMAP2_ENCODER_TFP410=m
|
||||||
CONFIG_DISPLAY_ENCODER_TPD12S015=m
|
CONFIG_FB_OMAP2_ENCODER_TPD12S015=m
|
||||||
CONFIG_DISPLAY_CONNECTOR_DVI=m
|
CONFIG_FB_OMAP2_CONNECTOR_DVI=m
|
||||||
CONFIG_DISPLAY_CONNECTOR_HDMI=m
|
CONFIG_FB_OMAP2_CONNECTOR_HDMI=m
|
||||||
CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m
|
CONFIG_FB_OMAP2_CONNECTOR_ANALOG_TV=m
|
||||||
CONFIG_DISPLAY_PANEL_DPI=m
|
CONFIG_FB_OMAP2_PANEL_DPI=m
|
||||||
CONFIG_DISPLAY_PANEL_DSI_CM=m
|
CONFIG_FB_OMAP2_PANEL_DSI_CM=m
|
||||||
CONFIG_DISPLAY_PANEL_SONY_ACX565AKM=m
|
CONFIG_FB_OMAP2_PANEL_SONY_ACX565AKM=m
|
||||||
CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02=m
|
CONFIG_FB_OMAP2_PANEL_LGPHILIPS_LB035Q02=m
|
||||||
CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m
|
CONFIG_FB_OMAP2_PANEL_SHARP_LS037V7DW01=m
|
||||||
CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m
|
CONFIG_FB_OMAP2_PANEL_TPO_TD028TTEC1=m
|
||||||
CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1=m
|
CONFIG_FB_OMAP2_PANEL_TPO_TD043MTEA1=m
|
||||||
CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m
|
CONFIG_FB_OMAP2_PANEL_NEC_NL8048HL11=m
|
||||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
CONFIG_LCD_CLASS_DEVICE=y
|
CONFIG_LCD_CLASS_DEVICE=y
|
||||||
CONFIG_LCD_PLATFORM=y
|
CONFIG_LCD_PLATFORM=y
|
||||||
@ -354,6 +355,11 @@ CONFIG_USB_MUSB_DSPS=m
|
|||||||
CONFIG_USB_INVENTRA_DMA=y
|
CONFIG_USB_INVENTRA_DMA=y
|
||||||
CONFIG_USB_TI_CPPI41_DMA=y
|
CONFIG_USB_TI_CPPI41_DMA=y
|
||||||
CONFIG_USB_DWC3=m
|
CONFIG_USB_DWC3=m
|
||||||
|
CONFIG_USB_SERIAL=m
|
||||||
|
CONFIG_USB_SERIAL_GENERIC=y
|
||||||
|
CONFIG_USB_SERIAL_SIMPLE=m
|
||||||
|
CONFIG_USB_SERIAL_FTDI_SIO=m
|
||||||
|
CONFIG_USB_SERIAL_PL2303=m
|
||||||
CONFIG_USB_TEST=m
|
CONFIG_USB_TEST=m
|
||||||
CONFIG_AM335X_PHY_USB=y
|
CONFIG_AM335X_PHY_USB=y
|
||||||
CONFIG_USB_GADGET=m
|
CONFIG_USB_GADGET=m
|
||||||
@ -387,6 +393,7 @@ CONFIG_NEW_LEDS=y
|
|||||||
CONFIG_LEDS_CLASS=m
|
CONFIG_LEDS_CLASS=m
|
||||||
CONFIG_LEDS_GPIO=m
|
CONFIG_LEDS_GPIO=m
|
||||||
CONFIG_LEDS_PWM=m
|
CONFIG_LEDS_PWM=m
|
||||||
|
CONFIG_LEDS_PCA963X=m
|
||||||
CONFIG_LEDS_TRIGGERS=y
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||||
CONFIG_LEDS_TRIGGER_ONESHOT=m
|
CONFIG_LEDS_TRIGGER_ONESHOT=m
|
||||||
@ -449,6 +456,8 @@ CONFIG_NLS_CODEPAGE_437=y
|
|||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
|
CONFIG_DEBUG_INFO_SPLIT=y
|
||||||
|
CONFIG_DEBUG_INFO_DWARF4=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_SCHEDSTATS=y
|
CONFIG_SCHEDSTATS=y
|
||||||
CONFIG_TIMER_STATS=y
|
CONFIG_TIMER_STATS=y
|
||||||
|
@ -417,6 +417,7 @@
|
|||||||
#define __NR_userfaultfd (__NR_SYSCALL_BASE+388)
|
#define __NR_userfaultfd (__NR_SYSCALL_BASE+388)
|
||||||
#define __NR_membarrier (__NR_SYSCALL_BASE+389)
|
#define __NR_membarrier (__NR_SYSCALL_BASE+389)
|
||||||
#define __NR_mlock2 (__NR_SYSCALL_BASE+390)
|
#define __NR_mlock2 (__NR_SYSCALL_BASE+390)
|
||||||
|
#define __NR_copy_file_range (__NR_SYSCALL_BASE+391)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following SWIs are ARM private.
|
* The following SWIs are ARM private.
|
||||||
|
@ -400,6 +400,7 @@
|
|||||||
CALL(sys_userfaultfd)
|
CALL(sys_userfaultfd)
|
||||||
CALL(sys_membarrier)
|
CALL(sys_membarrier)
|
||||||
CALL(sys_mlock2)
|
CALL(sys_mlock2)
|
||||||
|
CALL(sys_copy_file_range)
|
||||||
#ifndef syscalls_counted
|
#ifndef syscalls_counted
|
||||||
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
||||||
#define syscalls_counted
|
#define syscalls_counted
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/pinctrl/machine.h>
|
#include <linux/pinctrl/machine.h>
|
||||||
#include <linux/platform_data/mailbox-omap.h>
|
|
||||||
|
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
@ -66,32 +65,6 @@ static int __init omap3_l3_init(void)
|
|||||||
}
|
}
|
||||||
omap_postcore_initcall(omap3_l3_init);
|
omap_postcore_initcall(omap3_l3_init);
|
||||||
|
|
||||||
#if defined(CONFIG_OMAP2PLUS_MBOX) || defined(CONFIG_OMAP2PLUS_MBOX_MODULE)
|
|
||||||
static inline void __init omap_init_mbox(void)
|
|
||||||
{
|
|
||||||
struct omap_hwmod *oh;
|
|
||||||
struct platform_device *pdev;
|
|
||||||
struct omap_mbox_pdata *pdata;
|
|
||||||
|
|
||||||
oh = omap_hwmod_lookup("mailbox");
|
|
||||||
if (!oh) {
|
|
||||||
pr_err("%s: unable to find hwmod\n", __func__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!oh->dev_attr) {
|
|
||||||
pr_err("%s: hwmod doesn't have valid attrs\n", __func__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pdata = (struct omap_mbox_pdata *)oh->dev_attr;
|
|
||||||
pdev = omap_device_build("omap-mailbox", -1, oh, pdata, sizeof(*pdata));
|
|
||||||
WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n",
|
|
||||||
__func__, PTR_ERR(pdev));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline void omap_init_mbox(void) { }
|
|
||||||
#endif /* CONFIG_OMAP2PLUS_MBOX */
|
|
||||||
|
|
||||||
static inline void omap_init_sti(void) {}
|
static inline void omap_init_sti(void) {}
|
||||||
|
|
||||||
#if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
|
#if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
|
||||||
@ -229,7 +202,6 @@ static int __init omap2_init_devices(void)
|
|||||||
* please keep these calls, and their implementations above,
|
* please keep these calls, and their implementations above,
|
||||||
* in alphabetical order so they're easier to sort through.
|
* in alphabetical order so they're easier to sort through.
|
||||||
*/
|
*/
|
||||||
omap_init_mbox();
|
|
||||||
omap_init_mcspi();
|
omap_init_mcspi();
|
||||||
omap_init_sham();
|
omap_init_sham();
|
||||||
omap_init_aes();
|
omap_init_aes();
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
#include <linux/platform_data/pinctrl-single.h>
|
#include <linux/platform_data/pinctrl-single.h>
|
||||||
#include <linux/platform_data/iommu-omap.h>
|
#include <linux/platform_data/iommu-omap.h>
|
||||||
#include <linux/platform_data/wkup_m3.h>
|
#include <linux/platform_data/wkup_m3.h>
|
||||||
|
#include <linux/platform_data/pwm_omap_dmtimer.h>
|
||||||
|
#include <plat/dmtimer.h>
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "common-board-devices.h"
|
#include "common-board-devices.h"
|
||||||
@ -449,6 +451,24 @@ void omap_auxdata_legacy_init(struct device *dev)
|
|||||||
dev->platform_data = &twl_gpio_auxdata;
|
dev->platform_data = &twl_gpio_auxdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Dual mode timer PWM callbacks platdata */
|
||||||
|
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
|
||||||
|
struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
|
||||||
|
.request_by_node = omap_dm_timer_request_by_node,
|
||||||
|
.free = omap_dm_timer_free,
|
||||||
|
.enable = omap_dm_timer_enable,
|
||||||
|
.disable = omap_dm_timer_disable,
|
||||||
|
.get_fclk = omap_dm_timer_get_fclk,
|
||||||
|
.start = omap_dm_timer_start,
|
||||||
|
.stop = omap_dm_timer_stop,
|
||||||
|
.set_load = omap_dm_timer_set_load,
|
||||||
|
.set_match = omap_dm_timer_set_match,
|
||||||
|
.set_pwm = omap_dm_timer_set_pwm,
|
||||||
|
.set_prescaler = omap_dm_timer_set_prescaler,
|
||||||
|
.write_counter = omap_dm_timer_write_counter,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Few boards still need auxdata populated before we populate
|
* Few boards still need auxdata populated before we populate
|
||||||
* the dev entries in of_platform_populate().
|
* the dev entries in of_platform_populate().
|
||||||
@ -502,6 +522,9 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
|
|||||||
OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
|
OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
|
||||||
&wkup_m3_data),
|
&wkup_m3_data),
|
||||||
#endif
|
#endif
|
||||||
|
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
|
||||||
|
OF_DEV_AUXDATA("ti,omap-dmtimer-pwm", 0, NULL, &pwm_dmtimer_pdata),
|
||||||
|
#endif
|
||||||
#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
|
#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
|
||||||
OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu",
|
OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu",
|
||||||
&omap4_iommu_pdata),
|
&omap4_iommu_pdata),
|
||||||
|
@ -86,13 +86,18 @@ ENTRY(enable_omap3630_toggle_l2_on_restore)
|
|||||||
stmfd sp!, {lr} @ save registers on stack
|
stmfd sp!, {lr} @ save registers on stack
|
||||||
/* Setup so that we will disable and enable l2 */
|
/* Setup so that we will disable and enable l2 */
|
||||||
mov r1, #0x1
|
mov r1, #0x1
|
||||||
adrl r2, l2dis_3630 @ may be too distant for plain adr
|
adrl r3, l2dis_3630_offset @ may be too distant for plain adr
|
||||||
str r1, [r2]
|
ldr r2, [r3] @ value for offset
|
||||||
|
str r1, [r2, r3] @ write to l2dis_3630
|
||||||
ldmfd sp!, {pc} @ restore regs and return
|
ldmfd sp!, {pc} @ restore regs and return
|
||||||
ENDPROC(enable_omap3630_toggle_l2_on_restore)
|
ENDPROC(enable_omap3630_toggle_l2_on_restore)
|
||||||
|
|
||||||
.text
|
/*
|
||||||
/* Function to call rom code to save secure ram context */
|
* Function to call rom code to save secure ram context. This gets
|
||||||
|
* relocated to SRAM, so it can be all in .data section. Otherwise
|
||||||
|
* we need to initialize api_params separately.
|
||||||
|
*/
|
||||||
|
.data
|
||||||
.align 3
|
.align 3
|
||||||
ENTRY(save_secure_ram_context)
|
ENTRY(save_secure_ram_context)
|
||||||
stmfd sp!, {r4 - r11, lr} @ save registers on stack
|
stmfd sp!, {r4 - r11, lr} @ save registers on stack
|
||||||
@ -126,6 +131,8 @@ ENDPROC(save_secure_ram_context)
|
|||||||
ENTRY(save_secure_ram_context_sz)
|
ENTRY(save_secure_ram_context_sz)
|
||||||
.word . - save_secure_ram_context
|
.word . - save_secure_ram_context
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ======================
|
* ======================
|
||||||
* == Idle entry point ==
|
* == Idle entry point ==
|
||||||
@ -289,12 +296,6 @@ wait_sdrc_ready:
|
|||||||
bic r5, r5, #0x40
|
bic r5, r5, #0x40
|
||||||
str r5, [r4]
|
str r5, [r4]
|
||||||
|
|
||||||
/*
|
|
||||||
* PC-relative stores lead to undefined behaviour in Thumb-2: use a r7 as a
|
|
||||||
* base instead.
|
|
||||||
* Be careful not to clobber r7 when maintaing this code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
is_dll_in_lock_mode:
|
is_dll_in_lock_mode:
|
||||||
/* Is dll in lock mode? */
|
/* Is dll in lock mode? */
|
||||||
ldr r4, sdrc_dlla_ctrl
|
ldr r4, sdrc_dlla_ctrl
|
||||||
@ -302,11 +303,7 @@ is_dll_in_lock_mode:
|
|||||||
tst r5, #0x4
|
tst r5, #0x4
|
||||||
bne exit_nonoff_modes @ Return if locked
|
bne exit_nonoff_modes @ Return if locked
|
||||||
/* wait till dll locks */
|
/* wait till dll locks */
|
||||||
adr r7, kick_counter
|
|
||||||
wait_dll_lock_timed:
|
wait_dll_lock_timed:
|
||||||
ldr r4, wait_dll_lock_counter
|
|
||||||
add r4, r4, #1
|
|
||||||
str r4, [r7, #wait_dll_lock_counter - kick_counter]
|
|
||||||
ldr r4, sdrc_dlla_status
|
ldr r4, sdrc_dlla_status
|
||||||
/* Wait 20uS for lock */
|
/* Wait 20uS for lock */
|
||||||
mov r6, #8
|
mov r6, #8
|
||||||
@ -330,9 +327,6 @@ kick_dll:
|
|||||||
orr r6, r6, #(1<<3) @ enable dll
|
orr r6, r6, #(1<<3) @ enable dll
|
||||||
str r6, [r4]
|
str r6, [r4]
|
||||||
dsb
|
dsb
|
||||||
ldr r4, kick_counter
|
|
||||||
add r4, r4, #1
|
|
||||||
str r4, [r7] @ kick_counter
|
|
||||||
b wait_dll_lock_timed
|
b wait_dll_lock_timed
|
||||||
|
|
||||||
exit_nonoff_modes:
|
exit_nonoff_modes:
|
||||||
@ -360,15 +354,6 @@ sdrc_dlla_status:
|
|||||||
.word SDRC_DLLA_STATUS_V
|
.word SDRC_DLLA_STATUS_V
|
||||||
sdrc_dlla_ctrl:
|
sdrc_dlla_ctrl:
|
||||||
.word SDRC_DLLA_CTRL_V
|
.word SDRC_DLLA_CTRL_V
|
||||||
/*
|
|
||||||
* When exporting to userspace while the counters are in SRAM,
|
|
||||||
* these 2 words need to be at the end to facilitate retrival!
|
|
||||||
*/
|
|
||||||
kick_counter:
|
|
||||||
.word 0
|
|
||||||
wait_dll_lock_counter:
|
|
||||||
.word 0
|
|
||||||
|
|
||||||
ENTRY(omap3_do_wfi_sz)
|
ENTRY(omap3_do_wfi_sz)
|
||||||
.word . - omap3_do_wfi
|
.word . - omap3_do_wfi
|
||||||
|
|
||||||
@ -437,7 +422,9 @@ ENTRY(omap3_restore)
|
|||||||
cmp r2, #0x0 @ Check if target power state was OFF or RET
|
cmp r2, #0x0 @ Check if target power state was OFF or RET
|
||||||
bne logic_l1_restore
|
bne logic_l1_restore
|
||||||
|
|
||||||
ldr r0, l2dis_3630
|
adr r1, l2dis_3630_offset @ address for offset
|
||||||
|
ldr r0, [r1] @ value for offset
|
||||||
|
ldr r0, [r1, r0] @ value at l2dis_3630
|
||||||
cmp r0, #0x1 @ should we disable L2 on 3630?
|
cmp r0, #0x1 @ should we disable L2 on 3630?
|
||||||
bne skipl2dis
|
bne skipl2dis
|
||||||
mrc p15, 0, r0, c1, c0, 1
|
mrc p15, 0, r0, c1, c0, 1
|
||||||
@ -449,12 +436,14 @@ skipl2dis:
|
|||||||
and r1, #0x700
|
and r1, #0x700
|
||||||
cmp r1, #0x300
|
cmp r1, #0x300
|
||||||
beq l2_inv_gp
|
beq l2_inv_gp
|
||||||
|
adr r0, l2_inv_api_params_offset
|
||||||
|
ldr r3, [r0]
|
||||||
|
add r3, r3, r0 @ r3 points to dummy parameters
|
||||||
mov r0, #40 @ set service ID for PPA
|
mov r0, #40 @ set service ID for PPA
|
||||||
mov r12, r0 @ copy secure Service ID in r12
|
mov r12, r0 @ copy secure Service ID in r12
|
||||||
mov r1, #0 @ set task id for ROM code in r1
|
mov r1, #0 @ set task id for ROM code in r1
|
||||||
mov r2, #4 @ set some flags in r2, r6
|
mov r2, #4 @ set some flags in r2, r6
|
||||||
mov r6, #0xff
|
mov r6, #0xff
|
||||||
adr r3, l2_inv_api_params @ r3 points to dummy parameters
|
|
||||||
dsb @ data write barrier
|
dsb @ data write barrier
|
||||||
dmb @ data memory barrier
|
dmb @ data memory barrier
|
||||||
smc #1 @ call SMI monitor (smi #1)
|
smc #1 @ call SMI monitor (smi #1)
|
||||||
@ -488,8 +477,8 @@ skipl2dis:
|
|||||||
b logic_l1_restore
|
b logic_l1_restore
|
||||||
|
|
||||||
.align
|
.align
|
||||||
l2_inv_api_params:
|
l2_inv_api_params_offset:
|
||||||
.word 0x1, 0x00
|
.long l2_inv_api_params - .
|
||||||
l2_inv_gp:
|
l2_inv_gp:
|
||||||
/* Execute smi to invalidate L2 cache */
|
/* Execute smi to invalidate L2 cache */
|
||||||
mov r12, #0x1 @ set up to invalidate L2
|
mov r12, #0x1 @ set up to invalidate L2
|
||||||
@ -506,7 +495,9 @@ l2_inv_gp:
|
|||||||
mov r12, #0x2
|
mov r12, #0x2
|
||||||
smc #0 @ Call SMI monitor (smieq)
|
smc #0 @ Call SMI monitor (smieq)
|
||||||
logic_l1_restore:
|
logic_l1_restore:
|
||||||
ldr r1, l2dis_3630
|
adr r0, l2dis_3630_offset @ adress for offset
|
||||||
|
ldr r1, [r0] @ value for offset
|
||||||
|
ldr r1, [r0, r1] @ value at l2dis_3630
|
||||||
cmp r1, #0x1 @ Test if L2 re-enable needed on 3630
|
cmp r1, #0x1 @ Test if L2 re-enable needed on 3630
|
||||||
bne skipl2reen
|
bne skipl2reen
|
||||||
mrc p15, 0, r1, c1, c0, 1
|
mrc p15, 0, r1, c1, c0, 1
|
||||||
@ -535,9 +526,17 @@ control_stat:
|
|||||||
.word CONTROL_STAT
|
.word CONTROL_STAT
|
||||||
control_mem_rta:
|
control_mem_rta:
|
||||||
.word CONTROL_MEM_RTA_CTRL
|
.word CONTROL_MEM_RTA_CTRL
|
||||||
|
l2dis_3630_offset:
|
||||||
|
.long l2dis_3630 - .
|
||||||
|
|
||||||
|
.data
|
||||||
l2dis_3630:
|
l2dis_3630:
|
||||||
.word 0
|
.word 0
|
||||||
|
|
||||||
|
.data
|
||||||
|
l2_inv_api_params:
|
||||||
|
.word 0x1, 0x00
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal functions
|
* Internal functions
|
||||||
*/
|
*/
|
||||||
|
@ -29,12 +29,6 @@
|
|||||||
dsb
|
dsb
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
ppa_zero_params:
|
|
||||||
.word 0x0
|
|
||||||
|
|
||||||
ppa_por_params:
|
|
||||||
.word 1, 0
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP4
|
#ifdef CONFIG_ARCH_OMAP4
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -266,7 +260,9 @@ ENTRY(omap4_cpu_resume)
|
|||||||
beq skip_ns_smp_enable
|
beq skip_ns_smp_enable
|
||||||
ppa_actrl_retry:
|
ppa_actrl_retry:
|
||||||
mov r0, #OMAP4_PPA_CPU_ACTRL_SMP_INDEX
|
mov r0, #OMAP4_PPA_CPU_ACTRL_SMP_INDEX
|
||||||
adr r3, ppa_zero_params @ Pointer to parameters
|
adr r1, ppa_zero_params_offset
|
||||||
|
ldr r3, [r1]
|
||||||
|
add r3, r3, r1 @ Pointer to ppa_zero_params
|
||||||
mov r1, #0x0 @ Process ID
|
mov r1, #0x0 @ Process ID
|
||||||
mov r2, #0x4 @ Flag
|
mov r2, #0x4 @ Flag
|
||||||
mov r6, #0xff
|
mov r6, #0xff
|
||||||
@ -303,7 +299,9 @@ skip_ns_smp_enable:
|
|||||||
ldr r0, =OMAP4_PPA_L2_POR_INDEX
|
ldr r0, =OMAP4_PPA_L2_POR_INDEX
|
||||||
ldr r1, =OMAP44XX_SAR_RAM_BASE
|
ldr r1, =OMAP44XX_SAR_RAM_BASE
|
||||||
ldr r4, [r1, #L2X0_PREFETCH_CTRL_OFFSET]
|
ldr r4, [r1, #L2X0_PREFETCH_CTRL_OFFSET]
|
||||||
adr r3, ppa_por_params
|
adr r1, ppa_por_params_offset
|
||||||
|
ldr r3, [r1]
|
||||||
|
add r3, r3, r1 @ Pointer to ppa_por_params
|
||||||
str r4, [r3, #0x04]
|
str r4, [r3, #0x04]
|
||||||
mov r1, #0x0 @ Process ID
|
mov r1, #0x0 @ Process ID
|
||||||
mov r2, #0x4 @ Flag
|
mov r2, #0x4 @ Flag
|
||||||
@ -328,6 +326,8 @@ skip_l2en:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
b cpu_resume @ Jump to generic resume
|
b cpu_resume @ Jump to generic resume
|
||||||
|
ppa_por_params_offset:
|
||||||
|
.long ppa_por_params - .
|
||||||
ENDPROC(omap4_cpu_resume)
|
ENDPROC(omap4_cpu_resume)
|
||||||
#endif /* CONFIG_ARCH_OMAP4 */
|
#endif /* CONFIG_ARCH_OMAP4 */
|
||||||
|
|
||||||
@ -380,4 +380,13 @@ ENTRY(omap_do_wfi)
|
|||||||
nop
|
nop
|
||||||
|
|
||||||
ldmfd sp!, {pc}
|
ldmfd sp!, {pc}
|
||||||
|
ppa_zero_params_offset:
|
||||||
|
.long ppa_zero_params - .
|
||||||
ENDPROC(omap_do_wfi)
|
ENDPROC(omap_do_wfi)
|
||||||
|
|
||||||
|
.data
|
||||||
|
ppa_zero_params:
|
||||||
|
.word 0
|
||||||
|
|
||||||
|
ppa_por_params:
|
||||||
|
.word 1, 0
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
menuconfig ARCH_REALVIEW
|
menuconfig ARCH_REALVIEW
|
||||||
bool "ARM Ltd. RealView family" if ARCH_MULTI_V5 || ARCH_MULTI_V6 || ARCH_MULTI_V7
|
bool "ARM Ltd. RealView family"
|
||||||
|
depends on ARCH_MULTI_V5 || ARCH_MULTI_V6 || ARCH_MULTI_V7
|
||||||
select ARM_AMBA
|
select ARM_AMBA
|
||||||
select ARM_TIMER_SP804
|
select ARM_TIMER_SP804
|
||||||
select COMMON_CLK_VERSATILE
|
select COMMON_CLK_VERSATILE
|
||||||
|
@ -80,7 +80,7 @@ static void __init realview_smp_prepare_cpus(unsigned int max_cpus)
|
|||||||
virt_to_phys(versatile_secondary_startup));
|
virt_to_phys(versatile_secondary_startup));
|
||||||
}
|
}
|
||||||
|
|
||||||
struct smp_operations realview_dt_smp_ops __initdata = {
|
static const struct smp_operations realview_dt_smp_ops __initconst = {
|
||||||
.smp_prepare_cpus = realview_smp_prepare_cpus,
|
.smp_prepare_cpus = realview_smp_prepare_cpus,
|
||||||
.smp_secondary_init = versatile_secondary_init,
|
.smp_secondary_init = versatile_secondary_init,
|
||||||
.smp_boot_secondary = versatile_boot_secondary,
|
.smp_boot_secondary = versatile_boot_secondary,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
config ARCH_TANGO
|
config ARCH_TANGO
|
||||||
bool "Sigma Designs Tango4 (SMP87xx)" if ARCH_MULTI_V7
|
bool "Sigma Designs Tango4 (SMP87xx)"
|
||||||
|
depends on ARCH_MULTI_V7
|
||||||
# Cortex-A9 MPCore r3p0, PL310 r3p2
|
# Cortex-A9 MPCore r3p0, PL310 r3p2
|
||||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
select ARCH_HAS_HOLES_MEMORYMODEL
|
||||||
select ARM_ERRATA_754322
|
select ARM_ERRATA_754322
|
||||||
|
@ -9,7 +9,7 @@ static int tango_boot_secondary(unsigned int cpu, struct task_struct *idle)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct smp_operations tango_smp_ops __initdata = {
|
static const struct smp_operations tango_smp_ops __initconst = {
|
||||||
.smp_boot_secondary = tango_boot_secondary,
|
.smp_boot_secondary = tango_boot_secondary,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -27,6 +27,8 @@ $(warning LSE atomics not supported by binutils)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
KBUILD_CFLAGS += -mgeneral-regs-only $(lseinstr)
|
KBUILD_CFLAGS += -mgeneral-regs-only $(lseinstr)
|
||||||
|
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
||||||
|
KBUILD_CFLAGS += $(call cc-option, -mpc-relative-literal-loads)
|
||||||
KBUILD_AFLAGS += $(lseinstr)
|
KBUILD_AFLAGS += $(lseinstr)
|
||||||
|
|
||||||
ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
|
ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
|
||||||
|
@ -115,6 +115,7 @@
|
|||||||
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
|
<GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
@ -23,9 +23,8 @@ soc0: soc@000000000 {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
dsa: dsa@c7000000 {
|
dsaf0: dsa@c7000000 {
|
||||||
compatible = "hisilicon,hns-dsaf-v1";
|
compatible = "hisilicon,hns-dsaf-v1";
|
||||||
dsa_name = "dsaf0";
|
|
||||||
mode = "6port-16rss";
|
mode = "6port-16rss";
|
||||||
interrupt-parent = <&mbigen_dsa>;
|
interrupt-parent = <&mbigen_dsa>;
|
||||||
|
|
||||||
@ -127,7 +126,7 @@ soc0: soc@000000000 {
|
|||||||
|
|
||||||
eth0: ethernet@0{
|
eth0: ethernet@0{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <0>;
|
port-id = <0>;
|
||||||
local-mac-address = [00 00 00 01 00 58];
|
local-mac-address = [00 00 00 01 00 58];
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -135,14 +134,14 @@ soc0: soc@000000000 {
|
|||||||
};
|
};
|
||||||
eth1: ethernet@1{
|
eth1: ethernet@1{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <1>;
|
port-id = <1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
dma-coherent;
|
dma-coherent;
|
||||||
};
|
};
|
||||||
eth2: ethernet@2{
|
eth2: ethernet@2{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <2>;
|
port-id = <2>;
|
||||||
local-mac-address = [00 00 00 01 00 5a];
|
local-mac-address = [00 00 00 01 00 5a];
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -150,7 +149,7 @@ soc0: soc@000000000 {
|
|||||||
};
|
};
|
||||||
eth3: ethernet@3{
|
eth3: ethernet@3{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <3>;
|
port-id = <3>;
|
||||||
local-mac-address = [00 00 00 01 00 5b];
|
local-mac-address = [00 00 00 01 00 5b];
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -158,7 +157,7 @@ soc0: soc@000000000 {
|
|||||||
};
|
};
|
||||||
eth4: ethernet@4{
|
eth4: ethernet@4{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <4>;
|
port-id = <4>;
|
||||||
local-mac-address = [00 00 00 01 00 5c];
|
local-mac-address = [00 00 00 01 00 5c];
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -166,7 +165,7 @@ soc0: soc@000000000 {
|
|||||||
};
|
};
|
||||||
eth5: ethernet@5{
|
eth5: ethernet@5{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <5>;
|
port-id = <5>;
|
||||||
local-mac-address = [00 00 00 01 00 5d];
|
local-mac-address = [00 00 00 01 00 5d];
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -174,7 +173,7 @@ soc0: soc@000000000 {
|
|||||||
};
|
};
|
||||||
eth6: ethernet@6{
|
eth6: ethernet@6{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <6>;
|
port-id = <6>;
|
||||||
local-mac-address = [00 00 00 01 00 5e];
|
local-mac-address = [00 00 00 01 00 5e];
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -182,7 +181,7 @@ soc0: soc@000000000 {
|
|||||||
};
|
};
|
||||||
eth7: ethernet@7{
|
eth7: ethernet@7{
|
||||||
compatible = "hisilicon,hns-nic-v1";
|
compatible = "hisilicon,hns-nic-v1";
|
||||||
ae-name = "dsaf0";
|
ae-handle = <&dsaf0>;
|
||||||
port-id = <7>;
|
port-id = <7>;
|
||||||
local-mac-address = [00 00 00 01 00 5f];
|
local-mac-address = [00 00 00 01 00 5f];
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
rtc1 = "/rtc@0,7000e000";
|
rtc1 = "/rtc@0,7000e000";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
chosen { };
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x0 0x80000000 0x0 0x80000000>;
|
reg = <0x0 0x80000000 0x0 0x80000000>;
|
||||||
|
@ -16,7 +16,6 @@ CONFIG_IKCONFIG_PROC=y
|
|||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_MEMCG=y
|
CONFIG_MEMCG=y
|
||||||
CONFIG_MEMCG_SWAP=y
|
CONFIG_MEMCG_SWAP=y
|
||||||
CONFIG_MEMCG_KMEM=y
|
|
||||||
CONFIG_CGROUP_HUGETLB=y
|
CONFIG_CGROUP_HUGETLB=y
|
||||||
# CONFIG_UTS_NS is not set
|
# CONFIG_UTS_NS is not set
|
||||||
# CONFIG_IPC_NS is not set
|
# CONFIG_IPC_NS is not set
|
||||||
@ -37,15 +36,13 @@ CONFIG_ARCH_EXYNOS7=y
|
|||||||
CONFIG_ARCH_LAYERSCAPE=y
|
CONFIG_ARCH_LAYERSCAPE=y
|
||||||
CONFIG_ARCH_HISI=y
|
CONFIG_ARCH_HISI=y
|
||||||
CONFIG_ARCH_MEDIATEK=y
|
CONFIG_ARCH_MEDIATEK=y
|
||||||
|
CONFIG_ARCH_QCOM=y
|
||||||
CONFIG_ARCH_ROCKCHIP=y
|
CONFIG_ARCH_ROCKCHIP=y
|
||||||
CONFIG_ARCH_SEATTLE=y
|
CONFIG_ARCH_SEATTLE=y
|
||||||
CONFIG_ARCH_RENESAS=y
|
CONFIG_ARCH_RENESAS=y
|
||||||
CONFIG_ARCH_R8A7795=y
|
CONFIG_ARCH_R8A7795=y
|
||||||
CONFIG_ARCH_STRATIX10=y
|
CONFIG_ARCH_STRATIX10=y
|
||||||
CONFIG_ARCH_TEGRA=y
|
CONFIG_ARCH_TEGRA=y
|
||||||
CONFIG_ARCH_TEGRA_132_SOC=y
|
|
||||||
CONFIG_ARCH_TEGRA_210_SOC=y
|
|
||||||
CONFIG_ARCH_QCOM=y
|
|
||||||
CONFIG_ARCH_SPRD=y
|
CONFIG_ARCH_SPRD=y
|
||||||
CONFIG_ARCH_THUNDER=y
|
CONFIG_ARCH_THUNDER=y
|
||||||
CONFIG_ARCH_UNIPHIER=y
|
CONFIG_ARCH_UNIPHIER=y
|
||||||
@ -54,14 +51,19 @@ CONFIG_ARCH_XGENE=y
|
|||||||
CONFIG_ARCH_ZYNQMP=y
|
CONFIG_ARCH_ZYNQMP=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_MSI=y
|
CONFIG_PCI_MSI=y
|
||||||
|
CONFIG_PCI_IOV=y
|
||||||
|
CONFIG_PCI_RCAR_GEN2_PCIE=y
|
||||||
CONFIG_PCI_HOST_GENERIC=y
|
CONFIG_PCI_HOST_GENERIC=y
|
||||||
CONFIG_PCI_XGENE=y
|
CONFIG_PCI_XGENE=y
|
||||||
CONFIG_SMP=y
|
CONFIG_PCI_LAYERSCAPE=y
|
||||||
|
CONFIG_PCI_HISI=y
|
||||||
|
CONFIG_PCIE_QCOM=y
|
||||||
CONFIG_SCHED_MC=y
|
CONFIG_SCHED_MC=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_KSM=y
|
CONFIG_KSM=y
|
||||||
CONFIG_TRANSPARENT_HUGEPAGE=y
|
CONFIG_TRANSPARENT_HUGEPAGE=y
|
||||||
CONFIG_CMA=y
|
CONFIG_CMA=y
|
||||||
|
CONFIG_XEN=y
|
||||||
CONFIG_CMDLINE="console=ttyAMA0"
|
CONFIG_CMDLINE="console=ttyAMA0"
|
||||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
CONFIG_COMPAT=y
|
CONFIG_COMPAT=y
|
||||||
@ -100,7 +102,11 @@ CONFIG_PATA_OF_PLATFORM=y
|
|||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_TUN=y
|
CONFIG_TUN=y
|
||||||
CONFIG_VIRTIO_NET=y
|
CONFIG_VIRTIO_NET=y
|
||||||
|
CONFIG_AMD_XGBE=y
|
||||||
CONFIG_NET_XGENE=y
|
CONFIG_NET_XGENE=y
|
||||||
|
CONFIG_E1000E=y
|
||||||
|
CONFIG_IGB=y
|
||||||
|
CONFIG_IGBVF=y
|
||||||
CONFIG_SKY2=y
|
CONFIG_SKY2=y
|
||||||
CONFIG_RAVB=y
|
CONFIG_RAVB=y
|
||||||
CONFIG_SMC91X=y
|
CONFIG_SMC91X=y
|
||||||
@ -117,25 +123,23 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
|||||||
CONFIG_SERIAL_8250_DW=y
|
CONFIG_SERIAL_8250_DW=y
|
||||||
CONFIG_SERIAL_8250_MT6577=y
|
CONFIG_SERIAL_8250_MT6577=y
|
||||||
CONFIG_SERIAL_8250_UNIPHIER=y
|
CONFIG_SERIAL_8250_UNIPHIER=y
|
||||||
|
CONFIG_SERIAL_OF_PLATFORM=y
|
||||||
CONFIG_SERIAL_AMBA_PL011=y
|
CONFIG_SERIAL_AMBA_PL011=y
|
||||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||||
CONFIG_SERIAL_SAMSUNG=y
|
CONFIG_SERIAL_SAMSUNG=y
|
||||||
CONFIG_SERIAL_SAMSUNG_UARTS_4=y
|
|
||||||
CONFIG_SERIAL_SAMSUNG_UARTS=4
|
|
||||||
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_TEGRA=y
|
||||||
CONFIG_SERIAL_SH_SCI=y
|
CONFIG_SERIAL_SH_SCI=y
|
||||||
CONFIG_SERIAL_SH_SCI_NR_UARTS=11
|
CONFIG_SERIAL_SH_SCI_NR_UARTS=11
|
||||||
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||||
CONFIG_SERIAL_TEGRA=y
|
|
||||||
CONFIG_SERIAL_MSM=y
|
CONFIG_SERIAL_MSM=y
|
||||||
CONFIG_SERIAL_MSM_CONSOLE=y
|
CONFIG_SERIAL_MSM_CONSOLE=y
|
||||||
CONFIG_SERIAL_OF_PLATFORM=y
|
|
||||||
CONFIG_SERIAL_XILINX_PS_UART=y
|
CONFIG_SERIAL_XILINX_PS_UART=y
|
||||||
CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
|
CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
|
||||||
CONFIG_VIRTIO_CONSOLE=y
|
CONFIG_VIRTIO_CONSOLE=y
|
||||||
# CONFIG_HW_RANDOM is not set
|
# CONFIG_HW_RANDOM is not set
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_QUP=y
|
CONFIG_I2C_QUP=y
|
||||||
|
CONFIG_I2C_UNIPHIER_F=y
|
||||||
CONFIG_I2C_RCAR=y
|
CONFIG_I2C_RCAR=y
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_SPI_PL022=y
|
CONFIG_SPI_PL022=y
|
||||||
@ -176,8 +180,6 @@ CONFIG_MMC_SDHCI_PLTFM=y
|
|||||||
CONFIG_MMC_SDHCI_TEGRA=y
|
CONFIG_MMC_SDHCI_TEGRA=y
|
||||||
CONFIG_MMC_SPI=y
|
CONFIG_MMC_SPI=y
|
||||||
CONFIG_MMC_DW=y
|
CONFIG_MMC_DW=y
|
||||||
CONFIG_MMC_DW_IDMAC=y
|
|
||||||
CONFIG_MMC_DW_PLTFM=y
|
|
||||||
CONFIG_MMC_DW_EXYNOS=y
|
CONFIG_MMC_DW_EXYNOS=y
|
||||||
CONFIG_NEW_LEDS=y
|
CONFIG_NEW_LEDS=y
|
||||||
CONFIG_LEDS_CLASS=y
|
CONFIG_LEDS_CLASS=y
|
||||||
@ -187,28 +189,33 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
|||||||
CONFIG_LEDS_TRIGGER_CPU=y
|
CONFIG_LEDS_TRIGGER_CPU=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_EFI=y
|
CONFIG_RTC_DRV_EFI=y
|
||||||
|
CONFIG_RTC_DRV_PL031=y
|
||||||
CONFIG_RTC_DRV_XGENE=y
|
CONFIG_RTC_DRV_XGENE=y
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
CONFIG_RCAR_DMAC=y
|
|
||||||
CONFIG_QCOM_BAM_DMA=y
|
CONFIG_QCOM_BAM_DMA=y
|
||||||
CONFIG_TEGRA20_APB_DMA=y
|
CONFIG_TEGRA20_APB_DMA=y
|
||||||
|
CONFIG_RCAR_DMAC=y
|
||||||
|
CONFIG_VFIO=y
|
||||||
|
CONFIG_VFIO_PCI=y
|
||||||
CONFIG_VIRTIO_PCI=y
|
CONFIG_VIRTIO_PCI=y
|
||||||
CONFIG_VIRTIO_BALLOON=y
|
CONFIG_VIRTIO_BALLOON=y
|
||||||
CONFIG_VIRTIO_MMIO=y
|
CONFIG_VIRTIO_MMIO=y
|
||||||
|
CONFIG_XEN_GNTDEV=y
|
||||||
|
CONFIG_XEN_GRANT_DEV_ALLOC=y
|
||||||
CONFIG_COMMON_CLK_CS2000_CP=y
|
CONFIG_COMMON_CLK_CS2000_CP=y
|
||||||
CONFIG_COMMON_CLK_QCOM=y
|
CONFIG_COMMON_CLK_QCOM=y
|
||||||
CONFIG_MSM_GCC_8916=y
|
CONFIG_MSM_GCC_8916=y
|
||||||
CONFIG_HWSPINLOCK_QCOM=y
|
CONFIG_HWSPINLOCK_QCOM=y
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
CONFIG_ARM_SMMU=y
|
||||||
CONFIG_QCOM_SMEM=y
|
CONFIG_QCOM_SMEM=y
|
||||||
CONFIG_QCOM_SMD=y
|
CONFIG_QCOM_SMD=y
|
||||||
CONFIG_QCOM_SMD_RPM=y
|
CONFIG_QCOM_SMD_RPM=y
|
||||||
|
CONFIG_ARCH_TEGRA_132_SOC=y
|
||||||
|
CONFIG_ARCH_TEGRA_210_SOC=y
|
||||||
|
CONFIG_HISILICON_IRQ_MBIGEN=y
|
||||||
CONFIG_PHY_XGENE=y
|
CONFIG_PHY_XGENE=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
|
||||||
# CONFIG_EXT3_FS_XATTR is not set
|
|
||||||
CONFIG_EXT4_FS=y
|
|
||||||
CONFIG_FANOTIFY=y
|
CONFIG_FANOTIFY=y
|
||||||
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
|
||||||
CONFIG_QUOTA=y
|
CONFIG_QUOTA=y
|
||||||
@ -239,6 +246,7 @@ CONFIG_LOCKUP_DETECTOR=y
|
|||||||
# CONFIG_FTRACE is not set
|
# CONFIG_FTRACE is not set
|
||||||
CONFIG_MEMTEST=y
|
CONFIG_MEMTEST=y
|
||||||
CONFIG_SECURITY=y
|
CONFIG_SECURITY=y
|
||||||
|
CONFIG_CRYPTO_ECHAINIV=y
|
||||||
CONFIG_CRYPTO_ANSI_CPRNG=y
|
CONFIG_CRYPTO_ANSI_CPRNG=y
|
||||||
CONFIG_ARM64_CRYPTO=y
|
CONFIG_ARM64_CRYPTO=y
|
||||||
CONFIG_CRYPTO_SHA1_ARM64_CE=y
|
CONFIG_CRYPTO_SHA1_ARM64_CE=y
|
||||||
|
@ -103,6 +103,7 @@ static inline u64 gic_read_iar_common(void)
|
|||||||
u64 irqstat;
|
u64 irqstat;
|
||||||
|
|
||||||
asm volatile("mrs_s %0, " __stringify(ICC_IAR1_EL1) : "=r" (irqstat));
|
asm volatile("mrs_s %0, " __stringify(ICC_IAR1_EL1) : "=r" (irqstat));
|
||||||
|
dsb(sy);
|
||||||
return irqstat;
|
return irqstat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,6 +121,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
|
|||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
asm volatile("// futex_atomic_cmpxchg_inatomic\n"
|
asm volatile("// futex_atomic_cmpxchg_inatomic\n"
|
||||||
|
ALTERNATIVE("nop", SET_PSTATE_PAN(0), ARM64_HAS_PAN, CONFIG_ARM64_PAN)
|
||||||
" prfm pstl1strm, %2\n"
|
" prfm pstl1strm, %2\n"
|
||||||
"1: ldxr %w1, %2\n"
|
"1: ldxr %w1, %2\n"
|
||||||
" sub %w3, %w1, %w4\n"
|
" sub %w3, %w1, %w4\n"
|
||||||
@ -137,6 +138,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
|
|||||||
" .align 3\n"
|
" .align 3\n"
|
||||||
" .quad 1b, 4b, 2b, 4b\n"
|
" .quad 1b, 4b, 2b, 4b\n"
|
||||||
" .popsection\n"
|
" .popsection\n"
|
||||||
|
ALTERNATIVE("nop", SET_PSTATE_PAN(1), ARM64_HAS_PAN, CONFIG_ARM64_PAN)
|
||||||
: "+r" (ret), "=&r" (val), "+Q" (*uaddr), "=&r" (tmp)
|
: "+r" (ret), "=&r" (val), "+Q" (*uaddr), "=&r" (tmp)
|
||||||
: "r" (oldval), "r" (newval), "Ir" (-EFAULT)
|
: "r" (oldval), "r" (newval), "Ir" (-EFAULT)
|
||||||
: "memory");
|
: "memory");
|
||||||
|
@ -182,6 +182,7 @@
|
|||||||
#define CPTR_EL2_TCPAC (1 << 31)
|
#define CPTR_EL2_TCPAC (1 << 31)
|
||||||
#define CPTR_EL2_TTA (1 << 20)
|
#define CPTR_EL2_TTA (1 << 20)
|
||||||
#define CPTR_EL2_TFP (1 << CPTR_EL2_TFP_SHIFT)
|
#define CPTR_EL2_TFP (1 << CPTR_EL2_TFP_SHIFT)
|
||||||
|
#define CPTR_EL2_DEFAULT 0x000033ff
|
||||||
|
|
||||||
/* Hyp Debug Configuration Register bits */
|
/* Hyp Debug Configuration Register bits */
|
||||||
#define MDCR_EL2_TDRA (1 << 11)
|
#define MDCR_EL2_TDRA (1 << 11)
|
||||||
|
@ -127,10 +127,14 @@ static inline unsigned long *vcpu_spsr(const struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
static inline bool vcpu_mode_priv(const struct kvm_vcpu *vcpu)
|
static inline bool vcpu_mode_priv(const struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
u32 mode = *vcpu_cpsr(vcpu) & PSR_MODE_MASK;
|
u32 mode;
|
||||||
|
|
||||||
if (vcpu_mode_is_32bit(vcpu))
|
if (vcpu_mode_is_32bit(vcpu)) {
|
||||||
|
mode = *vcpu_cpsr(vcpu) & COMPAT_PSR_MODE_MASK;
|
||||||
return mode > COMPAT_PSR_MODE_USR;
|
return mode > COMPAT_PSR_MODE_USR;
|
||||||
|
}
|
||||||
|
|
||||||
|
mode = *vcpu_cpsr(vcpu) & PSR_MODE_MASK;
|
||||||
|
|
||||||
return mode != PSR_MODE_EL0t;
|
return mode != PSR_MODE_EL0t;
|
||||||
}
|
}
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
#include <linux/personality.h> /* for READ_IMPLIES_EXEC */
|
||||||
#include <asm/pgtable-types.h>
|
#include <asm/pgtable-types.h>
|
||||||
|
|
||||||
extern void __cpu_clear_user_page(void *p, unsigned long user);
|
extern void __cpu_clear_user_page(void *p, unsigned long user);
|
||||||
|
@ -67,11 +67,11 @@ extern void __pgd_error(const char *file, int line, unsigned long val);
|
|||||||
#define PROT_DEFAULT (PTE_TYPE_PAGE | PTE_AF | PTE_SHARED)
|
#define PROT_DEFAULT (PTE_TYPE_PAGE | PTE_AF | PTE_SHARED)
|
||||||
#define PROT_SECT_DEFAULT (PMD_TYPE_SECT | PMD_SECT_AF | PMD_SECT_S)
|
#define PROT_SECT_DEFAULT (PMD_TYPE_SECT | PMD_SECT_AF | PMD_SECT_S)
|
||||||
|
|
||||||
#define PROT_DEVICE_nGnRnE (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_ATTRINDX(MT_DEVICE_nGnRnE))
|
#define PROT_DEVICE_nGnRnE (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_DEVICE_nGnRnE))
|
||||||
#define PROT_DEVICE_nGnRE (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_ATTRINDX(MT_DEVICE_nGnRE))
|
#define PROT_DEVICE_nGnRE (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_DEVICE_nGnRE))
|
||||||
#define PROT_NORMAL_NC (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_ATTRINDX(MT_NORMAL_NC))
|
#define PROT_NORMAL_NC (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL_NC))
|
||||||
#define PROT_NORMAL_WT (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_ATTRINDX(MT_NORMAL_WT))
|
#define PROT_NORMAL_WT (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL_WT))
|
||||||
#define PROT_NORMAL (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_ATTRINDX(MT_NORMAL))
|
#define PROT_NORMAL (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_WRITE | PTE_ATTRINDX(MT_NORMAL))
|
||||||
|
|
||||||
#define PROT_SECT_DEVICE_nGnRE (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_DEVICE_nGnRE))
|
#define PROT_SECT_DEVICE_nGnRE (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_DEVICE_nGnRE))
|
||||||
#define PROT_SECT_NORMAL (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL))
|
#define PROT_SECT_NORMAL (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL))
|
||||||
@ -81,7 +81,7 @@ extern void __pgd_error(const char *file, int line, unsigned long val);
|
|||||||
|
|
||||||
#define PAGE_KERNEL __pgprot(_PAGE_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_WRITE)
|
#define PAGE_KERNEL __pgprot(_PAGE_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_WRITE)
|
||||||
#define PAGE_KERNEL_RO __pgprot(_PAGE_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_RDONLY)
|
#define PAGE_KERNEL_RO __pgprot(_PAGE_DEFAULT | PTE_PXN | PTE_UXN | PTE_DIRTY | PTE_RDONLY)
|
||||||
#define PAGE_KERNEL_ROX __pgprot(_PAGE_DEFAULT | PTE_UXN | PTE_DIRTY | PTE_RDONLY)
|
#define PAGE_KERNEL_ROX __pgprot(_PAGE_DEFAULT | PTE_UXN | PTE_DIRTY | PTE_RDONLY)
|
||||||
#define PAGE_KERNEL_EXEC __pgprot(_PAGE_DEFAULT | PTE_UXN | PTE_DIRTY | PTE_WRITE)
|
#define PAGE_KERNEL_EXEC __pgprot(_PAGE_DEFAULT | PTE_UXN | PTE_DIRTY | PTE_WRITE)
|
||||||
#define PAGE_KERNEL_EXEC_CONT __pgprot(_PAGE_DEFAULT | PTE_UXN | PTE_DIRTY | PTE_WRITE | PTE_CONT)
|
#define PAGE_KERNEL_EXEC_CONT __pgprot(_PAGE_DEFAULT | PTE_UXN | PTE_DIRTY | PTE_WRITE | PTE_CONT)
|
||||||
|
|
||||||
@ -153,6 +153,7 @@ extern struct page *empty_zero_page;
|
|||||||
#define pte_write(pte) (!!(pte_val(pte) & PTE_WRITE))
|
#define pte_write(pte) (!!(pte_val(pte) & PTE_WRITE))
|
||||||
#define pte_exec(pte) (!(pte_val(pte) & PTE_UXN))
|
#define pte_exec(pte) (!(pte_val(pte) & PTE_UXN))
|
||||||
#define pte_cont(pte) (!!(pte_val(pte) & PTE_CONT))
|
#define pte_cont(pte) (!!(pte_val(pte) & PTE_CONT))
|
||||||
|
#define pte_user(pte) (!!(pte_val(pte) & PTE_USER))
|
||||||
|
|
||||||
#ifdef CONFIG_ARM64_HW_AFDBM
|
#ifdef CONFIG_ARM64_HW_AFDBM
|
||||||
#define pte_hw_dirty(pte) (pte_write(pte) && !(pte_val(pte) & PTE_RDONLY))
|
#define pte_hw_dirty(pte) (pte_write(pte) && !(pte_val(pte) & PTE_RDONLY))
|
||||||
@ -163,8 +164,6 @@ extern struct page *empty_zero_page;
|
|||||||
#define pte_dirty(pte) (pte_sw_dirty(pte) || pte_hw_dirty(pte))
|
#define pte_dirty(pte) (pte_sw_dirty(pte) || pte_hw_dirty(pte))
|
||||||
|
|
||||||
#define pte_valid(pte) (!!(pte_val(pte) & PTE_VALID))
|
#define pte_valid(pte) (!!(pte_val(pte) & PTE_VALID))
|
||||||
#define pte_valid_user(pte) \
|
|
||||||
((pte_val(pte) & (PTE_VALID | PTE_USER)) == (PTE_VALID | PTE_USER))
|
|
||||||
#define pte_valid_not_user(pte) \
|
#define pte_valid_not_user(pte) \
|
||||||
((pte_val(pte) & (PTE_VALID | PTE_USER)) == PTE_VALID)
|
((pte_val(pte) & (PTE_VALID | PTE_USER)) == PTE_VALID)
|
||||||
#define pte_valid_young(pte) \
|
#define pte_valid_young(pte) \
|
||||||
@ -278,13 +277,13 @@ extern void __sync_icache_dcache(pte_t pteval, unsigned long addr);
|
|||||||
static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
|
static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
|
||||||
pte_t *ptep, pte_t pte)
|
pte_t *ptep, pte_t pte)
|
||||||
{
|
{
|
||||||
if (pte_valid_user(pte)) {
|
if (pte_valid(pte)) {
|
||||||
if (!pte_special(pte) && pte_exec(pte))
|
|
||||||
__sync_icache_dcache(pte, addr);
|
|
||||||
if (pte_sw_dirty(pte) && pte_write(pte))
|
if (pte_sw_dirty(pte) && pte_write(pte))
|
||||||
pte_val(pte) &= ~PTE_RDONLY;
|
pte_val(pte) &= ~PTE_RDONLY;
|
||||||
else
|
else
|
||||||
pte_val(pte) |= PTE_RDONLY;
|
pte_val(pte) |= PTE_RDONLY;
|
||||||
|
if (pte_user(pte) && pte_exec(pte) && !pte_special(pte))
|
||||||
|
__sync_icache_dcache(pte, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -514,9 +514,14 @@ CPU_LE( movk x0, #0x30d0, lsl #16 ) // Clear EE and E0E on LE systems
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* EL2 debug */
|
/* EL2 debug */
|
||||||
|
mrs x0, id_aa64dfr0_el1 // Check ID_AA64DFR0_EL1 PMUVer
|
||||||
|
sbfx x0, x0, #8, #4
|
||||||
|
cmp x0, #1
|
||||||
|
b.lt 4f // Skip if no PMU present
|
||||||
mrs x0, pmcr_el0 // Disable debug access traps
|
mrs x0, pmcr_el0 // Disable debug access traps
|
||||||
ubfx x0, x0, #11, #5 // to EL2 and allow access to
|
ubfx x0, x0, #11, #5 // to EL2 and allow access to
|
||||||
msr mdcr_el2, x0 // all PMU counters from EL1
|
msr mdcr_el2, x0 // all PMU counters from EL1
|
||||||
|
4:
|
||||||
|
|
||||||
/* Stage-2 translation */
|
/* Stage-2 translation */
|
||||||
msr vttbr_el2, xzr
|
msr vttbr_el2, xzr
|
||||||
|
@ -64,6 +64,16 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_EFI
|
#ifdef CONFIG_EFI
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prevent the symbol aliases below from being emitted into the kallsyms
|
||||||
|
* table, by forcing them to be absolute symbols (which are conveniently
|
||||||
|
* ignored by scripts/kallsyms) rather than section relative symbols.
|
||||||
|
* The distinction is only relevant for partial linking, and only for symbols
|
||||||
|
* that are defined within a section declaration (which is not the case for
|
||||||
|
* the definitions below) so the resulting values will be identical.
|
||||||
|
*/
|
||||||
|
#define KALLSYMS_HIDE(sym) ABSOLUTE(sym)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The EFI stub has its own symbol namespace prefixed by __efistub_, to
|
* The EFI stub has its own symbol namespace prefixed by __efistub_, to
|
||||||
* isolate it from the kernel proper. The following symbols are legally
|
* isolate it from the kernel proper. The following symbols are legally
|
||||||
@ -73,25 +83,25 @@
|
|||||||
* linked at. The routines below are all implemented in assembler in a
|
* linked at. The routines below are all implemented in assembler in a
|
||||||
* position independent manner
|
* position independent manner
|
||||||
*/
|
*/
|
||||||
__efistub_memcmp = __pi_memcmp;
|
__efistub_memcmp = KALLSYMS_HIDE(__pi_memcmp);
|
||||||
__efistub_memchr = __pi_memchr;
|
__efistub_memchr = KALLSYMS_HIDE(__pi_memchr);
|
||||||
__efistub_memcpy = __pi_memcpy;
|
__efistub_memcpy = KALLSYMS_HIDE(__pi_memcpy);
|
||||||
__efistub_memmove = __pi_memmove;
|
__efistub_memmove = KALLSYMS_HIDE(__pi_memmove);
|
||||||
__efistub_memset = __pi_memset;
|
__efistub_memset = KALLSYMS_HIDE(__pi_memset);
|
||||||
__efistub_strlen = __pi_strlen;
|
__efistub_strlen = KALLSYMS_HIDE(__pi_strlen);
|
||||||
__efistub_strcmp = __pi_strcmp;
|
__efistub_strcmp = KALLSYMS_HIDE(__pi_strcmp);
|
||||||
__efistub_strncmp = __pi_strncmp;
|
__efistub_strncmp = KALLSYMS_HIDE(__pi_strncmp);
|
||||||
__efistub___flush_dcache_area = __pi___flush_dcache_area;
|
__efistub___flush_dcache_area = KALLSYMS_HIDE(__pi___flush_dcache_area);
|
||||||
|
|
||||||
#ifdef CONFIG_KASAN
|
#ifdef CONFIG_KASAN
|
||||||
__efistub___memcpy = __pi_memcpy;
|
__efistub___memcpy = KALLSYMS_HIDE(__pi_memcpy);
|
||||||
__efistub___memmove = __pi_memmove;
|
__efistub___memmove = KALLSYMS_HIDE(__pi_memmove);
|
||||||
__efistub___memset = __pi_memset;
|
__efistub___memset = KALLSYMS_HIDE(__pi_memset);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__efistub__text = _text;
|
__efistub__text = KALLSYMS_HIDE(_text);
|
||||||
__efistub__end = _end;
|
__efistub__end = KALLSYMS_HIDE(_end);
|
||||||
__efistub__edata = _edata;
|
__efistub__edata = KALLSYMS_HIDE(_edata);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -36,7 +36,11 @@ static void __hyp_text __activate_traps(struct kvm_vcpu *vcpu)
|
|||||||
write_sysreg(val, hcr_el2);
|
write_sysreg(val, hcr_el2);
|
||||||
/* Trap on AArch32 cp15 c15 accesses (EL1 or EL0) */
|
/* Trap on AArch32 cp15 c15 accesses (EL1 or EL0) */
|
||||||
write_sysreg(1 << 15, hstr_el2);
|
write_sysreg(1 << 15, hstr_el2);
|
||||||
write_sysreg(CPTR_EL2_TTA | CPTR_EL2_TFP, cptr_el2);
|
|
||||||
|
val = CPTR_EL2_DEFAULT;
|
||||||
|
val |= CPTR_EL2_TTA | CPTR_EL2_TFP;
|
||||||
|
write_sysreg(val, cptr_el2);
|
||||||
|
|
||||||
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
|
write_sysreg(vcpu->arch.mdcr_el2, mdcr_el2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,7 +49,7 @@ static void __hyp_text __deactivate_traps(struct kvm_vcpu *vcpu)
|
|||||||
write_sysreg(HCR_RW, hcr_el2);
|
write_sysreg(HCR_RW, hcr_el2);
|
||||||
write_sysreg(0, hstr_el2);
|
write_sysreg(0, hstr_el2);
|
||||||
write_sysreg(read_sysreg(mdcr_el2) & MDCR_EL2_HPMN_MASK, mdcr_el2);
|
write_sysreg(read_sysreg(mdcr_el2) & MDCR_EL2_HPMN_MASK, mdcr_el2);
|
||||||
write_sysreg(0, cptr_el2);
|
write_sysreg(CPTR_EL2_DEFAULT, cptr_el2);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __hyp_text __activate_vm(struct kvm_vcpu *vcpu)
|
static void __hyp_text __activate_vm(struct kvm_vcpu *vcpu)
|
||||||
|
@ -27,7 +27,11 @@
|
|||||||
|
|
||||||
#define PSTATE_FAULT_BITS_64 (PSR_MODE_EL1h | PSR_A_BIT | PSR_F_BIT | \
|
#define PSTATE_FAULT_BITS_64 (PSR_MODE_EL1h | PSR_A_BIT | PSR_F_BIT | \
|
||||||
PSR_I_BIT | PSR_D_BIT)
|
PSR_I_BIT | PSR_D_BIT)
|
||||||
#define EL1_EXCEPT_SYNC_OFFSET 0x200
|
|
||||||
|
#define CURRENT_EL_SP_EL0_VECTOR 0x0
|
||||||
|
#define CURRENT_EL_SP_ELx_VECTOR 0x200
|
||||||
|
#define LOWER_EL_AArch64_VECTOR 0x400
|
||||||
|
#define LOWER_EL_AArch32_VECTOR 0x600
|
||||||
|
|
||||||
static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
|
static void prepare_fault32(struct kvm_vcpu *vcpu, u32 mode, u32 vect_offset)
|
||||||
{
|
{
|
||||||
@ -97,6 +101,34 @@ static void inject_abt32(struct kvm_vcpu *vcpu, bool is_pabt,
|
|||||||
*fsr = 0x14;
|
*fsr = 0x14;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum exception_type {
|
||||||
|
except_type_sync = 0,
|
||||||
|
except_type_irq = 0x80,
|
||||||
|
except_type_fiq = 0x100,
|
||||||
|
except_type_serror = 0x180,
|
||||||
|
};
|
||||||
|
|
||||||
|
static u64 get_except_vector(struct kvm_vcpu *vcpu, enum exception_type type)
|
||||||
|
{
|
||||||
|
u64 exc_offset;
|
||||||
|
|
||||||
|
switch (*vcpu_cpsr(vcpu) & (PSR_MODE_MASK | PSR_MODE32_BIT)) {
|
||||||
|
case PSR_MODE_EL1t:
|
||||||
|
exc_offset = CURRENT_EL_SP_EL0_VECTOR;
|
||||||
|
break;
|
||||||
|
case PSR_MODE_EL1h:
|
||||||
|
exc_offset = CURRENT_EL_SP_ELx_VECTOR;
|
||||||
|
break;
|
||||||
|
case PSR_MODE_EL0t:
|
||||||
|
exc_offset = LOWER_EL_AArch64_VECTOR;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
exc_offset = LOWER_EL_AArch32_VECTOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return vcpu_sys_reg(vcpu, VBAR_EL1) + exc_offset + type;
|
||||||
|
}
|
||||||
|
|
||||||
static void inject_abt64(struct kvm_vcpu *vcpu, bool is_iabt, unsigned long addr)
|
static void inject_abt64(struct kvm_vcpu *vcpu, bool is_iabt, unsigned long addr)
|
||||||
{
|
{
|
||||||
unsigned long cpsr = *vcpu_cpsr(vcpu);
|
unsigned long cpsr = *vcpu_cpsr(vcpu);
|
||||||
@ -108,8 +140,8 @@ static void inject_abt64(struct kvm_vcpu *vcpu, bool is_iabt, unsigned long addr
|
|||||||
*vcpu_spsr(vcpu) = cpsr;
|
*vcpu_spsr(vcpu) = cpsr;
|
||||||
*vcpu_elr_el1(vcpu) = *vcpu_pc(vcpu);
|
*vcpu_elr_el1(vcpu) = *vcpu_pc(vcpu);
|
||||||
|
|
||||||
|
*vcpu_pc(vcpu) = get_except_vector(vcpu, except_type_sync);
|
||||||
*vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64;
|
*vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64;
|
||||||
*vcpu_pc(vcpu) = vcpu_sys_reg(vcpu, VBAR_EL1) + EL1_EXCEPT_SYNC_OFFSET;
|
|
||||||
|
|
||||||
vcpu_sys_reg(vcpu, FAR_EL1) = addr;
|
vcpu_sys_reg(vcpu, FAR_EL1) = addr;
|
||||||
|
|
||||||
@ -143,8 +175,8 @@ static void inject_undef64(struct kvm_vcpu *vcpu)
|
|||||||
*vcpu_spsr(vcpu) = cpsr;
|
*vcpu_spsr(vcpu) = cpsr;
|
||||||
*vcpu_elr_el1(vcpu) = *vcpu_pc(vcpu);
|
*vcpu_elr_el1(vcpu) = *vcpu_pc(vcpu);
|
||||||
|
|
||||||
|
*vcpu_pc(vcpu) = get_except_vector(vcpu, except_type_sync);
|
||||||
*vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64;
|
*vcpu_cpsr(vcpu) = PSTATE_FAULT_BITS_64;
|
||||||
*vcpu_pc(vcpu) = vcpu_sys_reg(vcpu, VBAR_EL1) + EL1_EXCEPT_SYNC_OFFSET;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Build an unknown exception, depending on the instruction
|
* Build an unknown exception, depending on the instruction
|
||||||
|
@ -1007,10 +1007,9 @@ static int emulate_cp(struct kvm_vcpu *vcpu,
|
|||||||
if (likely(r->access(vcpu, params, r))) {
|
if (likely(r->access(vcpu, params, r))) {
|
||||||
/* Skip instruction, since it was emulated */
|
/* Skip instruction, since it was emulated */
|
||||||
kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));
|
kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));
|
||||||
|
/* Handled */
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handled */
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not handled */
|
/* Not handled */
|
||||||
@ -1043,7 +1042,7 @@ static void unhandled_cp_access(struct kvm_vcpu *vcpu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* kvm_handle_cp_64 -- handles a mrrc/mcrr trap on a guest CP15 access
|
* kvm_handle_cp_64 -- handles a mrrc/mcrr trap on a guest CP14/CP15 access
|
||||||
* @vcpu: The VCPU pointer
|
* @vcpu: The VCPU pointer
|
||||||
* @run: The kvm_run struct
|
* @run: The kvm_run struct
|
||||||
*/
|
*/
|
||||||
@ -1095,7 +1094,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* kvm_handle_cp15_32 -- handles a mrc/mcr trap on a guest CP15 access
|
* kvm_handle_cp_32 -- handles a mrc/mcr trap on a guest CP14/CP15 access
|
||||||
* @vcpu: The VCPU pointer
|
* @vcpu: The VCPU pointer
|
||||||
* @run: The kvm_run struct
|
* @run: The kvm_run struct
|
||||||
*/
|
*/
|
||||||
|
@ -46,7 +46,7 @@ enum address_markers_idx {
|
|||||||
PCI_START_NR,
|
PCI_START_NR,
|
||||||
PCI_END_NR,
|
PCI_END_NR,
|
||||||
MODULES_START_NR,
|
MODULES_START_NR,
|
||||||
MODUELS_END_NR,
|
MODULES_END_NR,
|
||||||
KERNEL_SPACE_NR,
|
KERNEL_SPACE_NR,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -120,6 +120,7 @@ static void __init cpu_set_ttbr1(unsigned long ttbr1)
|
|||||||
void __init kasan_init(void)
|
void __init kasan_init(void)
|
||||||
{
|
{
|
||||||
struct memblock_region *reg;
|
struct memblock_region *reg;
|
||||||
|
int i;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We are going to perform proper setup of shadow memory.
|
* We are going to perform proper setup of shadow memory.
|
||||||
@ -155,6 +156,14 @@ void __init kasan_init(void)
|
|||||||
pfn_to_nid(virt_to_pfn(start)));
|
pfn_to_nid(virt_to_pfn(start)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* KAsan may reuse the contents of kasan_zero_pte directly, so we
|
||||||
|
* should make sure that it maps the zero page read-only.
|
||||||
|
*/
|
||||||
|
for (i = 0; i < PTRS_PER_PTE; i++)
|
||||||
|
set_pte(&kasan_zero_pte[i],
|
||||||
|
pfn_pte(virt_to_pfn(kasan_zero_page), PAGE_KERNEL_RO));
|
||||||
|
|
||||||
memset(kasan_zero_page, 0, PAGE_SIZE);
|
memset(kasan_zero_page, 0, PAGE_SIZE);
|
||||||
cpu_set_ttbr1(__pa(swapper_pg_dir));
|
cpu_set_ttbr1(__pa(swapper_pg_dir));
|
||||||
flush_tlb_all();
|
flush_tlb_all();
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
|
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
@ -44,6 +45,7 @@ static int change_memory_common(unsigned long addr, int numpages,
|
|||||||
unsigned long end = start + size;
|
unsigned long end = start + size;
|
||||||
int ret;
|
int ret;
|
||||||
struct page_change_data data;
|
struct page_change_data data;
|
||||||
|
struct vm_struct *area;
|
||||||
|
|
||||||
if (!PAGE_ALIGNED(addr)) {
|
if (!PAGE_ALIGNED(addr)) {
|
||||||
start &= PAGE_MASK;
|
start &= PAGE_MASK;
|
||||||
@ -51,11 +53,27 @@ static int change_memory_common(unsigned long addr, int numpages,
|
|||||||
WARN_ON_ONCE(1);
|
WARN_ON_ONCE(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (start < MODULES_VADDR || start >= MODULES_END)
|
/*
|
||||||
|
* Kernel VA mappings are always live, and splitting live section
|
||||||
|
* mappings into page mappings may cause TLB conflicts. This means
|
||||||
|
* we have to ensure that changing the permission bits of the range
|
||||||
|
* we are operating on does not result in such splitting.
|
||||||
|
*
|
||||||
|
* Let's restrict ourselves to mappings created by vmalloc (or vmap).
|
||||||
|
* Those are guaranteed to consist entirely of page mappings, and
|
||||||
|
* splitting is never needed.
|
||||||
|
*
|
||||||
|
* So check whether the [addr, addr + size) interval is entirely
|
||||||
|
* covered by precisely one VM area that has the VM_ALLOC flag set.
|
||||||
|
*/
|
||||||
|
area = find_vm_area((void *)addr);
|
||||||
|
if (!area ||
|
||||||
|
end > (unsigned long)area->addr + area->size ||
|
||||||
|
!(area->flags & VM_ALLOC))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (end < MODULES_VADDR || end >= MODULES_END)
|
if (!numpages)
|
||||||
return -EINVAL;
|
return 0;
|
||||||
|
|
||||||
data.set_mask = set_mask;
|
data.set_mask = set_mask;
|
||||||
data.clear_mask = clear_mask;
|
data.clear_mask = clear_mask;
|
||||||
|
@ -84,3 +84,15 @@
|
|||||||
b.lo 9998b
|
b.lo 9998b
|
||||||
dsb \domain
|
dsb \domain
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
/*
|
||||||
|
* reset_pmuserenr_el0 - reset PMUSERENR_EL0 if PMUv3 present
|
||||||
|
*/
|
||||||
|
.macro reset_pmuserenr_el0, tmpreg
|
||||||
|
mrs \tmpreg, id_aa64dfr0_el1 // Check ID_AA64DFR0_EL1 PMUVer
|
||||||
|
sbfx \tmpreg, \tmpreg, #8, #4
|
||||||
|
cmp \tmpreg, #1 // Skip if no PMU present
|
||||||
|
b.lt 9000f
|
||||||
|
msr pmuserenr_el0, xzr // Disable PMU access from EL0
|
||||||
|
9000:
|
||||||
|
.endm
|
||||||
|
@ -117,7 +117,7 @@ ENTRY(cpu_do_resume)
|
|||||||
*/
|
*/
|
||||||
ubfx x11, x11, #1, #1
|
ubfx x11, x11, #1, #1
|
||||||
msr oslar_el1, x11
|
msr oslar_el1, x11
|
||||||
msr pmuserenr_el0, xzr // Disable PMU access from EL0
|
reset_pmuserenr_el0 x0 // Disable PMU access from EL0
|
||||||
mov x0, x12
|
mov x0, x12
|
||||||
dsb nsh // Make sure local tlb invalidation completed
|
dsb nsh // Make sure local tlb invalidation completed
|
||||||
isb
|
isb
|
||||||
@ -154,7 +154,7 @@ ENTRY(__cpu_setup)
|
|||||||
msr cpacr_el1, x0 // Enable FP/ASIMD
|
msr cpacr_el1, x0 // Enable FP/ASIMD
|
||||||
mov x0, #1 << 12 // Reset mdscr_el1 and disable
|
mov x0, #1 << 12 // Reset mdscr_el1 and disable
|
||||||
msr mdscr_el1, x0 // access to the DCC from EL0
|
msr mdscr_el1, x0 // access to the DCC from EL0
|
||||||
msr pmuserenr_el0, xzr // Disable PMU access from EL0
|
reset_pmuserenr_el0 x0 // Disable PMU access from EL0
|
||||||
/*
|
/*
|
||||||
* Memory region attributes for LPAE:
|
* Memory region attributes for LPAE:
|
||||||
*
|
*
|
||||||
|
@ -276,6 +276,7 @@ source "kernel/Kconfig.preempt"
|
|||||||
|
|
||||||
config SMP
|
config SMP
|
||||||
bool "Symmetric multi-processing support"
|
bool "Symmetric multi-processing support"
|
||||||
|
depends on MMU
|
||||||
---help---
|
---help---
|
||||||
This enables support for systems with more than one CPU. If you have
|
This enables support for systems with more than one CPU. If you have
|
||||||
a system with only one CPU, say N. If you have a system with more
|
a system with only one CPU, say N. If you have a system with more
|
||||||
|
@ -2085,7 +2085,7 @@ config PAGE_SIZE_32KB
|
|||||||
|
|
||||||
config PAGE_SIZE_64KB
|
config PAGE_SIZE_64KB
|
||||||
bool "64kB"
|
bool "64kB"
|
||||||
depends on !CPU_R3000 && !CPU_TX39XX
|
depends on !CPU_R3000 && !CPU_TX39XX && !CPU_R6000
|
||||||
help
|
help
|
||||||
Using 64kB page size will result in higher performance kernel at
|
Using 64kB page size will result in higher performance kernel at
|
||||||
the price of higher memory consumption. This option is available on
|
the price of higher memory consumption. This option is available on
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
#include <bcm63xx_nvram.h>
|
#include <bcm63xx_nvram.h>
|
||||||
|
|
||||||
|
#define BCM63XX_DEFAULT_PSI_SIZE 64
|
||||||
|
|
||||||
static struct bcm963xx_nvram nvram;
|
static struct bcm963xx_nvram nvram;
|
||||||
static int mac_addr_used;
|
static int mac_addr_used;
|
||||||
|
|
||||||
@ -85,3 +87,12 @@ int bcm63xx_nvram_get_mac_address(u8 *mac)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(bcm63xx_nvram_get_mac_address);
|
EXPORT_SYMBOL(bcm63xx_nvram_get_mac_address);
|
||||||
|
|
||||||
|
int bcm63xx_nvram_get_psi_size(void)
|
||||||
|
{
|
||||||
|
if (nvram.psi_size > 0)
|
||||||
|
return nvram.psi_size;
|
||||||
|
|
||||||
|
return BCM63XX_DEFAULT_PSI_SIZE;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(bcm63xx_nvram_get_psi_size);
|
||||||
|
@ -74,6 +74,7 @@
|
|||||||
timer: timer@10000040 {
|
timer: timer@10000040 {
|
||||||
compatible = "syscon";
|
compatible = "syscon";
|
||||||
reg = <0x10000040 0x2c>;
|
reg = <0x10000040 0x2c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -98,6 +98,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7125-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7125-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x60c>;
|
reg = <0x404000 0x60c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -118,6 +118,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7346-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7346-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x51c>;
|
reg = <0x404000 0x51c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -112,6 +112,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7358-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7358-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x51c>;
|
reg = <0x404000 0x51c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -112,6 +112,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7360-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7360-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x51c>;
|
reg = <0x404000 0x51c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -118,6 +118,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7362-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7362-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x51c>;
|
reg = <0x404000 0x51c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -99,6 +99,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7420-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7420-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x60c>;
|
reg = <0x404000 0x60c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -100,6 +100,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7425-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7425-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x51c>;
|
reg = <0x404000 0x51c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -114,6 +114,7 @@
|
|||||||
sun_top_ctrl: syscon@404000 {
|
sun_top_ctrl: syscon@404000 {
|
||||||
compatible = "brcm,bcm7425-sun-top-ctrl", "syscon";
|
compatible = "brcm,bcm7425-sun-top-ctrl", "syscon";
|
||||||
reg = <0x404000 0x51c>;
|
reg = <0x404000 0x51c>;
|
||||||
|
little-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
reboot {
|
reboot {
|
||||||
|
@ -227,7 +227,7 @@ struct mips_elf_abiflags_v0 {
|
|||||||
int __res = 1; \
|
int __res = 1; \
|
||||||
struct elfhdr *__h = (hdr); \
|
struct elfhdr *__h = (hdr); \
|
||||||
\
|
\
|
||||||
if (__h->e_machine != EM_MIPS) \
|
if (!mips_elf_check_machine(__h)) \
|
||||||
__res = 0; \
|
__res = 0; \
|
||||||
if (__h->e_ident[EI_CLASS] != ELFCLASS32) \
|
if (__h->e_ident[EI_CLASS] != ELFCLASS32) \
|
||||||
__res = 0; \
|
__res = 0; \
|
||||||
@ -258,7 +258,7 @@ struct mips_elf_abiflags_v0 {
|
|||||||
int __res = 1; \
|
int __res = 1; \
|
||||||
struct elfhdr *__h = (hdr); \
|
struct elfhdr *__h = (hdr); \
|
||||||
\
|
\
|
||||||
if (__h->e_machine != EM_MIPS) \
|
if (!mips_elf_check_machine(__h)) \
|
||||||
__res = 0; \
|
__res = 0; \
|
||||||
if (__h->e_ident[EI_CLASS] != ELFCLASS64) \
|
if (__h->e_ident[EI_CLASS] != ELFCLASS64) \
|
||||||
__res = 0; \
|
__res = 0; \
|
||||||
@ -285,6 +285,11 @@ struct mips_elf_abiflags_v0 {
|
|||||||
|
|
||||||
#endif /* !defined(ELF_ARCH) */
|
#endif /* !defined(ELF_ARCH) */
|
||||||
|
|
||||||
|
#define mips_elf_check_machine(x) ((x)->e_machine == EM_MIPS)
|
||||||
|
|
||||||
|
#define vmcore_elf32_check_arch mips_elf_check_machine
|
||||||
|
#define vmcore_elf64_check_arch mips_elf_check_machine
|
||||||
|
|
||||||
struct mips_abi;
|
struct mips_abi;
|
||||||
|
|
||||||
extern struct mips_abi mips_abi;
|
extern struct mips_abi mips_abi;
|
||||||
|
@ -179,6 +179,10 @@ static inline void lose_fpu_inatomic(int save, struct task_struct *tsk)
|
|||||||
if (save)
|
if (save)
|
||||||
_save_fp(tsk);
|
_save_fp(tsk);
|
||||||
__disable_fpu();
|
__disable_fpu();
|
||||||
|
} else {
|
||||||
|
/* FPU should not have been left enabled with no owner */
|
||||||
|
WARN(read_c0_status() & ST0_CU1,
|
||||||
|
"Orphaned FPU left enabled");
|
||||||
}
|
}
|
||||||
KSTK_STATUS(tsk) &= ~ST0_CU1;
|
KSTK_STATUS(tsk) &= ~ST0_CU1;
|
||||||
clear_tsk_thread_flag(tsk, TIF_USEDFPU);
|
clear_tsk_thread_flag(tsk, TIF_USEDFPU);
|
||||||
|
@ -30,4 +30,6 @@ u8 *bcm63xx_nvram_get_name(void);
|
|||||||
*/
|
*/
|
||||||
int bcm63xx_nvram_get_mac_address(u8 *mac);
|
int bcm63xx_nvram_get_mac_address(u8 *mac);
|
||||||
|
|
||||||
|
int bcm63xx_nvram_get_psi_size(void);
|
||||||
|
|
||||||
#endif /* BCM63XX_NVRAM_H */
|
#endif /* BCM63XX_NVRAM_H */
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user