From patchwork Sun Sep 29 17:02:22 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Murray X-Patchwork-Id: 278878 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id AFB652C00C3 for ; Mon, 30 Sep 2013 03:04:57 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BCCA84A094; Sun, 29 Sep 2013 19:04:55 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y4iwaUjFREf0; Sun, 29 Sep 2013 19:04:55 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 304234A087; Sun, 29 Sep 2013 19:04:50 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7463D4A087 for ; Sun, 29 Sep 2013 19:04:43 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CcS6Uon7Ll2g for ; Sun, 29 Sep 2013 19:04:38 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-we0-f174.google.com (mail-we0-f174.google.com [74.125.82.174]) by theia.denx.de (Postfix) with ESMTPS id 429424A081 for ; Sun, 29 Sep 2013 19:04:33 +0200 (CEST) Received: by mail-we0-f174.google.com with SMTP id q58so4564917wes.19 for ; Sun, 29 Sep 2013 10:04:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=yXl2wbLi2fB0QNvwRzEU/N/enGKP9er0d2+qVhH81Ik=; b=SjIT1bgDejI3Xfs1lBX4xpFMAHPTZqTBZ3PrVPe8lXRy9ADp/5WH07NcN34RuGMjEW eja4jSKf1iaBq2If2kSCVkA2RhK4qOeFQt2+EMZVZcN9Xr/yqPtYi5fVkxR4u4A/csD9 9uIEp2eNA10Pf8b1YsuwvnnNayqTwQoYC5JK7eOwCet9NW9IJoHRx89Z5TwlyVeMZIS9 DSmsGfVeCo1Yry/resdh6FeuBDMUqU1b900+qjaYoM6LUgsjXVHffsNZsPD+mb/x4/9Z Xj4GT9neYNUtKK7SiScWHAOVj8TBvKPUjRCvDbYuwOR1QLAWlcHdHIi8eEZVQxfGXFbp OJlA== X-Gm-Message-State: ALoCoQmZLMqCCIL+1ZgY8i4if8c3raw+ZWNDT0hLWLu9Fo1Efzb8slKI3jmGQL1NBQ4CA23btHSP X-Received: by 10.180.189.132 with SMTP id gi4mr10537080wic.19.1380474271542; Sun, 29 Sep 2013 10:04:31 -0700 (PDT) Received: from localhost.localdomain (host-92-17-188-81.as13285.net. [92.17.188.81]) by mx.google.com with ESMTPSA id i8sm17510725wiy.6.1969.12.31.16.00.00 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 29 Sep 2013 10:04:30 -0700 (PDT) From: Andrew Murray To: u-boot@lists.denx.de Date: Sun, 29 Sep 2013 18:02:22 +0100 Message-Id: <1380474142-16686-1-git-send-email-amurray@embedded-bits.co.uk> X-Mailer: git-send-email 1.7.9.5 Cc: Marek Vasut , Tom Rini Subject: [U-Boot] [PATCH v2] usb: Prevent using reserved registers on DM36x usb X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de The musb driver defines and uses MUSB_CSR0_H_DIS_PING, however this bit is reserved on the DM36x. Thus this patch ensures that the reserved bit is not accesssed. It has been observed that some USB devices will fail to enumerate with errors such as 'error in inquiry' without this patch. See http://www.ti.com/litv/pdf/sprufh9a for details. Cc: Marek Vasut Cc: Tom Rini Signed-off-by: Andrew Murray Acked-by: Marek Vasut --- drivers/usb/musb/musb_hcd.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c index 3dc5d6a..ae39c4a 100644 --- a/drivers/usb/musb/musb_hcd.c +++ b/drivers/usb/musb/musb_hcd.c @@ -417,8 +417,12 @@ static int ctrlreq_out_data_phase(struct usb_device *dev, u32 len, void *buffer) /* Set TXPKTRDY bit */ csr = readw(&musbr->txcsr); - writew(csr | MUSB_CSR0_H_DIS_PING | MUSB_CSR0_TXPKTRDY, - &musbr->txcsr); + + csr |= MUSB_CSR0_TXPKTRDY; +#if !defined(CONFIG_SOC_DM365) + csr |= MUSB_CSR0_H_DIS_PING; +#endif + writew(csr, &musbr->txcsr); result = wait_until_ep0_ready(dev, MUSB_CSR0_TXPKTRDY); if (result < 0) break; @@ -439,8 +443,10 @@ static int ctrlreq_out_status_phase(struct usb_device *dev) /* Set the StatusPkt bit */ csr = readw(&musbr->txcsr); - csr |= (MUSB_CSR0_H_DIS_PING | MUSB_CSR0_TXPKTRDY | - MUSB_CSR0_H_STATUSPKT); + csr |= (MUSB_CSR0_TXPKTRDY | MUSB_CSR0_H_STATUSPKT); +#if !defined(CONFIG_SOC_DM365) + csr |= MUSB_CSR0_H_DIS_PING; +#endif writew(csr, &musbr->txcsr); /* Wait until TXPKTRDY bit is cleared */ @@ -457,7 +463,10 @@ static int ctrlreq_in_status_phase(struct usb_device *dev) int result; /* Set the StatusPkt bit and ReqPkt bit */ - csr = MUSB_CSR0_H_DIS_PING | MUSB_CSR0_H_REQPKT | MUSB_CSR0_H_STATUSPKT; + csr = MUSB_CSR0_H_REQPKT | MUSB_CSR0_H_STATUSPKT; +#if !defined(CONFIG_SOC_DM365) + csr |= MUSB_CSR0_H_DIS_PING; +#endif writew(csr, &musbr->txcsr); result = wait_until_ep0_ready(dev, MUSB_CSR0_H_REQPKT);