usb: typec: altmodes/displayport: Make dp_altmode_notify() more generic
Make dp_altmode_notify() handle the dp->data.conf == 0 case too, rather then having separate code-paths for this in various places which call it. Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Tested-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Lyude Paul <lyude@redhat.com> Link: https://lore.kernel.org/r/20210817215201.795062-8-hdegoede@redhat.com
This commit is contained in:
Родитель
72ad49682d
Коммит
fc27e04630
|
@ -66,10 +66,17 @@ struct dp_altmode {
|
|||
|
||||
static int dp_altmode_notify(struct dp_altmode *dp)
|
||||
{
|
||||
u8 state = get_count_order(DP_CONF_GET_PIN_ASSIGN(dp->data.conf));
|
||||
unsigned long conf;
|
||||
u8 state;
|
||||
|
||||
return typec_altmode_notify(dp->alt, TYPEC_MODAL_STATE(state),
|
||||
&dp->data);
|
||||
if (dp->data.conf) {
|
||||
state = get_count_order(DP_CONF_GET_PIN_ASSIGN(dp->data.conf));
|
||||
conf = TYPEC_MODAL_STATE(state);
|
||||
} else {
|
||||
conf = TYPEC_STATE_USB;
|
||||
}
|
||||
|
||||
return typec_altmode_notify(dp->alt, conf, &dp->data);
|
||||
}
|
||||
|
||||
static int dp_altmode_configure(struct dp_altmode *dp, u8 con)
|
||||
|
@ -137,21 +144,10 @@ static int dp_altmode_status_update(struct dp_altmode *dp)
|
|||
|
||||
static int dp_altmode_configured(struct dp_altmode *dp)
|
||||
{
|
||||
int ret;
|
||||
|
||||
sysfs_notify(&dp->alt->dev.kobj, "displayport", "configuration");
|
||||
|
||||
if (!dp->data.conf)
|
||||
return typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
|
||||
&dp->data);
|
||||
|
||||
ret = dp_altmode_notify(dp);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
sysfs_notify(&dp->alt->dev.kobj, "displayport", "pin_assignment");
|
||||
|
||||
return 0;
|
||||
return dp_altmode_notify(dp);
|
||||
}
|
||||
|
||||
static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf)
|
||||
|
@ -172,13 +168,8 @@ static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf)
|
|||
}
|
||||
|
||||
ret = typec_altmode_vdm(dp->alt, header, &conf, 2);
|
||||
if (ret) {
|
||||
if (DP_CONF_GET_PIN_ASSIGN(dp->data.conf))
|
||||
dp_altmode_notify(dp);
|
||||
else
|
||||
typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
|
||||
&dp->data);
|
||||
}
|
||||
if (ret)
|
||||
dp_altmode_notify(dp);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче