Message ID | 20220930042506.2529522-1-jason.yen@paradetech.corp-partner.google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] drm/bridge: ps8640: Add software to support aux defer | expand |
Hi, On Thu, Sep 29, 2022 at 9:25 PM Jason Yen <jason.yen@paradetech.corp-partner.google.com> wrote: > > This chip can not handle aux defer if the host directly program > its aux registers to access edid/dpcd. So we need let software > to handle the aux defer situation. > > Signed-off-by: Jason Yen <jason.yen@paradetech.corp-partner.google.com> > --- > > Changes in v2: > - Add aux defer handler > - Remove incorrect statements > > drivers/gpu/drm/bridge/parade-ps8640.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c > index 31e88cb39f8a..76ada237096d 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > @@ -286,7 +286,6 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, > } > > switch (data & SWAUX_STATUS_MASK) { > - /* Ignore the DEFER cases as they are already handled in hardware */ > case SWAUX_STATUS_NACK: > case SWAUX_STATUS_I2C_NACK: > /* > @@ -303,6 +302,14 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, > case SWAUX_STATUS_ACKM: > len = data & SWAUX_M_MASK; > break; > + case SWAUX_STATUS_DEFER: > + case SWAUX_STATUS_I2C_DEFER: > + if (is_native_aux) > + msg->reply |= DP_AUX_NATIVE_REPLY_DEFER; > + else > + msg->reply |= DP_AUX_I2C_REPLY_DEFER; > + len = data & SWAUX_M_MASK; > + break; This seems fine to me now. There is nothing too controversial here but I'll still give this a few days on the list for anyone else to speak up. I'll plan to land it midway through next week unless anything comes up. Reviewed-by: Douglas Anderson <dianders@chromium.org>
Hi, On Fri, Sep 30, 2022 at 7:20 AM Doug Anderson <dianders@chromium.org> wrote: > > Hi, > > On Thu, Sep 29, 2022 at 9:25 PM Jason Yen > <jason.yen@paradetech.corp-partner.google.com> wrote: > > > > This chip can not handle aux defer if the host directly program > > its aux registers to access edid/dpcd. So we need let software > > to handle the aux defer situation. > > > > Signed-off-by: Jason Yen <jason.yen@paradetech.corp-partner.google.com> > > --- > > > > Changes in v2: > > - Add aux defer handler > > - Remove incorrect statements > > > > drivers/gpu/drm/bridge/parade-ps8640.c | 9 ++++++++- > > 1 file changed, 8 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c > > index 31e88cb39f8a..76ada237096d 100644 > > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > > @@ -286,7 +286,6 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, > > } > > > > switch (data & SWAUX_STATUS_MASK) { > > - /* Ignore the DEFER cases as they are already handled in hardware */ > > case SWAUX_STATUS_NACK: > > case SWAUX_STATUS_I2C_NACK: > > /* > > @@ -303,6 +302,14 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, > > case SWAUX_STATUS_ACKM: > > len = data & SWAUX_M_MASK; > > break; > > + case SWAUX_STATUS_DEFER: > > + case SWAUX_STATUS_I2C_DEFER: > > + if (is_native_aux) > > + msg->reply |= DP_AUX_NATIVE_REPLY_DEFER; > > + else > > + msg->reply |= DP_AUX_I2C_REPLY_DEFER; > > + len = data & SWAUX_M_MASK; > > + break; > > This seems fine to me now. There is nothing too controversial here but > I'll still give this a few days on the list for anyone else to speak > up. I'll plan to land it midway through next week unless anything > comes up. > > Reviewed-by: Douglas Anderson <dianders@chromium.org> As promised, pushed to drm-misc-next: 562d2dd87028 drm/bridge: ps8640: Add software to support aux defer
diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c index 31e88cb39f8a..76ada237096d 100644 --- a/drivers/gpu/drm/bridge/parade-ps8640.c +++ b/drivers/gpu/drm/bridge/parade-ps8640.c @@ -286,7 +286,6 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, } switch (data & SWAUX_STATUS_MASK) { - /* Ignore the DEFER cases as they are already handled in hardware */ case SWAUX_STATUS_NACK: case SWAUX_STATUS_I2C_NACK: /* @@ -303,6 +302,14 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, case SWAUX_STATUS_ACKM: len = data & SWAUX_M_MASK; break; + case SWAUX_STATUS_DEFER: + case SWAUX_STATUS_I2C_DEFER: + if (is_native_aux) + msg->reply |= DP_AUX_NATIVE_REPLY_DEFER; + else + msg->reply |= DP_AUX_I2C_REPLY_DEFER; + len = data & SWAUX_M_MASK; + break; case SWAUX_STATUS_INVALID: return -EOPNOTSUPP; case SWAUX_STATUS_TIMEOUT:
This chip can not handle aux defer if the host directly program its aux registers to access edid/dpcd. So we need let software to handle the aux defer situation. Signed-off-by: Jason Yen <jason.yen@paradetech.corp-partner.google.com> --- Changes in v2: - Add aux defer handler - Remove incorrect statements drivers/gpu/drm/bridge/parade-ps8640.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)