public inbox for drm-ai-reviews@public-inbox.freedesktop.org
 help / color / mirror / Atom feed
From: Icenowy Zheng <zhengxingda@iscas.ac.cn>
To: Joey Lu <a0987203069@gmail.com>,
	maarten.lankhorst@linux.intel.com, mripard@kernel.org,
	tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch,
		robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org
Cc: ychuang3@nuvoton.com, schung@nuvoton.com, yclu4@nuvoton.com,
	dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] drm/verisilicon: add support for Nuvoton MA35D1 DCUltra Lite display controller
Date: Tue, 12 May 2026 21:12:28 +0800	[thread overview]
Message-ID: <76a9e9b676509e85484a1eb31c723b46c7e21a19.camel@iscas.ac.cn> (raw)
In-Reply-To: <1d04dd6d-f245-4b83-96b0-c5491fad8093@gmail.com>

在 2026-05-12二的 18:59 +0800,Joey Lu写道:
> 
> On 5/12/2026 6:01 PM, Icenowy Zheng wrote:
> > 在 2026-05-12二的 17:06 +0800,Joey Lu写道:
> > 
> > ======= 8< =============
> > > > > > > diff --git a/drivers/gpu/drm/verisilicon/vs_bridge.c
> > > > > > > b/drivers/gpu/drm/verisilicon/vs_bridge.c
> > > > > > > index 7a93049368db..225af322de32 100644
> > > > > > > --- a/drivers/gpu/drm/verisilicon/vs_bridge.c
> > > > > > > +++ b/drivers/gpu/drm/verisilicon/vs_bridge.c
> > > > > > > @@ -164,13 +164,16 @@ static void
> > > > > > > vs_bridge_enable_common(struct
> > > > > > > vs_crtc *crtc,
> > > > > > >     			VSDC_DISP_PANEL_CONFIG_CLK_EN);
> > > > > > >     	regmap_set_bits(dc->regs,
> > > > > > > VSDC_DISP_PANEL_CONFIG(output),
> > > > > > >     			VSDC_DISP_PANEL_CONFIG_RUNNING);
> > > > > > > -	regmap_clear_bits(dc->regs,
> > > > > > > VSDC_DISP_PANEL_START,
> > > > > > > -			
> > > > > > > VSDC_DISP_PANEL_START_MULTI_DISP_SYNC);
> > > > > > > -	regmap_set_bits(dc->regs, VSDC_DISP_PANEL_START,
> > > > > > > -
> > > > > > > 			VSDC_DISP_PANEL_START_RUNNING(ou
> > > > > > > tput));
> > > > > > >     
> > > > > > > -	regmap_set_bits(dc->regs,
> > > > > > > VSDC_DISP_PANEL_CONFIG_EX(crtc-
> > > > > > > > id),
> > > > > > > -
> > > > > > > 			VSDC_DISP_PANEL_CONFIG_EX_COMMIT);
> > > > > > > +	if (dc->info->has_config_ex) {
> > > > > > > +		regmap_clear_bits(dc->regs,
> > > > > > > VSDC_DISP_PANEL_START,
> > > > > > > +				
> > > > > > > VSDC_DISP_PANEL_START_MULTI_DISP_SYNC);
> > > > > > > +		regmap_set_bits(dc->regs,
> > > > > > > VSDC_DISP_PANEL_START,
> > > > > > > +				VSDC_DISP_PANEL_START_RU
> > > > > > > NNIN
> > > > > > > G(ou
> > > > > > > tput
> > > > > > > ));
> > > > > > > +
> > > > > > > +		regmap_set_bits(dc->regs,
> > > > > > > VSDC_DISP_PANEL_CONFIG_EX(crtc->id),
> > > > > > > +				VSDC_DISP_PANEL_CONFIG_E
> > > > > > > X_CO
> > > > > > > MMIT
> > > > > > > );
> > > > > > Should the commit operation happen on DC8000/DCUltraLite
> > > > > > too?
> > > > > > (By
> > > > > > writing to DcregFrameBufferConfig0.VALID).
> > > > > > 
> > > > > > Many registers written has "Note: This field is double
> > > > > > buffered" in
> > > > > > the
> > > > > > DCUltraLite documentation.
> > > > > > 
> > > > > > I suggest create a static function for commit -- write to
> > > > > > the
> > > > > > corresponding commit bit on DC8200, and write to
> > > > > > DcregFrameBufferConfig0.VALID on DC8000/DCUltraLite.
> > > > > [a] There is no commit operation for DCUltra Lite.
> > > > > I'll not add a `VSDC_FB_CONFIG_VALID` macro. VALID (BIT(3))
> > > > > is a
> > > > > hardware-managed double-buffer status bit: hardware writes
> > > > > 1=PENDING
> > > > > when a new register set is ready and clears to 0=WORKING
> > > > > after
> > > > > the
> > > > > VBLANK copy. Software must never write it, and there is no
> > > > > polling
> > > > > use
> > > > It seems to be writable and controls whether register buffering
> > > > is
> > > > enabled, see [1].
> > > > 
> > > > The description of this bit in MA35D1 TRM says "This ensures a
> > > > frame
> > > > will always start with a valid working set if this register is
> > > > programmed last, which reduces the need for SW to wait for the
> > > > start of
> > > > a VBLANK signal in order to ensure all states are loaded before
> > > > the
> > > > next VBLANK", which indicates some kind of "committing write",
> > > > although
> > > > the code at [1] seems to indicate that double buffering is only
> > > > enabled
> > > > when bit is cleared.
> > > > 
> > > > Anyway this bit should be programmable, and "Software must
> > > > never
> > > > write
> > > > it" contradicts with the MA35D1 TRM.
> > > > 
> > > > Thanks,
> > > > Icenowy
> > > > 
> > > > [1]
> > > > https://github.com/rockos-riscv/rockos-kernel/blob/rockos-v6.6.y/drivers/gpu/drm/eswin/es_dc_hw.c#L993
> > > Thank you for the correction. I'll add
> > > `#define VSDC_FB_CONFIG_VALID BIT(3)` to vs_primary_plane_regs.h
> > > and
> > > write it in `vs_primary_plane_commit()` for non-config_ex
> > > variants.
> > > > > case in the driver that requires a named constant. For non-
> > > > > config_ex
> > > > > variants, `vs_primary_plane_commit()` performs no commit
> > > > > operation —
> > > > > `VSDC_FB_CONFIG_ENABLE` (OUTPUT, BIT(0)) is set in
> > > > > `vs_crtc_atomic_enable()` and `VSDC_FB_CONFIG_RESET` (BIT(4))
> > > > > is
> > > > > set/cleared in the bridge enable/disable paths.
> > Well according to the driver code for DC8000 from Eswin, and the
> > bit
> > named "VALID", maybe it should be cleared before programming the
> > registers, and set after programming registers, to make the process
> > of
> > programming registers atomic from the perspective of the display
> > controller.
> > 
> > Anyway this should require testing on real hardware to verify.
> > 
> > By the way, I see multiple peripheral drivers for MA35D1 get
> > applied in
> > the torvalds tree, but the device tree is still only a skeleton;
> > when
> > will the device tree be updated?
> > 
> > Thanks,
> > Icenowy
> 
> Thanks for pointing this out. I’ll perform tests on real hardware
> since 
> I haven’t used this bit before.
> 
> As for the device tree, we plan to update it comprehensively after 
> completing several major IPs, with the goal of releasing the update 
> later this year.

Well I bought a MA35D1 board (MYIR MYB-LMA35 + RGB LCD) earlier this
year (and this is where I got the MA35D1 identification register
values). Hope I can have a chance to test this driver by myself.

As MMC, Ethernet and USB support is all applied, maybe it's already
worthy to update the device tree ;-)

