From: Oliver Neukum <oneukum@suse.com>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: Greg KH <gregkh@linuxfoundation.org>,
Felipe Balbi <balbi@kernel.org>,
Mathias Nyman <mathias.nyman@linux.intel.com>,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: [PATCH 1/3] usb: USB Type-C Connector Class
Date: Wed, 10 Feb 2016 11:49:02 +0100 [thread overview]
Message-ID: <1455101342.8878.5.camel@suse.com> (raw)
In-Reply-To: <1455037283-106479-2-git-send-email-heikki.krogerus@linux.intel.com>
On Tue, 2016-02-09 at 19:01 +0200, Heikki Krogerus wrote:
> The purpose of this class is to provide unified interface
> for user space to get the status and basic information about
> USB Type-C Connectors in the system, control data role
> swapping, and when USB PD is available, also power role
> swapping and Altenate Modes.
>
> The class will export the following interfaces for every
> USB Type-C Connector in the system to sysfs:
>
> 1. connected - Connection status of the connector
> 2. alternate_mode - The current Alternate Mode
> 3. alternate_modes - Lists all Alternate Modes the connector supports
These names are a bit problematic, as they are too similar.
How about
current_alternate_mode
potential_alternate_modes
> 4. partner_alt_modes - Lists partner's Alternate Modes when connected
> 5. partner_type - Can be USB, Charger, Alt Mode or Accessory
> 6. data_role - The current data role, host or device
> 7. data_roles - Data roles supported by the connector
> 8. power_role - Connector's current power role, source or sink
> 9. power_roles - Power roles supported by the connector
> 10. power_operation_mode - The current power level in use
> 11. usb_pd - yes if the connector supports USB PD.
> 12. audio_accessory - yes if the connector supports Audio Accessory
> 13. debug_accessory - yes if the connector supports Debug Accessory
>
> The data_role, power_role and alternate_mode are also
> writable and can be used for executing role swapping and
> entering modes. When USB PD is not supported by the
> connector or partner, power_role will reflect the value of
> the data_role, and is not swappable independently.
>
> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> ---
> drivers/usb/Kconfig | 2 +
> drivers/usb/Makefile | 2 +
> drivers/usb/type-c/Kconfig | 7 +
> drivers/usb/type-c/Makefile | 1 +
> drivers/usb/type-c/typec.c | 446 ++++++++++++++++++++++++++++++++++++++++++++
> include/linux/usb/typec.h | 114 +++++++++++
> 6 files changed, 572 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 include/linux/usb/typec.h
>
> diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
> index 8ed451d..0c45547 100644
> --- a/drivers/usb/Kconfig
> +++ b/drivers/usb/Kconfig
> @@ -151,6 +151,8 @@ source "drivers/usb/phy/Kconfig"
>
> source "drivers/usb/gadget/Kconfig"
>
> +source "drivers/usb/type-c/Kconfig"
> +
> config USB_LED_TRIG
> bool "USB LED Triggers"
> depends on LEDS_CLASS && USB_COMMON && LEDS_TRIGGERS
> diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
> index d5c57f1..4d712ee 100644
> --- a/drivers/usb/Makefile
> +++ b/drivers/usb/Makefile
> @@ -61,3 +61,5 @@ obj-$(CONFIG_USB_GADGET) += gadget/
> obj-$(CONFIG_USB_COMMON) += common/
>
> obj-$(CONFIG_USBIP_CORE) += usbip/
> +
> +obj-$(CONFIG_TYPEC) += type-c/
> diff --git a/drivers/usb/type-c/Kconfig b/drivers/usb/type-c/Kconfig
> new file mode 100644
> index 0000000..b229fb9
> --- /dev/null
> +++ b/drivers/usb/type-c/Kconfig
> @@ -0,0 +1,7 @@
> +
> +menu "USB PD and Type-C drivers"
> +
> +config TYPEC
> + tristate
> +
> +endmenu
> diff --git a/drivers/usb/type-c/Makefile b/drivers/usb/type-c/Makefile
> new file mode 100644
> index 0000000..1012a8b
> --- /dev/null
> +++ b/drivers/usb/type-c/Makefile
> @@ -0,0 +1 @@
> +obj-$(CONFIG_TYPEC) += typec.o
> diff --git a/drivers/usb/type-c/typec.c b/drivers/usb/type-c/typec.c
> new file mode 100644
> index 0000000..e425955
> --- /dev/null
> +++ b/drivers/usb/type-c/typec.c
> @@ -0,0 +1,446 @@
> +/*
> + * USB Type-C class
> + *
> + * Copyright (C) 2016, Intel Corporation
> + * Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <linux/device.h>
> +#include <linux/module.h>
> +#include <linux/slab.h>
> +#include <linux/usb/typec.h>
> +
> +#define to_typec_port(p) container_of(p, struct typec_port, dev)
> +
> +static DEFINE_IDA(typec_index_ida);
> +
> +/* -------------------------------- */
> +
> +int typec_connect(struct typec_port *port)
> +{
> + kobject_uevent(&port->dev.kobj, KOBJ_CHANGE);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(typec_connect);
> +
> +void typec_disconnect(struct typec_port *port)
> +{
> + kobject_uevent(&port->dev.kobj, KOBJ_CHANGE);
> +}
> +EXPORT_SYMBOL_GPL(typec_disconnect);
> +
> +/* -------------------------------- */
> +
> +static ssize_t alternate_mode_store(struct device *dev,
> + struct device_attribute *attr,
> + const char *buf, size_t size)
> +{
> + struct typec_port *port = to_typec_port(dev);
> + struct typec_alt_mode alt_mode;
> + int ret;
> +
> + if (!port->cap->set_alt_mode) {
> + dev_warn(dev, "entering Alternate Modes not supported\n");
> + return -EOPNOTSUPP;
> + }
> +
> + if (!port->connected)
> + return -ENXIO;
Doesn't this need locking?
And why wouldn't user space want to preselect a mode?
Regards
Oliver
next prev parent reply other threads:[~2016-02-10 10:51 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-09 17:01 [PATCH 0/3] usb: USB Type-C Class and driver for UCSI Heikki Krogerus
2016-02-09 17:01 ` [PATCH 1/3] usb: USB Type-C Connector Class Heikki Krogerus
2016-02-09 18:20 ` Greg KH
2016-02-10 10:38 ` Heikki Krogerus
2016-02-10 17:26 ` Greg KH
2016-02-11 14:07 ` Heikki Krogerus
2016-02-10 10:49 ` Oliver Neukum [this message]
2016-02-10 11:05 ` Andy Shevchenko
2016-02-10 11:11 ` Heikki Krogerus
2016-02-10 11:14 ` Andy Shevchenko
2016-02-10 11:23 ` Heikki Krogerus
2016-02-15 15:16 ` Oliver Neukum
2016-02-11 8:55 ` Felipe Balbi
2016-02-11 9:08 ` Oliver Neukum
2016-02-11 14:51 ` Heikki Krogerus
2016-02-11 14:36 ` Heikki Krogerus
2016-02-11 14:56 ` Oliver Neukum
2016-02-17 14:07 ` Oliver Neukum
2016-02-18 8:47 ` Heikki Krogerus
2016-02-18 9:21 ` Oliver Neukum
2016-02-18 13:09 ` Heikki Krogerus
2016-02-18 9:35 ` Oliver Neukum
2016-02-18 13:25 ` Heikki Krogerus
2016-02-18 13:44 ` Oliver Neukum
2016-02-18 15:13 ` Heikki Krogerus
2016-02-26 13:09 ` Heikki Krogerus
2016-02-09 17:01 ` [PATCH 2/3] usb: type-c: USB Type-C Connector System Software Interface Heikki Krogerus
2016-02-09 18:21 ` Greg KH
2016-02-10 10:30 ` Heikki Krogerus
2016-02-10 17:20 ` Greg KH
2016-02-11 13:50 ` Heikki Krogerus
2016-02-15 15:30 ` Oliver Neukum
2016-02-16 9:22 ` Heikki Krogerus
2016-02-16 13:39 ` Oliver Neukum
2016-02-17 7:58 ` Heikki Krogerus
2016-02-17 9:03 ` Oliver Neukum
2016-02-17 10:29 ` Felipe Balbi
2016-02-17 10:36 ` Oliver Neukum
2016-02-17 11:11 ` Heikki Krogerus
2016-02-17 13:36 ` Felipe Balbi
2016-02-17 14:28 ` Heikki Krogerus
2016-02-18 9:07 ` Peter Chen
2016-02-18 10:44 ` Heikki Krogerus
2016-02-18 10:37 ` Rajaram R
2016-02-18 10:47 ` Heikki Krogerus
2016-02-18 11:06 ` Rajaram R
2016-02-17 13:34 ` Felipe Balbi
2016-02-17 13:51 ` Oliver Neukum
2016-02-18 7:08 ` Felipe Balbi
2016-02-18 10:18 ` Oliver Neukum
2016-02-18 10:30 ` Felipe Balbi
2016-02-18 10:40 ` Oliver Neukum
2016-02-18 9:29 ` Peter Chen
2016-02-18 9:44 ` Oliver Neukum
2016-02-10 11:19 ` Oliver Neukum
2016-02-10 12:04 ` Heikki Krogerus
2016-02-10 11:56 ` Andy Shevchenko
2016-02-10 13:21 ` Oliver Neukum
2016-02-10 14:02 ` Andy Shevchenko
2016-02-10 15:11 ` Bjørn Mork
2016-02-11 8:26 ` Andy Shevchenko
2016-02-11 8:59 ` Bjørn Mork
2016-02-10 14:15 ` Oliver Neukum
2016-02-10 14:24 ` Andy Shevchenko
2016-02-10 15:08 ` Oliver Neukum
[not found] ` <CAHp75VfmGsskf7Cmni3b4=tCbkPsR8d3jPYiv93Lm6DM9gq1-g@mail.gmail.com>
2016-02-11 8:13 ` Fwd: " Andy Shevchenko
2016-02-11 14:10 ` Heikki Krogerus
2016-02-10 13:04 ` Oliver Neukum
2016-02-11 14:08 ` Heikki Krogerus
2016-02-09 17:01 ` [PATCH 3/3] usb: type-c: UCSI ACPI driver Heikki Krogerus
2016-02-09 18:22 ` Greg KH
2016-02-10 10:23 ` Heikki Krogerus
2016-02-17 18:53 ` [PATCH 0/3] usb: USB Type-C Class and driver for UCSI Oliver Neukum
2016-02-18 9:21 ` Heikki Krogerus
2016-02-17 19:34 ` Rajaram R
2016-02-18 11:05 ` Heikki Krogerus
2016-02-18 11:15 ` Oliver Neukum
2016-05-05 3:05 ` Guenter Roeck
2016-05-06 6:50 ` Felipe Balbi
2016-05-06 8:05 ` Guenter Roeck
2016-05-06 8:29 ` Heikki Krogerus
2016-05-06 14:10 ` Guenter Roeck
2016-05-06 8:23 ` Heikki Krogerus
2016-05-06 8:08 ` Heikki Krogerus
2016-05-06 14:08 ` Guenter Roeck
2016-05-11 3:14 ` Guenter Roeck
2016-05-11 9:40 ` Heikki Krogerus
2016-05-11 14:47 ` Guenter Roeck
2016-05-13 14:23 ` Heikki Krogerus
2016-05-13 17:48 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1455101342.8878.5.camel@suse.com \
--to=oneukum@suse.com \
--cc=balbi@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome