Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp317958pxa; Wed, 19 Aug 2020 02:04:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy3a3exVG/mK2hHHDoBlTnOs8gxWKwVIo1hQfaKYn7b0lL/ATCQmL8Yy9qjVBMSJGhs+0OD X-Received: by 2002:a17:906:9989:: with SMTP id af9mr801226ejc.385.1597827862374; Wed, 19 Aug 2020 02:04:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597827862; cv=none; d=google.com; s=arc-20160816; b=dMZc/Q3XidO4ABgt+jVYyMHNmOLS1OxMvIzfZU6jP+uBhTBXivQuJy+gtz8C1U2K6D ukleWzdz5WtfDj3Sp70xAxGVA6mv8mZSC+q/Ashl4HyMFTPa9NqEvSvYVeX27eETGDtU R7xlIO/FNxON600RlhgfbFc2Gp0EAFIjzmtMtwrCPlcJ5H7otiOQFhKw8JKbNRvuySMZ LAu6QhngrujevIJoKxljoLbq5ZKhRQTfCAL9+wywazFzWlnZkTTSL8o+DuNZ4yL6k6LF 0kWek3rl2LcJia1KQVQrEjv0CWLqnfOVv4o37wzMZeXBzrtuigQo6BzXnPMI6ZlEZIhC Oipw== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=Rtlxq224KOby0anavuRHu4YMg3Xc1Cyp/Fnlmoe/szo=; b=I9w3l89O7l7vrynir0qkJhvmuN2bI96emA7Akc+eeyoT6mGSv7C14Fc6RWs4TNDmUb rXjAeBTp52xKiarwbmzeYeFSCIaRrUA7Mk3xrgtJskQ9TN7aEVTtizvGMMshrlYSZWfz 95ZLp2DExOKNyB6hJhbDORcCqDFPeQUdMsXN8BEF/ngjyWUIoUhsKF47CnemhAf4TKXN AcU2K8Rh3okVbQyuPzihrc96tDN++g4ri9t3t8umMEuUtGLqUGmJ5Ar+ijXJQEPfff8I hAwksDvmJdzoCsdCjHMBcTmIIexMW896f9TjM1uBYpqaY56CL8hr3eXKdZxlNgfMw2t5 xV4Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t2si15639631eji.602.2020.08.19.02.03.58; Wed, 19 Aug 2020 02:04:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726947AbgHSJDA (ORCPT + 99 others); Wed, 19 Aug 2020 05:03:00 -0400 Received: from gecko.sbs.de ([194.138.37.40]:58563 "EHLO gecko.sbs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726825AbgHSJDA (ORCPT ); Wed, 19 Aug 2020 05:03:00 -0400 Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id 07J92gdZ019875 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 19 Aug 2020 11:02:42 +0200 Received: from [167.87.31.209] ([167.87.31.209]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 07J92fJD018281; Wed, 19 Aug 2020 11:02:42 +0200 Subject: Re: [PATCH v4 3/3] phy: omap-usb2-phy: disable PHY charger detect To: Roger Quadros , kishon@ti.com Cc: robh+dt@kernel.org, nsekhar@ti.com, vigneshr@ti.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Bin Liu References: <20200716082252.21266-1-rogerq@ti.com> <20200716082252.21266-4-rogerq@ti.com> From: Jan Kiszka Message-ID: Date: Wed, 19 Aug 2020 11:02:41 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <20200716082252.21266-4-rogerq@ti.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 16.07.20 10:22, Roger Quadros wrote: > AM654x PG1.0 has a silicon bug that D+ is pulled high after POR, which > could cause enumeration failure with some USB hubs. Disabling the > USB2_PHY Charger Detect function will put D+ into the normal state. > > Using property "ti,disable-charger-det" in the DT usb2-phy node to > enable this workaround for AM654x PG1.0. > > This addresses Silicon Errata: > i2075 - "USB2PHY: USB2PHY Charger Detect is Enabled by Default Without VBUS > Presence" > > Signed-off-by: Bin Liu > Signed-off-by: Sekhar Nori > Signed-off-by: Roger Quadros > --- > drivers/phy/ti/phy-omap-usb2.c | 35 +++++++++++++++++++++++++++------- > 1 file changed, 28 insertions(+), 7 deletions(-) > > diff --git a/drivers/phy/ti/phy-omap-usb2.c b/drivers/phy/ti/phy-omap-usb2.c > index cb2dd3230fa7..21c3904d4efc 100644 > --- a/drivers/phy/ti/phy-omap-usb2.c > +++ b/drivers/phy/ti/phy-omap-usb2.c > @@ -26,6 +26,10 @@ > #define USB2PHY_ANA_CONFIG1 0x4c > #define USB2PHY_DISCON_BYP_LATCH BIT(31) > > +#define USB2PHY_CHRG_DET 0x14 > +#define USB2PHY_CHRG_DET_USE_CHG_DET_REG BIT(29) > +#define USB2PHY_CHRG_DET_DIS_CHG_DET BIT(28) > + > /* SoC Specific USB2_OTG register definitions */ > #define AM654_USB2_OTG_PD BIT(8) > #define AM654_USB2_VBUS_DET_EN BIT(5) > @@ -43,6 +47,7 @@ > #define OMAP_USB2_HAS_START_SRP BIT(0) > #define OMAP_USB2_HAS_SET_VBUS BIT(1) > #define OMAP_USB2_CALIBRATE_FALSE_DISCONNECT BIT(2) > +#define OMAP_USB2_DISABLE_CHRG_DET BIT(3) > > struct omap_usb { > struct usb_phy phy; > @@ -236,6 +241,13 @@ static int omap_usb_init(struct phy *x) > omap_usb_writel(phy->phy_base, USB2PHY_ANA_CONFIG1, val); > } > > + if (phy->flags & OMAP_USB2_DISABLE_CHRG_DET) { > + val = omap_usb_readl(phy->phy_base, USB2PHY_CHRG_DET); > + val |= USB2PHY_CHRG_DET_USE_CHG_DET_REG | > + USB2PHY_CHRG_DET_DIS_CHG_DET; > + omap_usb_writel(phy->phy_base, USB2PHY_CHRG_DET, val); > + } > + > return 0; > } > > @@ -366,14 +378,12 @@ static int omap_usb2_probe(struct platform_device *pdev) > phy->mask = phy_data->mask; > phy->power_on = phy_data->power_on; > phy->power_off = phy_data->power_off; > + phy->flags = phy_data->flags; > > - if (phy_data->flags & OMAP_USB2_CALIBRATE_FALSE_DISCONNECT) { > - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - phy->phy_base = devm_ioremap_resource(&pdev->dev, res); > - if (IS_ERR(phy->phy_base)) > - return PTR_ERR(phy->phy_base); > - phy->flags |= OMAP_USB2_CALIBRATE_FALSE_DISCONNECT; > - } > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + phy->phy_base = devm_ioremap_resource(&pdev->dev, res); > + if (IS_ERR(phy->phy_base)) > + return PTR_ERR(phy->phy_base); > > phy->syscon_phy_power = syscon_regmap_lookup_by_phandle(node, > "syscon-phy-power"); > @@ -405,6 +415,17 @@ static int omap_usb2_probe(struct platform_device *pdev) > } > } > > + /* > + * Errata i2075: USB2PHY: USB2PHY Charger Detect is Enabled by > + * Default Without VBUS Presence. > + * > + * AM654x SR1.0 has a silicon bug due to which D+ is pulled high after > + * POR, which could cause enumeration failure with some USB hubs. > + * Disabling the USB2_PHY Charger Detect function will put D+ > + * into the normal state. > + */ > + if (of_property_read_bool(node, "ti,disable-charger-det")) > + phy->flags |= OMAP_USB2_DISABLE_CHRG_DET; > > phy->wkupclk = devm_clk_get(phy->dev, "wkupclk"); > if (IS_ERR(phy->wkupclk)) { > Why a property, rather than SoC detection like in [1] and your previous downstream version? Jan [1] https://patchwork.kernel.org/patch/11710643/ -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux