Re: [PATCHv3 1/2] usb: USB Type-C connector class

From: Oliver Neukum
Date: Wed Jun 22 2016 - 13:12:54 EST


On Wed, 2016-06-22 at 17:38 +0300, Heikki Krogerus wrote:
> On Wed, Jun 22, 2016 at 03:47:03PM +0200, Oliver Neukum wrote:
> > On Wed, 2016-06-22 at 14:44 +0300, Heikki Krogerus wrote:
> > > If our port is DRD (which would be DRP in the port controller spec),
> > > the supported_power_roles will list:
> > >
> > > device, host
> > >
> > > And the power role, if the port is Source only, the
> > > supported_power_roles will list:
> > >
> > > source
> > >
> > > If the port is Sink only, the supported_power_roles will list:
> > >
> > > sink
> > >
> > > If our port is DRP, the supported_power_roles will list:
> > >
> > > source, sink
> > >
> > > What is there that is missing? We are able to express all the types of
> > > "Roles Supported" that the DEVICE_CAPABILITIES define, no?
> >
> > No, because these are distinct in time. Some ports are DRP so they
> > support
> >
> > device, host
> >
> > at the same time. Some ports can be switched between DFP and UFP
> > they then either support host or device. But you lose the information
> > that the ports can be switched.
>
> You can't ever be host and device at the same time. Just like you
> can't ever be source and sink at the same time.

True, but you can be able to become host and device at the same time.
That is the purpose of a DRP port.

And you can be able to become a host and be able to become a device.
But not at the same time. These ports are switchable.

The current API cannot express the difference.

> Are we now talking about how should a port be advertised to the
> partners? So basically, do you want to be able to program the port to
> be DFP only, UFP only or DRP from user space?

That would be cool, but according to the spec this is an unalterable
attribute. Please look at section 4.4.8.1
It clearly describes different types of ports. We cannot express
the differences between the types described there with the current API.

Regards
Oliver