RE: [PATCH] drm/bridge: ite-it6263: Add basic resume support
From: Biju Das
Date: Thu Apr 16 2026 - 04:31:24 EST
Hi Liu Ying,
Thanks for the feedback.
> -----Original Message-----
> From: Liu Ying <victor.liu@xxxxxxx>
> Sent: 16 April 2026 06:53
> Subject: Re: [PATCH] drm/bridge: ite-it6263: Add basic resume support
>
> Hi Biju,
>
> On Wed, Apr 15, 2026 at 12:39:52PM +0100, Biju wrote:
> > [You don't often get email from biju.das.au@xxxxxxxxx. Learn why this
> > is important at https://aka.ms/LearnAboutSenderIdentification ]
> >
> > From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> >
> > RZ/G3L SMARC EVK has a single-link LVDS connected to an ITE IT6263 chip.
> > On the RZ/G3L SMARC EVK using PSCI, s2ram powers down the ITE IT6263 chip.
> > Add a minimal system resume callback to restore the bridge after s2ram.
> > The it6263_resume() callback re-establishes the LVDS I2C address and
> > reconfigures the LVDS output. Wire it into a dev_pm_ops struct using
> > SET_SYSTEM_SLEEP_PM_OPS with no suspend handler, and attach it to the
> > driver via pm_sleep_ptr().
>
> drm_mode_config_helper_{suspend,resume} called by a display controller driver's system PM callbacks
> should be able to kind of provide system PM for this bridge through this bridge driver's
> atomic_{disable,enable} callbacks. To do this, regulator enablement, GPIO reset control and bridge
> initialization need to be moved from probe to atomic_enable, plus regulator disablement needs to be
> added to atomic_disable.
> The bridge initialization includes it6263_lvds_set_i2c_addr(),
> it6263_lvds_config() and it6263_hdmi_config(). Make sense?
OK, will send v2 with these changes.
Cheers,
Biju
>
> >
> > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> > ---
> > drivers/gpu/drm/bridge/ite-it6263.c | 19 +++++++++++++++++++
> > 1 file changed, 19 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/bridge/ite-it6263.c
> > b/drivers/gpu/drm/bridge/ite-it6263.c
> > index 4f3ebb7af4d4..9727ebef48e8 100644
> > --- a/drivers/gpu/drm/bridge/ite-it6263.c
> > +++ b/drivers/gpu/drm/bridge/ite-it6263.c
> > @@ -906,6 +906,24 @@ static int it6263_probe(struct i2c_client *client)
> > return devm_drm_bridge_add(dev, &it->bridge); }
> >
> > +static int it6263_resume(struct device *dev) {
> > + struct it6263 *it = dev_get_drvdata(dev);
> > + int ret;
> > +
> > + ret = it6263_lvds_set_i2c_addr(it);
> > + if (ret)
> > + return ret;
> > +
> > + it6263_lvds_config(it);
> > +
> > + return 0;
> > +}
> > +
> > +static const struct dev_pm_ops it6263_pm_ops = {
> > + SET_SYSTEM_SLEEP_PM_OPS(NULL, it6263_resume) };
> > +
> > static const struct of_device_id it6263_of_match[] = {
> > { .compatible = "ite,it6263", },
> > { }
> > @@ -922,6 +940,7 @@ static struct i2c_driver it6263_driver = {
> > .probe = it6263_probe,
> > .driver = {
> > .name = "it6263",
> > + .pm = pm_sleep_ptr(&it6263_pm_ops),
> > .of_match_table = it6263_of_match,
> > },
> > .id_table = it6263_i2c_ids,
> > --
> > 2.43.0
> >
>
> --
> Regards,
> Liu Ying