From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757528AbcBIRDb (ORCPT ); Tue, 9 Feb 2016 12:03:31 -0500 Received: from mga04.intel.com ([192.55.52.120]:53864 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754160AbcBIRD2 (ORCPT ); Tue, 9 Feb 2016 12:03:28 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,421,1449561600"; d="scan'208";a="908659871" From: Heikki Krogerus To: Greg KH Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Mathias Nyman , Felipe Balbi Subject: [PATCH 0/3] usb: USB Type-C Class and driver for UCSI Date: Tue, 9 Feb 2016 19:01:20 +0200 Message-Id: <1455037283-106479-1-git-send-email-heikki.krogerus@linux.intel.com> X-Mailer: git-send-email 2.7.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, The OS, or more precisely the user space, needs to be able to control a few things regarding USB Type-C ports. The first thing that must be allowed to be controlled is the data role. USB Type-C ports will select the data role randomly with DRP ports. When USB PD is supported, also independent (from data role) power role swapping can be supported together with Alternate Mode control. I'm proposing with this set a Class for the Type-C connectors that gives the user space control over those things on top of getting basic details about the USB Type-C connectors and also partners. The details include the capabilities of the port, the supported data and power roles, supported accessories (audio and debug), supported Alternate Modes, USB PD support and of course the type of the partner (USB, Alt Mode, Accessory or Charger), and more or less the same details about the partner. I'm not considering cables with this Class, and I have deliberately left out some more technical details, like cable orientation, firstly because I did not see much use for the user space from knowing that an secondly because that kind of details are not always available for example with UCSI. So the interface to the user space is kept as simple as I dared to make it. NOTE: In case there is somebody wondering, this is not adding USB PD support to Linux kernel. This is just about USB Type-C. Heikki Krogerus (3): usb: USB Type-C Connector Class usb: type-c: USB Type-C Connector System Software Interface usb: type-c: UCSI ACPI driver drivers/usb/Kconfig | 2 + drivers/usb/Makefile | 2 + drivers/usb/type-c/Kconfig | 25 +++ drivers/usb/type-c/Makefile | 3 + drivers/usb/type-c/typec.c | 446 ++++++++++++++++++++++++++++++++++++++++ drivers/usb/type-c/ucsi.c | 450 +++++++++++++++++++++++++++++++++++++++++ drivers/usb/type-c/ucsi.h | 219 ++++++++++++++++++++ drivers/usb/type-c/ucsi_acpi.c | 133 ++++++++++++ include/linux/usb/typec.h | 114 +++++++++++ 9 files changed, 1394 insertions(+) create mode 100644 drivers/usb/type-c/Kconfig create mode 100644 drivers/usb/type-c/Makefile create mode 100644 drivers/usb/type-c/typec.c create mode 100644 drivers/usb/type-c/ucsi.c create mode 100644 drivers/usb/type-c/ucsi.h create mode 100644 drivers/usb/type-c/ucsi_acpi.c create mode 100644 include/linux/usb/typec.h -- 2.7.0