From: Hans de Goede <hdegoede@redhat.com>
To: Peter Rosin <peda@axentia.se>,
MyungJoo Ham <myungjoo.ham@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
Guenter Roeck <linux@roeck-us.net>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Darren Hart <dvhart@infradead.org>,
Andy Shevchenko <andy@infradead.org>,
Mathias Nyman <mathias.nyman@intel.com>
Cc: linux-kernel@vger.kernel.org,
platform-driver-x86@vger.kernel.org, devel@driverdev.osuosl.org,
Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>,
Sathyanarayanan Kuppuswamy Natarajan <sathyaosid@gmail.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org
Subject: Re: [PATCH v2 03/11] mux: core: Add usb.h header with MUX_USB_* and and MUX_TYPEC_* state constants
Date: Fri, 8 Sep 2017 19:07:37 +0200 [thread overview]
Message-ID: <f67ce71e-208e-9be1-8556-3bfcdda99c7f@redhat.com> (raw)
In-Reply-To: <ef2cb0f4-00c4-fac4-2bf9-cc0230dba752@axentia.se>
Hi,
On 08-09-17 17:47, Peter Rosin wrote:
> On 2017-09-05 18:42, Hans de Goede wrote:
>> Add MUX_USB_* and MUX_TYPEC_* state constant defines, which can be used by
>> USB device/host, resp. Type-C polarity/role/altmode mux drivers and
>> consumers to ensure that they agree on the meaning of the
>> mux_control_select() state argument.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>> Changes in v2:
>> -Start numbering of defines at 0 not 1
>> -Use a new usb.h header, rather then adding these to consumer.h
>> -Add separate MUX_USB_* and MUX_TYPEC_* defines
>> ---
>> include/linux/mux/usb.h | 32 ++++++++++++++++++++++++++++++++
>> 1 file changed, 32 insertions(+)
>> create mode 100644 include/linux/mux/usb.h
>>
>> diff --git a/include/linux/mux/usb.h b/include/linux/mux/usb.h
>> new file mode 100644
>> index 000000000000..44df5eca5256
>> --- /dev/null
>> +++ b/include/linux/mux/usb.h
>> @@ -0,0 +1,32 @@
>> +/*
>> + * mux/usb.h - definitions for USB multiplexers
>> + *
>> + * Copyright (C) 2017 Hans de Goede <hdegoede@redhat.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.
>> + */
>> +#ifndef _LINUX_MUX_USB_H
>> +#define _LINUX_MUX_USB_H
>> +
>> +/* Mux state values for USB device/host role muxes */
>> +#define MUX_USB_DEVICE (0) /* USB device mode */
>> +#define MUX_USB_HOST (1) /* USB host mode */
>> +#define MUX_USB_STATES (2)
>> +
>> +/*
>> + * Mux state values for Type-C polarity/role/altmode muxes.
>> + *
>> + * MUX_TYPEC_POLARITY_INV may be or-ed together with any other mux-state as
>> + * inverted-polarity (Type-C plugged in upside down) can happen with any
>> + * other mux-state.
>> + */
>> +#define MUX_TYPEC_POLARITY_INV BIT(0) /* Polarity inverted bit */
>> +#define MUX_TYPEC_DEVICE (0 << 1) /* USB device mode */
>> +#define MUX_TYPEC_HOST (1 << 1) /* USB host mode */
>> +#define MUX_TYPEC_HOST_AND_DP_SRC (2 << 1) /* USB host + 2 lanes DP src */
>> +#define MUX_TYPEC_DP_SRC (3 << 1) /* 4 lanes Display Port src */
>> +#define MUX_TYPEC_STATES (4 << 1)
>
> But USB Type-C muxes need not support just these states If I read it right?
> USB Type-C seems to be usable for a variety of protocols and the above list
> seems pretty much like a special case for this mux (and perhaps a set of
> other similar muxes). But when someone with a USB Type-C mux for different
> protocols shows up, that person will probably be frustrated by these
> defines, no? Or is there something I don't see that limits USB-C to DP?
In general almost all hardware is limited to the above (+ analog audio over
the 2 Sideband use pins, but I expect that to have a separate mux).
You're right, theoretically there might be other cases, e.g. there is a spec
for HDMI over Type-C (wishful thinking from the HDMI group, no one uses this),
but:
1) I expect most muxes to implement the above set, that is what all
hardware out there supports (well that or less).
2) We can always add extra defines here, that means that a Type-C mux may
not implement all states and return -EINVAL when asked for something it
does not implement, which I understand is a bit weird from a mux subsys
pov. But that can be the case anyways because even though the mux supports
these options, the board it is used on does no necessarily have to support
these options, e.g. there may be only 2 lanes of DP hooked up to the mux
(or no DP at all, but then I would them to expect a different mux).
So the Type-C Port Manager already needs to be passed some platform
data describing which features the board has and keep that in mind
when negotiation with the dongle attached to the Type-C port, so if
we do get boards which do HDMI and no DP, then the TCPM would simply
never use the MUX_TYPEC_HOST_AND_DP_SRC and MUX_TYPEC_DP_SRC states.
Regards,
Hans
next prev parent reply other threads:[~2017-09-08 17:07 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-05 16:42 [PATCH v2 00/11] mux/typec: Add USB / TypeC mux drivers and hook them up on some x86 systems Hans de Goede
2017-09-05 16:42 ` [PATCH v2 01/11] mux: core: Add of_mux_control_get helper function Hans de Goede
2017-09-05 16:42 ` [PATCH v2 02/11] mux: core: Add support for getting a mux controller on a non DT platform Hans de Goede
2017-09-05 16:42 ` [PATCH v2 03/11] mux: core: Add usb.h header with MUX_USB_* and and MUX_TYPEC_* state constants Hans de Goede
2017-09-08 15:47 ` Peter Rosin
2017-09-08 17:07 ` Hans de Goede [this message]
2017-09-10 21:36 ` Peter Rosin
2017-09-21 12:07 ` Hans de Goede
2017-09-05 16:42 ` [PATCH v2 04/11] usb: xhci: Add Intel cherrytrail extended cap / otg phy mux handling Hans de Goede
2017-09-07 13:14 ` Mathias Nyman
2017-09-07 15:49 ` Hans de Goede
2017-09-19 12:40 ` Mathias Nyman
2017-09-21 11:55 ` Hans de Goede
2017-09-08 15:47 ` Peter Rosin
2017-09-05 16:42 ` [PATCH v2 05/11] mux: Add Intel Cherrytrail USB mux driver Hans de Goede
2017-09-08 15:45 ` Peter Rosin
2017-09-08 15:45 ` [PATCH 1/2] mux: add mux_control_get_optional() API Peter Rosin
2017-09-08 15:54 ` Peter Rosin
2017-09-19 18:35 ` Hans de Goede
2017-09-20 16:11 ` Stephen Boyd
2017-09-08 15:45 ` [PATCH 2/2] mux: add explicit hook to leave the mux as-is on init/registration Peter Rosin
2017-09-19 16:38 ` [PATCH v2 05/11] mux: Add Intel Cherrytrail USB mux driver Hans de Goede
2017-09-05 16:42 ` [PATCH v2 06/11] mux: Add Pericom PI3USB30532 Type-C " Hans de Goede
2017-09-05 16:42 ` [PATCH v2 07/11] extcon: intel-int3496: Add support for controlling the USB-role mux Hans de Goede
2017-09-05 16:42 ` [PATCH v2 08/11] staging: typec: tcpm: Set mux to device mode when configured as such Hans de Goede
2017-09-10 22:56 ` Guenter Roeck
2017-09-22 14:02 ` Hans de Goede
2017-09-05 16:42 ` [PATCH v2 09/11] staging: typec: Add Generic TCPC mux driver using the mux subsys Hans de Goede
2017-09-05 16:42 ` [PATCH v2 10/11] staging: typec: fusb302: Hook up mux support using tcpc_gen_mux support Hans de Goede
2017-09-12 22:20 ` Rob Herring
2017-09-13 8:56 ` Hans de Goede
2017-09-13 13:38 ` Rob Herring
2017-09-13 14:06 ` Hans de Goede
2017-09-13 15:07 ` Rob Herring
2017-09-13 15:48 ` Hans de Goede
2017-09-13 16:17 ` Guenter Roeck
2017-09-25 10:34 ` Peter Rosin
2017-09-25 11:35 ` Hans de Goede
2017-09-25 13:45 ` Peter Rosin
2017-09-25 14:17 ` Hans de Goede
2017-09-05 16:42 ` [PATCH v2 11/11] platform/x86: intel_cht_int33fe: Add mux mappings for the Type-C port Hans de Goede
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=f67ce71e-208e-9be1-8556-3bfcdda99c7f@redhat.com \
--to=hdegoede@redhat.com \
--cc=andy@infradead.org \
--cc=cw00.choi@samsung.com \
--cc=devel@driverdev.osuosl.org \
--cc=dvhart@infradead.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mathias.nyman@intel.com \
--cc=myungjoo.ham@samsung.com \
--cc=peda@axentia.se \
--cc=platform-driver-x86@vger.kernel.org \
--cc=sathyanarayanan.kuppuswamy@linux.intel.com \
--cc=sathyaosid@gmail.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
all inboxes | Powered by JetHome®