From patchwork Wed Nov 14 16:19:08 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Grzeschik X-Patchwork-Id: 1742491 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork2.kernel.org (Postfix) with ESMTP id 17FF4DF264 for ; Wed, 14 Nov 2012 16:22:20 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TYfgv-0005qM-Pi; Wed, 14 Nov 2012 16:19:53 +0000 Received: from metis.ext.pengutronix.de ([2001:6f8:1178:4:290:27ff:fe1d:cc33]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TYfgg-0005ml-NO for linux-arm-kernel@lists.infradead.org; Wed, 14 Nov 2012 16:19:40 +0000 Received: from dude.hi.pengutronix.de ([2001:6f8:1178:2:21e:67ff:fe11:9c5c]) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1TYfgL-0006eB-QM; Wed, 14 Nov 2012 17:19:17 +0100 Received: from mgr by dude.hi.pengutronix.de with local (Exim 4.80) (envelope-from ) id 1TYfgK-00006V-7I; Wed, 14 Nov 2012 17:19:16 +0100 From: Michael Grzeschik To: linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 7/9] usb: chipidea: udc: add force-full-speed option Date: Wed, 14 Nov 2012 17:19:08 +0100 Message-Id: <1352909950-32555-8-git-send-email-m.grzeschik@pengutronix.de> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1352909950-32555-1-git-send-email-m.grzeschik@pengutronix.de> References: <1352909950-32555-1-git-send-email-m.grzeschik@pengutronix.de> X-SA-Exim-Connect-IP: 2001:6f8:1178:2:21e:67ff:fe11:9c5c X-SA-Exim-Mail-From: mgr@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20121114_111939_052335_72FEDDD2 X-CRM114-Status: GOOD ( 14.35 ) X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: fabio.estevam@freescale.com, alexander.shishkin@linux.intel.com, gregkh@linuxfoundation.org, devicetree-discuss@lists.ozlabs.org, mkl@pengutronix.de, kernel@pengutronix.de X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org This patch makes it possible to set the chipidea udc into full-speed only mode. It can be set by the oftree property "force-full-speed". Signed-off-by: Michael Grzeschik Signed-off-by: Marc Kleine-Budde --- drivers/usb/chipidea/bits.h | 1 + drivers/usb/chipidea/core.c | 5 +++++ include/linux/usb/chipidea.h | 1 + 3 files changed, 7 insertions(+) diff --git a/drivers/usb/chipidea/bits.h b/drivers/usb/chipidea/bits.h index 3cded5f..85b6b09 100644 --- a/drivers/usb/chipidea/bits.h +++ b/drivers/usb/chipidea/bits.h @@ -51,6 +51,7 @@ #define PORTSC_PTS (BIT(31) | BIT(30)) #define PORTSC_PTW BIT(28) #define PORTSC_STS BIT(29) +#define PORTSC_PFSC BIT(24) /* DEVLC */ #define DEVLC_PSPD (0x03UL << 25) diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 7e80f1b..bc99cea 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -230,6 +230,9 @@ void hw_portsc_configure(struct ci13xxx *ci) hw_write(ci, OP_PORTSC, PORTSC_PTS, 0x3 << ffs_nr(PORTSC_PTS)); hw_write(ci, OP_PORTSC, PORTSC_STS, 0x1 << ffs_nr(PORTSC_STS)); } + + if (ci->platdata->flags & CI13XXX_PORTSC_PFSC) + hw_write(ci, OP_PORTSC, PORTSC_PFSC, 0x1 << ffs_nr(PORTSC_PFSC)); } /** @@ -566,6 +569,8 @@ void ci13xxx_get_dr_flags(struct device_node *of_node, struct ci13xxx_platform_d pr_err("no phy interface defined\n"); } + if (of_find_property(of_node, "force-full-speed", NULL)) + pdata->flags |= CI13XXX_PORTSC_PFSC; } EXPORT_SYMBOL_GPL(ci13xxx_get_dr_flags); diff --git a/include/linux/usb/chipidea.h b/include/linux/usb/chipidea.h index cafca23..9ffe105 100644 --- a/include/linux/usb/chipidea.h +++ b/include/linux/usb/chipidea.h @@ -26,6 +26,7 @@ struct ci13xxx_platform_data { #define CI13XXX_PORTSC_PTS_UTMI BIT(8) #define CI13XXX_PORTSC_PTS_ULPI BIT(9) #define CI13XXX_PORTSC_PTS_FSLS BIT(10) +#define CI13XXX_PORTSC_PFSC BIT(11) #define CI13XXX_DR_MODE_MASK \ (CI13XXX_DR_MODE_HOST | CI13XXX_DR_MODE_PERIPHERAL)