From nobody Sun Feb 8 22:01:42 2026 Received: from exactco.de (exactco.de [176.9.10.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9F0C5279DA2 for ; Tue, 2 Dec 2025 16:06:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=176.9.10.151 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764691589; cv=none; b=lWMPZEzc1jn0CRlyT2XZhpiPg12faTsT+/xYir4uHI59BmoZ045kenpptFgfT41MtaDsQcQRz6oFQamZpQTN29W58p/2/UXUFGC47WOYFjoV53I9HbdswLz22ieYNE8Q/pAXWYqdymh3B8WV48xpZhOMiZVrW5pjaP9TGjTE04U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764691589; c=relaxed/simple; bh=NylR6NdgN7X38UX6Nq8fgDhZmOSEAMVaLUwu0EOs60o=; h=Date:Message-Id:To:Cc:Subject:From:Mime-Version:Content-Type; b=OCqCVhGs6ds7oQZqHq9qJyecX9jtw7ZyKwENwlmebYe2OInLH045jXSDojFfbA/vMD11qxE9EHqZmM2H+YjIuE7wPlWTBVQNqBRMWD6zZcDMHtajA7tUtzO7o1p6o6hD4LfueJEyspi/2KW061qizrS26r5gwiX/ebrP9A7elbE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=exactco.de; spf=pass smtp.mailfrom=exactco.de; dkim=pass (2048-bit key) header.d=exactco.de header.i=@exactco.de header.b=mOu2Nx9R; arc=none smtp.client-ip=176.9.10.151 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=exactco.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=exactco.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=exactco.de header.i=@exactco.de header.b="mOu2Nx9R" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=exactco.de; s=x; h=Content-Transfer-Encoding:Content-Type:Mime-Version:From:Subject:Cc:To :Message-Id:Date:Sender:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=1b9beKAMUvt3Y0X2f/GaVweFtITJA+mqgChFfuxKx58=; b=m Ou2Nx9RLJs9ePen15l/wdIBHvG/kLhQ7zjiGwhbyTFinXRDHmo2kmPa3EmmSEYQ0MWwu1KvmIlSjf aDAtwWkpE7XSR2AiuEIkE3eNr6B4+F5G2OPXsuhuvCZ72UmbIinuq4EfDGyN0nv6eD1YANzjQp7sA HBCU2c3UNPflfChBmyo8KTroKLCIJM8NOanw037s2qxrHyoNbC88RTi22Mxy5Fq/55fvlKtyrDfom uD4Ks/WetbDIFuqVSDjLECwLRWUEz4gdNDRLYNvyft9KWhLHPu1azATTA0vdbnIvCPlNkr2hkieuW j1EiE7pOHhEhblzXrQqDSS4BRgvSDZySA==; Date: Tue, 02 Dec 2025 17:06:26 +0100 (CET) Message-Id: <20251202.170626.2134482663677806825.rene@exactco.de> To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: Dave Airlie , Thomas Zimmermann Subject: [PATCH] drm/ast: Fix big-endian support From: =?iso-8859-1?Q?Ren=E9?= Rebe X-Mailer: Mew version 6.10 on Emacs 30.2 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The Aspeed ast drm driver has the frame-buffer RGBX swapped on big-endian RISC systems. Fix by enabling byte swapping for any __BIG_ENDIAN config. Fixes: 12fec1405dd5 ("drm: Initial KMS driver for AST (ASpeed Technologies)= 2000 series (v2)") Signed-off-by: Ren=C3=A9 Rebe --- Tested on Oracle T4-1 running sparc64 T2/Linux. --- drivers/gpu/drm/ast/ast_mode.c | 14 ++++++++++++++ drivers/gpu/drm/ast/ast_reg.h | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c index 30b011ed0a05..155ae35470d9 100644 --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@ -708,6 +708,20 @@ static void ast_crtc_helper_mode_set_nofb(struct drm_c= rtc *crtc) ast_set_dclk_reg(ast, adjusted_mode, vmode); ast_set_crtthd_reg(ast); ast_set_sync_reg(ast, adjusted_mode, vmode); + +#ifdef __BIG_ENDIAN + /* Big-endian byte-swapping */ + switch (ast_crtc_state->format->format) { + case DRM_FORMAT_RGB565: + ast_set_index_reg_mask(ast, AST_IO_VGACRI, AST_IO_VGACRA2, 0x3f, 0x40); + break; + case DRM_FORMAT_XRGB8888: + ast_set_index_reg_mask(ast, AST_IO_VGACRI, AST_IO_VGACRA2, 0x3f, 0x80); + break; + default: + break; + } +#endif } =20 static int ast_crtc_helper_atomic_check(struct drm_crtc *crtc, diff --git a/drivers/gpu/drm/ast/ast_reg.h b/drivers/gpu/drm/ast/ast_reg.h index 30578e3b07e4..5c8c0fd2e229 100644 --- a/drivers/gpu/drm/ast/ast_reg.h +++ b/drivers/gpu/drm/ast/ast_reg.h @@ -75,4 +75,10 @@ #define AST_IO_VGAIR1_R (0x5A) #define AST_IO_VGAIR1_VREFRESH BIT(3) =20 +/* + * PCI Control + */ + +#define AST_IO_VGACRA2 (0xA2) /* PCI control & big-endian */ + #endif --=20 2.52.0 --=20 Ren=C3=A9 Rebe, ExactCODE GmbH, Berlin, Germany https://exactco.de =E2=80=A2 https://t2linux.com =E2=80=A2 https://patreon.= com/renerebe