Thanks,
Icenowy

> 
> > > > ========= 8< ==========
> > > > 


  reply	other threads:[~2026-05-12 13:12 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-11  7:51 [PATCH 0/2] drm/verisilicon: add Nuvoton MA35D1 DCUltra Lite support Joey Lu
2026-05-11  7:51 ` [PATCH 1/2] dt-bindings: display: verisilicon, dc: generalize for DCUltra Lite variant Joey Lu
2026-05-11  9:49   ` [PATCH 1/2] dt-bindings: display: verisilicon,dc: " Rob Herring (Arm)
2026-05-16  5:45     ` Claude review: " Claude Code Review Bot
2026-05-11  9:59   ` Icenowy Zheng
2026-05-12  8:02     ` [PATCH 1/2] dt-bindings: display: verisilicon, dc: " Joey Lu
2026-05-11  7:51 ` [PATCH 2/2] drm/verisilicon: add support for Nuvoton MA35D1 DCUltra Lite display controller Joey Lu
2026-05-11  9:47   ` Icenowy Zheng
2026-05-12  7:45     ` Joey Lu
2026-05-12  8:11       ` Icenowy Zheng
2026-05-12  9:06         ` Joey Lu
2026-05-12 10:01           ` Icenowy Zheng
2026-05-12 10:59             ` Joey Lu
2026-05-12 13:12               ` Icenowy Zheng [this message]
2026-05-15  6:25                 ` Joey Lu
2026-05-15  8:38                   ` Icenowy Zheng
2026-05-16  5:45     ` Claude review: " Claude Code Review Bot
2026-05-12  8:24   ` Thomas Zimmermann
2026-05-12  9:10     ` Joey Lu
2026-05-16  5:45 ` Claude review: drm/verisilicon: add Nuvoton MA35D1 DCUltra Lite support Claude Code Review Bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=76a9e9b676509e85484a1eb31c723b46c7e21a19.camel@iscas.ac.cn \
    --to=zhengxingda@iscas.ac.cn \
    --cc=a0987203069@gmail.com \
    --cc=airlied@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=robh@kernel.org \
    --cc=schung@nuvoton.com \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    --cc=ychuang3@nuvoton.com \
    --cc=yclu4@nuvoton.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox