From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753162AbdDKAPw (ORCPT ); Mon, 10 Apr 2017 20:15:52 -0400 Received: from muru.com ([72.249.23.125]:44000 "EHLO muru.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751648AbdDKAPv (ORCPT ); Mon, 10 Apr 2017 20:15:51 -0400 From: Tony Lindgren To: Lee Jones , Samuel Ortiz Cc: linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Felipe Balbi , Keshava Munegowda , Marcel Partap , Michael Scott , Roger Quadros , Sebastian Reichel Subject: [PATCH] mfd: omap-usb-tll: Fix inverted bit use for USB TLL mode Date: Mon, 10 Apr 2017 17:15:43 -0700 Message-Id: <20170411001543.1338-1-tony@atomide.com> X-Mailer: git-send-email 2.12.2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 16fa3dc75c22 ("mfd: omap-usb-tll: HOST TLL platform driver") added support for USB TLL, but uses OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF bit the wrong way. The comments in the code are mostly correct, but the inverted use of OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF causes the register to be enabled instead of disabled like the comments say. And the idle mode should be only disabled for UTMIAUTOIDLE while ULPIAUTOIDLE can be enabled. This matches the TLL_CHANNEL_CONF_i register configuration for ehci-tll in the Motorola Linux kernel tree for Wrigley 3G LTE modem on droid 4. Without this patch the modem can only be pinged few times before it stops responding. Also lsub -v output shows errors without this patch. Fixes: 16fa3dc75c22 ("mfd: omap-usb-tll: HOST TLL platform driver") Cc: Felipe Balbi Cc: Keshava Munegowda Cc: Marcel Partap Cc: Michael Scott Cc: Roger Quadros Cc: Sebastian Reichel Signed-off-by: Tony Lindgren --- drivers/mfd/omap-usb-tll.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c --- a/drivers/mfd/omap-usb-tll.c +++ b/drivers/mfd/omap-usb-tll.c @@ -373,12 +373,13 @@ int omap_tll_init(struct usbhs_omap_platform_data *pdata) } else if (pdata->port_mode[i] == OMAP_EHCI_PORT_MODE_TLL) { /* - * Disable AutoIdle, BitStuffing - * and use SDR Mode + * Disable UTMI AutoIdle, BitStuffing + * and use SDR Mode. Enable ULPI AutoIdle. */ - reg &= ~(OMAP_TLL_CHANNEL_CONF_UTMIAUTOIDLE - | OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF - | OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE); + reg &= ~(OMAP_TLL_CHANNEL_CONF_UTMIAUTOIDLE | + OMAP_TLL_CHANNEL_CONF_ULPIDDRMODE); + reg |= OMAP_TLL_CHANNEL_CONF_ULPINOBITSTUFF; + reg |= OMAP_TLL_CHANNEL_CONF_ULPI_ULPIAUTOIDLE; } else if (pdata->port_mode[i] == OMAP_EHCI_PORT_MODE_HSIC) { /* -- 2.12.2