Re: [PATCH] usb: typec: ucsi: set USB data role when partner type is power cable/ufp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Mar 16, 2020 at 01:35:49PM -0700, Mayank Rana wrote:
> Currently UCSI framework doesn't update USB data role when partner type
> is reported as power cable or power cable with ufp connected. This
> results into no USB host mode functionality. This is valid usecase where
> user wants to use legacy type c power cable with type a female connector
> to attach different USB devices like mouse, thumb drive etc. Hence update
> USB data role as host when partner type is reported as power cable or
> power cable with ufp connected.
> 
> Signed-off-by: Mayank Rana <mrana@xxxxxxxxxxxxxx>

I've now applied this to my ucsi branch:
https://github.com/krohei/linux/commit/fc5a9939c9b8bded598c39339992be470563604f

I will send it to Greg together with the other changes I have for this
driver next week.

> ---
>  drivers/usb/typec/ucsi/ucsi.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c
> index d5a6aac..ce62732 100644
> --- a/drivers/usb/typec/ucsi/ucsi.c
> +++ b/drivers/usb/typec/ucsi/ucsi.c
> @@ -558,6 +558,8 @@ static void ucsi_partner_change(struct ucsi_connector *con)
>  
>  	switch (UCSI_CONSTAT_PARTNER_TYPE(con->status.flags)) {
>  	case UCSI_CONSTAT_PARTNER_TYPE_UFP:
> +	case UCSI_CONSTAT_PARTNER_TYPE_CABLE:
> +	case UCSI_CONSTAT_PARTNER_TYPE_CABLE_AND_UFP:
>  		typec_set_data_role(con->port, TYPEC_HOST);
>  		break;
>  	case UCSI_CONSTAT_PARTNER_TYPE_DFP:
> @@ -619,6 +621,8 @@ static void ucsi_handle_connector_change(struct work_struct *work)
>  
>  		switch (UCSI_CONSTAT_PARTNER_TYPE(con->status.flags)) {
>  		case UCSI_CONSTAT_PARTNER_TYPE_UFP:
> +		case UCSI_CONSTAT_PARTNER_TYPE_CABLE:
> +		case UCSI_CONSTAT_PARTNER_TYPE_CABLE_AND_UFP:
>  			typec_set_data_role(con->port, TYPEC_HOST);
>  			break;
>  		case UCSI_CONSTAT_PARTNER_TYPE_DFP:
> @@ -919,6 +923,8 @@ static int ucsi_register_port(struct ucsi *ucsi, int index)
>  
>  	switch (UCSI_CONSTAT_PARTNER_TYPE(con->status.flags)) {
>  	case UCSI_CONSTAT_PARTNER_TYPE_UFP:
> +	case UCSI_CONSTAT_PARTNER_TYPE_CABLE:
> +	case UCSI_CONSTAT_PARTNER_TYPE_CABLE_AND_UFP:
>  		typec_set_data_role(con->port, TYPEC_HOST);
>  		break;
>  	case UCSI_CONSTAT_PARTNER_TYPE_DFP:

thanks,

-- 
heikki



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux