From nobody Thu Sep 18 13:13:29 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2C37C3A5A7 for ; Tue, 6 Dec 2022 08:34:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233934AbiLFIeP (ORCPT ); Tue, 6 Dec 2022 03:34:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233466AbiLFIeL (ORCPT ); Tue, 6 Dec 2022 03:34:11 -0500 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1CDFFE9 for ; Tue, 6 Dec 2022 00:34:10 -0800 (PST) Received: by mail-ej1-x62f.google.com with SMTP id x22so4351981ejs.11 for ; Tue, 06 Dec 2022 00:34:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3BPaUYtbAIV1BLKNgYdAozqHw0R4+q9lV2NZg2CpgKo=; b=H2H7JKYXXvAfClM3nA4go1vg+3MHl1e/2zDDCysrg3tEabCsIvKnRzv0Wvtb2s10VN 304O8iUaaCjy+dnUF4jp5tvxQ7MKMC2YGkV23TPpDOStSB2Upw0HDsdfWJMs2ioAEOrO fhKRJupDAIl1fLdC4rmrOPBhagh95bOmoINpnJ0Zam1PJQYxiVWiFMx4uAO8/VhJige/ q5RIt7kTTdZLXfDSogK4wYnAWCRuJIegjkPjFnq6DxnHXIQKAcCVC2EWQgKtVEUTgRU7 MuUyGBNerPFdl7BnbM83N10a7qTIxPVwG7X9BJpk4AcHrfhY18IPOxuXDtofPfhLSKvV XlpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3BPaUYtbAIV1BLKNgYdAozqHw0R4+q9lV2NZg2CpgKo=; b=OeuWHlmN0zmWH1OIgTn1MEBLqSGuaQmgZ+UqLrrz2rCKmVXn6eHvYCRKDSNzKDbA6f lYBq9tfs+5Oo3jzRd2yVOTAsYDHO9+GDejko4RrvBRX9OrXfHdTUVwTgxLxeWdDxgO4q U8EvqGUG1CkdZ4uRTaveFwA7YSnRjWQG2OdaMcsiQ3k++4N3VzdDy8dfmxOWNAklrvQn oyZhAQt+P1lhXh2fTAZpovR0MbmHedTW01NiIejf+pZ8dCOTe5FV0UNhnYEDDHRtYDSz ievtkz7ow3m+zviEFJerZrscMa+yCfwB6OGEqW/iSdPrAt7XbtuVb0xIZZucavH7w/gQ a9Wg== X-Gm-Message-State: ANoB5pniT1TDQQ8N54KKD8ExbW9zrYj1CqMDysfop090KC6esvl3T0+u hddhmcMtW9Fhp0AvND+3TiyF4w== X-Google-Smtp-Source: AA0mqf5Pz039HsSECacZv7n6SegwyteVoV+SG8Cjh+HO/AU52+pi8GERHDDdw5tp9McDI8DIbvAY2w== X-Received: by 2002:a17:907:2c75:b0:7c0:bbab:a550 with SMTP id ib21-20020a1709072c7500b007c0bbaba550mr14397235ejc.168.1670315649259; Tue, 06 Dec 2022 00:34:09 -0800 (PST) Received: from [127.0.1.1] ([2a0e:41a:894f:0:2017:359e:18ef:1c49]) by smtp.gmail.com with ESMTPSA id g18-20020a17090604d200b0078d9b967962sm7019390eja.65.2022.12.06.00.34.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 00:34:08 -0800 (PST) From: Carlo Caione Date: Tue, 06 Dec 2022 09:34:01 +0100 Subject: [PATCH v3 1/3] drm/tiny: ili9486: Enable driver module autoloading MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20221116-s905x_spi_ili9486-v3-1-59c6b58cbfe3@baylibre.com> References: <20221116-s905x_spi_ili9486-v3-0-59c6b58cbfe3@baylibre.com> In-Reply-To: <20221116-s905x_spi_ili9486-v3-0-59c6b58cbfe3@baylibre.com> To: Daniel Vetter , Jerome Brunet , David Airlie , Kamlesh Gurudasani , Mark Brown , Martin Blumenstingl , Kevin Hilman , Neil Armstrong Cc: linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, Carlo Caione , linux-kernel@vger.kernel.org X-Mailer: b4 0.10.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SPI devices use the spi_device_id for module autoloading even on systems using device tree. Add the spi_device_id entry to enable autoloading for the 3.5inch RPi Display (rpi-lcd-35 and piscreen). Reviewed-by: Neil Armstrong Signed-off-by: Carlo Caione --- drivers/gpu/drm/tiny/ili9486.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c index c80028bb1d11..2ca7c59771f3 100644 --- a/drivers/gpu/drm/tiny/ili9486.c +++ b/drivers/gpu/drm/tiny/ili9486.c @@ -183,6 +183,8 @@ MODULE_DEVICE_TABLE(of, ili9486_of_match); =20 static const struct spi_device_id ili9486_id[] =3D { { "ili9486", 0 }, + { "rpi-lcd-35", 0 }, + { "piscreen", 0 }, { } }; MODULE_DEVICE_TABLE(spi, ili9486_id); --=20 b4 0.10.1 From nobody Thu Sep 18 13:13:29 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABCA0C352A1 for ; Tue, 6 Dec 2022 08:34:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234041AbiLFIeW (ORCPT ); Tue, 6 Dec 2022 03:34:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32788 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233613AbiLFIeM (ORCPT ); Tue, 6 Dec 2022 03:34:12 -0500 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C13141024 for ; Tue, 6 Dec 2022 00:34:11 -0800 (PST) Received: by mail-ed1-x52b.google.com with SMTP id i15so11063396edf.2 for ; Tue, 06 Dec 2022 00:34:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6+091FGCQ4rhzDvkB3AYfkA+OM7BJLCJxULLW5x6V0Y=; b=CMulTRGHBt8iZM34cI32BL92j4m/IGpI6bWJ+J8LmB3Bk9XlO8T2iVFu0JkuBVf5zj 8Wr0rXr9XVkORpLTFHEUXRXlrgQds3a+N8OJcv8pyp5UWyhX043kgJV1IYaeEM1if5ls fcn1Xmbm29SFIoT4NocFl/j01Dm8x/9dT3pH/70rdtr7Eiq5IyhhHdZgMX3hHJEvfaOw uXWTFUo5QnhQaRm3Q8kBsLYm1Rz7Cg/AknnwM7TowRNpVAl9Bh3+7ivfKDgQHnnwTSgu 669PfAVJ5wR334uRsypLCsWVOL5aYLZS1wPHtmj3LtsaCbwak5Q8yk1GI3C4z0kIfkyk FLgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6+091FGCQ4rhzDvkB3AYfkA+OM7BJLCJxULLW5x6V0Y=; b=eKeBTyJhlcLOCd37jOmstkXnXoibuVIXaQTetEEUo8x6DGcINHiMdCc51firXrB6ap cR03PDohn3mBMjp+jX8pGNozEnf6ZYtiDCtvKMNhXNLwQLUdZQ4Zp0SaIDXh4AKheJUx HI80W5rl0PpYYGV1XwuP6jVCg6cJRyRMWktyDzV735FTYrFzo/iEIcZEpf/L1E2j+BlA M8nbnabf5RWB6kyeqYfi/LTYad3x5hzGClSj+o/sn46Wg6KuPFt2r6yKXLBf/hVljIUG 1xl25zQrOJuZg1VJaTI93+tGKseJjO+xxBPrQs46cRmau/LIeHKG/bz5IdbNDmTaCOuu cnoQ== X-Gm-Message-State: ANoB5plzHba3zLADg9w7vIs0Yv0lkUbS9wWmZlkINMXISK1c00bRQmHn Na5KyPufZJlwWmk/fCs82fH5EA== X-Google-Smtp-Source: AA0mqf7xShBddJAwFF9w5fCy8BkqKLZeSqJlo3zmXsOR6j9nvha3NC93Pz85cGp3Hed4/H9Fmoo1IQ== X-Received: by 2002:a05:6402:4516:b0:467:b88c:f3af with SMTP id ez22-20020a056402451600b00467b88cf3afmr1991786edb.24.1670315650207; Tue, 06 Dec 2022 00:34:10 -0800 (PST) Received: from [127.0.1.1] ([2a0e:41a:894f:0:2017:359e:18ef:1c49]) by smtp.gmail.com with ESMTPSA id g18-20020a17090604d200b0078d9b967962sm7019390eja.65.2022.12.06.00.34.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 00:34:09 -0800 (PST) From: Carlo Caione Date: Tue, 06 Dec 2022 09:34:02 +0100 Subject: [PATCH v3 2/3] drm/tiny: ili9486: Do not assume 8-bit only SPI controllers MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20221116-s905x_spi_ili9486-v3-2-59c6b58cbfe3@baylibre.com> References: <20221116-s905x_spi_ili9486-v3-0-59c6b58cbfe3@baylibre.com> In-Reply-To: <20221116-s905x_spi_ili9486-v3-0-59c6b58cbfe3@baylibre.com> To: Daniel Vetter , Jerome Brunet , David Airlie , Kamlesh Gurudasani , Mark Brown , Martin Blumenstingl , Kevin Hilman , Neil Armstrong Cc: linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, Carlo Caione , linux-kernel@vger.kernel.org X-Mailer: b4 0.10.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The pixel data for the ILI9486 is always 16-bits wide and it must be sent over the SPI bus. When the controller is only able to deal with 8-bit transfers, this 16-bits data needs to be swapped before the sending to account for the big endian bus, this is on the contrary not needed when the SPI controller already supports 16-bits transfers. The decision about swapping the pixel data or not is taken in the MIPI DBI code by probing the controller capabilities: if the controller only suppors 8-bit transfers the data is swapped, otherwise it is not. This swapping/non-swapping is relying on the assumption that when the controller does support 16-bit transactions then the data is sent unswapped in 16-bits-per-word over SPI. The problem with the ILI9486 driver is that it is forcing 8-bit transactions also for controllers supporting 16-bits, violating the assumption and corrupting the pixel data. Align the driver to what is done in the MIPI DBI code by adjusting the transfer size to the maximum allowed by the SPI controller. Reviewed-by: Neil Armstrong Signed-off-by: Carlo Caione --- drivers/gpu/drm/tiny/ili9486.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c index 2ca7c59771f3..14a9e6ad2d15 100644 --- a/drivers/gpu/drm/tiny/ili9486.c +++ b/drivers/gpu/drm/tiny/ili9486.c @@ -43,6 +43,7 @@ static int waveshare_command(struct mipi_dbi *mipi, u8 *c= md, u8 *par, size_t num) { struct spi_device *spi =3D mipi->spi; + unsigned int bpw =3D 8; void *data =3D par; u32 speed_hz; int i, ret; @@ -56,8 +57,6 @@ static int waveshare_command(struct mipi_dbi *mipi, u8 *c= md, u8 *par, * The displays are Raspberry Pi HATs and connected to the 8-bit only * SPI controller, so 16-bit command and parameters need byte swapping * before being transferred as 8-bit on the big endian SPI bus. - * Pixel data bytes have already been swapped before this function is - * called. */ buf[0] =3D cpu_to_be16(*cmd); gpiod_set_value_cansleep(mipi->dc, 0); @@ -71,12 +70,18 @@ static int waveshare_command(struct mipi_dbi *mipi, u8 = *cmd, u8 *par, for (i =3D 0; i < num; i++) buf[i] =3D cpu_to_be16(par[i]); num *=3D 2; - speed_hz =3D mipi_dbi_spi_cmd_max_speed(spi, num); data =3D buf; } =20 + /* + * Check whether pixel data bytes needs to be swapped or not + */ + if (*cmd =3D=3D MIPI_DCS_WRITE_MEMORY_START && !mipi->swap_bytes) + bpw =3D 16; + gpiod_set_value_cansleep(mipi->dc, 1); - ret =3D mipi_dbi_spi_transfer(spi, speed_hz, 8, data, num); + speed_hz =3D mipi_dbi_spi_cmd_max_speed(spi, num); + ret =3D mipi_dbi_spi_transfer(spi, speed_hz, bpw, data, num); free: kfree(buf); =20 --=20 b4 0.10.1 From nobody Thu Sep 18 13:13:29 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F259BC352A1 for ; Tue, 6 Dec 2022 08:34:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234094AbiLFIeZ (ORCPT ); Tue, 6 Dec 2022 03:34:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32802 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233929AbiLFIeO (ORCPT ); Tue, 6 Dec 2022 03:34:14 -0500 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DA30F6E for ; Tue, 6 Dec 2022 00:34:12 -0800 (PST) Received: by mail-ej1-x62c.google.com with SMTP id qk9so4427391ejc.3 for ; Tue, 06 Dec 2022 00:34:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=dcRZDjg3O3q6T3Sk5c09WrJuoI7e4rWvSzYj/Z5H43A=; b=4WirXC4jMxNwlMz6xJ0Jso5tI43SM73m6Z9nAG5UcC6cra+AVeRVqQ34JVt6DgZKgV c9hIcYbA/AvXNIM6RMGCohkjPKGrjCTBPl9oU3bNjAjQ/umGlKZLpggA155FB0vJk6Ct rVcHJ0ILj6BY4HBabqfD7FJVizZkw3Ldgd5e3xJbSInv7XpX/wYG6HZCmV7RsRmxhpIu XkwElGUBdmrQGgZBpaz/Yd6JEAvU7fw8grj8BxnZf8UlHql26r0u8WY4z+Mv4oLZ0koR xQtcD4jBbiBlgU3ycjVbJlgfX5rdOKY5JE6tHR1X8QYJktlo5P4BCCoaT1FmCpd7wM9l 2tgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dcRZDjg3O3q6T3Sk5c09WrJuoI7e4rWvSzYj/Z5H43A=; b=fiTVEqDoF7wevulIc3WFQYnvNe8kewfTrTH/u/lT+PzNmQOqeucpNSdKdhECfKz6wr NHqFaQGsPdP9fUml8C+wiVkVv0ld6GYHWxa9eC/LyHKVtgnPU0DI40+7xou6p12ZGHaG 5/cUUrZh9H0d94xRzKMDoA/zZbL1HoEb4LeBPxk6XubOBT8u2sVC4vCrR2okPyMtwgoo FmnhfnbS2YyaaXqO3Q3WOWeG/B69S3d3UC/K4RWDeyMrCwHppiskvmI7SM5BQi4WWgIb kG3zZXsf8yDR9kFVLetAZXxqGe27hlRl4cbf1ZS+gnCBrZOsFLm7FcU6Mb3VLPOYsFHT N9wQ== X-Gm-Message-State: ANoB5plvbDA59JjYVx2R2+1vc4a5MGLOmhgdumnlLK3+Tnmx3hwyiK+T 3p064xxAipwS1DhAs5j7spqqjw== X-Google-Smtp-Source: AA0mqf5gb/HnDPmrEu015wzGjESF27vgWXcc+GMbiF/NffvzbIeSzlwquLLovFxqS8JOcTBj9/5vKQ== X-Received: by 2002:a17:906:164d:b0:7c0:b602:f9a1 with SMTP id n13-20020a170906164d00b007c0b602f9a1mr17569290ejd.88.1670315651166; Tue, 06 Dec 2022 00:34:11 -0800 (PST) Received: from [127.0.1.1] ([2a0e:41a:894f:0:2017:359e:18ef:1c49]) by smtp.gmail.com with ESMTPSA id g18-20020a17090604d200b0078d9b967962sm7019390eja.65.2022.12.06.00.34.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Dec 2022 00:34:10 -0800 (PST) From: Carlo Caione Date: Tue, 06 Dec 2022 09:34:03 +0100 Subject: [PATCH v3 3/3] drm/tiny: ili9486: remove conflicting framebuffers MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20221116-s905x_spi_ili9486-v3-3-59c6b58cbfe3@baylibre.com> References: <20221116-s905x_spi_ili9486-v3-0-59c6b58cbfe3@baylibre.com> In-Reply-To: <20221116-s905x_spi_ili9486-v3-0-59c6b58cbfe3@baylibre.com> To: Daniel Vetter , Jerome Brunet , David Airlie , Kamlesh Gurudasani , Mark Brown , Martin Blumenstingl , Kevin Hilman , Neil Armstrong Cc: linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, Carlo Caione , linux-kernel@vger.kernel.org X-Mailer: b4 0.10.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For platforms using simplefb / efifb, call drm_aperture_remove_framebuffers() to remove the conflicting framebuffer. Signed-off-by: Carlo Caione --- drivers/gpu/drm/tiny/ili9486.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c index 14a9e6ad2d15..6fd4d42437fd 100644 --- a/drivers/gpu/drm/tiny/ili9486.c +++ b/drivers/gpu/drm/tiny/ili9486.c @@ -14,6 +14,7 @@ =20 #include