Mailing List Archive

[PATCH v17 0/3] USB Type-C Connector class
The USB Type-C class is meant to provide unified interface to the
userspace to present the USB Type-C ports in a system.

Changes since v16:
- Using PTR_ERR_OR_ZERO macro in typec_init().

Changes since v15:
- "stingification" as proposed by Felipe
- Checking ARRAY_SIZE in supported_accessory_modes() as proposed by Guenter

Changes since v14:
- Fixes proposed by Mika
- "identity" directory for all discover identity VDOs instead of "vdo" attribute
- alternate mode device names to just "svid-<svid>"

Changes since v13:
- New API. Everything is registered separately.

Changes since v12:
- Added prefer_role member to typec_capability structure as requested by Guenter

Changes since v11:
- The port drivers are responsible of removing the alternate
modes (just like the documentation already said).

Changes since v10:
- Using ATTRIBUTE_GROUPS and DEVICE_ATTR marcos everywhere
- Moved sysfs_match_string to lib/string.c
- Rationalized uevents
- Calling ida_destroy

Changes since v9:
- Minor typec_wcove.c cleanup as proposed by Guenter Roeck. No
function affect.

Changes since v8:
- checking sysfs_streq() result correctly in sysfs_strmatch
- fixed accessory check in supported_accessory_mode
- using "none" as the only string that can clear the preferred role

Changes since v7:
- Removed "type" attribute from partners
- Added supports_usb_power_delivery attribute for partner and cable

Changes since v6:
- current_vconn_role attr renamed to vconn_source (no API changes)
- Small documentation improvements proposed by Vincent Palatin

Changes since v5:
- Only updating the roles based on driver notifications
- Added MODULE_ALIAS for the WhiskeyCove module
- Including the patch that creates the actual platform device for the
WhiskeyCove Type-C PHY in this series.

Changes since v4:
- Remove the port lock completely

Changes since v3:
- Documentation cleanup as proposed by Roger Quadros
- Setting partner altmodes member to NULL on removal and fixing a
warning, as proposed by Guenter Roeck
- Added the following attributes for partners and cables:
* supports_usb_power_delivery
* id_header_vdo
- "id_header_vdo" is visible only when the partner or cable supports
USB Power Delivery communication.
- Partner attribute "accessory" is hidden when the partner type is not
"Accessory".

Changes since v2:
- Notification on role and alternate mode changes
- cleanups

Changes since v1:
- Completely rewrote alternate mode support
- Patners, cables and cable plugs presented as devices.


Heikki Krogerus (3):
lib/string: add sysfs_match_string helper
usb: USB Type-C connector class
usb: typec: add driver for Intel Whiskey Cove PMIC USB Type-C PHY

Documentation/ABI/testing/sysfs-class-typec | 276 ++++++
Documentation/usb/typec.rst | 185 ++++
MAINTAINERS | 9 +
drivers/usb/Kconfig | 2 +
drivers/usb/Makefile | 2 +
drivers/usb/typec/Kconfig | 22 +
drivers/usb/typec/Makefile | 2 +
drivers/usb/typec/typec.c | 1262 +++++++++++++++++++++++++++
drivers/usb/typec/typec_wcove.c | 377 ++++++++
include/linux/string.h | 10 +
include/linux/usb/typec.h | 243 ++++++
lib/string.c | 26 +
12 files changed, 2416 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-class-typec
create mode 100644 Documentation/usb/typec.rst
create mode 100644 drivers/usb/typec/Kconfig
create mode 100644 drivers/usb/typec/Makefile
create mode 100644 drivers/usb/typec/typec.c
create mode 100644 drivers/usb/typec/typec_wcove.c
create mode 100644 include/linux/usb/typec.h

--
2.11.0
Re: [PATCH v17 0/3] USB Type-C Connector class [ In reply to ]
Hi,

