Re: [PATCH RESEND 08/17] drm/spacemit: add Saturn DPU core types, cmdlist and display MMU
Cody Kang <[email protected]> Sat, 08 Aug 2026 21:07:20 +0800
| Newsgroups | org.kernel.vger.linux-clk,dev.linux.lists.spacemit,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-phy,org.infradead.lists.linux-riscv,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> > > > > 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 <[email protected]> > > --- > > 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