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: [2/2] usb: xhci-mtk: Do not create shared_hcd if no USB 3.0 port available From: Nicolas Boichat Message-Id: <20190502045631.229386-2-drinkcat@chromium.org> Date: Thu, 2 May 2019 12:56:30 +0800 To: Greg Kroah-Hartman Cc: Mathias Nyman , Matthias Brugger , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Khuong Dinh , Hoan Tran List-ID: V2hlbiB0aGUgY29udHJvbGxlciBvbmx5IHN1cHBvcnRzIFVTQiAyLjAsIGRvIG5vdCBldmVuIGNy ZWF0ZSB0aGUKVVNCIDMuMCBoY2Qvcm9vdCBodWIuCgpTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEJv aWNoYXQgPGRyaW5rY2F0QGNocm9taXVtLm9yZz4KLS0tCiBkcml2ZXJzL3VzYi9ob3N0L3hoY2kt bXRrLmMgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy91c2IvaG9zdC94aGNpLW10ay5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLW10ay5j CmluZGV4IDAyNmZlMTg5NzJkM2U1Yi4uMTg5ZjVkYzYxNGU2ZTA1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3VzYi9ob3N0L3hoY2ktbXRrLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLW10ay5j CkBAIC01MjcsMjMgKzUyNywyOCBAQCBzdGF0aWMgaW50IHhoY2lfbXRrX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJeGhjaS0+aW1vZF9pbnRlcnZhbCA9IDUwMDA7CiAJZGV2 aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgImltb2QtaW50ZXJ2YWwtbnMiLCAmeGhjaS0+aW1v ZF9pbnRlcnZhbCk7CiAKLQl4aGNpLT5zaGFyZWRfaGNkID0gdXNiX2NyZWF0ZV9zaGFyZWRfaGNk KGRyaXZlciwgZGV2LAorCS8qIE9ubHkgY3JlYXRlIHNoYXJlZF9oY2Qgd2hlbiBVU0IzLjAgcG9y dCBpcyBhdmFpbGFibGUuICovCisJaWYgKHhoY2ktPnVzYjNfcmh1Yi5udW1fcG9ydHMgPiAwKSB7 CisJCXhoY2ktPnNoYXJlZF9oY2QgPSB1c2JfY3JlYXRlX3NoYXJlZF9oY2QoZHJpdmVyLCBkZXYs CiAJCQlkZXZfbmFtZShkZXYpLCBoY2QpOwotCWlmICgheGhjaS0+c2hhcmVkX2hjZCkgewotCQly ZXQgPSAtRU5PTUVNOwotCQlnb3RvIGRpc2FibGVfZGV2aWNlX3dha2V1cDsKKwkJaWYgKCF4aGNp LT5zaGFyZWRfaGNkKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBkaXNhYmxlX2Rldmlj ZV93YWtldXA7CisJCX0KIAl9CiAKIAlyZXQgPSB1c2JfYWRkX2hjZChoY2QsIGlycSwgSVJRRl9T SEFSRUQpOwogCWlmIChyZXQpCiAJCWdvdG8gcHV0X3VzYjNfaGNkOwogCi0JaWYgKEhDQ19NQVhf UFNBKHhoY2ktPmhjY19wYXJhbXMpID49IDQpCi0JCXhoY2ktPnNoYXJlZF9oY2QtPmNhbl9kb19z dHJlYW1zID0gMTsKKwlpZiAoeGhjaS0+dXNiM19yaHViLm51bV9wb3J0cyA+IDApIHsKKwkJaWYg KEhDQ19NQVhfUFNBKHhoY2ktPmhjY19wYXJhbXMpID49IDQpCisJCQl4aGNpLT5zaGFyZWRfaGNk LT5jYW5fZG9fc3RyZWFtcyA9IDE7CiAKLQlyZXQgPSB1c2JfYWRkX2hjZCh4aGNpLT5zaGFyZWRf aGNkLCBpcnEsIElSUUZfU0hBUkVEKTsKLQlpZiAocmV0KQotCQlnb3RvIGRlYWxsb2NfdXNiMl9o Y2Q7CisJCXJldCA9IHVzYl9hZGRfaGNkKHhoY2ktPnNoYXJlZF9oY2QsIGlycSwgSVJRRl9TSEFS RUQpOworCQlpZiAocmV0KQorCQkJZ290byBkZWFsbG9jX3VzYjJfaGNkOworCX0KIAogCXJldHVy biAwOwogCkBAIC01NTIsNyArNTU3LDggQEAgc3RhdGljIGludCB4aGNpX210a19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiBwdXRfdXNiM19oY2Q6CiAJeGhjaV9tdGtfc2No X2V4aXQobXRrKTsKLQl1c2JfcHV0X2hjZCh4aGNpLT5zaGFyZWRfaGNkKTsKKwlpZiAoeGhjaS0+ c2hhcmVkX2hjZCkKKwkJdXNiX3B1dF9oY2QoeGhjaS0+c2hhcmVkX2hjZCk7CiAKIGRpc2FibGVf ZGV2aWNlX3dha2V1cDoKIAlkZXZpY2VfaW5pdF93YWtldXAoZGV2LCBmYWxzZSk7CkBAIC01Nzks MTIgKzU4NSwxNCBAQCBzdGF0aWMgaW50IHhoY2lfbXRrX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpkZXYpCiAJc3RydWN0IHhoY2lfaGNkCSp4aGNpID0gaGNkX3RvX3hoY2koaGNkKTsK IAlzdHJ1Y3QgdXNiX2hjZCAgKnNoYXJlZF9oY2QgPSB4aGNpLT5zaGFyZWRfaGNkOwogCi0JdXNi X3JlbW92ZV9oY2Qoc2hhcmVkX2hjZCk7CisJaWYgKHNoYXJlZF9oY2QpCisJCXVzYl9yZW1vdmVf aGNkKHNoYXJlZF9oY2QpOwogCXhoY2ktPnNoYXJlZF9oY2QgPSBOVUxMOwogCWRldmljZV9pbml0 X3dha2V1cCgmZGV2LT5kZXYsIGZhbHNlKTsKIAogCXVzYl9yZW1vdmVfaGNkKGhjZCk7Ci0JdXNi X3B1dF9oY2Qoc2hhcmVkX2hjZCk7CisJaWYgKHNoYXJlZF9oY2QpCisJCXVzYl9wdXRfaGNkKHNo YXJlZF9oY2QpOwogCXVzYl9wdXRfaGNkKGhjZCk7CiAJeGhjaV9tdGtfc2NoX2V4aXQobXRrKTsK IAl4aGNpX210a19jbGtzX2Rpc2FibGUobXRrKTsKQEAgLTYxMSw4ICs2MTksMTAgQEAgc3RhdGlj IGludCBfX21heWJlX3VudXNlZCB4aGNpX210a19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikK IAl4aGNpX2RiZyh4aGNpLCAiJXM6IHN0b3AgcG9ydCBwb2xsaW5nXG4iLCBfX2Z1bmNfXyk7CiAJ Y2xlYXJfYml0KEhDRF9GTEFHX1BPTExfUkgsICZoY2QtPmZsYWdzKTsKIAlkZWxfdGltZXJfc3lu YygmaGNkLT5yaF90aW1lcik7Ci0JY2xlYXJfYml0KEhDRF9GTEFHX1BPTExfUkgsICZ4aGNpLT5z aGFyZWRfaGNkLT5mbGFncyk7Ci0JZGVsX3RpbWVyX3N5bmMoJnhoY2ktPnNoYXJlZF9oY2QtPnJo X3RpbWVyKTsKKwlpZiAoeGhjaS0+c2hhcmVkX2hjZCkgeworCQljbGVhcl9iaXQoSENEX0ZMQUdf UE9MTF9SSCwgJnhoY2ktPnNoYXJlZF9oY2QtPmZsYWdzKTsKKwkJZGVsX3RpbWVyX3N5bmMoJnho Y2ktPnNoYXJlZF9oY2QtPnJoX3RpbWVyKTsKKwl9CiAKIAl4aGNpX210a19ob3N0X2Rpc2FibGUo bXRrKTsKIAl4aGNpX210a19jbGtzX2Rpc2FibGUobXRrKTsKQEAgLTYzMSw4ICs2NDEsMTAgQEAg c3RhdGljIGludCBfX21heWJlX3VudXNlZCB4aGNpX210a19yZXN1bWUoc3RydWN0IGRldmljZSAq ZGV2KQogCXhoY2lfbXRrX2hvc3RfZW5hYmxlKG10ayk7CiAKIAl4aGNpX2RiZyh4aGNpLCAiJXM6 IHJlc3RhcnQgcG9ydCBwb2xsaW5nXG4iLCBfX2Z1bmNfXyk7Ci0Jc2V0X2JpdChIQ0RfRkxBR19Q T0xMX1JILCAmeGhjaS0+c2hhcmVkX2hjZC0+ZmxhZ3MpOwotCXVzYl9oY2RfcG9sbF9yaF9zdGF0 dXMoeGhjaS0+c2hhcmVkX2hjZCk7CisJaWYgKHhoY2ktPnNoYXJlZF9oY2QpIHsKKwkJc2V0X2Jp dChIQ0RfRkxBR19QT0xMX1JILCAmeGhjaS0+c2hhcmVkX2hjZC0+ZmxhZ3MpOworCQl1c2JfaGNk X3BvbGxfcmhfc3RhdHVzKHhoY2ktPnNoYXJlZF9oY2QpOworCX0KIAlzZXRfYml0KEhDRF9GTEFH X1BPTExfUkgsICZoY2QtPmZsYWdzKTsKIAl1c2JfaGNkX3BvbGxfcmhfc3RhdHVzKGhjZCk7CiAJ cmV0dXJuIDA7Cg== 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=-9.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,T_DKIMWL_WL_HIGH,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 17084C43219 for ; Thu, 2 May 2019 04:56:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C9F6D21783 for ; Thu, 2 May 2019 04:56:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="kjA0IkL2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726194AbfEBE4k (ORCPT ); Thu, 2 May 2019 00:56:40 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:36359 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725616AbfEBE4j (ORCPT ); Thu, 2 May 2019 00:56:39 -0400 Received: by mail-pg1-f194.google.com with SMTP id 85so501654pgc.3 for ; Wed, 01 May 2019 21:56:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0uEhbXfTbBJ1Z2Kv01LPBYrX3ZS5Rz9y5kPzobESOBI=; b=kjA0IkL2lphoYXjpaZd0JAuzOk4YKKTN2UCTNfqgYOGUz6zgSRQY1cyglpFLe9gZ1n GRnS9XNzri/D5ysNkPqqdDRMk3KRSwovN2qpgkhVkTiuhC4agg/NTutb4WuN47fVcZCF UUIO5robvSzsJ+u7sWK47XdnbhZImedX79T2Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0uEhbXfTbBJ1Z2Kv01LPBYrX3ZS5Rz9y5kPzobESOBI=; b=D0yrRKbRryITS+KazTfZubDjtV4nsYmvGlFsPy0qnGduuYzCuKZ/XCFDIr1gzNBjnq XgnbzbJUE/KpVGHcvpOWAT9wjoi0dmqRQ/FBu5L5YTyVm6ezmBCwoXPS1tAJywE5h/OQ 8/kzlb9jX1gWHerjEVhhRWaSZRDouKMcV9tIliTUT1/i3cRcMIqUF93J1kdHdMN/gRGQ pO8xfmIjrdFNc94SKfQasIB5QsTjxWjUJkND56VW+HOYPKfQfCol7MxF76JNOi/4iNRR zD536BQ5Vrdc+jxUYghHIEYGwYfcsGUYdVtSu3IFo0z/3DfZfLY49B0B3eKf1rrqHVLo 6IAw== X-Gm-Message-State: APjAAAWJvUbHA1dYqhTRWmgDH4a9DBr0M2TL/r8dXV6CmBglihQHup0X BPxCT7aQsa0VPNH3R19Fpa1O7w== X-Google-Smtp-Source: APXvYqxb8f1zrcqX3NddJRYvEW77UkD+Um0XCa7fQsUuySsX73xUDBYJ7k8eUOzlL/onT4KImTFWUg== X-Received: by 2002:aa7:800e:: with SMTP id j14mr1786208pfi.157.1556772998334; Wed, 01 May 2019 21:56:38 -0700 (PDT) Received: from drinkcat2.tpe.corp.google.com ([2401:fa00:1:b:d8b7:33af:adcb:b648]) by smtp.gmail.com with ESMTPSA id a6sm64239470pfn.181.2019.05.01.21.56.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 May 2019 21:56:37 -0700 (PDT) From: Nicolas Boichat To: Greg Kroah-Hartman Cc: Mathias Nyman , Matthias Brugger , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Khuong Dinh , Hoan Tran Subject: [PATCH 2/2] usb: xhci-mtk: Do not create shared_hcd if no USB 3.0 port available Date: Thu, 2 May 2019 12:56:30 +0800 Message-Id: <20190502045631.229386-2-drinkcat@chromium.org> X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog In-Reply-To: <20190502045631.229386-1-drinkcat@chromium.org> References: <20190502045631.229386-1-drinkcat@chromium.org> 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: <20190502045630.JkcL0EWdyAGjUfsiPFF0LcCdU7AkFUVceEtwswYs7X0@z> When the controller only supports USB 2.0, do not even create the USB 3.0 hcd/root hub. Signed-off-by: Nicolas Boichat --- drivers/usb/host/xhci-mtk.c | 44 +++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c index 026fe18972d3e5b..189f5dc614e6e05 100644 --- a/drivers/usb/host/xhci-mtk.c +++ b/drivers/usb/host/xhci-mtk.c @@ -527,23 +527,28 @@ static int xhci_mtk_probe(struct platform_device *pdev) xhci->imod_interval = 5000; device_property_read_u32(dev, "imod-interval-ns", &xhci->imod_interval); - xhci->shared_hcd = usb_create_shared_hcd(driver, dev, + /* Only create shared_hcd when USB3.0 port is available. */ + if (xhci->usb3_rhub.num_ports > 0) { + xhci->shared_hcd = usb_create_shared_hcd(driver, dev, dev_name(dev), hcd); - if (!xhci->shared_hcd) { - ret = -ENOMEM; - goto disable_device_wakeup; + if (!xhci->shared_hcd) { + ret = -ENOMEM; + goto disable_device_wakeup; + } } ret = usb_add_hcd(hcd, irq, IRQF_SHARED); if (ret) goto put_usb3_hcd; - if (HCC_MAX_PSA(xhci->hcc_params) >= 4) - xhci->shared_hcd->can_do_streams = 1; + if (xhci->usb3_rhub.num_ports > 0) { + if (HCC_MAX_PSA(xhci->hcc_params) >= 4) + xhci->shared_hcd->can_do_streams = 1; - ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED); - if (ret) - goto dealloc_usb2_hcd; + ret = usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED); + if (ret) + goto dealloc_usb2_hcd; + } return 0; @@ -552,7 +557,8 @@ static int xhci_mtk_probe(struct platform_device *pdev) put_usb3_hcd: xhci_mtk_sch_exit(mtk); - usb_put_hcd(xhci->shared_hcd); + if (xhci->shared_hcd) + usb_put_hcd(xhci->shared_hcd); disable_device_wakeup: device_init_wakeup(dev, false); @@ -579,12 +585,14 @@ static int xhci_mtk_remove(struct platform_device *dev) struct xhci_hcd *xhci = hcd_to_xhci(hcd); struct usb_hcd *shared_hcd = xhci->shared_hcd; - usb_remove_hcd(shared_hcd); + if (shared_hcd) + usb_remove_hcd(shared_hcd); xhci->shared_hcd = NULL; device_init_wakeup(&dev->dev, false); usb_remove_hcd(hcd); - usb_put_hcd(shared_hcd); + if (shared_hcd) + usb_put_hcd(shared_hcd); usb_put_hcd(hcd); xhci_mtk_sch_exit(mtk); xhci_mtk_clks_disable(mtk); @@ -611,8 +619,10 @@ static int __maybe_unused xhci_mtk_suspend(struct device *dev) xhci_dbg(xhci, "%s: stop port polling\n", __func__); clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); del_timer_sync(&hcd->rh_timer); - clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); - del_timer_sync(&xhci->shared_hcd->rh_timer); + if (xhci->shared_hcd) { + clear_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); + del_timer_sync(&xhci->shared_hcd->rh_timer); + } xhci_mtk_host_disable(mtk); xhci_mtk_clks_disable(mtk); @@ -631,8 +641,10 @@ static int __maybe_unused xhci_mtk_resume(struct device *dev) xhci_mtk_host_enable(mtk); xhci_dbg(xhci, "%s: restart port polling\n", __func__); - set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); - usb_hcd_poll_rh_status(xhci->shared_hcd); + if (xhci->shared_hcd) { + set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); + usb_hcd_poll_rh_status(xhci->shared_hcd); + } set_bit(HCD_FLAG_POLL_RH, &hcd->flags); usb_hcd_poll_rh_status(hcd); return 0; -- 2.21.0.593.g511ec345e18-goog