Heikki Krogerus <heikki.krogerus@linux.intel.com> writes:
> The USB Type-C class is meant to provide unified interface to the
> userspace to present the USB Type-C ports in a system.
>
> Changes since v16:
> - Using PTR_ERR_OR_ZERO macro in typec_init().
>
> Changes since v15:
> - "stingification" as proposed by Felipe
> - Checking ARRAY_SIZE in supported_accessory_modes() as proposed by Guenter
>
> Changes since v14:
> - Fixes proposed by Mika
> - "identity" directory for all discover identity VDOs instead of "vdo" attribute
> - alternate mode device names to just "svid-<svid>"
>
> Changes since v13:
> - New API. Everything is registered separately.
>
> Changes since v12:
> - Added prefer_role member to typec_capability structure as requested by Guenter
>
> Changes since v11:
> - The port drivers are responsible of removing the alternate
> modes (just like the documentation already said).
>
> Changes since v10:
> - Using ATTRIBUTE_GROUPS and DEVICE_ATTR marcos everywhere
> - Moved sysfs_match_string to lib/string.c
> - Rationalized uevents
> - Calling ida_destroy
>
> Changes since v9:
> - Minor typec_wcove.c cleanup as proposed by Guenter Roeck. No
> function affect.
>
> Changes since v8:
> - checking sysfs_streq() result correctly in sysfs_strmatch
> - fixed accessory check in supported_accessory_mode
> - using "none" as the only string that can clear the preferred role
>
> Changes since v7:
> - Removed "type" attribute from partners
> - Added supports_usb_power_delivery attribute for partner and cable
>
> Changes since v6:
> - current_vconn_role attr renamed to vconn_source (no API changes)
> - Small documentation improvements proposed by Vincent Palatin
>
> Changes since v5:
> - Only updating the roles based on driver notifications
> - Added MODULE_ALIAS for the WhiskeyCove module
> - Including the patch that creates the actual platform device for the
> WhiskeyCove Type-C PHY in this series.
>
> Changes since v4:
> - Remove the port lock completely
>
> Changes since v3:
> - Documentation cleanup as proposed by Roger Quadros
> - Setting partner altmodes member to NULL on removal and fixing a
> warning, as proposed by Guenter Roeck
> - Added the following attributes for partners and cables:
> * supports_usb_power_delivery
> * id_header_vdo
> - "id_header_vdo" is visible only when the partner or cable supports
> USB Power Delivery communication.
> - Partner attribute "accessory" is hidden when the partner type is not
> "Accessory".
>
> Changes since v2:
> - Notification on role and alternate mode changes
> - cleanups
>
> Changes since v1:
> - Completely rewrote alternate mode support
> - Patners, cables and cable plugs presented as devices.
>
>
> Heikki Krogerus (3):
> lib/string: add sysfs_match_string helper
> usb: USB Type-C connector class
> usb: typec: add driver for Intel Whiskey Cove PMIC USB Type-C PHY

Just to clarify one thing here: wherever it says "Reviewed-by: Felipe
Balbi..." you could also read "Reviewed-and-Tested-by: Felipe Balbi..."
as I have been running these patches for past few months to test code on
Intel Joule.

--
balbi
Re: [PATCH v17 0/3] USB Type-C Connector class [ In reply to ]
On Tue, Feb 21, 2017 at 05:24:02PM +0300, Heikki Krogerus wrote:
> The USB Type-C class is meant to provide unified interface to the
> userspace to present the USB Type-C ports in a system.
>
> Changes since v16:
> - Using PTR_ERR_OR_ZERO macro in typec_init().

I'm lost in the long thread here, is this series still ready to be
merged in, or is there another version that is being worked on?

thanks,

greg k-h
Re: [PATCH v17 0/3] USB Type-C Connector class [ In reply to ]
On Tue, Mar 21, 2017 at 11:23:37AM +0100, Greg KH wrote:
> On Tue, Feb 21, 2017 at 05:24:02PM +0300, Heikki Krogerus wrote:
> > The USB Type-C class is meant to provide unified interface to the
> > userspace to present the USB Type-C ports in a system.
> >
> > Changes since v16:
> > - Using PTR_ERR_OR_ZERO macro in typec_init().
>
> I'm lost in the long thread here, is this series still ready to be
> merged in, or is there another version that is being worked on?

There was one documentation fix proposed Mats. The rest of the thread
was not about these patches.

