Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966322AbcKOJ0H (ORCPT ); Tue, 15 Nov 2016 04:26:07 -0500 Received: from bh-25.webhostbox.net ([208.91.199.152]:47767 "EHLO bh-25.webhostbox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S941366AbcKOJ0E (ORCPT ); Tue, 15 Nov 2016 04:26:04 -0500 Subject: Re: [PATHCv10 1/2] usb: USB Type-C connector class To: Greg KH References: <20160919111657.22127-1-heikki.krogerus@linux.intel.com> <20160919111657.22127-2-heikki.krogerus@linux.intel.com> <20161114095148.GA10306@kroah.com> <20161114123235.GD22706@kuha.fi.intel.com> <20161114204650.GB17677@roeck-us.net> <20161115070754.GA26240@kroah.com> Cc: Heikki Krogerus , Oliver Neukum , Felipe Balbi , Bin Gao , linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, badhri@google.com From: Guenter Roeck Message-ID: <74c10d95-47b6-cc5d-eda0-056439db4ec7@roeck-us.net> Date: Tue, 15 Nov 2016 01:25:59 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20161115070754.GA26240@kroah.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Authenticated_sender: linux@roeck-us.net X-OutGoing-Spam-Status: No, score=-1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - bh-25.webhostbox.net X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - roeck-us.net X-Get-Message-Sender-Via: bh-25.webhostbox.net: authenticated_id: linux@roeck-us.net X-Authenticated-Sender: bh-25.webhostbox.net: linux@roeck-us.net X-Source: X-Source-Args: X-Source-Dir: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3543 Lines: 86 On 11/14/2016 11:07 PM, Greg KH wrote: > On Mon, Nov 14, 2016 at 12:46:50PM -0800, Guenter Roeck wrote: >> On Mon, Nov 14, 2016 at 02:32:35PM +0200, Heikki Krogerus wrote: >>> Hi Greg, >>> >>> On Mon, Nov 14, 2016 at 10:51:48AM +0100, Greg KH wrote: >>>> On Mon, Sep 19, 2016 at 02:16:56PM +0300, Heikki Krogerus wrote: >>>>> The purpose of USB Type-C connector class is to provide >>>>> unified interface for the user space to get the status and >>>>> basic information about USB Type-C connectors on a system, >>>>> control over data role swapping, and when the port supports >>>>> USB Power Delivery, also control over power role swapping >>>>> and Alternate Modes. >>>>> >>>>> Reviewed-by: Guenter Roeck >>>>> Tested-by: Guenter Roeck >>>>> Signed-off-by: Heikki Krogerus >>>>> --- >>>>> Documentation/ABI/testing/sysfs-class-typec | 218 ++++++ >>>>> Documentation/usb/typec.txt | 103 +++ >>>>> MAINTAINERS | 9 + >>>>> drivers/usb/Kconfig | 2 + >>>>> drivers/usb/Makefile | 2 + >>>>> drivers/usb/typec/Kconfig | 7 + >>>>> drivers/usb/typec/Makefile | 1 + >>>>> drivers/usb/typec/typec.c | 1075 +++++++++++++++++++++++++++ >>>>> include/linux/usb/typec.h | 252 +++++++ >>>>> 9 files changed, 1669 insertions(+) >>>>> create mode 100644 Documentation/ABI/testing/sysfs-class-typec >>>>> create mode 100644 Documentation/usb/typec.txt >>>>> 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 include/linux/usb/typec.h >>>> >> [ ... ] >> >>>>> + >>>>> +int typec_connect(struct typec_port *port, struct typec_connection *con) >>>>> +{ >>>>> + int ret; >>>>> + >>>>> + if (!con->partner && !con->cable) >>>>> + return -EINVAL; >>>>> + >>>>> + port->connected = 1; >>>>> + port->data_role = con->data_role; >>>>> + port->pwr_role = con->pwr_role; >>>>> + port->vconn_role = con->vconn_role; >>>>> + port->pwr_opmode = con->pwr_opmode; >>>>> + >>>>> + kobject_uevent(&port->dev.kobj, KOBJ_CHANGE); >>>> >>>> This worries me. Who is listening for it? What will you do with it? >>>> Shouldn't you just poll on an attribute file instead? >>> >>> Oliver! Did you need this or can we remove it? >>> >>> I remember I removed the "connected" attribute because you did not see >>> any use for it at one point. I don't remember the reason exactly why? >>> >> >> The Android team tells me that they are currently using the udev events >> to track port role changes, and to detect presence of port partner. >> >> Also, there are plans to track changes on usbc*cable to differentiate >> between cable attach vs. device being attached on the remote end. >> >> What is the problem with using kobject_uevent() and thus presumably >> udev events ? > > It's not a "normal" thing to do and is pretty "heavy" to do. What does > userspace do with that change event? Does it read specific attributes? > What causes the event to happen in the kernel, is it really just a > change in the specific object, or do new ones get added/removed? > > In short, document the heck out of this please so people know how to use > it, and what is happening when the event happens. > Badhri, can you clarify which events you are using in detail, and what for ? Thanks, Guenter