Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp5023916ybl; Tue, 14 Jan 2020 02:09:41 -0800 (PST) X-Google-Smtp-Source: APXvYqzc5N9HeGV0DHL6CqRov3fwt7mJjh6B8XR+bc5lEUzQl0dd6khvXaJM74PYRmniOVQvKgYQ X-Received: by 2002:a9d:1c95:: with SMTP id l21mr16196229ota.271.1578996581761; Tue, 14 Jan 2020 02:09:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578996581; cv=none; d=google.com; s=arc-20160816; b=LnE8RXuWpKrfN2Ulxik+qMG7s4oPm0xmmESfNU4xG2o+i0evbdZZ0ZOy1j0wmLpYdM DFFuNJt3FrrsGA2HaPcEOTXqi1hMx1jfk64muSfiIe4CjuP+OVAWUESWtz7aGh4znCSy 0PaowcCniQfoI0+7uDxqKmGmrTjtRFhfoYIjtyhTBVrHSiHUSixJt54+AYyfNmakYExQ 81+DnWFkDPOmj28oyFGnArnIQB9xa8LZ5CMNbhlRzg7Gh7pyVNhBKJjYdNj5B5dCFFfX FemHcEtMIcMeXQcSx0UK+9WN44yK6dhj+xbJXIqQRt+ZnkY7VBUFUrF2GGno7jR+YQqZ 0LNQ== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=lhaNdNbNFP4tfJlmbKJc0VKc25Vn/0LYZSLETXS1KjQ=; b=Jjr6aWAr5pNTFPyIZoZBx+id2p7jiXsqFnkEgMOur+Llxn0ys5hOqDtBRWyT155ANM 76xhNqz1T2d86jlVSl39knz+C/c5zavTSYU8+cF1t60lVRK2SV4L7PRUiOjKYjq88KbD HQTAqh5bpiIErCkUQin/sNYpkFYQwPD3Ns2Wx730VBAMpJ8M9B+KJdl//Gu4HiffKU30 RL6S0fi/CdU51BQza3jP3GQa0orYO+yLgOihzfH4UgIwHcRK17lxP7OiSo3XNawBs7nB 8olsLcJVpMDomLExPmbpJvRKFf3ooI7tLb8klXhvXfMPPPdfVKmYYlKs1sVmAEcAyc+S oq9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yfl2ikiQ; 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 n2si8144783otk.177.2020.01.14.02.09.31; Tue, 14 Jan 2020 02:09:41 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=yfl2ikiQ; 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 S1731017AbgANKId (ORCPT + 99 others); Tue, 14 Jan 2020 05:08:33 -0500 Received: from mail.kernel.org ([198.145.29.99]:40028 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731005AbgANKIc (ORCPT ); Tue, 14 Jan 2020 05:08:32 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D1BE020678; Tue, 14 Jan 2020 10:08:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578996511; bh=D3VkGmMM0F+62RmYOJvCGnU+mkcmb+KmFgNnf0ojJhg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yfl2ikiQo8SCt+QbpboaqzO8fTK2hAS1HJYrT8z6Iiy1gtwYRO2AUYewcvhT2n42E 0lvAteHBAO2pt3GqQyUKicNrczAauyF0i9LQ4C+sqiCFH6QClwZjdIcbNIeh4EfX+j Oqp5pJlgL2lGq60PCQl3oHVrWt0FXprBSndY4cXY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Merlijn Wajer , Pavel Machek , Sebastian Reichel , Tony Lindgren , Kishon Vijay Abraham I Subject: [PATCH 4.19 42/46] phy: cpcap-usb: Fix error path when no host driver is loaded Date: Tue, 14 Jan 2020 11:01:59 +0100 Message-Id: <20200114094348.395107803@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200114094339.608068818@linuxfoundation.org> References: <20200114094339.608068818@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tony Lindgren commit 4acb0200ab2b07843e3ef5599add3454c7440f03 upstream. If musb_mailbox() returns an error, we must still continue to finish configuring the phy. Otherwise the phy state may end up only half initialized, and this can cause the debug serial console to stop working. And this will happen if the usb driver musb controller is not loaded. Let's fix the issue by adding helper for cpcap_usb_try_musb_mailbox(). Fixes: 6d6ce40f63af ("phy: cpcap-usb: Add CPCAP PMIC USB support") Cc: Merlijn Wajer Cc: Pavel Machek Cc: Sebastian Reichel Signed-off-by: Tony Lindgren Signed-off-by: Kishon Vijay Abraham I Signed-off-by: Greg Kroah-Hartman --- drivers/phy/motorola/phy-cpcap-usb.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) --- a/drivers/phy/motorola/phy-cpcap-usb.c +++ b/drivers/phy/motorola/phy-cpcap-usb.c @@ -207,6 +207,19 @@ static int cpcap_phy_get_ints_state(stru static int cpcap_usb_set_uart_mode(struct cpcap_phy_ddata *ddata); static int cpcap_usb_set_usb_mode(struct cpcap_phy_ddata *ddata); +static void cpcap_usb_try_musb_mailbox(struct cpcap_phy_ddata *ddata, + enum musb_vbus_id_status status) +{ + int error; + + error = musb_mailbox(status); + if (!error) + return; + + dev_dbg(ddata->dev, "%s: musb_mailbox failed: %i\n", + __func__, error); +} + static void cpcap_usb_detect(struct work_struct *work) { struct cpcap_phy_ddata *ddata; @@ -226,9 +239,7 @@ static void cpcap_usb_detect(struct work if (error) goto out_err; - error = musb_mailbox(MUSB_ID_GROUND); - if (error) - goto out_err; + cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); error = regmap_update_bits(ddata->reg, CPCAP_REG_USBC3, CPCAP_BIT_VBUSSTBY_EN, @@ -255,9 +266,7 @@ static void cpcap_usb_detect(struct work error = cpcap_usb_set_usb_mode(ddata); if (error) goto out_err; - error = musb_mailbox(MUSB_ID_GROUND); - if (error) - goto out_err; + cpcap_usb_try_musb_mailbox(ddata, MUSB_ID_GROUND); return; } @@ -267,9 +276,7 @@ static void cpcap_usb_detect(struct work error = cpcap_usb_set_usb_mode(ddata); if (error) goto out_err; - error = musb_mailbox(MUSB_VBUS_VALID); - if (error) - goto out_err; + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_VALID); return; } @@ -279,9 +286,7 @@ static void cpcap_usb_detect(struct work if (error) goto out_err; - error = musb_mailbox(MUSB_VBUS_OFF); - if (error) - goto out_err; + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); dev_dbg(ddata->dev, "set UART mode\n"); @@ -647,9 +652,7 @@ static int cpcap_usb_phy_remove(struct p if (error) dev_err(ddata->dev, "could not set UART mode\n"); - error = musb_mailbox(MUSB_VBUS_OFF); - if (error) - dev_err(ddata->dev, "could not set mailbox\n"); + cpcap_usb_try_musb_mailbox(ddata, MUSB_VBUS_OFF); usb_remove_phy(&ddata->phy); cancel_delayed_work_sync(&ddata->detect_work);