From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-eopbgr10043.outbound.protection.outlook.com ([40.107.1.43]:21952 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751747AbeECAlm (ORCPT ); Wed, 2 May 2018 20:41:42 -0400 From: Li Jun Subject: [PATCH v5 05/14] usb: typec: add API to get typec basic port power and data config Date: Thu, 3 May 2018 08:24:45 +0800 Message-Id: <1525307094-27402-6-git-send-email-jun.li@nxp.com> In-Reply-To: <1525307094-27402-1-git-send-email-jun.li@nxp.com> References: <1525307094-27402-1-git-send-email-jun.li@nxp.com> MIME-Version: 1.0 Content-Type: text/plain Sender: devicetree-owner@vger.kernel.org To: robh+dt@kernel.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, linux@roeck-us.net Cc: jun.li@nxp.com, a.hajda@samsung.com, cw00.choi@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, gsomlo@gmail.com, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-imx@nxp.com List-ID: This patch adds 3 APIs to get the typec port power and data type, and preferred power role by its name string. Signed-off-by: Li Jun --- drivers/usb/typec/class.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++ include/linux/usb/typec.h | 3 +++ 2 files changed, 55 insertions(+) diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c index 53df10d..5981e18 100644 --- a/drivers/usb/typec/class.c +++ b/drivers/usb/typec/class.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -802,6 +803,12 @@ static const char * const typec_port_types[] = { [TYPEC_PORT_DRP] = "dual", }; +static const char * const typec_data_types[] = { + [TYPEC_PORT_DFP] = "host", + [TYPEC_PORT_UFP] = "device", + [TYPEC_PORT_DRD] = "dual", +}; + static const char * const typec_port_types_drp[] = { [TYPEC_PORT_SRC] = "dual [source] sink", [TYPEC_PORT_SNK] = "dual source [sink]", @@ -1252,6 +1259,51 @@ void typec_set_pwr_opmode(struct typec_port *port, } EXPORT_SYMBOL_GPL(typec_set_pwr_opmode); +/** + * typec_find_power_type - Get the typec port power type + * @name: port type string + * + * This routine is used to find the typec_port_type by its string name. + * + * Returns typec_port_type if success, otherwise negative error code. + */ +int typec_find_power_type(const char *name) +{ + return match_string(typec_port_types, ARRAY_SIZE(typec_port_types), + name); +} +EXPORT_SYMBOL_GPL(typec_find_power_type); + +/** + * typec_find_preferred_role - Find the typec drp port preferred power role + * @name: power role string + * + * This routine is used to find the typec_role by its string name of + * preferred power role(Try.SRC or Try.SNK). + * + * Returns typec_role if success, otherwise negative error code. + */ +int typec_find_preferred_role(const char *name) +{ + return match_string(typec_roles, ARRAY_SIZE(typec_roles), name); +} +EXPORT_SYMBOL_GPL(typec_find_preferred_role); + +/** + * typec_find_data_type - Get the typec port data capability + * @name: data type string + * + * This routine is used to find the typec_port_data by its string name. + * + * Returns typec_port_data if success, otherwise negative error code. + */ +int typec_find_data_type(const char *name) +{ + return match_string(typec_data_types, ARRAY_SIZE(typec_data_types), + name); +} +EXPORT_SYMBOL_GPL(typec_find_data_type); + /* ------------------------------------------ */ /* API for Multiplexer/DeMultiplexer Switches */ diff --git a/include/linux/usb/typec.h b/include/linux/usb/typec.h index 672b39b..00c93e7 100644 --- a/include/linux/usb/typec.h +++ b/include/linux/usb/typec.h @@ -267,4 +267,7 @@ int typec_set_orientation(struct typec_port *port, enum typec_orientation orientation); int typec_set_mode(struct typec_port *port, int mode); +int typec_find_power_type(const char *name); +int typec_find_preferred_role(const char *name); +int typec_find_data_type(const char *name); #endif /* __LINUX_USB_TYPEC_H */ -- 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v5,05/14] usb: typec: add API to get typec basic port power and data config From: Jun Li Message-Id: <1525307094-27402-6-git-send-email-jun.li@nxp.com> Date: Thu, 3 May 2018 08:24:45 +0800 To: robh+dt@kernel.org, gregkh@linuxfoundation.org, heikki.krogerus@linux.intel.com, linux@roeck-us.net Cc: jun.li@nxp.com, a.hajda@samsung.com, cw00.choi@samsung.com, shufan_lee@richtek.com, peter.chen@nxp.com, gsomlo@gmail.com, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-imx@nxp.com List-ID: VGhpcyBwYXRjaCBhZGRzIDMgQVBJcyB0byBnZXQgdGhlIHR5cGVjIHBvcnQgcG93ZXIgYW5kIGRh dGEgdHlwZSwKYW5kIHByZWZlcnJlZCBwb3dlciByb2xlIGJ5IGl0cyBuYW1lIHN0cmluZy4KClNp Z25lZC1vZmYtYnk6IExpIEp1biA8anVuLmxpQG54cC5jb20+Ci0tLQogZHJpdmVycy91c2IvdHlw ZWMvY2xhc3MuYyB8IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBpbmNsdWRlL2xpbnV4L3VzYi90eXBlYy5oIHwgIDMgKysrCiAyIGZpbGVzIGNoYW5n ZWQsIDU1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi90eXBlYy9jbGFz cy5jIGIvZHJpdmVycy91c2IvdHlwZWMvY2xhc3MuYwppbmRleCA1M2RmMTBkLi41OTgxZTE4IDEw MDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9jbGFzcy5jCisrKyBiL2RyaXZlcnMvdXNiL3R5 cGVjL2NsYXNzLmMKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CiAj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNs dWRlIDxsaW51eC9wcm9wZXJ0eS5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRl IDxsaW51eC91c2IvdHlwZWMuaD4KICNpbmNsdWRlIDxsaW51eC91c2IvdHlwZWNfbXV4Lmg+CkBA IC04MDIsNiArODAzLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdHlwZWNfcG9ydF90 eXBlc1tdID0gewogCVtUWVBFQ19QT1JUX0RSUF0gPSAiZHVhbCIsCiB9OwogCitzdGF0aWMgY29u c3QgY2hhciAqIGNvbnN0IHR5cGVjX2RhdGFfdHlwZXNbXSA9IHsKKwlbVFlQRUNfUE9SVF9ERlBd ID0gImhvc3QiLAorCVtUWVBFQ19QT1JUX1VGUF0gPSAiZGV2aWNlIiwKKwlbVFlQRUNfUE9SVF9E UkRdID0gImR1YWwiLAorfTsKKwogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0eXBlY19wb3J0 X3R5cGVzX2RycFtdID0gewogCVtUWVBFQ19QT1JUX1NSQ10gPSAiZHVhbCBbc291cmNlXSBzaW5r IiwKIAlbVFlQRUNfUE9SVF9TTktdID0gImR1YWwgc291cmNlIFtzaW5rXSIsCkBAIC0xMjUyLDYg KzEyNTksNTEgQEAgdm9pZCB0eXBlY19zZXRfcHdyX29wbW9kZShzdHJ1Y3QgdHlwZWNfcG9ydCAq cG9ydCwKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHR5cGVjX3NldF9wd3Jfb3Btb2RlKTsKIAorLyoq CisgKiB0eXBlY19maW5kX3Bvd2VyX3R5cGUgLSBHZXQgdGhlIHR5cGVjIHBvcnQgcG93ZXIgdHlw ZQorICogQG5hbWU6IHBvcnQgdHlwZSBzdHJpbmcKKyAqCisgKiBUaGlzIHJvdXRpbmUgaXMgdXNl ZCB0byBmaW5kIHRoZSB0eXBlY19wb3J0X3R5cGUgYnkgaXRzIHN0cmluZyBuYW1lLgorICoKKyAq IFJldHVybnMgdHlwZWNfcG9ydF90eXBlIGlmIHN1Y2Nlc3MsIG90aGVyd2lzZSBuZWdhdGl2ZSBl cnJvciBjb2RlLgorICovCitpbnQgdHlwZWNfZmluZF9wb3dlcl90eXBlKGNvbnN0IGNoYXIgKm5h bWUpCit7CisJcmV0dXJuIG1hdGNoX3N0cmluZyh0eXBlY19wb3J0X3R5cGVzLCBBUlJBWV9TSVpF KHR5cGVjX3BvcnRfdHlwZXMpLAorCQkJICAgIG5hbWUpOworfQorRVhQT1JUX1NZTUJPTF9HUEwo dHlwZWNfZmluZF9wb3dlcl90eXBlKTsKKworLyoqCisgKiB0eXBlY19maW5kX3ByZWZlcnJlZF9y b2xlIC0gRmluZCB0aGUgdHlwZWMgZHJwIHBvcnQgcHJlZmVycmVkIHBvd2VyIHJvbGUKKyAqIEBu YW1lOiBwb3dlciByb2xlIHN0cmluZworICoKKyAqIFRoaXMgcm91dGluZSBpcyB1c2VkIHRvIGZp bmQgdGhlIHR5cGVjX3JvbGUgYnkgaXRzIHN0cmluZyBuYW1lIG9mCisgKiBwcmVmZXJyZWQgcG93 ZXIgcm9sZShUcnkuU1JDIG9yIFRyeS5TTkspLgorICoKKyAqIFJldHVybnMgdHlwZWNfcm9sZSBp ZiBzdWNjZXNzLCBvdGhlcndpc2UgbmVnYXRpdmUgZXJyb3IgY29kZS4KKyAqLworaW50IHR5cGVj X2ZpbmRfcHJlZmVycmVkX3JvbGUoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlyZXR1cm4gbWF0Y2hf c3RyaW5nKHR5cGVjX3JvbGVzLCBBUlJBWV9TSVpFKHR5cGVjX3JvbGVzKSwgbmFtZSk7Cit9CitF WFBPUlRfU1lNQk9MX0dQTCh0eXBlY19maW5kX3ByZWZlcnJlZF9yb2xlKTsKKworLyoqCisgKiB0 eXBlY19maW5kX2RhdGFfdHlwZSAtIEdldCB0aGUgdHlwZWMgcG9ydCBkYXRhIGNhcGFiaWxpdHkK KyAqIEBuYW1lOiBkYXRhIHR5cGUgc3RyaW5nCisgKgorICogVGhpcyByb3V0aW5lIGlzIHVzZWQg dG8gZmluZCB0aGUgdHlwZWNfcG9ydF9kYXRhIGJ5IGl0cyBzdHJpbmcgbmFtZS4KKyAqCisgKiBS ZXR1cm5zIHR5cGVjX3BvcnRfZGF0YSBpZiBzdWNjZXNzLCBvdGhlcndpc2UgbmVnYXRpdmUgZXJy b3IgY29kZS4KKyAqLworaW50IHR5cGVjX2ZpbmRfZGF0YV90eXBlKGNvbnN0IGNoYXIgKm5hbWUp Cit7CisJcmV0dXJuIG1hdGNoX3N0cmluZyh0eXBlY19kYXRhX3R5cGVzLCBBUlJBWV9TSVpFKHR5 cGVjX2RhdGFfdHlwZXMpLAorCQkJICAgIG5hbWUpOworfQorRVhQT1JUX1NZTUJPTF9HUEwodHlw ZWNfZmluZF9kYXRhX3R5cGUpOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gKi8KIC8qIEFQSSBmb3IgTXVsdGlwbGV4ZXIvRGVNdWx0aXBsZXhlciBTd2l0 Y2hlcyAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi90eXBlYy5oIGIvaW5jbHVk ZS9saW51eC91c2IvdHlwZWMuaAppbmRleCA2NzJiMzliLi4wMGM5M2U3IDEwMDY0NAotLS0gYS9p bmNsdWRlL2xpbnV4L3VzYi90eXBlYy5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3R5cGVjLmgK QEAgLTI2Nyw0ICsyNjcsNyBAQCBpbnQgdHlwZWNfc2V0X29yaWVudGF0aW9uKHN0cnVjdCB0eXBl Y19wb3J0ICpwb3J0LAogCQkJICBlbnVtIHR5cGVjX29yaWVudGF0aW9uIG9yaWVudGF0aW9uKTsK IGludCB0eXBlY19zZXRfbW9kZShzdHJ1Y3QgdHlwZWNfcG9ydCAqcG9ydCwgaW50IG1vZGUpOwog CitpbnQgdHlwZWNfZmluZF9wb3dlcl90eXBlKGNvbnN0IGNoYXIgKm5hbWUpOworaW50IHR5cGVj X2ZpbmRfcHJlZmVycmVkX3JvbGUoY29uc3QgY2hhciAqbmFtZSk7CitpbnQgdHlwZWNfZmluZF9k YXRhX3R5cGUoY29uc3QgY2hhciAqbmFtZSk7CiAjZW5kaWYgLyogX19MSU5VWF9VU0JfVFlQRUNf SCAqLwo=