Export the Type-C cc orientation so that user space can get this information. Signed-off-by: pumahsu <pumahsu@xxxxxxxxxx> --- Documentation/ABI/testing/sysfs-class-typec | 7 +++++++ drivers/usb/typec/class.c | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-class-typec b/Documentation/ABI/testing/sysfs-class-typec index d7647b258c3c..419f952c991d 100644 --- a/Documentation/ABI/testing/sysfs-class-typec +++ b/Documentation/ABI/testing/sysfs-class-typec @@ -108,6 +108,13 @@ Contact: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> Description: Revision number of the supported USB Type-C specification. +What: /sys/class/typec/<port>/cc_orientation +Date: September 2019 +Contact: Puma Hsu <pumahsu@xxxxxxxxxx> +Description: + Indicates which cc orientation is active now, or 0 when + nothing is connected. + USB Type-C partner devices (eg. /sys/class/typec/port0-partner/) diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c index 7d8805d9bf37..00edae63da8e 100644 --- a/drivers/usb/typec/class.c +++ b/drivers/usb/typec/class.c @@ -1238,6 +1238,16 @@ static ssize_t usb_power_delivery_revision_show(struct device *dev, } static DEVICE_ATTR_RO(usb_power_delivery_revision); +static ssize_t cc_orientation_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct typec_port *p = to_typec_port(dev); + + return sprintf(buf, "%d\n", typec_get_orientation(p)); +} +static DEVICE_ATTR_RO(cc_orientation); + static struct attribute *typec_attrs[] = { &dev_attr_data_role.attr, &dev_attr_power_operation_mode.attr, @@ -1248,6 +1258,7 @@ static struct attribute *typec_attrs[] = { &dev_attr_usb_typec_revision.attr, &dev_attr_vconn_source.attr, &dev_attr_port_type.attr, + &dev_attr_cc_orientation.attr, NULL, }; ATTRIBUTE_GROUPS(typec); -- 2.23.0.700.g56cf767bdb-goog