From patchwork Tue Nov 12 10:01:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick DELAUNAY X-Patchwork-Id: 1193400 X-Patchwork-Delegate: marek.vasut@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=st.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=st.com header.i=@st.com header.b="rNdHfOe+"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 47C3F813jYz9sNH for ; Tue, 12 Nov 2019 21:02:03 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 75093C21DFD; Tue, 12 Nov 2019 10:01:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 05B0AC21CB1; Tue, 12 Nov 2019 10:01:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id DD81FC21C8B; Tue, 12 Nov 2019 10:01:50 +0000 (UTC) Received: from mx07-00178001.pphosted.com (mx08-00178001.pphosted.com [91.207.212.93]) by lists.denx.de (Postfix) with ESMTPS id 8BA92C21C2C for ; Tue, 12 Nov 2019 10:01:50 +0000 (UTC) Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx08-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAC9v82h024937; Tue, 12 Nov 2019 11:01:49 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=STMicroelectronics; bh=M4zVNZJCFu2qXvvzOFHMO0eU1522VrQ4k5LeZJ70kqQ=; b=rNdHfOe+kbEBaP3wKWBZGtO1KATCEV0NQHAKR8KJeDtvTJsNUJ74GHcCmG3C0oH4MumF aaPt13GGlLCtU9Wn45iFM+pp0Tsur0y+JOIIeP8EIKTCNPc9Fe3yXtaVLfVHKqSzfWjO qDNMtWj0WOkGsGHj1HjvGm260zdbGD3JEMoogbS4eH0xqPqvSbJ6BHKtHTtmqK+4hXDb nlUjhNk4AzfTjH7URruuTN0hE3zlpLOcT+IM3GUtym176P241dJglLYrEtyFeAXWngcX wpdG17wrbiVz30f+c/NtBueSV5i6Rm7fa+Od9imx9dkpppxmVeGXjr39UfHYal1InOz8 Dg== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2w7psts74d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 Nov 2019 11:01:49 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 7DD7C100039; Tue, 12 Nov 2019 11:01:48 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag6node3.st.com [10.75.127.18]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 6FCB32B1B27; Tue, 12 Nov 2019 11:01:48 +0100 (CET) Received: from localhost (10.75.127.50) by SFHDAG6NODE3.st.com (10.75.127.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 12 Nov 2019 11:01:48 +0100 From: Patrick Delaunay To: Date: Tue, 12 Nov 2019 11:01:39 +0100 Message-ID: <20191112100145.15940-1-patrick.delaunay@st.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 X-Originating-IP: [10.75.127.50] X-ClientProxiedBy: SFHDAG3NODE2.st.com (10.75.127.8) To SFHDAG6NODE3.st.com (10.75.127.18) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95, 18.0.572 definitions=2019-11-12_02:2019-11-11, 2019-11-12 signatures=0 Cc: Marek Vasut , U-Boot STM32 , Joe Hershberger Subject: [U-Boot] [PATCH 1/7] phy: generic: add error trace to detect PHY issue in uclass X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add an error trace for PHY errors directly in generic phy functions provided by PHY uclass. Signed-off-by: Patrick Delaunay --- This patch is requested by Marek Vasut to avoid code duplication in usb host serie for dwc2: See http://patchwork.ozlabs.org/patch/1176048/#2297595 [U-Boot,RESEND,1/5] usb: host: dwc2: add phy support drivers/phy/phy-uclass.c | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c index e201a90c8c..363985b881 100644 --- a/drivers/phy/phy-uclass.c +++ b/drivers/phy/phy-uclass.c @@ -109,56 +109,86 @@ int generic_phy_get_by_name(struct udevice *dev, const char *phy_name, int generic_phy_init(struct phy *phy) { struct phy_ops const *ops; + int ret; if (!phy) return 0; ops = phy_dev_ops(phy->dev); - return ops->init ? ops->init(phy) : 0; + ret = ops->init ? ops->init(phy) : 0; + if (ret) + dev_err(phy->dev, "PHY: Failed to init %s: %d.\n", + phy->dev->name, ret); + + return ret; } int generic_phy_reset(struct phy *phy) { struct phy_ops const *ops; + int ret; if (!phy) return 0; ops = phy_dev_ops(phy->dev); - return ops->reset ? ops->reset(phy) : 0; + ret = ops->reset ? ops->reset(phy) : 0; + if (ret) + dev_err(phy->dev, "PHY: Failed to reset %s: %d.\n", + phy->dev->name, ret); + + return ret; } int generic_phy_exit(struct phy *phy) { struct phy_ops const *ops; + int ret; if (!phy) return 0; ops = phy_dev_ops(phy->dev); - return ops->exit ? ops->exit(phy) : 0; + ret = ops->exit ? ops->exit(phy) : 0; + if (ret) + dev_err(phy->dev, "PHY: Failed to exit %s: %d.\n", + phy->dev->name, ret); + + return ret; } int generic_phy_power_on(struct phy *phy) { struct phy_ops const *ops; + int ret; if (!phy) return 0; ops = phy_dev_ops(phy->dev); - return ops->power_on ? ops->power_on(phy) : 0; + ret = ops->power_on ? ops->power_on(phy) : 0; + if (ret) + dev_err(phy->dev, "PHY: Failed to power on %s: %d.\n", + phy->dev->name, ret); + + return ret; } int generic_phy_power_off(struct phy *phy) { struct phy_ops const *ops; + int ret; if (!phy) return 0; ops = phy_dev_ops(phy->dev); - return ops->power_off ? ops->power_off(phy) : 0; + ret = ops->power_off ? ops->power_off(phy) : 0; + if (ret) + dev_err(phy->dev, "PHY: Failed to power off %s: %d.\n", + phy->dev->name, ret); + + return ret; } UCLASS_DRIVER(phy) = {