From nobody Tue Feb 10 23:54:14 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B1977329E52 for ; Tue, 10 Feb 2026 18:09:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770746977; cv=none; b=IaTeEHIEGTcIYTiljAAjabP52i3zCY/ujJNWvwFCk2oBti6uWuRjie4SPw7esc2rnc5MgBMzdh3dVS+G5zST4RDEM8tfR0UnPr7+jOsfS3Lob1l7uI+aARMySSiteidm66Erunw/FzA6kSrl9uHJzR8byREUzsTBmL8pINlJ9xs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770746977; c=relaxed/simple; bh=SsjbQz0p4M9VAImDhBwIhoE4gChqvQzLxFqedmgaZF0=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=ZN6HzAfaLPReWx0eJOAPdoqPFlaWqBMp8QZFzAIJEXd1NBTP8lcaoUzTskWYdAqCjmJMrj8bhwNvRUHda1cxYG/54KPQ4YHx4MDOwAWbW2utbSc5rbnQPPCD3i8KQGsDkyaGQPy9O5a2TzexzhivRa6H1G9Ursr907WMQJEOewA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=egTGyoRF; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="egTGyoRF" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-482f454be5bso1017775e9.0 for ; Tue, 10 Feb 2026 10:09:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1770746974; x=1771351774; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=OBc8TO43XyTU7wmRneZXW7N97Ft8rzp0b55awq4cob4=; b=egTGyoRFLebFwwpzQTirjekxybsr9O7kliPWoZNq7Stx/DROHAC2jJ1OKmf0v89/D4 /jDoDofSEN/u5380rMyxYvZziitHGOa09Y/7WcjkPDidfmGh0upeCsIkbt2j/jA+Rfa3 q3GsTI0TDGhLjh2eV43eUlrET4qDRaBKa2pdh3UVnFOJv16aQG6Q8fJAG4JP7slTuywF utTC1Gbdgrq0EjUVoYiKWOWTL2mGKw7wd9cUmCpHNhm5d5ucLnSl8nm8IqVke1wAZoQd c27ax6uCwaOPGk5QWuq0tFDEKc5XFMuJQtPV0gLDj04o/KB1IuRgiyQNZp62hdfXPSTh tFAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770746974; x=1771351774; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=OBc8TO43XyTU7wmRneZXW7N97Ft8rzp0b55awq4cob4=; b=J10yM9LUS4IjxO466yzFrzD49VHDmfSYJ0g5OifJSwt9usJ7DtqMA+NLWAzdI9WDtv 0qRBqKF8e4jF2G4rU7ailkOs72FW9LkV/7Rwx9Z3bWdSwMPalPzFCWwWGk6Ouoi6elqt kP2agvkZt7inE/qRaGNhIaT00Zg+3PS9YHwxXiCl5IkSmJXxYguw1UX5SUcTWLFp44tR 1Hwa4L+VltQzw5f9fjwuLtEPamkE3Zfc2bKBArhRMYRFl6TEjhJMMdPBXfCdbrnvroDB WZBgfijy5l8HFXxYvHfEnr395+2CdRHcpQEY7e3dRkfKzAJRYh9gSouKGet0O4sw8oCM oCVg== X-Forwarded-Encrypted: i=1; AJvYcCVwI0ESG1qUVOYY2anxHf9SJ50guC3SSLgRFp8VNsp9OJdcbDDRRlbbZQVXl5WmWQ6oNhfrioRnwmydrAY=@vger.kernel.org X-Gm-Message-State: AOJu0YzWqJMYgZyDD3d+0nu283t3y5SZCyNDAQnj+wmAcQO2n2yrIzSa ajiYDfjale8KIGyEc1LabQiIQ9J+MgL320EnS3x7wJ+n8weboys18VLsQx1mxf5zZm4= X-Gm-Gg: AZuq6aIsMvC7Eel029I3hIQyWZ3Sl/2TroxxYfV/MH9UKZ8OcalFsJX1+F/yXvfdypj dG59YqVSC93N2qDkI42M53qaKjx73Uc+jI2eOsijrcSHf6t6mZSih9oW++9nurfUINvqxDDk25t VJ/1j2uR01k066D8PmdZ5GPWmTrhsob7wrRAgvcoWs9k1qqggioMQVj/X4Vj5oKmct6FCz1eLyb N0bf941eZaJOSxjD0vm9rHNJ226vrAdLvM8G07hTMN2C/OUYv7CQmDVhlR2HqBBabat4uA+QLzI uWc//CESU7zXQthqTNFMvjs0n/D7/OvsKl/nYR9YXp4dxX/MgHQDuDEIMvSa6eO/eXJgiTAYc5L VZvjReWORlQvMvTNkx6JlT0yuNjCb6betY6doaixxnGMkJEWy8s85/lrbgBJVt20xFw== X-Received: by 2002:a05:600c:46cf:b0:483:4b37:8620 with SMTP id 5b1f17b1804b1-48350530e24mr45832385e9.10.1770746974027; Tue, 10 Feb 2026 10:09:34 -0800 (PST) Received: from localhost ([151.57.64.2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4834d5e1a8esm68667295e9.5.2026.02.10.10.09.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Feb 2026 10:09:33 -0800 (PST) From: Francesco Lavra To: Javier Martinez Canillas , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Chen-Yu Tsai , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/solomon: Fix page start when updating rectangle in page addressing mode Date: Tue, 10 Feb 2026 19:09:32 +0100 Message-Id: <20260210180932.736502-1-flavra@baylibre.com> X-Mailer: git-send-email 2.39.5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2209; i=flavra@baylibre.com; h=from:subject; bh=SsjbQz0p4M9VAImDhBwIhoE4gChqvQzLxFqedmgaZF0=; b=owEB7QES/pANAwAKAe3xO3POlDZfAcsmYgBpi3P1b571zhMCpceu53YyYhnBPEvsHmM08wyAT pU3gFmUTamJAbMEAAEKAB0WIQSGV4VPlTvcox7DFObt8TtzzpQ2XwUCaYtz9QAKCRDt8TtzzpQ2 X+uVC/4tMYK6G3yEcCk0DLVNBn1VxJ1XHZ7w5zNiUOIvULWigS5I6Yb/c8CGfUyV92Ea/beAELB c+CjiC0fjWwBAKtWNIfxyBxGuno2mii4+r5foGvLff3Fmy+Qd0PaCUCtz9SwDPoD9JfO2+kaQwq Bc/Xv7a4+BrIAJPGwO6U/2ctr9hqb9jaTOOAPfBdBzEY7WMW2RjiqZwzwxgQ5Tbr3KSxfl6C1JD OvrNLzRRbJRlr2Yap+FKpRMzdlZh5dVVwLSsmDsVEgiRPhzVLjr6Yo1AVJ00c9h+Cz3+leaOY3y qHWJjgAPHY7xTZDE9Q+K/C7hEOd/yLy3x/imMyJrw+Xz8CsuOYH5m/LrPAzVz2MXxu5OYC3z8ea 5zl+OILfydzf2uP7gpWzroCNLBLfhfBi07dnaOJxNFOAeUE8fZX+yTOlakMbmRi85D/RM+50OIu wELJwYs8HazsDmsPzB5m1NMQH+TNpf78/ZyzzvBLOKFTI4DodkreURr+7dKtEdKWcEbG4= X-Developer-Key: i=flavra@baylibre.com; a=openpgp; fpr=8657854F953BDCA31EC314E6EDF13B73CE94365F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In page addressing mode, the pixel values of a dirty rectangle must be sent to the display controller one page at a time. The range of pages corresponding to a given rectangle is being incorrectly calculated as if the Y value of the top left coordinate of the rectangle was 0. This can result in rectangle updates being displayed on wrong parts of the screen. Fix the above issue by consolidating the start page calculation in a single place at the beginning of the update_rect function, and using the calculated value for all addressing modes. Fixes: b0daaa5cfaa5 ("drm/ssd130x: Support page addressing mode") Signed-off-by: Francesco Lavra --- drivers/gpu/drm/solomon/ssd130x.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ss= d130x.c index 96cf39320137..33ceed86ed36 100644 --- a/drivers/gpu/drm/solomon/ssd130x.c +++ b/drivers/gpu/drm/solomon/ssd130x.c @@ -737,6 +737,7 @@ static int ssd130x_update_rect(struct ssd130x_device *s= sd130x, unsigned int height =3D drm_rect_height(rect); unsigned int line_length =3D DIV_ROUND_UP(width, 8); unsigned int page_height =3D SSD130X_PAGE_HEIGHT; + u8 page_start =3D ssd130x->page_offset + y / page_height; unsigned int pages =3D DIV_ROUND_UP(height, page_height); struct drm_device *drm =3D &ssd130x->drm; u32 array_idx =3D 0; @@ -774,14 +775,11 @@ static int ssd130x_update_rect(struct ssd130x_device = *ssd130x, */ =20 if (!ssd130x->page_address_mode) { - u8 page_start; - /* Set address range for horizontal addressing mode */ ret =3D ssd130x_set_col_range(ssd130x, ssd130x->col_offset + x, width); if (ret < 0) return ret; =20 - page_start =3D ssd130x->page_offset + y / page_height; ret =3D ssd130x_set_page_range(ssd130x, page_start, pages); if (ret < 0) return ret; @@ -813,7 +811,7 @@ static int ssd130x_update_rect(struct ssd130x_device *s= sd130x, */ if (ssd130x->page_address_mode) { ret =3D ssd130x_set_page_pos(ssd130x, - ssd130x->page_offset + i, + page_start + i, ssd130x->col_offset + x); if (ret < 0) return ret; --=20 2.39.5