Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1630206ybz; Thu, 30 Apr 2020 02:45:48 -0700 (PDT) X-Google-Smtp-Source: APiQypJRyPP05XmBAkmFBuUVi9CZAPFFwCzkpRl7wndeLAAd9eueiizj8OqFLt+Csfeg618rOwhB X-Received: by 2002:a17:906:16d0:: with SMTP id t16mr1798272ejd.303.1588239948668; Thu, 30 Apr 2020 02:45:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588239948; cv=none; d=google.com; s=arc-20160816; b=bfOE/YaD4f6aYvOlNGk7BxO1mHT/CGeSlY4HwHxXPhKkYAAYlY9HhwMghY13xKl5ol dUF/kgJmLL879gKLI2lPtufWH3KZFx6zE/O1QMnonTaXQ8ADFuqt3Ty7MV/aZ5Ld7GYx xTb/yv/QKhF4TpNgQ890TfZDHtd411TySLrjPVKwVkWKMRdy6K8l2r+uKHH6Je9vB8Nd mQoP0VUScDrUSoH1ut31xiUzvFTMd8p/zMBLK+7bsOtx9n/zyjsNkca7JelDLaR0tZIy xL4wfr79Gu242I0ybbhleJAk7iDzK83dMDahcHNrNzp4JafXSjaC8E+RGO6DHiRMBBzK 3IWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=dEmSKhNrz+xLqMEEc+aybE6UoVCXvC7isyJ9mYoLpu8=; b=RinHIlS2FkIa1nnfMI0V6PmgH+xcTvF/MbA9KiKomc7K3nNHkLc+0RF0UiJ6/fp3Ux 65NBQegZqgN6yplhvLWeaXDb6QuRcdLmR72ZIYVNWiLVpMEkJZyyz4ObPv+ASnhG/+qO BCSviIJgmTVRJH9TDxuxf/NGRw1DLxs0Q4/1J0EIF4i/VmMT0jGoiHM9oGSwQCUNuM1T cGjTVt/Ij5HiXF3MU4B07Mt/HchTgvrwij65XPk6u3NOKOEat1LmtUADLHAkfeDPEQ2R 7VpKxBukwqVKgoX1ZxaeLLP6XXSHVrasJ6bPJA2XQbTr2AMW05Oq+vQ9XYSZ9/Z3XM++ HM/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dJXFpw15; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r24si5101800edc.217.2020.04.30.02.45.25; Thu, 30 Apr 2020 02:45:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=dJXFpw15; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726829AbgD3Jna (ORCPT + 99 others); Thu, 30 Apr 2020 05:43:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44240 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726453AbgD3Jn3 (ORCPT ); Thu, 30 Apr 2020 05:43:29 -0400 Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB639C035494; Thu, 30 Apr 2020 02:43:29 -0700 (PDT) Received: by mail-pg1-x544.google.com with SMTP id d3so2506906pgj.6; Thu, 30 Apr 2020 02:43:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=dEmSKhNrz+xLqMEEc+aybE6UoVCXvC7isyJ9mYoLpu8=; b=dJXFpw15yFFHc7J7j2nuHoGE6sOC2fcJOHSNwv9W5tL817cZ+sK0b022FyQKDBjCce iUxUGPZQt7kgnlGBx7/mOvF7EC/qyPl8GwtxXbcB9QjIY2kUgyz/Hz8KBXetbr94i0UE W7IyuXpEBlNZFEQjqSjeAnKon04QLYl2X4WmIQNYxv3iNeEnzf92/RxtpGiwsYZwXFOQ 979J5kmQEoj4/zVRxexlj2OsPL7T4MBQy4ooL/Q80roIQfKrVH3Vh4H2DTGLdc7H7D0C ObLvKH4ZrKWspqbyP+sU53WuLzGMw8O8p88Mi6W71i8mCFPCegDNztCnL1pWfA14Z2Vd aP8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=dEmSKhNrz+xLqMEEc+aybE6UoVCXvC7isyJ9mYoLpu8=; b=cIDCLY5WaM94GhzHn30o3Pt717em/cKXQoav4tVtjKldDYZBsjf7TNgswmCzkLf5jV 6wi2coWswPCSuPhQUWyC+OYrM42oDscN0C5CR0SAGsvU3PHgvVai/yypsAP3RA6jy+aE bmJ/oqq4PQRIwPNPeMLFgi29UteBYsIjED1Y46LB8RmbnUUC7E+/paZXiJUCm7fpGhAc 1mdxNqZ9p0ICiLMOXDQHMnFv78OOnP+8qFpejFMaGKGR4r7Wj1McioKdhM5v/1grNuuX W5IRuvDsHsyQG54FvcGXW8pmYGlQxZNI2GdsIGWuRxGJpfRAOndlcRt0QPEtdT4wYf/0 sbew== X-Gm-Message-State: AGi0PuYW9yd8vpqdiTBE3pE36AEcGGhEKl9r8R5yO7HhzZXMifyhJQmI /OgB+lPEcjVZfotr4IQanX8= X-Received: by 2002:a63:b649:: with SMTP id v9mr2200218pgt.402.1588239809178; Thu, 30 Apr 2020 02:43:29 -0700 (PDT) Received: from fmin-OptiPlex-7060.nreal.work ([137.59.101.138]) by smtp.gmail.com with ESMTPSA id p10sm3024966pff.210.2020.04.30.02.43.24 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Apr 2020 02:43:28 -0700 (PDT) From: dillon.minfei@gmail.com To: alexandre.torgue@st.com Cc: sam@ravnborg.org, airlied@linux.ie, daniel@ffwll.ch, robh+dt@kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, mcoquelin.stm32@gmail.com, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, thierry.reding@gmail.com, dillon.minfei@gmail.com Subject: [PATCH 1/4] add dts node for drm panel driver ili9341 add dts i2c3 for stmpe touch add dts spi5 for gyro & ili9341 Date: Thu, 30 Apr 2020 17:43:22 +0800 Message-Id: <1588239802-11442-1-git-send-email-dillon.minfei@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: dillon min Signed-off-by: dillon min --- .../bindings/display/panel/ilitek,ili9341.txt | 42 +++++++++++ arch/arm/boot/dts/stm32f4-pinctrl.dtsi | 79 +++++++++++++++++++ arch/arm/boot/dts/stm32f429-disco.dts | 88 ++++++++++++++++++++++ arch/arm/boot/dts/stm32f429.dtsi | 12 +++ 4 files changed, 221 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/panel/ilitek,ili9341.txt diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili9341.txt b/Documentation/devicetree/bindings/display/panel/ilitek,ili9341.txt new file mode 100644 index 0000000..f5a4e55 --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili9341.txt @@ -0,0 +1,42 @@ +Ilitek ILI9341 TFT panel driver with SPI control bus + +This is a driver for 240x320 TFT panels, accepting a rgb input +streams that get adapted and scaled to the panel. + +Required properties: + - compatible: "stm32f429-disco,ltdc-panel", "ilitek,ili9341" + (full system-specific compatible is always required to look up configuration) + - reg: address of the panel on the SPI bus + +Optional properties: + - reset-gpios: a GPIO spec for the reset pin, see gpio/gpio.txt + - dc-gpios: a GPIO spec for the dc pin, see gpio/gpio.txt + + The following optional properties only apply to RGB input mode: + + - pixelclk-active: see display/panel/display-timing.txt + - de-active: see display/panel/display-timing.txt + - hsync-active: see display/panel/display-timing.txt + - vsync-active: see display/panel/display-timing.txt + +The panel must obey the rules for a SPI slave device as specified in +spi/spi-bus.txt + +The device node can contain one 'port' child node with one child +'endpoint' node, according to the bindings defined in +media/video-interfaces.txt. This node should describe panel's video bus. + +Example: + +panel: display@0 { + compatible = "stm32f429-disco,ltdc-panel", "ilitek,ili9341"; + reg = <0>; + spi-3wire; + spi-max-frequency = <10000000>; + dc-gpios = <&gpiod 13 0>; + port { + panel_in: endpoint { + remote-endpoint = <&display_out>; + }; + }; +}; diff --git a/arch/arm/boot/dts/stm32f4-pinctrl.dtsi b/arch/arm/boot/dts/stm32f4-pinctrl.dtsi index 392fa14..45b68f4 100644 --- a/arch/arm/boot/dts/stm32f4-pinctrl.dtsi +++ b/arch/arm/boot/dts/stm32f4-pinctrl.dtsi @@ -316,6 +316,85 @@ }; }; + ltdc_pins_f429_disco: ltdc-1 { + pins { + pinmux = , + /* LCD_HSYNC */ + , + /* LCD_VSYNC */ + , + /* LCD_CLK */ + , + /* LCD_R2 */ + , + /* LCD_R3 */ + , + /* LCD_R4 */ + , + /* LCD_R5 */ + , + /* LCD_R6*/ + , + /* LCD_R7 */ + , + /* LCD_G2 */ + , + /* LCD_G3 */ + , + /* LCD_G4 */ + , + /* LCD_B2 */ + , + /* LCD_B3*/ + , + /* LCD_G5 */ + , + /* LCD_G6 */ + , + /* LCD_G7 */ + , + /* LCD_B4 */ + , + /* LCD_B5 */ + , + /* LCD_B6 */ + , + /* LCD_B7 */ + ; + /* LCD_DE */ + slew-rate = <2>; + }; + }; + + i2c3_pins: i2c3-0 { + pins { + pinmux = , + /* I2C3_SDA */ + ; + /* I2C3_SCL */ + bias-disable; + drive-open-drain; + slew-rate = <3>; + }; + }; + + spi5_pins: spi5-0 { + pins1 { + pinmux = , + /* SPI5_CLK */ + ; + /* SPI5_MOSI */ + bias-disable; + drive-push-pull; + slew-rate = <0>; + }; + pins2 { + pinmux = ; + /* SPI5_MISO */ + bias-disable; + }; + }; + dcmi_pins: dcmi-0 { pins { pinmux = , /* DCMI_HSYNC */ diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts index 30c0f67..55eed05 100644 --- a/arch/arm/boot/dts/stm32f429-disco.dts +++ b/arch/arm/boot/dts/stm32f429-disco.dts @@ -49,6 +49,8 @@ #include "stm32f429.dtsi" #include "stm32f429-pinctrl.dtsi" #include +#include +#include / { model = "STMicroelectronics STM32F429i-DISCO board"; @@ -98,6 +100,14 @@ regulator-name = "vcc5_host1"; regulator-always-on; }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "3P3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; }; &clk_hse { @@ -127,3 +137,81 @@ pinctrl-names = "default"; status = "okay"; }; + +<dc { + status = "okay"; + pinctrl-0 = <<dc_pins_f429_disco>; + pinctrl-names = "default"; + + port { + ltdc_out_rgb: endpoint { + remote-endpoint = <&panel_in_rgb>; + }; + }; +}; + +&spi5 { + status = "okay"; + pinctrl-0 = <&spi5_pins>; + pinctrl-names = "default"; + #address-cells = <1>; + #size-cells = <0>; + cs-gpios = <&gpioc 1 GPIO_ACTIVE_LOW>,<&gpioc 2 GPIO_ACTIVE_LOW>; + dmas = <&dma2 3 2 0x400 0x0>, + <&dma2 4 2 0x400 0x0>; + dma-names = "rx", "tx"; + l3gd20: l3gd20@0 { + compatible = "st,l3gd20-gyro"; + spi-max-frequency = <10000000>; + st,drdy-int-pin = <2>; + interrupt-parent = <&gpioa>; + interrupts = <1 IRQ_TYPE_EDGE_RISING>, + <2 IRQ_TYPE_EDGE_RISING>; + reg = <0>; + vddio = <®_3p3v>; + vdd = <®_3p3v>; + status = "okay"; + }; + display: display@1{ + /* Connect panel-ilitek-9341 to ltdc */ + compatible = "stm32f429-disco,ltdc-panel", "ilitek,ili9341"; + reg = <1>; + spi-3wire; + spi-max-frequency = <10000000>; + dc-gpios = <&gpiod 13 0>; + port { + panel_in_rgb: endpoint { + remote-endpoint = <<dc_out_rgb>; + }; + }; + }; +}; + +&i2c3 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c3_pins>; + status = "okay"; + + touch: stmpe811@41 { + compatible = "st,stmpe811"; + reg = <0x41>; + interrupts = <15 IRQ_TYPE_EDGE_FALLING>; + interrupt-parent = <&gpioa>; + vio = <®_3p3v>; + vcc = <®_3p3v>; + status = "okay"; + + stmpe_touchscreen { + compatible = "st,stmpe-ts"; + st,sample-time = <4>; + st,mod-12b = <1>; + st,ref-sel = <0>; + st,adc-freq = <1>; + st,ave-ctrl = <1>; + st,touch-det-delay = <2>; + st,settling = <2>; + st,fraction-z = <7>; + st,i-drive = <1>; + }; + }; +}; diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi index d777069..257b843 100644 --- a/arch/arm/boot/dts/stm32f429.dtsi +++ b/arch/arm/boot/dts/stm32f429.dtsi @@ -402,6 +402,18 @@ status = "disabled"; }; + i2c3: i2c@40005c00 { + compatible = "st,stm32f4-i2c"; + reg = <0x40005c00 0x400>; + interrupts = <72>, + <73>; + resets = <&rcc STM32F4_APB1_RESET(I2C3)>; + clocks = <&rcc 0 STM32F4_APB1_CLOCK(I2C3)>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; + dac: dac@40007400 { compatible = "st,stm32f4-dac-core"; reg = <0x40007400 0x400>; -- 2.7.4