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: [v2,6/7] usb: typec: displayport: Export probe and remove functions From: Heikki Krogerus Message-Id: <20190415120931.61328-7-heikki.krogerus@linux.intel.com> Date: Mon, 15 Apr 2019 15:09:30 +0300 To: Greg Kroah-Hartman Cc: Ajay Gupta , linux-usb@vger.kernel.org List-ID: RnJvbTogQWpheSBHdXB0YSA8YWpheWdAbnZpZGlhLmNvbT4KClZpcnR1YWxMaW5rIHN0YW5kYXJk IGV4dGVuZHMgdGhlIERpc3BsYXlQb3J0IEFsdCBNb2RlIGJ5CnV0aWxpemluZyBhbHNvIHRoZSBV U0IgMiBwaW5zIG9uIHRoZSBVU0IgVHlwZS1DIGNvbm5lY3Rvci4KSXQgdXNlcyB0aGUgc2FtZSBt ZXNzYWdlcyBhcyBEaXNwbGF5UG9ydCwgYnV0IG5vdCB0aGUgRFAKU1ZJRC4gQXQgdGhlIHRpbWUg b2Ygd3JpdGluZywgVVNCIElGIGhhcyBub3QgYXNzaWduZWQgYQpTdGFuZGFyZCBJRCAoU0lEKSBm b3IgVmlydHVhbExpbmssIHNvIHRoZSBtYW51ZmFjdHVyZXJzIG9mClZpcnR1YWxMaW5rIGFkYXB0 ZXJzIHVzZSB0aGVpciBWZW5kb3IgSURzIGFzIHRoZSBTVklELgoKU2luY2UgdGhlIFNWSUQgc3Bl Y2lmaWMgY29tbXVuaWNhdGlvbiBpcyBleGFjdGx5IHRoZSBzYW1lIGFzCndpdGggRGlzcGxheVBv cnQgYWx0ZXJuYXRlIG1vZGUsIHRoZXJlIGlzIG5vIG5lZWQgdG8KaW1wbGVtZW50IHNlcGFyYXRl IGRyaXZlciBmb3IgVmlydHVhbExpbmsuIFdlJ2xsIGhhbmRsZSB0aGUKY3VycmVudCBWaXJ0dWFs TGluayBhZGFwdGVycyB3aXRoIHByb2JlIGRyaXZlcnMsIGFuZCBvbmNlCnRoZXJlIGlzIFNWSUQg YXNzaWduZWQgZm9yIGl0LCB3ZSBhZGQgaXQgdG8gdGhlIGRpc3BsYXlwb3J0CmFsdCBtb2RlIGRy aXZlci4KClRvIHN1cHBvcnQgcHJvYmluZyBkcml2ZXJzLCBleHBvcnRpbmcgdGhlIHByb2JlIGFu ZCByZW1vdmUKZnVuY3Rpb25zLCBhbmQgYWxzbyBjaGFuZ2luZyB0aGUgRFBfSEVBREVSIGhlbHBl ciBtYWNybyB0bwp1c2UgdGhlIFNWSUQgb2YgdGhlIGFsdGVybmF0ZSBtb2RlIGRldmljZSBpbnN0 ZWFkIG9mIHRoZQpEaXNwbGF5UG9ydCBhbHQgbW9kZSBTVklELgoKU3VnZ2VzdGVkLWJ5OiBIZWlr a2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IEFqYXkgR3VwdGEgPGFqYXlnQG52aWRpYS5jb20+ClNpZ25lZC1vZmYtYnk6IEhlaWtraSBL cm9nZXJ1cyA8aGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL3Vz Yi90eXBlYy9hbHRtb2Rlcy9kaXNwbGF5cG9ydC5jIHwgMTIgKysrKysrKy0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXNiL3R5cGVjL2FsdG1vZGVzL2Rpc3BsYXlwb3J0LmMgYi9kcml2ZXJzL3VzYi90eXBl Yy9hbHRtb2Rlcy9kaXNwbGF5cG9ydC5jCmluZGV4IDFiMmFmZWIxZWViNi4uNDA5MjI0OGE1OTM2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi90eXBlYy9hbHRtb2Rlcy9kaXNwbGF5cG9ydC5jCisr KyBiL2RyaXZlcnMvdXNiL3R5cGVjL2FsdG1vZGVzL2Rpc3BsYXlwb3J0LmMKQEAgLTE0LDcgKzE0 LDcgQEAKICNpbmNsdWRlIDxsaW51eC91c2IvcGRfdmRvLmg+CiAjaW5jbHVkZSA8bGludXgvdXNi L3R5cGVjX2RwLmg+CiAKLSNkZWZpbmUgRFBfSEVBREVSKGNtZCkJCQkoVkRPKFVTQl9UWVBFQ19E UF9TSUQsIDEsIGNtZCkgfCBcCisjZGVmaW5lIERQX0hFQURFUihfZHAsIGNtZCkJCShWRE8oKF9k cCktPmFsdC0+c3ZpZCwgMSwgY21kKSB8IFwKIAkJCQkJIFZET19PUE9TKFVTQl9UWVBFQ19EUF9N T0RFKSkKIAogZW51bSB7CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIGludCBkcF9hbHRtb2Rl X2NvbmZpZ3VyZWQoc3RydWN0IGRwX2FsdG1vZGUgKmRwKQogCiBzdGF0aWMgaW50IGRwX2FsdG1v ZGVfY29uZmlndXJlX3ZkbShzdHJ1Y3QgZHBfYWx0bW9kZSAqZHAsIHUzMiBjb25mKQogewotCXUz MiBoZWFkZXIgPSBEUF9IRUFERVIoRFBfQ01EX0NPTkZJR1VSRSk7CisJdTMyIGhlYWRlciA9IERQ X0hFQURFUihkcCwgRFBfQ01EX0NPTkZJR1VSRSk7CiAJaW50IHJldDsKIAogCXJldCA9IHR5cGVj X2FsdG1vZGVfbm90aWZ5KGRwLT5hbHQsIFRZUEVDX1NUQVRFX1NBRkUsICZkcC0+ZGF0YSk7CkBA IC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIHZvaWQgZHBfYWx0bW9kZV93b3JrKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKIAkJCWRldl9lcnIoJmRwLT5hbHQtPmRldiwgImZhaWxlZCB0byBlbnRl ciBtb2RlXG4iKTsKIAkJYnJlYWs7CiAJY2FzZSBEUF9TVEFURV9VUERBVEU6Ci0JCWhlYWRlciA9 IERQX0hFQURFUihEUF9DTURfU1RBVFVTX1VQREFURSk7CisJCWhlYWRlciA9IERQX0hFQURFUihk cCwgRFBfQ01EX1NUQVRVU19VUERBVEUpOwogCQl2ZG8gPSAxOwogCQlyZXQgPSB0eXBlY19hbHRt b2RlX3ZkbShkcC0+YWx0LCBoZWFkZXIsICZ2ZG8sIDIpOwogCQlpZiAocmV0KQpAQCAtNTA3LDcg KzUwNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRwX2FsdG1vZGVf Z3JvdXAgPSB7CiAJLmF0dHJzID0gZHBfYWx0bW9kZV9hdHRycywKIH07CiAKLXN0YXRpYyBpbnQg ZHBfYWx0bW9kZV9wcm9iZShzdHJ1Y3QgdHlwZWNfYWx0bW9kZSAqYWx0KQoraW50IGRwX2FsdG1v ZGVfcHJvYmUoc3RydWN0IHR5cGVjX2FsdG1vZGUgKmFsdCkKIHsKIAljb25zdCBzdHJ1Y3QgdHlw ZWNfYWx0bW9kZSAqcG9ydCA9IHR5cGVjX2FsdG1vZGVfZ2V0X3BhcnRuZXIoYWx0KTsKIAlzdHJ1 Y3QgZHBfYWx0bW9kZSAqZHA7CkBAIC01NDUsMTQgKzU0NSwxNiBAQCBzdGF0aWMgaW50IGRwX2Fs dG1vZGVfcHJvYmUoc3RydWN0IHR5cGVjX2FsdG1vZGUgKmFsdCkKIAogCXJldHVybiAwOwogfQor RVhQT1JUX1NZTUJPTF9HUEwoZHBfYWx0bW9kZV9wcm9iZSk7CiAKLXN0YXRpYyB2b2lkIGRwX2Fs dG1vZGVfcmVtb3ZlKHN0cnVjdCB0eXBlY19hbHRtb2RlICphbHQpCit2b2lkIGRwX2FsdG1vZGVf cmVtb3ZlKHN0cnVjdCB0eXBlY19hbHRtb2RlICphbHQpCiB7CiAJc3RydWN0IGRwX2FsdG1vZGUg KmRwID0gdHlwZWNfYWx0bW9kZV9nZXRfZHJ2ZGF0YShhbHQpOwogCiAJc3lzZnNfcmVtb3ZlX2dy b3VwKCZhbHQtPmRldi5rb2JqLCAmZHBfYWx0bW9kZV9ncm91cCk7CiAJY2FuY2VsX3dvcmtfc3lu YygmZHAtPndvcmspOwogfQorRVhQT1JUX1NZTUJPTF9HUEwoZHBfYWx0bW9kZV9yZW1vdmUpOwog CiBzdGF0aWMgY29uc3Qgc3RydWN0IHR5cGVjX2RldmljZV9pZCBkcF90eXBlY19pZFtdID0gewog CXsgVVNCX1RZUEVDX0RQX1NJRCwgVVNCX1RZUEVDX0RQX01PREUgfSwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B0C93C10F0E for ; Mon, 15 Apr 2019 12:09:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8A7F02077C for ; Mon, 15 Apr 2019 12:09:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727397AbfDOMJp (ORCPT ); Mon, 15 Apr 2019 08:09:45 -0400 Received: from mga12.intel.com ([192.55.52.136]:10510 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727340AbfDOMJo (ORCPT ); Mon, 15 Apr 2019 08:09:44 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Apr 2019 05:09:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,353,1549958400"; d="scan'208";a="164850780" Received: from black.fi.intel.com (HELO black.fi.intel.com.) ([10.237.72.28]) by fmsmga001.fm.intel.com with ESMTP; 15 Apr 2019 05:09:42 -0700 From: Heikki Krogerus To: Greg Kroah-Hartman Cc: Ajay Gupta , linux-usb@vger.kernel.org Subject: [PATCH v2 6/7] usb: typec: displayport: Export probe and remove functions Date: Mon, 15 Apr 2019 15:09:30 +0300 Message-Id: <20190415120931.61328-7-heikki.krogerus@linux.intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190415120931.61328-1-heikki.krogerus@linux.intel.com> References: <20190415120931.61328-1-heikki.krogerus@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Message-ID: <20190415120930.q1q0TRdSKJgJlkXlc67ap4LeOsXXkiS9siv2xCchxzo@z> From: Ajay Gupta VirtualLink standard extends the DisplayPort Alt Mode by utilizing also the USB 2 pins on the USB Type-C connector. It uses the same messages as DisplayPort, but not the DP SVID. At the time of writing, USB IF has not assigned a Standard ID (SID) for VirtualLink, so the manufacturers of VirtualLink adapters use their Vendor IDs as the SVID. Since the SVID specific communication is exactly the same as with DisplayPort alternate mode, there is no need to implement separate driver for VirtualLink. We'll handle the current VirtualLink adapters with probe drivers, and once there is SVID assigned for it, we add it to the displayport alt mode driver. To support probing drivers, exporting the probe and remove functions, and also changing the DP_HEADER helper macro to use the SVID of the alternate mode device instead of the DisplayPort alt mode SVID. Suggested-by: Heikki Krogerus Signed-off-by: Ajay Gupta Signed-off-by: Heikki Krogerus --- drivers/usb/typec/altmodes/displayport.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c index 1b2afeb1eeb6..4092248a5936 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -14,7 +14,7 @@ #include #include -#define DP_HEADER(cmd) (VDO(USB_TYPEC_DP_SID, 1, cmd) | \ +#define DP_HEADER(_dp, cmd) (VDO((_dp)->alt->svid, 1, cmd) | \ VDO_OPOS(USB_TYPEC_DP_MODE)) enum { @@ -155,7 +155,7 @@ static int dp_altmode_configured(struct dp_altmode *dp) static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf) { - u32 header = DP_HEADER(DP_CMD_CONFIGURE); + u32 header = DP_HEADER(dp, DP_CMD_CONFIGURE); int ret; ret = typec_altmode_notify(dp->alt, TYPEC_STATE_SAFE, &dp->data); @@ -193,7 +193,7 @@ static void dp_altmode_work(struct work_struct *work) dev_err(&dp->alt->dev, "failed to enter mode\n"); break; case DP_STATE_UPDATE: - header = DP_HEADER(DP_CMD_STATUS_UPDATE); + header = DP_HEADER(dp, DP_CMD_STATUS_UPDATE); vdo = 1; ret = typec_altmode_vdm(dp->alt, header, &vdo, 2); if (ret) @@ -507,7 +507,7 @@ static const struct attribute_group dp_altmode_group = { .attrs = dp_altmode_attrs, }; -static int dp_altmode_probe(struct typec_altmode *alt) +int dp_altmode_probe(struct typec_altmode *alt) { const struct typec_altmode *port = typec_altmode_get_partner(alt); struct dp_altmode *dp; @@ -545,14 +545,16 @@ static int dp_altmode_probe(struct typec_altmode *alt) return 0; } +EXPORT_SYMBOL_GPL(dp_altmode_probe); -static void dp_altmode_remove(struct typec_altmode *alt) +void dp_altmode_remove(struct typec_altmode *alt) { struct dp_altmode *dp = typec_altmode_get_drvdata(alt); sysfs_remove_group(&alt->dev.kobj, &dp_altmode_group); cancel_work_sync(&dp->work); } +EXPORT_SYMBOL_GPL(dp_altmode_remove); static const struct typec_device_id dp_typec_id[] = { { USB_TYPEC_DP_SID, USB_TYPEC_DP_MODE }, -- 2.20.1