Re: [PATCH v2] drm/bridge: ps8640: propagate AUX transfer register errors

From: Doug Anderson

Date: Wed Jul 29 2026 - 21:50:59 EST


Hi,

On Mon, Jul 27, 2026 at 4:40 AM Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> wrote:
>
> On Thu, 23 Jul 2026, Pengpeng Hou <pengpeng@xxxxxxxxxxx> wrote:
> > ps8640_aux_transfer_msg() programs the AUX address registers, starts the
> > AUX transfer, waits for SWAUX_SEND to clear, and reads the AUX status
> > register. Several of those regmap operations have return values, but the
> > function only checks a stale ret after the status read.
> >
> > Propagate failures from the address write, transfer start, completion
> > poll, and status read. This avoids returning a transfer length when the
> > bridge register transaction or AUX completion wait failed.
> >
> > Fixes: 13afcdd7277e ("drm/bridge: parade-ps8640: Add support for AUX channel")
> > Signed-off-by: Pengpeng Hou <pengpeng@xxxxxxxxxxx>
> > ---
> > Changes since v1: https://lore.kernel.org/all/20260623060635.16064-1-pengpeng@xxxxxxxxxxx/
> > - include the AUX address and length in the address-write diagnostic
> > - describe poll failures without assuming that every error is a timeout
> > - add the Fixes tag suggested by Doug
> > - rebase onto the current drm-misc-next tree
> >
> > drivers/gpu/drm/bridge/parade-ps8640.c | 27 +++++++++++++++++++++------
> > 1 file changed, 21 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c
> > index 96332721cb69..56b48f8feab6 100644
> > --- a/drivers/gpu/drm/bridge/parade-ps8640.c
> > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c
> > @@ -257,8 +257,14 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux,
> > addr_len[PAGE0_SWAUX_LENGTH - base] = (len == 0) ? SWAUX_NO_PAYLOAD :
> > ((len - 1) & SWAUX_LENGTH_MASK);
> >
> > - regmap_bulk_write(map, PAGE0_SWAUX_ADDR_7_0, addr_len,
> > - ARRAY_SIZE(addr_len));
> > + ret = regmap_bulk_write(map, PAGE0_SWAUX_ADDR_7_0, addr_len,
> > + ARRAY_SIZE(addr_len));
> > + if (ret) {
> > + DRM_DEV_ERROR(dev,
>
> DRM_DEV_ERROR() is deprecated in favour of drm_err() or dev_err().

Good point. I'm inclined to land this anyway, though, since this is
nominally a bugfix and it matches the error printing in the rest of
the function. Any objections? It would be a nice future cleanup to fix
the error printing in this driver overall to use the non-deprecated
functions...

-Doug