Merge tag 'v6.1.141'
This is the 6.1.141 stable release * tag 'v6.1.141': (3704 commits) Linux 6.1.141 net: ethernet: ti: am65-cpsw: Lower random mac address error print to info platform/x86: thinkpad_acpi: Ignore battery threshold change event notification platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys NFS: Avoid flushing data while holding directory locks in nfs_rename() nvme-pci: add NVME_QUIRK_NO_DEEPEST_PS quirk for SOLIDIGM P44 Pro spi: spi-sun4i: fix early activation um: let 'make clean' properly clean underlying SUBARCH as well platform/x86: thinkpad_acpi: Support also NEC Lavie X1475JAS nfs: don't share pNFS DS connections between net namespaces HID: quirks: Add ADATA XPG alpha wireless mouse support coredump: hand a pidfd to the usermode coredump helper fork: use pidfd_prepare() pid: add pidfd_prepare() coredump: fix error handling for replace_fd() perf/arm-cmn: Initialise cmn->cpu earlier perf/arm-cmn: Fix REQ2/SNP2 mixup net_sched: hfsc: Address reentrant enqueue adding class to eltree twice arm64: dts: qcom: sm8350: Fix typo in pil_camera_mem node af_unix: Fix uninit-value in __unix_walk_scc() ... Change-Id: I80c048bb313ef26f13f7809a84c21cee17f220e2
This commit is contained in:
@@ -163,6 +163,17 @@ Description:
|
|||||||
will be present in sysfs. Writing 1 to this file
|
will be present in sysfs. Writing 1 to this file
|
||||||
will perform reset.
|
will perform reset.
|
||||||
|
|
||||||
|
What: /sys/bus/pci/devices/.../reset_subordinate
|
||||||
|
Date: October 2024
|
||||||
|
Contact: linux-pci@vger.kernel.org
|
||||||
|
Description:
|
||||||
|
This is visible only for bridge devices. If you want to reset
|
||||||
|
all devices attached through the subordinate bus of a specific
|
||||||
|
bridge device, writing 1 to this will try to do it. This will
|
||||||
|
affect all devices attached to the system through this bridge
|
||||||
|
similiar to writing 1 to their individual "reset" file, so use
|
||||||
|
with caution.
|
||||||
|
|
||||||
What: /sys/bus/pci/devices/.../vpd
|
What: /sys/bus/pci/devices/.../vpd
|
||||||
Date: February 2008
|
Date: February 2008
|
||||||
Contact: Ben Hutchings <bwh@kernel.org>
|
Contact: Ben Hutchings <bwh@kernel.org>
|
||||||
|
|||||||
@@ -514,6 +514,7 @@ Description: information about CPUs heterogeneity.
|
|||||||
|
|
||||||
What: /sys/devices/system/cpu/vulnerabilities
|
What: /sys/devices/system/cpu/vulnerabilities
|
||||||
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling
|
/sys/devices/system/cpu/vulnerabilities/gather_data_sampling
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/indirect_target_selection
|
||||||
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
|
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
|
||||||
/sys/devices/system/cpu/vulnerabilities/l1tf
|
/sys/devices/system/cpu/vulnerabilities/l1tf
|
||||||
/sys/devices/system/cpu/vulnerabilities/mds
|
/sys/devices/system/cpu/vulnerabilities/mds
|
||||||
|
|||||||
@@ -303,10 +303,13 @@ Description: Do background GC aggressively when set. Set to 0 by default.
|
|||||||
GC approach and turns SSR mode on.
|
GC approach and turns SSR mode on.
|
||||||
gc urgent low(2): lowers the bar of checking I/O idling in
|
gc urgent low(2): lowers the bar of checking I/O idling in
|
||||||
order to process outstanding discard commands and GC a
|
order to process outstanding discard commands and GC a
|
||||||
little bit aggressively. uses cost benefit GC approach.
|
little bit aggressively. always uses cost benefit GC approach,
|
||||||
|
and will override age-threshold GC approach if ATGC is enabled
|
||||||
|
at the same time.
|
||||||
gc urgent mid(3): does GC forcibly in a period of given
|
gc urgent mid(3): does GC forcibly in a period of given
|
||||||
gc_urgent_sleep_time and executes a mid level of I/O idling check.
|
gc_urgent_sleep_time and executes a mid level of I/O idling check.
|
||||||
uses cost benefit GC approach.
|
always uses cost benefit GC approach, and will override
|
||||||
|
age-threshold GC approach if ATGC is enabled at the same time.
|
||||||
|
|
||||||
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
|
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time
|
||||||
Date: August 2017
|
Date: August 2017
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ ticks this GP)" indicates that this CPU has not taken any scheduling-clock
|
|||||||
interrupts during the current stalled grace period.
|
interrupts during the current stalled grace period.
|
||||||
|
|
||||||
The "idle=" portion of the message prints the dyntick-idle state.
|
The "idle=" portion of the message prints the dyntick-idle state.
|
||||||
The hex number before the first "/" is the low-order 12 bits of the
|
The hex number before the first "/" is the low-order 16 bits of the
|
||||||
dynticks counter, which will have an even-numbered value if the CPU
|
dynticks counter, which will have an even-numbered value if the CPU
|
||||||
is in dyntick-idle mode and an odd-numbered value otherwise. The hex
|
is in dyntick-idle mode and an odd-numbered value otherwise. The hex
|
||||||
number between the two "/"s is the value of the nesting, which will be
|
number between the two "/"s is the value of the nesting, which will be
|
||||||
|
|||||||
@@ -22,3 +22,4 @@ are configurable at compile, boot or run time.
|
|||||||
gather_data_sampling.rst
|
gather_data_sampling.rst
|
||||||
srso
|
srso
|
||||||
reg-file-data-sampling
|
reg-file-data-sampling
|
||||||
|
indirect-target-selection
|
||||||
|
|||||||
156
Documentation/admin-guide/hw-vuln/indirect-target-selection.rst
Normal file
156
Documentation/admin-guide/hw-vuln/indirect-target-selection.rst
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
Indirect Target Selection (ITS)
|
||||||
|
===============================
|
||||||
|
|
||||||
|
ITS is a vulnerability in some Intel CPUs that support Enhanced IBRS and were
|
||||||
|
released before Alder Lake. ITS may allow an attacker to control the prediction
|
||||||
|
of indirect branches and RETs located in the lower half of a cacheline.
|
||||||
|
|
||||||
|
ITS is assigned CVE-2024-28956 with a CVSS score of 4.7 (Medium).
|
||||||
|
|
||||||
|
Scope of Impact
|
||||||
|
---------------
|
||||||
|
- **eIBRS Guest/Host Isolation**: Indirect branches in KVM/kernel may still be
|
||||||
|
predicted with unintended target corresponding to a branch in the guest.
|
||||||
|
|
||||||
|
- **Intra-Mode BTI**: In-kernel training such as through cBPF or other native
|
||||||
|
gadgets.
|
||||||
|
|
||||||
|
- **Indirect Branch Prediction Barrier (IBPB)**: After an IBPB, indirect
|
||||||
|
branches may still be predicted with targets corresponding to direct branches
|
||||||
|
executed prior to the IBPB. This is fixed by the IPU 2025.1 microcode, which
|
||||||
|
should be available via distro updates. Alternatively microcode can be
|
||||||
|
obtained from Intel's github repository [#f1]_.
|
||||||
|
|
||||||
|
Affected CPUs
|
||||||
|
-------------
|
||||||
|
Below is the list of ITS affected CPUs [#f2]_ [#f3]_:
|
||||||
|
|
||||||
|
======================== ============ ==================== ===============
|
||||||
|
Common name Family_Model eIBRS Intra-mode BTI
|
||||||
|
Guest/Host Isolation
|
||||||
|
======================== ============ ==================== ===============
|
||||||
|
SKYLAKE_X (step >= 6) 06_55H Affected Affected
|
||||||
|
ICELAKE_X 06_6AH Not affected Affected
|
||||||
|
ICELAKE_D 06_6CH Not affected Affected
|
||||||
|
ICELAKE_L 06_7EH Not affected Affected
|
||||||
|
TIGERLAKE_L 06_8CH Not affected Affected
|
||||||
|
TIGERLAKE 06_8DH Not affected Affected
|
||||||
|
KABYLAKE_L (step >= 12) 06_8EH Affected Affected
|
||||||
|
KABYLAKE (step >= 13) 06_9EH Affected Affected
|
||||||
|
COMETLAKE 06_A5H Affected Affected
|
||||||
|
COMETLAKE_L 06_A6H Affected Affected
|
||||||
|
ROCKETLAKE 06_A7H Not affected Affected
|
||||||
|
======================== ============ ==================== ===============
|
||||||
|
|
||||||
|
- All affected CPUs enumerate Enhanced IBRS feature.
|
||||||
|
- IBPB isolation is affected on all ITS affected CPUs, and need a microcode
|
||||||
|
update for mitigation.
|
||||||
|
- None of the affected CPUs enumerate BHI_CTRL which was introduced in Golden
|
||||||
|
Cove (Alder Lake and Sapphire Rapids). This can help guests to determine the
|
||||||
|
host's affected status.
|
||||||
|
- Intel Atom CPUs are not affected by ITS.
|
||||||
|
|
||||||
|
Mitigation
|
||||||
|
----------
|
||||||
|
As only the indirect branches and RETs that have their last byte of instruction
|
||||||
|
in the lower half of the cacheline are vulnerable to ITS, the basic idea behind
|
||||||
|
the mitigation is to not allow indirect branches in the lower half.
|
||||||
|
|
||||||
|
This is achieved by relying on existing retpoline support in the kernel, and in
|
||||||
|
compilers. ITS-vulnerable retpoline sites are runtime patched to point to newly
|
||||||
|
added ITS-safe thunks. These safe thunks consists of indirect branch in the
|
||||||
|
second half of the cacheline. Not all retpoline sites are patched to thunks, if
|
||||||
|
a retpoline site is evaluated to be ITS-safe, it is replaced with an inline
|
||||||
|
indirect branch.
|
||||||
|
|
||||||
|
Dynamic thunks
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
From a dynamically allocated pool of safe-thunks, each vulnerable site is
|
||||||
|
replaced with a new thunk, such that they get a unique address. This could
|
||||||
|
improve the branch prediction accuracy. Also, it is a defense-in-depth measure
|
||||||
|
against aliasing.
|
||||||
|
|
||||||
|
Note, for simplicity, indirect branches in eBPF programs are always replaced
|
||||||
|
with a jump to a static thunk in __x86_indirect_its_thunk_array. If required,
|
||||||
|
in future this can be changed to use dynamic thunks.
|
||||||
|
|
||||||
|
All vulnerable RETs are replaced with a static thunk, they do not use dynamic
|
||||||
|
thunks. This is because RETs get their prediction from RSB mostly that does not
|
||||||
|
depend on source address. RETs that underflow RSB may benefit from dynamic
|
||||||
|
thunks. But, RETs significantly outnumber indirect branches, and any benefit
|
||||||
|
from a unique source address could be outweighed by the increased icache
|
||||||
|
footprint and iTLB pressure.
|
||||||
|
|
||||||
|
Retpoline
|
||||||
|
~~~~~~~~~
|
||||||
|
Retpoline sequence also mitigates ITS-unsafe indirect branches. For this
|
||||||
|
reason, when retpoline is enabled, ITS mitigation only relocates the RETs to
|
||||||
|
safe thunks. Unless user requested the RSB-stuffing mitigation.
|
||||||
|
|
||||||
|
Mitigation in guests
|
||||||
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
All guests deploy ITS mitigation by default, irrespective of eIBRS enumeration
|
||||||
|
and Family/Model of the guest. This is because eIBRS feature could be hidden
|
||||||
|
from a guest. One exception to this is when a guest enumerates BHI_DIS_S, which
|
||||||
|
indicates that the guest is running on an unaffected host.
|
||||||
|
|
||||||
|
To prevent guests from unnecessarily deploying the mitigation on unaffected
|
||||||
|
platforms, Intel has defined ITS_NO bit(62) in MSR IA32_ARCH_CAPABILITIES. When
|
||||||
|
a guest sees this bit set, it should not enumerate the ITS bug. Note, this bit
|
||||||
|
is not set by any hardware, but is **intended for VMMs to synthesize** it for
|
||||||
|
guests as per the host's affected status.
|
||||||
|
|
||||||
|
Mitigation options
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
The ITS mitigation can be controlled using the "indirect_target_selection"
|
||||||
|
kernel parameter. The available options are:
|
||||||
|
|
||||||
|
======== ===================================================================
|
||||||
|
on (default) Deploy the "Aligned branch/return thunks" mitigation.
|
||||||
|
If spectre_v2 mitigation enables retpoline, aligned-thunks are only
|
||||||
|
deployed for the affected RET instructions. Retpoline mitigates
|
||||||
|
indirect branches.
|
||||||
|
|
||||||
|
off Disable ITS mitigation.
|
||||||
|
|
||||||
|
vmexit Equivalent to "=on" if the CPU is affected by guest/host isolation
|
||||||
|
part of ITS. Otherwise, mitigation is not deployed. This option is
|
||||||
|
useful when host userspace is not in the threat model, and only
|
||||||
|
attacks from guest to host are considered.
|
||||||
|
|
||||||
|
force Force the ITS bug and deploy the default mitigation.
|
||||||
|
======== ===================================================================
|
||||||
|
|
||||||
|
Sysfs reporting
|
||||||
|
---------------
|
||||||
|
|
||||||
|
The sysfs file showing ITS mitigation status is:
|
||||||
|
|
||||||
|
/sys/devices/system/cpu/vulnerabilities/indirect_target_selection
|
||||||
|
|
||||||
|
Note, microcode mitigation status is not reported in this file.
|
||||||
|
|
||||||
|
The possible values in this file are:
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
|
||||||
|
* - Not affected
|
||||||
|
- The processor is not vulnerable.
|
||||||
|
* - Vulnerable
|
||||||
|
- System is vulnerable and no mitigation has been applied.
|
||||||
|
* - Vulnerable, KVM: Not affected
|
||||||
|
- System is vulnerable to intra-mode BTI, but not affected by eIBRS
|
||||||
|
guest/host isolation.
|
||||||
|
* - Mitigation: Aligned branch/return thunks
|
||||||
|
- The mitigation is enabled, affected indirect branches and RETs are
|
||||||
|
relocated to safe thunks.
|
||||||
|
|
||||||
|
References
|
||||||
|
----------
|
||||||
|
.. [#f1] Microcode repository - https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files
|
||||||
|
|
||||||
|
.. [#f2] Affected Processors list - https://www.intel.com/content/www/us/en/developer/topic-technology/software-security-guidance/processors-affected-consolidated-product-cpu-model.html
|
||||||
|
|
||||||
|
.. [#f3] Affected Processors list (machine readable) - https://github.com/intel/Intel-affected-processor-list
|
||||||
@@ -2025,6 +2025,20 @@
|
|||||||
different crypto accelerators. This option can be used
|
different crypto accelerators. This option can be used
|
||||||
to achieve best performance for particular HW.
|
to achieve best performance for particular HW.
|
||||||
|
|
||||||
|
indirect_target_selection= [X86,Intel] Mitigation control for Indirect
|
||||||
|
Target Selection(ITS) bug in Intel CPUs. Updated
|
||||||
|
microcode is also required for a fix in IBPB.
|
||||||
|
|
||||||
|
on: Enable mitigation (default).
|
||||||
|
off: Disable mitigation.
|
||||||
|
force: Force the ITS bug and deploy default
|
||||||
|
mitigation.
|
||||||
|
vmexit: Only deploy mitigation if CPU is affected by
|
||||||
|
guest/host isolation part of ITS.
|
||||||
|
|
||||||
|
For details see:
|
||||||
|
Documentation/admin-guide/hw-vuln/indirect-target-selection.rst
|
||||||
|
|
||||||
init= [KNL]
|
init= [KNL]
|
||||||
Format: <full_path>
|
Format: <full_path>
|
||||||
Run specified binary instead of /sbin/init as init
|
Run specified binary instead of /sbin/init as init
|
||||||
@@ -3263,6 +3277,7 @@
|
|||||||
expose users to several CPU vulnerabilities.
|
expose users to several CPU vulnerabilities.
|
||||||
Equivalent to: if nokaslr then kpti=0 [ARM64]
|
Equivalent to: if nokaslr then kpti=0 [ARM64]
|
||||||
gather_data_sampling=off [X86]
|
gather_data_sampling=off [X86]
|
||||||
|
indirect_target_selection=off [X86]
|
||||||
kvm.nx_huge_pages=off [X86]
|
kvm.nx_huge_pages=off [X86]
|
||||||
l1tf=off [X86]
|
l1tf=off [X86]
|
||||||
mds=off [X86]
|
mds=off [X86]
|
||||||
@@ -5765,6 +5780,8 @@
|
|||||||
|
|
||||||
Selecting 'on' will also enable the mitigation
|
Selecting 'on' will also enable the mitigation
|
||||||
against user space to user space task attacks.
|
against user space to user space task attacks.
|
||||||
|
Selecting specific mitigation does not force enable
|
||||||
|
user mitigations.
|
||||||
|
|
||||||
Selecting 'off' will disable both the kernel and
|
Selecting 'off' will disable both the kernel and
|
||||||
the user space protections.
|
the user space protections.
|
||||||
|
|||||||
@@ -113,6 +113,12 @@ pages:
|
|||||||
This also leads to limitations: there are only 31-10==21 bits available for a
|
This also leads to limitations: there are only 31-10==21 bits available for a
|
||||||
counter that increments 10 bits at a time.
|
counter that increments 10 bits at a time.
|
||||||
|
|
||||||
|
* Because of that limitation, special handling is applied to the zero pages
|
||||||
|
when using FOLL_PIN. We only pretend to pin a zero page - we don't alter its
|
||||||
|
refcount or pincount at all (it is permanent, so there's no need). The
|
||||||
|
unpinning functions also don't do anything to a zero page. This is
|
||||||
|
transparent to the caller.
|
||||||
|
|
||||||
* Callers must specifically request "dma-pinned tracking of pages". In other
|
* Callers must specifically request "dma-pinned tracking of pages". In other
|
||||||
words, just calling get_user_pages() will not suffice; a new set of functions,
|
words, just calling get_user_pages() will not suffice; a new set of functions,
|
||||||
pin_user_page() and related, must be used.
|
pin_user_page() and related, must be used.
|
||||||
|
|||||||
@@ -26,9 +26,21 @@ properties:
|
|||||||
description:
|
description:
|
||||||
Specifies the reference clock(s) from which the output frequency is
|
Specifies the reference clock(s) from which the output frequency is
|
||||||
derived. This must either reference one clock if only the first clock
|
derived. This must either reference one clock if only the first clock
|
||||||
input is connected or two if both clock inputs are connected.
|
input is connected or two if both clock inputs are connected. The last
|
||||||
minItems: 1
|
clock is the AXI bus clock that needs to be enabled so we can access the
|
||||||
maxItems: 2
|
core registers.
|
||||||
|
minItems: 2
|
||||||
|
maxItems: 3
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- const: clkin1
|
||||||
|
- const: s_axi_aclk
|
||||||
|
- items:
|
||||||
|
- const: clkin1
|
||||||
|
- const: clkin2
|
||||||
|
- const: s_axi_aclk
|
||||||
|
|
||||||
'#clock-cells':
|
'#clock-cells':
|
||||||
const: 0
|
const: 0
|
||||||
@@ -40,6 +52,7 @@ required:
|
|||||||
- compatible
|
- compatible
|
||||||
- reg
|
- reg
|
||||||
- clocks
|
- clocks
|
||||||
|
- clock-names
|
||||||
- '#clock-cells'
|
- '#clock-cells'
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
@@ -50,5 +63,6 @@ examples:
|
|||||||
compatible = "adi,axi-clkgen-2.00.a";
|
compatible = "adi,axi-clkgen-2.00.a";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
reg = <0xff000000 0x1000>;
|
reg = <0xff000000 0x1000>;
|
||||||
clocks = <&osc 1>;
|
clocks = <&osc 1>, <&clkc 15>;
|
||||||
|
clock-names = "clkin1", "s_axi_aclk";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ properties:
|
|||||||
adi,dsi-lanes:
|
adi,dsi-lanes:
|
||||||
description: Number of DSI data lanes connected to the DSI host.
|
description: Number of DSI data lanes connected to the DSI host.
|
||||||
$ref: /schemas/types.yaml#/definitions/uint32
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
enum: [ 1, 2, 3, 4 ]
|
enum: [ 2, 3, 4 ]
|
||||||
|
|
||||||
ports:
|
ports:
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ properties:
|
|||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
spi-max-frequency:
|
spi-max-frequency:
|
||||||
maximum: 30000000
|
maximum: 66000000
|
||||||
|
|
||||||
reset-gpios:
|
reset-gpios:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ properties:
|
|||||||
description: |
|
description: |
|
||||||
For multicolor LED support this property should be defined as either
|
For multicolor LED support this property should be defined as either
|
||||||
LED_COLOR_ID_RGB or LED_COLOR_ID_MULTI which can be found in
|
LED_COLOR_ID_RGB or LED_COLOR_ID_MULTI which can be found in
|
||||||
include/linux/leds/common.h.
|
include/dt-bindings/leds/common.h.
|
||||||
enum: [ 8, 9 ]
|
enum: [ 8, 9 ]
|
||||||
|
|
||||||
required:
|
required:
|
||||||
|
|||||||
@@ -50,15 +50,15 @@ properties:
|
|||||||
minimum: 0
|
minimum: 0
|
||||||
maximum: 1
|
maximum: 1
|
||||||
|
|
||||||
rohm,charger-sense-resistor-ohms:
|
rohm,charger-sense-resistor-micro-ohms:
|
||||||
minimum: 10000000
|
minimum: 10000
|
||||||
maximum: 50000000
|
maximum: 50000
|
||||||
description: |
|
description: |
|
||||||
BD71827 and BD71828 have SAR ADC for measuring charging currents.
|
BD71815 has SAR ADC for measuring charging currents. External sense
|
||||||
External sense resistor (RSENSE in data sheet) should be used. If
|
resistor (RSENSE in data sheet) should be used. If something other
|
||||||
something other but 30MOhm resistor is used the resistance value
|
but a 30 mOhm resistor is used the resistance value should be given
|
||||||
should be given here in Ohms.
|
here in micro Ohms.
|
||||||
default: 30000000
|
default: 30000
|
||||||
|
|
||||||
regulators:
|
regulators:
|
||||||
$ref: ../regulator/rohm,bd71815-regulator.yaml
|
$ref: ../regulator/rohm,bd71815-regulator.yaml
|
||||||
@@ -67,7 +67,7 @@ properties:
|
|||||||
|
|
||||||
gpio-reserved-ranges:
|
gpio-reserved-ranges:
|
||||||
description: |
|
description: |
|
||||||
Usage of BD71828 GPIO pins can be changed via OTP. This property can be
|
Usage of BD71815 GPIO pins can be changed via OTP. This property can be
|
||||||
used to mark the pins which should not be configured for GPIO. Please see
|
used to mark the pins which should not be configured for GPIO. Please see
|
||||||
the ../gpio/gpio.txt for more information.
|
the ../gpio/gpio.txt for more information.
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ examples:
|
|||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
|
|
||||||
rohm,charger-sense-resistor-ohms = <10000000>;
|
rohm,charger-sense-resistor-micro-ohms = <10000>;
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
buck1: buck1 {
|
buck1: buck1 {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ properties:
|
|||||||
"#address-cells":
|
"#address-cells":
|
||||||
const: 1
|
const: 1
|
||||||
description: |
|
description: |
|
||||||
The cell is the slot ID if a function subnode is used.
|
The cell is the SDIO function number if a function subnode is used.
|
||||||
|
|
||||||
"#size-cells":
|
"#size-cells":
|
||||||
const: 0
|
const: 0
|
||||||
|
|||||||
@@ -31,10 +31,6 @@ properties:
|
|||||||
$ref: "regulator.yaml#"
|
$ref: "regulator.yaml#"
|
||||||
unevaluatedProperties: false
|
unevaluatedProperties: false
|
||||||
|
|
||||||
properties:
|
|
||||||
regulator-compatible:
|
|
||||||
pattern: "^vbuck[1-4]$"
|
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
required:
|
required:
|
||||||
@@ -52,7 +48,6 @@ examples:
|
|||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
vbuck1 {
|
vbuck1 {
|
||||||
regulator-compatible = "vbuck1";
|
|
||||||
regulator-min-microvolt = <300000>;
|
regulator-min-microvolt = <300000>;
|
||||||
regulator-max-microvolt = <1193750>;
|
regulator-max-microvolt = <1193750>;
|
||||||
regulator-enable-ramp-delay = <256>;
|
regulator-enable-ramp-delay = <256>;
|
||||||
@@ -60,7 +55,6 @@ examples:
|
|||||||
};
|
};
|
||||||
|
|
||||||
vbuck3 {
|
vbuck3 {
|
||||||
regulator-compatible = "vbuck3";
|
|
||||||
regulator-min-microvolt = <300000>;
|
regulator-min-microvolt = <300000>;
|
||||||
regulator-max-microvolt = <1193750>;
|
regulator-max-microvolt = <1193750>;
|
||||||
regulator-enable-ramp-delay = <256>;
|
regulator-enable-ramp-delay = <256>;
|
||||||
|
|||||||
@@ -18,16 +18,15 @@ properties:
|
|||||||
description: prop-encoded-array <a b>
|
description: prop-encoded-array <a b>
|
||||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
items:
|
items:
|
||||||
items:
|
- description: Delay between rts signal and beginning of data sent in
|
||||||
- description: Delay between rts signal and beginning of data sent in
|
milliseconds. It corresponds to the delay before sending data.
|
||||||
milliseconds. It corresponds to the delay before sending data.
|
default: 0
|
||||||
default: 0
|
maximum: 100
|
||||||
maximum: 100
|
- description: Delay between end of data sent and rts signal in milliseconds.
|
||||||
- description: Delay between end of data sent and rts signal in milliseconds.
|
It corresponds to the delay after sending data and actual release
|
||||||
It corresponds to the delay after sending data and actual release
|
of the line.
|
||||||
of the line.
|
default: 0
|
||||||
default: 0
|
maximum: 100
|
||||||
maximum: 100
|
|
||||||
|
|
||||||
rs485-rts-active-low:
|
rs485-rts-active-low:
|
||||||
description: drive RTS low when sending (default is high).
|
description: drive RTS low when sending (default is high).
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ properties:
|
|||||||
Indicates how many data pins are used to transmit two channels of PDM
|
Indicates how many data pins are used to transmit two channels of PDM
|
||||||
signal. 0 means two wires, 1 means one wire. Default value is 0.
|
signal. 0 means two wires, 1 means one wire. Default value is 0.
|
||||||
enum:
|
enum:
|
||||||
- 0 # one wire
|
- 0 # two wires
|
||||||
- 1 # two wires
|
- 1 # one wire
|
||||||
|
|
||||||
mediatek,mic-type-0:
|
mediatek,mic-type-0:
|
||||||
$ref: /schemas/types.yaml#/definitions/uint32
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
@@ -53,9 +53,9 @@ additionalProperties: false
|
|||||||
|
|
||||||
examples:
|
examples:
|
||||||
- |
|
- |
|
||||||
mt6359codec: mt6359codec {
|
mt6359codec: audio-codec {
|
||||||
mediatek,dmic-mode = <0>;
|
mediatek,dmic-mode = <0>;
|
||||||
mediatek,mic-type-0 = <2>;
|
mediatek,mic-type-0 = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
...
|
...
|
||||||
|
|||||||
@@ -869,6 +869,8 @@ patternProperties:
|
|||||||
description: National Semiconductor
|
description: National Semiconductor
|
||||||
"^nec,.*":
|
"^nec,.*":
|
||||||
description: NEC LCD Technologies, Ltd.
|
description: NEC LCD Technologies, Ltd.
|
||||||
|
"^neofidelity,.*":
|
||||||
|
description: Neofidelity Inc.
|
||||||
"^neonode,.*":
|
"^neonode,.*":
|
||||||
description: Neonode Inc.
|
description: Neonode Inc.
|
||||||
"^netgear,.*":
|
"^netgear,.*":
|
||||||
|
|||||||
@@ -6,9 +6,12 @@ API to implement a new FPGA bridge
|
|||||||
|
|
||||||
* struct fpga_bridge - The FPGA Bridge structure
|
* struct fpga_bridge - The FPGA Bridge structure
|
||||||
* struct fpga_bridge_ops - Low level Bridge driver ops
|
* struct fpga_bridge_ops - Low level Bridge driver ops
|
||||||
* fpga_bridge_register() - Create and register a bridge
|
* __fpga_bridge_register() - Create and register a bridge
|
||||||
* fpga_bridge_unregister() - Unregister a bridge
|
* fpga_bridge_unregister() - Unregister a bridge
|
||||||
|
|
||||||
|
The helper macro ``fpga_bridge_register()`` automatically sets
|
||||||
|
the module that registers the FPGA bridge as the owner.
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/fpga/fpga-bridge.h
|
.. kernel-doc:: include/linux/fpga/fpga-bridge.h
|
||||||
:functions: fpga_bridge
|
:functions: fpga_bridge
|
||||||
|
|
||||||
@@ -16,7 +19,7 @@ API to implement a new FPGA bridge
|
|||||||
:functions: fpga_bridge_ops
|
:functions: fpga_bridge_ops
|
||||||
|
|
||||||
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
||||||
:functions: fpga_bridge_register
|
:functions: __fpga_bridge_register
|
||||||
|
|
||||||
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
.. kernel-doc:: drivers/fpga/fpga-bridge.c
|
||||||
:functions: fpga_bridge_unregister
|
:functions: fpga_bridge_unregister
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ How to support a new FPGA device
|
|||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
||||||
To add another FPGA manager, write a driver that implements a set of ops. The
|
To add another FPGA manager, write a driver that implements a set of ops. The
|
||||||
probe function calls fpga_mgr_register() or fpga_mgr_register_full(), such as::
|
probe function calls ``fpga_mgr_register()`` or ``fpga_mgr_register_full()``,
|
||||||
|
such as::
|
||||||
|
|
||||||
static const struct fpga_manager_ops socfpga_fpga_ops = {
|
static const struct fpga_manager_ops socfpga_fpga_ops = {
|
||||||
.write_init = socfpga_fpga_ops_configure_init,
|
.write_init = socfpga_fpga_ops_configure_init,
|
||||||
@@ -69,10 +70,11 @@ probe function calls fpga_mgr_register() or fpga_mgr_register_full(), such as::
|
|||||||
}
|
}
|
||||||
|
|
||||||
Alternatively, the probe function could call one of the resource managed
|
Alternatively, the probe function could call one of the resource managed
|
||||||
register functions, devm_fpga_mgr_register() or devm_fpga_mgr_register_full().
|
register functions, ``devm_fpga_mgr_register()`` or
|
||||||
When these functions are used, the parameter syntax is the same, but the call
|
``devm_fpga_mgr_register_full()``. When these functions are used, the
|
||||||
to fpga_mgr_unregister() should be removed. In the above example, the
|
parameter syntax is the same, but the call to ``fpga_mgr_unregister()`` should be
|
||||||
socfpga_fpga_remove() function would not be required.
|
removed. In the above example, the ``socfpga_fpga_remove()`` function would not be
|
||||||
|
required.
|
||||||
|
|
||||||
The ops will implement whatever device specific register writes are needed to
|
The ops will implement whatever device specific register writes are needed to
|
||||||
do the programming sequence for this particular FPGA. These ops return 0 for
|
do the programming sequence for this particular FPGA. These ops return 0 for
|
||||||
@@ -125,15 +127,19 @@ API for implementing a new FPGA Manager driver
|
|||||||
* struct fpga_manager - the FPGA manager struct
|
* struct fpga_manager - the FPGA manager struct
|
||||||
* struct fpga_manager_ops - Low level FPGA manager driver ops
|
* struct fpga_manager_ops - Low level FPGA manager driver ops
|
||||||
* struct fpga_manager_info - Parameter structure for fpga_mgr_register_full()
|
* struct fpga_manager_info - Parameter structure for fpga_mgr_register_full()
|
||||||
* fpga_mgr_register_full() - Create and register an FPGA manager using the
|
* __fpga_mgr_register_full() - Create and register an FPGA manager using the
|
||||||
fpga_mgr_info structure to provide the full flexibility of options
|
fpga_mgr_info structure to provide the full flexibility of options
|
||||||
* fpga_mgr_register() - Create and register an FPGA manager using standard
|
* __fpga_mgr_register() - Create and register an FPGA manager using standard
|
||||||
arguments
|
arguments
|
||||||
* devm_fpga_mgr_register_full() - Resource managed version of
|
* __devm_fpga_mgr_register_full() - Resource managed version of
|
||||||
fpga_mgr_register_full()
|
__fpga_mgr_register_full()
|
||||||
* devm_fpga_mgr_register() - Resource managed version of fpga_mgr_register()
|
* __devm_fpga_mgr_register() - Resource managed version of __fpga_mgr_register()
|
||||||
* fpga_mgr_unregister() - Unregister an FPGA manager
|
* fpga_mgr_unregister() - Unregister an FPGA manager
|
||||||
|
|
||||||
|
Helper macros ``fpga_mgr_register_full()``, ``fpga_mgr_register()``,
|
||||||
|
``devm_fpga_mgr_register_full()``, and ``devm_fpga_mgr_register()`` are available
|
||||||
|
to ease the registration.
|
||||||
|
|
||||||
.. kernel-doc:: include/linux/fpga/fpga-mgr.h
|
.. kernel-doc:: include/linux/fpga/fpga-mgr.h
|
||||||
:functions: fpga_mgr_states
|
:functions: fpga_mgr_states
|
||||||
|
|
||||||
@@ -147,16 +153,16 @@ API for implementing a new FPGA Manager driver
|
|||||||
:functions: fpga_manager_info
|
:functions: fpga_manager_info
|
||||||
|
|
||||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||||
:functions: fpga_mgr_register_full
|
:functions: __fpga_mgr_register_full
|
||||||
|
|
||||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||||
:functions: fpga_mgr_register
|
:functions: __fpga_mgr_register
|
||||||
|
|
||||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||||
:functions: devm_fpga_mgr_register_full
|
:functions: __devm_fpga_mgr_register_full
|
||||||
|
|
||||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||||
:functions: devm_fpga_mgr_register
|
:functions: __devm_fpga_mgr_register
|
||||||
|
|
||||||
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
.. kernel-doc:: drivers/fpga/fpga-mgr.c
|
||||||
:functions: fpga_mgr_unregister
|
:functions: fpga_mgr_unregister
|
||||||
|
|||||||
@@ -100,4 +100,4 @@ Some helpers are provided in order to set/get modem control lines via GPIO.
|
|||||||
.. kernel-doc:: drivers/tty/serial/serial_mctrl_gpio.c
|
.. kernel-doc:: drivers/tty/serial/serial_mctrl_gpio.c
|
||||||
:identifiers: mctrl_gpio_init mctrl_gpio_free mctrl_gpio_to_gpiod
|
:identifiers: mctrl_gpio_init mctrl_gpio_free mctrl_gpio_to_gpiod
|
||||||
mctrl_gpio_set mctrl_gpio_get mctrl_gpio_enable_ms
|
mctrl_gpio_set mctrl_gpio_get mctrl_gpio_enable_ms
|
||||||
mctrl_gpio_disable_ms
|
mctrl_gpio_disable_ms_sync mctrl_gpio_disable_ms_no_sync
|
||||||
|
|||||||
@@ -778,7 +778,8 @@ process the parameters it is given.
|
|||||||
|
|
||||||
* ::
|
* ::
|
||||||
|
|
||||||
bool fs_validate_description(const struct fs_parameter_description *desc);
|
bool fs_validate_description(const char *name,
|
||||||
|
const struct fs_parameter_description *desc);
|
||||||
|
|
||||||
This performs some validation checks on a parameter description. It
|
This performs some validation checks on a parameter description. It
|
||||||
returns true if the description is good and false if it is not. It will
|
returns true if the description is good and false if it is not. It will
|
||||||
|
|||||||
@@ -32,12 +32,12 @@ Temperature sensors and fans can be queried and set via the standard
|
|||||||
=============================== ======= =======================================
|
=============================== ======= =======================================
|
||||||
Name Perm Description
|
Name Perm Description
|
||||||
=============================== ======= =======================================
|
=============================== ======= =======================================
|
||||||
fan[1-3]_input RO Fan speed in RPM.
|
fan[1-4]_input RO Fan speed in RPM.
|
||||||
fan[1-3]_label RO Fan label.
|
fan[1-4]_label RO Fan label.
|
||||||
fan[1-3]_min RO Minimal Fan speed in RPM
|
fan[1-4]_min RO Minimal Fan speed in RPM
|
||||||
fan[1-3]_max RO Maximal Fan speed in RPM
|
fan[1-4]_max RO Maximal Fan speed in RPM
|
||||||
fan[1-3]_target RO Expected Fan speed in RPM
|
fan[1-4]_target RO Expected Fan speed in RPM
|
||||||
pwm[1-3] RW Control the fan PWM duty-cycle.
|
pwm[1-4] RW Control the fan PWM duty-cycle.
|
||||||
pwm1_enable WO Enable or disable automatic BIOS fan
|
pwm1_enable WO Enable or disable automatic BIOS fan
|
||||||
control (not supported on all laptops,
|
control (not supported on all laptops,
|
||||||
see below for details).
|
see below for details).
|
||||||
@@ -93,7 +93,7 @@ Again, when you find new codes, we'd be happy to have your patches!
|
|||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
The driver also exports the fans as thermal cooling devices with
|
The driver also exports the fans as thermal cooling devices with
|
||||||
``type`` set to ``dell-smm-fan[1-3]``. This allows for easy fan control
|
``type`` set to ``dell-smm-fan[1-4]``. This allows for easy fan control
|
||||||
using one of the thermal governors.
|
using one of the thermal governors.
|
||||||
|
|
||||||
Module parameters
|
Module parameters
|
||||||
|
|||||||
@@ -54,6 +54,15 @@ KCONFIG_OVERWRITECONFIG
|
|||||||
If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not
|
If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not
|
||||||
break symlinks when .config is a symlink to somewhere else.
|
break symlinks when .config is a symlink to somewhere else.
|
||||||
|
|
||||||
|
KCONFIG_WARN_UNKNOWN_SYMBOLS
|
||||||
|
----------------------------
|
||||||
|
This environment variable makes Kconfig warn about all unrecognized
|
||||||
|
symbols in the config input.
|
||||||
|
|
||||||
|
KCONFIG_WERROR
|
||||||
|
--------------
|
||||||
|
If set, Kconfig treats warnings as errors.
|
||||||
|
|
||||||
`CONFIG_`
|
`CONFIG_`
|
||||||
---------
|
---------
|
||||||
If you set `CONFIG_` in the environment, Kconfig will prefix all symbols
|
If you set `CONFIG_` in the environment, Kconfig will prefix all symbols
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ Use seqcount_latch_t when the write side sections cannot be protected
|
|||||||
from interruption by readers. This is typically the case when the read
|
from interruption by readers. This is typically the case when the read
|
||||||
side can be invoked from NMI handlers.
|
side can be invoked from NMI handlers.
|
||||||
|
|
||||||
Check `raw_write_seqcount_latch()` for more information.
|
Check `write_seqcount_latch()` for more information.
|
||||||
|
|
||||||
|
|
||||||
.. _seqlock_t:
|
.. _seqlock_t:
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ format, the Group Extension is set in the PS-field.
|
|||||||
|
|
||||||
On the other hand, when using PDU1 format, the PS-field contains a so-called
|
On the other hand, when using PDU1 format, the PS-field contains a so-called
|
||||||
Destination Address, which is _not_ part of the PGN. When communicating a PGN
|
Destination Address, which is _not_ part of the PGN. When communicating a PGN
|
||||||
from user space to kernel (or vice versa) and PDU2 format is used, the PS-field
|
from user space to kernel (or vice versa) and PDU1 format is used, the PS-field
|
||||||
of the PGN shall be set to zero. The Destination Address shall be set
|
of the PGN shall be set to zero. The Destination Address shall be set
|
||||||
elsewhere.
|
elsewhere.
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ Functions
|
|||||||
Callbacks
|
Callbacks
|
||||||
=========
|
=========
|
||||||
|
|
||||||
There are six callbacks:
|
There are seven callbacks:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
@@ -182,6 +182,13 @@ There are six callbacks:
|
|||||||
the length of the message. skb->len - offset may be greater
|
the length of the message. skb->len - offset may be greater
|
||||||
then full_len since strparser does not trim the skb.
|
then full_len since strparser does not trim the skb.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
int (*read_sock)(struct strparser *strp, read_descriptor_t *desc,
|
||||||
|
sk_read_actor_t recv_actor);
|
||||||
|
|
||||||
|
The read_sock callback is used by strparser instead of
|
||||||
|
sock->ops->read_sock, if provided.
|
||||||
::
|
::
|
||||||
|
|
||||||
int (*read_sock_done)(struct strparser *strp, int err);
|
int (*read_sock_done)(struct strparser *strp, int err);
|
||||||
|
|||||||
@@ -347,7 +347,9 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
|
|||||||
|
|
||||||
`int pm_runtime_resume_and_get(struct device *dev);`
|
`int pm_runtime_resume_and_get(struct device *dev);`
|
||||||
- run pm_runtime_resume(dev) and if successful, increment the device's
|
- run pm_runtime_resume(dev) and if successful, increment the device's
|
||||||
usage counter; return the result of pm_runtime_resume
|
usage counter; returns 0 on success (whether or not the device's
|
||||||
|
runtime PM status was already 'active') or the error code from
|
||||||
|
pm_runtime_resume() on failure.
|
||||||
|
|
||||||
`int pm_request_idle(struct device *dev);`
|
`int pm_request_idle(struct device *dev);`
|
||||||
- submit a request to execute the subsystem-level idle callback for the
|
- submit a request to execute the subsystem-level idle callback for the
|
||||||
|
|||||||
@@ -129,11 +129,8 @@ adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain
|
|||||||
online to handle timekeeping tasks in order to ensure that system
|
online to handle timekeeping tasks in order to ensure that system
|
||||||
calls like gettimeofday() returns accurate values on adaptive-tick CPUs.
|
calls like gettimeofday() returns accurate values on adaptive-tick CPUs.
|
||||||
(This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no running
|
(This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no running
|
||||||
user processes to observe slight drifts in clock rate.) Therefore, the
|
user processes to observe slight drifts in clock rate.) Note that this
|
||||||
boot CPU is prohibited from entering adaptive-ticks mode. Specifying a
|
means that your system must have at least two CPUs in order for
|
||||||
"nohz_full=" mask that includes the boot CPU will result in a boot-time
|
|
||||||
error message, and the boot CPU will be removed from the mask. Note that
|
|
||||||
this means that your system must have at least two CPUs in order for
|
|
||||||
CONFIG_NO_HZ_FULL=y to do anything for you.
|
CONFIG_NO_HZ_FULL=y to do anything for you.
|
||||||
|
|
||||||
Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded.
|
Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded.
|
||||||
|
|||||||
@@ -4833,6 +4833,7 @@ S: Maintained
|
|||||||
F: Documentation/admin-guide/module-signing.rst
|
F: Documentation/admin-guide/module-signing.rst
|
||||||
F: certs/
|
F: certs/
|
||||||
F: scripts/sign-file.c
|
F: scripts/sign-file.c
|
||||||
|
F: scripts/ssl-common.h
|
||||||
F: tools/certs/
|
F: tools/certs/
|
||||||
|
|
||||||
CFAG12864B LCD DRIVER
|
CFAG12864B LCD DRIVER
|
||||||
|
|||||||
35
Makefile
35
Makefile
@@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 6
|
VERSION = 6
|
||||||
PATCHLEVEL = 1
|
PATCHLEVEL = 1
|
||||||
SUBLEVEL = 118
|
SUBLEVEL = 141
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Curry Ramen
|
NAME = Curry Ramen
|
||||||
|
|
||||||
@@ -528,7 +528,7 @@ KGZIP = gzip
|
|||||||
KBZIP2 = bzip2
|
KBZIP2 = bzip2
|
||||||
KLZOP = lzop
|
KLZOP = lzop
|
||||||
LZMA = lzma
|
LZMA = lzma
|
||||||
LZ4 = lz4c
|
LZ4 = lz4
|
||||||
XZ = xz
|
XZ = xz
|
||||||
ZSTD = zstd
|
ZSTD = zstd
|
||||||
|
|
||||||
@@ -875,6 +875,18 @@ ifdef CONFIG_CC_IS_CLANG
|
|||||||
KBUILD_CPPFLAGS += -Qunused-arguments
|
KBUILD_CPPFLAGS += -Qunused-arguments
|
||||||
# The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable.
|
# The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable.
|
||||||
KBUILD_CFLAGS += -Wno-gnu
|
KBUILD_CFLAGS += -Wno-gnu
|
||||||
|
|
||||||
|
# Clang may emit a warning when a const variable, such as the dummy variables
|
||||||
|
# in typecheck(), or const member of an aggregate type are not initialized,
|
||||||
|
# which can result in unexpected behavior. However, in many audited cases of
|
||||||
|
# the "field" variant of the warning, this is intentional because the field is
|
||||||
|
# never used within a particular call path, the field is within a union with
|
||||||
|
# other non-const members, or the containing object is not const so the field
|
||||||
|
# can be modified via memcpy() / memset(). While the variable warning also gets
|
||||||
|
# disabled with this same switch, there should not be too much coverage lost
|
||||||
|
# because -Wuninitialized will still flag when an uninitialized const variable
|
||||||
|
# is used.
|
||||||
|
KBUILD_CFLAGS += $(call cc-disable-warning, default-const-init-unsafe)
|
||||||
else
|
else
|
||||||
|
|
||||||
# gcc inanely warns about local variables called 'main'
|
# gcc inanely warns about local variables called 'main'
|
||||||
@@ -1075,6 +1087,9 @@ KBUILD_CFLAGS += $(call cc-option,-Werror=incompatible-pointer-types)
|
|||||||
# Require designated initializers for all marked structures
|
# Require designated initializers for all marked structures
|
||||||
KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init)
|
KBUILD_CFLAGS += $(call cc-option,-Werror=designated-init)
|
||||||
|
|
||||||
|
# Ensure compilers do not transform certain loops into calls to wcslen()
|
||||||
|
KBUILD_CFLAGS += -fno-builtin-wcslen
|
||||||
|
|
||||||
# change __FILE__ to the relative path from the srctree
|
# change __FILE__ to the relative path from the srctree
|
||||||
KBUILD_CPPFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
|
KBUILD_CPPFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
|
||||||
|
|
||||||
@@ -1127,6 +1142,11 @@ endif
|
|||||||
KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||||
KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CFLAGS))
|
||||||
|
|
||||||
|
# userspace programs are linked via the compiler, use the correct linker
|
||||||
|
ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_LD_IS_LLD),yy)
|
||||||
|
KBUILD_USERLDFLAGS += $(call cc-option, --ld-path=$(LD))
|
||||||
|
endif
|
||||||
|
|
||||||
# make the checker run with the right architecture
|
# make the checker run with the right architecture
|
||||||
CHECKFLAGS += --arch=$(ARCH)
|
CHECKFLAGS += --arch=$(ARCH)
|
||||||
|
|
||||||
@@ -1846,11 +1866,6 @@ rustfmt:
|
|||||||
rustfmtcheck: rustfmt_flags = --check
|
rustfmtcheck: rustfmt_flags = --check
|
||||||
rustfmtcheck: rustfmt
|
rustfmtcheck: rustfmt
|
||||||
|
|
||||||
# IDE support targets
|
|
||||||
PHONY += rust-analyzer
|
|
||||||
rust-analyzer:
|
|
||||||
$(Q)$(MAKE) $(build)=rust $@
|
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -1903,6 +1918,7 @@ help:
|
|||||||
@echo ' modules - default target, build the module(s)'
|
@echo ' modules - default target, build the module(s)'
|
||||||
@echo ' modules_install - install the module'
|
@echo ' modules_install - install the module'
|
||||||
@echo ' clean - remove generated files in module directory only'
|
@echo ' clean - remove generated files in module directory only'
|
||||||
|
@echo ' rust-analyzer - generate rust-project.json rust-analyzer support file'
|
||||||
@echo ''
|
@echo ''
|
||||||
|
|
||||||
endif # KBUILD_EXTMOD
|
endif # KBUILD_EXTMOD
|
||||||
@@ -2039,6 +2055,11 @@ quiet_cmd_tags = GEN $@
|
|||||||
tags TAGS cscope gtags: FORCE
|
tags TAGS cscope gtags: FORCE
|
||||||
$(call cmd,tags)
|
$(call cmd,tags)
|
||||||
|
|
||||||
|
# IDE support targets
|
||||||
|
PHONY += rust-analyzer
|
||||||
|
rust-analyzer:
|
||||||
|
$(Q)$(MAKE) $(build)=rust $@
|
||||||
|
|
||||||
# Script to generate missing namespace dependencies
|
# Script to generate missing namespace dependencies
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
|
|||||||
/*
|
/*
|
||||||
* This is used to ensure we don't load something for the wrong architecture.
|
* This is used to ensure we don't load something for the wrong architecture.
|
||||||
*/
|
*/
|
||||||
#define elf_check_arch(x) ((x)->e_machine == EM_ALPHA)
|
#define elf_check_arch(x) (((x)->e_machine == EM_ALPHA) && !((x)->e_flags & EF_ALPHA_32BIT))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are used to set parameters in the core dumps.
|
* These are used to set parameters in the core dumps.
|
||||||
@@ -145,10 +145,6 @@ extern int dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task);
|
|||||||
: amask (AMASK_CIX) ? "ev6" : "ev67"); \
|
: amask (AMASK_CIX) ? "ev6" : "ev67"); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define SET_PERSONALITY(EX) \
|
|
||||||
set_personality(((EX).e_flags & EF_ALPHA_32BIT) \
|
|
||||||
? PER_LINUX_32BIT : PER_LINUX)
|
|
||||||
|
|
||||||
extern int alpha_l1i_cacheshape;
|
extern int alpha_l1i_cacheshape;
|
||||||
extern int alpha_l1d_cacheshape;
|
extern int alpha_l1d_cacheshape;
|
||||||
extern int alpha_l2_cacheshape;
|
extern int alpha_l2_cacheshape;
|
||||||
|
|||||||
@@ -322,7 +322,7 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
|
|||||||
|
|
||||||
extern void paging_init(void);
|
extern void paging_init(void);
|
||||||
|
|
||||||
/* We have our own get_unmapped_area to cope with ADDR_LIMIT_32BIT. */
|
/* We have our own get_unmapped_area */
|
||||||
#define HAVE_ARCH_UNMAPPED_AREA
|
#define HAVE_ARCH_UNMAPPED_AREA
|
||||||
|
|
||||||
#endif /* _ALPHA_PGTABLE_H */
|
#endif /* _ALPHA_PGTABLE_H */
|
||||||
|
|||||||
@@ -8,23 +8,19 @@
|
|||||||
#ifndef __ASM_ALPHA_PROCESSOR_H
|
#ifndef __ASM_ALPHA_PROCESSOR_H
|
||||||
#define __ASM_ALPHA_PROCESSOR_H
|
#define __ASM_ALPHA_PROCESSOR_H
|
||||||
|
|
||||||
#include <linux/personality.h> /* for ADDR_LIMIT_32BIT */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We have a 42-bit user address space: 4TB user VM...
|
* We have a 42-bit user address space: 4TB user VM...
|
||||||
*/
|
*/
|
||||||
#define TASK_SIZE (0x40000000000UL)
|
#define TASK_SIZE (0x40000000000UL)
|
||||||
|
|
||||||
#define STACK_TOP \
|
#define STACK_TOP (0x00120000000UL)
|
||||||
(current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL)
|
|
||||||
|
|
||||||
#define STACK_TOP_MAX 0x00120000000UL
|
#define STACK_TOP_MAX 0x00120000000UL
|
||||||
|
|
||||||
/* This decides where the kernel will search for a free chunk of vm
|
/* This decides where the kernel will search for a free chunk of vm
|
||||||
* space during mmap's.
|
* space during mmap's.
|
||||||
*/
|
*/
|
||||||
#define TASK_UNMAPPED_BASE \
|
#define TASK_UNMAPPED_BASE (TASK_SIZE / 2)
|
||||||
((current->personality & ADDR_LIMIT_32BIT) ? 0x40000000 : TASK_SIZE / 2)
|
|
||||||
|
|
||||||
/* This is dead. Everything has been moved to thread_info. */
|
/* This is dead. Everything has been moved to thread_info. */
|
||||||
struct thread_struct { };
|
struct thread_struct { };
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ struct pt_regs {
|
|||||||
unsigned long trap_a0;
|
unsigned long trap_a0;
|
||||||
unsigned long trap_a1;
|
unsigned long trap_a1;
|
||||||
unsigned long trap_a2;
|
unsigned long trap_a2;
|
||||||
|
/* This makes the stack 16-byte aligned as GCC expects */
|
||||||
|
unsigned long __pad0;
|
||||||
/* These are saved by PAL-code: */
|
/* These are saved by PAL-code: */
|
||||||
unsigned long ps;
|
unsigned long ps;
|
||||||
unsigned long pc;
|
unsigned long pc;
|
||||||
|
|||||||
@@ -32,7 +32,9 @@ void foo(void)
|
|||||||
DEFINE(CRED_EGID, offsetof(struct cred, egid));
|
DEFINE(CRED_EGID, offsetof(struct cred, egid));
|
||||||
BLANK();
|
BLANK();
|
||||||
|
|
||||||
|
DEFINE(SP_OFF, offsetof(struct pt_regs, ps));
|
||||||
DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs));
|
DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs));
|
||||||
|
DEFINE(SWITCH_STACK_SIZE, sizeof(struct switch_stack));
|
||||||
DEFINE(PT_PTRACED, PT_PTRACED);
|
DEFINE(PT_PTRACED, PT_PTRACED);
|
||||||
DEFINE(CLONE_VM, CLONE_VM);
|
DEFINE(CLONE_VM, CLONE_VM);
|
||||||
DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
|
DEFINE(CLONE_UNTRACED, CLONE_UNTRACED);
|
||||||
|
|||||||
@@ -15,10 +15,6 @@
|
|||||||
.set noat
|
.set noat
|
||||||
.cfi_sections .debug_frame
|
.cfi_sections .debug_frame
|
||||||
|
|
||||||
/* Stack offsets. */
|
|
||||||
#define SP_OFF 184
|
|
||||||
#define SWITCH_STACK_SIZE 320
|
|
||||||
|
|
||||||
.macro CFI_START_OSF_FRAME func
|
.macro CFI_START_OSF_FRAME func
|
||||||
.align 4
|
.align 4
|
||||||
.globl \func
|
.globl \func
|
||||||
@@ -199,8 +195,8 @@ CFI_END_OSF_FRAME entArith
|
|||||||
CFI_START_OSF_FRAME entMM
|
CFI_START_OSF_FRAME entMM
|
||||||
SAVE_ALL
|
SAVE_ALL
|
||||||
/* save $9 - $15 so the inline exception code can manipulate them. */
|
/* save $9 - $15 so the inline exception code can manipulate them. */
|
||||||
subq $sp, 56, $sp
|
subq $sp, 64, $sp
|
||||||
.cfi_adjust_cfa_offset 56
|
.cfi_adjust_cfa_offset 64
|
||||||
stq $9, 0($sp)
|
stq $9, 0($sp)
|
||||||
stq $10, 8($sp)
|
stq $10, 8($sp)
|
||||||
stq $11, 16($sp)
|
stq $11, 16($sp)
|
||||||
@@ -215,7 +211,7 @@ CFI_START_OSF_FRAME entMM
|
|||||||
.cfi_rel_offset $13, 32
|
.cfi_rel_offset $13, 32
|
||||||
.cfi_rel_offset $14, 40
|
.cfi_rel_offset $14, 40
|
||||||
.cfi_rel_offset $15, 48
|
.cfi_rel_offset $15, 48
|
||||||
addq $sp, 56, $19
|
addq $sp, 64, $19
|
||||||
/* handle the fault */
|
/* handle the fault */
|
||||||
lda $8, 0x3fff
|
lda $8, 0x3fff
|
||||||
bic $sp, $8, $8
|
bic $sp, $8, $8
|
||||||
@@ -228,7 +224,7 @@ CFI_START_OSF_FRAME entMM
|
|||||||
ldq $13, 32($sp)
|
ldq $13, 32($sp)
|
||||||
ldq $14, 40($sp)
|
ldq $14, 40($sp)
|
||||||
ldq $15, 48($sp)
|
ldq $15, 48($sp)
|
||||||
addq $sp, 56, $sp
|
addq $sp, 64, $sp
|
||||||
.cfi_restore $9
|
.cfi_restore $9
|
||||||
.cfi_restore $10
|
.cfi_restore $10
|
||||||
.cfi_restore $11
|
.cfi_restore $11
|
||||||
@@ -236,7 +232,7 @@ CFI_START_OSF_FRAME entMM
|
|||||||
.cfi_restore $13
|
.cfi_restore $13
|
||||||
.cfi_restore $14
|
.cfi_restore $14
|
||||||
.cfi_restore $15
|
.cfi_restore $15
|
||||||
.cfi_adjust_cfa_offset -56
|
.cfi_adjust_cfa_offset -64
|
||||||
/* finish up the syscall as normal. */
|
/* finish up the syscall as normal. */
|
||||||
br ret_from_sys_call
|
br ret_from_sys_call
|
||||||
CFI_END_OSF_FRAME entMM
|
CFI_END_OSF_FRAME entMM
|
||||||
@@ -383,8 +379,8 @@ entUnaUser:
|
|||||||
.cfi_restore $0
|
.cfi_restore $0
|
||||||
.cfi_adjust_cfa_offset -256
|
.cfi_adjust_cfa_offset -256
|
||||||
SAVE_ALL /* setup normal kernel stack */
|
SAVE_ALL /* setup normal kernel stack */
|
||||||
lda $sp, -56($sp)
|
lda $sp, -64($sp)
|
||||||
.cfi_adjust_cfa_offset 56
|
.cfi_adjust_cfa_offset 64
|
||||||
stq $9, 0($sp)
|
stq $9, 0($sp)
|
||||||
stq $10, 8($sp)
|
stq $10, 8($sp)
|
||||||
stq $11, 16($sp)
|
stq $11, 16($sp)
|
||||||
@@ -400,7 +396,7 @@ entUnaUser:
|
|||||||
.cfi_rel_offset $14, 40
|
.cfi_rel_offset $14, 40
|
||||||
.cfi_rel_offset $15, 48
|
.cfi_rel_offset $15, 48
|
||||||
lda $8, 0x3fff
|
lda $8, 0x3fff
|
||||||
addq $sp, 56, $19
|
addq $sp, 64, $19
|
||||||
bic $sp, $8, $8
|
bic $sp, $8, $8
|
||||||
jsr $26, do_entUnaUser
|
jsr $26, do_entUnaUser
|
||||||
ldq $9, 0($sp)
|
ldq $9, 0($sp)
|
||||||
@@ -410,7 +406,7 @@ entUnaUser:
|
|||||||
ldq $13, 32($sp)
|
ldq $13, 32($sp)
|
||||||
ldq $14, 40($sp)
|
ldq $14, 40($sp)
|
||||||
ldq $15, 48($sp)
|
ldq $15, 48($sp)
|
||||||
lda $sp, 56($sp)
|
lda $sp, 64($sp)
|
||||||
.cfi_restore $9
|
.cfi_restore $9
|
||||||
.cfi_restore $10
|
.cfi_restore $10
|
||||||
.cfi_restore $11
|
.cfi_restore $11
|
||||||
@@ -418,7 +414,7 @@ entUnaUser:
|
|||||||
.cfi_restore $13
|
.cfi_restore $13
|
||||||
.cfi_restore $14
|
.cfi_restore $14
|
||||||
.cfi_restore $15
|
.cfi_restore $15
|
||||||
.cfi_adjust_cfa_offset -56
|
.cfi_adjust_cfa_offset -64
|
||||||
br ret_from_sys_call
|
br ret_from_sys_call
|
||||||
CFI_END_OSF_FRAME entUna
|
CFI_END_OSF_FRAME entUna
|
||||||
|
|
||||||
|
|||||||
@@ -1213,8 +1213,7 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get an address range which is currently unmapped. Similar to the
|
/* Get an address range which is currently unmapped. */
|
||||||
generic version except that we know how to honor ADDR_LIMIT_32BIT. */
|
|
||||||
|
|
||||||
static unsigned long
|
static unsigned long
|
||||||
arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
|
arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
|
||||||
@@ -1236,13 +1235,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
|
|||||||
unsigned long len, unsigned long pgoff,
|
unsigned long len, unsigned long pgoff,
|
||||||
unsigned long flags)
|
unsigned long flags)
|
||||||
{
|
{
|
||||||
unsigned long limit;
|
unsigned long limit = TASK_SIZE;
|
||||||
|
|
||||||
/* "32 bit" actually means 31 bit, since pointers sign extend. */
|
|
||||||
if (current->personality & ADDR_LIMIT_32BIT)
|
|
||||||
limit = 0x80000000;
|
|
||||||
else
|
|
||||||
limit = TASK_SIZE;
|
|
||||||
|
|
||||||
if (len > limit)
|
if (len > limit)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|||||||
@@ -707,7 +707,7 @@ s_reg_to_mem (unsigned long s_reg)
|
|||||||
static int unauser_reg_offsets[32] = {
|
static int unauser_reg_offsets[32] = {
|
||||||
R(r0), R(r1), R(r2), R(r3), R(r4), R(r5), R(r6), R(r7), R(r8),
|
R(r0), R(r1), R(r2), R(r3), R(r4), R(r5), R(r6), R(r7), R(r8),
|
||||||
/* r9 ... r15 are stored in front of regs. */
|
/* r9 ... r15 are stored in front of regs. */
|
||||||
-56, -48, -40, -32, -24, -16, -8,
|
-64, -56, -48, -40, -32, -24, -16, /* padding at -8 */
|
||||||
R(r16), R(r17), R(r18),
|
R(r16), R(r17), R(r18),
|
||||||
R(r19), R(r20), R(r21), R(r22), R(r23), R(r24), R(r25), R(r26),
|
R(r19), R(r20), R(r21), R(r22), R(r23), R(r24), R(r25), R(r26),
|
||||||
R(r27), R(r28), R(gp),
|
R(r27), R(r28), R(gp),
|
||||||
|
|||||||
@@ -78,8 +78,8 @@ __load_new_mm_context(struct mm_struct *next_mm)
|
|||||||
|
|
||||||
/* Macro for exception fixup code to access integer registers. */
|
/* Macro for exception fixup code to access integer registers. */
|
||||||
#define dpf_reg(r) \
|
#define dpf_reg(r) \
|
||||||
(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-16 : \
|
(((unsigned long *)regs)[(r) <= 8 ? (r) : (r) <= 15 ? (r)-17 : \
|
||||||
(r) <= 18 ? (r)+10 : (r)-10])
|
(r) <= 18 ? (r)+11 : (r)-10])
|
||||||
|
|
||||||
asmlinkage void
|
asmlinkage void
|
||||||
do_page_fault(unsigned long address, unsigned long mmcsr,
|
do_page_fault(unsigned long address, unsigned long mmcsr,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
KBUILD_DEFCONFIG := haps_hs_smp_defconfig
|
KBUILD_DEFCONFIG := haps_hs_smp_defconfig
|
||||||
|
|
||||||
ifeq ($(CROSS_COMPILE),)
|
ifeq ($(CROSS_COMPILE),)
|
||||||
CROSS_COMPILE := $(call cc-cross-prefix, arc-linux- arceb-linux-)
|
CROSS_COMPILE := $(call cc-cross-prefix, arc-linux- arceb-linux- arc-linux-gnu-)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
|
cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||||
<&clocks BCM2835_CLOCK_VPU>;
|
<&clocks BCM2835_CLOCK_VPU>;
|
||||||
clock-names = "uartclk", "apb_pclk";
|
clock-names = "uartclk", "apb_pclk";
|
||||||
arm,primecell-periphid = <0x00241011>;
|
arm,primecell-periphid = <0x00341011>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||||
<&clocks BCM2835_CLOCK_VPU>;
|
<&clocks BCM2835_CLOCK_VPU>;
|
||||||
clock-names = "uartclk", "apb_pclk";
|
clock-names = "uartclk", "apb_pclk";
|
||||||
arm,primecell-periphid = <0x00241011>;
|
arm,primecell-periphid = <0x00341011>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||||
<&clocks BCM2835_CLOCK_VPU>;
|
<&clocks BCM2835_CLOCK_VPU>;
|
||||||
clock-names = "uartclk", "apb_pclk";
|
clock-names = "uartclk", "apb_pclk";
|
||||||
arm,primecell-periphid = <0x00241011>;
|
arm,primecell-periphid = <0x00341011>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
clocks = <&clocks BCM2835_CLOCK_UART>,
|
clocks = <&clocks BCM2835_CLOCK_UART>,
|
||||||
<&clocks BCM2835_CLOCK_VPU>;
|
<&clocks BCM2835_CLOCK_VPU>;
|
||||||
clock-names = "uartclk", "apb_pclk";
|
clock-names = "uartclk", "apb_pclk";
|
||||||
arm,primecell-periphid = <0x00241011>;
|
arm,primecell-periphid = <0x00341011>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -451,8 +451,6 @@
|
|||||||
IRQ_TYPE_LEVEL_LOW)>,
|
IRQ_TYPE_LEVEL_LOW)>,
|
||||||
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
|
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
|
||||||
IRQ_TYPE_LEVEL_LOW)>;
|
IRQ_TYPE_LEVEL_LOW)>;
|
||||||
/* This only applies to the ARMv7 stub */
|
|
||||||
arm,cpu-registers-not-fw-configured;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
cpus: cpus {
|
cpus: cpus {
|
||||||
@@ -1154,6 +1152,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&uart0 {
|
&uart0 {
|
||||||
|
arm,primecell-periphid = <0x00341011>;
|
||||||
interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
ranges = <0x00000000 0x4a000000 0x100000>, /* segment 0 */
|
ranges = <0x00000000 0x4a000000 0x100000>, /* segment 0 */
|
||||||
<0x00100000 0x4a100000 0x100000>, /* segment 1 */
|
<0x00100000 0x4a100000 0x100000>, /* segment 1 */
|
||||||
<0x00200000 0x4a200000 0x100000>; /* segment 2 */
|
<0x00200000 0x4a200000 0x100000>; /* segment 2 */
|
||||||
|
dma-ranges;
|
||||||
|
|
||||||
segment@0 { /* 0x4a000000 */
|
segment@0 { /* 0x4a000000 */
|
||||||
compatible = "simple-pm-bus";
|
compatible = "simple-pm-bus";
|
||||||
@@ -557,6 +558,7 @@
|
|||||||
<0x0007e000 0x0017e000 0x001000>, /* ap 124 */
|
<0x0007e000 0x0017e000 0x001000>, /* ap 124 */
|
||||||
<0x00059000 0x00159000 0x001000>, /* ap 125 */
|
<0x00059000 0x00159000 0x001000>, /* ap 125 */
|
||||||
<0x0005a000 0x0015a000 0x001000>; /* ap 126 */
|
<0x0005a000 0x0015a000 0x001000>; /* ap 126 */
|
||||||
|
dma-ranges;
|
||||||
|
|
||||||
target-module@2000 { /* 0x4a102000, ap 27 3c.0 */
|
target-module@2000 { /* 0x4a102000, ap 27 3c.0 */
|
||||||
compatible = "ti,sysc";
|
compatible = "ti,sysc";
|
||||||
|
|||||||
@@ -101,6 +101,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
poweroff {
|
||||||
|
compatible = "regulator-poweroff";
|
||||||
|
cpu-supply = <&vgen2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
reg_module_3v3: regulator-module-3v3 {
|
reg_module_3v3: regulator-module-3v3 {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
@@ -220,10 +225,6 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
&clks {
|
|
||||||
fsl,pmic-stby-poweroff;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Apalis SPI1 */
|
/* Apalis SPI1 */
|
||||||
&ecspi1 {
|
&ecspi1 {
|
||||||
cs-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>;
|
cs-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>;
|
||||||
@@ -511,7 +512,6 @@
|
|||||||
|
|
||||||
pmic: pmic@8 {
|
pmic: pmic@8 {
|
||||||
compatible = "fsl,pfuze100";
|
compatible = "fsl,pfuze100";
|
||||||
fsl,pmic-stby-poweroff;
|
|
||||||
reg = <0x08>;
|
reg = <0x08>;
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
|
|||||||
@@ -40,6 +40,9 @@
|
|||||||
reg = <1>;
|
reg = <1>;
|
||||||
interrupt-parent = <&gpio4>;
|
interrupt-parent = <&gpio4>;
|
||||||
interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
micrel,led-mode = <1>;
|
||||||
|
clocks = <&clks IMX6UL_CLK_ENET_REF>;
|
||||||
|
clock-names = "rmii-ref";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
reg = <0x402c0000 0x4000>;
|
reg = <0x402c0000 0x4000>;
|
||||||
interrupts = <110>;
|
interrupts = <110>;
|
||||||
clocks = <&clks IMXRT1050_CLK_IPG_PDOF>,
|
clocks = <&clks IMXRT1050_CLK_IPG_PDOF>,
|
||||||
<&clks IMXRT1050_CLK_OSC>,
|
<&clks IMXRT1050_CLK_AHB_PODF>,
|
||||||
<&clks IMXRT1050_CLK_USDHC1>;
|
<&clks IMXRT1050_CLK_USDHC1>;
|
||||||
clock-names = "ipg", "ahb", "per";
|
clock-names = "ipg", "ahb", "per";
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
|
|||||||
@@ -309,7 +309,7 @@
|
|||||||
clock-names = "spi", "wrap";
|
clock-names = "spi", "wrap";
|
||||||
};
|
};
|
||||||
|
|
||||||
cir: cir@10013000 {
|
cir: ir-receiver@10013000 {
|
||||||
compatible = "mediatek,mt7623-cir";
|
compatible = "mediatek,mt7623-cir";
|
||||||
reg = <0 0x10013000 0 0x1000>;
|
reg = <0 0x10013000 0 0x1000>;
|
||||||
interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|||||||
@@ -280,8 +280,8 @@
|
|||||||
|
|
||||||
reg_dcdc5: dcdc5 {
|
reg_dcdc5: dcdc5 {
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
regulator-min-microvolt = <1425000>;
|
regulator-min-microvolt = <1450000>;
|
||||||
regulator-max-microvolt = <1575000>;
|
regulator-max-microvolt = <1550000>;
|
||||||
regulator-name = "vcc-dram";
|
regulator-name = "vcc-dram";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
reg = <0x54400000 0x00040000>;
|
reg = <0x54400000 0x00040000>;
|
||||||
clocks = <&tegra_car TEGRA114_CLK_DSIB>,
|
clocks = <&tegra_car TEGRA114_CLK_DSIB>,
|
||||||
<&tegra_car TEGRA114_CLK_DSIBLP>,
|
<&tegra_car TEGRA114_CLK_DSIBLP>,
|
||||||
<&tegra_car TEGRA114_CLK_PLL_D2_OUT0>;
|
<&tegra_car TEGRA114_CLK_PLL_D_OUT0>;
|
||||||
clock-names = "dsi", "lp", "parent";
|
clock-names = "dsi", "lp", "parent";
|
||||||
resets = <&tegra_car 82>;
|
resets = <&tegra_car 82>;
|
||||||
reset-names = "dsi";
|
reset-names = "dsi";
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include <asm/tls.h>
|
#include <asm/tls.h>
|
||||||
#include <asm/system_info.h>
|
#include <asm/system_info.h>
|
||||||
#include <asm/uaccess-asm.h>
|
#include <asm/uaccess-asm.h>
|
||||||
|
#include <asm/kasan_def.h>
|
||||||
|
|
||||||
#include "entry-header.S"
|
#include "entry-header.S"
|
||||||
#include <asm/probes.h>
|
#include <asm/probes.h>
|
||||||
@@ -787,6 +788,13 @@ ENTRY(__switch_to)
|
|||||||
@ entries covering the vmalloc region.
|
@ entries covering the vmalloc region.
|
||||||
@
|
@
|
||||||
ldr r2, [ip]
|
ldr r2, [ip]
|
||||||
|
#ifdef CONFIG_KASAN_VMALLOC
|
||||||
|
@ Also dummy read from the KASAN shadow memory for the new stack if we
|
||||||
|
@ are using KASAN
|
||||||
|
mov_l r2, KASAN_SHADOW_OFFSET
|
||||||
|
add r2, r2, ip, lsr #KASAN_SHADOW_SCALE_SHIFT
|
||||||
|
ldr r2, [r2]
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ When CONFIG_THREAD_INFO_IN_TASK=n, the update of SP itself is what
|
@ When CONFIG_THREAD_INFO_IN_TASK=n, the update of SP itself is what
|
||||||
|
|||||||
@@ -253,11 +253,15 @@ __create_page_tables:
|
|||||||
*/
|
*/
|
||||||
add r0, r4, #KERNEL_OFFSET >> (SECTION_SHIFT - PMD_ENTRY_ORDER)
|
add r0, r4, #KERNEL_OFFSET >> (SECTION_SHIFT - PMD_ENTRY_ORDER)
|
||||||
ldr r6, =(_end - 1)
|
ldr r6, =(_end - 1)
|
||||||
|
|
||||||
|
/* For XIP, kernel_sec_start/kernel_sec_end are currently in RO memory */
|
||||||
|
#ifndef CONFIG_XIP_KERNEL
|
||||||
adr_l r5, kernel_sec_start @ _pa(kernel_sec_start)
|
adr_l r5, kernel_sec_start @ _pa(kernel_sec_start)
|
||||||
#if defined CONFIG_CPU_ENDIAN_BE8 || defined CONFIG_CPU_ENDIAN_BE32
|
#if defined CONFIG_CPU_ENDIAN_BE8 || defined CONFIG_CPU_ENDIAN_BE32
|
||||||
str r8, [r5, #4] @ Save physical start of kernel (BE)
|
str r8, [r5, #4] @ Save physical start of kernel (BE)
|
||||||
#else
|
#else
|
||||||
str r8, [r5] @ Save physical start of kernel (LE)
|
str r8, [r5] @ Save physical start of kernel (LE)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
orr r3, r8, r7 @ Add the MMU flags
|
orr r3, r8, r7 @ Add the MMU flags
|
||||||
add r6, r4, r6, lsr #(SECTION_SHIFT - PMD_ENTRY_ORDER)
|
add r6, r4, r6, lsr #(SECTION_SHIFT - PMD_ENTRY_ORDER)
|
||||||
@@ -265,6 +269,7 @@ __create_page_tables:
|
|||||||
add r3, r3, #1 << SECTION_SHIFT
|
add r3, r3, #1 << SECTION_SHIFT
|
||||||
cmp r0, r6
|
cmp r0, r6
|
||||||
bls 1b
|
bls 1b
|
||||||
|
#ifndef CONFIG_XIP_KERNEL
|
||||||
eor r3, r3, r7 @ Remove the MMU flags
|
eor r3, r3, r7 @ Remove the MMU flags
|
||||||
adr_l r5, kernel_sec_end @ _pa(kernel_sec_end)
|
adr_l r5, kernel_sec_end @ _pa(kernel_sec_end)
|
||||||
#if defined CONFIG_CPU_ENDIAN_BE8 || defined CONFIG_CPU_ENDIAN_BE32
|
#if defined CONFIG_CPU_ENDIAN_BE8 || defined CONFIG_CPU_ENDIAN_BE32
|
||||||
@@ -272,8 +277,7 @@ __create_page_tables:
|
|||||||
#else
|
#else
|
||||||
str r3, [r5] @ Save physical end of kernel (LE)
|
str r3, [r5] @ Save physical end of kernel (LE)
|
||||||
#endif
|
#endif
|
||||||
|
#else
|
||||||
#ifdef CONFIG_XIP_KERNEL
|
|
||||||
/*
|
/*
|
||||||
* Map the kernel image separately as it is not located in RAM.
|
* Map the kernel image separately as it is not located in RAM.
|
||||||
*/
|
*/
|
||||||
@@ -408,7 +412,11 @@ ENTRY(secondary_startup)
|
|||||||
/*
|
/*
|
||||||
* Use the page tables supplied from __cpu_up.
|
* Use the page tables supplied from __cpu_up.
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_XIP_KERNEL
|
||||||
|
ldr r3, =(secondary_data + PLAT_PHYS_OFFSET - PAGE_OFFSET)
|
||||||
|
#else
|
||||||
adr_l r3, secondary_data
|
adr_l r3, secondary_data
|
||||||
|
#endif
|
||||||
mov_l r12, __secondary_switched
|
mov_l r12, __secondary_switched
|
||||||
ldrd r4, r5, [r3, #0] @ get secondary_data.pgdir
|
ldrd r4, r5, [r3, #0] @ get secondary_data.pgdir
|
||||||
ARM_BE8(eor r4, r4, r5) @ Swap r5 and r4 in BE:
|
ARM_BE8(eor r4, r4, r5) @ Swap r5 and r4 in BE:
|
||||||
|
|||||||
@@ -45,8 +45,15 @@ extern void secondary_startup(void);
|
|||||||
static int psci_boot_secondary(unsigned int cpu, struct task_struct *idle)
|
static int psci_boot_secondary(unsigned int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
if (psci_ops.cpu_on)
|
if (psci_ops.cpu_on)
|
||||||
|
#ifdef CONFIG_XIP_KERNEL
|
||||||
|
return psci_ops.cpu_on(cpu_logical_map(cpu),
|
||||||
|
((phys_addr_t)(&secondary_startup)
|
||||||
|
- XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
|
||||||
|
+ CONFIG_XIP_PHYS_ADDR));
|
||||||
|
#else
|
||||||
return psci_ops.cpu_on(cpu_logical_map(cpu),
|
return psci_ops.cpu_on(cpu_logical_map(cpu),
|
||||||
virt_to_idmap(&secondary_startup));
|
virt_to_idmap(&secondary_startup));
|
||||||
|
#endif
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -537,11 +537,12 @@ extern u32 at91_pm_suspend_in_sram_sz;
|
|||||||
|
|
||||||
static int at91_suspend_finish(unsigned long val)
|
static int at91_suspend_finish(unsigned long val)
|
||||||
{
|
{
|
||||||
unsigned char modified_gray_code[] = {
|
/* SYNOPSYS workaround to fix a bug in the calibration logic */
|
||||||
0x00, 0x01, 0x02, 0x03, 0x06, 0x07, 0x04, 0x05, 0x0c, 0x0d,
|
unsigned char modified_fix_code[] = {
|
||||||
0x0e, 0x0f, 0x0a, 0x0b, 0x08, 0x09, 0x18, 0x19, 0x1a, 0x1b,
|
0x00, 0x01, 0x01, 0x06, 0x07, 0x0c, 0x06, 0x07, 0x0b, 0x18,
|
||||||
0x1e, 0x1f, 0x1c, 0x1d, 0x14, 0x15, 0x16, 0x17, 0x12, 0x13,
|
0x0a, 0x0b, 0x0c, 0x0d, 0x0d, 0x0a, 0x13, 0x13, 0x12, 0x13,
|
||||||
0x10, 0x11,
|
0x14, 0x15, 0x15, 0x12, 0x18, 0x19, 0x19, 0x1e, 0x1f, 0x14,
|
||||||
|
0x1e, 0x1f,
|
||||||
};
|
};
|
||||||
unsigned int tmp, index;
|
unsigned int tmp, index;
|
||||||
int i;
|
int i;
|
||||||
@@ -552,25 +553,25 @@ static int at91_suspend_finish(unsigned long val)
|
|||||||
* restore the ZQ0SR0 with the value saved here. But the
|
* restore the ZQ0SR0 with the value saved here. But the
|
||||||
* calibration is buggy and restoring some values from ZQ0SR0
|
* calibration is buggy and restoring some values from ZQ0SR0
|
||||||
* is forbidden and risky thus we need to provide processed
|
* is forbidden and risky thus we need to provide processed
|
||||||
* values for these (modified gray code values).
|
* values for these.
|
||||||
*/
|
*/
|
||||||
tmp = readl(soc_pm.data.ramc_phy + DDR3PHY_ZQ0SR0);
|
tmp = readl(soc_pm.data.ramc_phy + DDR3PHY_ZQ0SR0);
|
||||||
|
|
||||||
/* Store pull-down output impedance select. */
|
/* Store pull-down output impedance select. */
|
||||||
index = (tmp >> DDR3PHY_ZQ0SR0_PDO_OFF) & 0x1f;
|
index = (tmp >> DDR3PHY_ZQ0SR0_PDO_OFF) & 0x1f;
|
||||||
soc_pm.bu->ddr_phy_calibration[0] = modified_gray_code[index];
|
soc_pm.bu->ddr_phy_calibration[0] = modified_fix_code[index] << DDR3PHY_ZQ0SR0_PDO_OFF;
|
||||||
|
|
||||||
/* Store pull-up output impedance select. */
|
/* Store pull-up output impedance select. */
|
||||||
index = (tmp >> DDR3PHY_ZQ0SR0_PUO_OFF) & 0x1f;
|
index = (tmp >> DDR3PHY_ZQ0SR0_PUO_OFF) & 0x1f;
|
||||||
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
|
soc_pm.bu->ddr_phy_calibration[0] |= modified_fix_code[index] << DDR3PHY_ZQ0SR0_PUO_OFF;
|
||||||
|
|
||||||
/* Store pull-down on-die termination impedance select. */
|
/* Store pull-down on-die termination impedance select. */
|
||||||
index = (tmp >> DDR3PHY_ZQ0SR0_PDODT_OFF) & 0x1f;
|
index = (tmp >> DDR3PHY_ZQ0SR0_PDODT_OFF) & 0x1f;
|
||||||
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
|
soc_pm.bu->ddr_phy_calibration[0] |= modified_fix_code[index] << DDR3PHY_ZQ0SR0_PDODT_OFF;
|
||||||
|
|
||||||
/* Store pull-up on-die termination impedance select. */
|
/* Store pull-up on-die termination impedance select. */
|
||||||
index = (tmp >> DDR3PHY_ZQ0SRO_PUODT_OFF) & 0x1f;
|
index = (tmp >> DDR3PHY_ZQ0SRO_PUODT_OFF) & 0x1f;
|
||||||
soc_pm.bu->ddr_phy_calibration[0] |= modified_gray_code[index];
|
soc_pm.bu->ddr_phy_calibration[0] |= modified_fix_code[index] << DDR3PHY_ZQ0SRO_PUODT_OFF;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The 1st 8 words of memory might get corrupted in the process
|
* The 1st 8 words of memory might get corrupted in the process
|
||||||
@@ -590,7 +591,21 @@ static int at91_suspend_finish(unsigned long val)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void at91_pm_switch_ba_to_vbat(void)
|
/**
|
||||||
|
* at91_pm_switch_ba_to_auto() - Configure Backup Unit Power Switch
|
||||||
|
* to automatic/hardware mode.
|
||||||
|
*
|
||||||
|
* The Backup Unit Power Switch can be managed either by software or hardware.
|
||||||
|
* Enabling hardware mode allows the automatic transition of power between
|
||||||
|
* VDDANA (or VDDIN33) and VDDBU (or VBAT, respectively), based on the
|
||||||
|
* availability of these power sources.
|
||||||
|
*
|
||||||
|
* If the Backup Unit Power Switch is already in automatic mode, no action is
|
||||||
|
* required. If it is in software-controlled mode, it is switched to automatic
|
||||||
|
* mode to enhance safety and eliminate the need for toggling between power
|
||||||
|
* sources.
|
||||||
|
*/
|
||||||
|
static void at91_pm_switch_ba_to_auto(void)
|
||||||
{
|
{
|
||||||
unsigned int offset = offsetof(struct at91_pm_sfrbu_regs, pswbu);
|
unsigned int offset = offsetof(struct at91_pm_sfrbu_regs, pswbu);
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
@@ -601,24 +616,19 @@ static void at91_pm_switch_ba_to_vbat(void)
|
|||||||
|
|
||||||
val = readl(soc_pm.data.sfrbu + offset);
|
val = readl(soc_pm.data.sfrbu + offset);
|
||||||
|
|
||||||
/* Already on VBAT. */
|
/* Already on auto/hardware. */
|
||||||
if (!(val & soc_pm.sfrbu_regs.pswbu.state))
|
if (!(val & soc_pm.sfrbu_regs.pswbu.ctrl))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
val &= ~soc_pm.sfrbu_regs.pswbu.softsw;
|
val &= ~soc_pm.sfrbu_regs.pswbu.ctrl;
|
||||||
val |= soc_pm.sfrbu_regs.pswbu.key | soc_pm.sfrbu_regs.pswbu.ctrl;
|
val |= soc_pm.sfrbu_regs.pswbu.key;
|
||||||
writel(val, soc_pm.data.sfrbu + offset);
|
writel(val, soc_pm.data.sfrbu + offset);
|
||||||
|
|
||||||
/* Wait for update. */
|
|
||||||
val = readl(soc_pm.data.sfrbu + offset);
|
|
||||||
while (val & soc_pm.sfrbu_regs.pswbu.state)
|
|
||||||
val = readl(soc_pm.data.sfrbu + offset);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void at91_pm_suspend(suspend_state_t state)
|
static void at91_pm_suspend(suspend_state_t state)
|
||||||
{
|
{
|
||||||
if (soc_pm.data.mode == AT91_PM_BACKUP) {
|
if (soc_pm.data.mode == AT91_PM_BACKUP) {
|
||||||
at91_pm_switch_ba_to_vbat();
|
at91_pm_switch_ba_to_auto();
|
||||||
|
|
||||||
cpu_suspend(0, at91_suspend_finish);
|
cpu_suspend(0, at91_suspend_finish);
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ menuconfig ARCH_OMAP1
|
|||||||
select ARCH_OMAP
|
select ARCH_OMAP
|
||||||
select CLKSRC_MMIO
|
select CLKSRC_MMIO
|
||||||
select FORCE_PCI if PCCARD
|
select FORCE_PCI if PCCARD
|
||||||
|
select GENERIC_IRQ_CHIP
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
help
|
help
|
||||||
Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)
|
Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ ENDPROC(shmobile_smp_sleep)
|
|||||||
.long shmobile_smp_arg - 1b
|
.long shmobile_smp_arg - 1b
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
|
.align 2
|
||||||
.globl shmobile_smp_mpidr
|
.globl shmobile_smp_mpidr
|
||||||
shmobile_smp_mpidr:
|
shmobile_smp_mpidr:
|
||||||
.space NR_CPUS * 4
|
.space NR_CPUS * 4
|
||||||
|
|||||||
@@ -27,6 +27,13 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_MMU
|
#ifdef CONFIG_MMU
|
||||||
|
|
||||||
|
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
|
||||||
|
{
|
||||||
|
unsigned long addr = (unsigned long)unsafe_src;
|
||||||
|
|
||||||
|
return addr >= TASK_SIZE && ULONG_MAX - addr >= size;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is useful to dump out the page tables associated with
|
* This is useful to dump out the page tables associated with
|
||||||
* 'addr' in mm 'mm'.
|
* 'addr' in mm 'mm'.
|
||||||
@@ -552,6 +559,7 @@ do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs)
|
|||||||
if (!inf->fn(addr, ifsr | FSR_LNX_PF, regs))
|
if (!inf->fn(addr, ifsr | FSR_LNX_PF, regs))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
pr_alert("8<--- cut here ---\n");
|
||||||
pr_alert("Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n",
|
pr_alert("Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n",
|
||||||
inf->name, ifsr, addr);
|
inf->name, ifsr, addr);
|
||||||
|
|
||||||
|
|||||||
@@ -84,8 +84,15 @@ static void identity_mapping_add(pgd_t *pgd, const char *text_start,
|
|||||||
unsigned long addr, end;
|
unsigned long addr, end;
|
||||||
unsigned long next;
|
unsigned long next;
|
||||||
|
|
||||||
|
#ifdef CONFIG_XIP_KERNEL
|
||||||
|
addr = (phys_addr_t)(text_start) - XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
|
||||||
|
+ CONFIG_XIP_PHYS_ADDR;
|
||||||
|
end = (phys_addr_t)(text_end) - XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR)
|
||||||
|
+ CONFIG_XIP_PHYS_ADDR;
|
||||||
|
#else
|
||||||
addr = virt_to_idmap(text_start);
|
addr = virt_to_idmap(text_start);
|
||||||
end = virt_to_idmap(text_end);
|
end = virt_to_idmap(text_end);
|
||||||
|
#endif
|
||||||
pr_info("Setting up static identity map for 0x%lx - 0x%lx\n", addr, end);
|
pr_info("Setting up static identity map for 0x%lx - 0x%lx\n", addr, end);
|
||||||
|
|
||||||
prot |= PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AF;
|
prot |= PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_AF;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
#include <linux/kasan.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
@@ -115,16 +116,40 @@ int ioremap_page(unsigned long virt, unsigned long phys,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ioremap_page);
|
EXPORT_SYMBOL(ioremap_page);
|
||||||
|
|
||||||
|
#ifdef CONFIG_KASAN
|
||||||
|
static unsigned long arm_kasan_mem_to_shadow(unsigned long addr)
|
||||||
|
{
|
||||||
|
return (unsigned long)kasan_mem_to_shadow((void *)addr);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static unsigned long arm_kasan_mem_to_shadow(unsigned long addr)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void memcpy_pgd(struct mm_struct *mm, unsigned long start,
|
||||||
|
unsigned long end)
|
||||||
|
{
|
||||||
|
end = ALIGN(end, PGDIR_SIZE);
|
||||||
|
memcpy(pgd_offset(mm, start), pgd_offset_k(start),
|
||||||
|
sizeof(pgd_t) * (pgd_index(end) - pgd_index(start)));
|
||||||
|
}
|
||||||
|
|
||||||
void __check_vmalloc_seq(struct mm_struct *mm)
|
void __check_vmalloc_seq(struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
int seq;
|
int seq;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
seq = atomic_read(&init_mm.context.vmalloc_seq);
|
seq = atomic_read_acquire(&init_mm.context.vmalloc_seq);
|
||||||
memcpy(pgd_offset(mm, VMALLOC_START),
|
memcpy_pgd(mm, VMALLOC_START, VMALLOC_END);
|
||||||
pgd_offset_k(VMALLOC_START),
|
if (IS_ENABLED(CONFIG_KASAN_VMALLOC)) {
|
||||||
sizeof(pgd_t) * (pgd_index(VMALLOC_END) -
|
unsigned long start =
|
||||||
pgd_index(VMALLOC_START)));
|
arm_kasan_mem_to_shadow(VMALLOC_START);
|
||||||
|
unsigned long end =
|
||||||
|
arm_kasan_mem_to_shadow(VMALLOC_END);
|
||||||
|
memcpy_pgd(mm, start, end);
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Use a store-release so that other CPUs that observe the
|
* Use a store-release so that other CPUs that observe the
|
||||||
* counter's new value are guaranteed to see the results of the
|
* counter's new value are guaranteed to see the results of the
|
||||||
|
|||||||
@@ -1401,18 +1401,6 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
|
|||||||
create_mapping(&map);
|
create_mapping(&map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Map the kernel if it is XIP.
|
|
||||||
* It is always first in the modulearea.
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_XIP_KERNEL
|
|
||||||
map.pfn = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & SECTION_MASK);
|
|
||||||
map.virtual = MODULES_VADDR;
|
|
||||||
map.length = ((unsigned long)_exiprom - map.virtual + ~SECTION_MASK) & SECTION_MASK;
|
|
||||||
map.type = MT_ROM;
|
|
||||||
create_mapping(&map);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Map the cache flushing regions.
|
* Map the cache flushing regions.
|
||||||
*/
|
*/
|
||||||
@@ -1602,12 +1590,27 @@ static void __init map_kernel(void)
|
|||||||
* This will only persist until we turn on proper memory management later on
|
* This will only persist until we turn on proper memory management later on
|
||||||
* and we remap the whole kernel with page granularity.
|
* and we remap the whole kernel with page granularity.
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_XIP_KERNEL
|
||||||
|
phys_addr_t kernel_nx_start = kernel_sec_start;
|
||||||
|
#else
|
||||||
phys_addr_t kernel_x_start = kernel_sec_start;
|
phys_addr_t kernel_x_start = kernel_sec_start;
|
||||||
phys_addr_t kernel_x_end = round_up(__pa(__init_end), SECTION_SIZE);
|
phys_addr_t kernel_x_end = round_up(__pa(__init_end), SECTION_SIZE);
|
||||||
phys_addr_t kernel_nx_start = kernel_x_end;
|
phys_addr_t kernel_nx_start = kernel_x_end;
|
||||||
|
#endif
|
||||||
phys_addr_t kernel_nx_end = kernel_sec_end;
|
phys_addr_t kernel_nx_end = kernel_sec_end;
|
||||||
struct map_desc map;
|
struct map_desc map;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Map the kernel if it is XIP.
|
||||||
|
* It is always first in the modulearea.
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_XIP_KERNEL
|
||||||
|
map.pfn = __phys_to_pfn(CONFIG_XIP_PHYS_ADDR & SECTION_MASK);
|
||||||
|
map.virtual = MODULES_VADDR;
|
||||||
|
map.length = ((unsigned long)_exiprom - map.virtual + ~SECTION_MASK) & SECTION_MASK;
|
||||||
|
map.type = MT_ROM;
|
||||||
|
create_mapping(&map);
|
||||||
|
#else
|
||||||
map.pfn = __phys_to_pfn(kernel_x_start);
|
map.pfn = __phys_to_pfn(kernel_x_start);
|
||||||
map.virtual = __phys_to_virt(kernel_x_start);
|
map.virtual = __phys_to_virt(kernel_x_start);
|
||||||
map.length = kernel_x_end - kernel_x_start;
|
map.length = kernel_x_end - kernel_x_start;
|
||||||
@@ -1617,7 +1620,7 @@ static void __init map_kernel(void)
|
|||||||
/* If the nx part is small it may end up covered by the tail of the RWX section */
|
/* If the nx part is small it may end up covered by the tail of the RWX section */
|
||||||
if (kernel_x_end == kernel_nx_end)
|
if (kernel_x_end == kernel_nx_end)
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
map.pfn = __phys_to_pfn(kernel_nx_start);
|
map.pfn = __phys_to_pfn(kernel_nx_start);
|
||||||
map.virtual = __phys_to_virt(kernel_nx_start);
|
map.virtual = __phys_to_virt(kernel_nx_start);
|
||||||
map.length = kernel_nx_end - kernel_nx_start;
|
map.length = kernel_nx_end - kernel_nx_start;
|
||||||
@@ -1762,6 +1765,11 @@ void __init paging_init(const struct machine_desc *mdesc)
|
|||||||
{
|
{
|
||||||
void *zero_page;
|
void *zero_page;
|
||||||
|
|
||||||
|
#ifdef CONFIG_XIP_KERNEL
|
||||||
|
/* Store the kernel RW RAM region start/end in these variables */
|
||||||
|
kernel_sec_start = CONFIG_PHYS_OFFSET & SECTION_MASK;
|
||||||
|
kernel_sec_end = round_up(__pa(_end), SECTION_SIZE);
|
||||||
|
#endif
|
||||||
pr_debug("physical kernel sections: 0x%08llx-0x%08llx\n",
|
pr_debug("physical kernel sections: 0x%08llx-0x%08llx\n",
|
||||||
kernel_sec_start, kernel_sec_end);
|
kernel_sec_start, kernel_sec_end);
|
||||||
|
|
||||||
|
|||||||
@@ -202,6 +202,9 @@
|
|||||||
interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
|
interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
|
||||||
vdd-supply = <®_dldo1>;
|
vdd-supply = <®_dldo1>;
|
||||||
vddio-supply = <®_dldo1>;
|
vddio-supply = <®_dldo1>;
|
||||||
|
mount-matrix = "0", "1", "0",
|
||||||
|
"-1", "0", "0",
|
||||||
|
"0", "0", "1";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -151,28 +151,12 @@
|
|||||||
vcc-pg-supply = <®_aldo1>;
|
vcc-pg-supply = <®_aldo1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&r_ir {
|
&r_i2c {
|
||||||
linux,rc-map-name = "rc-beelink-gs1";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_pio {
|
|
||||||
/*
|
|
||||||
* FIXME: We can't add that supply for now since it would
|
|
||||||
* create a circular dependency between pinctrl, the regulator
|
|
||||||
* and the RSB Bus.
|
|
||||||
*
|
|
||||||
* vcc-pl-supply = <®_aldo1>;
|
|
||||||
*/
|
|
||||||
vcc-pm-supply = <®_aldo1>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_rsb {
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
axp805: pmic@745 {
|
axp805: pmic@36 {
|
||||||
compatible = "x-powers,axp805", "x-powers,axp806";
|
compatible = "x-powers,axp805", "x-powers,axp806";
|
||||||
reg = <0x745>;
|
reg = <0x36>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
@@ -290,6 +274,22 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&r_ir {
|
||||||
|
linux,rc-map-name = "rc-beelink-gs1";
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&r_pio {
|
||||||
|
/*
|
||||||
|
* PL0 and PL1 are used for PMIC I2C
|
||||||
|
* don't enable the pl-supply else
|
||||||
|
* it will fail at boot
|
||||||
|
*
|
||||||
|
* vcc-pl-supply = <®_aldo1>;
|
||||||
|
*/
|
||||||
|
vcc-pm-supply = <®_aldo1>;
|
||||||
|
};
|
||||||
|
|
||||||
&spdif {
|
&spdif {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&spdif_tx_pin>;
|
pinctrl-0 = <&spdif_tx_pin>;
|
||||||
|
|||||||
@@ -175,16 +175,12 @@
|
|||||||
vcc-pg-supply = <®_vcc_wifi_io>;
|
vcc-pg-supply = <®_vcc_wifi_io>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&r_ir {
|
&r_i2c {
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_rsb {
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
axp805: pmic@745 {
|
axp805: pmic@36 {
|
||||||
compatible = "x-powers,axp805", "x-powers,axp806";
|
compatible = "x-powers,axp805", "x-powers,axp806";
|
||||||
reg = <0x745>;
|
reg = <0x36>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
@@ -295,6 +291,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&r_ir {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&rtc {
|
&rtc {
|
||||||
clocks = <&ext_osc32k>;
|
clocks = <&ext_osc32k>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -112,20 +112,12 @@
|
|||||||
vcc-pg-supply = <®_aldo1>;
|
vcc-pg-supply = <®_aldo1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&r_ir {
|
&r_i2c {
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_pio {
|
|
||||||
vcc-pm-supply = <®_bldo3>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&r_rsb {
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
axp805: pmic@745 {
|
axp805: pmic@36 {
|
||||||
compatible = "x-powers,axp805", "x-powers,axp806";
|
compatible = "x-powers,axp805", "x-powers,axp806";
|
||||||
reg = <0x745>;
|
reg = <0x36>;
|
||||||
interrupt-parent = <&r_intc>;
|
interrupt-parent = <&r_intc>;
|
||||||
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
@@ -240,6 +232,14 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&r_ir {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&r_pio {
|
||||||
|
vcc-pm-supply = <®_bldo3>;
|
||||||
|
};
|
||||||
|
|
||||||
&rtc {
|
&rtc {
|
||||||
clocks = <&ext_osc32k>;
|
clocks = <&ext_osc32k>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,10 +16,10 @@
|
|||||||
"Headphone Jack", "HPOUTR",
|
"Headphone Jack", "HPOUTR",
|
||||||
"IN2L", "Line In Jack",
|
"IN2L", "Line In Jack",
|
||||||
"IN2R", "Line In Jack",
|
"IN2R", "Line In Jack",
|
||||||
"Headphone Jack", "MICBIAS",
|
"Microphone Jack", "MICBIAS",
|
||||||
"IN1L", "Headphone Jack";
|
"IN1L", "Microphone Jack";
|
||||||
simple-audio-card,widgets =
|
simple-audio-card,widgets =
|
||||||
"Microphone", "Headphone Jack",
|
"Microphone", "Microphone Jack",
|
||||||
"Headphone", "Headphone Jack",
|
"Headphone", "Headphone Jack",
|
||||||
"Line", "Line In Jack";
|
"Line", "Line In Jack";
|
||||||
|
|
||||||
|
|||||||
@@ -141,7 +141,20 @@
|
|||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-name = "+V3.3_SD";
|
regulator-name = "+V3.3_SD";
|
||||||
startup-delay-us = <2000>;
|
startup-delay-us = <20000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
|
||||||
|
compatible = "regulator-gpio";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_usdhc2_vsel>;
|
||||||
|
gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
states = <1800000 0x1>,
|
||||||
|
<3300000 0x0>;
|
||||||
|
regulator-name = "PMIC_USDHC_VSELECT";
|
||||||
|
vin-supply = <®_nvcc_sd>;
|
||||||
};
|
};
|
||||||
|
|
||||||
reserved-memory {
|
reserved-memory {
|
||||||
@@ -262,7 +275,7 @@
|
|||||||
"SODIMM_19",
|
"SODIMM_19",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"PMIC_USDHC_VSELECT",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
@@ -788,6 +801,7 @@
|
|||||||
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_cd>;
|
pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_cd>;
|
||||||
pinctrl-3 = <&pinctrl_usdhc2_sleep>, <&pinctrl_usdhc2_cd_sleep>;
|
pinctrl-3 = <&pinctrl_usdhc2_sleep>, <&pinctrl_usdhc2_cd_sleep>;
|
||||||
vmmc-supply = <®_usdhc2_vmmc>;
|
vmmc-supply = <®_usdhc2_vmmc>;
|
||||||
|
vqmmc-supply = <®_usdhc2_vqmmc>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&wdog1 {
|
&wdog1 {
|
||||||
@@ -1210,13 +1224,17 @@
|
|||||||
<MX8MM_IOMUXC_NAND_CLE_GPIO3_IO5 0x6>; /* SODIMM 76 */
|
<MX8MM_IOMUXC_NAND_CLE_GPIO3_IO5 0x6>; /* SODIMM 76 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pinctrl_usdhc2_vsel: usdhc2vselgrp {
|
||||||
|
fsl,pins =
|
||||||
|
<MX8MM_IOMUXC_GPIO1_IO04_GPIO1_IO4 0x10>; /* PMIC_USDHC_VSELECT */
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: Due to ERR050080 we use discrete external on-module resistors pulling-up to the
|
* Note: Due to ERR050080 we use discrete external on-module resistors pulling-up to the
|
||||||
* on-module +V3.3_1.8_SD (LDO5) rail and explicitly disable the internal pull-ups here.
|
* on-module +V3.3_1.8_SD (LDO5) rail and explicitly disable the internal pull-ups here.
|
||||||
*/
|
*/
|
||||||
pinctrl_usdhc2: usdhc2grp {
|
pinctrl_usdhc2: usdhc2grp {
|
||||||
fsl,pins =
|
fsl,pins =
|
||||||
<MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x10>,
|
|
||||||
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x90>, /* SODIMM 78 */
|
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x90>, /* SODIMM 78 */
|
||||||
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x90>, /* SODIMM 74 */
|
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x90>, /* SODIMM 74 */
|
||||||
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x90>, /* SODIMM 80 */
|
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x90>, /* SODIMM 80 */
|
||||||
@@ -1227,7 +1245,6 @@
|
|||||||
|
|
||||||
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
|
pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
|
||||||
fsl,pins =
|
fsl,pins =
|
||||||
<MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x10>,
|
|
||||||
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x94>,
|
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x94>,
|
||||||
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x94>,
|
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x94>,
|
||||||
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x94>,
|
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x94>,
|
||||||
@@ -1238,7 +1255,6 @@
|
|||||||
|
|
||||||
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
|
pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
|
||||||
fsl,pins =
|
fsl,pins =
|
||||||
<MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x10>,
|
|
||||||
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x96>,
|
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x96>,
|
||||||
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x96>,
|
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x96>,
|
||||||
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x96>,
|
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x96>,
|
||||||
@@ -1250,7 +1266,6 @@
|
|||||||
/* Avoid backfeeding with removed card power */
|
/* Avoid backfeeding with removed card power */
|
||||||
pinctrl_usdhc2_sleep: usdhc2slpgrp {
|
pinctrl_usdhc2_sleep: usdhc2slpgrp {
|
||||||
fsl,pins =
|
fsl,pins =
|
||||||
<MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x0>,
|
|
||||||
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x0>,
|
<MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x0>,
|
||||||
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x0>,
|
<MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x0>,
|
||||||
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x0>,
|
<MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x0>,
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||||
/*
|
/*
|
||||||
* Copyright 2021-2022 TQ-Systems GmbH
|
* Copyright 2021-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
|
||||||
* Author: Alexander Stein <alexander.stein@tq-group.com>
|
* D-82229 Seefeld, Germany.
|
||||||
|
* Author: Alexander Stein
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "imx8mp.dtsi"
|
#include "imx8mp.dtsi"
|
||||||
@@ -23,15 +24,6 @@
|
|||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* e-MMC IO, needed for HS modes */
|
|
||||||
reg_vcc1v8: regulator-vcc1v8 {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "VCC1V8";
|
|
||||||
regulator-min-microvolt = <1800000>;
|
|
||||||
regulator-max-microvolt = <1800000>;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
&A53_0 {
|
&A53_0 {
|
||||||
@@ -194,7 +186,7 @@
|
|||||||
no-sd;
|
no-sd;
|
||||||
no-sdio;
|
no-sdio;
|
||||||
vmmc-supply = <®_vcc3v3>;
|
vmmc-supply = <®_vcc3v3>;
|
||||||
vqmmc-supply = <®_vcc1v8>;
|
vqmmc-supply = <&buck5_reg>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -133,7 +133,7 @@
|
|||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-name = "+V3.3_SD";
|
regulator-name = "+V3.3_SD";
|
||||||
startup-delay-us = <2000>;
|
startup-delay-us = <20000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
reserved-memory {
|
reserved-memory {
|
||||||
|
|||||||
@@ -43,6 +43,14 @@
|
|||||||
interrupts = <117 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <117 IRQ_TYPE_LEVEL_LOW>;
|
||||||
reg = <0x2c>;
|
reg = <0x2c>;
|
||||||
hid-descr-addr = <0x0020>;
|
hid-descr-addr = <0x0020>;
|
||||||
|
/*
|
||||||
|
* The trackpad needs a post-power-on delay of 100ms,
|
||||||
|
* but at time of writing, the power supply for it on
|
||||||
|
* this board is always on. The delay is therefore not
|
||||||
|
* added to avoid impacting the readiness of the
|
||||||
|
* trackpad.
|
||||||
|
*/
|
||||||
|
vdd-supply = <&mt6397_vgp6_reg>;
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -922,7 +922,7 @@
|
|||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
|
|
||||||
clock: mt6397clock {
|
clock: clocks {
|
||||||
compatible = "mediatek,mt6397-clk";
|
compatible = "mediatek,mt6397-clk";
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
};
|
};
|
||||||
@@ -934,11 +934,10 @@
|
|||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
regulator: mt6397regulator {
|
regulators {
|
||||||
compatible = "mediatek,mt6397-regulator";
|
compatible = "mediatek,mt6397-regulator";
|
||||||
|
|
||||||
mt6397_vpca15_reg: buck_vpca15 {
|
mt6397_vpca15_reg: buck_vpca15 {
|
||||||
regulator-compatible = "buck_vpca15";
|
|
||||||
regulator-name = "vpca15";
|
regulator-name = "vpca15";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -948,7 +947,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vpca7_reg: buck_vpca7 {
|
mt6397_vpca7_reg: buck_vpca7 {
|
||||||
regulator-compatible = "buck_vpca7";
|
|
||||||
regulator-name = "vpca7";
|
regulator-name = "vpca7";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -958,7 +956,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vsramca15_reg: buck_vsramca15 {
|
mt6397_vsramca15_reg: buck_vsramca15 {
|
||||||
regulator-compatible = "buck_vsramca15";
|
|
||||||
regulator-name = "vsramca15";
|
regulator-name = "vsramca15";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -967,7 +964,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vsramca7_reg: buck_vsramca7 {
|
mt6397_vsramca7_reg: buck_vsramca7 {
|
||||||
regulator-compatible = "buck_vsramca7";
|
|
||||||
regulator-name = "vsramca7";
|
regulator-name = "vsramca7";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -976,7 +972,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vcore_reg: buck_vcore {
|
mt6397_vcore_reg: buck_vcore {
|
||||||
regulator-compatible = "buck_vcore";
|
|
||||||
regulator-name = "vcore";
|
regulator-name = "vcore";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -985,7 +980,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgpu_reg: buck_vgpu {
|
mt6397_vgpu_reg: buck_vgpu {
|
||||||
regulator-compatible = "buck_vgpu";
|
|
||||||
regulator-name = "vgpu";
|
regulator-name = "vgpu";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -994,7 +988,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vdrm_reg: buck_vdrm {
|
mt6397_vdrm_reg: buck_vdrm {
|
||||||
regulator-compatible = "buck_vdrm";
|
|
||||||
regulator-name = "vdrm";
|
regulator-name = "vdrm";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <1400000>;
|
regulator-max-microvolt = <1400000>;
|
||||||
@@ -1003,7 +996,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vio18_reg: buck_vio18 {
|
mt6397_vio18_reg: buck_vio18 {
|
||||||
regulator-compatible = "buck_vio18";
|
|
||||||
regulator-name = "vio18";
|
regulator-name = "vio18";
|
||||||
regulator-min-microvolt = <1620000>;
|
regulator-min-microvolt = <1620000>;
|
||||||
regulator-max-microvolt = <1980000>;
|
regulator-max-microvolt = <1980000>;
|
||||||
@@ -1012,18 +1004,15 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vtcxo_reg: ldo_vtcxo {
|
mt6397_vtcxo_reg: ldo_vtcxo {
|
||||||
regulator-compatible = "ldo_vtcxo";
|
|
||||||
regulator-name = "vtcxo";
|
regulator-name = "vtcxo";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_va28_reg: ldo_va28 {
|
mt6397_va28_reg: ldo_va28 {
|
||||||
regulator-compatible = "ldo_va28";
|
|
||||||
regulator-name = "va28";
|
regulator-name = "va28";
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vcama_reg: ldo_vcama {
|
mt6397_vcama_reg: ldo_vcama {
|
||||||
regulator-compatible = "ldo_vcama";
|
|
||||||
regulator-name = "vcama";
|
regulator-name = "vcama";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
@@ -1031,18 +1020,15 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vio28_reg: ldo_vio28 {
|
mt6397_vio28_reg: ldo_vio28 {
|
||||||
regulator-compatible = "ldo_vio28";
|
|
||||||
regulator-name = "vio28";
|
regulator-name = "vio28";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vusb_reg: ldo_vusb {
|
mt6397_vusb_reg: ldo_vusb {
|
||||||
regulator-compatible = "ldo_vusb";
|
|
||||||
regulator-name = "vusb";
|
regulator-name = "vusb";
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vmc_reg: ldo_vmc {
|
mt6397_vmc_reg: ldo_vmc {
|
||||||
regulator-compatible = "ldo_vmc";
|
|
||||||
regulator-name = "vmc";
|
regulator-name = "vmc";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -1050,7 +1036,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vmch_reg: ldo_vmch {
|
mt6397_vmch_reg: ldo_vmch {
|
||||||
regulator-compatible = "ldo_vmch";
|
|
||||||
regulator-name = "vmch";
|
regulator-name = "vmch";
|
||||||
regulator-min-microvolt = <3000000>;
|
regulator-min-microvolt = <3000000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -1058,7 +1043,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vemc_3v3_reg: ldo_vemc3v3 {
|
mt6397_vemc_3v3_reg: ldo_vemc3v3 {
|
||||||
regulator-compatible = "ldo_vemc3v3";
|
|
||||||
regulator-name = "vemc_3v3";
|
regulator-name = "vemc_3v3";
|
||||||
regulator-min-microvolt = <3000000>;
|
regulator-min-microvolt = <3000000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -1066,7 +1050,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp1_reg: ldo_vgp1 {
|
mt6397_vgp1_reg: ldo_vgp1 {
|
||||||
regulator-compatible = "ldo_vgp1";
|
|
||||||
regulator-name = "vcamd";
|
regulator-name = "vcamd";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
@@ -1074,7 +1057,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp2_reg: ldo_vgp2 {
|
mt6397_vgp2_reg: ldo_vgp2 {
|
||||||
regulator-compatible = "ldo_vgp2";
|
|
||||||
regulator-name = "vcamio";
|
regulator-name = "vcamio";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -1082,7 +1064,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp3_reg: ldo_vgp3 {
|
mt6397_vgp3_reg: ldo_vgp3 {
|
||||||
regulator-compatible = "ldo_vgp3";
|
|
||||||
regulator-name = "vcamaf";
|
regulator-name = "vcamaf";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
@@ -1090,7 +1071,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp4_reg: ldo_vgp4 {
|
mt6397_vgp4_reg: ldo_vgp4 {
|
||||||
regulator-compatible = "ldo_vgp4";
|
|
||||||
regulator-name = "vgp4";
|
regulator-name = "vgp4";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -1098,7 +1078,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp5_reg: ldo_vgp5 {
|
mt6397_vgp5_reg: ldo_vgp5 {
|
||||||
regulator-compatible = "ldo_vgp5";
|
|
||||||
regulator-name = "vgp5";
|
regulator-name = "vgp5";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3000000>;
|
regulator-max-microvolt = <3000000>;
|
||||||
@@ -1106,7 +1085,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp6_reg: ldo_vgp6 {
|
mt6397_vgp6_reg: ldo_vgp6 {
|
||||||
regulator-compatible = "ldo_vgp6";
|
|
||||||
regulator-name = "vgp6";
|
regulator-name = "vgp6";
|
||||||
regulator-min-microvolt = <3300000>;
|
regulator-min-microvolt = <3300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -1115,7 +1093,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vibr_reg: ldo_vibr {
|
mt6397_vibr_reg: ldo_vibr {
|
||||||
regulator-compatible = "ldo_vibr";
|
|
||||||
regulator-name = "vibr";
|
regulator-name = "vibr";
|
||||||
regulator-min-microvolt = <1300000>;
|
regulator-min-microvolt = <1300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -1123,7 +1100,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
rtc: mt6397rtc {
|
rtc: rtc {
|
||||||
compatible = "mediatek,mt6397-rtc";
|
compatible = "mediatek,mt6397-rtc";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -307,11 +307,10 @@
|
|||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
|
|
||||||
mt6397regulator: mt6397regulator {
|
regulators {
|
||||||
compatible = "mediatek,mt6397-regulator";
|
compatible = "mediatek,mt6397-regulator";
|
||||||
|
|
||||||
mt6397_vpca15_reg: buck_vpca15 {
|
mt6397_vpca15_reg: buck_vpca15 {
|
||||||
regulator-compatible = "buck_vpca15";
|
|
||||||
regulator-name = "vpca15";
|
regulator-name = "vpca15";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -320,7 +319,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vpca7_reg: buck_vpca7 {
|
mt6397_vpca7_reg: buck_vpca7 {
|
||||||
regulator-compatible = "buck_vpca7";
|
|
||||||
regulator-name = "vpca7";
|
regulator-name = "vpca7";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -329,7 +327,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vsramca15_reg: buck_vsramca15 {
|
mt6397_vsramca15_reg: buck_vsramca15 {
|
||||||
regulator-compatible = "buck_vsramca15";
|
|
||||||
regulator-name = "vsramca15";
|
regulator-name = "vsramca15";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -338,7 +335,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vsramca7_reg: buck_vsramca7 {
|
mt6397_vsramca7_reg: buck_vsramca7 {
|
||||||
regulator-compatible = "buck_vsramca7";
|
|
||||||
regulator-name = "vsramca7";
|
regulator-name = "vsramca7";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -347,7 +343,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vcore_reg: buck_vcore {
|
mt6397_vcore_reg: buck_vcore {
|
||||||
regulator-compatible = "buck_vcore";
|
|
||||||
regulator-name = "vcore";
|
regulator-name = "vcore";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -356,7 +351,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgpu_reg: buck_vgpu {
|
mt6397_vgpu_reg: buck_vgpu {
|
||||||
regulator-compatible = "buck_vgpu";
|
|
||||||
regulator-name = "vgpu";
|
regulator-name = "vgpu";
|
||||||
regulator-min-microvolt = < 700000>;
|
regulator-min-microvolt = < 700000>;
|
||||||
regulator-max-microvolt = <1350000>;
|
regulator-max-microvolt = <1350000>;
|
||||||
@@ -365,7 +359,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vdrm_reg: buck_vdrm {
|
mt6397_vdrm_reg: buck_vdrm {
|
||||||
regulator-compatible = "buck_vdrm";
|
|
||||||
regulator-name = "vdrm";
|
regulator-name = "vdrm";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <1400000>;
|
regulator-max-microvolt = <1400000>;
|
||||||
@@ -374,7 +367,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vio18_reg: buck_vio18 {
|
mt6397_vio18_reg: buck_vio18 {
|
||||||
regulator-compatible = "buck_vio18";
|
|
||||||
regulator-name = "vio18";
|
regulator-name = "vio18";
|
||||||
regulator-min-microvolt = <1620000>;
|
regulator-min-microvolt = <1620000>;
|
||||||
regulator-max-microvolt = <1980000>;
|
regulator-max-microvolt = <1980000>;
|
||||||
@@ -383,19 +375,16 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vtcxo_reg: ldo_vtcxo {
|
mt6397_vtcxo_reg: ldo_vtcxo {
|
||||||
regulator-compatible = "ldo_vtcxo";
|
|
||||||
regulator-name = "vtcxo";
|
regulator-name = "vtcxo";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_va28_reg: ldo_va28 {
|
mt6397_va28_reg: ldo_va28 {
|
||||||
regulator-compatible = "ldo_va28";
|
|
||||||
regulator-name = "va28";
|
regulator-name = "va28";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vcama_reg: ldo_vcama {
|
mt6397_vcama_reg: ldo_vcama {
|
||||||
regulator-compatible = "ldo_vcama";
|
|
||||||
regulator-name = "vcama";
|
regulator-name = "vcama";
|
||||||
regulator-min-microvolt = <1500000>;
|
regulator-min-microvolt = <1500000>;
|
||||||
regulator-max-microvolt = <2800000>;
|
regulator-max-microvolt = <2800000>;
|
||||||
@@ -403,18 +392,15 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vio28_reg: ldo_vio28 {
|
mt6397_vio28_reg: ldo_vio28 {
|
||||||
regulator-compatible = "ldo_vio28";
|
|
||||||
regulator-name = "vio28";
|
regulator-name = "vio28";
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vusb_reg: ldo_vusb {
|
mt6397_vusb_reg: ldo_vusb {
|
||||||
regulator-compatible = "ldo_vusb";
|
|
||||||
regulator-name = "vusb";
|
regulator-name = "vusb";
|
||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vmc_reg: ldo_vmc {
|
mt6397_vmc_reg: ldo_vmc {
|
||||||
regulator-compatible = "ldo_vmc";
|
|
||||||
regulator-name = "vmc";
|
regulator-name = "vmc";
|
||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -422,7 +408,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vmch_reg: ldo_vmch {
|
mt6397_vmch_reg: ldo_vmch {
|
||||||
regulator-compatible = "ldo_vmch";
|
|
||||||
regulator-name = "vmch";
|
regulator-name = "vmch";
|
||||||
regulator-min-microvolt = <3000000>;
|
regulator-min-microvolt = <3000000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -430,7 +415,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vemc_3v3_reg: ldo_vemc3v3 {
|
mt6397_vemc_3v3_reg: ldo_vemc3v3 {
|
||||||
regulator-compatible = "ldo_vemc3v3";
|
|
||||||
regulator-name = "vemc_3v3";
|
regulator-name = "vemc_3v3";
|
||||||
regulator-min-microvolt = <3000000>;
|
regulator-min-microvolt = <3000000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -438,7 +422,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp1_reg: ldo_vgp1 {
|
mt6397_vgp1_reg: ldo_vgp1 {
|
||||||
regulator-compatible = "ldo_vgp1";
|
|
||||||
regulator-name = "vcamd";
|
regulator-name = "vcamd";
|
||||||
regulator-min-microvolt = <1220000>;
|
regulator-min-microvolt = <1220000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -446,7 +429,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp2_reg: ldo_vgp2 {
|
mt6397_vgp2_reg: ldo_vgp2 {
|
||||||
regulator-compatible = "ldo_vgp2";
|
|
||||||
regulator-name = "vcamio";
|
regulator-name = "vcamio";
|
||||||
regulator-min-microvolt = <1000000>;
|
regulator-min-microvolt = <1000000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -454,7 +436,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp3_reg: ldo_vgp3 {
|
mt6397_vgp3_reg: ldo_vgp3 {
|
||||||
regulator-compatible = "ldo_vgp3";
|
|
||||||
regulator-name = "vcamaf";
|
regulator-name = "vcamaf";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -462,7 +443,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp4_reg: ldo_vgp4 {
|
mt6397_vgp4_reg: ldo_vgp4 {
|
||||||
regulator-compatible = "ldo_vgp4";
|
|
||||||
regulator-name = "vgp4";
|
regulator-name = "vgp4";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -470,7 +450,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp5_reg: ldo_vgp5 {
|
mt6397_vgp5_reg: ldo_vgp5 {
|
||||||
regulator-compatible = "ldo_vgp5";
|
|
||||||
regulator-name = "vgp5";
|
regulator-name = "vgp5";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3000000>;
|
regulator-max-microvolt = <3000000>;
|
||||||
@@ -478,7 +457,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vgp6_reg: ldo_vgp6 {
|
mt6397_vgp6_reg: ldo_vgp6 {
|
||||||
regulator-compatible = "ldo_vgp6";
|
|
||||||
regulator-name = "vgp6";
|
regulator-name = "vgp6";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
@@ -486,7 +464,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6397_vibr_reg: ldo_vibr {
|
mt6397_vibr_reg: ldo_vibr {
|
||||||
regulator-compatible = "ldo_vibr";
|
|
||||||
regulator-name = "vibr";
|
regulator-name = "vibr";
|
||||||
regulator-min-microvolt = <1300000>;
|
regulator-min-microvolt = <1300000>;
|
||||||
regulator-max-microvolt = <3300000>;
|
regulator-max-microvolt = <3300000>;
|
||||||
|
|||||||
@@ -1247,8 +1247,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pwm0: pwm@1401e000 {
|
pwm0: pwm@1401e000 {
|
||||||
compatible = "mediatek,mt8173-disp-pwm",
|
compatible = "mediatek,mt8173-disp-pwm";
|
||||||
"mediatek,mt6595-disp-pwm";
|
|
||||||
reg = <0 0x1401e000 0 0x1000>;
|
reg = <0 0x1401e000 0 0x1000>;
|
||||||
#pwm-cells = <2>;
|
#pwm-cells = <2>;
|
||||||
clocks = <&mmsys CLK_MM_DISP_PWM026M>,
|
clocks = <&mmsys CLK_MM_DISP_PWM026M>,
|
||||||
@@ -1258,8 +1257,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pwm1: pwm@1401f000 {
|
pwm1: pwm@1401f000 {
|
||||||
compatible = "mediatek,mt8173-disp-pwm",
|
compatible = "mediatek,mt8173-disp-pwm";
|
||||||
"mediatek,mt6595-disp-pwm";
|
|
||||||
reg = <0 0x1401f000 0 0x1000>;
|
reg = <0 0x1401f000 0 0x1000>;
|
||||||
#pwm-cells = <2>;
|
#pwm-cells = <2>;
|
||||||
clocks = <&mmsys CLK_MM_DISP_PWM126M>,
|
clocks = <&mmsys CLK_MM_DISP_PWM126M>,
|
||||||
|
|||||||
@@ -29,3 +29,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
i2c-scl-internal-delay-ns = <4100>;
|
||||||
|
};
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
|
i2c-scl-internal-delay-ns = <25000>;
|
||||||
|
|
||||||
trackpad@2c {
|
trackpad@2c {
|
||||||
compatible = "hid-over-i2c";
|
compatible = "hid-over-i2c";
|
||||||
reg = <0x2c>;
|
reg = <0x2c>;
|
||||||
|
|||||||
@@ -26,7 +26,14 @@
|
|||||||
hid-descr-addr = <0x0001>;
|
hid-descr-addr = <0x0001>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&mt6358codec {
|
||||||
|
mediatek,dmic-mode = <1>; /* one-wire */
|
||||||
|
};
|
||||||
|
|
||||||
&qca_wifi {
|
&qca_wifi {
|
||||||
qcom,ath10k-calibration-variant = "GO_DAMU";
|
qcom,ath10k-calibration-variant = "GO_DAMU";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
i2c-scl-internal-delay-ns = <20000>;
|
||||||
|
};
|
||||||
|
|||||||
@@ -25,3 +25,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
i2c-scl-internal-delay-ns = <21500>;
|
||||||
|
};
|
||||||
|
|||||||
@@ -11,3 +11,18 @@
|
|||||||
model = "Google kenzo sku17 board";
|
model = "Google kenzo sku17 board";
|
||||||
compatible = "google,juniper-sku17", "google,juniper", "mediatek,mt8183";
|
compatible = "google,juniper-sku17", "google,juniper", "mediatek,mt8183";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c0 {
|
||||||
|
touchscreen@40 {
|
||||||
|
compatible = "hid-over-i2c";
|
||||||
|
reg = <0x40>;
|
||||||
|
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&touchscreen_pins>;
|
||||||
|
|
||||||
|
interrupts-extended = <&pio 155 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
|
post-power-on-delay-ms = <70>;
|
||||||
|
hid-descr-addr = <0x0001>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|||||||
@@ -6,6 +6,21 @@
|
|||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
#include "mt8183-kukui-jacuzzi.dtsi"
|
#include "mt8183-kukui-jacuzzi.dtsi"
|
||||||
|
|
||||||
|
&i2c0 {
|
||||||
|
touchscreen@40 {
|
||||||
|
compatible = "hid-over-i2c";
|
||||||
|
reg = <0x40>;
|
||||||
|
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&touchscreen_pins>;
|
||||||
|
|
||||||
|
interrupts-extended = <&pio 155 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
|
post-power-on-delay-ms = <70>;
|
||||||
|
hid-descr-addr = <0x0001>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
trackpad@2c {
|
trackpad@2c {
|
||||||
compatible = "hid-over-i2c";
|
compatible = "hid-over-i2c";
|
||||||
|
|||||||
@@ -8,47 +8,37 @@
|
|||||||
#include <arm/cros-ec-keyboard.dtsi>
|
#include <arm/cros-ec-keyboard.dtsi>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
panel: panel {
|
pp1000_mipibrdg: pp1000-mipibrdg {
|
||||||
compatible = "auo,b116xw03";
|
|
||||||
power-supply = <&pp3300_panel>;
|
|
||||||
backlight = <&backlight_lcd0>;
|
|
||||||
|
|
||||||
port {
|
|
||||||
panel_in: endpoint {
|
|
||||||
remote-endpoint = <&anx7625_out>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pp1200_mipibrdg: pp1200-mipibrdg {
|
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "pp1200_mipibrdg";
|
regulator-name = "pp1000_mipibrdg";
|
||||||
|
regulator-min-microvolt = <1000000>;
|
||||||
|
regulator-max-microvolt = <1000000>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pp1200_mipibrdg_en>;
|
pinctrl-0 = <&pp1000_mipibrdg_en>;
|
||||||
|
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
|
||||||
gpio = <&pio 54 GPIO_ACTIVE_HIGH>;
|
gpio = <&pio 54 GPIO_ACTIVE_HIGH>;
|
||||||
|
vin-supply = <&pp1800_alw>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pp1800_mipibrdg: pp1800-mipibrdg {
|
pp1800_mipibrdg: pp1800-mipibrdg {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "pp1800_mipibrdg";
|
regulator-name = "pp1800_mipibrdg";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pp1800_lcd_en>;
|
pinctrl-0 = <&pp1800_mipibrdg_en>;
|
||||||
|
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
|
||||||
gpio = <&pio 36 GPIO_ACTIVE_HIGH>;
|
gpio = <&pio 36 GPIO_ACTIVE_HIGH>;
|
||||||
|
vin-supply = <&pp1800_alw>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pp3300_panel: pp3300-panel {
|
pp3300_panel: pp3300-panel {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "pp3300_panel";
|
regulator-name = "pp3300_panel";
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pp3300_panel_pins>;
|
pinctrl-0 = <&pp3300_panel_pins>;
|
||||||
|
|
||||||
@@ -56,18 +46,20 @@
|
|||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
|
||||||
gpio = <&pio 35 GPIO_ACTIVE_HIGH>;
|
gpio = <&pio 35 GPIO_ACTIVE_HIGH>;
|
||||||
|
vin-supply = <&pp3300_alw>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vddio_mipibrdg: vddio-mipibrdg {
|
pp3300_mipibrdg: pp3300-mipibrdg {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vddio_mipibrdg";
|
regulator-name = "pp3300_mipibrdg";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&vddio_mipibrdg_en>;
|
pinctrl-0 = <&pp3300_mipibrdg_en>;
|
||||||
|
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
|
|
||||||
gpio = <&pio 37 GPIO_ACTIVE_HIGH>;
|
gpio = <&pio 37 GPIO_ACTIVE_HIGH>;
|
||||||
|
vin-supply = <&pp3300_alw>;
|
||||||
};
|
};
|
||||||
|
|
||||||
volume_buttons: volume-buttons {
|
volume_buttons: volume-buttons {
|
||||||
@@ -164,9 +156,9 @@
|
|||||||
panel_flags = <1>;
|
panel_flags = <1>;
|
||||||
enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
|
enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
|
||||||
reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
|
reset-gpios = <&pio 73 GPIO_ACTIVE_HIGH>;
|
||||||
vdd10-supply = <&pp1200_mipibrdg>;
|
vdd10-supply = <&pp1000_mipibrdg>;
|
||||||
vdd18-supply = <&pp1800_mipibrdg>;
|
vdd18-supply = <&pp1800_mipibrdg>;
|
||||||
vdd33-supply = <&vddio_mipibrdg>;
|
vdd33-supply = <&pp3300_mipibrdg>;
|
||||||
|
|
||||||
ports {
|
ports {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@@ -188,6 +180,20 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
aux-bus {
|
||||||
|
panel: panel {
|
||||||
|
compatible = "edp-panel";
|
||||||
|
power-supply = <&pp3300_panel>;
|
||||||
|
backlight = <&backlight_lcd0>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
panel_in: endpoint {
|
||||||
|
remote-endpoint = <&anx7625_out>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -395,14 +401,14 @@
|
|||||||
"",
|
"",
|
||||||
"";
|
"";
|
||||||
|
|
||||||
pp1200_mipibrdg_en: pp1200-mipibrdg-en {
|
pp1000_mipibrdg_en: pp1000-mipibrdg-en {
|
||||||
pins1 {
|
pins1 {
|
||||||
pinmux = <PINMUX_GPIO54__FUNC_GPIO54>;
|
pinmux = <PINMUX_GPIO54__FUNC_GPIO54>;
|
||||||
output-low;
|
output-low;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
pp1800_lcd_en: pp1800-lcd-en {
|
pp1800_mipibrdg_en: pp1800-mipibrdg-en {
|
||||||
pins1 {
|
pins1 {
|
||||||
pinmux = <PINMUX_GPIO36__FUNC_GPIO36>;
|
pinmux = <PINMUX_GPIO36__FUNC_GPIO36>;
|
||||||
output-low;
|
output-low;
|
||||||
@@ -464,7 +470,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
vddio_mipibrdg_en: vddio-mipibrdg-en {
|
pp3300_mipibrdg_en: pp3300-mipibrdg-en {
|
||||||
pins1 {
|
pins1 {
|
||||||
pinmux = <PINMUX_GPIO37__FUNC_GPIO37>;
|
pinmux = <PINMUX_GPIO37__FUNC_GPIO37>;
|
||||||
output-low;
|
output-low;
|
||||||
|
|||||||
@@ -105,9 +105,9 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
vbus-supply = <&mt6358_vcn18_reg>;
|
vbus-supply = <&mt6358_vcn18_reg>;
|
||||||
|
|
||||||
eeprom@54 {
|
eeprom@50 {
|
||||||
compatible = "atmel,24c32";
|
compatible = "atmel,24c32";
|
||||||
reg = <0x54>;
|
reg = <0x50>;
|
||||||
pagesize = <32>;
|
pagesize = <32>;
|
||||||
vcc-supply = <&mt6358_vcn18_reg>;
|
vcc-supply = <&mt6358_vcn18_reg>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -80,9 +80,9 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
vbus-supply = <&mt6358_vcn18_reg>;
|
vbus-supply = <&mt6358_vcn18_reg>;
|
||||||
|
|
||||||
eeprom@54 {
|
eeprom@50 {
|
||||||
compatible = "atmel,24c64";
|
compatible = "atmel,24c64";
|
||||||
reg = <0x54>;
|
reg = <0x50>;
|
||||||
pagesize = <32>;
|
pagesize = <32>;
|
||||||
vcc-supply = <&mt6358_vcn18_reg>;
|
vcc-supply = <&mt6358_vcn18_reg>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -89,9 +89,9 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
vbus-supply = <&mt6358_vcn18_reg>;
|
vbus-supply = <&mt6358_vcn18_reg>;
|
||||||
|
|
||||||
eeprom@54 {
|
eeprom@50 {
|
||||||
compatible = "atmel,24c32";
|
compatible = "atmel,24c32";
|
||||||
reg = <0x54>;
|
reg = <0x50>;
|
||||||
pagesize = <32>;
|
pagesize = <32>;
|
||||||
vcc-supply = <&mt6358_vcn18_reg>;
|
vcc-supply = <&mt6358_vcn18_reg>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1753,6 +1753,7 @@
|
|||||||
resets = <&mmsys MT8183_MMSYS_SW0_RST_B_DISP_DSI0>;
|
resets = <&mmsys MT8183_MMSYS_SW0_RST_B_DISP_DSI0>;
|
||||||
phys = <&mipi_tx0>;
|
phys = <&mipi_tx0>;
|
||||||
phy-names = "dphy";
|
phy-names = "dphy";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
mutex: mutex@14016000 {
|
mutex: mutex@14016000 {
|
||||||
|
|||||||
@@ -901,7 +901,6 @@
|
|||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
mt6315_6_vbuck1: vbuck1 {
|
mt6315_6_vbuck1: vbuck1 {
|
||||||
regulator-compatible = "vbuck1";
|
|
||||||
regulator-name = "Vbcpu";
|
regulator-name = "Vbcpu";
|
||||||
regulator-min-microvolt = <400000>;
|
regulator-min-microvolt = <400000>;
|
||||||
regulator-max-microvolt = <1193750>;
|
regulator-max-microvolt = <1193750>;
|
||||||
@@ -911,7 +910,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6315_6_vbuck3: vbuck3 {
|
mt6315_6_vbuck3: vbuck3 {
|
||||||
regulator-compatible = "vbuck3";
|
|
||||||
regulator-name = "Vlcpu";
|
regulator-name = "Vlcpu";
|
||||||
regulator-min-microvolt = <400000>;
|
regulator-min-microvolt = <400000>;
|
||||||
regulator-max-microvolt = <1193750>;
|
regulator-max-microvolt = <1193750>;
|
||||||
@@ -928,7 +926,6 @@
|
|||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
mt6315_7_vbuck1: vbuck1 {
|
mt6315_7_vbuck1: vbuck1 {
|
||||||
regulator-compatible = "vbuck1";
|
|
||||||
regulator-name = "Vgpu";
|
regulator-name = "Vgpu";
|
||||||
regulator-min-microvolt = <400000>;
|
regulator-min-microvolt = <400000>;
|
||||||
regulator-max-microvolt = <800000>;
|
regulator-max-microvolt = <800000>;
|
||||||
|
|||||||
@@ -843,7 +843,6 @@
|
|||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
mt6315_6_vbuck1: vbuck1 {
|
mt6315_6_vbuck1: vbuck1 {
|
||||||
regulator-compatible = "vbuck1";
|
|
||||||
regulator-name = "Vbcpu";
|
regulator-name = "Vbcpu";
|
||||||
regulator-min-microvolt = <400000>;
|
regulator-min-microvolt = <400000>;
|
||||||
regulator-max-microvolt = <1193750>;
|
regulator-max-microvolt = <1193750>;
|
||||||
@@ -861,7 +860,6 @@
|
|||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
mt6315_7_vbuck1: vbuck1 {
|
mt6315_7_vbuck1: vbuck1 {
|
||||||
regulator-compatible = "vbuck1";
|
|
||||||
regulator-name = "Vgpu";
|
regulator-name = "Vgpu";
|
||||||
regulator-min-microvolt = <400000>;
|
regulator-min-microvolt = <400000>;
|
||||||
regulator-max-microvolt = <1193750>;
|
regulator-max-microvolt = <1193750>;
|
||||||
@@ -906,6 +904,7 @@
|
|||||||
|
|
||||||
vusb33-supply = <&mt6359_vusb_ldo_reg>;
|
vusb33-supply = <&mt6359_vusb_ldo_reg>;
|
||||||
vbus-supply = <&usb_vbus>;
|
vbus-supply = <&usb_vbus>;
|
||||||
|
mediatek,u3p-dis-msk = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&xhci2 {
|
&xhci2 {
|
||||||
@@ -922,7 +921,6 @@
|
|||||||
usb2-lpm-disable;
|
usb2-lpm-disable;
|
||||||
vusb33-supply = <&mt6359_vusb_ldo_reg>;
|
vusb33-supply = <&mt6359_vusb_ldo_reg>;
|
||||||
vbus-supply = <&usb_vbus>;
|
vbus-supply = <&usb_vbus>;
|
||||||
mediatek,u3p-dis-msk = <1>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#include <arm/cros-ec-keyboard.dtsi>
|
#include <arm/cros-ec-keyboard.dtsi>
|
||||||
|
|||||||
@@ -120,7 +120,6 @@
|
|||||||
richtek,vinovp-microvolt = <14500000>;
|
richtek,vinovp-microvolt = <14500000>;
|
||||||
|
|
||||||
otg_vbus_regulator: usb-otg-vbus-regulator {
|
otg_vbus_regulator: usb-otg-vbus-regulator {
|
||||||
regulator-compatible = "usb-otg-vbus";
|
|
||||||
regulator-name = "usb-otg-vbus";
|
regulator-name = "usb-otg-vbus";
|
||||||
regulator-min-microvolt = <4425000>;
|
regulator-min-microvolt = <4425000>;
|
||||||
regulator-max-microvolt = <5825000>;
|
regulator-max-microvolt = <5825000>;
|
||||||
@@ -132,7 +131,6 @@
|
|||||||
LDO_VIN3-supply = <&mt6360_buck2>;
|
LDO_VIN3-supply = <&mt6360_buck2>;
|
||||||
|
|
||||||
mt6360_buck1: buck1 {
|
mt6360_buck1: buck1 {
|
||||||
regulator-compatible = "BUCK1";
|
|
||||||
regulator-name = "mt6360,buck1";
|
regulator-name = "mt6360,buck1";
|
||||||
regulator-min-microvolt = <300000>;
|
regulator-min-microvolt = <300000>;
|
||||||
regulator-max-microvolt = <1300000>;
|
regulator-max-microvolt = <1300000>;
|
||||||
@@ -143,7 +141,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6360_buck2: buck2 {
|
mt6360_buck2: buck2 {
|
||||||
regulator-compatible = "BUCK2";
|
|
||||||
regulator-name = "mt6360,buck2";
|
regulator-name = "mt6360,buck2";
|
||||||
regulator-min-microvolt = <300000>;
|
regulator-min-microvolt = <300000>;
|
||||||
regulator-max-microvolt = <1300000>;
|
regulator-max-microvolt = <1300000>;
|
||||||
@@ -154,7 +151,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6360_ldo1: ldo1 {
|
mt6360_ldo1: ldo1 {
|
||||||
regulator-compatible = "LDO1";
|
|
||||||
regulator-name = "mt6360,ldo1";
|
regulator-name = "mt6360,ldo1";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3600000>;
|
regulator-max-microvolt = <3600000>;
|
||||||
@@ -163,7 +159,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6360_ldo2: ldo2 {
|
mt6360_ldo2: ldo2 {
|
||||||
regulator-compatible = "LDO2";
|
|
||||||
regulator-name = "mt6360,ldo2";
|
regulator-name = "mt6360,ldo2";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3600000>;
|
regulator-max-microvolt = <3600000>;
|
||||||
@@ -172,7 +167,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6360_ldo3: ldo3 {
|
mt6360_ldo3: ldo3 {
|
||||||
regulator-compatible = "LDO3";
|
|
||||||
regulator-name = "mt6360,ldo3";
|
regulator-name = "mt6360,ldo3";
|
||||||
regulator-min-microvolt = <1200000>;
|
regulator-min-microvolt = <1200000>;
|
||||||
regulator-max-microvolt = <3600000>;
|
regulator-max-microvolt = <3600000>;
|
||||||
@@ -181,7 +175,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6360_ldo5: ldo5 {
|
mt6360_ldo5: ldo5 {
|
||||||
regulator-compatible = "LDO5";
|
|
||||||
regulator-name = "mt6360,ldo5";
|
regulator-name = "mt6360,ldo5";
|
||||||
regulator-min-microvolt = <2700000>;
|
regulator-min-microvolt = <2700000>;
|
||||||
regulator-max-microvolt = <3600000>;
|
regulator-max-microvolt = <3600000>;
|
||||||
@@ -190,7 +183,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6360_ldo6: ldo6 {
|
mt6360_ldo6: ldo6 {
|
||||||
regulator-compatible = "LDO6";
|
|
||||||
regulator-name = "mt6360,ldo6";
|
regulator-name = "mt6360,ldo6";
|
||||||
regulator-min-microvolt = <500000>;
|
regulator-min-microvolt = <500000>;
|
||||||
regulator-max-microvolt = <2100000>;
|
regulator-max-microvolt = <2100000>;
|
||||||
@@ -199,7 +191,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
mt6360_ldo7: ldo7 {
|
mt6360_ldo7: ldo7 {
|
||||||
regulator-compatible = "LDO7";
|
|
||||||
regulator-name = "mt6360,ldo7";
|
regulator-name = "mt6360,ldo7";
|
||||||
regulator-min-microvolt = <500000>;
|
regulator-min-microvolt = <500000>;
|
||||||
regulator-max-microvolt = <2100000>;
|
regulator-max-microvolt = <2100000>;
|
||||||
|
|||||||
@@ -332,7 +332,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
infracfg_ao: syscon@10001000 {
|
infracfg_ao: syscon@10001000 {
|
||||||
compatible = "mediatek,mt8195-infracfg_ao", "syscon", "simple-mfd";
|
compatible = "mediatek,mt8195-infracfg_ao", "syscon";
|
||||||
reg = <0 0x10001000 0 0x1000>;
|
reg = <0 0x10001000 0 0x1000>;
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
@@ -2000,7 +2000,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ovl0: ovl@1c000000 {
|
ovl0: ovl@1c000000 {
|
||||||
compatible = "mediatek,mt8195-disp-ovl", "mediatek,mt8183-disp-ovl";
|
compatible = "mediatek,mt8195-disp-ovl";
|
||||||
reg = <0 0x1c000000 0 0x1000>;
|
reg = <0 0x1c000000 0 0x1000>;
|
||||||
interrupts = <GIC_SPI 636 IRQ_TYPE_LEVEL_HIGH 0>;
|
interrupts = <GIC_SPI 636 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||||
power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
|
power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
|
||||||
|
|||||||
@@ -144,10 +144,10 @@
|
|||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
/* 128 KiB reserved for ARM Trusted Firmware (BL31) */
|
/* 192 KiB reserved for ARM Trusted Firmware (BL31) */
|
||||||
bl31_secmon_reserved: secmon@43000000 {
|
bl31_secmon_reserved: secmon@43000000 {
|
||||||
no-map;
|
no-map;
|
||||||
reg = <0 0x43000000 0 0x20000>;
|
reg = <0 0x43000000 0 0x30000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@
|
|||||||
compatible = "mediatek,mt8516-wdt",
|
compatible = "mediatek,mt8516-wdt",
|
||||||
"mediatek,mt6589-wdt";
|
"mediatek,mt6589-wdt";
|
||||||
reg = <0 0x10007000 0 0x1000>;
|
reg = <0 0x10007000 0 0x1000>;
|
||||||
interrupts = <GIC_SPI 198 IRQ_TYPE_EDGE_FALLING>;
|
interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_LOW>;
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -269,7 +269,7 @@
|
|||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
reg = <0 0x10310000 0 0x1000>,
|
reg = <0 0x10310000 0 0x1000>,
|
||||||
<0 0x10320000 0 0x1000>,
|
<0 0x1032f000 0 0x2000>,
|
||||||
<0 0x10340000 0 0x2000>,
|
<0 0x10340000 0 0x2000>,
|
||||||
<0 0x10360000 0 0x2000>;
|
<0 0x10360000 0 0x2000>;
|
||||||
interrupts = <GIC_PPI 9
|
interrupts = <GIC_PPI 9
|
||||||
@@ -345,6 +345,7 @@
|
|||||||
reg = <0 0x11009000 0 0x90>,
|
reg = <0 0x11009000 0 0x90>,
|
||||||
<0 0x11000180 0 0x80>;
|
<0 0x11000180 0 0x80>;
|
||||||
interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
clock-div = <2>;
|
||||||
clocks = <&topckgen CLK_TOP_I2C0>,
|
clocks = <&topckgen CLK_TOP_I2C0>,
|
||||||
<&topckgen CLK_TOP_APDMA>;
|
<&topckgen CLK_TOP_APDMA>;
|
||||||
clock-names = "main", "dma";
|
clock-names = "main", "dma";
|
||||||
@@ -359,6 +360,7 @@
|
|||||||
reg = <0 0x1100a000 0 0x90>,
|
reg = <0 0x1100a000 0 0x90>,
|
||||||
<0 0x11000200 0 0x80>;
|
<0 0x11000200 0 0x80>;
|
||||||
interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
clock-div = <2>;
|
||||||
clocks = <&topckgen CLK_TOP_I2C1>,
|
clocks = <&topckgen CLK_TOP_I2C1>,
|
||||||
<&topckgen CLK_TOP_APDMA>;
|
<&topckgen CLK_TOP_APDMA>;
|
||||||
clock-names = "main", "dma";
|
clock-names = "main", "dma";
|
||||||
@@ -373,6 +375,7 @@
|
|||||||
reg = <0 0x1100b000 0 0x90>,
|
reg = <0 0x1100b000 0 0x90>,
|
||||||
<0 0x11000280 0 0x80>;
|
<0 0x11000280 0 0x80>;
|
||||||
interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
clock-div = <2>;
|
||||||
clocks = <&topckgen CLK_TOP_I2C2>,
|
clocks = <&topckgen CLK_TOP_I2C2>,
|
||||||
<&topckgen CLK_TOP_APDMA>;
|
<&topckgen CLK_TOP_APDMA>;
|
||||||
clock-names = "main", "dma";
|
clock-names = "main", "dma";
|
||||||
|
|||||||
@@ -47,7 +47,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c0 {
|
&i2c0 {
|
||||||
clock-div = <2>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c0_pins_a>;
|
pinctrl-0 = <&i2c0_pins_a>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
@@ -156,7 +155,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&i2c2 {
|
&i2c2 {
|
||||||
clock-div = <2>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c2_pins_a>;
|
pinctrl-0 = <&i2c2_pins_a>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|||||||
@@ -1631,7 +1631,7 @@
|
|||||||
regulator-min-microvolt = <1800000>;
|
regulator-min-microvolt = <1800000>;
|
||||||
regulator-max-microvolt = <1800000>;
|
regulator-max-microvolt = <1800000>;
|
||||||
regulator-always-on;
|
regulator-always-on;
|
||||||
gpio = <&exp1 14 GPIO_ACTIVE_HIGH>;
|
gpio = <&exp1 9 GPIO_ACTIVE_HIGH>;
|
||||||
enable-active-high;
|
enable-active-high;
|
||||||
vin-supply = <&vdd_1v8>;
|
vin-supply = <&vdd_1v8>;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1249,7 +1249,7 @@
|
|||||||
compatible = "nvidia,tegra234-sce-fabric";
|
compatible = "nvidia,tegra234-sce-fabric";
|
||||||
reg = <0xb600000 0x40000>;
|
reg = <0xb600000 0x40000>;
|
||||||
interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "okay";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
rce-fabric@be00000 {
|
rce-fabric@be00000 {
|
||||||
@@ -1558,7 +1558,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
dce-fabric@de00000 {
|
dce-fabric@de00000 {
|
||||||
compatible = "nvidia,tegra234-sce-fabric";
|
compatible = "nvidia,tegra234-dce-fabric";
|
||||||
reg = <0xde00000 0x40000>;
|
reg = <0xde00000 0x40000>;
|
||||||
interrupts = <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 381 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
@@ -1574,6 +1574,8 @@
|
|||||||
#redistributor-regions = <1>;
|
#redistributor-regions = <1>;
|
||||||
#interrupt-cells = <3>;
|
#interrupt-cells = <3>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
|
||||||
|
#address-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
smmu_iso: iommu@10000000{
|
smmu_iso: iommu@10000000{
|
||||||
|
|||||||
@@ -109,7 +109,7 @@
|
|||||||
sleep_clk: sleep-clk {
|
sleep_clk: sleep-clk {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <32768>;
|
clock-frequency = <32764>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
sleep_clk: sleep-clk {
|
sleep_clk: sleep-clk {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <32768>;
|
clock-frequency = <32764>;
|
||||||
clock-output-names = "sleep_clk";
|
clock-output-names = "sleep_clk";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -434,6 +434,15 @@
|
|||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
|
interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
interrupt-names = "pwr_event",
|
||||||
|
"qusb2_phy",
|
||||||
|
"hs_phy_irq",
|
||||||
|
"ss_phy_irq";
|
||||||
|
|
||||||
clocks = <&gcc GCC_USB30_MASTER_CLK>,
|
clocks = <&gcc GCC_USB30_MASTER_CLK>,
|
||||||
<&gcc GCC_SYS_NOC_USB3_AXI_CLK>,
|
<&gcc GCC_SYS_NOC_USB3_AXI_CLK>,
|
||||||
<&gcc GCC_USB30_SLEEP_CLK>,
|
<&gcc GCC_USB30_SLEEP_CLK>,
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
led@1 {
|
led@1 {
|
||||||
reg = <0>;
|
reg = <1>;
|
||||||
chan-name = "button-backlight1";
|
chan-name = "button-backlight1";
|
||||||
led-cur = /bits/ 8 <0x32>;
|
led-cur = /bits/ 8 <0x32>;
|
||||||
max-cur = /bits/ 8 <0xC8>;
|
max-cur = /bits/ 8 <0xC8>;
|
||||||
|
|||||||
@@ -2968,9 +2968,14 @@
|
|||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
interrupts = <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
|
<GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "hs_phy_irq", "ss_phy_irq";
|
interrupt-names = "pwr_event",
|
||||||
|
"qusb2_phy",
|
||||||
|
"hs_phy_irq",
|
||||||
|
"ss_phy_irq";
|
||||||
|
|
||||||
clocks = <&gcc GCC_SYS_NOC_USB3_AXI_CLK>,
|
clocks = <&gcc GCC_SYS_NOC_USB3_AXI_CLK>,
|
||||||
<&gcc GCC_USB30_MASTER_CLK>,
|
<&gcc GCC_USB30_MASTER_CLK>,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
thermal-zones {
|
thermal-zones {
|
||||||
pm6150_thermal: pm6150-thermal {
|
pm6150_thermal: pm6150-thermal {
|
||||||
polling-delay-passive = <100>;
|
polling-delay-passive = <100>;
|
||||||
polling-delay = <0>;
|
|
||||||
thermal-sensors = <&pm6150_temp>;
|
thermal-sensors = <&pm6150_temp>;
|
||||||
|
|
||||||
trips {
|
trips {
|
||||||
|
|||||||
@@ -5,6 +5,34 @@
|
|||||||
#include <dt-bindings/interrupt-controller/irq.h>
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
#include <dt-bindings/spmi/spmi.h>
|
#include <dt-bindings/spmi/spmi.h>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
thermal-zones {
|
||||||
|
pm6150l-thermal {
|
||||||
|
thermal-sensors = <&pm6150l_temp>;
|
||||||
|
|
||||||
|
trips {
|
||||||
|
trip0 {
|
||||||
|
temperature = <95000>;
|
||||||
|
hysteresis = <0>;
|
||||||
|
type = "passive";
|
||||||
|
};
|
||||||
|
|
||||||
|
trip1 {
|
||||||
|
temperature = <115000>;
|
||||||
|
hysteresis = <0>;
|
||||||
|
type = "hot";
|
||||||
|
};
|
||||||
|
|
||||||
|
trip2 {
|
||||||
|
temperature = <125000>;
|
||||||
|
hysteresis = <0>;
|
||||||
|
type = "critical";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&spmi_bus {
|
&spmi_bus {
|
||||||
pm6150l_lsid4: pmic@4 {
|
pm6150l_lsid4: pmic@4 {
|
||||||
compatible = "qcom,pm6150l", "qcom,spmi-pmic";
|
compatible = "qcom,pm6150l", "qcom,spmi-pmic";
|
||||||
@@ -12,6 +40,13 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
pm6150l_temp: temp-alarm@2400 {
|
||||||
|
compatible = "qcom,spmi-temp-alarm";
|
||||||
|
reg = <0x2400>;
|
||||||
|
interrupts = <0x4 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
|
||||||
|
#thermal-sensor-cells = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
pm6150l_adc: adc@3100 {
|
pm6150l_adc: adc@3100 {
|
||||||
compatible = "qcom,spmi-adc5";
|
compatible = "qcom,spmi-adc5";
|
||||||
reg = <0x3100>;
|
reg = <0x3100>;
|
||||||
|
|||||||
@@ -306,14 +306,9 @@
|
|||||||
|
|
||||||
reset-gpios = <&pm6150l_gpio 3 GPIO_ACTIVE_HIGH>;
|
reset-gpios = <&pm6150l_gpio 3 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
ports {
|
port {
|
||||||
#address-cells = <1>;
|
panel0_in: endpoint {
|
||||||
#size-cells = <0>;
|
remote-endpoint = <&dsi0_out>;
|
||||||
port@0 {
|
|
||||||
reg = <0>;
|
|
||||||
panel0_in: endpoint {
|
|
||||||
remote-endpoint = <&dsi0_out>;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -333,10 +328,6 @@
|
|||||||
vdds-supply = <&vreg_l4a_0p8>;
|
vdds-supply = <&vreg_l4a_0p8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&mdp {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&mdss {
|
&mdss {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
thermal-zones {
|
thermal-zones {
|
||||||
skin_temp_thermal: skin-temp-thermal {
|
skin_temp_thermal: skin-temp-thermal {
|
||||||
polling-delay-passive = <250>;
|
polling-delay-passive = <250>;
|
||||||
polling-delay = <0>;
|
|
||||||
|
|
||||||
thermal-sensors = <&pm6150_adc_tm 1>;
|
thermal-sensors = <&pm6150_adc_tm 1>;
|
||||||
sustainable-power = <965>;
|
sustainable-power = <965>;
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
thermal-zones {
|
thermal-zones {
|
||||||
skin_temp_thermal: skin-temp-thermal {
|
skin_temp_thermal: skin-temp-thermal {
|
||||||
polling-delay-passive = <250>;
|
polling-delay-passive = <250>;
|
||||||
polling-delay = <0>;
|
|
||||||
|
|
||||||
thermal-sensors = <&pm6150_adc_tm 1>;
|
thermal-sensors = <&pm6150_adc_tm 1>;
|
||||||
sustainable-power = <965>;
|
sustainable-power = <965>;
|
||||||
|
|||||||
@@ -12,14 +12,11 @@
|
|||||||
|
|
||||||
/ {
|
/ {
|
||||||
thermal-zones {
|
thermal-zones {
|
||||||
5v-choke-thermal {
|
choke-5v-thermal {
|
||||||
polling-delay-passive = <0>;
|
|
||||||
polling-delay = <250>;
|
|
||||||
|
|
||||||
thermal-sensors = <&pm6150_adc_tm 1>;
|
thermal-sensors = <&pm6150_adc_tm 1>;
|
||||||
|
|
||||||
trips {
|
trips {
|
||||||
5v-choke-crit {
|
choke-5v-crit {
|
||||||
temperature = <125000>;
|
temperature = <125000>;
|
||||||
hysteresis = <1000>;
|
hysteresis = <1000>;
|
||||||
type = "critical";
|
type = "critical";
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user