From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj2-f8.google.com (mail-pj2-f8.google.com [74.125.227.136]) (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 0A689415F00 for ; Sat, 8 Aug 2026 13:07:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.136 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786194447; cv=none; b=C+nBTyfsBsahII2aPrYCmI1AOh3wFLLeWM+wgyUpd/t/gJ2gCE79neuHPN6vCjJVxeDrqWPIuAtuK4ohv9CHoEH3a4Lpjg7Sy/aG87EnKtCwB23nsE/7yXHhlUDUMsg46x3pXMqSj1CKDiX5tP/q4n6GrsfXWAPF8VuL++GIgZk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786194447; c=relaxed/simple; bh=JF1VrshOLJIpCGHfhuBKPN9sL6QGMmedrDFOC/XBzjg=; h=Date:Message-ID:From:To:Cc:Subject:In-Reply-To:References: MIME-Version:Content-Type; b=cmsxEQV3C68lXIR7QLYO+BR51Hk/0uiUu/3k2MRjzFS5KlUhfavg49wbuhiuVTNXlhMJ2dW0JK8XNA6xB3v9+iwkvdYEUCOWeHpMI4tb75RKI0IFSOfnOBo98yDRMz+FlYqLf1j6qt/xG/CgzWPkxPiTxeJZsiV5EaZFExppsco= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gng7h15w; arc=none smtp.client-ip=74.125.227.136 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gng7h15w" Received: by mail-pj2-f8.google.com with SMTP id 98e67ed59e1d1-39292c67dc6so149788a91.1 for ; Sat, 08 Aug 2026 06:07:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786194443; x=1786799243; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:subject:cc:to:from:message-id:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=izR+Nrw48bEezTRpqIz/ECOoUps8WA+iQCICJD/Q9lE=; b=gng7h15w7qqew4cq7audX4Eg7PV+ya/IzTA8CCk8HXjViSabdPYJSzrgU7vdgwZAiH R3b5uymr+8XX3bVgz3JTuPjNZfIwHFe06PqJlI7as7Ic1LKnFs230PkKSePzrcD8UgHC PY5XGBGT5NFp50ThLA41qPOB+iUD4CY7IqqNXGwtat7tVeeFr46LkbgMlHlUYr3gzq2p wf4o4UyEwF/xIVJ0DR0LvlkbTj4m9iv4xhN4mT3lr8W9+AWgVv8orepn8P0QTi3pZ2wG Jo4OdiHczTarIaLyk2BPRg4RRxLJb/H2a5QKuUHx90s+MSJXrh6NfXXPYrnKazH+PS9s BTMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786194443; x=1786799243; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:subject:cc:to:from:message-id:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=izR+Nrw48bEezTRpqIz/ECOoUps8WA+iQCICJD/Q9lE=; b=stwY+NrREdVXYkZYEgcig9aL59RNDS4bEt1rFFKHw5g8a+zXziOIdkA/BHwuQAkHVq 03WCDdNTsd1uEVJrKUUC2Rz0oPDRw2TcA/Rn8sFiIXkoPoBUm3hCqtVoJzVtJVzGDfKS GNZgADQc7+5pBTCWOpKm8oN7IU/JiqVOvF6SzgMRP+cCK7cdroP+MIzCswWR+jxRAzmm 0yerGGqfOlNZItHlzAX6UrjHOvloSefVwwr8OAwlyfnlsrqq9Ytnf6stR1Qg8S+NAKWU qaAc5Tl9WO1sGzjtG4DxvrSCxYFkuW+4+55jJxNA7X7lgWlq8zyC8Lg5/9aBu6btCQV0 WxwA== X-Forwarded-Encrypted: i=1; AHgh+RpPhSMYmxCQzozPxnuoqExXUuEKIMM8UEYg0f6nEdi63bvFw0fhp/HWVy4GlmQIJvi8lccIu37H30j/l+A=@vger.kernel.org X-Gm-Message-State: AOJu0Yzv9cESRvAv0mXs2Y9oCCnTlOH3i3q9RRFpDEcX/kF5QyaTewVm ziac+C+VDDwvSZXGyUf/W0An4uI1eZ/Q01FZP93MVMhlZ7nx8eMnqIkk X-Gm-Gg: AR+sD10D+5WNKFd1MYIJQd5vdcB0s7UVV1Hpk1eMl25/NIpB82Jkp5XGiVnBOpTnq6i LTp+4WHer/IW+toxx9ogfVTvER1Q1BVAckb9BjhLRQgQUFXkIl78X5grGRM2UdaZi1M5m2EvbUI /I9kQ9ds4UUmaXKMK7kujmZ5jc19vsMCi9VtDlBSBKCAm+tux+n9h4QNwcMW6WdGu7rNKVsYEZ3 UtVCqlcyfWK3HVUcIPC0eAcrp7SJDVGyEIY0/einebwVUPVP5lcOKH7b6pfi6SJtVazGA96y9bP O0XAzcwzTTE/zWRAa1hfIY2r1Xr6QACzwdTQh/5PtKWqPb9nek5SRrYR+Q87Sm3VAd011Z3fIVu ot2LNE+ytuy5lSwWkWNTn0WE/7wHJ6rYhKgt57FPrOxPVAC0HWqgwfKwNmSq6+FdNkcoEG5mels v5RU6V0XekY4xjc5NneRtehZx6soNE2lfkp0f8lPA= X-Received: by 2002:a17:90b:1811:b0:38e:c7b0:84ad with SMTP id 98e67ed59e1d1-3903bb0ab77mr26378580a91.0.1786194443454; Sat, 08 Aug 2026 06:07:23 -0700 (PDT) Received: from localhost ([2403:2c80:17:1e::20db]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3925fc6c13asm6117441a91.2.2026.08.08.06.07.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 06:07:22 -0700 (PDT) Date: Sat, 08 Aug 2026 21:07:20 +0800 Message-ID: From: Cody Kang To: Philipp Zabel Cc: David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Vinod Koul , Neil Armstrong , Haylen Chu , Michael Turquette , Stephen Boyd , Brian Masney , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , dri-devel@lists.freedesktop.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-clk@vger.kernel.org Subject: Re: [PATCH RESEND 08/17] drm/spacemit: add Saturn DPU core types, cmdlist and display MMU In-Reply-To: <3d4204dbd1c73d50193144d1944d8237c625f6e3.camel@pengutronix.de> References: <20260725-k3-display-v1-0-6de34d80e86c@gmail.com> <20260725-k3-display-v1-8-6de34d80e86c@gmail.com> <3d4204dbd1c73d50193144d1944d8237c625f6e3.camel@pengutronix.de> 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: 8bit On Mon, 27 Jul 2026 09:35:35 +0200, Philipp Zabel wrote: > On Sa, 2026-07-25 at 00:51 -0400, Cody Kang via B4 Relay wrote: > > From: Cody Kang > > > > Register programming of the Saturn DPU is batched: the driver builds > > per-module register lists in memory and the hardware command-list > > engine replays them at frame boundaries, while scanout buffers are > > mapped through the DPU's private address translation unit (DMMU) > > rather than scanned out by physical address. > > > > Add the shared driver types, the MMIO field accessors, the trace > > events, the command-list builder and the DMMU table code. Some DPU > > configuration registers are write-only, so a read-modify-write would > > corrupt neighbouring fields; byte- and halfword-aligned fields are > > therefore written at their native width instead. > > > > Signed-off-by: Cody Kang > > --- > > drivers/gpu/drm/spacemit/dpu/dpu_saturn.h | 35 +++ > > drivers/gpu/drm/spacemit/dpu/dpu_trace.h | 350 ++++++++++++++++++++++++++++ > > drivers/gpu/drm/spacemit/spacemit_cmdlist.c | 304 ++++++++++++++++++++++++ > > drivers/gpu/drm/spacemit/spacemit_cmdlist.h | 146 ++++++++++++ > > drivers/gpu/drm/spacemit/spacemit_crtc.h | 259 ++++++++++++++++++++ > > drivers/gpu/drm/spacemit/spacemit_dmmu.c | 103 ++++++++ > > drivers/gpu/drm/spacemit/spacemit_dmmu.h | 40 ++++ > > drivers/gpu/drm/spacemit/spacemit_dpu_reg.h | 108 +++++++++ > > drivers/gpu/drm/spacemit/spacemit_drm.h | 68 ++++++ > > 9 files changed, 1413 insertions(+) > > > [...] > > diff --git a/drivers/gpu/drm/spacemit/spacemit_cmdlist.h b/drivers/gpu/drm/spacemit/spacemit_cmdlist.h > > new file mode 100644 > > index 000000000000..d5acdbeb3b0e > > --- /dev/null > > +++ b/drivers/gpu/drm/spacemit/spacemit_cmdlist.h > > @@ -0,0 +1,146 @@ > [...] > > +struct spacemit_crtc { > > + struct device *dev; > > + struct drm_crtc crtc; > > + const struct dpu_core_ops *core; > > + struct dpu_mmu_tbl mmu_tbl; > > + int dev_id; > > + int irq_online; > > + struct timer_list cfg_rdy_timer; > > + > > + bool is_1st_f; > > + bool first_modeset; > > + struct dpu_clk_context clk_ctx; > > + u32 aclk; > > + u32 out_format; > > + > > + struct reset_control *mclk_reset; > > + struct reset_control *lcd_reset; > > + struct reset_control *esc_reset; > > + struct reset_control *aclk_reset; > > + struct reset_control *dsc_reset; > > Why are these duplicated from spacemit_drm_private? > dpu_pm_suspend/resume() in patch 10 have access to priv. You are right, they are plain 1:1 copies. Will drop the five pointers from struct spacemit_crtc in v2; the reset sequencing in spacemit_crtc.c and the suspend/resume paths will take them from spacemit_drm_private instead. Thanks for the review. Cody