From patchwork Sun Oct 8 15:44:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 2992 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 57E683F080 for ; Sun, 8 Oct 2023 17:46:04 +0200 (CEST) Received: by mail-ed1-f72.google.com with SMTP id 4fb4d7f45d1cf-538128e18e9sf3064339a12.2 for ; Sun, 08 Oct 2023 08:46:04 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696779964; cv=pass; d=google.com; s=arc-20160816; b=bdnLixYao24tol6FzngNud/Kgpksb+/t4HwxPO0Futjf8yazXSK+7XUOPqkB+jtuFN RxaR3N14jYeLKlB6GaIhxzmdfl1bMGtMBKs5O1Goa1ty/j6DF08K7hTC+BgsJSw0+qf8 mSTnzrvTbAOKoIift/9Jxvxm66bYjTJjPffWN+46t15vANLsqiTbpbeyktyftmnQCTBs kujBZ/r/lmBbo6AqL3DKLrS4BjV2QTAUToP3f5krTrcJLPi++2IVMZvwYfCOxeGl+VAe dUukG49+irIhoTuJfhN2+eiD/OLAlJ2CXqJWBCEJ2640tMainSZ/mxsAGDxFa00mP9Dt dwCw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=j7jbHb5Qc+a2Tea56qX3ysN0E+lkhvNhUQULkKHY3ao=; fh=FUTSaaBMBt1C5i0mSDLqrGZ+vc4s7M7IKdGEyBvHdVo=; b=S8F2CWlv0+ZtryIxQ3MVM92UHAksDO8+RbKhpj5hLFTyvZpa67ld+PNPDxO2sR0dcv sjZGdJo07DLOLJhW58jTpmhRcse7rZ/f43oa3RcdCq2Aadzd/Iz5xGQ4RSgeeP6LJnYR 9MtVROXnOFL9oiWpH1Tci0CKBUUamveLR9H3SSBoLMSXaZ2iJMccMRXKR9L68+GYrCsV kto3TGNjWgAnsfsO2O+kz6NfX3oO1KoNTTWQB7kUL5/xWyToQa4PnztbbSyseqBNyOFt I3UoJXHVVXB7LGP5SR+Ga+2Cuj6C5Cx08j06wbBhAMB2Oe4njNqFSc1wp9jW1aUlfCeY g60A== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=aADzybaI; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1696779964; x=1697384764; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=j7jbHb5Qc+a2Tea56qX3ysN0E+lkhvNhUQULkKHY3ao=; b=L+6F869HMN1skbQ6a9rEUaQg0NdhNyGjDzVvPA8KW9brw/ZYWdkwhvO/2MetgJUeTS 1gyT2XjSPwdF3TXTewCy9J5ek3mqVICP7Wt2CxnNv28ZqXI9SgRlOkwJIZZKGW9KfDZ4 aNNppaBfX6IYLSeKKxgun4dO8yd0hLxx21PDQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696779964; x=1697384764; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=j7jbHb5Qc+a2Tea56qX3ysN0E+lkhvNhUQULkKHY3ao=; b=Fa78f3OuzndrBOa6tAX5S70yzB4o6yx76iAc3ERSlTpTYvqxIQz5B4QS3TT/PO70ow v6iw/gwrFbVUF/qHyhi2Kdjz5SHpPYZAeZgX75IYy56ol5rB6buyJJ81SfJIZOu/uCSi +99l9KWNvn0FYP+qG6LImIJBnGTFe0/uboQHhlxOzcLLguKQYUsU3vbbKgB5HY21XFdw 4FBFv3uu3Nh/momJh8vNKeeVE2EHDKUBLRoP7aqoQ441N3IRybirxI+0mKJAZ+5nFXTY ogH7atHVfMlJkVh3WwwH9KczTThIuggnJmWypdvSp29qLSzoMTjNzy/TA6Hi0elMkDM3 6hRg== X-Gm-Message-State: AOJu0YzqT/Dmh4vIC/XHegohvM9tWkAHS+erGhkrVk4FqkNejk/uB708 of41rmr3FPbgYw4GOzs6NoSgvKNB X-Google-Smtp-Source: AGHT+IEZsibAkua22P+8N+fBlxEJLlI07YFK4hVEujVnKpT/RaEdcp8z2CoWwcRvCIGh92thPeH7Yw== X-Received: by 2002:aa7:c998:0:b0:527:ab3f:4350 with SMTP id c24-20020aa7c998000000b00527ab3f4350mr11385808edt.38.1696779963900; Sun, 08 Oct 2023 08:46:03 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:aa7:df13:0:b0:536:182d:6f32 with SMTP id c19-20020aa7df13000000b00536182d6f32ls460355edy.0.-pod-prod-07-eu; Sun, 08 Oct 2023 08:46:02 -0700 (PDT) X-Received: by 2002:a17:907:7711:b0:9b2:a96c:9290 with SMTP id kw17-20020a170907771100b009b2a96c9290mr11718309ejc.33.1696779962620; Sun, 08 Oct 2023 08:46:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696779962; cv=none; d=google.com; s=arc-20160816; b=QByxt3URMwXAnwjJjIPhcVTo95Nqo3pyo7JiettpU2HPdtdZ94HQ1Pf/K8zk72FSkX x5mAJ4KV0jezmYGHa1l4lsSnwfcEVVeL4zPFk+Ic/7el6absGBt4Jb7ofn2KaaHgZyYT 7PFDcirBGBPUnYIaYpkRGnecpwR/Lqs4BvR8klpc93+HRrl4xhs9wiN0WCTvRPJRTufo DzFEtKyd7sPUrWOx76Ow/qrvrqIaenbOtR8NcJOkgI6NOub3ZO7UU4NnIu1SV+noZb68 E6YyyXKFdBK8Vjrbp40MEcvnHpFHsaYxEdbAHH3CASv26i/keJtkE+XaYZxLjD6cqTaG +DWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=fY6FlJfVNoPy6YrmmBZZaj6Y9r9HCEihc5HK1yFhXQQ=; fh=FUTSaaBMBt1C5i0mSDLqrGZ+vc4s7M7IKdGEyBvHdVo=; b=ZGh+zHisBW86/1MZ1qaBhkdFGpk40IJMON6Iw+3llXjYtG9LYM8JLLCB6fyKK/3oV1 sqg2EFbyniFhIEpLh+JwiwQL7UTHwFJcvpL03AsjZBp2pMsjtLBKM9eEajJr0TRMnXiX EOyaX+rh70EYyDQdijZOjrsPPDqj55fvRzkWe7c2LidAEOORRPDkHhspMVZ67kAHy/th NF3o+JLOVpkh11RTjUJbJjA24/5x6WnWrrzvCYyvk+VrVgip0dqHxnFkhZPDOmo17XR2 6clX/cSQOmm/cEylZssVsLrMvTFxbliSvzQVdYOvi9Q5GNEG0F0ELZJl2rEpLgVLhmS5 /QRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=aADzybaI; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id w14-20020a170907270e00b009b2b75475absor2666600ejk.13.2023.10.08.08.46.02 for (Google Transport Security); Sun, 08 Oct 2023 08:46:02 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Received: by 2002:a17:907:7887:b0:9b2:ccd8:2d2c with SMTP id ku7-20020a170907788700b009b2ccd82d2cmr11653180ejc.34.1696779962307; Sun, 08 Oct 2023 08:46:02 -0700 (PDT) Received: from dario-ThinkPad-T14s-Gen-2i.homenet.telecomitalia.it (host-79-50-102-159.retail.telecomitalia.it. [79.50.102.159]) by smtp.gmail.com with ESMTPSA id lc11-20020a170906f90b00b009b9aa8fffdasm5623981ejb.131.2023.10.08.08.46.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Oct 2023 08:46:01 -0700 (PDT) From: Dario Binacchi To: u-boot@lists.denx.de Cc: linux-amarula@amarulasolutions.com, Dario Binacchi , Anatolij Gustschin , Patrice Chotard , Patrick Delaunay , Simon Glass , Tom Rini , uboot-stm32@st-md-mailman.stormreply.com Subject: [RFC PATCH v2 4/5] ARM: dts: stm32: support display on stm32f469-disco board Date: Sun, 8 Oct 2023 17:44:56 +0200 Message-ID: <20231008154538.1622772-5-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231008154538.1622772-1-dario.binacchi@amarulasolutions.com> References: <20231008154538.1622772-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=aADzybaI; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Add support to Orise Tech OTM8009A display on stm32f469-disco board. It was necessary to retrieve the framebuffer address from the device tree because the address returned by the video-uclass driver pointed to a memory area that was not usable. Furthermore, unlike Linux, the DSI driver requires the LTDC clock to be properly probed. Hence, the changes made to the DSI node in stm32f469-disco-u-boot.dtsi. Signed-off-by: Dario Binacchi --- Changes in v2: - Add DRAM_SIZE macro. - Fix frame buffer allocation function so that it is backward compatible with boards other than the one it was introduced for (i. e. stm32f469-disco). Tested on stm32f469-disco and stm32mp157f-dk2 boards. arch/arm/dts/stm32f469-disco-u-boot.dtsi | 4 +++ configs/stm32f469-discovery_defconfig | 13 ++++++++++ drivers/video/stm32/stm32_ltdc.c | 31 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/arch/arm/dts/stm32f469-disco-u-boot.dtsi b/arch/arm/dts/stm32f469-disco-u-boot.dtsi index 8e781c5a7b23..47ba9fa4a783 100644 --- a/arch/arm/dts/stm32f469-disco-u-boot.dtsi +++ b/arch/arm/dts/stm32f469-disco-u-boot.dtsi @@ -92,7 +92,9 @@ &dsi { clocks = <&rcc 0 STM32F4_APB2_CLOCK(DSI)>, + <&rcc 0 STM32F4_APB2_CLOCK(LTDC)>, <&clk_hse>; + clock-names = "pclk", "px_clk", "ref"; }; &gpioa { @@ -140,6 +142,8 @@ }; <dc { + bootph-all; + clocks = <&rcc 0 STM32F4_APB2_CLOCK(LTDC)>; }; diff --git a/configs/stm32f469-discovery_defconfig b/configs/stm32f469-discovery_defconfig index 21c5498466cd..85e795e83e7d 100644 --- a/configs/stm32f469-discovery_defconfig +++ b/configs/stm32f469-discovery_defconfig @@ -21,6 +21,7 @@ CONFIG_CMD_GPT=y # CONFIG_RANDOM_UUID is not set CONFIG_CMD_MMC=y # CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_BMP=y CONFIG_CMD_CACHE=y CONFIG_CMD_TIMER=y # CONFIG_ISO_PARTITION is not set @@ -40,3 +41,15 @@ CONFIG_SPI_FLASH_STMICRO=y CONFIG_SPI=y CONFIG_DM_SPI=y CONFIG_STM32_QSPI=y +CONFIG_VIDEO=y +CONFIG_BACKLIGHT_GPIO=y +CONFIG_VIDEO_LCD_ORISETECH_OTM8009A=y +CONFIG_VIDEO_STM32=y +CONFIG_VIDEO_STM32_DSI=y +CONFIG_VIDEO_STM32_MAX_XRES=480 +CONFIG_VIDEO_STM32_MAX_YRES=800 +CONFIG_BMP_16BPP=y +CONFIG_BMP_24BPP=y +CONFIG_BMP_32BPP=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y diff --git a/drivers/video/stm32/stm32_ltdc.c b/drivers/video/stm32/stm32_ltdc.c index 6fd90e33919d..9054db1d78b3 100644 --- a/drivers/video/stm32/stm32_ltdc.c +++ b/drivers/video/stm32/stm32_ltdc.c @@ -495,6 +495,33 @@ static void stm32_ltdc_set_layer1(struct stm32_ltdc_priv *priv, ulong fb_addr) setbits_le32(priv->regs + LTDC_L1CR, LXCR_LEN); } +#if IS_ENABLED(CONFIG_TARGET_STM32F469_DISCOVERY) +static int stm32_ltdc_alloc_fb(struct udevice *dev) +{ +#define SDRAM_SIZE 0x1000000 /* 128Mbit = 16 Mbyte = 0x1000000 */ + struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev); + phys_addr_t cpu; + dma_addr_t bus; + u64 dma_size; + int ret; + + ret = dev_get_dma_range(dev, &cpu, &bus, &dma_size); + if (ret) { + dev_err(dev, "failed to get dma address\n"); + return ret; + } + + uc_plat->base = bus + SDRAM_SIZE - ALIGN(uc_plat->size, uc_plat->align); + return 0; +} +#else +static inline int stm32_ltdc_alloc_fb(struct udevice *dev) +{ + /* Delegate framebuffer allocation to video-uclass */ + return 0; +} +#endif + static int stm32_ltdc_probe(struct udevice *dev) { struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev); @@ -605,6 +632,10 @@ static int stm32_ltdc_probe(struct udevice *dev) priv->crop_h = timings.vactive.typ; priv->alpha = 0xFF; + ret = stm32_ltdc_alloc_fb(dev); + if (ret) + return ret; + dev_dbg(dev, "%dx%d %dbpp frame buffer at 0x%lx\n", timings.hactive.typ, timings.vactive.typ, VNBITS(priv->l2bpp), uc_plat->base);