mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
Linux 3.18-rc6
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAABAgAGBQJUcmzrAAoJEHm+PkMAQRiGUskH/il9ul71lyyvrA/bRbi0GfUa
2Ej1Q4Fa/SRzLMiWF8Wy/AlYBbl4/uD3a3XEueK4f9dNguTLZF/rwXTlKKzUeiGg
zFObbJg3zfa926PQcEV5mc+h71ZkWmbH5CjF6GfYIlj6kjVa5MXF3lSZz27DoAx3
DjoLKpj1fXQJu1HD7xvUn0r720RgYfic9iKdS69eEYex+Js92WySukogvMG5WAVD
xuwlJcJgm0YpgNr1t1ij4ekE5XR9jjiE4EXbOZYWcOOd+YXAwZpBrKOgxP0gma3w
OGwEvmAbzf/3IsGq3dPFYWQ2nfiLA/Qh7y20E19FLKpPBu5ZuTEgFU8VTxh+k+g=
=rRmA
-----END PGP SIGNATURE-----
Merge tag 'v3.18-rc6' into devicetree/next
v3.18-rc6 contains an important DT bug fix, c1a2086e2d
, "of/selftest:
Fix off-by-one error in removal path" which affects testing of the
overlay patch series. Merge it into the devicetree/next staging branch
so that the overlay patches are applied on top of a known working tree.
Linux 3.18-rc6
Conflicts:
drivers/of/address.c
This commit is contained in:
commit
66e6a5a1fc
660 changed files with 5861 additions and 3372 deletions
|
@ -3,8 +3,10 @@
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : should contain one of the following:
|
- compatible : should contain one of the following:
|
||||||
- "renesas,sata-r8a7779" for R-Car H1
|
- "renesas,sata-r8a7779" for R-Car H1
|
||||||
- "renesas,sata-r8a7790" for R-Car H2
|
- "renesas,sata-r8a7790-es1" for R-Car H2 ES1
|
||||||
- "renesas,sata-r8a7791" for R-Car M2
|
- "renesas,sata-r8a7790" for R-Car H2 other than ES1
|
||||||
|
- "renesas,sata-r8a7791" for R-Car M2-W
|
||||||
|
- "renesas,sata-r8a7793" for R-Car M2-N
|
||||||
- reg : address and length of the SATA registers;
|
- reg : address and length of the SATA registers;
|
||||||
- interrupts : must consist of one interrupt specifier.
|
- interrupts : must consist of one interrupt specifier.
|
||||||
|
|
||||||
|
|
|
@ -30,10 +30,6 @@ should only be used when a device has multiple interrupt parents.
|
||||||
Example:
|
Example:
|
||||||
interrupts-extended = <&intc1 5 1>, <&intc2 1 0>;
|
interrupts-extended = <&intc1 5 1>, <&intc2 1 0>;
|
||||||
|
|
||||||
A device node may contain either "interrupts" or "interrupts-extended", but not
|
|
||||||
both. If both properties are present, then the operating system should log an
|
|
||||||
error and use only the data in "interrupts".
|
|
||||||
|
|
||||||
2) Interrupt controller nodes
|
2) Interrupt controller nodes
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
|
|
@ -7,3 +7,14 @@ And for the interrupt mapping part:
|
||||||
|
|
||||||
Open Firmware Recommended Practice: Interrupt Mapping
|
Open Firmware Recommended Practice: Interrupt Mapping
|
||||||
http://www.openfirmware.org/1275/practice/imap/imap0_9d.pdf
|
http://www.openfirmware.org/1275/practice/imap/imap0_9d.pdf
|
||||||
|
|
||||||
|
Additionally to the properties specified in the above standards a host bridge
|
||||||
|
driver implementation may support the following properties:
|
||||||
|
|
||||||
|
- linux,pci-domain:
|
||||||
|
If present this property assigns a fixed PCI domain number to a host bridge,
|
||||||
|
otherwise an unstable (across boots) unique number will be assigned.
|
||||||
|
It is required to either not set this property at all or set it for all
|
||||||
|
host bridges in the system, otherwise potentially conflicting domain numbers
|
||||||
|
may be assigned to root buses behind different host bridges. The domain
|
||||||
|
number for each host bridge in the system must be unique.
|
||||||
|
|
|
@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
TZ1090-PDC's pin configuration nodes act as a container for an abitrary number
|
TZ1090-PDC's pin configuration nodes act as a container for an arbitrary number
|
||||||
of subnodes. Each of these subnodes represents some desired configuration for a
|
of subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
TZ1090's pin configuration nodes act as a container for an abitrary number of
|
TZ1090's pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
Lantiq's pin configuration nodes act as a container for an abitrary number of
|
Lantiq's pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those group(s), and two pin configuration parameters:
|
mux function to select on those group(s), and two pin configuration parameters:
|
||||||
|
|
|
@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
Lantiq's pin configuration nodes act as a container for an abitrary number of
|
Lantiq's pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those group(s), and two pin configuration parameters:
|
mux function to select on those group(s), and two pin configuration parameters:
|
||||||
|
|
|
@ -9,7 +9,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
Tegra's pin configuration nodes act as a container for an abitrary number of
|
Tegra's pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -13,7 +13,7 @@ Optional properties:
|
||||||
Please refer to pinctrl-bindings.txt in this directory for details of the common
|
Please refer to pinctrl-bindings.txt in this directory for details of the common
|
||||||
pinctrl bindings used by client devices.
|
pinctrl bindings used by client devices.
|
||||||
|
|
||||||
SiRFprimaII's pinmux nodes act as a container for an abitrary number of subnodes.
|
SiRFprimaII's pinmux nodes act as a container for an arbitrary number of subnodes.
|
||||||
Each of these subnodes represents some desired configuration for a group of pins.
|
Each of these subnodes represents some desired configuration for a group of pins.
|
||||||
|
|
||||||
Required subnode-properties:
|
Required subnode-properties:
|
||||||
|
|
|
@ -32,7 +32,7 @@ Required properties:
|
||||||
Please refer to pinctrl-bindings.txt in this directory for details of the common
|
Please refer to pinctrl-bindings.txt in this directory for details of the common
|
||||||
pinctrl bindings used by client devices.
|
pinctrl bindings used by client devices.
|
||||||
|
|
||||||
SPEAr's pinmux nodes act as a container for an abitrary number of subnodes. Each
|
SPEAr's pinmux nodes act as a container for an arbitrary number of subnodes. Each
|
||||||
of these subnodes represents muxing for a pin, a group, or a list of pins or
|
of these subnodes represents muxing for a pin, a group, or a list of pins or
|
||||||
groups.
|
groups.
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
Qualcomm's pin configuration nodes act as a container for an abitrary number of
|
Qualcomm's pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -47,7 +47,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
The pin configuration nodes act as a container for an abitrary number of
|
The pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -18,7 +18,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
Qualcomm's pin configuration nodes act as a container for an abitrary number of
|
Qualcomm's pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -47,7 +47,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
The pin configuration nodes act as a container for an abitrary number of
|
The pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -18,7 +18,7 @@ Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||||
common pinctrl bindings used by client devices, including the meaning of the
|
common pinctrl bindings used by client devices, including the meaning of the
|
||||||
phrase "pin configuration node".
|
phrase "pin configuration node".
|
||||||
|
|
||||||
Qualcomm's pin configuration nodes act as a container for an abitrary number of
|
Qualcomm's pin configuration nodes act as a container for an arbitrary number of
|
||||||
subnodes. Each of these subnodes represents some desired configuration for a
|
subnodes. Each of these subnodes represents some desired configuration for a
|
||||||
pin, a group, or a list of pins or groups. This configuration can include the
|
pin, a group, or a list of pins or groups. This configuration can include the
|
||||||
mux function to select on those pin(s)/group(s), and various pin configuration
|
mux function to select on those pin(s)/group(s), and various pin configuration
|
||||||
|
|
|
@ -7,7 +7,10 @@ Required properties:
|
||||||
- "renesas,thermal-r8a73a4" (R-Mobile AP6)
|
- "renesas,thermal-r8a73a4" (R-Mobile AP6)
|
||||||
- "renesas,thermal-r8a7779" (R-Car H1)
|
- "renesas,thermal-r8a7779" (R-Car H1)
|
||||||
- "renesas,thermal-r8a7790" (R-Car H2)
|
- "renesas,thermal-r8a7790" (R-Car H2)
|
||||||
- "renesas,thermal-r8a7791" (R-Car M2)
|
- "renesas,thermal-r8a7791" (R-Car M2-W)
|
||||||
|
- "renesas,thermal-r8a7792" (R-Car V2H)
|
||||||
|
- "renesas,thermal-r8a7793" (R-Car M2-N)
|
||||||
|
- "renesas,thermal-r8a7794" (R-Car E2)
|
||||||
- reg : Address range of the thermal registers.
|
- reg : Address range of the thermal registers.
|
||||||
The 1st reg will be recognized as common register
|
The 1st reg will be recognized as common register
|
||||||
if it has "interrupts".
|
if it has "interrupts".
|
||||||
|
|
|
@ -34,6 +34,7 @@ chipidea Chipidea, Inc
|
||||||
chrp Common Hardware Reference Platform
|
chrp Common Hardware Reference Platform
|
||||||
chunghwa Chunghwa Picture Tubes Ltd.
|
chunghwa Chunghwa Picture Tubes Ltd.
|
||||||
cirrus Cirrus Logic, Inc.
|
cirrus Cirrus Logic, Inc.
|
||||||
|
cnm Chips&Media, Inc.
|
||||||
cortina Cortina Systems, Inc.
|
cortina Cortina Systems, Inc.
|
||||||
crystalfontz Crystalfontz America, Inc.
|
crystalfontz Crystalfontz America, Inc.
|
||||||
dallas Maxim Integrated Products (formerly Dallas Semiconductor)
|
dallas Maxim Integrated Products (formerly Dallas Semiconductor)
|
||||||
|
@ -92,6 +93,7 @@ maxim Maxim Integrated Products
|
||||||
mediatek MediaTek Inc.
|
mediatek MediaTek Inc.
|
||||||
micrel Micrel Inc.
|
micrel Micrel Inc.
|
||||||
microchip Microchip Technology Inc.
|
microchip Microchip Technology Inc.
|
||||||
|
micron Micron Technology Inc.
|
||||||
mitsubishi Mitsubishi Electric Corporation
|
mitsubishi Mitsubishi Electric Corporation
|
||||||
mosaixtech Mosaix Technologies, Inc.
|
mosaixtech Mosaix Technologies, Inc.
|
||||||
moxa Moxa
|
moxa Moxa
|
||||||
|
@ -127,6 +129,7 @@ renesas Renesas Electronics Corporation
|
||||||
ricoh Ricoh Co. Ltd.
|
ricoh Ricoh Co. Ltd.
|
||||||
rockchip Fuzhou Rockchip Electronics Co., Ltd
|
rockchip Fuzhou Rockchip Electronics Co., Ltd
|
||||||
samsung Samsung Semiconductor
|
samsung Samsung Semiconductor
|
||||||
|
sandisk Sandisk Corporation
|
||||||
sbs Smart Battery System
|
sbs Smart Battery System
|
||||||
schindler Schindler
|
schindler Schindler
|
||||||
seagate Seagate Technology PLC
|
seagate Seagate Technology PLC
|
||||||
|
@ -138,7 +141,7 @@ silergy Silergy Corp.
|
||||||
sirf SiRF Technology, Inc.
|
sirf SiRF Technology, Inc.
|
||||||
sitronix Sitronix Technology Corporation
|
sitronix Sitronix Technology Corporation
|
||||||
smsc Standard Microsystems Corporation
|
smsc Standard Microsystems Corporation
|
||||||
snps Synopsys, Inc.
|
snps Synopsys, Inc.
|
||||||
solidrun SolidRun
|
solidrun SolidRun
|
||||||
sony Sony Corporation
|
sony Sony Corporation
|
||||||
spansion Spansion Inc.
|
spansion Spansion Inc.
|
||||||
|
|
|
@ -64,7 +64,7 @@ is formed.
|
||||||
At mount time, the two directories given as mount options "lowerdir" and
|
At mount time, the two directories given as mount options "lowerdir" and
|
||||||
"upperdir" are combined into a merged directory:
|
"upperdir" are combined into a merged directory:
|
||||||
|
|
||||||
mount -t overlayfs overlayfs -olowerdir=/lower,upperdir=/upper,\
|
mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,\
|
||||||
workdir=/work /merged
|
workdir=/work /merged
|
||||||
|
|
||||||
The "workdir" needs to be an empty directory on the same filesystem
|
The "workdir" needs to be an empty directory on the same filesystem
|
||||||
|
|
|
@ -38,22 +38,38 @@ Contents
|
||||||
7.2.1 Status packet
|
7.2.1 Status packet
|
||||||
7.2.2 Head packet
|
7.2.2 Head packet
|
||||||
7.2.3 Motion packet
|
7.2.3 Motion packet
|
||||||
|
8. Trackpoint (for Hardware version 3 and 4)
|
||||||
|
8.1 Registers
|
||||||
|
8.2 Native relative mode 6 byte packet format
|
||||||
|
8.2.1 Status Packet
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1. Introduction
|
1. Introduction
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
Currently the Linux Elantech touchpad driver is aware of two different
|
Currently the Linux Elantech touchpad driver is aware of four different
|
||||||
hardware versions unimaginatively called version 1 and version 2. Version 1
|
hardware versions unimaginatively called version 1,version 2, version 3
|
||||||
is found in "older" laptops and uses 4 bytes per packet. Version 2 seems to
|
and version 4. Version 1 is found in "older" laptops and uses 4 bytes per
|
||||||
be introduced with the EeePC and uses 6 bytes per packet, and provides
|
packet. Version 2 seems to be introduced with the EeePC and uses 6 bytes
|
||||||
additional features such as position of two fingers, and width of the touch.
|
per packet, and provides additional features such as position of two fingers,
|
||||||
|
and width of the touch. Hardware version 3 uses 6 bytes per packet (and
|
||||||
|
for 2 fingers the concatenation of two 6 bytes packets) and allows tracking
|
||||||
|
of up to 3 fingers. Hardware version 4 uses 6 bytes per packet, and can
|
||||||
|
combine a status packet with multiple head or motion packets. Hardware version
|
||||||
|
4 allows tracking up to 5 fingers.
|
||||||
|
|
||||||
|
Some Hardware version 3 and version 4 also have a trackpoint which uses a
|
||||||
|
separate packet format. It is also 6 bytes per packet.
|
||||||
|
|
||||||
The driver tries to support both hardware versions and should be compatible
|
The driver tries to support both hardware versions and should be compatible
|
||||||
with the Xorg Synaptics touchpad driver and its graphical configuration
|
with the Xorg Synaptics touchpad driver and its graphical configuration
|
||||||
utilities.
|
utilities.
|
||||||
|
|
||||||
|
Note that a mouse button is also associated with either the touchpad or the
|
||||||
|
trackpoint when a trackpoint is available. Disabling the Touchpad in xorg
|
||||||
|
(TouchPadOff=0) will also disable the buttons associated with the touchpad.
|
||||||
|
|
||||||
Additionally the operation of the touchpad can be altered by adjusting the
|
Additionally the operation of the touchpad can be altered by adjusting the
|
||||||
contents of some of its internal registers. These registers are represented
|
contents of some of its internal registers. These registers are represented
|
||||||
by the driver as sysfs entries under /sys/bus/serio/drivers/psmouse/serio?
|
by the driver as sysfs entries under /sys/bus/serio/drivers/psmouse/serio?
|
||||||
|
@ -78,7 +94,7 @@ completeness sake.
|
||||||
2. Extra knobs
|
2. Extra knobs
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
|
||||||
Currently the Linux Elantech touchpad driver provides two extra knobs under
|
Currently the Linux Elantech touchpad driver provides three extra knobs under
|
||||||
/sys/bus/serio/drivers/psmouse/serio? for the user.
|
/sys/bus/serio/drivers/psmouse/serio? for the user.
|
||||||
|
|
||||||
* debug
|
* debug
|
||||||
|
@ -112,6 +128,20 @@ Currently the Linux Elantech touchpad driver provides two extra knobs under
|
||||||
data consistency checking can be done. For now checking is disabled by
|
data consistency checking can be done. For now checking is disabled by
|
||||||
default. Currently even turning it on will do nothing.
|
default. Currently even turning it on will do nothing.
|
||||||
|
|
||||||
|
* crc_enabled
|
||||||
|
|
||||||
|
Sets crc_enabled to 0/1. The name "crc_enabled" is the official name of
|
||||||
|
this integrity check, even though it is not an actual cyclic redundancy
|
||||||
|
check.
|
||||||
|
|
||||||
|
Depending on the state of crc_enabled, certain basic data integrity
|
||||||
|
verification is done by the driver on hardware version 3 and 4. The
|
||||||
|
driver will reject any packet that appears corrupted. Using this knob,
|
||||||
|
The state of crc_enabled can be altered with this knob.
|
||||||
|
|
||||||
|
Reading the crc_enabled value will show the active value. Echoing
|
||||||
|
"0" or "1" to this file will set the state to "0" or "1".
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
3. Differentiating hardware versions
|
3. Differentiating hardware versions
|
||||||
|
@ -746,3 +776,42 @@ byte 5:
|
||||||
|
|
||||||
byte 0 ~ 2 for one finger
|
byte 0 ~ 2 for one finger
|
||||||
byte 3 ~ 5 for another
|
byte 3 ~ 5 for another
|
||||||
|
|
||||||
|
|
||||||
|
8. Trackpoint (for Hardware version 3 and 4)
|
||||||
|
=========================================
|
||||||
|
8.1 Registers
|
||||||
|
~~~~~~~~~
|
||||||
|
No special registers have been identified.
|
||||||
|
|
||||||
|
8.2 Native relative mode 6 byte packet format
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
8.2.1 Status Packet
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
byte 0:
|
||||||
|
bit 7 6 5 4 3 2 1 0
|
||||||
|
0 0 sx sy 0 M R L
|
||||||
|
byte 1:
|
||||||
|
bit 7 6 5 4 3 2 1 0
|
||||||
|
~sx 0 0 0 0 0 0 0
|
||||||
|
byte 2:
|
||||||
|
bit 7 6 5 4 3 2 1 0
|
||||||
|
~sy 0 0 0 0 0 0 0
|
||||||
|
byte 3:
|
||||||
|
bit 7 6 5 4 3 2 1 0
|
||||||
|
0 0 ~sy ~sx 0 1 1 0
|
||||||
|
byte 4:
|
||||||
|
bit 7 6 5 4 3 2 1 0
|
||||||
|
x7 x6 x5 x4 x3 x2 x1 x0
|
||||||
|
byte 5:
|
||||||
|
bit 7 6 5 4 3 2 1 0
|
||||||
|
y7 y6 y5 y4 y3 y2 y1 y0
|
||||||
|
|
||||||
|
|
||||||
|
x and y are written in two's complement spread
|
||||||
|
over 9 bits with sx/sy the relative top bit and
|
||||||
|
x7..x0 and y7..y0 the lower bits.
|
||||||
|
~sx is the inverse of sx, ~sy is the inverse of sy.
|
||||||
|
The sign of y is opposite to what the input driver
|
||||||
|
expects for a relative movement
|
||||||
|
|
|
@ -3621,7 +3621,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||||
|
|
||||||
usb-storage.delay_use=
|
usb-storage.delay_use=
|
||||||
[UMS] The delay in seconds before a new device is
|
[UMS] The delay in seconds before a new device is
|
||||||
scanned for Logical Units (default 5).
|
scanned for Logical Units (default 1).
|
||||||
|
|
||||||
usb-storage.quirks=
|
usb-storage.quirks=
|
||||||
[UMS] A list of quirks entries to supplement or
|
[UMS] A list of quirks entries to supplement or
|
||||||
|
|
|
@ -56,6 +56,13 @@ ip_forward_use_pmtu - BOOLEAN
|
||||||
0 - disabled
|
0 - disabled
|
||||||
1 - enabled
|
1 - enabled
|
||||||
|
|
||||||
|
fwmark_reflect - BOOLEAN
|
||||||
|
Controls the fwmark of kernel-generated IPv4 reply packets that are not
|
||||||
|
associated with a socket for example, TCP RSTs or ICMP echo replies).
|
||||||
|
If unset, these packets have a fwmark of zero. If set, they have the
|
||||||
|
fwmark of the packet they are replying to.
|
||||||
|
Default: 0
|
||||||
|
|
||||||
route/max_size - INTEGER
|
route/max_size - INTEGER
|
||||||
Maximum number of routes allowed in the kernel. Increase
|
Maximum number of routes allowed in the kernel. Increase
|
||||||
this when using large numbers of interfaces and/or routes.
|
this when using large numbers of interfaces and/or routes.
|
||||||
|
@ -1201,6 +1208,13 @@ conf/all/forwarding - BOOLEAN
|
||||||
proxy_ndp - BOOLEAN
|
proxy_ndp - BOOLEAN
|
||||||
Do proxy ndp.
|
Do proxy ndp.
|
||||||
|
|
||||||
|
fwmark_reflect - BOOLEAN
|
||||||
|
Controls the fwmark of kernel-generated IPv6 reply packets that are not
|
||||||
|
associated with a socket for example, TCP RSTs or ICMPv6 echo replies).
|
||||||
|
If unset, these packets have a fwmark of zero. If set, they have the
|
||||||
|
fwmark of the packet they are replying to.
|
||||||
|
Default: 0
|
||||||
|
|
||||||
conf/interface/*:
|
conf/interface/*:
|
||||||
Change special settings per interface.
|
Change special settings per interface.
|
||||||
|
|
||||||
|
|
|
@ -221,12 +221,11 @@ ccs_out_mode: specify the allowed video output crop/compose/scaling combination
|
||||||
key, not quality.
|
key, not quality.
|
||||||
|
|
||||||
multiplanar: select whether each device instance supports multi-planar formats,
|
multiplanar: select whether each device instance supports multi-planar formats,
|
||||||
and thus the V4L2 multi-planar API. By default the first device instance
|
and thus the V4L2 multi-planar API. By default device instances are
|
||||||
is single-planar, the second multi-planar, and it keeps alternating.
|
single-planar.
|
||||||
|
|
||||||
This module option can override that for each instance. Values are:
|
This module option can override that for each instance. Values are:
|
||||||
|
|
||||||
0: use alternating single and multi-planar devices.
|
|
||||||
1: this is a single-planar instance.
|
1: this is a single-planar instance.
|
||||||
2: this is a multi-planar instance.
|
2: this is a multi-planar instance.
|
||||||
|
|
||||||
|
@ -975,9 +974,8 @@ is set, then the alpha component is only used for the color red and set to
|
||||||
0 otherwise.
|
0 otherwise.
|
||||||
|
|
||||||
The driver has to be configured to support the multiplanar formats. By default
|
The driver has to be configured to support the multiplanar formats. By default
|
||||||
the first driver instance is single-planar, the second is multi-planar, and it
|
the driver instances are single-planar. This can be changed by setting the
|
||||||
keeps alternating. This can be changed by setting the multiplanar module option,
|
multiplanar module option, see section 1 for more details on that option.
|
||||||
see section 1 for more details on that option.
|
|
||||||
|
|
||||||
If the driver instance is using the multiplanar formats/API, then the first
|
If the driver instance is using the multiplanar formats/API, then the first
|
||||||
single planar format (YUYV) and the multiplanar NV16M and NV61M formats the
|
single planar format (YUYV) and the multiplanar NV16M and NV61M formats the
|
||||||
|
@ -1021,7 +1019,7 @@ the output overlay for the video output, turn on video looping and capture
|
||||||
to see the blended framebuffer overlay that's being written to by the second
|
to see the blended framebuffer overlay that's being written to by the second
|
||||||
instance. This setup would require the following commands:
|
instance. This setup would require the following commands:
|
||||||
|
|
||||||
$ sudo modprobe vivid n_devs=2 node_types=0x10101,0x1 multiplanar=1,1
|
$ sudo modprobe vivid n_devs=2 node_types=0x10101,0x1
|
||||||
$ v4l2-ctl -d1 --find-fb
|
$ v4l2-ctl -d1 --find-fb
|
||||||
/dev/fb1 is the framebuffer associated with base address 0x12800000
|
/dev/fb1 is the framebuffer associated with base address 0x12800000
|
||||||
$ sudo v4l2-ctl -d2 --set-fbuf fb=1
|
$ sudo v4l2-ctl -d2 --set-fbuf fb=1
|
||||||
|
|
54
MAINTAINERS
54
MAINTAINERS
|
@ -1543,6 +1543,7 @@ F: arch/arm/mach-pxa/include/mach/z2.h
|
||||||
|
|
||||||
ARM/ZYNQ ARCHITECTURE
|
ARM/ZYNQ ARCHITECTURE
|
||||||
M: Michal Simek <michal.simek@xilinx.com>
|
M: Michal Simek <michal.simek@xilinx.com>
|
||||||
|
R: Sören Brinkmann <soren.brinkmann@xilinx.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://wiki.xilinx.com
|
W: http://wiki.xilinx.com
|
||||||
T: git git://git.xilinx.com/linux-xlnx.git
|
T: git git://git.xilinx.com/linux-xlnx.git
|
||||||
|
@ -2071,8 +2072,9 @@ F: drivers/clocksource/bcm_kona_timer.c
|
||||||
|
|
||||||
BROADCOM BCM2835 ARM ARCHITECTURE
|
BROADCOM BCM2835 ARM ARCHITECTURE
|
||||||
M: Stephen Warren <swarren@wwwdotorg.org>
|
M: Stephen Warren <swarren@wwwdotorg.org>
|
||||||
|
M: Lee Jones <lee@kernel.org>
|
||||||
L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-rpi.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rpi/linux-rpi.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
N: bcm2835
|
N: bcm2835
|
||||||
|
|
||||||
|
@ -2742,6 +2744,13 @@ W: http://www.chelsio.com
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/chelsio/cxgb3/
|
F: drivers/net/ethernet/chelsio/cxgb3/
|
||||||
|
|
||||||
|
CXGB3 ISCSI DRIVER (CXGB3I)
|
||||||
|
M: Karen Xie <kxie@chelsio.com>
|
||||||
|
L: linux-scsi@vger.kernel.org
|
||||||
|
W: http://www.chelsio.com
|
||||||
|
S: Supported
|
||||||
|
F: drivers/scsi/cxgbi/cxgb3i
|
||||||
|
|
||||||
CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
|
CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
|
||||||
M: Steve Wise <swise@chelsio.com>
|
M: Steve Wise <swise@chelsio.com>
|
||||||
L: linux-rdma@vger.kernel.org
|
L: linux-rdma@vger.kernel.org
|
||||||
|
@ -2756,6 +2765,13 @@ W: http://www.chelsio.com
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/chelsio/cxgb4/
|
F: drivers/net/ethernet/chelsio/cxgb4/
|
||||||
|
|
||||||
|
CXGB4 ISCSI DRIVER (CXGB4I)
|
||||||
|
M: Karen Xie <kxie@chelsio.com>
|
||||||
|
L: linux-scsi@vger.kernel.org
|
||||||
|
W: http://www.chelsio.com
|
||||||
|
S: Supported
|
||||||
|
F: drivers/scsi/cxgbi/cxgb4i
|
||||||
|
|
||||||
CXGB4 IWARP RNIC DRIVER (IW_CXGB4)
|
CXGB4 IWARP RNIC DRIVER (IW_CXGB4)
|
||||||
M: Steve Wise <swise@chelsio.com>
|
M: Steve Wise <swise@chelsio.com>
|
||||||
L: linux-rdma@vger.kernel.org
|
L: linux-rdma@vger.kernel.org
|
||||||
|
@ -4714,6 +4730,7 @@ L: linux-iio@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/iio/
|
F: drivers/iio/
|
||||||
F: drivers/staging/iio/
|
F: drivers/staging/iio/
|
||||||
|
F: include/linux/iio/
|
||||||
|
|
||||||
IKANOS/ADI EAGLE ADSL USB DRIVER
|
IKANOS/ADI EAGLE ADSL USB DRIVER
|
||||||
M: Matthieu Castet <castet.matthieu@free.fr>
|
M: Matthieu Castet <castet.matthieu@free.fr>
|
||||||
|
@ -6594,6 +6611,23 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/*omap*/
|
F: arch/arm/*omap*/
|
||||||
F: drivers/i2c/busses/i2c-omap.c
|
F: drivers/i2c/busses/i2c-omap.c
|
||||||
|
F: drivers/irqchip/irq-omap-intc.c
|
||||||
|
F: drivers/mfd/*omap*.c
|
||||||
|
F: drivers/mfd/menelaus.c
|
||||||
|
F: drivers/mfd/palmas.c
|
||||||
|
F: drivers/mfd/tps65217.c
|
||||||
|
F: drivers/mfd/tps65218.c
|
||||||
|
F: drivers/mfd/tps65910.c
|
||||||
|
F: drivers/mfd/twl-core.[ch]
|
||||||
|
F: drivers/mfd/twl4030*.c
|
||||||
|
F: drivers/mfd/twl6030*.c
|
||||||
|
F: drivers/mfd/twl6040*.c
|
||||||
|
F: drivers/regulator/palmas-regulator*.c
|
||||||
|
F: drivers/regulator/pbias-regulator.c
|
||||||
|
F: drivers/regulator/tps65217-regulator.c
|
||||||
|
F: drivers/regulator/tps65218-regulator.c
|
||||||
|
F: drivers/regulator/tps65910-regulator.c
|
||||||
|
F: drivers/regulator/twl-regulator.c
|
||||||
F: include/linux/i2c-omap.h
|
F: include/linux/i2c-omap.h
|
||||||
|
|
||||||
OMAP DEVICE TREE SUPPORT
|
OMAP DEVICE TREE SUPPORT
|
||||||
|
@ -6604,6 +6638,9 @@ L: devicetree@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/boot/dts/*omap*
|
F: arch/arm/boot/dts/*omap*
|
||||||
F: arch/arm/boot/dts/*am3*
|
F: arch/arm/boot/dts/*am3*
|
||||||
|
F: arch/arm/boot/dts/*am4*
|
||||||
|
F: arch/arm/boot/dts/*am5*
|
||||||
|
F: arch/arm/boot/dts/*dra7*
|
||||||
|
|
||||||
OMAP CLOCK FRAMEWORK SUPPORT
|
OMAP CLOCK FRAMEWORK SUPPORT
|
||||||
M: Paul Walmsley <paul@pwsan.com>
|
M: Paul Walmsley <paul@pwsan.com>
|
||||||
|
@ -6851,11 +6888,12 @@ F: drivers/scsi/osd/
|
||||||
F: include/scsi/osd_*
|
F: include/scsi/osd_*
|
||||||
F: fs/exofs/
|
F: fs/exofs/
|
||||||
|
|
||||||
OVERLAYFS FILESYSTEM
|
OVERLAY FILESYSTEM
|
||||||
M: Miklos Szeredi <miklos@szeredi.hu>
|
M: Miklos Szeredi <miklos@szeredi.hu>
|
||||||
L: linux-fsdevel@vger.kernel.org
|
L: linux-unionfs@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: fs/overlayfs/*
|
F: fs/overlayfs/
|
||||||
F: Documentation/filesystems/overlayfs.txt
|
F: Documentation/filesystems/overlayfs.txt
|
||||||
|
|
||||||
P54 WIRELESS DRIVER
|
P54 WIRELESS DRIVER
|
||||||
|
@ -7179,6 +7217,7 @@ F: drivers/crypto/picoxcell*
|
||||||
|
|
||||||
PIN CONTROL SUBSYSTEM
|
PIN CONTROL SUBSYSTEM
|
||||||
M: Linus Walleij <linus.walleij@linaro.org>
|
M: Linus Walleij <linus.walleij@linaro.org>
|
||||||
|
L: linux-gpio@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/pinctrl/
|
F: drivers/pinctrl/
|
||||||
F: include/linux/pinctrl/
|
F: include/linux/pinctrl/
|
||||||
|
@ -8483,7 +8522,6 @@ F: arch/arm/mach-s3c24xx/bast-irq.c
|
||||||
TI DAVINCI MACHINE SUPPORT
|
TI DAVINCI MACHINE SUPPORT
|
||||||
M: Sekhar Nori <nsekhar@ti.com>
|
M: Sekhar Nori <nsekhar@ti.com>
|
||||||
M: Kevin Hilman <khilman@deeprootsystems.com>
|
M: Kevin Hilman <khilman@deeprootsystems.com>
|
||||||
L: davinci-linux-open-source@linux.davincidsp.com (moderated for non-subscribers)
|
|
||||||
T: git git://gitorious.org/linux-davinci/linux-davinci.git
|
T: git git://gitorious.org/linux-davinci/linux-davinci.git
|
||||||
Q: http://patchwork.kernel.org/project/linux-davinci/list/
|
Q: http://patchwork.kernel.org/project/linux-davinci/list/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -8493,7 +8531,6 @@ F: drivers/i2c/busses/i2c-davinci.c
|
||||||
TI DAVINCI SERIES MEDIA DRIVER
|
TI DAVINCI SERIES MEDIA DRIVER
|
||||||
M: Lad, Prabhakar <prabhakar.csengg@gmail.com>
|
M: Lad, Prabhakar <prabhakar.csengg@gmail.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
L: davinci-linux-open-source@linux.davincidsp.com (moderated for non-subscribers)
|
|
||||||
W: http://linuxtv.org/
|
W: http://linuxtv.org/
|
||||||
Q: http://patchwork.linuxtv.org/project/linux-media/list/
|
Q: http://patchwork.linuxtv.org/project/linux-media/list/
|
||||||
T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
|
T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
|
||||||
|
@ -9703,11 +9740,6 @@ S: Maintained
|
||||||
F: Documentation/hid/hiddev.txt
|
F: Documentation/hid/hiddev.txt
|
||||||
F: drivers/hid/usbhid/
|
F: drivers/hid/usbhid/
|
||||||
|
|
||||||
USB/IP DRIVERS
|
|
||||||
L: linux-usb@vger.kernel.org
|
|
||||||
S: Orphan
|
|
||||||
F: drivers/staging/usbip/
|
|
||||||
|
|
||||||
USB ISP116X DRIVER
|
USB ISP116X DRIVER
|
||||||
M: Olav Kongas <ok@artecdesign.ee>
|
M: Olav Kongas <ok@artecdesign.ee>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
|
|
7
Makefile
7
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 3
|
VERSION = 3
|
||||||
PATCHLEVEL = 18
|
PATCHLEVEL = 18
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION = -rc6
|
||||||
NAME = Diseased Newt
|
NAME = Diseased Newt
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -297,7 +297,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
|
||||||
|
|
||||||
HOSTCC = gcc
|
HOSTCC = gcc
|
||||||
HOSTCXX = g++
|
HOSTCXX = g++
|
||||||
HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
|
HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
|
||||||
HOSTCXXFLAGS = -O2
|
HOSTCXXFLAGS = -O2
|
||||||
|
|
||||||
ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
|
ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
|
||||||
|
@ -401,7 +401,8 @@ KBUILD_CPPFLAGS := -D__KERNEL__
|
||||||
KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
||||||
-fno-strict-aliasing -fno-common \
|
-fno-strict-aliasing -fno-common \
|
||||||
-Werror-implicit-function-declaration \
|
-Werror-implicit-function-declaration \
|
||||||
-Wno-format-security
|
-Wno-format-security \
|
||||||
|
-std=gnu89
|
||||||
|
|
||||||
KBUILD_AFLAGS_KERNEL :=
|
KBUILD_AFLAGS_KERNEL :=
|
||||||
KBUILD_CFLAGS_KERNEL :=
|
KBUILD_CFLAGS_KERNEL :=
|
||||||
|
|
|
@ -1187,7 +1187,7 @@ config DEBUG_UART_VIRT
|
||||||
default 0xf1c28000 if DEBUG_SUNXI_UART0
|
default 0xf1c28000 if DEBUG_SUNXI_UART0
|
||||||
default 0xf1c28400 if DEBUG_SUNXI_UART1
|
default 0xf1c28400 if DEBUG_SUNXI_UART1
|
||||||
default 0xf1f02800 if DEBUG_SUNXI_R_UART
|
default 0xf1f02800 if DEBUG_SUNXI_R_UART
|
||||||
default 0xf2100000 if DEBUG_PXA_UART1
|
default 0xf6200000 if DEBUG_PXA_UART1
|
||||||
default 0xf4090000 if ARCH_LPC32XX
|
default 0xf4090000 if ARCH_LPC32XX
|
||||||
default 0xf4200000 if ARCH_GEMINI
|
default 0xf4200000 if ARCH_GEMINI
|
||||||
default 0xf7000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
|
default 0xf7000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
|
||||||
|
|
|
@ -397,8 +397,7 @@ dtb_check_done:
|
||||||
add sp, sp, r6
|
add sp, sp, r6
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tst r4, #1
|
bl cache_clean_flush
|
||||||
bleq cache_clean_flush
|
|
||||||
|
|
||||||
adr r0, BSYM(restart)
|
adr r0, BSYM(restart)
|
||||||
add r0, r0, r6
|
add r0, r0, r6
|
||||||
|
@ -1047,6 +1046,8 @@ cache_clean_flush:
|
||||||
b call_cache_fn
|
b call_cache_fn
|
||||||
|
|
||||||
__armv4_mpu_cache_flush:
|
__armv4_mpu_cache_flush:
|
||||||
|
tst r4, #1
|
||||||
|
movne pc, lr
|
||||||
mov r2, #1
|
mov r2, #1
|
||||||
mov r3, #0
|
mov r3, #0
|
||||||
mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache
|
mcr p15, 0, ip, c7, c6, 0 @ invalidate D cache
|
||||||
|
@ -1064,6 +1065,8 @@ __armv4_mpu_cache_flush:
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
__fa526_cache_flush:
|
__fa526_cache_flush:
|
||||||
|
tst r4, #1
|
||||||
|
movne pc, lr
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
mcr p15, 0, r1, c7, c14, 0 @ clean and invalidate D cache
|
mcr p15, 0, r1, c7, c14, 0 @ clean and invalidate D cache
|
||||||
mcr p15, 0, r1, c7, c5, 0 @ flush I cache
|
mcr p15, 0, r1, c7, c5, 0 @ flush I cache
|
||||||
|
@ -1072,13 +1075,16 @@ __fa526_cache_flush:
|
||||||
|
|
||||||
__armv6_mmu_cache_flush:
|
__armv6_mmu_cache_flush:
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D
|
tst r4, #1
|
||||||
|
mcreq p15, 0, r1, c7, c14, 0 @ clean+invalidate D
|
||||||
mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB
|
mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB
|
||||||
mcr p15, 0, r1, c7, c15, 0 @ clean+invalidate unified
|
mcreq p15, 0, r1, c7, c15, 0 @ clean+invalidate unified
|
||||||
mcr p15, 0, r1, c7, c10, 4 @ drain WB
|
mcr p15, 0, r1, c7, c10, 4 @ drain WB
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
__armv7_mmu_cache_flush:
|
__armv7_mmu_cache_flush:
|
||||||
|
tst r4, #1
|
||||||
|
bne iflush
|
||||||
mrc p15, 0, r10, c0, c1, 5 @ read ID_MMFR1
|
mrc p15, 0, r10, c0, c1, 5 @ read ID_MMFR1
|
||||||
tst r10, #0xf << 16 @ hierarchical cache (ARMv7)
|
tst r10, #0xf << 16 @ hierarchical cache (ARMv7)
|
||||||
mov r10, #0
|
mov r10, #0
|
||||||
|
@ -1139,6 +1145,8 @@ iflush:
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
__armv5tej_mmu_cache_flush:
|
__armv5tej_mmu_cache_flush:
|
||||||
|
tst r4, #1
|
||||||
|
movne pc, lr
|
||||||
1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate D cache
|
1: mrc p15, 0, r15, c7, c14, 3 @ test,clean,invalidate D cache
|
||||||
bne 1b
|
bne 1b
|
||||||
mcr p15, 0, r0, c7, c5, 0 @ flush I cache
|
mcr p15, 0, r0, c7, c5, 0 @ flush I cache
|
||||||
|
@ -1146,6 +1154,8 @@ __armv5tej_mmu_cache_flush:
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
__armv4_mmu_cache_flush:
|
__armv4_mmu_cache_flush:
|
||||||
|
tst r4, #1
|
||||||
|
movne pc, lr
|
||||||
mov r2, #64*1024 @ default: 32K dcache size (*2)
|
mov r2, #64*1024 @ default: 32K dcache size (*2)
|
||||||
mov r11, #32 @ default: 32 byte line size
|
mov r11, #32 @ default: 32 byte line size
|
||||||
mrc p15, 0, r3, c0, c0, 1 @ read cache type
|
mrc p15, 0, r3, c0, c0, 1 @ read cache type
|
||||||
|
@ -1179,6 +1189,8 @@ no_cache_id:
|
||||||
|
|
||||||
__armv3_mmu_cache_flush:
|
__armv3_mmu_cache_flush:
|
||||||
__armv3_mpu_cache_flush:
|
__armv3_mpu_cache_flush:
|
||||||
|
tst r4, #1
|
||||||
|
movne pc, lr
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
mcr p15, 0, r1, c7, c0, 0 @ invalidate whole cache v3
|
mcr p15, 0, r1, c7, c0, 0 @ invalidate whole cache v3
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
|
@ -489,7 +489,7 @@
|
||||||
reg = <0x00060000 0x00020000>;
|
reg = <0x00060000 0x00020000>;
|
||||||
};
|
};
|
||||||
partition@4 {
|
partition@4 {
|
||||||
label = "NAND.u-boot-spl";
|
label = "NAND.u-boot-spl-os";
|
||||||
reg = <0x00080000 0x00040000>;
|
reg = <0x00080000 0x00040000>;
|
||||||
};
|
};
|
||||||
partition@5 {
|
partition@5 {
|
||||||
|
|
|
@ -291,8 +291,8 @@
|
||||||
dcdc3: regulator-dcdc3 {
|
dcdc3: regulator-dcdc3 {
|
||||||
compatible = "ti,tps65218-dcdc3";
|
compatible = "ti,tps65218-dcdc3";
|
||||||
regulator-name = "vdcdc3";
|
regulator-name = "vdcdc3";
|
||||||
regulator-min-microvolt = <1350000>;
|
regulator-min-microvolt = <1500000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
|
@ -363,8 +363,8 @@
|
||||||
dcdc3: regulator-dcdc3 {
|
dcdc3: regulator-dcdc3 {
|
||||||
compatible = "ti,tps65218-dcdc3";
|
compatible = "ti,tps65218-dcdc3";
|
||||||
regulator-name = "vdds_ddr";
|
regulator-name = "vdds_ddr";
|
||||||
regulator-min-microvolt = <1350000>;
|
regulator-min-microvolt = <1500000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
|
@ -358,8 +358,8 @@
|
||||||
dcdc3: regulator-dcdc3 {
|
dcdc3: regulator-dcdc3 {
|
||||||
compatible = "ti,tps65218-dcdc3";
|
compatible = "ti,tps65218-dcdc3";
|
||||||
regulator-name = "vdcdc3";
|
regulator-name = "vdcdc3";
|
||||||
regulator-min-microvolt = <1350000>;
|
regulator-min-microvolt = <1500000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1500000>;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
|
@ -433,7 +433,7 @@
|
||||||
clocks = <&cpg_clocks R8A7740_CLK_S>,
|
clocks = <&cpg_clocks R8A7740_CLK_S>,
|
||||||
<&cpg_clocks R8A7740_CLK_S>, <&sub_clk>,
|
<&cpg_clocks R8A7740_CLK_S>, <&sub_clk>,
|
||||||
<&cpg_clocks R8A7740_CLK_B>,
|
<&cpg_clocks R8A7740_CLK_B>,
|
||||||
<&sub_clk>, <&sub_clk>,
|
<&cpg_clocks R8A7740_CLK_HPP>, <&sub_clk>,
|
||||||
<&cpg_clocks R8A7740_CLK_B>;
|
<&cpg_clocks R8A7740_CLK_B>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
renesas,clock-indices = <
|
renesas,clock-indices = <
|
||||||
|
|
|
@ -666,9 +666,9 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-output-names = "sd2";
|
clock-output-names = "sd2";
|
||||||
};
|
};
|
||||||
sd3_clk: sd3_clk@e615007c {
|
sd3_clk: sd3_clk@e615026c {
|
||||||
compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
|
compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
|
||||||
reg = <0 0xe615007c 0 4>;
|
reg = <0 0xe615026c 0 4>;
|
||||||
clocks = <&pll1_div2_clk>;
|
clocks = <&pll1_div2_clk>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-output-names = "sd3";
|
clock-output-names = "sd3";
|
||||||
|
|
|
@ -12,5 +12,5 @@
|
||||||
#include "sama5d3_uart.dtsi"
|
#include "sama5d3_uart.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "atmel,samad31", "atmel,sama5d3", "atmel,sama5";
|
compatible = "atmel,sama5d31", "atmel,sama5d3", "atmel,sama5";
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,5 +10,5 @@
|
||||||
#include "sama5d3_gmac.dtsi"
|
#include "sama5d3_gmac.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "atmel,samad33", "atmel,sama5d3", "atmel,sama5";
|
compatible = "atmel,sama5d33", "atmel,sama5d3", "atmel,sama5";
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,5 +12,5 @@
|
||||||
#include "sama5d3_mci2.dtsi"
|
#include "sama5d3_mci2.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "atmel,samad34", "atmel,sama5d3", "atmel,sama5";
|
compatible = "atmel,sama5d34", "atmel,sama5d3", "atmel,sama5";
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,5 +14,5 @@
|
||||||
#include "sama5d3_tcb1.dtsi"
|
#include "sama5d3_tcb1.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "atmel,samad35", "atmel,sama5d3", "atmel,sama5";
|
compatible = "atmel,sama5d35", "atmel,sama5d3", "atmel,sama5";
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,5 +16,5 @@
|
||||||
#include "sama5d3_uart.dtsi"
|
#include "sama5d3_uart.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "atmel,samad36", "atmel,sama5d3", "atmel,sama5";
|
compatible = "atmel,sama5d36", "atmel,sama5d3", "atmel,sama5";
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
compatible = "atmel,samad3xcm", "atmel,sama5d3", "atmel,sama5";
|
compatible = "atmel,sama5d3xcm", "atmel,sama5d3", "atmel,sama5";
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "console=ttyS0,115200 rootfstype=ubifs ubi.mtd=5 root=ubi0:rootfs";
|
bootargs = "console=ttyS0,115200 rootfstype=ubifs ubi.mtd=5 root=ubi0:rootfs";
|
||||||
|
|
|
@ -361,6 +361,10 @@
|
||||||
clocks = <&ahb1_gates 6>;
|
clocks = <&ahb1_gates 6>;
|
||||||
resets = <&ahb1_rst 6>;
|
resets = <&ahb1_rst 6>;
|
||||||
#dma-cells = <1>;
|
#dma-cells = <1>;
|
||||||
|
|
||||||
|
/* DMA controller requires AHB1 clocked from PLL6 */
|
||||||
|
assigned-clocks = <&ahb1_mux>;
|
||||||
|
assigned-clock-parents = <&pll6>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc0: mmc@01c0f000 {
|
mmc0: mmc@01c0f000 {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps65913@58";
|
rtc0 = "/i2c@7000d000/tps65913@58";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -15,6 +15,10 @@
|
||||||
linux,initrd-end = <0x82800000>;
|
linux,initrd-end = <0x82800000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uartd;
|
||||||
|
};
|
||||||
|
|
||||||
firmware {
|
firmware {
|
||||||
trusted-foundations {
|
trusted-foundations {
|
||||||
compatible = "tlm,trusted-foundations";
|
compatible = "tlm,trusted-foundations";
|
||||||
|
@ -916,8 +920,6 @@
|
||||||
regulator-name = "vddio-sdmmc3";
|
regulator-name = "vddio-sdmmc3";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ldousb {
|
ldousb {
|
||||||
|
@ -962,7 +964,7 @@
|
||||||
sdhci@78000400 {
|
sdhci@78000400 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
vmmc-supply = <&vddio_sdmmc3>;
|
vqmmc-supply = <&vddio_sdmmc3>;
|
||||||
cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
|
||||||
power-gpios = <&gpio TEGRA_GPIO(H, 0) GPIO_ACTIVE_HIGH>;
|
power-gpios = <&gpio TEGRA_GPIO(H, 0) GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
@ -971,7 +973,6 @@
|
||||||
sdhci@78000600 {
|
sdhci@78000600 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
vmmc-supply = <&vdd_1v8>;
|
|
||||||
non-removable;
|
non-removable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,10 @@
|
||||||
linux,initrd-end = <0x82800000>;
|
linux,initrd-end = <0x82800000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uartd;
|
||||||
|
};
|
||||||
|
|
||||||
firmware {
|
firmware {
|
||||||
trusted-foundations {
|
trusted-foundations {
|
||||||
compatible = "tlm,trusted-foundations";
|
compatible = "tlm,trusted-foundations";
|
||||||
|
@ -240,7 +244,6 @@
|
||||||
sdhci@78000600 {
|
sdhci@78000600 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
vmmc-supply = <&vdd_1v8>;
|
|
||||||
non-removable;
|
non-removable;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,13 +9,6 @@
|
||||||
compatible = "nvidia,tegra114";
|
compatible = "nvidia,tegra114";
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
|
|
||||||
aliases {
|
|
||||||
serial0 = &uarta;
|
|
||||||
serial1 = &uartb;
|
|
||||||
serial2 = &uartc;
|
|
||||||
serial3 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
host1x@50000000 {
|
host1x@50000000 {
|
||||||
compatible = "nvidia,tegra114-host1x", "simple-bus";
|
compatible = "nvidia,tegra114-host1x", "simple-bus";
|
||||||
reg = <0x50000000 0x00028000>;
|
reg = <0x50000000 0x00028000>;
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@0,7000d000/pmic@40";
|
rtc0 = "/i2c@0,7000d000/pmic@40";
|
||||||
rtc1 = "/rtc@0,7000e000";
|
rtc1 = "/rtc@0,7000e000";
|
||||||
|
serial0 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@0,7000d000/pmic@40";
|
rtc0 = "/i2c@0,7000d000/pmic@40";
|
||||||
rtc1 = "/rtc@0,7000e000";
|
rtc1 = "/rtc@0,7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@0,7000d000/pmic@40";
|
rtc0 = "/i2c@0,7000d000/pmic@40";
|
||||||
rtc1 = "/rtc@0,7000e000";
|
rtc1 = "/rtc@0,7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -286,7 +286,7 @@
|
||||||
* the APB DMA based serial driver, the comptible is
|
* the APB DMA based serial driver, the comptible is
|
||||||
* "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart".
|
* "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart".
|
||||||
*/
|
*/
|
||||||
serial@0,70006000 {
|
uarta: serial@0,70006000 {
|
||||||
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
||||||
reg = <0x0 0x70006000 0x0 0x40>;
|
reg = <0x0 0x70006000 0x0 0x40>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
|
@ -299,7 +299,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@0,70006040 {
|
uartb: serial@0,70006040 {
|
||||||
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
||||||
reg = <0x0 0x70006040 0x0 0x40>;
|
reg = <0x0 0x70006040 0x0 0x40>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
|
@ -312,7 +312,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@0,70006200 {
|
uartc: serial@0,70006200 {
|
||||||
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
||||||
reg = <0x0 0x70006200 0x0 0x40>;
|
reg = <0x0 0x70006200 0x0 0x40>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
|
@ -325,7 +325,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@0,70006300 {
|
uartd: serial@0,70006300 {
|
||||||
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
|
||||||
reg = <0x0 0x70006300 0x0 0x40>;
|
reg = <0x0 0x70006300 0x0 0x40>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps6586x@34";
|
rtc0 = "/i2c@7000d000/tps6586x@34";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -6,6 +6,11 @@
|
||||||
model = "Toradex Colibri T20 512MB on Iris";
|
model = "Toradex Colibri T20 512MB on Iris";
|
||||||
compatible = "toradex,iris", "toradex,colibri_t20-512", "nvidia,tegra20";
|
compatible = "toradex,iris", "toradex,colibri_t20-512", "nvidia,tegra20";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uarta;
|
||||||
|
serial1 = &uartd;
|
||||||
|
};
|
||||||
|
|
||||||
host1x@50000000 {
|
host1x@50000000 {
|
||||||
hdmi@54280000 {
|
hdmi@54280000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -6,6 +6,10 @@
|
||||||
model = "Avionic Design Medcom-Wide board";
|
model = "Avionic Design Medcom-Wide board";
|
||||||
compatible = "ad,medcom-wide", "ad,tamonten", "nvidia,tegra20";
|
compatible = "ad,medcom-wide", "ad,tamonten", "nvidia,tegra20";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
serial0 = &uartd;
|
||||||
|
};
|
||||||
|
|
||||||
pwm@7000a000 {
|
pwm@7000a000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps6586x@34";
|
rtc0 = "/i2c@7000d000/tps6586x@34";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
|
serial1 = &uartc;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps6586x@34";
|
rtc0 = "/i2c@7000d000/tps6586x@34";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps6586x@34";
|
rtc0 = "/i2c@7000d000/tps6586x@34";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000c500/rtc@56";
|
rtc0 = "/i2c@7000c500/rtc@56";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps6586x@34";
|
rtc0 = "/i2c@7000d000/tps6586x@34";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/max8907@3c";
|
rtc0 = "/i2c@7000d000/max8907@3c";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -9,14 +9,6 @@
|
||||||
compatible = "nvidia,tegra20";
|
compatible = "nvidia,tegra20";
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
|
|
||||||
aliases {
|
|
||||||
serial0 = &uarta;
|
|
||||||
serial1 = &uartb;
|
|
||||||
serial2 = &uartc;
|
|
||||||
serial3 = &uartd;
|
|
||||||
serial4 = &uarte;
|
|
||||||
};
|
|
||||||
|
|
||||||
host1x@50000000 {
|
host1x@50000000 {
|
||||||
compatible = "nvidia,tegra20-host1x", "simple-bus";
|
compatible = "nvidia,tegra20-host1x", "simple-bus";
|
||||||
reg = <0x50000000 0x00024000>;
|
reg = <0x50000000 0x00024000>;
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
rtc0 = "/i2c@7000c000/rtc@68";
|
rtc0 = "/i2c@7000c000/rtc@68";
|
||||||
rtc1 = "/i2c@7000d000/tps65911@2d";
|
rtc1 = "/i2c@7000d000/tps65911@2d";
|
||||||
rtc2 = "/rtc@7000e000";
|
rtc2 = "/rtc@7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
|
serial1 = &uartb;
|
||||||
|
serial2 = &uartc;
|
||||||
|
serial3 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
pcie-controller@00003000 {
|
pcie-controller@00003000 {
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps65911@2d";
|
rtc0 = "/i2c@7000d000/tps65911@2d";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -30,6 +30,8 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = "/i2c@7000d000/tps65911@2d";
|
rtc0 = "/i2c@7000d000/tps65911@2d";
|
||||||
rtc1 = "/rtc@7000e000";
|
rtc1 = "/rtc@7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
|
serial1 = &uartc;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
rtc0 = "/i2c@7000c000/rtc@68";
|
rtc0 = "/i2c@7000c000/rtc@68";
|
||||||
rtc1 = "/i2c@7000d000/tps65911@2d";
|
rtc1 = "/i2c@7000d000/tps65911@2d";
|
||||||
rtc2 = "/rtc@7000e000";
|
rtc2 = "/rtc@7000e000";
|
||||||
|
serial0 = &uarta;
|
||||||
|
serial1 = &uartb;
|
||||||
|
serial2 = &uartd;
|
||||||
};
|
};
|
||||||
|
|
||||||
host1x@50000000 {
|
host1x@50000000 {
|
||||||
|
|
|
@ -9,14 +9,6 @@
|
||||||
compatible = "nvidia,tegra30";
|
compatible = "nvidia,tegra30";
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
|
|
||||||
aliases {
|
|
||||||
serial0 = &uarta;
|
|
||||||
serial1 = &uartb;
|
|
||||||
serial2 = &uartc;
|
|
||||||
serial3 = &uartd;
|
|
||||||
serial4 = &uarte;
|
|
||||||
};
|
|
||||||
|
|
||||||
pcie-controller@00003000 {
|
pcie-controller@00003000 {
|
||||||
compatible = "nvidia,tegra30-pcie";
|
compatible = "nvidia,tegra30-pcie";
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
|
|
|
@ -33,6 +33,13 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&esdhc1 {
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_esdhc1>;
|
||||||
|
bus-width = <4>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&fec1 {
|
&fec1 {
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
|
@ -42,6 +49,18 @@
|
||||||
|
|
||||||
&iomuxc {
|
&iomuxc {
|
||||||
vf610-cosmic {
|
vf610-cosmic {
|
||||||
|
pinctrl_esdhc1: esdhc1grp {
|
||||||
|
fsl,pins = <
|
||||||
|
VF610_PAD_PTA24__ESDHC1_CLK 0x31ef
|
||||||
|
VF610_PAD_PTA25__ESDHC1_CMD 0x31ef
|
||||||
|
VF610_PAD_PTA26__ESDHC1_DAT0 0x31ef
|
||||||
|
VF610_PAD_PTA27__ESDHC1_DAT1 0x31ef
|
||||||
|
VF610_PAD_PTA28__ESDHC1_DATA2 0x31ef
|
||||||
|
VF610_PAD_PTA29__ESDHC1_DAT3 0x31ef
|
||||||
|
VF610_PAD_PTB28__GPIO_98 0x219d
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
pinctrl_fec1: fec1grp {
|
pinctrl_fec1: fec1grp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
VF610_PAD_PTC9__ENET_RMII1_MDC 0x30d2
|
VF610_PAD_PTC9__ENET_RMII1_MDC 0x30d2
|
||||||
|
|
|
@ -34,6 +34,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&clkc {
|
||||||
|
fclk-enable = <0xf>;
|
||||||
|
};
|
||||||
|
|
||||||
&gem0 {
|
&gem0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii-id";
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/edma.h>
|
#include <linux/edma.h>
|
||||||
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
#include <linux/of_device.h>
|
#include <linux/of_device.h>
|
||||||
#include <linux/of_dma.h>
|
#include <linux/of_dma.h>
|
||||||
|
@ -1623,6 +1624,11 @@ static int edma_probe(struct platform_device *pdev)
|
||||||
struct device_node *node = pdev->dev.of_node;
|
struct device_node *node = pdev->dev.of_node;
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
int ret;
|
int ret;
|
||||||
|
struct platform_device_info edma_dev_info = {
|
||||||
|
.name = "edma-dma-engine",
|
||||||
|
.dma_mask = DMA_BIT_MASK(32),
|
||||||
|
.parent = &pdev->dev,
|
||||||
|
};
|
||||||
|
|
||||||
if (node) {
|
if (node) {
|
||||||
/* Check if this is a second instance registered */
|
/* Check if this is a second instance registered */
|
||||||
|
@ -1793,6 +1799,9 @@ static int edma_probe(struct platform_device *pdev)
|
||||||
edma_write_array(j, EDMA_QRAE, i, 0x0);
|
edma_write_array(j, EDMA_QRAE, i, 0x0);
|
||||||
}
|
}
|
||||||
arch_num_cc++;
|
arch_num_cc++;
|
||||||
|
|
||||||
|
edma_dev_info.id = j;
|
||||||
|
platform_device_register_full(&edma_dev_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -97,6 +97,7 @@ CONFIG_SERIAL_IMX_CONSOLE=y
|
||||||
# CONFIG_HW_RANDOM is not set
|
# CONFIG_HW_RANDOM is not set
|
||||||
CONFIG_I2C_CHARDEV=y
|
CONFIG_I2C_CHARDEV=y
|
||||||
CONFIG_I2C_IMX=y
|
CONFIG_I2C_IMX=y
|
||||||
|
CONFIG_SPI=y
|
||||||
CONFIG_SPI_IMX=y
|
CONFIG_SPI_IMX=y
|
||||||
CONFIG_SPI_SPIDEV=y
|
CONFIG_SPI_SPIDEV=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
|
|
@ -158,6 +158,7 @@ CONFIG_I2C_CHARDEV=y
|
||||||
CONFIG_I2C_ALGOPCF=m
|
CONFIG_I2C_ALGOPCF=m
|
||||||
CONFIG_I2C_ALGOPCA=m
|
CONFIG_I2C_ALGOPCA=m
|
||||||
CONFIG_I2C_IMX=y
|
CONFIG_I2C_IMX=y
|
||||||
|
CONFIG_SPI=y
|
||||||
CONFIG_SPI_IMX=y
|
CONFIG_SPI_IMX=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
CONFIG_GPIO_MC9S08DZ60=y
|
CONFIG_GPIO_MC9S08DZ60=y
|
||||||
|
|
|
@ -217,6 +217,7 @@ CONFIG_I2C_CADENCE=y
|
||||||
CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
||||||
CONFIG_I2C_EXYNOS5=y
|
CONFIG_I2C_EXYNOS5=y
|
||||||
CONFIG_I2C_MV64XXX=y
|
CONFIG_I2C_MV64XXX=y
|
||||||
|
CONFIG_I2C_S3C2410=y
|
||||||
CONFIG_I2C_SIRF=y
|
CONFIG_I2C_SIRF=y
|
||||||
CONFIG_I2C_TEGRA=y
|
CONFIG_I2C_TEGRA=y
|
||||||
CONFIG_I2C_ST=y
|
CONFIG_I2C_ST=y
|
||||||
|
@ -235,6 +236,7 @@ CONFIG_SPI_TEGRA20_SLINK=y
|
||||||
CONFIG_SPI_XILINX=y
|
CONFIG_SPI_XILINX=y
|
||||||
CONFIG_PINCTRL_AS3722=y
|
CONFIG_PINCTRL_AS3722=y
|
||||||
CONFIG_PINCTRL_PALMAS=y
|
CONFIG_PINCTRL_PALMAS=y
|
||||||
|
CONFIG_PINCTRL_APQ8084=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
CONFIG_GPIO_GENERIC_PLATFORM=y
|
CONFIG_GPIO_GENERIC_PLATFORM=y
|
||||||
CONFIG_GPIO_DWAPB=y
|
CONFIG_GPIO_DWAPB=y
|
||||||
|
@ -411,6 +413,7 @@ CONFIG_NVEC_POWER=y
|
||||||
CONFIG_NVEC_PAZ00=y
|
CONFIG_NVEC_PAZ00=y
|
||||||
CONFIG_QCOM_GSBI=y
|
CONFIG_QCOM_GSBI=y
|
||||||
CONFIG_COMMON_CLK_QCOM=y
|
CONFIG_COMMON_CLK_QCOM=y
|
||||||
|
CONFIG_APQ_MMCC_8084=y
|
||||||
CONFIG_MSM_GCC_8660=y
|
CONFIG_MSM_GCC_8660=y
|
||||||
CONFIG_MSM_MMCC_8960=y
|
CONFIG_MSM_MMCC_8960=y
|
||||||
CONFIG_MSM_MMCC_8974=y
|
CONFIG_MSM_MMCC_8974=y
|
||||||
|
|
|
@ -86,7 +86,6 @@ CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
CONFIG_IP_PNP_RARP=y
|
CONFIG_IP_PNP_RARP=y
|
||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
CONFIG_IPV6=y
|
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
CONFIG_CAN=m
|
CONFIG_CAN=m
|
||||||
CONFIG_CAN_C_CAN=m
|
CONFIG_CAN_C_CAN=m
|
||||||
|
@ -112,6 +111,7 @@ CONFIG_MTD_OOPS=y
|
||||||
CONFIG_MTD_CFI=y
|
CONFIG_MTD_CFI=y
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
CONFIG_MTD_CFI_INTELEXT=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_NAND=y
|
||||||
|
CONFIG_MTD_NAND_ECC_BCH=y
|
||||||
CONFIG_MTD_NAND_OMAP2=y
|
CONFIG_MTD_NAND_OMAP2=y
|
||||||
CONFIG_MTD_ONENAND=y
|
CONFIG_MTD_ONENAND=y
|
||||||
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
CONFIG_MTD_ONENAND_VERIFY_WRITE=y
|
||||||
|
@ -317,7 +317,7 @@ CONFIG_EXT4_FS=y
|
||||||
CONFIG_FANOTIFY=y
|
CONFIG_FANOTIFY=y
|
||||||
CONFIG_QUOTA=y
|
CONFIG_QUOTA=y
|
||||||
CONFIG_QFMT_V2=y
|
CONFIG_QFMT_V2=y
|
||||||
CONFIG_AUTOFS4_FS=y
|
CONFIG_AUTOFS4_FS=m
|
||||||
CONFIG_MSDOS_FS=y
|
CONFIG_MSDOS_FS=y
|
||||||
CONFIG_VFAT_FS=y
|
CONFIG_VFAT_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_FHANDLE=y
|
||||||
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_IKCONFIG=y
|
CONFIG_IKCONFIG=y
|
||||||
CONFIG_IKCONFIG_PROC=y
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
|
@ -11,23 +12,17 @@ CONFIG_PROFILING=y
|
||||||
CONFIG_OPROFILE=y
|
CONFIG_OPROFILE=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_HOTPLUG=y
|
|
||||||
# CONFIG_LBDAF is not set
|
# CONFIG_LBDAF is not set
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
# CONFIG_IOSCHED_DEADLINE is not set
|
# CONFIG_IOSCHED_DEADLINE is not set
|
||||||
# CONFIG_IOSCHED_CFQ is not set
|
# CONFIG_IOSCHED_CFQ is not set
|
||||||
CONFIG_ARCH_SOCFPGA=y
|
CONFIG_ARCH_SOCFPGA=y
|
||||||
CONFIG_MACH_SOCFPGA_CYCLONE5=y
|
|
||||||
CONFIG_ARM_THUMBEE=y
|
CONFIG_ARM_THUMBEE=y
|
||||||
# CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA is not set
|
|
||||||
# CONFIG_CACHE_L2X0 is not set
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
CONFIG_NR_CPUS=2
|
CONFIG_NR_CPUS=2
|
||||||
CONFIG_AEABI=y
|
CONFIG_AEABI=y
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
CONFIG_CMDLINE=""
|
|
||||||
CONFIG_VFP=y
|
CONFIG_VFP=y
|
||||||
CONFIG_NEON=y
|
CONFIG_NEON=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
|
@ -41,38 +36,30 @@ CONFIG_IP_PNP=y
|
||||||
CONFIG_IP_PNP_DHCP=y
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
CONFIG_IP_PNP_RARP=y
|
CONFIG_IP_PNP_RARP=y
|
||||||
|
CONFIG_IPV6=y
|
||||||
|
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
||||||
|
CONFIG_VLAN_8021Q=y
|
||||||
|
CONFIG_VLAN_8021Q_GVRP=y
|
||||||
CONFIG_CAN=y
|
CONFIG_CAN=y
|
||||||
CONFIG_CAN_RAW=y
|
|
||||||
CONFIG_CAN_BCM=y
|
|
||||||
CONFIG_CAN_GW=y
|
|
||||||
CONFIG_CAN_DEV=y
|
|
||||||
CONFIG_CAN_CALC_BITTIMING=y
|
|
||||||
CONFIG_CAN_C_CAN=y
|
CONFIG_CAN_C_CAN=y
|
||||||
CONFIG_CAN_C_CAN_PLATFORM=y
|
CONFIG_CAN_C_CAN_PLATFORM=y
|
||||||
CONFIG_CAN_DEBUG_DEVICES=y
|
CONFIG_CAN_DEBUG_DEVICES=y
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_DEVTMPFS=y
|
CONFIG_DEVTMPFS=y
|
||||||
CONFIG_PROC_DEVICETREE=y
|
CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=2
|
CONFIG_BLK_DEV_RAM_COUNT=2
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
|
CONFIG_SRAM=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
# CONFIG_SCSI_PROC_FS is not set
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
# CONFIG_SCSI_LOWLEVEL is not set
|
# CONFIG_SCSI_LOWLEVEL is not set
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_STMMAC_ETH=y
|
CONFIG_STMMAC_ETH=y
|
||||||
CONFIG_MICREL_PHY=y
|
|
||||||
# CONFIG_STMMAC_PHY_ID_ZERO_WORKAROUND is not set
|
|
||||||
CONFIG_INPUT_EVDEV=y
|
|
||||||
CONFIG_DWMAC_SOCFPGA=y
|
CONFIG_DWMAC_SOCFPGA=y
|
||||||
CONFIG_PPS=y
|
CONFIG_MICREL_PHY=y
|
||||||
CONFIG_NETWORK_PHY_TIMESTAMPING=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
CONFIG_PTP_1588_CLOCK=y
|
|
||||||
CONFIG_VLAN_8021Q=y
|
|
||||||
CONFIG_VLAN_8021Q_GVRP=y
|
|
||||||
CONFIG_GARP=y
|
|
||||||
CONFIG_IPV6=y
|
|
||||||
# CONFIG_SERIO_SERPORT is not set
|
# CONFIG_SERIO_SERPORT is not set
|
||||||
CONFIG_SERIO_AMBAKMI=y
|
CONFIG_SERIO_AMBAKMI=y
|
||||||
CONFIG_LEGACY_PTY_COUNT=16
|
CONFIG_LEGACY_PTY_COUNT=16
|
||||||
|
@ -81,45 +68,43 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=2
|
CONFIG_SERIAL_8250_NR_UARTS=2
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
|
||||||
CONFIG_SERIAL_8250_DW=y
|
CONFIG_SERIAL_8250_DW=y
|
||||||
|
CONFIG_I2C=y
|
||||||
|
CONFIG_I2C_CHARDEV=y
|
||||||
|
CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
||||||
CONFIG_GPIOLIB=y
|
CONFIG_GPIOLIB=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
CONFIG_GPIO_DWAPB=y
|
CONFIG_GPIO_DWAPB=y
|
||||||
# CONFIG_RTC_HCTOSYS is not set
|
CONFIG_PMBUS=y
|
||||||
|
CONFIG_SENSORS_LTC2978=y
|
||||||
|
CONFIG_SENSORS_LTC2978_REGULATOR=y
|
||||||
CONFIG_WATCHDOG=y
|
CONFIG_WATCHDOG=y
|
||||||
CONFIG_DW_WATCHDOG=y
|
CONFIG_DW_WATCHDOG=y
|
||||||
|
CONFIG_REGULATOR=y
|
||||||
|
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_DWC2=y
|
||||||
|
CONFIG_USB_DWC2_HOST=y
|
||||||
|
CONFIG_MMC=y
|
||||||
|
CONFIG_MMC_DW=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT2_FS_XATTR=y
|
CONFIG_EXT2_FS_XATTR=y
|
||||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
CONFIG_EXT2_FS_POSIX_ACL=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_EXT4_FS=y
|
||||||
CONFIG_ROOT_NFS=y
|
|
||||||
# CONFIG_DNOTIFY is not set
|
|
||||||
# CONFIG_INOTIFY_USER is not set
|
|
||||||
CONFIG_FHANDLE=y
|
|
||||||
CONFIG_VFAT_FS=y
|
CONFIG_VFAT_FS=y
|
||||||
CONFIG_NTFS_FS=y
|
CONFIG_NTFS_FS=y
|
||||||
CONFIG_NTFS_RW=y
|
CONFIG_NTFS_RW=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_CONFIGFS_FS=y
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
|
CONFIG_PRINTK_TIME=y
|
||||||
|
CONFIG_DEBUG_INFO=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
CONFIG_ENABLE_DEFAULT_TRACERS=y
|
CONFIG_ENABLE_DEFAULT_TRACERS=y
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
CONFIG_XZ_DEC=y
|
CONFIG_XZ_DEC=y
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_DESIGNWARE_CORE=y
|
|
||||||
CONFIG_I2C_DESIGNWARE_PLATFORM=y
|
|
||||||
CONFIG_I2C_CHARDEV=y
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_MMC_DW=y
|
|
||||||
CONFIG_PM=y
|
|
||||||
CONFIG_SUSPEND=y
|
|
||||||
CONFIG_MMC_UNSAFE_RESUME=y
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_DWC2=y
|
|
||||||
CONFIG_USB_DWC2_HOST=y
|
|
||||||
CONFIG_USB_DWC2_PLATFORM=y
|
|
||||||
|
|
|
@ -58,8 +58,14 @@
|
||||||
#define PFD_PLL1_BASE (anatop_base + 0x2b0)
|
#define PFD_PLL1_BASE (anatop_base + 0x2b0)
|
||||||
#define PFD_PLL2_BASE (anatop_base + 0x100)
|
#define PFD_PLL2_BASE (anatop_base + 0x100)
|
||||||
#define PFD_PLL3_BASE (anatop_base + 0xf0)
|
#define PFD_PLL3_BASE (anatop_base + 0xf0)
|
||||||
|
#define PLL1_CTRL (anatop_base + 0x270)
|
||||||
|
#define PLL2_CTRL (anatop_base + 0x30)
|
||||||
#define PLL3_CTRL (anatop_base + 0x10)
|
#define PLL3_CTRL (anatop_base + 0x10)
|
||||||
|
#define PLL4_CTRL (anatop_base + 0x70)
|
||||||
|
#define PLL5_CTRL (anatop_base + 0xe0)
|
||||||
|
#define PLL6_CTRL (anatop_base + 0xa0)
|
||||||
#define PLL7_CTRL (anatop_base + 0x20)
|
#define PLL7_CTRL (anatop_base + 0x20)
|
||||||
|
#define ANA_MISC1 (anatop_base + 0x160)
|
||||||
|
|
||||||
static void __iomem *anatop_base;
|
static void __iomem *anatop_base;
|
||||||
static void __iomem *ccm_base;
|
static void __iomem *ccm_base;
|
||||||
|
@ -67,25 +73,34 @@ static void __iomem *ccm_base;
|
||||||
/* sources for multiplexer clocks, this is used multiple times */
|
/* sources for multiplexer clocks, this is used multiple times */
|
||||||
static const char *fast_sels[] = { "firc", "fxosc", };
|
static const char *fast_sels[] = { "firc", "fxosc", };
|
||||||
static const char *slow_sels[] = { "sirc_32k", "sxosc", };
|
static const char *slow_sels[] = { "sirc_32k", "sxosc", };
|
||||||
static const char *pll1_sels[] = { "pll1_main", "pll1_pfd1", "pll1_pfd2", "pll1_pfd3", "pll1_pfd4", };
|
static const char *pll1_sels[] = { "pll1_sys", "pll1_pfd1", "pll1_pfd2", "pll1_pfd3", "pll1_pfd4", };
|
||||||
static const char *pll2_sels[] = { "pll2_main", "pll2_pfd1", "pll2_pfd2", "pll2_pfd3", "pll2_pfd4", };
|
static const char *pll2_sels[] = { "pll2_bus", "pll2_pfd1", "pll2_pfd2", "pll2_pfd3", "pll2_pfd4", };
|
||||||
static const char *sys_sels[] = { "fast_clk_sel", "slow_clk_sel", "pll2_pfd_sel", "pll2_main", "pll1_pfd_sel", "pll3_main", };
|
static const char *pll_bypass_src_sels[] = { "fast_clk_sel", "lvds1_in", };
|
||||||
|
static const char *pll1_bypass_sels[] = { "pll1", "pll1_bypass_src", };
|
||||||
|
static const char *pll2_bypass_sels[] = { "pll2", "pll2_bypass_src", };
|
||||||
|
static const char *pll3_bypass_sels[] = { "pll3", "pll3_bypass_src", };
|
||||||
|
static const char *pll4_bypass_sels[] = { "pll4", "pll4_bypass_src", };
|
||||||
|
static const char *pll5_bypass_sels[] = { "pll5", "pll5_bypass_src", };
|
||||||
|
static const char *pll6_bypass_sels[] = { "pll6", "pll6_bypass_src", };
|
||||||
|
static const char *pll7_bypass_sels[] = { "pll7", "pll7_bypass_src", };
|
||||||
|
static const char *sys_sels[] = { "fast_clk_sel", "slow_clk_sel", "pll2_pfd_sel", "pll2_bus", "pll1_pfd_sel", "pll3_usb_otg", };
|
||||||
static const char *ddr_sels[] = { "pll2_pfd2", "sys_sel", };
|
static const char *ddr_sels[] = { "pll2_pfd2", "sys_sel", };
|
||||||
static const char *rmii_sels[] = { "enet_ext", "audio_ext", "enet_50m", "enet_25m", };
|
static const char *rmii_sels[] = { "enet_ext", "audio_ext", "enet_50m", "enet_25m", };
|
||||||
static const char *enet_ts_sels[] = { "enet_ext", "fxosc", "audio_ext", "usb", "enet_ts", "enet_25m", "enet_50m", };
|
static const char *enet_ts_sels[] = { "enet_ext", "fxosc", "audio_ext", "usb", "enet_ts", "enet_25m", "enet_50m", };
|
||||||
static const char *esai_sels[] = { "audio_ext", "mlb", "spdif_rx", "pll4_main_div", };
|
static const char *esai_sels[] = { "audio_ext", "mlb", "spdif_rx", "pll4_audio_div", };
|
||||||
static const char *sai_sels[] = { "audio_ext", "mlb", "spdif_rx", "pll4_main_div", };
|
static const char *sai_sels[] = { "audio_ext", "mlb", "spdif_rx", "pll4_audio_div", };
|
||||||
static const char *nfc_sels[] = { "platform_bus", "pll1_pfd1", "pll3_pfd1", "pll3_pfd3", };
|
static const char *nfc_sels[] = { "platform_bus", "pll1_pfd1", "pll3_pfd1", "pll3_pfd3", };
|
||||||
static const char *qspi_sels[] = { "pll3_main", "pll3_pfd4", "pll2_pfd4", "pll1_pfd4", };
|
static const char *qspi_sels[] = { "pll3_usb_otg", "pll3_pfd4", "pll2_pfd4", "pll1_pfd4", };
|
||||||
static const char *esdhc_sels[] = { "pll3_main", "pll3_pfd3", "pll1_pfd3", "platform_bus", };
|
static const char *esdhc_sels[] = { "pll3_usb_otg", "pll3_pfd3", "pll1_pfd3", "platform_bus", };
|
||||||
static const char *dcu_sels[] = { "pll1_pfd2", "pll3_main", };
|
static const char *dcu_sels[] = { "pll1_pfd2", "pll3_usb_otg", };
|
||||||
static const char *gpu_sels[] = { "pll2_pfd2", "pll3_pfd2", };
|
static const char *gpu_sels[] = { "pll2_pfd2", "pll3_pfd2", };
|
||||||
static const char *vadc_sels[] = { "pll6_main_div", "pll3_main_div", "pll3_main", };
|
static const char *vadc_sels[] = { "pll6_video_div", "pll3_usb_otg_div", "pll3_usb_otg", };
|
||||||
/* FTM counter clock source, not module clock */
|
/* FTM counter clock source, not module clock */
|
||||||
static const char *ftm_ext_sels[] = {"sirc_128k", "sxosc", "fxosc_half", "audio_ext", };
|
static const char *ftm_ext_sels[] = {"sirc_128k", "sxosc", "fxosc_half", "audio_ext", };
|
||||||
static const char *ftm_fix_sels[] = { "sxosc", "ipg_bus", };
|
static const char *ftm_fix_sels[] = { "sxosc", "ipg_bus", };
|
||||||
|
|
||||||
static struct clk_div_table pll4_main_div_table[] = {
|
|
||||||
|
static struct clk_div_table pll4_audio_div_table[] = {
|
||||||
{ .val = 0, .div = 1 },
|
{ .val = 0, .div = 1 },
|
||||||
{ .val = 1, .div = 2 },
|
{ .val = 1, .div = 2 },
|
||||||
{ .val = 2, .div = 6 },
|
{ .val = 2, .div = 6 },
|
||||||
|
@ -120,6 +135,9 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
|
||||||
clk[VF610_CLK_AUDIO_EXT] = imx_obtain_fixed_clock("audio_ext", 0);
|
clk[VF610_CLK_AUDIO_EXT] = imx_obtain_fixed_clock("audio_ext", 0);
|
||||||
clk[VF610_CLK_ENET_EXT] = imx_obtain_fixed_clock("enet_ext", 0);
|
clk[VF610_CLK_ENET_EXT] = imx_obtain_fixed_clock("enet_ext", 0);
|
||||||
|
|
||||||
|
/* Clock source from external clock via LVDs PAD */
|
||||||
|
clk[VF610_CLK_ANACLK1] = imx_obtain_fixed_clock("anaclk1", 0);
|
||||||
|
|
||||||
clk[VF610_CLK_FXOSC_HALF] = imx_clk_fixed_factor("fxosc_half", "fxosc", 1, 2);
|
clk[VF610_CLK_FXOSC_HALF] = imx_clk_fixed_factor("fxosc_half", "fxosc", 1, 2);
|
||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "fsl,vf610-anatop");
|
np = of_find_compatible_node(NULL, NULL, "fsl,vf610-anatop");
|
||||||
|
@ -133,31 +151,63 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
|
||||||
clk[VF610_CLK_SLOW_CLK_SEL] = imx_clk_mux("slow_clk_sel", CCM_CCSR, 4, 1, slow_sels, ARRAY_SIZE(slow_sels));
|
clk[VF610_CLK_SLOW_CLK_SEL] = imx_clk_mux("slow_clk_sel", CCM_CCSR, 4, 1, slow_sels, ARRAY_SIZE(slow_sels));
|
||||||
clk[VF610_CLK_FASK_CLK_SEL] = imx_clk_mux("fast_clk_sel", CCM_CCSR, 5, 1, fast_sels, ARRAY_SIZE(fast_sels));
|
clk[VF610_CLK_FASK_CLK_SEL] = imx_clk_mux("fast_clk_sel", CCM_CCSR, 5, 1, fast_sels, ARRAY_SIZE(fast_sels));
|
||||||
|
|
||||||
clk[VF610_CLK_PLL1_MAIN] = imx_clk_fixed_factor("pll1_main", "fast_clk_sel", 22, 1);
|
clk[VF610_CLK_PLL1_BYPASS_SRC] = imx_clk_mux("pll1_bypass_src", PLL1_CTRL, 14, 1, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
clk[VF610_CLK_PLL1_PFD1] = imx_clk_pfd("pll1_pfd1", "pll1_main", PFD_PLL1_BASE, 0);
|
clk[VF610_CLK_PLL2_BYPASS_SRC] = imx_clk_mux("pll2_bypass_src", PLL2_CTRL, 14, 1, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
clk[VF610_CLK_PLL1_PFD2] = imx_clk_pfd("pll1_pfd2", "pll1_main", PFD_PLL1_BASE, 1);
|
clk[VF610_CLK_PLL3_BYPASS_SRC] = imx_clk_mux("pll3_bypass_src", PLL3_CTRL, 14, 1, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
clk[VF610_CLK_PLL1_PFD3] = imx_clk_pfd("pll1_pfd3", "pll1_main", PFD_PLL1_BASE, 2);
|
clk[VF610_CLK_PLL4_BYPASS_SRC] = imx_clk_mux("pll4_bypass_src", PLL4_CTRL, 14, 1, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
clk[VF610_CLK_PLL1_PFD4] = imx_clk_pfd("pll1_pfd4", "pll1_main", PFD_PLL1_BASE, 3);
|
clk[VF610_CLK_PLL5_BYPASS_SRC] = imx_clk_mux("pll5_bypass_src", PLL5_CTRL, 14, 1, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
|
clk[VF610_CLK_PLL6_BYPASS_SRC] = imx_clk_mux("pll6_bypass_src", PLL6_CTRL, 14, 1, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
|
clk[VF610_CLK_PLL7_BYPASS_SRC] = imx_clk_mux("pll7_bypass_src", PLL7_CTRL, 14, 1, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
|
|
||||||
clk[VF610_CLK_PLL2_MAIN] = imx_clk_fixed_factor("pll2_main", "fast_clk_sel", 22, 1);
|
clk[VF610_CLK_PLL1] = imx_clk_pllv3(IMX_PLLV3_GENERIC, "pll1", "pll1_bypass_src", PLL1_CTRL, 0x1);
|
||||||
clk[VF610_CLK_PLL2_PFD1] = imx_clk_pfd("pll2_pfd1", "pll2_main", PFD_PLL2_BASE, 0);
|
clk[VF610_CLK_PLL2] = imx_clk_pllv3(IMX_PLLV3_GENERIC, "pll2", "pll2_bypass_src", PLL2_CTRL, 0x1);
|
||||||
clk[VF610_CLK_PLL2_PFD2] = imx_clk_pfd("pll2_pfd2", "pll2_main", PFD_PLL2_BASE, 1);
|
clk[VF610_CLK_PLL3] = imx_clk_pllv3(IMX_PLLV3_USB, "pll3", "pll3_bypass_src", PLL3_CTRL, 0x1);
|
||||||
clk[VF610_CLK_PLL2_PFD3] = imx_clk_pfd("pll2_pfd3", "pll2_main", PFD_PLL2_BASE, 2);
|
clk[VF610_CLK_PLL4] = imx_clk_pllv3(IMX_PLLV3_AV, "pll4", "pll4_bypass_src", PLL4_CTRL, 0x7f);
|
||||||
clk[VF610_CLK_PLL2_PFD4] = imx_clk_pfd("pll2_pfd4", "pll2_main", PFD_PLL2_BASE, 3);
|
clk[VF610_CLK_PLL5] = imx_clk_pllv3(IMX_PLLV3_ENET, "pll5", "pll5_bypass_src", PLL5_CTRL, 0x3);
|
||||||
|
clk[VF610_CLK_PLL6] = imx_clk_pllv3(IMX_PLLV3_AV, "pll6", "pll6_bypass_src", PLL6_CTRL, 0x7f);
|
||||||
|
clk[VF610_CLK_PLL7] = imx_clk_pllv3(IMX_PLLV3_USB, "pll7", "pll7_bypass_src", PLL7_CTRL, 0x1);
|
||||||
|
|
||||||
clk[VF610_CLK_PLL3_MAIN] = imx_clk_fixed_factor("pll3_main", "fast_clk_sel", 20, 1);
|
clk[VF610_PLL1_BYPASS] = imx_clk_mux_flags("pll1_bypass", PLL1_CTRL, 16, 1, pll1_bypass_sels, ARRAY_SIZE(pll1_bypass_sels), CLK_SET_RATE_PARENT);
|
||||||
clk[VF610_CLK_PLL3_PFD1] = imx_clk_pfd("pll3_pfd1", "pll3_main", PFD_PLL3_BASE, 0);
|
clk[VF610_PLL2_BYPASS] = imx_clk_mux_flags("pll2_bypass", PLL2_CTRL, 16, 1, pll2_bypass_sels, ARRAY_SIZE(pll2_bypass_sels), CLK_SET_RATE_PARENT);
|
||||||
clk[VF610_CLK_PLL3_PFD2] = imx_clk_pfd("pll3_pfd2", "pll3_main", PFD_PLL3_BASE, 1);
|
clk[VF610_PLL3_BYPASS] = imx_clk_mux_flags("pll3_bypass", PLL3_CTRL, 16, 1, pll3_bypass_sels, ARRAY_SIZE(pll3_bypass_sels), CLK_SET_RATE_PARENT);
|
||||||
clk[VF610_CLK_PLL3_PFD3] = imx_clk_pfd("pll3_pfd3", "pll3_main", PFD_PLL3_BASE, 2);
|
clk[VF610_PLL4_BYPASS] = imx_clk_mux_flags("pll4_bypass", PLL4_CTRL, 16, 1, pll4_bypass_sels, ARRAY_SIZE(pll4_bypass_sels), CLK_SET_RATE_PARENT);
|
||||||
clk[VF610_CLK_PLL3_PFD4] = imx_clk_pfd("pll3_pfd4", "pll3_main", PFD_PLL3_BASE, 3);
|
clk[VF610_PLL5_BYPASS] = imx_clk_mux_flags("pll5_bypass", PLL5_CTRL, 16, 1, pll5_bypass_sels, ARRAY_SIZE(pll5_bypass_sels), CLK_SET_RATE_PARENT);
|
||||||
|
clk[VF610_PLL6_BYPASS] = imx_clk_mux_flags("pll6_bypass", PLL6_CTRL, 16, 1, pll6_bypass_sels, ARRAY_SIZE(pll6_bypass_sels), CLK_SET_RATE_PARENT);
|
||||||
|
clk[VF610_PLL7_BYPASS] = imx_clk_mux_flags("pll7_bypass", PLL7_CTRL, 16, 1, pll7_bypass_sels, ARRAY_SIZE(pll7_bypass_sels), CLK_SET_RATE_PARENT);
|
||||||
|
|
||||||
clk[VF610_CLK_PLL4_MAIN] = imx_clk_fixed_factor("pll4_main", "fast_clk_sel", 25, 1);
|
/* Do not bypass PLLs initially */
|
||||||
/* Enet pll: fixed 50Mhz */
|
clk_set_parent(clk[VF610_PLL1_BYPASS], clk[VF610_CLK_PLL1]);
|
||||||
clk[VF610_CLK_PLL5_MAIN] = imx_clk_fixed_factor("pll5_main", "fast_clk_sel", 125, 6);
|
clk_set_parent(clk[VF610_PLL2_BYPASS], clk[VF610_CLK_PLL2]);
|
||||||
/* pll6: default 960Mhz */
|
clk_set_parent(clk[VF610_PLL3_BYPASS], clk[VF610_CLK_PLL3]);
|
||||||
clk[VF610_CLK_PLL6_MAIN] = imx_clk_fixed_factor("pll6_main", "fast_clk_sel", 40, 1);
|
clk_set_parent(clk[VF610_PLL4_BYPASS], clk[VF610_CLK_PLL4]);
|
||||||
/* pll7: USB1 PLL at 480MHz */
|
clk_set_parent(clk[VF610_PLL5_BYPASS], clk[VF610_CLK_PLL5]);
|
||||||
clk[VF610_CLK_PLL7_MAIN] = imx_clk_pllv3(IMX_PLLV3_USB, "pll7_main", "fast_clk_sel", PLL7_CTRL, 0x2);
|
clk_set_parent(clk[VF610_PLL6_BYPASS], clk[VF610_CLK_PLL6]);
|
||||||
|
clk_set_parent(clk[VF610_PLL7_BYPASS], clk[VF610_CLK_PLL7]);
|
||||||
|
|
||||||
|
clk[VF610_CLK_PLL1_SYS] = imx_clk_gate("pll1_sys", "pll1_bypass", PLL1_CTRL, 13);
|
||||||
|
clk[VF610_CLK_PLL2_BUS] = imx_clk_gate("pll2_bus", "pll2_bypass", PLL2_CTRL, 13);
|
||||||
|
clk[VF610_CLK_PLL3_USB_OTG] = imx_clk_gate("pll3_usb_otg", "pll3_bypass", PLL3_CTRL, 13);
|
||||||
|
clk[VF610_CLK_PLL4_AUDIO] = imx_clk_gate("pll4_audio", "pll4_bypass", PLL4_CTRL, 13);
|
||||||
|
clk[VF610_CLK_PLL5_ENET] = imx_clk_gate("pll5_enet", "pll5_bypass", PLL5_CTRL, 13);
|
||||||
|
clk[VF610_CLK_PLL6_VIDEO] = imx_clk_gate("pll6_video", "pll6_bypass", PLL6_CTRL, 13);
|
||||||
|
clk[VF610_CLK_PLL7_USB_HOST] = imx_clk_gate("pll7_usb_host", "pll7_bypass", PLL7_CTRL, 13);
|
||||||
|
|
||||||
|
clk[VF610_CLK_LVDS1_IN] = imx_clk_gate_exclusive("lvds1_in", "anaclk1", ANA_MISC1, 12, BIT(10));
|
||||||
|
|
||||||
|
clk[VF610_CLK_PLL1_PFD1] = imx_clk_pfd("pll1_pfd1", "pll1_sys", PFD_PLL1_BASE, 0);
|
||||||
|
clk[VF610_CLK_PLL1_PFD2] = imx_clk_pfd("pll1_pfd2", "pll1_sys", PFD_PLL1_BASE, 1);
|
||||||
|
clk[VF610_CLK_PLL1_PFD3] = imx_clk_pfd("pll1_pfd3", "pll1_sys", PFD_PLL1_BASE, 2);
|
||||||
|
clk[VF610_CLK_PLL1_PFD4] = imx_clk_pfd("pll1_pfd4", "pll1_sys", PFD_PLL1_BASE, 3);
|
||||||
|
|
||||||
|
clk[VF610_CLK_PLL2_PFD1] = imx_clk_pfd("pll2_pfd1", "pll2_bus", PFD_PLL2_BASE, 0);
|
||||||
|
clk[VF610_CLK_PLL2_PFD2] = imx_clk_pfd("pll2_pfd2", "pll2_bus", PFD_PLL2_BASE, 1);
|
||||||
|
clk[VF610_CLK_PLL2_PFD3] = imx_clk_pfd("pll2_pfd3", "pll2_bus", PFD_PLL2_BASE, 2);
|
||||||
|
clk[VF610_CLK_PLL2_PFD4] = imx_clk_pfd("pll2_pfd4", "pll2_bus", PFD_PLL2_BASE, 3);
|
||||||
|
|
||||||
|
clk[VF610_CLK_PLL3_PFD1] = imx_clk_pfd("pll3_pfd1", "pll3_usb_otg", PFD_PLL3_BASE, 0);
|
||||||
|
clk[VF610_CLK_PLL3_PFD2] = imx_clk_pfd("pll3_pfd2", "pll3_usb_otg", PFD_PLL3_BASE, 1);
|
||||||
|
clk[VF610_CLK_PLL3_PFD3] = imx_clk_pfd("pll3_pfd3", "pll3_usb_otg", PFD_PLL3_BASE, 2);
|
||||||
|
clk[VF610_CLK_PLL3_PFD4] = imx_clk_pfd("pll3_pfd4", "pll3_usb_otg", PFD_PLL3_BASE, 3);
|
||||||
|
|
||||||
clk[VF610_CLK_PLL1_PFD_SEL] = imx_clk_mux("pll1_pfd_sel", CCM_CCSR, 16, 3, pll1_sels, 5);
|
clk[VF610_CLK_PLL1_PFD_SEL] = imx_clk_mux("pll1_pfd_sel", CCM_CCSR, 16, 3, pll1_sels, 5);
|
||||||
clk[VF610_CLK_PLL2_PFD_SEL] = imx_clk_mux("pll2_pfd_sel", CCM_CCSR, 19, 3, pll2_sels, 5);
|
clk[VF610_CLK_PLL2_PFD_SEL] = imx_clk_mux("pll2_pfd_sel", CCM_CCSR, 19, 3, pll2_sels, 5);
|
||||||
|
@ -167,12 +217,12 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
|
||||||
clk[VF610_CLK_PLATFORM_BUS] = imx_clk_divider("platform_bus", "sys_bus", CCM_CACRR, 3, 3);
|
clk[VF610_CLK_PLATFORM_BUS] = imx_clk_divider("platform_bus", "sys_bus", CCM_CACRR, 3, 3);
|
||||||
clk[VF610_CLK_IPG_BUS] = imx_clk_divider("ipg_bus", "platform_bus", CCM_CACRR, 11, 2);
|
clk[VF610_CLK_IPG_BUS] = imx_clk_divider("ipg_bus", "platform_bus", CCM_CACRR, 11, 2);
|
||||||
|
|
||||||
clk[VF610_CLK_PLL3_MAIN_DIV] = imx_clk_divider("pll3_main_div", "pll3_main", CCM_CACRR, 20, 1);
|
clk[VF610_CLK_PLL3_MAIN_DIV] = imx_clk_divider("pll3_usb_otg_div", "pll3_usb_otg", CCM_CACRR, 20, 1);
|
||||||
clk[VF610_CLK_PLL4_MAIN_DIV] = clk_register_divider_table(NULL, "pll4_main_div", "pll4_main", 0, CCM_CACRR, 6, 3, 0, pll4_main_div_table, &imx_ccm_lock);
|
clk[VF610_CLK_PLL4_MAIN_DIV] = clk_register_divider_table(NULL, "pll4_audio_div", "pll4_audio", 0, CCM_CACRR, 6, 3, 0, pll4_audio_div_table, &imx_ccm_lock);
|
||||||
clk[VF610_CLK_PLL6_MAIN_DIV] = imx_clk_divider("pll6_main_div", "pll6_main", CCM_CACRR, 21, 1);
|
clk[VF610_CLK_PLL6_MAIN_DIV] = imx_clk_divider("pll6_video_div", "pll6_video", CCM_CACRR, 21, 1);
|
||||||
|
|
||||||
clk[VF610_CLK_USBPHY0] = imx_clk_gate("usbphy0", "pll3_main", PLL3_CTRL, 6);
|
clk[VF610_CLK_USBPHY0] = imx_clk_gate("usbphy0", "pll3_usb_otg", PLL3_CTRL, 6);
|
||||||
clk[VF610_CLK_USBPHY1] = imx_clk_gate("usbphy1", "pll7_main", PLL7_CTRL, 6);
|
clk[VF610_CLK_USBPHY1] = imx_clk_gate("usbphy1", "pll7_usb_host", PLL7_CTRL, 6);
|
||||||
|
|
||||||
clk[VF610_CLK_USBC0] = imx_clk_gate2("usbc0", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(4));
|
clk[VF610_CLK_USBC0] = imx_clk_gate2("usbc0", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(4));
|
||||||
clk[VF610_CLK_USBC1] = imx_clk_gate2("usbc1", "ipg_bus", CCM_CCGR7, CCM_CCGRx_CGn(4));
|
clk[VF610_CLK_USBC1] = imx_clk_gate2("usbc1", "ipg_bus", CCM_CCGR7, CCM_CCGRx_CGn(4));
|
||||||
|
@ -191,8 +241,8 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
|
||||||
clk[VF610_CLK_QSPI1_X1_DIV] = imx_clk_divider("qspi1_x1", "qspi1_x2", CCM_CSCDR3, 11, 1);
|
clk[VF610_CLK_QSPI1_X1_DIV] = imx_clk_divider("qspi1_x1", "qspi1_x2", CCM_CSCDR3, 11, 1);
|
||||||
clk[VF610_CLK_QSPI1] = imx_clk_gate2("qspi1", "qspi1_x1", CCM_CCGR8, CCM_CCGRx_CGn(4));
|
clk[VF610_CLK_QSPI1] = imx_clk_gate2("qspi1", "qspi1_x1", CCM_CCGR8, CCM_CCGRx_CGn(4));
|
||||||
|
|
||||||
clk[VF610_CLK_ENET_50M] = imx_clk_fixed_factor("enet_50m", "pll5_main", 1, 10);
|
clk[VF610_CLK_ENET_50M] = imx_clk_fixed_factor("enet_50m", "pll5_enet", 1, 10);
|
||||||
clk[VF610_CLK_ENET_25M] = imx_clk_fixed_factor("enet_25m", "pll5_main", 1, 20);
|
clk[VF610_CLK_ENET_25M] = imx_clk_fixed_factor("enet_25m", "pll5_enet", 1, 20);
|
||||||
clk[VF610_CLK_ENET_SEL] = imx_clk_mux("enet_sel", CCM_CSCMR2, 4, 2, rmii_sels, 4);
|
clk[VF610_CLK_ENET_SEL] = imx_clk_mux("enet_sel", CCM_CSCMR2, 4, 2, rmii_sels, 4);
|
||||||
clk[VF610_CLK_ENET_TS_SEL] = imx_clk_mux("enet_ts_sel", CCM_CSCMR2, 0, 3, enet_ts_sels, 7);
|
clk[VF610_CLK_ENET_TS_SEL] = imx_clk_mux("enet_ts_sel", CCM_CSCMR2, 0, 3, enet_ts_sels, 7);
|
||||||
clk[VF610_CLK_ENET] = imx_clk_gate("enet", "enet_sel", CCM_CSCDR1, 24);
|
clk[VF610_CLK_ENET] = imx_clk_gate("enet", "enet_sel", CCM_CSCDR1, 24);
|
||||||
|
|
|
@ -76,7 +76,7 @@ static inline void __indirect_writeb(u8 value, volatile void __iomem *p)
|
||||||
u32 n, byte_enables, data;
|
u32 n, byte_enables, data;
|
||||||
|
|
||||||
if (!is_pci_memory(addr)) {
|
if (!is_pci_memory(addr)) {
|
||||||
__raw_writeb(value, addr);
|
__raw_writeb(value, p);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ static inline unsigned char __indirect_readb(const volatile void __iomem *p)
|
||||||
u32 n, byte_enables, data;
|
u32 n, byte_enables, data;
|
||||||
|
|
||||||
if (!is_pci_memory(addr))
|
if (!is_pci_memory(addr))
|
||||||
return __raw_readb(addr);
|
return __raw_readb(p);
|
||||||
|
|
||||||
n = addr % 4;
|
n = addr % 4;
|
||||||
byte_enables = (0xf & ~BIT(n)) << IXP4XX_PCI_NP_CBE_BESL;
|
byte_enables = (0xf & ~BIT(n)) << IXP4XX_PCI_NP_CBE_BESL;
|
||||||
|
|
|
@ -188,7 +188,7 @@ static void __init thermal_quirk(void)
|
||||||
|
|
||||||
static void __init mvebu_dt_init(void)
|
static void __init mvebu_dt_init(void)
|
||||||
{
|
{
|
||||||
if (of_machine_is_compatible("plathome,openblocks-ax3-4"))
|
if (of_machine_is_compatible("marvell,armadaxp"))
|
||||||
i2c_quirk();
|
i2c_quirk();
|
||||||
if (of_machine_is_compatible("marvell,a375-db")) {
|
if (of_machine_is_compatible("marvell,a375-db")) {
|
||||||
external_abort_quirk();
|
external_abort_quirk();
|
||||||
|
|
|
@ -917,6 +917,10 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
|
||||||
static int __init omap_device_late_init(void)
|
static int __init omap_device_late_init(void)
|
||||||
{
|
{
|
||||||
bus_for_each_dev(&platform_bus_type, NULL, NULL, omap_device_late_idle);
|
bus_for_each_dev(&platform_bus_type, NULL, NULL, omap_device_late_idle);
|
||||||
|
|
||||||
|
WARN(!of_have_populated_dt(),
|
||||||
|
"legacy booting deprecated, please update to boot with .dts\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
omap_late_initcall_sync(omap_device_late_init);
|
omap_late_initcall_sync(omap_device_late_init);
|
||||||
|
|
|
@ -38,6 +38,11 @@
|
||||||
#define DMEMC_VIRT IOMEM(0xf6100000)
|
#define DMEMC_VIRT IOMEM(0xf6100000)
|
||||||
#define DMEMC_SIZE 0x00100000
|
#define DMEMC_SIZE 0x00100000
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reserved space for low level debug virtual addresses within
|
||||||
|
* 0xf6200000..0xf6201000
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal Memory Controller (PXA27x and later)
|
* Internal Memory Controller (PXA27x and later)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -455,7 +455,7 @@ enum {
|
||||||
MSTP128, MSTP127, MSTP125,
|
MSTP128, MSTP127, MSTP125,
|
||||||
MSTP116, MSTP111, MSTP100, MSTP117,
|
MSTP116, MSTP111, MSTP100, MSTP117,
|
||||||
|
|
||||||
MSTP230,
|
MSTP230, MSTP229,
|
||||||
MSTP222,
|
MSTP222,
|
||||||
MSTP218, MSTP217, MSTP216, MSTP214,
|
MSTP218, MSTP217, MSTP216, MSTP214,
|
||||||
MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
|
MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
|
||||||
|
@ -474,11 +474,12 @@ static struct clk mstp_clks[MSTP_NR] = {
|
||||||
[MSTP127] = SH_CLK_MSTP32(&div4_clks[DIV4_S], SMSTPCR1, 27, 0), /* CEU20 */
|
[MSTP127] = SH_CLK_MSTP32(&div4_clks[DIV4_S], SMSTPCR1, 27, 0), /* CEU20 */
|
||||||
[MSTP125] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 25, 0), /* TMU0 */
|
[MSTP125] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 25, 0), /* TMU0 */
|
||||||
[MSTP117] = SH_CLK_MSTP32(&div4_clks[DIV4_B], SMSTPCR1, 17, 0), /* LCDC1 */
|
[MSTP117] = SH_CLK_MSTP32(&div4_clks[DIV4_B], SMSTPCR1, 17, 0), /* LCDC1 */
|
||||||
[MSTP116] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 16, 0), /* IIC0 */
|
[MSTP116] = SH_CLK_MSTP32(&div4_clks[DIV4_HPP], SMSTPCR1, 16, 0), /* IIC0 */
|
||||||
[MSTP111] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 11, 0), /* TMU1 */
|
[MSTP111] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 11, 0), /* TMU1 */
|
||||||
[MSTP100] = SH_CLK_MSTP32(&div4_clks[DIV4_B], SMSTPCR1, 0, 0), /* LCDC0 */
|
[MSTP100] = SH_CLK_MSTP32(&div4_clks[DIV4_B], SMSTPCR1, 0, 0), /* LCDC0 */
|
||||||
|
|
||||||
[MSTP230] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2, 30, 0), /* SCIFA6 */
|
[MSTP230] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2, 30, 0), /* SCIFA6 */
|
||||||
|
[MSTP229] = SH_CLK_MSTP32(&div4_clks[DIV4_HP], SMSTPCR2, 29, 0), /* INTCA */
|
||||||
[MSTP222] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2, 22, 0), /* SCIFA7 */
|
[MSTP222] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2, 22, 0), /* SCIFA7 */
|
||||||
[MSTP218] = SH_CLK_MSTP32(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */
|
[MSTP218] = SH_CLK_MSTP32(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* DMAC1 */
|
||||||
[MSTP217] = SH_CLK_MSTP32(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */
|
[MSTP217] = SH_CLK_MSTP32(&div4_clks[DIV4_HP], SMSTPCR2, 17, 0), /* DMAC2 */
|
||||||
|
@ -575,6 +576,10 @@ static struct clk_lookup lookups[] = {
|
||||||
CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]),
|
CLKDEV_DEV_ID("sh-dma-engine.0", &mstp_clks[MSTP218]),
|
||||||
CLKDEV_DEV_ID("sh-sci.7", &mstp_clks[MSTP222]),
|
CLKDEV_DEV_ID("sh-sci.7", &mstp_clks[MSTP222]),
|
||||||
CLKDEV_DEV_ID("e6cd0000.serial", &mstp_clks[MSTP222]),
|
CLKDEV_DEV_ID("e6cd0000.serial", &mstp_clks[MSTP222]),
|
||||||
|
CLKDEV_DEV_ID("renesas_intc_irqpin.0", &mstp_clks[MSTP229]),
|
||||||
|
CLKDEV_DEV_ID("renesas_intc_irqpin.1", &mstp_clks[MSTP229]),
|
||||||
|
CLKDEV_DEV_ID("renesas_intc_irqpin.2", &mstp_clks[MSTP229]),
|
||||||
|
CLKDEV_DEV_ID("renesas_intc_irqpin.3", &mstp_clks[MSTP229]),
|
||||||
CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP230]),
|
CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP230]),
|
||||||
CLKDEV_DEV_ID("e6cc0000.serial", &mstp_clks[MSTP230]),
|
CLKDEV_DEV_ID("e6cc0000.serial", &mstp_clks[MSTP230]),
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
|
|
||||||
#define SDCKCR 0xE6150074
|
#define SDCKCR 0xE6150074
|
||||||
#define SD2CKCR 0xE6150078
|
#define SD2CKCR 0xE6150078
|
||||||
#define SD3CKCR 0xE615007C
|
#define SD3CKCR 0xE615026C
|
||||||
#define MMC0CKCR 0xE6150240
|
#define MMC0CKCR 0xE6150240
|
||||||
#define MMC1CKCR 0xE6150244
|
#define MMC1CKCR 0xE6150244
|
||||||
#define SSPCKCR 0xE6150248
|
#define SSPCKCR 0xE6150248
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
|
#include <linux/i2c/i2c-sh_mobile.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <linux/serial_sci.h>
|
#include <linux/serial_sci.h>
|
||||||
#include <linux/sh_dma.h>
|
#include <linux/sh_dma.h>
|
||||||
|
@ -192,11 +193,18 @@ static struct resource i2c4_resources[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct i2c_sh_mobile_platform_data i2c_platform_data = {
|
||||||
|
.clks_per_count = 2,
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device i2c0_device = {
|
static struct platform_device i2c0_device = {
|
||||||
.name = "i2c-sh_mobile",
|
.name = "i2c-sh_mobile",
|
||||||
.id = 0,
|
.id = 0,
|
||||||
.resource = i2c0_resources,
|
.resource = i2c0_resources,
|
||||||
.num_resources = ARRAY_SIZE(i2c0_resources),
|
.num_resources = ARRAY_SIZE(i2c0_resources),
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &i2c_platform_data,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device i2c1_device = {
|
static struct platform_device i2c1_device = {
|
||||||
|
@ -204,6 +212,9 @@ static struct platform_device i2c1_device = {
|
||||||
.id = 1,
|
.id = 1,
|
||||||
.resource = i2c1_resources,
|
.resource = i2c1_resources,
|
||||||
.num_resources = ARRAY_SIZE(i2c1_resources),
|
.num_resources = ARRAY_SIZE(i2c1_resources),
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &i2c_platform_data,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device i2c2_device = {
|
static struct platform_device i2c2_device = {
|
||||||
|
@ -211,6 +222,9 @@ static struct platform_device i2c2_device = {
|
||||||
.id = 2,
|
.id = 2,
|
||||||
.resource = i2c2_resources,
|
.resource = i2c2_resources,
|
||||||
.num_resources = ARRAY_SIZE(i2c2_resources),
|
.num_resources = ARRAY_SIZE(i2c2_resources),
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &i2c_platform_data,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device i2c3_device = {
|
static struct platform_device i2c3_device = {
|
||||||
|
@ -218,6 +232,9 @@ static struct platform_device i2c3_device = {
|
||||||
.id = 3,
|
.id = 3,
|
||||||
.resource = i2c3_resources,
|
.resource = i2c3_resources,
|
||||||
.num_resources = ARRAY_SIZE(i2c3_resources),
|
.num_resources = ARRAY_SIZE(i2c3_resources),
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &i2c_platform_data,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device i2c4_device = {
|
static struct platform_device i2c4_device = {
|
||||||
|
@ -225,6 +242,9 @@ static struct platform_device i2c4_device = {
|
||||||
.id = 4,
|
.id = 4,
|
||||||
.resource = i2c4_resources,
|
.resource = i2c4_resources,
|
||||||
.num_resources = ARRAY_SIZE(i2c4_resources),
|
.num_resources = ARRAY_SIZE(i2c4_resources),
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &i2c_platform_data,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct sh_dmae_slave_config sh73a0_dmae_slaves[] = {
|
static const struct sh_dmae_slave_config sh73a0_dmae_slaves[] = {
|
||||||
|
|
|
@ -798,6 +798,7 @@ config NEED_KUSER_HELPERS
|
||||||
|
|
||||||
config KUSER_HELPERS
|
config KUSER_HELPERS
|
||||||
bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
|
bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
|
||||||
|
depends on MMU
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Warning: disabling this option may break user programs.
|
Warning: disabling this option may break user programs.
|
||||||
|
|
|
@ -497,6 +497,34 @@ static void orion_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
|
||||||
#define orion_gpio_dbg_show NULL
|
#define orion_gpio_dbg_show NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void orion_gpio_unmask_irq(struct irq_data *d)
|
||||||
|
{
|
||||||
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
|
||||||
|
struct irq_chip_type *ct = irq_data_get_chip_type(d);
|
||||||
|
u32 reg_val;
|
||||||
|
u32 mask = d->mask;
|
||||||
|
|
||||||
|
irq_gc_lock(gc);
|
||||||
|
reg_val = irq_reg_readl(gc->reg_base + ct->regs.mask);
|
||||||
|
reg_val |= mask;
|
||||||
|
irq_reg_writel(reg_val, gc->reg_base + ct->regs.mask);
|
||||||
|
irq_gc_unlock(gc);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void orion_gpio_mask_irq(struct irq_data *d)
|
||||||
|
{
|
||||||
|
struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
|
||||||
|
struct irq_chip_type *ct = irq_data_get_chip_type(d);
|
||||||
|
u32 mask = d->mask;
|
||||||
|
u32 reg_val;
|
||||||
|
|
||||||
|
irq_gc_lock(gc);
|
||||||
|
reg_val = irq_reg_readl(gc->reg_base + ct->regs.mask);
|
||||||
|
reg_val &= ~mask;
|
||||||
|
irq_reg_writel(reg_val, gc->reg_base + ct->regs.mask);
|
||||||
|
irq_gc_unlock(gc);
|
||||||
|
}
|
||||||
|
|
||||||
void __init orion_gpio_init(struct device_node *np,
|
void __init orion_gpio_init(struct device_node *np,
|
||||||
int gpio_base, int ngpio,
|
int gpio_base, int ngpio,
|
||||||
void __iomem *base, int mask_offset,
|
void __iomem *base, int mask_offset,
|
||||||
|
@ -565,8 +593,8 @@ void __init orion_gpio_init(struct device_node *np,
|
||||||
ct = gc->chip_types;
|
ct = gc->chip_types;
|
||||||
ct->regs.mask = ochip->mask_offset + GPIO_LEVEL_MASK_OFF;
|
ct->regs.mask = ochip->mask_offset + GPIO_LEVEL_MASK_OFF;
|
||||||
ct->type = IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW;
|
ct->type = IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_LEVEL_LOW;
|
||||||
ct->chip.irq_mask = irq_gc_mask_clr_bit;
|
ct->chip.irq_mask = orion_gpio_mask_irq;
|
||||||
ct->chip.irq_unmask = irq_gc_mask_set_bit;
|
ct->chip.irq_unmask = orion_gpio_unmask_irq;
|
||||||
ct->chip.irq_set_type = gpio_irq_set_type;
|
ct->chip.irq_set_type = gpio_irq_set_type;
|
||||||
ct->chip.name = ochip->chip.label;
|
ct->chip.name = ochip->chip.label;
|
||||||
|
|
||||||
|
@ -575,8 +603,8 @@ void __init orion_gpio_init(struct device_node *np,
|
||||||
ct->regs.ack = GPIO_EDGE_CAUSE_OFF;
|
ct->regs.ack = GPIO_EDGE_CAUSE_OFF;
|
||||||
ct->type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING;
|
ct->type = IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING;
|
||||||
ct->chip.irq_ack = irq_gc_ack_clr_bit;
|
ct->chip.irq_ack = irq_gc_ack_clr_bit;
|
||||||
ct->chip.irq_mask = irq_gc_mask_clr_bit;
|
ct->chip.irq_mask = orion_gpio_mask_irq;
|
||||||
ct->chip.irq_unmask = irq_gc_mask_set_bit;
|
ct->chip.irq_unmask = orion_gpio_unmask_irq;
|
||||||
ct->chip.irq_set_type = gpio_irq_set_type;
|
ct->chip.irq_set_type = gpio_irq_set_type;
|
||||||
ct->handler = handle_edge_irq;
|
ct->handler = handle_edge_irq;
|
||||||
ct->chip.name = ochip->chip.label;
|
ct->chip.name = ochip->chip.label;
|
||||||
|
|
|
@ -599,7 +599,7 @@
|
||||||
compatible = "apm,xgene-enet";
|
compatible = "apm,xgene-enet";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
reg = <0x0 0x17020000 0x0 0xd100>,
|
reg = <0x0 0x17020000 0x0 0xd100>,
|
||||||
<0x0 0X17030000 0x0 0X400>,
|
<0x0 0X17030000 0x0 0Xc300>,
|
||||||
<0x0 0X10000000 0x0 0X200>;
|
<0x0 0X10000000 0x0 0X200>;
|
||||||
reg-names = "enet_csr", "ring_csr", "ring_cmd";
|
reg-names = "enet_csr", "ring_csr", "ring_cmd";
|
||||||
interrupts = <0x0 0x3c 0x4>;
|
interrupts = <0x0 0x3c 0x4>;
|
||||||
|
@ -624,9 +624,9 @@
|
||||||
sgenet0: ethernet@1f210000 {
|
sgenet0: ethernet@1f210000 {
|
||||||
compatible = "apm,xgene-enet";
|
compatible = "apm,xgene-enet";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
reg = <0x0 0x1f210000 0x0 0x10000>,
|
reg = <0x0 0x1f210000 0x0 0xd100>,
|
||||||
<0x0 0x1f200000 0x0 0X10000>,
|
<0x0 0x1f200000 0x0 0Xc300>,
|
||||||
<0x0 0x1B000000 0x0 0X20000>;
|
<0x0 0x1B000000 0x0 0X200>;
|
||||||
reg-names = "enet_csr", "ring_csr", "ring_cmd";
|
reg-names = "enet_csr", "ring_csr", "ring_cmd";
|
||||||
interrupts = <0x0 0xA0 0x4>;
|
interrupts = <0x0 0xA0 0x4>;
|
||||||
dma-coherent;
|
dma-coherent;
|
||||||
|
@ -639,7 +639,7 @@
|
||||||
compatible = "apm,xgene-enet";
|
compatible = "apm,xgene-enet";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
reg = <0x0 0x1f610000 0x0 0xd100>,
|
reg = <0x0 0x1f610000 0x0 0xd100>,
|
||||||
<0x0 0x1f600000 0x0 0X400>,
|
<0x0 0x1f600000 0x0 0Xc300>,
|
||||||
<0x0 0x18000000 0x0 0X200>;
|
<0x0 0x18000000 0x0 0X200>;
|
||||||
reg-names = "enet_csr", "ring_csr", "ring_cmd";
|
reg-names = "enet_csr", "ring_csr", "ring_cmd";
|
||||||
interrupts = <0x0 0x60 0x4>;
|
interrupts = <0x0 0x60 0x4>;
|
||||||
|
|
|
@ -35,6 +35,9 @@ CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_ARCH_THUNDER=y
|
CONFIG_ARCH_THUNDER=y
|
||||||
CONFIG_ARCH_VEXPRESS=y
|
CONFIG_ARCH_VEXPRESS=y
|
||||||
CONFIG_ARCH_XGENE=y
|
CONFIG_ARCH_XGENE=y
|
||||||
|
CONFIG_PCI=y
|
||||||
|
CONFIG_PCI_MSI=y
|
||||||
|
CONFIG_PCI_XGENE=y
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_KSM=y
|
CONFIG_KSM=y
|
||||||
|
@ -52,6 +55,7 @@ CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
|
CONFIG_BPF_JIT=y
|
||||||
# CONFIG_WIRELESS is not set
|
# CONFIG_WIRELESS is not set
|
||||||
CONFIG_NET_9P=y
|
CONFIG_NET_9P=y
|
||||||
CONFIG_NET_9P_VIRTIO=y
|
CONFIG_NET_9P_VIRTIO=y
|
||||||
|
@ -65,16 +69,17 @@ CONFIG_VIRTIO_BLK=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
# CONFIG_SCSI_LOWLEVEL is not set
|
# CONFIG_SCSI_LOWLEVEL is not set
|
||||||
CONFIG_ATA=y
|
CONFIG_ATA=y
|
||||||
|
CONFIG_SATA_AHCI=y
|
||||||
|
CONFIG_SATA_AHCI_PLATFORM=y
|
||||||
CONFIG_AHCI_XGENE=y
|
CONFIG_AHCI_XGENE=y
|
||||||
CONFIG_PHY_XGENE=y
|
|
||||||
CONFIG_PATA_PLATFORM=y
|
CONFIG_PATA_PLATFORM=y
|
||||||
CONFIG_PATA_OF_PLATFORM=y
|
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_NET_XGENE=y
|
||||||
CONFIG_SMC91X=y
|
CONFIG_SMC91X=y
|
||||||
CONFIG_SMSC911X=y
|
CONFIG_SMSC911X=y
|
||||||
CONFIG_NET_XGENE=y
|
|
||||||
# CONFIG_WLAN is not set
|
# CONFIG_WLAN is not set
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
# CONFIG_SERIO_SERPORT is not set
|
# CONFIG_SERIO_SERPORT is not set
|
||||||
|
@ -87,6 +92,11 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||||
CONFIG_SERIAL_OF_PLATFORM=y
|
CONFIG_SERIAL_OF_PLATFORM=y
|
||||||
CONFIG_VIRTIO_CONSOLE=y
|
CONFIG_VIRTIO_CONSOLE=y
|
||||||
# CONFIG_HW_RANDOM is not set
|
# CONFIG_HW_RANDOM is not set
|
||||||
|
# CONFIG_HMC_DRV is not set
|
||||||
|
CONFIG_SPI=y
|
||||||
|
CONFIG_SPI_PL022=y
|
||||||
|
CONFIG_GPIO_PL061=y
|
||||||
|
CONFIG_GPIO_XGENE=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_REGULATOR=y
|
CONFIG_REGULATOR=y
|
||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||||
|
@ -97,13 +107,25 @@ CONFIG_LOGO=y
|
||||||
# CONFIG_LOGO_LINUX_MONO is not set
|
# CONFIG_LOGO_LINUX_MONO is not set
|
||||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||||
CONFIG_USB_ISP1760_HCD=y
|
CONFIG_USB_ISP1760_HCD=y
|
||||||
|
CONFIG_USB_OHCI_HCD=y
|
||||||
|
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_USB_ULPI=y
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
CONFIG_MMC_ARMMMCI=y
|
CONFIG_MMC_ARMMMCI=y
|
||||||
|
CONFIG_MMC_SDHCI=y
|
||||||
|
CONFIG_MMC_SDHCI_PLTFM=y
|
||||||
|
CONFIG_MMC_SPI=y
|
||||||
|
CONFIG_RTC_CLASS=y
|
||||||
|
CONFIG_RTC_DRV_EFI=y
|
||||||
|
CONFIG_RTC_DRV_XGENE=y
|
||||||
CONFIG_VIRTIO_BALLOON=y
|
CONFIG_VIRTIO_BALLOON=y
|
||||||
CONFIG_VIRTIO_MMIO=y
|
CONFIG_VIRTIO_MMIO=y
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
|
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_DEFAULTS_TO_ORDERED is not set
|
||||||
|
|
|
@ -142,7 +142,7 @@ static inline void *phys_to_virt(phys_addr_t x)
|
||||||
* virt_to_page(k) convert a _valid_ virtual address to struct page *
|
* virt_to_page(k) convert a _valid_ virtual address to struct page *
|
||||||
* virt_addr_valid(k) indicates whether a virtual address is valid
|
* virt_addr_valid(k) indicates whether a virtual address is valid
|
||||||
*/
|
*/
|
||||||
#define ARCH_PFN_OFFSET PHYS_PFN_OFFSET
|
#define ARCH_PFN_OFFSET ((unsigned long)PHYS_PFN_OFFSET)
|
||||||
|
|
||||||
#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
|
#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
|
||||||
#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
|
#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
|
||||||
|
|
|
@ -792,3 +792,5 @@ __SYSCALL(__NR_renameat2, sys_renameat2)
|
||||||
__SYSCALL(__NR_getrandom, sys_getrandom)
|
__SYSCALL(__NR_getrandom, sys_getrandom)
|
||||||
#define __NR_memfd_create 385
|
#define __NR_memfd_create 385
|
||||||
__SYSCALL(__NR_memfd_create, sys_memfd_create)
|
__SYSCALL(__NR_memfd_create, sys_memfd_create)
|
||||||
|
#define __NR_bpf 386
|
||||||
|
__SYSCALL(__NR_bpf, sys_bpf)
|
||||||
|
|
|
@ -54,18 +54,17 @@ ENTRY(efi_stub_entry)
|
||||||
b.eq efi_load_fail
|
b.eq efi_load_fail
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* efi_entry() will have relocated the kernel image if necessary
|
* efi_entry() will have copied the kernel image if necessary and we
|
||||||
* and we return here with device tree address in x0 and the kernel
|
* return here with device tree address in x0 and the kernel entry
|
||||||
* entry point stored at *image_addr. Save those values in registers
|
* point stored at *image_addr. Save those values in registers which
|
||||||
* which are callee preserved.
|
* are callee preserved.
|
||||||
*/
|
*/
|
||||||
mov x20, x0 // DTB address
|
mov x20, x0 // DTB address
|
||||||
ldr x0, [sp, #16] // relocated _text address
|
ldr x0, [sp, #16] // relocated _text address
|
||||||
mov x21, x0
|
mov x21, x0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flush dcache covering current runtime addresses
|
* Calculate size of the kernel Image (same for original and copy).
|
||||||
* of kernel text/data. Then flush all of icache.
|
|
||||||
*/
|
*/
|
||||||
adrp x1, _text
|
adrp x1, _text
|
||||||
add x1, x1, #:lo12:_text
|
add x1, x1, #:lo12:_text
|
||||||
|
@ -73,9 +72,24 @@ ENTRY(efi_stub_entry)
|
||||||
add x2, x2, #:lo12:_edata
|
add x2, x2, #:lo12:_edata
|
||||||
sub x1, x2, x1
|
sub x1, x2, x1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flush the copied Image to the PoC, and ensure it is not shadowed by
|
||||||
|
* stale icache entries from before relocation.
|
||||||
|
*/
|
||||||
bl __flush_dcache_area
|
bl __flush_dcache_area
|
||||||
ic ialluis
|
ic ialluis
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ensure that the rest of this function (in the original Image) is
|
||||||
|
* visible when the caches are disabled. The I-cache can't have stale
|
||||||
|
* entries for the VA range of the current image, so no maintenance is
|
||||||
|
* necessary.
|
||||||
|
*/
|
||||||
|
adr x0, efi_stub_entry
|
||||||
|
adr x1, efi_stub_entry_end
|
||||||
|
sub x1, x1, x0
|
||||||
|
bl __flush_dcache_area
|
||||||
|
|
||||||
/* Turn off Dcache and MMU */
|
/* Turn off Dcache and MMU */
|
||||||
mrs x0, CurrentEL
|
mrs x0, CurrentEL
|
||||||
cmp x0, #CurrentEL_EL2
|
cmp x0, #CurrentEL_EL2
|
||||||
|
@ -105,4 +119,5 @@ efi_load_fail:
|
||||||
ldp x29, x30, [sp], #32
|
ldp x29, x30, [sp], #32
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
efi_stub_entry_end:
|
||||||
ENDPROC(efi_stub_entry)
|
ENDPROC(efi_stub_entry)
|
||||||
|
|
|
@ -163,9 +163,10 @@ static int __kprobes aarch64_insn_patch_text_cb(void *arg)
|
||||||
* which ends with "dsb; isb" pair guaranteeing global
|
* which ends with "dsb; isb" pair guaranteeing global
|
||||||
* visibility.
|
* visibility.
|
||||||
*/
|
*/
|
||||||
atomic_set(&pp->cpu_count, -1);
|
/* Notify other processors with an additional increment. */
|
||||||
|
atomic_inc(&pp->cpu_count);
|
||||||
} else {
|
} else {
|
||||||
while (atomic_read(&pp->cpu_count) != -1)
|
while (atomic_read(&pp->cpu_count) <= num_online_cpus())
|
||||||
cpu_relax();
|
cpu_relax();
|
||||||
isb();
|
isb();
|
||||||
}
|
}
|
||||||
|
|
|
@ -528,7 +528,7 @@ static int __maybe_unused cpu_psci_cpu_suspend(unsigned long index)
|
||||||
if (WARN_ON_ONCE(!index))
|
if (WARN_ON_ONCE(!index))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (state->type == PSCI_POWER_STATE_TYPE_STANDBY)
|
if (state[index - 1].type == PSCI_POWER_STATE_TYPE_STANDBY)
|
||||||
ret = psci_ops.cpu_suspend(state[index - 1], 0);
|
ret = psci_ops.cpu_suspend(state[index - 1], 0);
|
||||||
else
|
else
|
||||||
ret = __cpu_suspend(index, psci_suspend_finisher);
|
ret = __cpu_suspend(index, psci_suspend_finisher);
|
||||||
|
|
|
@ -46,7 +46,7 @@ USER(9f, strh wzr, [x0], #2 )
|
||||||
sub x1, x1, #2
|
sub x1, x1, #2
|
||||||
4: adds x1, x1, #1
|
4: adds x1, x1, #1
|
||||||
b.mi 5f
|
b.mi 5f
|
||||||
strb wzr, [x0]
|
USER(9f, strb wzr, [x0] )
|
||||||
5: mov x0, #0
|
5: mov x0, #0
|
||||||
ret
|
ret
|
||||||
ENDPROC(__clear_user)
|
ENDPROC(__clear_user)
|
||||||
|
|
|
@ -202,7 +202,7 @@ static void __init alloc_init_pmd(pud_t *pud, unsigned long addr,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init alloc_init_pud(pgd_t *pgd, unsigned long addr,
|
static void __init alloc_init_pud(pgd_t *pgd, unsigned long addr,
|
||||||
unsigned long end, unsigned long phys,
|
unsigned long end, phys_addr_t phys,
|
||||||
int map_io)
|
int map_io)
|
||||||
{
|
{
|
||||||
pud_t *pud;
|
pud_t *pud;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include <uapi/asm/unistd.h>
|
#include <uapi/asm/unistd.h>
|
||||||
|
|
||||||
|
|
||||||
#define NR_syscalls 354
|
#define NR_syscalls 355
|
||||||
|
|
||||||
#define __ARCH_WANT_OLD_READDIR
|
#define __ARCH_WANT_OLD_READDIR
|
||||||
#define __ARCH_WANT_OLD_STAT
|
#define __ARCH_WANT_OLD_STAT
|
||||||
|
|
|
@ -359,5 +359,6 @@
|
||||||
#define __NR_renameat2 351
|
#define __NR_renameat2 351
|
||||||
#define __NR_getrandom 352
|
#define __NR_getrandom 352
|
||||||
#define __NR_memfd_create 353
|
#define __NR_memfd_create 353
|
||||||
|
#define __NR_bpf 354
|
||||||
|
|
||||||
#endif /* _UAPI_ASM_M68K_UNISTD_H_ */
|
#endif /* _UAPI_ASM_M68K_UNISTD_H_ */
|
||||||
|
|
|
@ -374,4 +374,5 @@ ENTRY(sys_call_table)
|
||||||
.long sys_renameat2
|
.long sys_renameat2
|
||||||
.long sys_getrandom
|
.long sys_getrandom
|
||||||
.long sys_memfd_create
|
.long sys_memfd_create
|
||||||
|
.long sys_bpf
|
||||||
|
|
||||||
|
|
|
@ -93,6 +93,15 @@ LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
||||||
KBUILD_AFLAGS_MODULE += -mlong-calls
|
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||||
KBUILD_CFLAGS_MODULE += -mlong-calls
|
KBUILD_CFLAGS_MODULE += -mlong-calls
|
||||||
|
|
||||||
|
#
|
||||||
|
# pass -msoft-float to GAS if it supports it. However on newer binutils
|
||||||
|
# (specifically newer than 2.24.51.20140728) we then also need to explicitly
|
||||||
|
# set ".set hardfloat" in all files which manipulate floating point registers.
|
||||||
|
#
|
||||||
|
ifneq ($(call as-option,-Wa$(comma)-msoft-float,),)
|
||||||
|
cflags-y += -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float
|
||||||
|
endif
|
||||||
|
|
||||||
cflags-y += -ffreestanding
|
cflags-y += -ffreestanding
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -809,6 +809,7 @@ static struct irq_chip octeon_irq_chip_ciu_gpio_v2 = {
|
||||||
.irq_set_type = octeon_irq_ciu_gpio_set_type,
|
.irq_set_type = octeon_irq_ciu_gpio_set_type,
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
.irq_set_affinity = octeon_irq_ciu_set_affinity_v2,
|
.irq_set_affinity = octeon_irq_ciu_set_affinity_v2,
|
||||||
|
.irq_cpu_offline = octeon_irq_cpu_offline_ciu,
|
||||||
#endif
|
#endif
|
||||||
.flags = IRQCHIP_SET_TYPE_MASKED,
|
.flags = IRQCHIP_SET_TYPE_MASKED,
|
||||||
};
|
};
|
||||||
|
@ -823,6 +824,7 @@ static struct irq_chip octeon_irq_chip_ciu_gpio = {
|
||||||
.irq_set_type = octeon_irq_ciu_gpio_set_type,
|
.irq_set_type = octeon_irq_ciu_gpio_set_type,
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
.irq_set_affinity = octeon_irq_ciu_set_affinity,
|
.irq_set_affinity = octeon_irq_ciu_set_affinity,
|
||||||
|
.irq_cpu_offline = octeon_irq_cpu_offline_ciu,
|
||||||
#endif
|
#endif
|
||||||
.flags = IRQCHIP_SET_TYPE_MASKED,
|
.flags = IRQCHIP_SET_TYPE_MASKED,
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
#include <asm/mipsregs.h>
|
#include <asm/mipsregs.h>
|
||||||
|
|
||||||
.macro fpu_save_single thread tmp=t0
|
.macro fpu_save_single thread tmp=t0
|
||||||
|
.set push
|
||||||
|
SET_HARDFLOAT
|
||||||
cfc1 \tmp, fcr31
|
cfc1 \tmp, fcr31
|
||||||
swc1 $f0, THREAD_FPR0_LS64(\thread)
|
swc1 $f0, THREAD_FPR0_LS64(\thread)
|
||||||
swc1 $f1, THREAD_FPR1_LS64(\thread)
|
swc1 $f1, THREAD_FPR1_LS64(\thread)
|
||||||
|
@ -47,9 +49,12 @@
|
||||||
swc1 $f30, THREAD_FPR30_LS64(\thread)
|
swc1 $f30, THREAD_FPR30_LS64(\thread)
|
||||||
swc1 $f31, THREAD_FPR31_LS64(\thread)
|
swc1 $f31, THREAD_FPR31_LS64(\thread)
|
||||||
sw \tmp, THREAD_FCR31(\thread)
|
sw \tmp, THREAD_FCR31(\thread)
|
||||||
|
.set pop
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro fpu_restore_single thread tmp=t0
|
.macro fpu_restore_single thread tmp=t0
|
||||||
|
.set push
|
||||||
|
SET_HARDFLOAT
|
||||||
lw \tmp, THREAD_FCR31(\thread)
|
lw \tmp, THREAD_FCR31(\thread)
|
||||||
lwc1 $f0, THREAD_FPR0_LS64(\thread)
|
lwc1 $f0, THREAD_FPR0_LS64(\thread)
|
||||||
lwc1 $f1, THREAD_FPR1_LS64(\thread)
|
lwc1 $f1, THREAD_FPR1_LS64(\thread)
|
||||||
|
@ -84,6 +89,7 @@
|
||||||
lwc1 $f30, THREAD_FPR30_LS64(\thread)
|
lwc1 $f30, THREAD_FPR30_LS64(\thread)
|
||||||
lwc1 $f31, THREAD_FPR31_LS64(\thread)
|
lwc1 $f31, THREAD_FPR31_LS64(\thread)
|
||||||
ctc1 \tmp, fcr31
|
ctc1 \tmp, fcr31
|
||||||
|
.set pop
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro cpu_save_nonscratch thread
|
.macro cpu_save_nonscratch thread
|
||||||
|
|
|
@ -57,6 +57,8 @@
|
||||||
#endif /* CONFIG_CPU_MIPSR2 */
|
#endif /* CONFIG_CPU_MIPSR2 */
|
||||||
|
|
||||||
.macro fpu_save_16even thread tmp=t0
|
.macro fpu_save_16even thread tmp=t0
|
||||||
|
.set push
|
||||||
|
SET_HARDFLOAT
|
||||||
cfc1 \tmp, fcr31
|
cfc1 \tmp, fcr31
|
||||||
sdc1 $f0, THREAD_FPR0_LS64(\thread)
|
sdc1 $f0, THREAD_FPR0_LS64(\thread)
|
||||||
sdc1 $f2, THREAD_FPR2_LS64(\thread)
|
sdc1 $f2, THREAD_FPR2_LS64(\thread)
|
||||||
|
@ -75,11 +77,13 @@
|
||||||
sdc1 $f28, THREAD_FPR28_LS64(\thread)
|
sdc1 $f28, THREAD_FPR28_LS64(\thread)
|
||||||
sdc1 $f30, THREAD_FPR30_LS64(\thread)
|
sdc1 $f30, THREAD_FPR30_LS64(\thread)
|
||||||
sw \tmp, THREAD_FCR31(\thread)
|
sw \tmp, THREAD_FCR31(\thread)
|
||||||
|
.set pop
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro fpu_save_16odd thread
|
.macro fpu_save_16odd thread
|
||||||
.set push
|
.set push
|
||||||
.set mips64r2
|
.set mips64r2
|
||||||
|
SET_HARDFLOAT
|
||||||
sdc1 $f1, THREAD_FPR1_LS64(\thread)
|
sdc1 $f1, THREAD_FPR1_LS64(\thread)
|
||||||
sdc1 $f3, THREAD_FPR3_LS64(\thread)
|
sdc1 $f3, THREAD_FPR3_LS64(\thread)
|
||||||
sdc1 $f5, THREAD_FPR5_LS64(\thread)
|
sdc1 $f5, THREAD_FPR5_LS64(\thread)
|
||||||
|
@ -110,6 +114,8 @@
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro fpu_restore_16even thread tmp=t0
|
.macro fpu_restore_16even thread tmp=t0
|
||||||
|
.set push
|
||||||
|
SET_HARDFLOAT
|
||||||
lw \tmp, THREAD_FCR31(\thread)
|
lw \tmp, THREAD_FCR31(\thread)
|
||||||
ldc1 $f0, THREAD_FPR0_LS64(\thread)
|
ldc1 $f0, THREAD_FPR0_LS64(\thread)
|
||||||
ldc1 $f2, THREAD_FPR2_LS64(\thread)
|
ldc1 $f2, THREAD_FPR2_LS64(\thread)
|
||||||
|
@ -133,6 +139,7 @@
|
||||||
.macro fpu_restore_16odd thread
|
.macro fpu_restore_16odd thread
|
||||||
.set push
|
.set push
|
||||||
.set mips64r2
|
.set mips64r2
|
||||||
|
SET_HARDFLOAT
|
||||||
ldc1 $f1, THREAD_FPR1_LS64(\thread)
|
ldc1 $f1, THREAD_FPR1_LS64(\thread)
|
||||||
ldc1 $f3, THREAD_FPR3_LS64(\thread)
|
ldc1 $f3, THREAD_FPR3_LS64(\thread)
|
||||||
ldc1 $f5, THREAD_FPR5_LS64(\thread)
|
ldc1 $f5, THREAD_FPR5_LS64(\thread)
|
||||||
|
@ -277,6 +284,7 @@
|
||||||
.macro cfcmsa rd, cs
|
.macro cfcmsa rd, cs
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
.insn
|
.insn
|
||||||
.word CFC_MSA_INSN | (\cs << 11)
|
.word CFC_MSA_INSN | (\cs << 11)
|
||||||
move \rd, $1
|
move \rd, $1
|
||||||
|
@ -286,6 +294,7 @@
|
||||||
.macro ctcmsa cd, rs
|
.macro ctcmsa cd, rs
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
move $1, \rs
|
move $1, \rs
|
||||||
.word CTC_MSA_INSN | (\cd << 6)
|
.word CTC_MSA_INSN | (\cd << 6)
|
||||||
.set pop
|
.set pop
|
||||||
|
@ -294,6 +303,7 @@
|
||||||
.macro ld_d wd, off, base
|
.macro ld_d wd, off, base
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
add $1, \base, \off
|
add $1, \base, \off
|
||||||
.word LDD_MSA_INSN | (\wd << 6)
|
.word LDD_MSA_INSN | (\wd << 6)
|
||||||
.set pop
|
.set pop
|
||||||
|
@ -302,6 +312,7 @@
|
||||||
.macro st_d wd, off, base
|
.macro st_d wd, off, base
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
add $1, \base, \off
|
add $1, \base, \off
|
||||||
.word STD_MSA_INSN | (\wd << 6)
|
.word STD_MSA_INSN | (\wd << 6)
|
||||||
.set pop
|
.set pop
|
||||||
|
@ -310,6 +321,7 @@
|
||||||
.macro copy_u_w rd, ws, n
|
.macro copy_u_w rd, ws, n
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
.insn
|
.insn
|
||||||
.word COPY_UW_MSA_INSN | (\n << 16) | (\ws << 11)
|
.word COPY_UW_MSA_INSN | (\n << 16) | (\ws << 11)
|
||||||
/* move triggers an assembler bug... */
|
/* move triggers an assembler bug... */
|
||||||
|
@ -320,6 +332,7 @@
|
||||||
.macro copy_u_d rd, ws, n
|
.macro copy_u_d rd, ws, n
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
.insn
|
.insn
|
||||||
.word COPY_UD_MSA_INSN | (\n << 16) | (\ws << 11)
|
.word COPY_UD_MSA_INSN | (\n << 16) | (\ws << 11)
|
||||||
/* move triggers an assembler bug... */
|
/* move triggers an assembler bug... */
|
||||||
|
@ -330,6 +343,7 @@
|
||||||
.macro insert_w wd, n, rs
|
.macro insert_w wd, n, rs
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
/* move triggers an assembler bug... */
|
/* move triggers an assembler bug... */
|
||||||
or $1, \rs, zero
|
or $1, \rs, zero
|
||||||
.word INSERT_W_MSA_INSN | (\n << 16) | (\wd << 6)
|
.word INSERT_W_MSA_INSN | (\n << 16) | (\wd << 6)
|
||||||
|
@ -339,6 +353,7 @@
|
||||||
.macro insert_d wd, n, rs
|
.macro insert_d wd, n, rs
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
/* move triggers an assembler bug... */
|
/* move triggers an assembler bug... */
|
||||||
or $1, \rs, zero
|
or $1, \rs, zero
|
||||||
.word INSERT_D_MSA_INSN | (\n << 16) | (\wd << 6)
|
.word INSERT_D_MSA_INSN | (\n << 16) | (\wd << 6)
|
||||||
|
@ -381,6 +396,7 @@
|
||||||
st_d 31, THREAD_FPR31, \thread
|
st_d 31, THREAD_FPR31, \thread
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
cfcmsa $1, MSA_CSR
|
cfcmsa $1, MSA_CSR
|
||||||
sw $1, THREAD_MSA_CSR(\thread)
|
sw $1, THREAD_MSA_CSR(\thread)
|
||||||
.set pop
|
.set pop
|
||||||
|
@ -389,6 +405,7 @@
|
||||||
.macro msa_restore_all thread
|
.macro msa_restore_all thread
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
lw $1, THREAD_MSA_CSR(\thread)
|
lw $1, THREAD_MSA_CSR(\thread)
|
||||||
ctcmsa MSA_CSR, $1
|
ctcmsa MSA_CSR, $1
|
||||||
.set pop
|
.set pop
|
||||||
|
@ -441,6 +458,7 @@
|
||||||
.macro msa_init_all_upper
|
.macro msa_init_all_upper
|
||||||
.set push
|
.set push
|
||||||
.set noat
|
.set noat
|
||||||
|
SET_HARDFLOAT
|
||||||
not $1, zero
|
not $1, zero
|
||||||
msa_init_upper 0
|
msa_init_upper 0
|
||||||
.set pop
|
.set pop
|
||||||
|
|
|
@ -14,6 +14,20 @@
|
||||||
|
|
||||||
#include <asm/sgidefs.h>
|
#include <asm/sgidefs.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* starting with binutils 2.24.51.20140729, MIPS binutils warn about mixing
|
||||||
|
* hardfloat and softfloat object files. The kernel build uses soft-float by
|
||||||
|
* default, so we also need to pass -msoft-float along to GAS if it supports it.
|
||||||
|
* But this in turn causes assembler errors in files which access hardfloat
|
||||||
|
* registers. We detect if GAS supports "-msoft-float" in the Makefile and
|
||||||
|
* explicitly put ".set hardfloat" where floating point registers are touched.
|
||||||
|
*/
|
||||||
|
#ifdef GAS_HAS_SET_HARDFLOAT
|
||||||
|
#define SET_HARDFLOAT .set hardfloat
|
||||||
|
#else
|
||||||
|
#define SET_HARDFLOAT
|
||||||
|
#endif
|
||||||
|
|
||||||
#if _MIPS_SIM == _MIPS_SIM_ABI32
|
#if _MIPS_SIM == _MIPS_SIM_ABI32
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -145,8 +145,8 @@ static inline void lose_fpu(int save)
|
||||||
if (is_msa_enabled()) {
|
if (is_msa_enabled()) {
|
||||||
if (save) {
|
if (save) {
|
||||||
save_msa(current);
|
save_msa(current);
|
||||||
asm volatile("cfc1 %0, $31"
|
current->thread.fpu.fcr31 =
|
||||||
: "=r"(current->thread.fpu.fcr31));
|
read_32bit_cp1_register(CP1_STATUS);
|
||||||
}
|
}
|
||||||
disable_msa();
|
disable_msa();
|
||||||
clear_thread_flag(TIF_USEDMSA);
|
clear_thread_flag(TIF_USEDMSA);
|
||||||
|
|
|
@ -20,9 +20,15 @@
|
||||||
#define WORD_INSN ".word"
|
#define WORD_INSN ".word"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_MICROMIPS
|
||||||
|
#define NOP_INSN "nop32"
|
||||||
|
#else
|
||||||
|
#define NOP_INSN "nop"
|
||||||
|
#endif
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key)
|
static __always_inline bool arch_static_branch(struct static_key *key)
|
||||||
{
|
{
|
||||||
asm_volatile_goto("1:\tnop\n\t"
|
asm_volatile_goto("1:\t" NOP_INSN "\n\t"
|
||||||
"nop\n\t"
|
"nop\n\t"
|
||||||
".pushsection __jump_table, \"aw\"\n\t"
|
".pushsection __jump_table, \"aw\"\n\t"
|
||||||
WORD_INSN " 1b, %l[l_yes], %0\n\t"
|
WORD_INSN " 1b, %l[l_yes], %0\n\t"
|
||||||
|
|
|
@ -41,10 +41,8 @@
|
||||||
#define cpu_has_mcheck 0
|
#define cpu_has_mcheck 0
|
||||||
#define cpu_has_mdmx 0
|
#define cpu_has_mdmx 0
|
||||||
#define cpu_has_mips16 0
|
#define cpu_has_mips16 0
|
||||||
#define cpu_has_mips32r1 0
|
|
||||||
#define cpu_has_mips32r2 0
|
#define cpu_has_mips32r2 0
|
||||||
#define cpu_has_mips3d 0
|
#define cpu_has_mips3d 0
|
||||||
#define cpu_has_mips64r1 0
|
|
||||||
#define cpu_has_mips64r2 0
|
#define cpu_has_mips64r2 0
|
||||||
#define cpu_has_mipsmt 0
|
#define cpu_has_mipsmt 0
|
||||||
#define cpu_has_prefetch 0
|
#define cpu_has_prefetch 0
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue