On 24-10-22 18:33:18, Johan Hovold wrote: > On Thu, Oct 17, 2024 at 07:01:01PM +0300, Abel Vesa wrote: > > Currently, the ucsi glink client is only reporting orientation normal or > > reversed, based on the level of the gpio. On unplug, it defaults to > > orientation normal instead of none. This confuses some of the orientation > > switches drivers as they might rely on orientation none in order to > > configure the HW in some sort of safe mode. > > Can you be more specific here (e.g. so that reviewers and backporter can > determine whether this is a fix that should be backported to stable)? I didn't add a fixes tag here on purpose as I see this as an improvement. Nothing wrong with just setting the orientation to normal when cable is unplugged. But makes more sense to set it to none. > > Which driver is confused? How does this manifest itself? > > Is this an issue today? Or something you need for future work, etc? None of the upstream orientation switches drivers currently need the orientation as none on unplug. The new Parade PS8830 driver that is on the list for review is indeed helped by this changed. But we can circumvent it there as well, if necessary. My reason for this change was basically like: Since we can use the connector status flags to figure out if the cable is plugged, we can take this a step further and propagate orientation none on unplug. Therefore, improvement rather than fix. Anyway, if you still think that there should be a Fixes tag, please let me know and I'll add it. > > > So propagate the orientation > > none instead when the connector status flags says cable is disconnected. > > > > Signed-off-by: Abel Vesa <abel.vesa@xxxxxxxxxx> > > --- > > drivers/usb/typec/ucsi/ucsi_glink.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/drivers/usb/typec/ucsi/ucsi_glink.c b/drivers/usb/typec/ucsi/ucsi_glink.c > > index 3e4d88ab338e50d4265df15fc960907c36675282..b3bc02e4b0427a894c5b5df470af47433145243e 100644 > > --- a/drivers/usb/typec/ucsi/ucsi_glink.c > > +++ b/drivers/usb/typec/ucsi/ucsi_glink.c > > @@ -185,6 +185,11 @@ static void pmic_glink_ucsi_connector_status(struct ucsi_connector *con) > > struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(con->ucsi); > > int orientation; > > > > + if (!(con->status.flags & UCSI_CONSTAT_CONNECTED)) { > > + typec_set_orientation(con->port, TYPEC_ORIENTATION_NONE); > > + return; > > + } > > + > > if (con->num >= PMIC_GLINK_MAX_PORTS || > > !ucsi->port_orientation[con->num - 1]) > > return; > > Johan