amx-mst701/linux/imx53-amx-mst701.dts
Markus Koch 237cd1ffb4 dt: Fix touchscreen
For some reason, the ecspi SS1 line appears on the output when
selecting GPIO in the pinmux.

Also, the x-axis is inverted, and pressure values upon press hover
around 250.
2024-12-21 13:51:43 +01:00

358 lines
7.7 KiB
Plaintext

// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2024 Markus Koch <markus@notsyncing.net>
*/
/dts-v1/;
#include "imx53.dtsi"
/ {
model = "AMX MST701";
compatible = "amx,mst701", "fsl,imx53";
memory@70000000 {
device_type = "memory";
reg = <
0x70000000 0x10000000
0xb0000000 0x10000000
>;
};
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
gpu_reserved_mem: gpu_mem@76000000 {
reg = <0x76000000 0x08000000>;
};
mxc_sdc_fb_0_legacy: gpu_fbmem@7e000000 {
reg = <0x7e000000 0x02000000>;
};
gpu_graphics_mem_sram: gpu_graphics_mem@1 {
reg = <0xf8020000 0x40000>;
};
};
aliases {
display = &lvds0;
lvds0 = &lvds0;
};
sgtlsound: sound {
compatible = "fsl,imx53-amxtablet-sgtl5000",
"fsl,imx-audio-sgtl5000";
model = "imx53-amxtablet-sgtl5000";
simple-audio-card,aux-devs = <&speaker_amp>;
simple-audio-card,routing =
"Headphone Jack", "Speaker Amp OUTR",
"Speaker Amp INR", "HP_OUT";
ssi-controller = <&ssi2>;
audio-codec = <&sgtl5000>;
audio-routing =
"Headphone Jack", "HP_OUT"
;
mux-int-port = <2>;
mux-ext-port = <5>;
};
speaker_amp: speaker-amp {
compatible = "simple-audio-amplifier";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spkamp>;
sound-name-prefix = "Speaker Amp";
/* enable-gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>; */ // TODO: I don't know how to link my "imx-audio-sgtl5000" to this amp node (see above)
};
reg_3p2v: regulator-3p2v {
compatible = "regulator-fixed";
regulator-name = "3P2V";
regulator-min-microvolt = <3200000>;
regulator-max-microvolt = <3200000>;
regulator-always-on;
};
reg_usbotg_vbus: regulator-usbotg-vbus {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg_reg>;
regulator-name = "VCC_USB";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
reg_usbh1_vbus: regulator-usbh1-vbus {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbh1_reg>;
regulator-name = "VCC_USB_INT";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio2 26 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
gpio-poweroff { /* In case you didn't see it, there's power button on the top left of the device. */
compatible = "gpio-poweroff";
gpios = <&gpio2 15 GPIO_ACTIVE_LOW>;
timeout-ms = <3000>;
// TODO: pinctrl
};
gpio-leds {
compatible = "gpio-leds";
system-status {
label = "Status";
linux,default-trigger = "heartbeat";
gpios = <&gpio3 15 GPIO_ACTIVE_HIGH>;
// TODO: pinctrl
};
};
};
&ecspi1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1>;
touchscreen0: tsc2046@1 {
reg = <1>;
compatible = "ti,tsc2046";
interrupt-parent = <&gpio1>;
interrupts = <8 0>;
pendown-gpio = <&gpio1 8 GPIO_ACTIVE_LOW>;
spi-max-frequency = <1000000>;
touchscreen-min-pressure = <128>;
touchscreen-max-pressure = <512>;
touchscreen-inverted-x;
wakeup-source;
};
};
&ldb {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds0>;
status = "okay";
lvds0: lvds-channel@0 {
fsl,data-mapping = "spwg";
fsl,data-width = <24>;
status = "okay";
display-timings {
native-mode = <&lvds0_timing0>;
lvds0_timing0: timing-mst701disp {
clock-frequency = <48960000>;
hactive = <1024>;
vactive = <600>;
hback-porch = <144>;
hsync-len = <104>;
hfront-porch = <40>;
vback-porch = <18>;
vsync-len = <3>;
vfront-porch = <1>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <1>;
};
};
};
};
&ssi2 {
fsl,mode = "i2s-master";
status = "okay";
};
&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c1>;
status = "okay";
};
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
status = "okay";
sgtl5000: codec@a {
compatible = "fsl,sgtl5000";
reg = <0x0a>;
#sound-dai-cells = <0>;
clocks = <&clks IMX5_CLK_SSI_EXT1_GATE>;
VDDA-supply = <&reg_3p2v>;
VDDIO-supply = <&reg_3p2v>;
};
};
&i2c3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";
};
&cpu0 {
operating-points = <
/* kHz */
166666 850000
400000 900000
800000 1050000
1000000 1200000
// 1200000 1300000 // SKU does not support 1.2 GHz
>;
};
&audmux {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_audmux>;
status = "okay";
};
&iomuxc {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hog>;
pinctrl_hog: hoggrp {
fsl,pins = <
MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK 0x80000000 /* SSI_MCLK */
// MX53_PAD_DISP0_DAT8__WDOG1_WDOG_B TODO
// MX53_PAD_GPIO_1__PWM2_PWMO
// MX53_PAD_GPIO_9__PWM1_PWMO
>;
};
pinctrl_usbotg_reg: usbotgreggrp {
fsl,pins = <
MX53_PAD_EIM_DA15__GPIO3_15 0x0 /* VBUS_EN */
>;
};
pinctrl_usbh1_reg: usbh1reggrp {
fsl,pins = <
MX53_PAD_EIM_RW__GPIO2_26 0x0 /* VBUS_EN (ETH) */
>;
};
pinctrl_ecspi1: ecspi1grp {
fsl,pins = <
MX53_PAD_EIM_D16__ECSPI1_SCLK 0x80000000
MX53_PAD_EIM_D17__ECSPI1_MISO 0x80000000
MX53_PAD_EIM_D18__ECSPI1_MOSI 0x80000000
MX53_PAD_EIM_D19__GPIO3_19 0x80000000 /* Should normally be MX53_PAD_EIM_D19__ECSPI1_SS1, but for some reason ecspi controls the SS via GPIO. */
>;
};
pinctrl_audmux: audmuxgrp {
fsl,pins = <
MX53_PAD_KEY_COL0__AUDMUX_AUD5_TXC 0x80000000
MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD 0x80000000
MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS 0x80000000
MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD 0x80000000
>;
};
pinctrl_spkamp: spkampgrp {
fsl,pins = <
MX53_PAD_GPIO_12__GPIO4_2 0x0
>;
};
pinctrl_uart1: uart1grp {
fsl,pins = <
MX53_PAD_PATA_DIOW__UART1_TXD_MUX 0x1e4
MX53_PAD_PATA_DMACK__UART1_RXD_MUX 0x1e4
>;
};
pinctrl_esdhc1: esdhc1grp {
fsl,pins = <
MX53_PAD_SD1_DATA0__ESDHC1_DAT0 0x1d5
MX53_PAD_SD1_DATA1__ESDHC1_DAT1 0x1d5
MX53_PAD_SD1_DATA2__ESDHC1_DAT2 0x1d5
MX53_PAD_SD1_DATA3__ESDHC1_DAT3 0x1d5
MX53_PAD_SD1_CMD__ESDHC1_CMD 0x1d5
MX53_PAD_SD1_CLK__ESDHC1_CLK 0x1d5
>;
};
pinctrl_fec: fecgrp {
fsl,pins = <
MX53_PAD_FEC_MDC__FEC_MDC 0x80000000
MX53_PAD_FEC_MDIO__FEC_MDIO 0x80000000
MX53_PAD_FEC_REF_CLK__FEC_TX_CLK 0x80000000
MX53_PAD_FEC_RX_ER__FEC_RX_ER 0x80000000
MX53_PAD_FEC_CRS_DV__FEC_RX_DV 0x80000000
MX53_PAD_FEC_RXD1__FEC_RDATA_1 0x80000000
MX53_PAD_FEC_RXD0__FEC_RDATA_0 0x80000000
MX53_PAD_FEC_TX_EN__FEC_TX_EN 0x80000000
MX53_PAD_FEC_TXD1__FEC_TDATA_1 0x80000000
MX53_PAD_FEC_TXD0__FEC_TDATA_0 0x80000000
>;
};
pinctrl_i2c2: i2c2grp {
fsl,pins = <
MX53_PAD_KEY_ROW3__I2C2_SDA 0x400001e4
MX53_PAD_KEY_COL3__I2C2_SCL 0x400001e4
>;
};
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX53_PAD_EIM_D21__I2C1_SCL 0x400001e4
MX53_PAD_EIM_D28__I2C1_SDA 0x400001e4
>;
};
pinctrl_i2c3: i2c3grp {
fsl,pins = <
MX53_PAD_GPIO_6__I2C3_SDA 0x400001e4
MX53_PAD_GPIO_5__I2C3_SCL 0x400001e4
>;
};
pinctrl_lvds0: lvds0grp {
fsl,pins = <
MX53_PAD_LVDS0_TX3_P__LDB_LVDS0_TX3 0x80000000
MX53_PAD_LVDS0_CLK_P__LDB_LVDS0_CLK 0x80000000
MX53_PAD_LVDS0_TX2_P__LDB_LVDS0_TX2 0x80000000
MX53_PAD_LVDS0_TX1_P__LDB_LVDS0_TX1 0x80000000
MX53_PAD_LVDS0_TX0_P__LDB_LVDS0_TX0 0x80000000
>;
};
};
&esdhc1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_esdhc1>;
status = "okay";
//max-frequency = <25000000>;
};
&uart1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
status = "okay";
};
&usbotg { /* External USB port */
dr_mode = "host";
status = "okay";
vbus-supply = <&reg_usbotg_vbus>;
};
&usbh1 { /* USB Ethernet controller */
phy_type = "utmi";
dr_mode = "host";
vbus-supply = <&reg_usbh1_vbus>;
status = "okay";
};