Re: [PATCHv3] usb: Add driver for UCSI

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

 



On Fri, Apr 29, 2016 at 04:32:22PM +0300, Heikki Krogerus wrote:
> Hi Greg,
> 
> On Thu, Apr 28, 2016 at 12:53:24PM -0700, Greg Kroah-Hartman wrote:
> > On Thu, Apr 21, 2016 at 03:43:40PM +0300, Heikki Krogerus wrote:
> > > USB Type-C Connector System Software Interface (UCSI) is
> > > specification that defines the registers and data structures
> > > that can be used to control USB Type-C ports on a system.
> > > UCSI is used on several Intel Broxton SoC based platforms.
> > > Things that UCSI can be used to control include at least USB
> > > Data Role swapping, Power Role swapping and controlling of
> > > Alternate Modes on top of providing general details about
> > > the port and the partners that are attached to it.
> > > 
> > > The initial purpose of the UCSI driver is to make sure USB
> > > is in host mode on desktop and server systems that are USB
> > > dual role capable, and provide UCSI interface.
> > > 
> > > The goal is to integrate the driver later to an USB Type-C
> > > framework for Linux kernel, and at the same time add support
> > > for more extensive USB Type-C port control that UCSI offers,
> > > for example data role swapping, power role swapping,
> > > Alternate Mode control etc.
> > 
> > My big worry here is this second thing "integrate into a USB Type-C
> > framework".  We don't have one upstream, but we have lots of different
> > ones floating around in different products at the moment, all of them
> > seeming to only do one-off things (i.e. only work for one specific
> > device.)  How is this going to be integrated into such a future scheme?
> > 
> > Are you working on this larger task?  Or working with others who are?
> > Any ideas of when this will happen?
> 
> This is my plan:
> 
> With UCSI and also most of the complex USB PD/Type-C controllers (for
> example TI's TPS65982) that take care of the USB PD stack, handle all
> the muxes autonomously etc., the only thing I see we need to do, and
> actually can do, is to provide userspace control over the data role
> swapping, power role swapping and possibly alternate mode control. And
> for that I'm going to propose the USB Type-C class.
> 
> The second case is where we have just USB Type-C/PD PHY and any USB PD
> communication needs to be handled in OS, so we will need USB PD stack
> for this case, I guess starting from protocol layer followed by policy
> engines and so on. We have guys working on that and they have already
> something working, and I know many other companies have their own
> implementations for the USB PD stack. But the PD stack will in any
> case be inside the kernel, and with USB Type-C connectors the things
> that the userspace needs to know and control are the same as with
> UCSI, so the Type-C class can take care of that part even in this
> case. So the USB Type-C/PD PHY drivers will just utilize the USB PD
> stack witch is inside the kernel, and still present the ports to the
> userspace with the help of the class. The class is also enough for USB
> Type-C PHYs that don't support USB PD, and for example for some of our
> platforms that do have USB PD transceiver, but have no use for USB PD
> (no AltModes, no use for the higher currents and voltages) so we just
> use it as USB Type-C PHY (USB PD disabled).
> 
> There is actually a third case. The USB PD controllers that handle the
> USB PD stack "partially". Those worry me, but I'm not going to go into
> those now. Even with them the userspace should in any case get the
> same stuff about the ports with the help of the class.
> 
> So I think we should move forward with this in steps. I'm going to
> propose that the first step is the USB Type-C class (or if not that,
> some other userspace interface) so we have the ABI more or less the
> way it's going to be forever from the beginning, so to prevent people
> from making ad-hoc solutions for example for the data role swapping.
> 
> I'm not going to give any guesses about when USB PD stack could be
> available, but I'm hoping we can bring it into kernel in parts,
> starting from the protocol layer. We are going to need to handle the
> Alternate Modes with AltMode specific drivers. There is no way to
> avoid that. Felipe's idea was that we make a bus for the Alternate
> Modes which sounds more the reasonable to me. So that could be an
> example of an independent part after the protocol layer. As the final
> step we can add the policy engines, the Device Policy and System
> Policy. The policy engines will bring the full USB PD support to
> kernel, but for example the Alternate Modes should be possible to make
> available even before them.
> 
> I'm attempting to prepare a new version of the USB Type-C class
> proposal within the next few weeks.
> 
> I hope this plan makes some sense. Sorry about the too long email.

Yes it does, thanks for the explaination.  I've applied this patch now.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



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

  Powered by Linux