mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 06:34:11 +08:00
feedaacdad
This driver uses GPIO descriptors to drive the touchscreen RESET line. In the existing device trees this has in conflict with intution been flagged as GPIO_ACTIVE_HIGH and the driver then applies the reverse action by driving the line low (setting to 0) to enter reset state and driving the line high (setting to 1) to get out of reset state. The correct way to handle active low GPIO lines is to provide the GPIO_ACTIVE_LOW in the device tree (thus properly describing the hardware) and letting the GPIO framework invert the assertion (driving high) to a low level and vice versa. This is considered a bug since the device trees are incorrectly mis-specifying the line as active high. Fix the driver and all device trees specifying a reset line. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Philippe Schenker <philippe.schenker@toradex.com> Acked-by: Krzysztof Kozlowski <krzk@kernel.org> Link: https://lore.kernel.org/r/20201104153032.1387747-1-linus.walleij@linaro.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
276 lines
4.5 KiB
Plaintext
276 lines
4.5 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
|
/*
|
|
* Copyright 2014-2020 Toradex
|
|
* Copyright 2012 Freescale Semiconductor, Inc.
|
|
* Copyright 2011 Linaro Ltd.
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/input/input.h>
|
|
#include <dt-bindings/interrupt-controller/irq.h>
|
|
#include "imx6q.dtsi"
|
|
#include "imx6qdl-apalis.dtsi"
|
|
|
|
/ {
|
|
model = "Toradex Apalis iMX6Q/D Module on Ixora Carrier Board";
|
|
compatible = "toradex,apalis_imx6q-ixora", "toradex,apalis_imx6q",
|
|
"fsl,imx6q";
|
|
|
|
aliases {
|
|
i2c0 = &i2c1;
|
|
i2c1 = &i2c3;
|
|
i2c2 = &i2c2;
|
|
rtc0 = &rtc_i2c;
|
|
rtc1 = &snvs_rtc;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = "serial0:115200n8";
|
|
};
|
|
|
|
gpio-keys {
|
|
compatible = "gpio-keys";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_gpio_keys>;
|
|
|
|
wakeup {
|
|
label = "Wake-Up";
|
|
gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
|
linux,code = <KEY_WAKEUP>;
|
|
debounce-interval = <10>;
|
|
wakeup-source;
|
|
};
|
|
};
|
|
|
|
lcd_display: disp0 {
|
|
compatible = "fsl,imx-parallel-display";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
interface-pix-fmt = "rgb24";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_ipu1_lcdif>;
|
|
status = "okay";
|
|
|
|
port@0 {
|
|
reg = <0>;
|
|
|
|
lcd_display_in: endpoint {
|
|
remote-endpoint = <&ipu1_di1_disp1>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
|
|
lcd_display_out: endpoint {
|
|
remote-endpoint = <&lcd_panel_in>;
|
|
};
|
|
};
|
|
};
|
|
|
|
panel: panel {
|
|
/*
|
|
* edt,et057090dhu: EDT 5.7" LCD TFT
|
|
* edt,et070080dh6: EDT 7.0" LCD TFT
|
|
*/
|
|
compatible = "edt,et057090dhu";
|
|
backlight = <&backlight>;
|
|
|
|
port {
|
|
lcd_panel_in: endpoint {
|
|
remote-endpoint = <&lcd_display_out>;
|
|
};
|
|
};
|
|
};
|
|
|
|
leds {
|
|
compatible = "gpio-leds";
|
|
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_leds_ixora>;
|
|
|
|
led4-green {
|
|
label = "LED_4_GREEN";
|
|
gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
led4-red {
|
|
label = "LED_4_RED";
|
|
gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
led5-green {
|
|
label = "LED_5_GREEN";
|
|
gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
|
|
led5-red {
|
|
label = "LED_5_RED";
|
|
gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&backlight {
|
|
brightness-levels = <0 127 191 223 239 247 251 255>;
|
|
default-brightness-level = <1>;
|
|
status = "okay";
|
|
};
|
|
|
|
&can1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&can2 {
|
|
status = "okay";
|
|
};
|
|
|
|
&hdmi {
|
|
status = "okay";
|
|
};
|
|
|
|
/* I2C1_SDA/SCL on MXM3 209/211 (e.g. RTC on carrier board) */
|
|
&i2c1 {
|
|
status = "okay";
|
|
|
|
/*
|
|
* Touchscreen is using SODIMM 28/30, also used for PWM<B>, PWM<C>,
|
|
* aka pwm2, pwm3. so if you enable touchscreen, disable the pwms
|
|
*/
|
|
touchscreen@4a {
|
|
compatible = "atmel,maxtouch";
|
|
reg = <0x4a>;
|
|
interrupt-parent = <&gpio6>;
|
|
interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
|
|
reset-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>; /* SODIMM 13 */
|
|
status = "disabled";
|
|
};
|
|
|
|
eeprom@50 {
|
|
compatible = "atmel,24c02";
|
|
reg = <0x50>;
|
|
};
|
|
|
|
/* M41T0M6 real time clock on carrier board */
|
|
rtc_i2c: rtc@68 {
|
|
compatible = "st,m41t0";
|
|
reg = <0x68>;
|
|
};
|
|
};
|
|
|
|
/*
|
|
* I2C3_SDA/SCL (CAM) on MXM3 pin 201/203 (e.g. camera sensor on carrier
|
|
* board)
|
|
*/
|
|
&i2c3 {
|
|
status = "okay";
|
|
};
|
|
|
|
&ipu1_di1_disp1 {
|
|
remote-endpoint = <&lcd_display_in>;
|
|
};
|
|
|
|
&ldb {
|
|
status = "okay";
|
|
};
|
|
|
|
&pcie {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_reset_moci>;
|
|
/* active-high meaning opposite of regular PERST# active-low polarity */
|
|
reset-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
|
|
reset-gpio-active-high;
|
|
status = "okay";
|
|
};
|
|
|
|
&pwm1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&pwm2 {
|
|
status = "okay";
|
|
};
|
|
|
|
&pwm3 {
|
|
status = "okay";
|
|
};
|
|
|
|
&pwm4 {
|
|
status = "okay";
|
|
};
|
|
|
|
®_usb_otg_vbus {
|
|
status = "okay";
|
|
};
|
|
|
|
®_usb_host_vbus {
|
|
status = "okay";
|
|
};
|
|
|
|
&sata {
|
|
status = "okay";
|
|
};
|
|
|
|
&sound_spdif {
|
|
status = "okay";
|
|
};
|
|
|
|
&spdif {
|
|
status = "okay";
|
|
};
|
|
|
|
&uart1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&uart2 {
|
|
status = "okay";
|
|
};
|
|
|
|
&uart4 {
|
|
status = "okay";
|
|
};
|
|
|
|
&uart5 {
|
|
status = "okay";
|
|
};
|
|
|
|
&usbh1 {
|
|
vbus-supply = <®_usb_host_vbus>;
|
|
status = "okay";
|
|
};
|
|
|
|
&usbotg {
|
|
vbus-supply = <®_usb_otg_vbus>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* SD1 */
|
|
&usdhc2 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_usdhc2 &pinctrl_sd_cd>;
|
|
cd-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>;
|
|
status = "okay";
|
|
};
|
|
|
|
&iomuxc {
|
|
/* Mux the Apalis GPIOs */
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_apalis_gpio1 &pinctrl_apalis_gpio2
|
|
&pinctrl_apalis_gpio3 &pinctrl_apalis_gpio4
|
|
&pinctrl_apalis_gpio5 &pinctrl_apalis_gpio6
|
|
&pinctrl_apalis_gpio7 &pinctrl_apalis_gpio8
|
|
>;
|
|
|
|
pinctrl_leds_ixora: ledsixoragrp {
|
|
fsl,pins = <
|
|
MX6QDL_PAD_SD1_DAT1__GPIO1_IO17 0x1b0b0
|
|
MX6QDL_PAD_SD1_DAT3__GPIO1_IO21 0x1b0b0
|
|
MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1b0b0
|
|
MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x1b0b0
|
|
>;
|
|
};
|
|
};
|