mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-25 06:59:42 +07:00
8f4a7a00c1
At the moment, writing large amounts of data to the eMMC causes the device
to freeze. The symptoms vary, sometimes the device reboots immediately,
but usually it will just get stuck.
It turns out that the issue is not actually related to the eMMC:
Apparently, Samsung has made some modifications to the TrustZone firmware.
These require additional memory which is reserved at 0x85500000-0x86000000.
The downstream kernel describes this memory reservation as:
/* Additionally Reserved 6MB for TIMA and Increased the TZ app size
* by 2MB [total 8 MB ]
*/
This suggests that it is used for additional TZ apps, although the extra
memory is actually 11 MB instead of the 8 MB mentioned in the comment.
Writing to the protected memory causes the kernel to crash or freeze.
In our case, writing to the eMMC causes the disk cache to fill
the available RAM, until the kernel eventually crashes
when attempting to use the reserved memory.
Add the additional memory as reserved-memory to fix this problem.
Fixes: 1329c1ab07
("arm64: dts: qcom: Add device tree for Samsung Galaxy A3U/A5U")
Reported-by: Michael Srba <Michael.Srba@seznam.cz>
Tested-by: Michael Srba <Michael.Srba@seznam.cz> # a3u
Tested-by: Stephan Gerhold <stephan@gerhold.net> # a5u
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20191231112511.83342-1-stephan@gerhold.net
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
325 lines
6.3 KiB
Plaintext
325 lines
6.3 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
#include "msm8916.dtsi"
|
|
#include "pm8916.dtsi"
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
|
|
/ {
|
|
aliases {
|
|
serial0 = &blsp1_uart2;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0";
|
|
};
|
|
|
|
reserved-memory {
|
|
/* Additional memory used by Samsung firmware modifications */
|
|
tz-apps@85500000 {
|
|
reg = <0x0 0x85500000 0x0 0xb00000>;
|
|
no-map;
|
|
};
|
|
};
|
|
|
|
soc {
|
|
sdhci@7824000 {
|
|
status = "okay";
|
|
|
|
vmmc-supply = <&pm8916_l8>;
|
|
vqmmc-supply = <&pm8916_l5>;
|
|
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
|
|
pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
|
|
};
|
|
|
|
sdhci@7864000 {
|
|
status = "okay";
|
|
|
|
vmmc-supply = <&pm8916_l11>;
|
|
vqmmc-supply = <&pm8916_l12>;
|
|
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
|
|
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
|
|
|
|
cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>;
|
|
};
|
|
|
|
serial@78b0000 {
|
|
status = "okay";
|
|
pinctrl-names = "default", "sleep";
|
|
pinctrl-0 = <&blsp1_uart2_default>;
|
|
pinctrl-1 = <&blsp1_uart2_sleep>;
|
|
};
|
|
|
|
usb@78d9000 {
|
|
status = "okay";
|
|
extcon = <&muic>, <&muic>;
|
|
|
|
hnp-disable;
|
|
srp-disable;
|
|
adp-disable;
|
|
|
|
ulpi {
|
|
phy {
|
|
extcon = <&muic>;
|
|
v1p8-supply = <&pm8916_l7>;
|
|
v3p3-supply = <&pm8916_l13>;
|
|
};
|
|
};
|
|
};
|
|
|
|
wcnss@a21b000 {
|
|
status = "okay";
|
|
};
|
|
|
|
/*
|
|
* Attempting to enable these devices causes a "synchronous
|
|
* external abort". Suspected cause is that the debug power
|
|
* domain is not enabled by default on this device.
|
|
* Disable these devices for now to avoid the crash.
|
|
*
|
|
* See: https://lore.kernel.org/linux-arm-msm/20190618202623.GA53651@gerhold.net/
|
|
*/
|
|
tpiu@820000 { status = "disabled"; };
|
|
funnel@821000 { status = "disabled"; };
|
|
replicator@824000 { status = "disabled"; };
|
|
etf@825000 { status = "disabled"; };
|
|
etr@826000 { status = "disabled"; };
|
|
funnel@841000 { status = "disabled"; };
|
|
debug@850000 { status = "disabled"; };
|
|
debug@852000 { status = "disabled"; };
|
|
debug@854000 { status = "disabled"; };
|
|
debug@856000 { status = "disabled"; };
|
|
etm@85c000 { status = "disabled"; };
|
|
etm@85d000 { status = "disabled"; };
|
|
etm@85e000 { status = "disabled"; };
|
|
etm@85f000 { status = "disabled"; };
|
|
};
|
|
|
|
gpio-keys {
|
|
compatible = "gpio-keys";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio_keys_default>;
|
|
|
|
label = "GPIO Buttons";
|
|
|
|
volume-up {
|
|
label = "Volume Up";
|
|
gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_VOLUMEUP>;
|
|
};
|
|
|
|
home {
|
|
label = "Home";
|
|
gpios = <&msmgpio 109 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_HOMEPAGE>;
|
|
};
|
|
};
|
|
|
|
gpio-hall-sensor {
|
|
compatible = "gpio-keys";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&gpio_hall_sensor_default>;
|
|
|
|
label = "GPIO Hall Effect Sensor";
|
|
|
|
hall-sensor {
|
|
label = "Hall Effect Sensor";
|
|
gpios = <&msmgpio 52 GPIO_ACTIVE_LOW>;
|
|
linux,input-type = <EV_SW>;
|
|
linux,code = <SW_LID>;
|
|
linux,can-disable;
|
|
};
|
|
};
|
|
|
|
i2c-muic {
|
|
compatible = "i2c-gpio";
|
|
sda-gpios = <&msmgpio 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
scl-gpios = <&msmgpio 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
muic: sm5502@25 {
|
|
compatible = "siliconmitus,sm5502-muic";
|
|
|
|
reg = <0x25>;
|
|
interrupt-parent = <&msmgpio>;
|
|
interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&muic_int_default>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&msmgpio {
|
|
gpio_keys_default: gpio_keys_default {
|
|
pinmux {
|
|
function = "gpio";
|
|
pins = "gpio107", "gpio109";
|
|
};
|
|
pinconf {
|
|
pins = "gpio107", "gpio109";
|
|
drive-strength = <2>;
|
|
bias-pull-up;
|
|
};
|
|
};
|
|
|
|
gpio_hall_sensor_default: gpio_hall_sensor_default {
|
|
pinmux {
|
|
function = "gpio";
|
|
pins = "gpio52";
|
|
};
|
|
pinconf {
|
|
pins = "gpio52";
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
};
|
|
|
|
muic_int_default: muic_int_default {
|
|
pinmux {
|
|
function = "gpio";
|
|
pins = "gpio12";
|
|
};
|
|
pinconf {
|
|
pins = "gpio12";
|
|
drive-strength = <2>;
|
|
bias-disable;
|
|
};
|
|
};
|
|
};
|
|
|
|
&smd_rpm_regulators {
|
|
vdd_l1_l2_l3-supply = <&pm8916_s3>;
|
|
vdd_l4_l5_l6-supply = <&pm8916_s4>;
|
|
vdd_l7-supply = <&pm8916_s4>;
|
|
|
|
s1 {
|
|
regulator-min-microvolt = <500000>;
|
|
regulator-max-microvolt = <1300000>;
|
|
};
|
|
|
|
s3 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1300000>;
|
|
};
|
|
|
|
s4 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2100000>;
|
|
};
|
|
|
|
l1 {
|
|
regulator-min-microvolt = <1225000>;
|
|
regulator-max-microvolt = <1225000>;
|
|
};
|
|
|
|
l2 {
|
|
regulator-min-microvolt = <1200000>;
|
|
regulator-max-microvolt = <1200000>;
|
|
};
|
|
|
|
l3 {
|
|
regulator-min-microvolt = <500000>;
|
|
regulator-max-microvolt = <1287500>;
|
|
};
|
|
|
|
l4 {
|
|
regulator-min-microvolt = <2050000>;
|
|
regulator-max-microvolt = <2050000>;
|
|
};
|
|
|
|
l5 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
};
|
|
|
|
l6 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
};
|
|
|
|
l7 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
};
|
|
|
|
l8 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2900000>;
|
|
};
|
|
|
|
l9 {
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
};
|
|
|
|
l10 {
|
|
regulator-min-microvolt = <2700000>;
|
|
regulator-max-microvolt = <2800000>;
|
|
};
|
|
|
|
l11 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2950000>;
|
|
regulator-allow-set-load;
|
|
regulator-system-load = <200000>;
|
|
};
|
|
|
|
l12 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <2950000>;
|
|
};
|
|
|
|
l13 {
|
|
regulator-min-microvolt = <3075000>;
|
|
regulator-max-microvolt = <3075000>;
|
|
};
|
|
|
|
l14 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
};
|
|
|
|
l15 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
};
|
|
|
|
l16 {
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
};
|
|
|
|
l17 {
|
|
regulator-min-microvolt = <2850000>;
|
|
regulator-max-microvolt = <2850000>;
|
|
};
|
|
|
|
l18 {
|
|
regulator-min-microvolt = <2700000>;
|
|
regulator-max-microvolt = <2700000>;
|
|
};
|
|
};
|
|
|
|
&spmi_bus {
|
|
pm8916@0 {
|
|
pon@800 {
|
|
volume-down {
|
|
compatible = "qcom,pm8941-resin";
|
|
interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
|
|
bias-pull-up;
|
|
linux,code = <KEY_VOLUMEDOWN>;
|
|
};
|
|
};
|
|
};
|
|
};
|