Snap for 8757289 from a71f2e154d
to android12-5.10-keystone-qcom-release
Change-Id: Iceb62c0926a06ba3c1ba1b1b68f0618cba383575
This commit is contained in:
@@ -787,6 +787,7 @@ bit 1 print system memory info
|
|||||||
bit 2 print timer info
|
bit 2 print timer info
|
||||||
bit 3 print locks info if ``CONFIG_LOCKDEP`` is on
|
bit 3 print locks info if ``CONFIG_LOCKDEP`` is on
|
||||||
bit 4 print ftrace buffer
|
bit 4 print ftrace buffer
|
||||||
|
bit 5 print all printk messages in buffer
|
||||||
===== ============================================
|
===== ============================================
|
||||||
|
|
||||||
So for example to print tasks and memory info on panic, user can::
|
So for example to print tasks and memory info on panic, user can::
|
||||||
|
@@ -130,3 +130,11 @@ accesses to DMA buffers in both privileged "supervisor" and unprivileged
|
|||||||
subsystem that the buffer is fully accessible at the elevated privilege
|
subsystem that the buffer is fully accessible at the elevated privilege
|
||||||
level (and ideally inaccessible or at least read-only at the
|
level (and ideally inaccessible or at least read-only at the
|
||||||
lesser-privileged levels).
|
lesser-privileged levels).
|
||||||
|
|
||||||
|
DMA_ATTR_OVERWRITE
|
||||||
|
------------------
|
||||||
|
|
||||||
|
This is a hint to the DMA-mapping subsystem that the device is expected to
|
||||||
|
overwrite the entire mapped size, thus the caller does not require any of the
|
||||||
|
previous buffer contents to be preserved. This allows bounce-buffering
|
||||||
|
implementations to optimise DMA_FROM_DEVICE transfers.
|
||||||
|
@@ -44,7 +44,7 @@ patternProperties:
|
|||||||
properties:
|
properties:
|
||||||
reg:
|
reg:
|
||||||
description:
|
description:
|
||||||
Contains the native Ready/Busy IDs.
|
Contains the chip-select IDs.
|
||||||
|
|
||||||
nand-ecc-mode:
|
nand-ecc-mode:
|
||||||
description:
|
description:
|
||||||
@@ -174,6 +174,6 @@ examples:
|
|||||||
nand-ecc-mode = "soft";
|
nand-ecc-mode = "soft";
|
||||||
nand-ecc-algo = "bch";
|
nand-ecc-algo = "bch";
|
||||||
|
|
||||||
/* controller specific properties */
|
/* NAND chip specific properties */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -8,11 +8,13 @@ Required properties:
|
|||||||
- reg: should contain 2 entries, one for the registers and one for the direct
|
- reg: should contain 2 entries, one for the registers and one for the direct
|
||||||
mapping area
|
mapping area
|
||||||
- reg-names: should contain "regs" and "dirmap"
|
- reg-names: should contain "regs" and "dirmap"
|
||||||
- interrupts: interrupt line connected to the SPI controller
|
|
||||||
- clock-names: should contain "ps_clk", "send_clk" and "send_dly_clk"
|
- clock-names: should contain "ps_clk", "send_clk" and "send_dly_clk"
|
||||||
- clocks: should contain 3 entries for the "ps_clk", "send_clk" and
|
- clocks: should contain 3 entries for the "ps_clk", "send_clk" and
|
||||||
"send_dly_clk" clocks
|
"send_dly_clk" clocks
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- interrupts: interrupt line connected to the SPI controller
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
spi@43c30000 {
|
spi@43c30000 {
|
||||||
|
@@ -168,7 +168,16 @@ Trees
|
|||||||
- The finalized and tagged releases of all stable kernels can be found
|
- The finalized and tagged releases of all stable kernels can be found
|
||||||
in separate branches per version at:
|
in separate branches per version at:
|
||||||
|
|
||||||
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
|
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
|
||||||
|
|
||||||
|
- The release candidate of all stable kernel versions can be found at:
|
||||||
|
|
||||||
|
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
The -stable-rc tree is a snapshot in time of the stable-queue tree and
|
||||||
|
will change frequently, hence will be rebased often. It should only be
|
||||||
|
used for testing purposes (e.g. to be consumed by CI systems).
|
||||||
|
|
||||||
|
|
||||||
Review committee
|
Review committee
|
||||||
|
@@ -261,6 +261,10 @@ alc-sense-combo
|
|||||||
huawei-mbx-stereo
|
huawei-mbx-stereo
|
||||||
Enable initialization verbs for Huawei MBX stereo speakers;
|
Enable initialization verbs for Huawei MBX stereo speakers;
|
||||||
might be risky, try this at your own risk
|
might be risky, try this at your own risk
|
||||||
|
alc298-samsung-headphone
|
||||||
|
Samsung laptops with ALC298
|
||||||
|
alc256-samsung-headphone
|
||||||
|
Samsung laptops with ALC256
|
||||||
|
|
||||||
ALC66x/67x/892
|
ALC66x/67x/892
|
||||||
==============
|
==============
|
||||||
|
@@ -198,6 +198,15 @@ The glob (~) accepts a wild card character (\*,?) and character classes
|
|||||||
prev_comm ~ "*sh*"
|
prev_comm ~ "*sh*"
|
||||||
prev_comm ~ "ba*sh"
|
prev_comm ~ "ba*sh"
|
||||||
|
|
||||||
|
If the field is a pointer that points into user space (for example
|
||||||
|
"filename" from sys_enter_openat), then you have to append ".ustring" to the
|
||||||
|
field name::
|
||||||
|
|
||||||
|
filename.ustring ~ "password"
|
||||||
|
|
||||||
|
As the kernel will have to know how to retrieve the memory that the pointer
|
||||||
|
is at from user space.
|
||||||
|
|
||||||
5.2 Setting filters
|
5.2 Setting filters
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
@@ -230,6 +239,16 @@ Currently the caret ('^') for an error always appears at the beginning of
|
|||||||
the filter string; the error message should still be useful though
|
the filter string; the error message should still be useful though
|
||||||
even without more accurate position info.
|
even without more accurate position info.
|
||||||
|
|
||||||
|
5.2.1 Filter limitations
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
If a filter is placed on a string pointer ``(char *)`` that does not point
|
||||||
|
to a string on the ring buffer, but instead points to kernel or user space
|
||||||
|
memory, then, for safety reasons, at most 1024 bytes of the content is
|
||||||
|
copied onto a temporary buffer to do the compare. If the copy of the memory
|
||||||
|
faults (the pointer points to memory that should not be accessed), then the
|
||||||
|
string compare will be treated as not matching.
|
||||||
|
|
||||||
5.3 Clearing filters
|
5.3 Clearing filters
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 10
|
PATCHLEVEL = 10
|
||||||
SUBLEVEL = 101
|
SUBLEVEL = 110
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Dare mighty things
|
NAME = Dare mighty things
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -3103,6 +3103,7 @@
|
|||||||
trace_raw_output_prep
|
trace_raw_output_prep
|
||||||
trace_seq_printf
|
trace_seq_printf
|
||||||
trace_seq_putc
|
trace_seq_putc
|
||||||
|
tracing_is_on
|
||||||
tracing_off
|
tracing_off
|
||||||
truncate_inode_pages_range
|
truncate_inode_pages_range
|
||||||
truncate_pagecache_range
|
truncate_pagecache_range
|
||||||
|
@@ -2034,6 +2034,7 @@
|
|||||||
resched_curr
|
resched_curr
|
||||||
reset_control_assert
|
reset_control_assert
|
||||||
reset_control_deassert
|
reset_control_deassert
|
||||||
|
__reset_control_get
|
||||||
reset_control_put
|
reset_control_put
|
||||||
reset_control_reset
|
reset_control_reset
|
||||||
resume_cpus
|
resume_cpus
|
||||||
|
@@ -43,7 +43,7 @@ SYSCALL_DEFINE0(arc_gettls)
|
|||||||
return task_thread_info(current)->thr_ptr;
|
return task_thread_info(current)->thr_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
SYSCALL_DEFINE3(arc_usr_cmpxchg, int *, uaddr, int, expected, int, new)
|
SYSCALL_DEFINE3(arc_usr_cmpxchg, int __user *, uaddr, int, expected, int, new)
|
||||||
{
|
{
|
||||||
struct pt_regs *regs = current_pt_regs();
|
struct pt_regs *regs = current_pt_regs();
|
||||||
u32 uval;
|
u32 uval;
|
||||||
|
@@ -118,7 +118,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_fwqspid_default: fwqspid_default {
|
pinctrl_fwqspid_default: fwqspid_default {
|
||||||
function = "FWQSPID";
|
function = "FWSPID";
|
||||||
groups = "FWQSPID";
|
groups = "FWQSPID";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -290,6 +290,7 @@
|
|||||||
|
|
||||||
hvs: hvs@7e400000 {
|
hvs: hvs@7e400000 {
|
||||||
compatible = "brcm,bcm2711-hvs";
|
compatible = "brcm,bcm2711-hvs";
|
||||||
|
reg = <0x7e400000 0x8000>;
|
||||||
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -432,12 +433,26 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
|
enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
|
||||||
|
|
||||||
|
/* Source for d/i-cache-line-size and d/i-cache-sets
|
||||||
|
* https://developer.arm.com/documentation/100095/0003
|
||||||
|
* /Level-1-Memory-System/About-the-L1-memory-system?lang=en
|
||||||
|
* Source for d/i-cache-size
|
||||||
|
* https://www.raspberrypi.com/documentation/computers
|
||||||
|
* /processors.html#bcm2711
|
||||||
|
*/
|
||||||
cpu0: cpu@0 {
|
cpu0: cpu@0 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a72";
|
compatible = "arm,cortex-a72";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000d8>;
|
cpu-release-addr = <0x0 0x000000d8>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
i-cache-size = <0xc000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu1: cpu@1 {
|
cpu1: cpu@1 {
|
||||||
@@ -446,6 +461,13 @@
|
|||||||
reg = <1>;
|
reg = <1>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000e0>;
|
cpu-release-addr = <0x0 0x000000e0>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
i-cache-size = <0xc000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu2: cpu@2 {
|
cpu2: cpu@2 {
|
||||||
@@ -454,6 +476,13 @@
|
|||||||
reg = <2>;
|
reg = <2>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000e8>;
|
cpu-release-addr = <0x0 0x000000e8>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
i-cache-size = <0xc000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu3: cpu@3 {
|
cpu3: cpu@3 {
|
||||||
@@ -462,6 +491,28 @@
|
|||||||
reg = <3>;
|
reg = <3>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000f0>;
|
cpu-release-addr = <0x0 0x000000f0>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
i-cache-size = <0xc000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 48KiB(size)/64(line-size)=768ways/3-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Source for d/i-cache-line-size and d/i-cache-sets
|
||||||
|
* https://developer.arm.com/documentation/100095/0003
|
||||||
|
* /Level-2-Memory-System/About-the-L2-memory-system?lang=en
|
||||||
|
* Source for d/i-cache-size
|
||||||
|
* https://www.raspberrypi.com/documentation/computers
|
||||||
|
* /processors.html#bcm2711
|
||||||
|
*/
|
||||||
|
l2: l2-cache0 {
|
||||||
|
compatible = "cache";
|
||||||
|
cache-size = <0x100000>;
|
||||||
|
cache-line-size = <64>;
|
||||||
|
cache-sets = <1024>; // 1MiB(size)/64(line-size)=16384ways/16-way set
|
||||||
|
cache-level = <2>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -40,12 +40,26 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
|
enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
|
||||||
|
|
||||||
|
/* Source for d/i-cache-line-size and d/i-cache-sets
|
||||||
|
* https://developer.arm.com/documentation/ddi0500/e/level-1-memory-system
|
||||||
|
* /about-the-l1-memory-system?lang=en
|
||||||
|
*
|
||||||
|
* Source for d/i-cache-size
|
||||||
|
* https://magpi.raspberrypi.com/articles/raspberry-pi-3-specs-benchmarks
|
||||||
|
*/
|
||||||
cpu0: cpu@0 {
|
cpu0: cpu@0 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a53";
|
compatible = "arm,cortex-a53";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000d8>;
|
cpu-release-addr = <0x0 0x000000d8>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||||
|
i-cache-size = <0x8000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu1: cpu@1 {
|
cpu1: cpu@1 {
|
||||||
@@ -54,6 +68,13 @@
|
|||||||
reg = <1>;
|
reg = <1>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000e0>;
|
cpu-release-addr = <0x0 0x000000e0>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||||
|
i-cache-size = <0x8000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu2: cpu@2 {
|
cpu2: cpu@2 {
|
||||||
@@ -62,6 +83,13 @@
|
|||||||
reg = <2>;
|
reg = <2>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000e8>;
|
cpu-release-addr = <0x0 0x000000e8>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||||
|
i-cache-size = <0x8000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu3: cpu@3 {
|
cpu3: cpu@3 {
|
||||||
@@ -70,6 +98,27 @@
|
|||||||
reg = <3>;
|
reg = <3>;
|
||||||
enable-method = "spin-table";
|
enable-method = "spin-table";
|
||||||
cpu-release-addr = <0x0 0x000000f0>;
|
cpu-release-addr = <0x0 0x000000f0>;
|
||||||
|
d-cache-size = <0x8000>;
|
||||||
|
d-cache-line-size = <64>;
|
||||||
|
d-cache-sets = <128>; // 32KiB(size)/64(line-size)=512ways/4-way set
|
||||||
|
i-cache-size = <0x8000>;
|
||||||
|
i-cache-line-size = <64>;
|
||||||
|
i-cache-sets = <256>; // 32KiB(size)/64(line-size)=512ways/2-way set
|
||||||
|
next-level-cache = <&l2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Source for cache-line-size + cache-sets
|
||||||
|
* https://developer.arm.com/documentation/ddi0500
|
||||||
|
* /e/level-2-memory-system/about-the-l2-memory-system?lang=en
|
||||||
|
* Source for cache-size
|
||||||
|
* https://datasheets.raspberrypi.com/cm/cm1-and-cm3-datasheet.pdf
|
||||||
|
*/
|
||||||
|
l2: l2-cache0 {
|
||||||
|
compatible = "cache";
|
||||||
|
cache-size = <0x80000>;
|
||||||
|
cache-line-size = <64>;
|
||||||
|
cache-sets = <512>; // 512KiB(size)/64(line-size)=8192ways/16-way set
|
||||||
|
cache-level = <2>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -3448,8 +3448,7 @@
|
|||||||
ti,timer-pwm;
|
ti,timer-pwm;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
timer15_target: target-module@2c000 { /* 0x4882c000, ap 17 02.0 */
|
||||||
target-module@2c000 { /* 0x4882c000, ap 17 02.0 */
|
|
||||||
compatible = "ti,sysc-omap4-timer", "ti,sysc";
|
compatible = "ti,sysc-omap4-timer", "ti,sysc";
|
||||||
reg = <0x2c000 0x4>,
|
reg = <0x2c000 0x4>,
|
||||||
<0x2c010 0x4>;
|
<0x2c010 0x4>;
|
||||||
@@ -3477,7 +3476,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
target-module@2e000 { /* 0x4882e000, ap 19 14.0 */
|
timer16_target: target-module@2e000 { /* 0x4882e000, ap 19 14.0 */
|
||||||
compatible = "ti,sysc-omap4-timer", "ti,sysc";
|
compatible = "ti,sysc-omap4-timer", "ti,sysc";
|
||||||
reg = <0x2e000 0x4>,
|
reg = <0x2e000 0x4>,
|
||||||
<0x2e010 0x4>;
|
<0x2e010 0x4>;
|
||||||
|
@@ -1093,20 +1093,20 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* Local timers, see ARM architected timer wrap erratum i940 */
|
/* Local timers, see ARM architected timer wrap erratum i940 */
|
||||||
&timer3_target {
|
&timer15_target {
|
||||||
ti,no-reset-on-init;
|
ti,no-reset-on-init;
|
||||||
ti,no-idle;
|
ti,no-idle;
|
||||||
timer@0 {
|
timer@0 {
|
||||||
assigned-clocks = <&l4per_clkctrl DRA7_L4PER_TIMER3_CLKCTRL 24>;
|
assigned-clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER15_CLKCTRL 24>;
|
||||||
assigned-clock-parents = <&timer_sys_clk_div>;
|
assigned-clock-parents = <&timer_sys_clk_div>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&timer4_target {
|
&timer16_target {
|
||||||
ti,no-reset-on-init;
|
ti,no-reset-on-init;
|
||||||
ti,no-idle;
|
ti,no-idle;
|
||||||
timer@0 {
|
timer@0 {
|
||||||
assigned-clocks = <&l4per_clkctrl DRA7_L4PER_TIMER4_CLKCTRL 24>;
|
assigned-clocks = <&l4per3_clkctrl DRA7_L4PER3_TIMER16_CLKCTRL 24>;
|
||||||
assigned-clock-parents = <&timer_sys_clk_div>;
|
assigned-clock-parents = <&timer_sys_clk_div>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -260,7 +260,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
uart3_data: uart3-data {
|
uart3_data: uart3-data {
|
||||||
samsung,pins = "gpa1-4", "gpa1-4";
|
samsung,pins = "gpa1-4", "gpa1-5";
|
||||||
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
|
samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
|
||||||
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
|
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
|
||||||
samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
|
samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
|
||||||
|
@@ -118,6 +118,9 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
ddc = <&i2c_2>;
|
ddc = <&i2c_2>;
|
||||||
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
||||||
|
vdd-supply = <&ldo8_reg>;
|
||||||
|
vdd_osc-supply = <&ldo10_reg>;
|
||||||
|
vdd_pll-supply = <&ldo8_reg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c_0 {
|
&i2c_0 {
|
||||||
|
@@ -124,6 +124,9 @@
|
|||||||
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&hdmi_hpd_irq>;
|
pinctrl-0 = <&hdmi_hpd_irq>;
|
||||||
|
vdd-supply = <&ldo6_reg>;
|
||||||
|
vdd_osc-supply = <&ldo7_reg>;
|
||||||
|
vdd_pll-supply = <&ldo6_reg>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&hsi2c_4 {
|
&hsi2c_4 {
|
||||||
|
@@ -53,6 +53,31 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
lvds-decoder {
|
||||||
|
compatible = "ti,ds90cf364a", "lvds-decoder";
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
lvds_decoder_in: endpoint {
|
||||||
|
remote-endpoint = <&lvds0_out>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
port@1 {
|
||||||
|
reg = <1>;
|
||||||
|
|
||||||
|
lvds_decoder_out: endpoint {
|
||||||
|
remote-endpoint = <&panel_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
panel {
|
panel {
|
||||||
compatible = "edt,etm0700g0dh6";
|
compatible = "edt,etm0700g0dh6";
|
||||||
pinctrl-0 = <&pinctrl_display_gpio>;
|
pinctrl-0 = <&pinctrl_display_gpio>;
|
||||||
@@ -61,7 +86,7 @@
|
|||||||
|
|
||||||
port {
|
port {
|
||||||
panel_in: endpoint {
|
panel_in: endpoint {
|
||||||
remote-endpoint = <&lvds0_out>;
|
remote-endpoint = <&lvds_decoder_out>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -450,7 +475,7 @@
|
|||||||
reg = <2>;
|
reg = <2>;
|
||||||
|
|
||||||
lvds0_out: endpoint {
|
lvds0_out: endpoint {
|
||||||
remote-endpoint = <&panel_in>;
|
remote-endpoint = <&lvds_decoder_in>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
dailink_master: simple-audio-card,codec {
|
dailink_master: simple-audio-card,codec {
|
||||||
sound-dai = <&codec>;
|
sound-dai = <&codec>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -293,7 +293,7 @@
|
|||||||
compatible = "fsl,sgtl5000";
|
compatible = "fsl,sgtl5000";
|
||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
reg = <0x0a>;
|
reg = <0x0a>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_sai1_mclk>;
|
pinctrl-0 = <&pinctrl_sai1_mclk>;
|
||||||
VDDA-supply = <®_module_3v3_avdd>;
|
VDDA-supply = <®_module_3v3_avdd>;
|
||||||
|
@@ -250,7 +250,7 @@
|
|||||||
tlv320aic32x4: audio-codec@18 {
|
tlv320aic32x4: audio-codec@18 {
|
||||||
compatible = "ti,tlv320aic32x4";
|
compatible = "ti,tlv320aic32x4";
|
||||||
reg = <0x18>;
|
reg = <0x18>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
clock-names = "mclk";
|
clock-names = "mclk";
|
||||||
ldoin-supply = <®_audio_3v3>;
|
ldoin-supply = <®_audio_3v3>;
|
||||||
iov-supply = <®_audio_3v3>;
|
iov-supply = <®_audio_3v3>;
|
||||||
|
@@ -288,7 +288,7 @@
|
|||||||
codec: wm8960@1a {
|
codec: wm8960@1a {
|
||||||
compatible = "wlf,wm8960";
|
compatible = "wlf,wm8960";
|
||||||
reg = <0x1a>;
|
reg = <0x1a>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
clock-names = "mclk";
|
clock-names = "mclk";
|
||||||
wlf,shared-lrclk;
|
wlf,shared-lrclk;
|
||||||
};
|
};
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
dailink_master: simple-audio-card,codec {
|
dailink_master: simple-audio-card,codec {
|
||||||
sound-dai = <&sgtl5000>;
|
sound-dai = <&sgtl5000>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
reg = <0x0a>;
|
reg = <0x0a>;
|
||||||
compatible = "fsl,sgtl5000";
|
compatible = "fsl,sgtl5000";
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
VDDA-supply = <®_2p5v>;
|
VDDA-supply = <®_2p5v>;
|
||||||
VDDIO-supply = <®_vref_1v8>;
|
VDDIO-supply = <®_vref_1v8>;
|
||||||
};
|
};
|
||||||
|
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
dailink_master: simple-audio-card,codec {
|
dailink_master: simple-audio-card,codec {
|
||||||
sound-dai = <&sgtl5000>;
|
sound-dai = <&sgtl5000>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
reg = <0x0a>;
|
reg = <0x0a>;
|
||||||
compatible = "fsl,sgtl5000";
|
compatible = "fsl,sgtl5000";
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
VDDA-supply = <®_2p5v>;
|
VDDA-supply = <®_2p5v>;
|
||||||
VDDIO-supply = <®_vref_1v8>;
|
VDDIO-supply = <®_vref_1v8>;
|
||||||
};
|
};
|
||||||
|
@@ -378,14 +378,14 @@
|
|||||||
codec: wm8960@1a {
|
codec: wm8960@1a {
|
||||||
compatible = "wlf,wm8960";
|
compatible = "wlf,wm8960";
|
||||||
reg = <0x1a>;
|
reg = <0x1a>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
clock-names = "mclk";
|
clock-names = "mclk";
|
||||||
wlf,shared-lrclk;
|
wlf,shared-lrclk;
|
||||||
wlf,hp-cfg = <2 2 3>;
|
wlf,hp-cfg = <2 2 3>;
|
||||||
wlf,gpio-cfg = <1 3>;
|
wlf,gpio-cfg = <1 3>;
|
||||||
assigned-clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_SRC>,
|
assigned-clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_SRC>,
|
||||||
<&clks IMX7D_PLL_AUDIO_POST_DIV>,
|
<&clks IMX7D_PLL_AUDIO_POST_DIV>,
|
||||||
<&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
<&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
assigned-clock-parents = <&clks IMX7D_PLL_AUDIO_POST_DIV>;
|
assigned-clock-parents = <&clks IMX7D_PLL_AUDIO_POST_DIV>;
|
||||||
assigned-clock-rates = <0>, <884736000>, <12288000>;
|
assigned-clock-rates = <0>, <884736000>, <12288000>;
|
||||||
};
|
};
|
||||||
|
@@ -75,7 +75,7 @@
|
|||||||
|
|
||||||
dailink_master: simple-audio-card,codec {
|
dailink_master: simple-audio-card,codec {
|
||||||
sound-dai = <&codec>;
|
sound-dai = <&codec>;
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
#sound-dai-cells = <0>;
|
#sound-dai-cells = <0>;
|
||||||
reg = <0x0a>;
|
reg = <0x0a>;
|
||||||
compatible = "fsl,sgtl5000";
|
compatible = "fsl,sgtl5000";
|
||||||
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_CLK>;
|
clocks = <&clks IMX7D_AUDIO_MCLK_ROOT_DIV>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_sai1_mclk>;
|
pinctrl-0 = <&pinctrl_sai1_mclk>;
|
||||||
VDDA-supply = <&vgen4_reg>;
|
VDDA-supply = <&vgen4_reg>;
|
||||||
|
@@ -158,6 +158,24 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Unusable as clockevent because if unreliable oscillator, allow to idle */
|
||||||
|
&timer1_target {
|
||||||
|
/delete-property/ti,no-reset-on-init;
|
||||||
|
/delete-property/ti,no-idle;
|
||||||
|
timer@0 {
|
||||||
|
/delete-property/ti,timer-alwon;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Preferred timer for clockevent */
|
||||||
|
&timer12_target {
|
||||||
|
ti,no-reset-on-init;
|
||||||
|
ti,no-idle;
|
||||||
|
timer@0 {
|
||||||
|
/* Always clocked by secure_32k_fck */
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&twl_gpio {
|
&twl_gpio {
|
||||||
ti,use-leds;
|
ti,use-leds;
|
||||||
/*
|
/*
|
||||||
|
@@ -14,36 +14,3 @@
|
|||||||
display2 = &tv0;
|
display2 = &tv0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Unusable as clocksource because of unreliable oscillator */
|
|
||||||
&counter32k {
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Unusable as clockevent because if unreliable oscillator, allow to idle */
|
|
||||||
&timer1_target {
|
|
||||||
/delete-property/ti,no-reset-on-init;
|
|
||||||
/delete-property/ti,no-idle;
|
|
||||||
timer@0 {
|
|
||||||
/delete-property/ti,timer-alwon;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Preferred always-on timer for clocksource */
|
|
||||||
&timer12_target {
|
|
||||||
ti,no-reset-on-init;
|
|
||||||
ti,no-idle;
|
|
||||||
timer@0 {
|
|
||||||
/* Always clocked by secure_32k_fck */
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Preferred timer for clockevent */
|
|
||||||
&timer2_target {
|
|
||||||
ti,no-reset-on-init;
|
|
||||||
ti,no-idle;
|
|
||||||
timer@0 {
|
|
||||||
assigned-clocks = <&gpt2_fck>;
|
|
||||||
assigned-clock-parents = <&sys_ck>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
@@ -142,7 +142,8 @@
|
|||||||
clocks {
|
clocks {
|
||||||
sleep_clk: sleep_clk {
|
sleep_clk: sleep_clk {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
clock-frequency = <32768>;
|
clock-frequency = <32000>;
|
||||||
|
clock-output-names = "gcc_sleep_clk_src";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -146,7 +146,9 @@
|
|||||||
reg = <0x108000 0x1000>;
|
reg = <0x108000 0x1000>;
|
||||||
qcom,ipc = <&l2cc 0x8 2>;
|
qcom,ipc = <&l2cc 0x8 2>;
|
||||||
|
|
||||||
interrupts = <0 19 0>, <0 21 0>, <0 22 0>;
|
interrupts = <GIC_SPI 19 IRQ_TYPE_EDGE_RISING>,
|
||||||
|
<GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
|
||||||
|
<GIC_SPI 22 IRQ_TYPE_EDGE_RISING>;
|
||||||
interrupt-names = "ack", "err", "wakeup";
|
interrupt-names = "ack", "err", "wakeup";
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
@@ -192,7 +194,7 @@
|
|||||||
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
|
||||||
reg = <0x16440000 0x1000>,
|
reg = <0x16440000 0x1000>,
|
||||||
<0x16400000 0x1000>;
|
<0x16400000 0x1000>;
|
||||||
interrupts = <0 154 0x0>;
|
interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
|
clocks = <&gcc GSBI5_UART_CLK>, <&gcc GSBI5_H_CLK>;
|
||||||
clock-names = "core", "iface";
|
clock-names = "core", "iface";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@@ -318,7 +320,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
reg = <0x16080000 0x1000>;
|
reg = <0x16080000 0x1000>;
|
||||||
interrupts = <0 147 0>;
|
interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
spi-max-frequency = <24000000>;
|
spi-max-frequency = <24000000>;
|
||||||
cs-gpios = <&msmgpio 8 0>;
|
cs-gpios = <&msmgpio 8 0>;
|
||||||
|
|
||||||
|
@@ -640,8 +640,8 @@
|
|||||||
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
assigned-clocks = <&cru SCLK_HDMI_PHY>;
|
assigned-clocks = <&cru SCLK_HDMI_PHY>;
|
||||||
assigned-clock-parents = <&hdmi_phy>;
|
assigned-clock-parents = <&hdmi_phy>;
|
||||||
clocks = <&cru SCLK_HDMI_HDCP>, <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_CEC>;
|
clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>, <&cru SCLK_HDMI_CEC>;
|
||||||
clock-names = "isfr", "iahb", "cec";
|
clock-names = "iahb", "isfr", "cec";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&hdmii2c_xfer &hdmi_hpd &hdmi_cec>;
|
pinctrl-0 = <&hdmii2c_xfer &hdmi_hpd &hdmi_cec>;
|
||||||
resets = <&cru SRST_HDMI_P>;
|
resets = <&cru SRST_HDMI_P>;
|
||||||
|
@@ -990,7 +990,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
crypto: cypto-controller@ff8a0000 {
|
crypto: crypto@ff8a0000 {
|
||||||
compatible = "rockchip,rk3288-crypto";
|
compatible = "rockchip,rk3288-crypto";
|
||||||
reg = <0x0 0xff8a0000 0x0 0x4000>;
|
reg = <0x0 0xff8a0000 0x0 0x4000>;
|
||||||
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@@ -413,7 +413,7 @@
|
|||||||
pmecc: ecc-engine@f8014070 {
|
pmecc: ecc-engine@f8014070 {
|
||||||
compatible = "atmel,sama5d2-pmecc";
|
compatible = "atmel,sama5d2-pmecc";
|
||||||
reg = <0xf8014070 0x490>,
|
reg = <0xf8014070 0x490>,
|
||||||
<0xf8014500 0x100>;
|
<0xf8014500 0x200>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -136,9 +136,9 @@
|
|||||||
reg = <0xb4100000 0x1000>;
|
reg = <0xb4100000 0x1000>;
|
||||||
interrupts = <0 105 0x4>;
|
interrupts = <0 105 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
dmas = <&dwdma0 12 0 1>,
|
dmas = <&dwdma0 13 0 1>,
|
||||||
<&dwdma0 13 1 0>;
|
<&dwdma0 12 1 0>;
|
||||||
dma-names = "tx", "rx";
|
dma-names = "rx", "tx";
|
||||||
};
|
};
|
||||||
|
|
||||||
thermal@e07008c4 {
|
thermal@e07008c4 {
|
||||||
|
@@ -284,9 +284,9 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
interrupts = <0 31 0x4>;
|
interrupts = <0 31 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
dmas = <&dwdma0 4 0 0>,
|
dmas = <&dwdma0 5 0 0>,
|
||||||
<&dwdma0 5 0 0>;
|
<&dwdma0 4 0 0>;
|
||||||
dma-names = "tx", "rx";
|
dma-names = "rx", "tx";
|
||||||
};
|
};
|
||||||
|
|
||||||
rtc@e0580000 {
|
rtc@e0580000 {
|
||||||
|
@@ -524,6 +524,17 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gic: interrupt-controller@1c81000 {
|
||||||
|
compatible = "arm,gic-400";
|
||||||
|
reg = <0x01c81000 0x1000>,
|
||||||
|
<0x01c82000 0x2000>,
|
||||||
|
<0x01c84000 0x2000>,
|
||||||
|
<0x01c86000 0x2000>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <3>;
|
||||||
|
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
||||||
|
};
|
||||||
|
|
||||||
csi1: camera@1cb4000 {
|
csi1: camera@1cb4000 {
|
||||||
compatible = "allwinner,sun8i-v3s-csi";
|
compatible = "allwinner,sun8i-v3s-csi";
|
||||||
reg = <0x01cb4000 0x3000>;
|
reg = <0x01cb4000 0x3000>;
|
||||||
@@ -535,16 +546,5 @@
|
|||||||
resets = <&ccu RST_BUS_CSI>;
|
resets = <&ccu RST_BUS_CSI>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
gic: interrupt-controller@1c81000 {
|
|
||||||
compatible = "arm,gic-400";
|
|
||||||
reg = <0x01c81000 0x1000>,
|
|
||||||
<0x01c82000 0x2000>,
|
|
||||||
<0x01c84000 0x2000>,
|
|
||||||
<0x01c86000 0x2000>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupt-cells = <3>;
|
|
||||||
interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@@ -13,12 +13,15 @@
|
|||||||
"google,nyan-big-rev1", "google,nyan-big-rev0",
|
"google,nyan-big-rev1", "google,nyan-big-rev0",
|
||||||
"google,nyan-big", "google,nyan", "nvidia,tegra124";
|
"google,nyan-big", "google,nyan", "nvidia,tegra124";
|
||||||
|
|
||||||
|
host1x@50000000 {
|
||||||
|
dpaux@545c0000 {
|
||||||
|
aux-bus {
|
||||||
panel: panel {
|
panel: panel {
|
||||||
compatible = "auo,b133xtn01";
|
compatible = "auo,b133xtn01";
|
||||||
|
|
||||||
power-supply = <&vdd_3v3_panel>;
|
|
||||||
backlight = <&backlight>;
|
backlight = <&backlight>;
|
||||||
ddc-i2c-bus = <&dpaux>;
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mmc@700b0400 { /* SD Card on this bus */
|
mmc@700b0400 { /* SD Card on this bus */
|
||||||
|
@@ -15,12 +15,15 @@
|
|||||||
"google,nyan-blaze-rev0", "google,nyan-blaze",
|
"google,nyan-blaze-rev0", "google,nyan-blaze",
|
||||||
"google,nyan", "nvidia,tegra124";
|
"google,nyan", "nvidia,tegra124";
|
||||||
|
|
||||||
|
host1x@50000000 {
|
||||||
|
dpaux@545c0000 {
|
||||||
|
aux-bus {
|
||||||
panel: panel {
|
panel: panel {
|
||||||
compatible = "samsung,ltn140at29-301";
|
compatible = "samsung,ltn140at29-301";
|
||||||
|
|
||||||
power-supply = <&vdd_3v3_panel>;
|
|
||||||
backlight = <&backlight>;
|
backlight = <&backlight>;
|
||||||
ddc-i2c-bus = <&dpaux>;
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sound {
|
sound {
|
||||||
|
@@ -48,6 +48,13 @@
|
|||||||
dpaux@545c0000 {
|
dpaux@545c0000 {
|
||||||
vdd-supply = <&vdd_3v3_panel>;
|
vdd-supply = <&vdd_3v3_panel>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
aux-bus {
|
||||||
|
panel: panel {
|
||||||
|
compatible = "lg,lp129qe";
|
||||||
|
backlight = <&backlight>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1079,13 +1086,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
panel: panel {
|
|
||||||
compatible = "lg,lp129qe";
|
|
||||||
power-supply = <&vdd_3v3_panel>;
|
|
||||||
backlight = <&backlight>;
|
|
||||||
ddc-i2c-bus = <&dpaux>;
|
|
||||||
};
|
|
||||||
|
|
||||||
vdd_mux: regulator@0 {
|
vdd_mux: regulator@0 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "+VDD_MUX";
|
regulator-name = "+VDD_MUX";
|
||||||
|
@@ -183,8 +183,8 @@
|
|||||||
};
|
};
|
||||||
conf_ata {
|
conf_ata {
|
||||||
nvidia,pins = "ata", "atb", "atc", "atd", "ate",
|
nvidia,pins = "ata", "atb", "atc", "atd", "ate",
|
||||||
"cdev1", "cdev2", "dap1", "dtb", "gma",
|
"cdev1", "cdev2", "dap1", "dtb", "dtf",
|
||||||
"gmb", "gmc", "gmd", "gme", "gpu7",
|
"gma", "gmb", "gmc", "gmd", "gme", "gpu7",
|
||||||
"gpv", "i2cp", "irrx", "irtx", "pta",
|
"gpv", "i2cp", "irrx", "irtx", "pta",
|
||||||
"rm", "slxa", "slxk", "spia", "spib",
|
"rm", "slxa", "slxk", "spia", "spib",
|
||||||
"uac";
|
"uac";
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
};
|
};
|
||||||
conf_crtp {
|
conf_crtp {
|
||||||
nvidia,pins = "crtp", "dap2", "dap3", "dap4",
|
nvidia,pins = "crtp", "dap2", "dap3", "dap4",
|
||||||
"dtc", "dte", "dtf", "gpu", "sdio1",
|
"dtc", "dte", "gpu", "sdio1",
|
||||||
"slxc", "slxd", "spdi", "spdo", "spig",
|
"slxc", "slxd", "spdi", "spdo", "spig",
|
||||||
"uda";
|
"uda";
|
||||||
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
|
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
|
||||||
|
@@ -187,6 +187,7 @@ CONFIG_REGULATOR=y
|
|||||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||||
CONFIG_MEDIA_SUPPORT=y
|
CONFIG_MEDIA_SUPPORT=y
|
||||||
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
CONFIG_MEDIA_CAMERA_SUPPORT=y
|
||||||
|
CONFIG_MEDIA_PLATFORM_SUPPORT=y
|
||||||
CONFIG_V4L_PLATFORM_DRIVERS=y
|
CONFIG_V4L_PLATFORM_DRIVERS=y
|
||||||
CONFIG_VIDEO_ASPEED=m
|
CONFIG_VIDEO_ASPEED=m
|
||||||
CONFIG_VIDEO_ATMEL_ISI=m
|
CONFIG_VIDEO_ATMEL_ISI=m
|
||||||
|
@@ -102,6 +102,8 @@ config CRYPTO_AES_ARM_BS
|
|||||||
depends on KERNEL_MODE_NEON
|
depends on KERNEL_MODE_NEON
|
||||||
select CRYPTO_SKCIPHER
|
select CRYPTO_SKCIPHER
|
||||||
select CRYPTO_LIB_AES
|
select CRYPTO_LIB_AES
|
||||||
|
select CRYPTO_AES
|
||||||
|
select CRYPTO_CBC
|
||||||
select CRYPTO_SIMD
|
select CRYPTO_SIMD
|
||||||
help
|
help
|
||||||
Use a faster and more secure NEON based implementation of AES in CBC,
|
Use a faster and more secure NEON based implementation of AES in CBC,
|
||||||
|
@@ -22,10 +22,7 @@
|
|||||||
* mcount can be thought of as a function called in the middle of a subroutine
|
* mcount can be thought of as a function called in the middle of a subroutine
|
||||||
* call. As such, it needs to be transparent for both the caller and the
|
* call. As such, it needs to be transparent for both the caller and the
|
||||||
* callee: the original lr needs to be restored when leaving mcount, and no
|
* callee: the original lr needs to be restored when leaving mcount, and no
|
||||||
* registers should be clobbered. (In the __gnu_mcount_nc implementation, we
|
* registers should be clobbered.
|
||||||
* clobber the ip register. This is OK because the ARM calling convention
|
|
||||||
* allows it to be clobbered in subroutines and doesn't use it to hold
|
|
||||||
* parameters.)
|
|
||||||
*
|
*
|
||||||
* When using dynamic ftrace, we patch out the mcount call by a "pop {lr}"
|
* When using dynamic ftrace, we patch out the mcount call by a "pop {lr}"
|
||||||
* instead of the __gnu_mcount_nc call (see arch/arm/kernel/ftrace.c).
|
* instead of the __gnu_mcount_nc call (see arch/arm/kernel/ftrace.c).
|
||||||
@@ -70,24 +67,23 @@
|
|||||||
|
|
||||||
.macro __ftrace_regs_caller
|
.macro __ftrace_regs_caller
|
||||||
|
|
||||||
sub sp, sp, #8 @ space for PC and CPSR OLD_R0,
|
str lr, [sp, #-8]! @ store LR as PC and make space for CPSR/OLD_R0,
|
||||||
@ OLD_R0 will overwrite previous LR
|
@ OLD_R0 will overwrite previous LR
|
||||||
|
|
||||||
add ip, sp, #12 @ move in IP the value of SP as it was
|
|
||||||
@ before the push {lr} of the mcount mechanism
|
|
||||||
|
|
||||||
str lr, [sp, #0] @ store LR instead of PC
|
|
||||||
|
|
||||||
ldr lr, [sp, #8] @ get previous LR
|
ldr lr, [sp, #8] @ get previous LR
|
||||||
|
|
||||||
str r0, [sp, #8] @ write r0 as OLD_R0 over previous LR
|
str r0, [sp, #8] @ write r0 as OLD_R0 over previous LR
|
||||||
|
|
||||||
stmdb sp!, {ip, lr}
|
str lr, [sp, #-4]! @ store previous LR as LR
|
||||||
stmdb sp!, {r0-r11, lr}
|
|
||||||
|
add lr, sp, #16 @ move in LR the value of SP as it was
|
||||||
|
@ before the push {lr} of the mcount mechanism
|
||||||
|
|
||||||
|
push {r0-r11, ip, lr}
|
||||||
|
|
||||||
@ stack content at this point:
|
@ stack content at this point:
|
||||||
@ 0 4 48 52 56 60 64 68 72
|
@ 0 4 48 52 56 60 64 68 72
|
||||||
@ R0 | R1 | ... | LR | SP + 4 | previous LR | LR | PSR | OLD_R0 |
|
@ R0 | R1 | ... | IP | SP + 4 | previous LR | LR | PSR | OLD_R0 |
|
||||||
|
|
||||||
mov r3, sp @ struct pt_regs*
|
mov r3, sp @ struct pt_regs*
|
||||||
|
|
||||||
@@ -112,11 +108,9 @@ ftrace_graph_regs_call:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ pop saved regs
|
@ pop saved regs
|
||||||
ldmia sp!, {r0-r12} @ restore r0 through r12
|
pop {r0-r11, ip, lr} @ restore r0 through r12
|
||||||
ldr ip, [sp, #8] @ restore PC
|
ldr lr, [sp], #4 @ restore LR
|
||||||
ldr lr, [sp, #4] @ restore LR
|
ldr pc, [sp], #12
|
||||||
ldr sp, [sp, #0] @ restore SP
|
|
||||||
mov pc, ip @ return
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||||
@@ -132,11 +126,9 @@ ftrace_graph_regs_call:
|
|||||||
bl prepare_ftrace_return
|
bl prepare_ftrace_return
|
||||||
|
|
||||||
@ pop registers saved in ftrace_regs_caller
|
@ pop registers saved in ftrace_regs_caller
|
||||||
ldmia sp!, {r0-r12} @ restore r0 through r12
|
pop {r0-r11, ip, lr} @ restore r0 through r12
|
||||||
ldr ip, [sp, #8] @ restore PC
|
ldr lr, [sp], #4 @ restore LR
|
||||||
ldr lr, [sp, #4] @ restore LR
|
ldr pc, [sp], #12
|
||||||
ldr sp, [sp, #0] @ restore SP
|
|
||||||
mov pc, ip @ return
|
|
||||||
|
|
||||||
.endm
|
.endm
|
||||||
#endif
|
#endif
|
||||||
@@ -202,16 +194,17 @@ ftrace_graph_call\suffix:
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro mcount_exit
|
.macro mcount_exit
|
||||||
ldmia sp!, {r0-r3, ip, lr}
|
ldmia sp!, {r0-r3}
|
||||||
ret ip
|
ldr lr, [sp, #4]
|
||||||
|
ldr pc, [sp], #8
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
ENTRY(__gnu_mcount_nc)
|
ENTRY(__gnu_mcount_nc)
|
||||||
UNWIND(.fnstart)
|
UNWIND(.fnstart)
|
||||||
#ifdef CONFIG_DYNAMIC_FTRACE
|
#ifdef CONFIG_DYNAMIC_FTRACE
|
||||||
mov ip, lr
|
push {lr}
|
||||||
ldmia sp!, {lr}
|
ldr lr, [sp, #4]
|
||||||
ret ip
|
ldr pc, [sp], #8
|
||||||
#else
|
#else
|
||||||
__mcount
|
__mcount
|
||||||
#endif
|
#endif
|
||||||
|
@@ -154,22 +154,38 @@ static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int instr)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct undef_hook kgdb_brkpt_hook = {
|
static struct undef_hook kgdb_brkpt_arm_hook = {
|
||||||
.instr_mask = 0xffffffff,
|
.instr_mask = 0xffffffff,
|
||||||
.instr_val = KGDB_BREAKINST,
|
.instr_val = KGDB_BREAKINST,
|
||||||
.cpsr_mask = MODE_MASK,
|
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||||
.cpsr_val = SVC_MODE,
|
.cpsr_val = SVC_MODE,
|
||||||
.fn = kgdb_brk_fn
|
.fn = kgdb_brk_fn
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct undef_hook kgdb_compiled_brkpt_hook = {
|
static struct undef_hook kgdb_brkpt_thumb_hook = {
|
||||||
|
.instr_mask = 0xffff,
|
||||||
|
.instr_val = KGDB_BREAKINST & 0xffff,
|
||||||
|
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||||
|
.cpsr_val = PSR_T_BIT | SVC_MODE,
|
||||||
|
.fn = kgdb_brk_fn
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct undef_hook kgdb_compiled_brkpt_arm_hook = {
|
||||||
.instr_mask = 0xffffffff,
|
.instr_mask = 0xffffffff,
|
||||||
.instr_val = KGDB_COMPILED_BREAK,
|
.instr_val = KGDB_COMPILED_BREAK,
|
||||||
.cpsr_mask = MODE_MASK,
|
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||||
.cpsr_val = SVC_MODE,
|
.cpsr_val = SVC_MODE,
|
||||||
.fn = kgdb_compiled_brk_fn
|
.fn = kgdb_compiled_brk_fn
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct undef_hook kgdb_compiled_brkpt_thumb_hook = {
|
||||||
|
.instr_mask = 0xffff,
|
||||||
|
.instr_val = KGDB_COMPILED_BREAK & 0xffff,
|
||||||
|
.cpsr_mask = PSR_T_BIT | MODE_MASK,
|
||||||
|
.cpsr_val = PSR_T_BIT | SVC_MODE,
|
||||||
|
.fn = kgdb_compiled_brk_fn
|
||||||
|
};
|
||||||
|
|
||||||
static int __kgdb_notify(struct die_args *args, unsigned long cmd)
|
static int __kgdb_notify(struct die_args *args, unsigned long cmd)
|
||||||
{
|
{
|
||||||
struct pt_regs *regs = args->regs;
|
struct pt_regs *regs = args->regs;
|
||||||
@@ -210,8 +226,10 @@ int kgdb_arch_init(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
register_undef_hook(&kgdb_brkpt_hook);
|
register_undef_hook(&kgdb_brkpt_arm_hook);
|
||||||
register_undef_hook(&kgdb_compiled_brkpt_hook);
|
register_undef_hook(&kgdb_brkpt_thumb_hook);
|
||||||
|
register_undef_hook(&kgdb_compiled_brkpt_arm_hook);
|
||||||
|
register_undef_hook(&kgdb_compiled_brkpt_thumb_hook);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -224,8 +242,10 @@ int kgdb_arch_init(void)
|
|||||||
*/
|
*/
|
||||||
void kgdb_arch_exit(void)
|
void kgdb_arch_exit(void)
|
||||||
{
|
{
|
||||||
unregister_undef_hook(&kgdb_brkpt_hook);
|
unregister_undef_hook(&kgdb_brkpt_arm_hook);
|
||||||
unregister_undef_hook(&kgdb_compiled_brkpt_hook);
|
unregister_undef_hook(&kgdb_brkpt_thumb_hook);
|
||||||
|
unregister_undef_hook(&kgdb_compiled_brkpt_arm_hook);
|
||||||
|
unregister_undef_hook(&kgdb_compiled_brkpt_thumb_hook);
|
||||||
unregister_die_notifier(&kgdb_notifier);
|
unregister_die_notifier(&kgdb_notifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -195,7 +195,7 @@ static int swp_handler(struct pt_regs *regs, unsigned int instr)
|
|||||||
destreg, EXTRACT_REG_NUM(instr, RT2_OFFSET), data);
|
destreg, EXTRACT_REG_NUM(instr, RT2_OFFSET), data);
|
||||||
|
|
||||||
/* Check access in reasonable access range for both SWP and SWPB */
|
/* Check access in reasonable access range for both SWP and SWPB */
|
||||||
if (!access_ok((address & ~3), 4)) {
|
if (!access_ok((void __user *)(address & ~3), 4)) {
|
||||||
pr_debug("SWP{B} emulation: access to %p not allowed!\n",
|
pr_debug("SWP{B} emulation: access to %p not allowed!\n",
|
||||||
(void *)address);
|
(void *)address);
|
||||||
res = -EFAULT;
|
res = -EFAULT;
|
||||||
|
@@ -589,7 +589,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
|
|||||||
if (end < start || flags)
|
if (end < start || flags)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (!access_ok(start, end - start))
|
if (!access_ok((void __user *)start, end - start))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
return __do_cache_op(start, end);
|
return __do_cache_op(start, end);
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
mrc p6, 0, \irqstat, c8, c0, 0 @ Read IINTSRC
|
mrc p6, 0, \irqstat, c8, c0, 0 @ Read IINTSRC
|
||||||
cmp \irqstat, #0
|
cmp \irqstat, #0
|
||||||
clzne \irqnr, \irqstat
|
clzne \irqnr, \irqstat
|
||||||
rsbne \irqnr, \irqnr, #31
|
rsbne \irqnr, \irqnr, #32
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro arch_ret_to_user, tmp1, tmp2
|
.macro arch_ret_to_user, tmp1, tmp2
|
||||||
|
@@ -9,6 +9,6 @@
|
|||||||
#ifndef __IRQS_H
|
#ifndef __IRQS_H
|
||||||
#define __IRQS_H
|
#define __IRQS_H
|
||||||
|
|
||||||
#define NR_IRQS 32
|
#define NR_IRQS 33
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -32,14 +32,14 @@ static void intstr_write(u32 val)
|
|||||||
static void
|
static void
|
||||||
iop32x_irq_mask(struct irq_data *d)
|
iop32x_irq_mask(struct irq_data *d)
|
||||||
{
|
{
|
||||||
iop32x_mask &= ~(1 << d->irq);
|
iop32x_mask &= ~(1 << (d->irq - 1));
|
||||||
intctl_write(iop32x_mask);
|
intctl_write(iop32x_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iop32x_irq_unmask(struct irq_data *d)
|
iop32x_irq_unmask(struct irq_data *d)
|
||||||
{
|
{
|
||||||
iop32x_mask |= 1 << d->irq;
|
iop32x_mask |= 1 << (d->irq - 1);
|
||||||
intctl_write(iop32x_mask);
|
intctl_write(iop32x_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ void __init iop32x_init_irq(void)
|
|||||||
machine_is_em7210())
|
machine_is_em7210())
|
||||||
*IOP3XX_PCIIRSR = 0x0f;
|
*IOP3XX_PCIIRSR = 0x0f;
|
||||||
|
|
||||||
for (i = 0; i < NR_IRQS; i++) {
|
for (i = 1; i < NR_IRQS; i++) {
|
||||||
irq_set_chip_and_handler(i, &ext_chip, handle_level_irq);
|
irq_set_chip_and_handler(i, &ext_chip, handle_level_irq);
|
||||||
irq_clear_status_flags(i, IRQ_NOREQUEST | IRQ_NOPROBE);
|
irq_clear_status_flags(i, IRQ_NOREQUEST | IRQ_NOPROBE);
|
||||||
}
|
}
|
||||||
|
@@ -7,36 +7,40 @@
|
|||||||
#ifndef __IOP32X_IRQS_H
|
#ifndef __IOP32X_IRQS_H
|
||||||
#define __IOP32X_IRQS_H
|
#define __IOP32X_IRQS_H
|
||||||
|
|
||||||
|
/* Interrupts in Linux start at 1, hardware starts at 0 */
|
||||||
|
|
||||||
|
#define IOP_IRQ(x) ((x) + 1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IOP80321 chipset interrupts
|
* IOP80321 chipset interrupts
|
||||||
*/
|
*/
|
||||||
#define IRQ_IOP32X_DMA0_EOT 0
|
#define IRQ_IOP32X_DMA0_EOT IOP_IRQ(0)
|
||||||
#define IRQ_IOP32X_DMA0_EOC 1
|
#define IRQ_IOP32X_DMA0_EOC IOP_IRQ(1)
|
||||||
#define IRQ_IOP32X_DMA1_EOT 2
|
#define IRQ_IOP32X_DMA1_EOT IOP_IRQ(2)
|
||||||
#define IRQ_IOP32X_DMA1_EOC 3
|
#define IRQ_IOP32X_DMA1_EOC IOP_IRQ(3)
|
||||||
#define IRQ_IOP32X_AA_EOT 6
|
#define IRQ_IOP32X_AA_EOT IOP_IRQ(6)
|
||||||
#define IRQ_IOP32X_AA_EOC 7
|
#define IRQ_IOP32X_AA_EOC IOP_IRQ(7)
|
||||||
#define IRQ_IOP32X_CORE_PMON 8
|
#define IRQ_IOP32X_CORE_PMON IOP_IRQ(8)
|
||||||
#define IRQ_IOP32X_TIMER0 9
|
#define IRQ_IOP32X_TIMER0 IOP_IRQ(9)
|
||||||
#define IRQ_IOP32X_TIMER1 10
|
#define IRQ_IOP32X_TIMER1 IOP_IRQ(10)
|
||||||
#define IRQ_IOP32X_I2C_0 11
|
#define IRQ_IOP32X_I2C_0 IOP_IRQ(11)
|
||||||
#define IRQ_IOP32X_I2C_1 12
|
#define IRQ_IOP32X_I2C_1 IOP_IRQ(12)
|
||||||
#define IRQ_IOP32X_MESSAGING 13
|
#define IRQ_IOP32X_MESSAGING IOP_IRQ(13)
|
||||||
#define IRQ_IOP32X_ATU_BIST 14
|
#define IRQ_IOP32X_ATU_BIST IOP_IRQ(14)
|
||||||
#define IRQ_IOP32X_PERFMON 15
|
#define IRQ_IOP32X_PERFMON IOP_IRQ(15)
|
||||||
#define IRQ_IOP32X_CORE_PMU 16
|
#define IRQ_IOP32X_CORE_PMU IOP_IRQ(16)
|
||||||
#define IRQ_IOP32X_BIU_ERR 17
|
#define IRQ_IOP32X_BIU_ERR IOP_IRQ(17)
|
||||||
#define IRQ_IOP32X_ATU_ERR 18
|
#define IRQ_IOP32X_ATU_ERR IOP_IRQ(18)
|
||||||
#define IRQ_IOP32X_MCU_ERR 19
|
#define IRQ_IOP32X_MCU_ERR IOP_IRQ(19)
|
||||||
#define IRQ_IOP32X_DMA0_ERR 20
|
#define IRQ_IOP32X_DMA0_ERR IOP_IRQ(20)
|
||||||
#define IRQ_IOP32X_DMA1_ERR 21
|
#define IRQ_IOP32X_DMA1_ERR IOP_IRQ(21)
|
||||||
#define IRQ_IOP32X_AA_ERR 23
|
#define IRQ_IOP32X_AA_ERR IOP_IRQ(23)
|
||||||
#define IRQ_IOP32X_MSG_ERR 24
|
#define IRQ_IOP32X_MSG_ERR IOP_IRQ(24)
|
||||||
#define IRQ_IOP32X_SSP 25
|
#define IRQ_IOP32X_SSP IOP_IRQ(25)
|
||||||
#define IRQ_IOP32X_XINT0 27
|
#define IRQ_IOP32X_XINT0 IOP_IRQ(27)
|
||||||
#define IRQ_IOP32X_XINT1 28
|
#define IRQ_IOP32X_XINT1 IOP_IRQ(28)
|
||||||
#define IRQ_IOP32X_XINT2 29
|
#define IRQ_IOP32X_XINT2 IOP_IRQ(29)
|
||||||
#define IRQ_IOP32X_XINT3 30
|
#define IRQ_IOP32X_XINT3 IOP_IRQ(30)
|
||||||
#define IRQ_IOP32X_HPI 31
|
#define IRQ_IOP32X_HPI IOP_IRQ(31)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -72,6 +72,8 @@ static int sram_probe(struct platform_device *pdev)
|
|||||||
if (!info)
|
if (!info)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
platform_set_drvdata(pdev, info);
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
if (res == NULL) {
|
if (res == NULL) {
|
||||||
dev_err(&pdev->dev, "no memory resource defined\n");
|
dev_err(&pdev->dev, "no memory resource defined\n");
|
||||||
@@ -107,8 +109,6 @@ static int sram_probe(struct platform_device *pdev)
|
|||||||
list_add(&info->node, &sram_bank_list);
|
list_add(&info->node, &sram_bank_list);
|
||||||
mutex_unlock(&sram_lock);
|
mutex_unlock(&sram_lock);
|
||||||
|
|
||||||
platform_set_drvdata(pdev, info);
|
|
||||||
|
|
||||||
dev_info(&pdev->dev, "initialized\n");
|
dev_info(&pdev->dev, "initialized\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -127,9 +127,8 @@ static int sram_remove(struct platform_device *pdev)
|
|||||||
struct sram_bank_info *info;
|
struct sram_bank_info *info;
|
||||||
|
|
||||||
info = platform_get_drvdata(pdev);
|
info = platform_get_drvdata(pdev);
|
||||||
if (info == NULL)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
|
if (info->sram_size) {
|
||||||
mutex_lock(&sram_lock);
|
mutex_lock(&sram_lock);
|
||||||
list_del(&info->node);
|
list_del(&info->node);
|
||||||
mutex_unlock(&sram_lock);
|
mutex_unlock(&sram_lock);
|
||||||
@@ -137,7 +136,10 @@ static int sram_remove(struct platform_device *pdev)
|
|||||||
gen_pool_destroy(info->gpool);
|
gen_pool_destroy(info->gpool);
|
||||||
iounmap(info->sram_virt);
|
iounmap(info->sram_virt);
|
||||||
kfree(info->pool_name);
|
kfree(info->pool_name);
|
||||||
|
}
|
||||||
|
|
||||||
kfree(info);
|
kfree(info);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,6 +3,7 @@ menuconfig ARCH_MSTARV7
|
|||||||
depends on ARCH_MULTI_V7
|
depends on ARCH_MULTI_V7
|
||||||
select ARM_GIC
|
select ARM_GIC
|
||||||
select ARM_HEAVY_MB
|
select ARM_HEAVY_MB
|
||||||
|
select HAVE_ARM_ARCH_TIMER
|
||||||
select MST_IRQ
|
select MST_IRQ
|
||||||
help
|
help
|
||||||
Support for newer MStar/Sigmastar SoC families that are
|
Support for newer MStar/Sigmastar SoC families that are
|
||||||
|
@@ -263,9 +263,9 @@ static int __init omapdss_init_of(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
r = of_platform_populate(node, NULL, NULL, &pdev->dev);
|
r = of_platform_populate(node, NULL, NULL, &pdev->dev);
|
||||||
|
put_device(&pdev->dev);
|
||||||
if (r) {
|
if (r) {
|
||||||
pr_err("Unable to populate DSS submodule devices\n");
|
pr_err("Unable to populate DSS submodule devices\n");
|
||||||
put_device(&pdev->dev);
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -749,9 +749,11 @@ static int __init _init_clkctrl_providers(void)
|
|||||||
|
|
||||||
for_each_matching_node(np, ti_clkctrl_match_table) {
|
for_each_matching_node(np, ti_clkctrl_match_table) {
|
||||||
ret = _setup_clkctrl_provider(np);
|
ret = _setup_clkctrl_provider(np);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
of_node_put(np);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@@ -236,11 +236,11 @@ static int __init jive_mtdset(char *options)
|
|||||||
unsigned long set;
|
unsigned long set;
|
||||||
|
|
||||||
if (options == NULL || options[0] == '\0')
|
if (options == NULL || options[0] == '\0')
|
||||||
return 0;
|
return 1;
|
||||||
|
|
||||||
if (kstrtoul(options, 10, &set)) {
|
if (kstrtoul(options, 10, &set)) {
|
||||||
printk(KERN_ERR "failed to parse mtdset=%s\n", options);
|
printk(KERN_ERR "failed to parse mtdset=%s\n", options);
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (set) {
|
switch (set) {
|
||||||
@@ -255,7 +255,7 @@ static int __init jive_mtdset(char *options)
|
|||||||
"using default.", set);
|
"using default.", set);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse the mtdset= option given to the kernel command line */
|
/* parse the mtdset= option given to the kernel command line */
|
||||||
|
@@ -212,12 +212,14 @@ early_param("ecc", early_ecc);
|
|||||||
static int __init early_cachepolicy(char *p)
|
static int __init early_cachepolicy(char *p)
|
||||||
{
|
{
|
||||||
pr_warn("cachepolicy kernel parameter not supported without cp15\n");
|
pr_warn("cachepolicy kernel parameter not supported without cp15\n");
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
early_param("cachepolicy", early_cachepolicy);
|
early_param("cachepolicy", early_cachepolicy);
|
||||||
|
|
||||||
static int __init noalign_setup(char *__unused)
|
static int __init noalign_setup(char *__unused)
|
||||||
{
|
{
|
||||||
pr_warn("noalign kernel parameter not supported without cp15\n");
|
pr_warn("noalign kernel parameter not supported without cp15\n");
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
__setup("noalign", noalign_setup);
|
__setup("noalign", noalign_setup);
|
||||||
|
|
||||||
|
@@ -101,6 +101,12 @@
|
|||||||
no-map;
|
no-map;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
|
||||||
|
secmon_reserved_bl32: secmon@5300000 {
|
||||||
|
reg = <0x0 0x05300000 0x0 0x2000000>;
|
||||||
|
no-map;
|
||||||
|
};
|
||||||
|
|
||||||
linux,cma {
|
linux,cma {
|
||||||
compatible = "shared-dma-pool";
|
compatible = "shared-dma-pool";
|
||||||
reusable;
|
reusable;
|
||||||
|
@@ -157,14 +157,6 @@
|
|||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
reserved-memory {
|
|
||||||
/* TEE Reserved Memory */
|
|
||||||
bl32_reserved: bl32@5000000 {
|
|
||||||
reg = <0x0 0x05300000 0x0 0x2000000>;
|
|
||||||
no-map;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
sdio_pwrseq: sdio-pwrseq {
|
sdio_pwrseq: sdio-pwrseq {
|
||||||
compatible = "mmc-pwrseq-simple";
|
compatible = "mmc-pwrseq-simple";
|
||||||
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
||||||
|
@@ -43,6 +43,12 @@
|
|||||||
no-map;
|
no-map;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* 32 MiB reserved for ARM Trusted Firmware (BL32) */
|
||||||
|
secmon_reserved_bl32: secmon@5300000 {
|
||||||
|
reg = <0x0 0x05300000 0x0 0x2000000>;
|
||||||
|
no-map;
|
||||||
|
};
|
||||||
|
|
||||||
linux,cma {
|
linux,cma {
|
||||||
compatible = "shared-dma-pool";
|
compatible = "shared-dma-pool";
|
||||||
reusable;
|
reusable;
|
||||||
|
@@ -203,14 +203,6 @@
|
|||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
reserved-memory {
|
|
||||||
/* TEE Reserved Memory */
|
|
||||||
bl32_reserved: bl32@5000000 {
|
|
||||||
reg = <0x0 0x05300000 0x0 0x2000000>;
|
|
||||||
no-map;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
sdio_pwrseq: sdio-pwrseq {
|
sdio_pwrseq: sdio-pwrseq {
|
||||||
compatible = "mmc-pwrseq-simple";
|
compatible = "mmc-pwrseq-simple";
|
||||||
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
|
||||||
|
@@ -111,8 +111,8 @@
|
|||||||
compatible = "silabs,si3226x";
|
compatible = "silabs,si3226x";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
spi-max-frequency = <5000000>;
|
spi-max-frequency = <5000000>;
|
||||||
spi-cpha = <1>;
|
spi-cpha;
|
||||||
spi-cpol = <1>;
|
spi-cpol;
|
||||||
pl022,hierarchy = <0>;
|
pl022,hierarchy = <0>;
|
||||||
pl022,interface = <0>;
|
pl022,interface = <0>;
|
||||||
pl022,slave-tx-disable = <0>;
|
pl022,slave-tx-disable = <0>;
|
||||||
@@ -135,8 +135,8 @@
|
|||||||
at25,byte-len = <0x8000>;
|
at25,byte-len = <0x8000>;
|
||||||
at25,addr-mode = <2>;
|
at25,addr-mode = <2>;
|
||||||
at25,page-size = <64>;
|
at25,page-size = <64>;
|
||||||
spi-cpha = <1>;
|
spi-cpha;
|
||||||
spi-cpol = <1>;
|
spi-cpol;
|
||||||
pl022,hierarchy = <0>;
|
pl022,hierarchy = <0>;
|
||||||
pl022,interface = <0>;
|
pl022,interface = <0>;
|
||||||
pl022,slave-tx-disable = <0>;
|
pl022,slave-tx-disable = <0>;
|
||||||
|
@@ -687,7 +687,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sata: ahci@663f2000 {
|
sata: sata@663f2000 {
|
||||||
compatible = "brcm,iproc-ahci", "generic-ahci";
|
compatible = "brcm,iproc-ahci", "generic-ahci";
|
||||||
reg = <0x663f2000 0x1000>;
|
reg = <0x663f2000 0x1000>;
|
||||||
dma-coherent;
|
dma-coherent;
|
||||||
|
@@ -476,7 +476,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
usb0: usb@ffb00000 {
|
usb0: usb@ffb00000 {
|
||||||
compatible = "snps,dwc2";
|
compatible = "intel,socfpga-agilex-hsotg", "snps,dwc2";
|
||||||
reg = <0xffb00000 0x40000>;
|
reg = <0xffb00000 0x40000>;
|
||||||
interrupts = <0 93 4>;
|
interrupts = <0 93 4>;
|
||||||
phys = <&usbphy0>;
|
phys = <&usbphy0>;
|
||||||
@@ -489,7 +489,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
usb1: usb@ffb40000 {
|
usb1: usb@ffb40000 {
|
||||||
compatible = "snps,dwc2";
|
compatible = "intel,socfpga-agilex-hsotg", "snps,dwc2";
|
||||||
reg = <0xffb40000 0x40000>;
|
reg = <0xffb40000 0x40000>;
|
||||||
interrupts = <0 94 4>;
|
interrupts = <0 94 4>;
|
||||||
phys = <&usbphy0>;
|
phys = <&usbphy0>;
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
aliases {
|
aliases {
|
||||||
spi0 = &spi0;
|
spi0 = &spi0;
|
||||||
|
ethernet0 = ð0;
|
||||||
ethernet1 = ð1;
|
ethernet1 = ð1;
|
||||||
mmc0 = &sdhci0;
|
mmc0 = &sdhci0;
|
||||||
mmc1 = &sdhci1;
|
mmc1 = &sdhci1;
|
||||||
@@ -137,7 +138,9 @@
|
|||||||
/*
|
/*
|
||||||
* U-Boot port for Turris Mox has a bug which always expects that "ranges" DT property
|
* U-Boot port for Turris Mox has a bug which always expects that "ranges" DT property
|
||||||
* contains exactly 2 ranges with 3 (child) address cells, 2 (parent) address cells and
|
* contains exactly 2 ranges with 3 (child) address cells, 2 (parent) address cells and
|
||||||
* 2 size cells and also expects that the second range starts at 16 MB offset. If these
|
* 2 size cells and also expects that the second range starts at 16 MB offset. Also it
|
||||||
|
* expects that first range uses same address for PCI (child) and CPU (parent) cells (so
|
||||||
|
* no remapping) and that this address is the lowest from all specified ranges. If these
|
||||||
* conditions are not met then U-Boot crashes during loading kernel DTB file. PCIe address
|
* conditions are not met then U-Boot crashes during loading kernel DTB file. PCIe address
|
||||||
* space is 128 MB long, so the best split between MEM and IO is to use fixed 16 MB window
|
* space is 128 MB long, so the best split between MEM and IO is to use fixed 16 MB window
|
||||||
* for IO and the rest 112 MB (64+32+16) for MEM, despite that maximal IO size is just 64 kB.
|
* for IO and the rest 112 MB (64+32+16) for MEM, despite that maximal IO size is just 64 kB.
|
||||||
@@ -146,6 +149,9 @@
|
|||||||
* https://source.denx.de/u-boot/u-boot/-/commit/cb2ddb291ee6fcbddd6d8f4ff49089dfe580f5d7
|
* https://source.denx.de/u-boot/u-boot/-/commit/cb2ddb291ee6fcbddd6d8f4ff49089dfe580f5d7
|
||||||
* https://source.denx.de/u-boot/u-boot/-/commit/c64ac3b3185aeb3846297ad7391fc6df8ecd73bf
|
* https://source.denx.de/u-boot/u-boot/-/commit/c64ac3b3185aeb3846297ad7391fc6df8ecd73bf
|
||||||
* https://source.denx.de/u-boot/u-boot/-/commit/4a82fca8e330157081fc132a591ebd99ba02ee33
|
* https://source.denx.de/u-boot/u-boot/-/commit/4a82fca8e330157081fc132a591ebd99ba02ee33
|
||||||
|
* Bug related to requirement of same child and parent addresses for first range is fixed
|
||||||
|
* in U-Boot version 2022.04 by following commit:
|
||||||
|
* https://source.denx.de/u-boot/u-boot/-/commit/1fd54253bca7d43d046bba4853fe5fafd034bc17
|
||||||
*/
|
*/
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
@@ -495,7 +495,7 @@
|
|||||||
* (totaling 127 MiB) for MEM.
|
* (totaling 127 MiB) for MEM.
|
||||||
*/
|
*/
|
||||||
ranges = <0x82000000 0 0xe8000000 0 0xe8000000 0 0x07f00000 /* Port 0 MEM */
|
ranges = <0x82000000 0 0xe8000000 0 0xe8000000 0 0x07f00000 /* Port 0 MEM */
|
||||||
0x81000000 0 0xefff0000 0 0xefff0000 0 0x00010000>; /* Port 0 IO */
|
0x81000000 0 0x00000000 0 0xefff0000 0 0x00010000>; /* Port 0 IO */
|
||||||
interrupt-map-mask = <0 0 0 7>;
|
interrupt-map-mask = <0 0 0 7>;
|
||||||
interrupt-map = <0 0 0 1 &pcie_intc 0>,
|
interrupt-map = <0 0 0 1 &pcie_intc 0>,
|
||||||
<0 0 0 2 &pcie_intc 1>,
|
<0 0 0 2 &pcie_intc 1>,
|
||||||
|
@@ -3406,10 +3406,10 @@
|
|||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <9600000>;
|
clock-frequency = <9600000>;
|
||||||
clock-output-names = "mclk";
|
clock-output-names = "mclk";
|
||||||
qcom,micbias1-millivolt = <1800>;
|
qcom,micbias1-microvolt = <1800000>;
|
||||||
qcom,micbias2-millivolt = <1800>;
|
qcom,micbias2-microvolt = <1800000>;
|
||||||
qcom,micbias3-millivolt = <1800>;
|
qcom,micbias3-microvolt = <1800000>;
|
||||||
qcom,micbias4-millivolt = <1800>;
|
qcom,micbias4-microvolt = <1800000>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
@@ -1114,9 +1114,9 @@
|
|||||||
qcom,tcs-offset = <0xd00>;
|
qcom,tcs-offset = <0xd00>;
|
||||||
qcom,drv-id = <2>;
|
qcom,drv-id = <2>;
|
||||||
qcom,tcs-config = <ACTIVE_TCS 2>,
|
qcom,tcs-config = <ACTIVE_TCS 2>,
|
||||||
<SLEEP_TCS 1>,
|
<SLEEP_TCS 3>,
|
||||||
<WAKE_TCS 1>,
|
<WAKE_TCS 3>,
|
||||||
<CONTROL_TCS 0>;
|
<CONTROL_TCS 1>;
|
||||||
|
|
||||||
rpmhcc: clock-controller {
|
rpmhcc: clock-controller {
|
||||||
compatible = "qcom,sm8150-rpmh-clk";
|
compatible = "qcom,sm8150-rpmh-clk";
|
||||||
|
@@ -665,8 +665,8 @@
|
|||||||
sd-uhs-sdr104;
|
sd-uhs-sdr104;
|
||||||
|
|
||||||
/* Power supply */
|
/* Power supply */
|
||||||
vqmmc-supply = &vcc1v8_s3; /* IO line */
|
vqmmc-supply = <&vcc1v8_s3>; /* IO line */
|
||||||
vmmc-supply = &vcc_sdio; /* card's power */
|
vmmc-supply = <&vcc_sdio>; /* card's power */
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@@ -281,7 +281,7 @@
|
|||||||
|
|
||||||
sound: sound {
|
sound: sound {
|
||||||
compatible = "rockchip,rk3399-gru-sound";
|
compatible = "rockchip,rk3399-gru-sound";
|
||||||
rockchip,cpu = <&i2s0 &i2s2>;
|
rockchip,cpu = <&i2s0 &spdif>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -432,10 +432,6 @@ ap_i2c_audio: &i2c8 {
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2s2 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&io_domains {
|
&io_domains {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
@@ -532,6 +528,17 @@ ap_i2c_audio: &i2c8 {
|
|||||||
vqmmc-supply = <&ppvar_sd_card_io>;
|
vqmmc-supply = <&ppvar_sd_card_io>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&spdif {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SPDIF is routed internally to DP; we either don't use these pins, or
|
||||||
|
* mux them to something else.
|
||||||
|
*/
|
||||||
|
/delete-property/ pinctrl-0;
|
||||||
|
/delete-property/ pinctrl-names;
|
||||||
|
};
|
||||||
|
|
||||||
&spi1 {
|
&spi1 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
@@ -472,6 +472,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&sdhci {
|
&sdhci {
|
||||||
|
/*
|
||||||
|
* Signal integrity isn't great at 200MHz but 100MHz has proven stable
|
||||||
|
* enough.
|
||||||
|
*/
|
||||||
|
max-frequency = <100000000>;
|
||||||
|
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
mmc-hs400-1_8v;
|
mmc-hs400-1_8v;
|
||||||
mmc-hs400-enhanced-strobe;
|
mmc-hs400-enhanced-strobe;
|
||||||
|
@@ -1770,10 +1770,10 @@
|
|||||||
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
clocks = <&cru PCLK_HDMI_CTRL>,
|
clocks = <&cru PCLK_HDMI_CTRL>,
|
||||||
<&cru SCLK_HDMI_SFR>,
|
<&cru SCLK_HDMI_SFR>,
|
||||||
<&cru PLL_VPLL>,
|
<&cru SCLK_HDMI_CEC>,
|
||||||
<&cru PCLK_VIO_GRF>,
|
<&cru PCLK_VIO_GRF>,
|
||||||
<&cru SCLK_HDMI_CEC>;
|
<&cru PLL_VPLL>;
|
||||||
clock-names = "iahb", "isfr", "vpll", "grf", "cec";
|
clock-names = "iahb", "isfr", "cec", "grf", "vpll";
|
||||||
power-domains = <&power RK3399_PD_HDCP>;
|
power-domains = <&power RK3399_PD_HDCP>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <4>;
|
||||||
rockchip,grf = <&grf>;
|
rockchip,grf = <&grf>;
|
||||||
|
@@ -35,7 +35,10 @@
|
|||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
|
reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
|
||||||
<0x00 0x01880000 0x00 0x90000>; /* GICR */
|
<0x00 0x01880000 0x00 0x90000>, /* GICR */
|
||||||
|
<0x00 0x6f000000 0x00 0x2000>, /* GICC */
|
||||||
|
<0x00 0x6f010000 0x00 0x1000>, /* GICH */
|
||||||
|
<0x00 0x6f020000 0x00 0x2000>; /* GICV */
|
||||||
/*
|
/*
|
||||||
* vcpumntirq:
|
* vcpumntirq:
|
||||||
* virtual CPU interface maintenance interrupt
|
* virtual CPU interface maintenance interrupt
|
||||||
|
@@ -84,6 +84,7 @@
|
|||||||
<0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>,
|
<0x00 0x46000000 0x00 0x46000000 0x00 0x00200000>,
|
||||||
<0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>,
|
<0x00 0x47000000 0x00 0x47000000 0x00 0x00068400>,
|
||||||
<0x00 0x50000000 0x00 0x50000000 0x00 0x8000000>,
|
<0x00 0x50000000 0x00 0x50000000 0x00 0x8000000>,
|
||||||
|
<0x00 0x6f000000 0x00 0x6f000000 0x00 0x00310000>, /* A53 PERIPHBASE */
|
||||||
<0x00 0x70000000 0x00 0x70000000 0x00 0x200000>,
|
<0x00 0x70000000 0x00 0x70000000 0x00 0x200000>,
|
||||||
<0x05 0x00000000 0x05 0x00000000 0x01 0x0000000>,
|
<0x05 0x00000000 0x05 0x00000000 0x01 0x0000000>,
|
||||||
<0x07 0x00000000 0x07 0x00000000 0x01 0x0000000>;
|
<0x07 0x00000000 0x07 0x00000000 0x01 0x0000000>;
|
||||||
|
@@ -47,7 +47,10 @@
|
|||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
|
reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
|
||||||
<0x00 0x01900000 0x00 0x100000>; /* GICR */
|
<0x00 0x01900000 0x00 0x100000>, /* GICR */
|
||||||
|
<0x00 0x6f000000 0x00 0x2000>, /* GICC */
|
||||||
|
<0x00 0x6f010000 0x00 0x1000>, /* GICH */
|
||||||
|
<0x00 0x6f020000 0x00 0x2000>; /* GICV */
|
||||||
|
|
||||||
/* vcpumntirq: virtual CPU interface maintenance interrupt */
|
/* vcpumntirq: virtual CPU interface maintenance interrupt */
|
||||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@@ -127,6 +127,7 @@
|
|||||||
<0x00 0x00a40000 0x00 0x00a40000 0x00 0x00000800>, /* timesync router */
|
<0x00 0x00a40000 0x00 0x00a40000 0x00 0x00000800>, /* timesync router */
|
||||||
<0x00 0x01000000 0x00 0x01000000 0x00 0x0d000000>, /* Most peripherals */
|
<0x00 0x01000000 0x00 0x01000000 0x00 0x0d000000>, /* Most peripherals */
|
||||||
<0x00 0x30000000 0x00 0x30000000 0x00 0x0c400000>, /* MAIN NAVSS */
|
<0x00 0x30000000 0x00 0x30000000 0x00 0x0c400000>, /* MAIN NAVSS */
|
||||||
|
<0x00 0x6f000000 0x00 0x6f000000 0x00 0x00310000>, /* A72 PERIPHBASE */
|
||||||
<0x00 0x70000000 0x00 0x70000000 0x00 0x00800000>, /* MSMC RAM */
|
<0x00 0x70000000 0x00 0x70000000 0x00 0x00800000>, /* MSMC RAM */
|
||||||
<0x00 0x18000000 0x00 0x18000000 0x00 0x08000000>, /* PCIe1 DAT0 */
|
<0x00 0x18000000 0x00 0x18000000 0x00 0x08000000>, /* PCIe1 DAT0 */
|
||||||
<0x41 0x00000000 0x41 0x00000000 0x01 0x00000000>, /* PCIe1 DAT1 */
|
<0x41 0x00000000 0x41 0x00000000 0x01 0x00000000>, /* PCIe1 DAT1 */
|
||||||
|
@@ -108,7 +108,10 @@
|
|||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
|
reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */
|
||||||
<0x00 0x01900000 0x00 0x100000>; /* GICR */
|
<0x00 0x01900000 0x00 0x100000>, /* GICR */
|
||||||
|
<0x00 0x6f000000 0x00 0x2000>, /* GICC */
|
||||||
|
<0x00 0x6f010000 0x00 0x1000>, /* GICH */
|
||||||
|
<0x00 0x6f020000 0x00 0x2000>; /* GICV */
|
||||||
|
|
||||||
/* vcpumntirq: virtual CPU interface maintenance interrupt */
|
/* vcpumntirq: virtual CPU interface maintenance interrupt */
|
||||||
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@@ -136,6 +136,7 @@
|
|||||||
<0x00 0x0e000000 0x00 0x0e000000 0x00 0x01800000>, /* PCIe Core*/
|
<0x00 0x0e000000 0x00 0x0e000000 0x00 0x01800000>, /* PCIe Core*/
|
||||||
<0x00 0x10000000 0x00 0x10000000 0x00 0x10000000>, /* PCIe DAT */
|
<0x00 0x10000000 0x00 0x10000000 0x00 0x10000000>, /* PCIe DAT */
|
||||||
<0x00 0x64800000 0x00 0x64800000 0x00 0x00800000>, /* C71 */
|
<0x00 0x64800000 0x00 0x64800000 0x00 0x00800000>, /* C71 */
|
||||||
|
<0x00 0x6f000000 0x00 0x6f000000 0x00 0x00310000>, /* A72 PERIPHBASE */
|
||||||
<0x44 0x00000000 0x44 0x00000000 0x00 0x08000000>, /* PCIe2 DAT */
|
<0x44 0x00000000 0x44 0x00000000 0x00 0x08000000>, /* PCIe2 DAT */
|
||||||
<0x44 0x10000000 0x44 0x10000000 0x00 0x08000000>, /* PCIe3 DAT */
|
<0x44 0x10000000 0x44 0x10000000 0x00 0x08000000>, /* PCIe3 DAT */
|
||||||
<0x4d 0x80800000 0x4d 0x80800000 0x00 0x00800000>, /* C66_0 */
|
<0x4d 0x80800000 0x4d 0x80800000 0x00 0x00800000>, /* C66_0 */
|
||||||
|
@@ -840,7 +840,7 @@ CONFIG_DMADEVICES=y
|
|||||||
CONFIG_DMA_BCM2835=y
|
CONFIG_DMA_BCM2835=y
|
||||||
CONFIG_DMA_SUN6I=m
|
CONFIG_DMA_SUN6I=m
|
||||||
CONFIG_FSL_EDMA=y
|
CONFIG_FSL_EDMA=y
|
||||||
CONFIG_IMX_SDMA=y
|
CONFIG_IMX_SDMA=m
|
||||||
CONFIG_K3_DMA=y
|
CONFIG_K3_DMA=y
|
||||||
CONFIG_MV_XOR=y
|
CONFIG_MV_XOR=y
|
||||||
CONFIG_MV_XOR_V2=y
|
CONFIG_MV_XOR_V2=y
|
||||||
|
@@ -385,7 +385,6 @@ CONFIG_HVC_DCC=y
|
|||||||
CONFIG_HVC_DCC_SERIALIZE_SMP=y
|
CONFIG_HVC_DCC_SERIALIZE_SMP=y
|
||||||
CONFIG_SERIAL_DEV_BUS=y
|
CONFIG_SERIAL_DEV_BUS=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
# CONFIG_HW_RANDOM_CAVIUM is not set
|
|
||||||
# CONFIG_DEVMEM is not set
|
# CONFIG_DEVMEM is not set
|
||||||
# CONFIG_DEVPORT is not set
|
# CONFIG_DEVPORT is not set
|
||||||
# CONFIG_I2C_COMPAT is not set
|
# CONFIG_I2C_COMPAT is not set
|
||||||
|
@@ -56,14 +56,14 @@ enum arm64_bp_harden_el1_vectors {
|
|||||||
DECLARE_PER_CPU_READ_MOSTLY(const char *, this_cpu_vector);
|
DECLARE_PER_CPU_READ_MOSTLY(const char *, this_cpu_vector);
|
||||||
|
|
||||||
#ifndef CONFIG_UNMAP_KERNEL_AT_EL0
|
#ifndef CONFIG_UNMAP_KERNEL_AT_EL0
|
||||||
#define TRAMP_VALIAS 0
|
#define TRAMP_VALIAS 0ul
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline const char *
|
static inline const char *
|
||||||
arm64_get_bp_hardening_vector(enum arm64_bp_harden_el1_vectors slot)
|
arm64_get_bp_hardening_vector(enum arm64_bp_harden_el1_vectors slot)
|
||||||
{
|
{
|
||||||
if (arm64_kernel_unmapped_at_el0())
|
if (arm64_kernel_unmapped_at_el0())
|
||||||
return (char *)TRAMP_VALIAS + SZ_2K * slot;
|
return (char *)(TRAMP_VALIAS + SZ_2K * slot);
|
||||||
|
|
||||||
WARN_ON_ONCE(slot == EL1_VECTOR_KPTI);
|
WARN_ON_ONCE(slot == EL1_VECTOR_KPTI);
|
||||||
|
|
||||||
|
@@ -572,10 +572,12 @@ static int setup_sigframe_layout(struct rt_sigframe_user_layout *user,
|
|||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
if (system_supports_fpsimd()) {
|
||||||
err = sigframe_alloc(user, &user->fpsimd_offset,
|
err = sigframe_alloc(user, &user->fpsimd_offset,
|
||||||
sizeof(struct fpsimd_context));
|
sizeof(struct fpsimd_context));
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
/* fault information, if valid */
|
/* fault information, if valid */
|
||||||
if (add_all || current->thread.fault_code) {
|
if (add_all || current->thread.fault_code) {
|
||||||
|
@@ -248,6 +248,8 @@ unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,
|
|||||||
IRQCHIP_STATE_PENDING,
|
IRQCHIP_STATE_PENDING,
|
||||||
&val);
|
&val);
|
||||||
WARN_RATELIMIT(err, "IRQ %d", irq->host_irq);
|
WARN_RATELIMIT(err, "IRQ %d", irq->host_irq);
|
||||||
|
} else if (vgic_irq_is_mapped_level(irq)) {
|
||||||
|
val = vgic_get_phys_line_level(irq);
|
||||||
} else {
|
} else {
|
||||||
val = irq_is_pending(irq);
|
val = irq_is_pending(irq);
|
||||||
}
|
}
|
||||||
|
@@ -59,8 +59,34 @@ EXPORT_SYMBOL(memstart_addr);
|
|||||||
* unless restricted on specific platforms (e.g. 30-bit on Raspberry Pi 4).
|
* unless restricted on specific platforms (e.g. 30-bit on Raspberry Pi 4).
|
||||||
* In such case, ZONE_DMA32 covers the rest of the 32-bit addressable memory,
|
* In such case, ZONE_DMA32 covers the rest of the 32-bit addressable memory,
|
||||||
* otherwise it is empty.
|
* otherwise it is empty.
|
||||||
|
*
|
||||||
|
* Memory reservation for crash kernel either done early or deferred
|
||||||
|
* depending on DMA memory zones configs (ZONE_DMA) --
|
||||||
|
*
|
||||||
|
* In absence of ZONE_DMA configs arm64_dma_phys_limit initialized
|
||||||
|
* here instead of max_zone_phys(). This lets early reservation of
|
||||||
|
* crash kernel memory which has a dependency on arm64_dma_phys_limit.
|
||||||
|
* Reserving memory early for crash kernel allows linear creation of block
|
||||||
|
* mappings (greater than page-granularity) for all the memory bank rangs.
|
||||||
|
* In this scheme a comparatively quicker boot is observed.
|
||||||
|
*
|
||||||
|
* If ZONE_DMA configs are defined, crash kernel memory reservation
|
||||||
|
* is delayed until DMA zone memory range size initilazation performed in
|
||||||
|
* zone_sizes_init(). The defer is necessary to steer clear of DMA zone
|
||||||
|
* memory range to avoid overlap allocation. So crash kernel memory boundaries
|
||||||
|
* are not known when mapping all bank memory ranges, which otherwise means
|
||||||
|
* not possible to exclude crash kernel range from creating block mappings
|
||||||
|
* so page-granularity mappings are created for the entire memory range.
|
||||||
|
* Hence a slightly slower boot is observed.
|
||||||
|
*
|
||||||
|
* Note: Page-granularity mapppings are necessary for crash kernel memory
|
||||||
|
* range for shrinking its size via /sys/kernel/kexec_crash_size interface.
|
||||||
*/
|
*/
|
||||||
phys_addr_t arm64_dma_phys_limit __ro_after_init;
|
#if IS_ENABLED(CONFIG_ZONE_DMA) || IS_ENABLED(CONFIG_ZONE_DMA32)
|
||||||
|
phys_addr_t __ro_after_init arm64_dma_phys_limit;
|
||||||
|
#else
|
||||||
|
phys_addr_t __ro_after_init arm64_dma_phys_limit = PHYS_MASK + 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Provide a run-time mean of disabling ZONE_DMA32 if it is enabled via
|
* Provide a run-time mean of disabling ZONE_DMA32 if it is enabled via
|
||||||
@@ -217,8 +243,6 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max)
|
|||||||
if (!arm64_dma_phys_limit)
|
if (!arm64_dma_phys_limit)
|
||||||
arm64_dma_phys_limit = dma32_phys_limit;
|
arm64_dma_phys_limit = dma32_phys_limit;
|
||||||
#endif
|
#endif
|
||||||
if (!arm64_dma_phys_limit)
|
|
||||||
arm64_dma_phys_limit = PHYS_MASK + 1;
|
|
||||||
max_zone_pfns[ZONE_NORMAL] = max;
|
max_zone_pfns[ZONE_NORMAL] = max;
|
||||||
|
|
||||||
free_area_init(max_zone_pfns);
|
free_area_init(max_zone_pfns);
|
||||||
@@ -429,6 +453,9 @@ void __init arm64_memblock_init(void)
|
|||||||
|
|
||||||
reserve_elfcorehdr();
|
reserve_elfcorehdr();
|
||||||
|
|
||||||
|
if (!IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32))
|
||||||
|
reserve_crashkernel();
|
||||||
|
|
||||||
high_memory = __va(memblock_end_of_DRAM() - 1) + 1;
|
high_memory = __va(memblock_end_of_DRAM() - 1) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -475,6 +502,7 @@ void __init bootmem_init(void)
|
|||||||
* request_standard_resources() depends on crashkernel's memory being
|
* request_standard_resources() depends on crashkernel's memory being
|
||||||
* reserved, so do it here.
|
* reserved, so do it here.
|
||||||
*/
|
*/
|
||||||
|
if (IS_ENABLED(CONFIG_ZONE_DMA) || IS_ENABLED(CONFIG_ZONE_DMA32))
|
||||||
reserve_crashkernel();
|
reserve_crashkernel();
|
||||||
|
|
||||||
memblock_dump_all();
|
memblock_dump_all();
|
||||||
|
@@ -61,6 +61,7 @@ static pmd_t bm_pmd[PTRS_PER_PMD] __page_aligned_bss __maybe_unused;
|
|||||||
static pud_t bm_pud[PTRS_PER_PUD] __page_aligned_bss __maybe_unused;
|
static pud_t bm_pud[PTRS_PER_PUD] __page_aligned_bss __maybe_unused;
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(swapper_pgdir_lock);
|
static DEFINE_SPINLOCK(swapper_pgdir_lock);
|
||||||
|
static DEFINE_MUTEX(fixmap_lock);
|
||||||
|
|
||||||
void set_swapper_pgd(pgd_t *pgdp, pgd_t pgd)
|
void set_swapper_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||||
{
|
{
|
||||||
@@ -314,6 +315,12 @@ static void alloc_init_pud(pgd_t *pgdp, unsigned long addr, unsigned long end,
|
|||||||
}
|
}
|
||||||
BUG_ON(p4d_bad(p4d));
|
BUG_ON(p4d_bad(p4d));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* No need for locking during early boot. And it doesn't work as
|
||||||
|
* expected with KASLR enabled.
|
||||||
|
*/
|
||||||
|
if (system_state != SYSTEM_BOOTING)
|
||||||
|
mutex_lock(&fixmap_lock);
|
||||||
pudp = pud_set_fixmap_offset(p4dp, addr);
|
pudp = pud_set_fixmap_offset(p4dp, addr);
|
||||||
do {
|
do {
|
||||||
pud_t old_pud = READ_ONCE(*pudp);
|
pud_t old_pud = READ_ONCE(*pudp);
|
||||||
@@ -344,6 +351,8 @@ static void alloc_init_pud(pgd_t *pgdp, unsigned long addr, unsigned long end,
|
|||||||
} while (pudp++, addr = next, addr != end);
|
} while (pudp++, addr = next, addr != end);
|
||||||
|
|
||||||
pud_clear_fixmap();
|
pud_clear_fixmap();
|
||||||
|
if (system_state != SYSTEM_BOOTING)
|
||||||
|
mutex_unlock(&fixmap_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys,
|
static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys,
|
||||||
@@ -492,7 +501,7 @@ static void __init map_mem(pgd_t *pgdp)
|
|||||||
int flags = 0;
|
int flags = 0;
|
||||||
u64 i;
|
u64 i;
|
||||||
|
|
||||||
if (rodata_full || crash_mem_map || debug_pagealloc_enabled() ||
|
if (rodata_full || debug_pagealloc_enabled() ||
|
||||||
IS_ENABLED(CONFIG_KFENCE))
|
IS_ENABLED(CONFIG_KFENCE))
|
||||||
flags = NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
|
flags = NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
|
||||||
|
|
||||||
@@ -504,6 +513,17 @@ static void __init map_mem(pgd_t *pgdp)
|
|||||||
*/
|
*/
|
||||||
memblock_mark_nomap(kernel_start, kernel_end - kernel_start);
|
memblock_mark_nomap(kernel_start, kernel_end - kernel_start);
|
||||||
|
|
||||||
|
#ifdef CONFIG_KEXEC_CORE
|
||||||
|
if (crash_mem_map) {
|
||||||
|
if (IS_ENABLED(CONFIG_ZONE_DMA) ||
|
||||||
|
IS_ENABLED(CONFIG_ZONE_DMA32))
|
||||||
|
flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
|
||||||
|
else if (crashk_res.end)
|
||||||
|
memblock_mark_nomap(crashk_res.start,
|
||||||
|
resource_size(&crashk_res));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* map all the memory banks */
|
/* map all the memory banks */
|
||||||
for_each_mem_range(i, &start, &end) {
|
for_each_mem_range(i, &start, &end) {
|
||||||
if (start >= end)
|
if (start >= end)
|
||||||
@@ -530,6 +550,25 @@ static void __init map_mem(pgd_t *pgdp)
|
|||||||
__map_memblock(pgdp, kernel_start, kernel_end,
|
__map_memblock(pgdp, kernel_start, kernel_end,
|
||||||
PAGE_KERNEL, NO_CONT_MAPPINGS);
|
PAGE_KERNEL, NO_CONT_MAPPINGS);
|
||||||
memblock_clear_nomap(kernel_start, kernel_end - kernel_start);
|
memblock_clear_nomap(kernel_start, kernel_end - kernel_start);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Use page-level mappings here so that we can shrink the region
|
||||||
|
* in page granularity and put back unused memory to buddy system
|
||||||
|
* through /sys/kernel/kexec_crash_size interface.
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_KEXEC_CORE
|
||||||
|
if (crash_mem_map &&
|
||||||
|
!IS_ENABLED(CONFIG_ZONE_DMA) && !IS_ENABLED(CONFIG_ZONE_DMA32)) {
|
||||||
|
if (crashk_res.end) {
|
||||||
|
__map_memblock(pgdp, crashk_res.start,
|
||||||
|
crashk_res.end + 1,
|
||||||
|
PAGE_KERNEL,
|
||||||
|
NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS);
|
||||||
|
memblock_clear_nomap(crashk_res.start,
|
||||||
|
resource_size(&crashk_res));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void mark_rodata_ro(void)
|
void mark_rodata_ro(void)
|
||||||
|
@@ -1041,15 +1041,18 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
|
|||||||
goto out_off;
|
goto out_off;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 1. Initial fake pass to compute ctx->idx. */
|
/*
|
||||||
|
* 1. Initial fake pass to compute ctx->idx and ctx->offset.
|
||||||
/* Fake pass to fill in ctx->offset. */
|
*
|
||||||
if (build_body(&ctx, extra_pass)) {
|
* BPF line info needs ctx->offset[i] to be the offset of
|
||||||
|
* instruction[i] in jited image, so build prologue first.
|
||||||
|
*/
|
||||||
|
if (build_prologue(&ctx, was_classic)) {
|
||||||
prog = orig_prog;
|
prog = orig_prog;
|
||||||
goto out_off;
|
goto out_off;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (build_prologue(&ctx, was_classic)) {
|
if (build_body(&ctx, extra_pass)) {
|
||||||
prog = orig_prog;
|
prog = orig_prog;
|
||||||
goto out_off;
|
goto out_off;
|
||||||
}
|
}
|
||||||
@@ -1124,6 +1127,11 @@ skip_init_ctx:
|
|||||||
prog->jited_len = prog_size;
|
prog->jited_len = prog_size;
|
||||||
|
|
||||||
if (!prog->is_func || extra_pass) {
|
if (!prog->is_func || extra_pass) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* offset[prog->len] is the size of program */
|
||||||
|
for (i = 0; i <= prog->len; i++)
|
||||||
|
ctx.offset[i] *= AARCH64_INSN_SIZE;
|
||||||
bpf_prog_fill_jited_linfo(prog, ctx.offset + 1);
|
bpf_prog_fill_jited_linfo(prog, ctx.offset + 1);
|
||||||
out_off:
|
out_off:
|
||||||
kfree(ctx.offset);
|
kfree(ctx.offset);
|
||||||
|
@@ -49,7 +49,7 @@ static unsigned long user_backtrace(struct perf_callchain_entry_ctx *entry,
|
|||||||
{
|
{
|
||||||
struct stackframe buftail;
|
struct stackframe buftail;
|
||||||
unsigned long lr = 0;
|
unsigned long lr = 0;
|
||||||
unsigned long *user_frame_tail = (unsigned long *)fp;
|
unsigned long __user *user_frame_tail = (unsigned long __user *)fp;
|
||||||
|
|
||||||
/* Check accessibility of one struct frame_tail beyond */
|
/* Check accessibility of one struct frame_tail beyond */
|
||||||
if (!access_ok(user_frame_tail, sizeof(buftail)))
|
if (!access_ok(user_frame_tail, sizeof(buftail)))
|
||||||
|
@@ -136,7 +136,7 @@ static inline void __user *get_sigframe(struct ksignal *ksig,
|
|||||||
static int
|
static int
|
||||||
setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs)
|
setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
struct rt_sigframe *frame;
|
struct rt_sigframe __user *frame;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
struct csky_vdso *vdso = current->mm->context.vdso;
|
struct csky_vdso *vdso = current->mm->context.vdso;
|
||||||
|
|
||||||
|
@@ -446,7 +446,8 @@ void __init acpi_numa_fixup(void)
|
|||||||
if (srat_num_cpus == 0) {
|
if (srat_num_cpus == 0) {
|
||||||
node_set_online(0);
|
node_set_online(0);
|
||||||
node_cpuid[0].phys_id = hard_smp_processor_id();
|
node_cpuid[0].phys_id = hard_smp_processor_id();
|
||||||
return;
|
slit_distance(0, 0) = LOCAL_DISTANCE;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -489,7 +490,7 @@ void __init acpi_numa_fixup(void)
|
|||||||
for (j = 0; j < MAX_NUMNODES; j++)
|
for (j = 0; j < MAX_NUMNODES; j++)
|
||||||
slit_distance(i, j) = i == j ?
|
slit_distance(i, j) = i == j ?
|
||||||
LOCAL_DISTANCE : REMOTE_DISTANCE;
|
LOCAL_DISTANCE : REMOTE_DISTANCE;
|
||||||
return;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(numa_slit, -1, sizeof(numa_slit));
|
memset(numa_slit, -1, sizeof(numa_slit));
|
||||||
@@ -514,6 +515,8 @@ void __init acpi_numa_fixup(void)
|
|||||||
printk("\n");
|
printk("\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
out:
|
||||||
|
node_possible_map = node_online_map;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ACPI_NUMA */
|
#endif /* CONFIG_ACPI_NUMA */
|
||||||
|
|
||||||
|
@@ -480,7 +480,7 @@ static struct platform_device mcf_i2c5 = {
|
|||||||
#endif /* MCFI2C_BASE5 */
|
#endif /* MCFI2C_BASE5 */
|
||||||
#endif /* IS_ENABLED(CONFIG_I2C_IMX) */
|
#endif /* IS_ENABLED(CONFIG_I2C_IMX) */
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_MCF_EDMA)
|
#ifdef MCFEDMA_BASE
|
||||||
|
|
||||||
static const struct dma_slave_map mcf_edma_map[] = {
|
static const struct dma_slave_map mcf_edma_map[] = {
|
||||||
{ "dreq0", "rx-tx", MCF_EDMA_FILTER_PARAM(0) },
|
{ "dreq0", "rx-tx", MCF_EDMA_FILTER_PARAM(0) },
|
||||||
@@ -552,7 +552,7 @@ static struct platform_device mcf_edma = {
|
|||||||
.platform_data = &mcf_edma_data,
|
.platform_data = &mcf_edma_data,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
#endif /* IS_ENABLED(CONFIG_MCF_EDMA) */
|
#endif /* MCFEDMA_BASE */
|
||||||
|
|
||||||
#ifdef MCFSDHC_BASE
|
#ifdef MCFSDHC_BASE
|
||||||
static struct mcf_esdhc_platform_data mcf_esdhc_data = {
|
static struct mcf_esdhc_platform_data mcf_esdhc_data = {
|
||||||
@@ -610,7 +610,7 @@ static struct platform_device *mcf_devices[] __initdata = {
|
|||||||
&mcf_i2c5,
|
&mcf_i2c5,
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#if IS_ENABLED(CONFIG_MCF_EDMA)
|
#ifdef MCFEDMA_BASE
|
||||||
&mcf_edma,
|
&mcf_edma,
|
||||||
#endif
|
#endif
|
||||||
#ifdef MCFSDHC_BASE
|
#ifdef MCFSDHC_BASE
|
||||||
|
@@ -167,27 +167,27 @@ extern long __user_bad(void);
|
|||||||
|
|
||||||
#define __get_user(x, ptr) \
|
#define __get_user(x, ptr) \
|
||||||
({ \
|
({ \
|
||||||
unsigned long __gu_val = 0; \
|
|
||||||
long __gu_err; \
|
long __gu_err; \
|
||||||
switch (sizeof(*(ptr))) { \
|
switch (sizeof(*(ptr))) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
__get_user_asm("lbu", (ptr), __gu_val, __gu_err); \
|
__get_user_asm("lbu", (ptr), x, __gu_err); \
|
||||||
break; \
|
break; \
|
||||||
case 2: \
|
case 2: \
|
||||||
__get_user_asm("lhu", (ptr), __gu_val, __gu_err); \
|
__get_user_asm("lhu", (ptr), x, __gu_err); \
|
||||||
break; \
|
break; \
|
||||||
case 4: \
|
case 4: \
|
||||||
__get_user_asm("lw", (ptr), __gu_val, __gu_err); \
|
__get_user_asm("lw", (ptr), x, __gu_err); \
|
||||||
break; \
|
break; \
|
||||||
case 8: \
|
case 8: { \
|
||||||
__gu_err = __copy_from_user(&__gu_val, ptr, 8); \
|
__u64 __x = 0; \
|
||||||
if (__gu_err) \
|
__gu_err = raw_copy_from_user(&__x, ptr, 8) ? \
|
||||||
__gu_err = -EFAULT; \
|
-EFAULT : 0; \
|
||||||
|
(x) = (typeof(x))(typeof((x) - (x)))__x; \
|
||||||
break; \
|
break; \
|
||||||
|
} \
|
||||||
default: \
|
default: \
|
||||||
/* __gu_val = 0; __gu_err = -EINVAL;*/ __gu_err = __user_bad();\
|
/* __gu_val = 0; __gu_err = -EINVAL;*/ __gu_err = __user_bad();\
|
||||||
} \
|
} \
|
||||||
x = (__force __typeof__(*(ptr))) __gu_val; \
|
|
||||||
__gu_err; \
|
__gu_err; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -131,7 +131,7 @@
|
|||||||
*/
|
*/
|
||||||
mfc0 t0,CP0_CAUSE # get pending interrupts
|
mfc0 t0,CP0_CAUSE # get pending interrupts
|
||||||
mfc0 t1,CP0_STATUS
|
mfc0 t1,CP0_STATUS
|
||||||
#ifdef CONFIG_32BIT
|
#if defined(CONFIG_32BIT) && defined(CONFIG_MIPS_FP_SUPPORT)
|
||||||
lw t2,cpu_fpu_mask
|
lw t2,cpu_fpu_mask
|
||||||
#endif
|
#endif
|
||||||
andi t0,ST0_IM # CAUSE.CE may be non-zero!
|
andi t0,ST0_IM # CAUSE.CE may be non-zero!
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
|
|
||||||
beqz t0,spurious
|
beqz t0,spurious
|
||||||
|
|
||||||
#ifdef CONFIG_32BIT
|
#if defined(CONFIG_32BIT) && defined(CONFIG_MIPS_FP_SUPPORT)
|
||||||
and t2,t0
|
and t2,t0
|
||||||
bnez t2,fpu # handle FPU immediately
|
bnez t2,fpu # handle FPU immediately
|
||||||
#endif
|
#endif
|
||||||
@@ -280,7 +280,7 @@ handle_it:
|
|||||||
j dec_irq_dispatch
|
j dec_irq_dispatch
|
||||||
nop
|
nop
|
||||||
|
|
||||||
#ifdef CONFIG_32BIT
|
#if defined(CONFIG_32BIT) && defined(CONFIG_MIPS_FP_SUPPORT)
|
||||||
fpu:
|
fpu:
|
||||||
lw t0,fpu_kstat_irq
|
lw t0,fpu_kstat_irq
|
||||||
nop
|
nop
|
||||||
|
@@ -6,4 +6,4 @@
|
|||||||
|
|
||||||
lib-y += init.o memory.o cmdline.o identify.o console.o
|
lib-y += init.o memory.o cmdline.o identify.o console.o
|
||||||
|
|
||||||
lib-$(CONFIG_32BIT) += locore.o
|
lib-$(CONFIG_CPU_R3000) += locore.o
|
||||||
|
@@ -746,7 +746,8 @@ void __init arch_init_irq(void)
|
|||||||
dec_interrupt[DEC_IRQ_HALT] = -1;
|
dec_interrupt[DEC_IRQ_HALT] = -1;
|
||||||
|
|
||||||
/* Register board interrupts: FPU and cascade. */
|
/* Register board interrupts: FPU and cascade. */
|
||||||
if (dec_interrupt[DEC_IRQ_FPU] >= 0 && cpu_has_fpu) {
|
if (IS_ENABLED(CONFIG_MIPS_FP_SUPPORT) &&
|
||||||
|
dec_interrupt[DEC_IRQ_FPU] >= 0 && cpu_has_fpu) {
|
||||||
struct irq_desc *desc_fpu;
|
struct irq_desc *desc_fpu;
|
||||||
int irq_fpu;
|
int irq_fpu;
|
||||||
|
|
||||||
|
@@ -43,16 +43,11 @@
|
|||||||
*/
|
*/
|
||||||
#define REX_PROM_MAGIC 0x30464354
|
#define REX_PROM_MAGIC 0x30464354
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
/* KN04 and KN05 are REX PROMs, so only do the check for R3k systems. */
|
||||||
|
static inline bool prom_is_rex(u32 magic)
|
||||||
#define prom_is_rex(magic) 1 /* KN04 and KN05 are REX PROMs. */
|
{
|
||||||
|
return !IS_ENABLED(CONFIG_CPU_R3000) || magic == REX_PROM_MAGIC;
|
||||||
#else /* !CONFIG_64BIT */
|
}
|
||||||
|
|
||||||
#define prom_is_rex(magic) ((magic) == REX_PROM_MAGIC)
|
|
||||||
|
|
||||||
#endif /* !CONFIG_64BIT */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 3MIN/MAXINE PROM entry points for DS5000/1xx's, DS5000/xx's and
|
* 3MIN/MAXINE PROM entry points for DS5000/1xx's, DS5000/xx's and
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#define __HAVE_ARCH_PMD_ALLOC_ONE
|
#define __HAVE_ARCH_PMD_ALLOC_ONE
|
||||||
#define __HAVE_ARCH_PUD_ALLOC_ONE
|
#define __HAVE_ARCH_PUD_ALLOC_ONE
|
||||||
|
#define __HAVE_ARCH_PGD_FREE
|
||||||
#include <asm-generic/pgalloc.h>
|
#include <asm-generic/pgalloc.h>
|
||||||
|
|
||||||
static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
|
static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd,
|
||||||
@@ -49,6 +50,11 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
|
|||||||
extern void pgd_init(unsigned long page);
|
extern void pgd_init(unsigned long page);
|
||||||
extern pgd_t *pgd_alloc(struct mm_struct *mm);
|
extern pgd_t *pgd_alloc(struct mm_struct *mm);
|
||||||
|
|
||||||
|
static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd)
|
||||||
|
{
|
||||||
|
free_pages((unsigned long)pgd, PGD_ORDER);
|
||||||
|
}
|
||||||
|
|
||||||
#define __pte_free_tlb(tlb,pte,address) \
|
#define __pte_free_tlb(tlb,pte,address) \
|
||||||
do { \
|
do { \
|
||||||
pgtable_pte_page_dtor(pte); \
|
pgtable_pte_page_dtor(pte); \
|
||||||
|
@@ -351,6 +351,9 @@ asmlinkage void start_secondary(void)
|
|||||||
cpu = smp_processor_id();
|
cpu = smp_processor_id();
|
||||||
cpu_data[cpu].udelay_val = loops_per_jiffy;
|
cpu_data[cpu].udelay_val = loops_per_jiffy;
|
||||||
|
|
||||||
|
set_cpu_sibling_map(cpu);
|
||||||
|
set_cpu_core_map(cpu);
|
||||||
|
|
||||||
cpumask_set_cpu(cpu, &cpu_coherent_mask);
|
cpumask_set_cpu(cpu, &cpu_coherent_mask);
|
||||||
notify_cpu_starting(cpu);
|
notify_cpu_starting(cpu);
|
||||||
|
|
||||||
@@ -362,9 +365,6 @@ asmlinkage void start_secondary(void)
|
|||||||
/* The CPU is running and counters synchronised, now mark it online */
|
/* The CPU is running and counters synchronised, now mark it online */
|
||||||
set_cpu_online(cpu, true);
|
set_cpu_online(cpu, true);
|
||||||
|
|
||||||
set_cpu_sibling_map(cpu);
|
|
||||||
set_cpu_core_map(cpu);
|
|
||||||
|
|
||||||
calculate_cpu_foreign_map();
|
calculate_cpu_foreign_map();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -310,11 +310,9 @@ static int __init plat_setup_devices(void)
|
|||||||
static int __init setup_kmac(char *s)
|
static int __init setup_kmac(char *s)
|
||||||
{
|
{
|
||||||
printk(KERN_INFO "korina mac = %s\n", s);
|
printk(KERN_INFO "korina mac = %s\n", s);
|
||||||
if (!mac_pton(s, korina_dev0_data.mac)) {
|
if (!mac_pton(s, korina_dev0_data.mac))
|
||||||
printk(KERN_ERR "Invalid mac\n");
|
printk(KERN_ERR "Invalid mac\n");
|
||||||
return -EINVAL;
|
return 1;
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__setup("kmac=", setup_kmac);
|
__setup("kmac=", setup_kmac);
|
||||||
|
@@ -70,9 +70,7 @@ static inline void set_fs(mm_segment_t fs)
|
|||||||
* versions are void (ie, don't return a value as such).
|
* versions are void (ie, don't return a value as such).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define get_user __get_user \
|
#define get_user(x, ptr) \
|
||||||
|
|
||||||
#define __get_user(x, ptr) \
|
|
||||||
({ \
|
({ \
|
||||||
long __gu_err = 0; \
|
long __gu_err = 0; \
|
||||||
__get_user_check((x), (ptr), __gu_err); \
|
__get_user_check((x), (ptr), __gu_err); \
|
||||||
@@ -85,6 +83,14 @@ static inline void set_fs(mm_segment_t fs)
|
|||||||
(void)0; \
|
(void)0; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
#define __get_user(x, ptr) \
|
||||||
|
({ \
|
||||||
|
long __gu_err = 0; \
|
||||||
|
const __typeof__(*(ptr)) __user *__p = (ptr); \
|
||||||
|
__get_user_err((x), __p, (__gu_err)); \
|
||||||
|
__gu_err; \
|
||||||
|
})
|
||||||
|
|
||||||
#define __get_user_check(x, ptr, err) \
|
#define __get_user_check(x, ptr, err) \
|
||||||
({ \
|
({ \
|
||||||
const __typeof__(*(ptr)) __user *__p = (ptr); \
|
const __typeof__(*(ptr)) __user *__p = (ptr); \
|
||||||
@@ -165,12 +171,18 @@ do { \
|
|||||||
: "r"(addr), "i"(-EFAULT) \
|
: "r"(addr), "i"(-EFAULT) \
|
||||||
: "cc")
|
: "cc")
|
||||||
|
|
||||||
#define put_user __put_user \
|
#define put_user(x, ptr) \
|
||||||
|
({ \
|
||||||
|
long __pu_err = 0; \
|
||||||
|
__put_user_check((x), (ptr), __pu_err); \
|
||||||
|
__pu_err; \
|
||||||
|
})
|
||||||
|
|
||||||
#define __put_user(x, ptr) \
|
#define __put_user(x, ptr) \
|
||||||
({ \
|
({ \
|
||||||
long __pu_err = 0; \
|
long __pu_err = 0; \
|
||||||
__put_user_err((x), (ptr), __pu_err); \
|
__typeof__(*(ptr)) __user *__p = (ptr); \
|
||||||
|
__put_user_err((x), __p, __pu_err); \
|
||||||
__pu_err; \
|
__pu_err; \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user