I'll send one more version and fix the documentation.


Thanks,

--
heikki
Re: [PATCH v17 0/3] USB Type-C Connector class [ In reply to ]
On Tue, Feb 21, 2017 at 05:42:35PM +0200, Felipe Balbi wrote:
> Just to clarify one thing here: wherever it says "Reviewed-by: Felipe
> Balbi..." you could also read "Reviewed-and-Tested-by: Felipe Balbi..."
> as I have been running these patches for past few months to test code on
> Intel Joule.

OK :-)


Thanks,

--
heikki
Re: [PATCH v17 0/3] USB Type-C Connector class [ In reply to ]
On 03/21/2017 11:37 AM, Heikki Krogerus wrote:

>> I'm lost in the long thread here, is this series still ready to be
>> merged in, or is there another version that is being worked on?
> There was one documentation fix proposed Mats. The rest of the thread
> was not about these patches.
>
> I'll send one more version and fix the documentation.
>
A bit late but...

After reading a bit more I found that there is a miss-match between
Documentation/ABI/testing/sysfs-class-typec on one side and the actual
code and Documentation/usb/typec.rst on the other side. In the first it
looks like all attribute groups are flat under typec/ but in the code
and the other document they are instead created in a tree, e.g.:

/sys/class/typec/port0/
/sys/class/typec/port0/svid-ff01/
/sys/class/typec/port0/svid-ff01/mode0/
/sys/class/typec/port0/port0-partner/
/sys/class/typec/port0/port0-cable/
/sys/class/typec/port0/port0-cable/identity/
/sys/class/typec/port0/port0-cable/port0-plug0/
/sys/class/typec/port0/port0-cable/port0-plug1/

BR // Mats
Re: [PATCH v17 0/3] USB Type-C Connector class [ In reply to ]
Hi Mats,

On Wed, Mar 22, 2017 at 10:15:20PM +0100, Mats Karrman wrote:
> On 03/21/2017 11:37 AM, Heikki Krogerus wrote:
>
> > > I'm lost in the long thread here, is this series still ready to be
> > > merged in, or is there another version that is being worked on?
> > There was one documentation fix proposed Mats. The rest of the thread
> > was not about these patches.
> >
> > I'll send one more version and fix the documentation.
> >
> A bit late but...
>
> After reading a bit more I found that there is a miss-match between
> Documentation/ABI/testing/sysfs-class-typec on one side and the actual
> code and Documentation/usb/typec.rst on the other side. In the first it
> looks like all attribute groups are flat under typec/ but in the code
> and the other document they are instead created in a tree, e.g.:
>
> /sys/class/typec/port0/
> /sys/class/typec/port0/svid-ff01/
> /sys/class/typec/port0/svid-ff01/mode0/
> /sys/class/typec/port0/port0-partner/
> /sys/class/typec/port0/port0-cable/
> /sys/class/typec/port0/port0-cable/identity/
> /sys/class/typec/port0/port0-cable/port0-plug0/
> /sys/class/typec/port0/port0-cable/port0-plug1/

Documentation/ABI/testing/sysfs-class-typec describes the attributes
from the classes point of view.

Documentation/usb/typec.rst tries to explain the actual hierarchy of
the devices that the current typec class driver generates, however the
"class" does not care about that. Every device will simply have a link
added to the class directory (/sys/class/typec/ in our case)
regardless of their parent. For example, port0 and its partners:

/sys/class/typec/port0 -> ../../devices/<path>/<to>/<your>/<device>/typec/port0
/sys/class/typec/port0-partner -> ../../devices/<path>/<to>/<your>/<device>/typec/port0/port0-partner
/sys/class/typec/port0-cable -> ../../devices/<path>/<to>/<your>/<device>/typec/port0/port0-cable
/sys/class/typec/port0-plug0 -> ../../devices/<path>/<to>/<your>/<device>/typec/port0/port0-cable/port0-plug0
/sys/class/typec/port0-plug1 -> ../../devices/<path>/<to>/<your>/<device>/typec/port0/port0-cable/port0-plug1


Thanks,

--
heikki