Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp2440661ybh; Mon, 9 Mar 2020 06:02:54 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvgEBMB99jCRo9DVgP6LCBVfJiEp08Ua1T7vrxUjTx03pKFJ3Jd+QVhrGhVpRNwiGmQkIRO X-Received: by 2002:aca:1e07:: with SMTP id m7mr5908938oic.41.1583758974490; Mon, 09 Mar 2020 06:02:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583758974; cv=none; d=google.com; s=arc-20160816; b=dZLaZ3tQq+pWw1A98JE8xvQaxDD8DIiuC0bj9NMqyM++cbQ8seacxXzyi7ac/GDdlL I/RewNjHAtyLwq1uMSErO6jnHZEceY3797NniY4YTxZWwgftUgod7WjTZmOOFZ9tdtNy BfnG7I4YriL8OtstYdWRyCiahhWkeDrJiRCTbmRTO7Fe0PHyzJr9IzWyojLzCkcklJrK kSJsIe2BAhxc9ScctGWDqkEFc9YeR6Zsaw4r0pcg+d3HUJjKPmhB+clw7QCjISzioDAi v42XzFCyOAm/UaLNOO06j257xZAVfzWQiSQPBJQufM33pQpGlc4c11F/hbZpY1crhF/Z WSPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=rbYE9Ak+6qSUoyreV/dvoLdtFMSuUbe6Rkk7fwpI6hc=; b=y6vUHPYV4D7HUhtk7JgzRk+AWywGo4SNeN9qBVn0fiykl0XjJZ8r0uG2xKQLCHxy1O 7Soczu3qjk3nM2kycsMzsTec+ya8oTPtjhDHD1v3auiP1NrHdrAyH5Tid6qLeuVCFGPj 5/ItBaq01lr7Kguohdo4vAEH+l9uLT0YeWFqvy542o+Ou91asZNmVaU4dteezktBpCl3 wZXyas6l0i31DZFKIyjzkAjm48xsfY0Thk87HA4/fIrJO2m1NicqovtV7/BeV3w0SbGW 5uwWNDdelVU9wVRDQofjfm9+2mOpHYUuAaz6B9USASz5OGrK+2ZiM72nxzqocrqzOblI YGhg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g24si6631498otn.296.2020.03.09.06.02.37; Mon, 09 Mar 2020 06:02:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726521AbgCINAZ (ORCPT + 99 others); Mon, 9 Mar 2020 09:00:25 -0400 Received: from v6.sk ([167.172.42.174]:34444 "EHLO v6.sk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725956AbgCINAZ (ORCPT ); Mon, 9 Mar 2020 09:00:25 -0400 Received: from localhost (v6.sk [IPv6:::1]) by v6.sk (Postfix) with ESMTP id A96E260EEE; Mon, 9 Mar 2020 13:00:23 +0000 (UTC) From: Lubomir Rintel To: Alan Stern Cc: Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Lubomir Rintel Subject: [PATCH 1/2] USB: EHCI: ehci-mv: switch the HSIC HCI to HSIC mode Date: Mon, 9 Mar 2020 14:00:13 +0100 Message-Id: <20200309130014.548168-1-lkundrak@v3.sk> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Turns out the undocumented and reserved bits of port status/control register of the root port need to be set to use the HCI in HSIC mode. Typically the firmware does this, but that is not always good enough, because the bits get lost if the HSIC clock is disabled (e.g. when ehci-mv is build as a module). This supplements commit 7b104f890ade ("USB: EHCI: ehci-mv: add HSIC support"). Signed-off-by: Lubomir Rintel --- drivers/usb/host/ehci-mv.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/usb/host/ehci-mv.c b/drivers/usb/host/ehci-mv.c index bd4f6ef534d96..ddb668963955f 100644 --- a/drivers/usb/host/ehci-mv.c +++ b/drivers/usb/host/ehci-mv.c @@ -110,6 +110,7 @@ static int mv_ehci_probe(struct platform_device *pdev) struct resource *r; int retval = -ENODEV; u32 offset; + u32 status; if (usb_disabled()) return -ENODEV; @@ -213,6 +214,14 @@ static int mv_ehci_probe(struct platform_device *pdev) device_wakeup_enable(hcd->self.controller); } + if (of_usb_get_phy_mode(pdev->dev.of_node) == USBPHY_INTERFACE_MODE_HSIC) { + status = ehci_readl(ehci, &ehci->regs->port_status[0]); + /* These "reserved" bits actually enable HSIC mode. */ + status |= BIT(25); + status &= ~GENMASK(31, 30); + ehci_writel(ehci, status, &ehci->regs->port_status[0]); + } + dev_info(&pdev->dev, "successful find EHCI device with regs 0x%p irq %d" " working in %s mode\n", hcd->regs, hcd->irq, -- 2.25.1