Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp737352ybh; Sun, 12 Jul 2020 22:54:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw41fX3+vosY68Vrw6iDM3XPAWFIjpynNs7LbX/mBJQ9p+0hFGe5ut0oe+MXoUDG38zUw8b X-Received: by 2002:a17:906:ca0e:: with SMTP id jt14mr70609827ejb.325.1594619641743; Sun, 12 Jul 2020 22:54:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594619641; cv=none; d=google.com; s=arc-20160816; b=PtnlK5nsKWmeVuRfxaQpFNS/hS4nW6xVbrjNCe53pomrwXdG4CWjq1WaMDGOHOcsjZ 4I1dEB6edFXyc2LvQW3yLK88PLNezKcwVtMIdoFKun1Pu/fcBacExScFtXe8HOC/vlzm T1Xp1WKjf1tDs4WitHPje+H8BTJpmuTmYGzFmDxFf/jW6sBTfbJdNQbAlNz81jza7Mwq mzTI/qARuxc4LVBvKezrVKdfk8JDnAeswJMl046NuZo3Ha0dYiH257LIpldGSky+uCv7 3CqTUiXVdo3u6nTdll4haykxhD9zVYUCBJric8NRc20rdo3lX0h5kMaKv/9oKVBNEQZZ qssA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=rQEousQDYrkB9MYS/TUsKkImLC2OE7JK46Yhxp/ZEPA=; b=M4gZpVR3EgVG8uXlaaqKNUTZ27PEjdOHZrzgYHvZkNwIHN9uvBIuLIl4GASC8fP7M3 O2vnrQFyRmpBChwUl4Qirm3Sk9PKCsDrn4AQjNuITBvaqdGh4b/7zO0+ht1Fnub7xFIW XXH0CJKW5vMF/iGFyGEftygPz2ooQY15VxZW2ZK2UZJwk5cbLVGcrh7WsOpJkgsJpvU3 ejtFiij9qeOrxZDP349tr8ETyMoePGzLE20tm7yrrsA9UD7GRx6o/+rqC9skxvZ4FlZB 3YIrd7rX/jd+JBM7dDlXeFvdIfUevX/9mE6zGpr0L1tNydJZmaJT0BpYB8gDrne1xiCq tljg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=bzclSa4F; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id md1si8068091ejb.749.2020.07.12.22.53.39; Sun, 12 Jul 2020 22:54:01 -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; dkim=pass header.i=@kernel.org header.s=default header.b=bzclSa4F; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728048AbgGMFv1 (ORCPT + 99 others); Mon, 13 Jul 2020 01:51:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:35798 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725804AbgGMFv1 (ORCPT ); Mon, 13 Jul 2020 01:51:27 -0400 Received: from localhost (unknown [122.182.251.219]) (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 CF8C720724; Mon, 13 Jul 2020 05:51:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1594619486; bh=WqjUMsam9TwPcBeZzSP9ccMJT5xrxITFuIxjeD2l9z4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=bzclSa4FVIcYVTzLrOLcMdpqeHRmywH5zXkJj3m51Gm4gcCcmdmamqHjrcXaBk6xv FO+yEJOG1q8pQz/iLG0RiGvnana22+gsx5JVGzWM6YC1DL0cOrJjqxqaT2GHGSloQh z8/XjUQOgqY2hP9u8XwPSw8iGw1WKN7ww8YxOO2Q= Date: Mon, 13 Jul 2020 11:21:22 +0530 From: Vinod Koul To: =?iso-8859-1?Q?=C1lvaro_Fern=E1ndez?= Rojas Cc: simon@fire.lp0.eu, jonas.gorski@gmail.com, kishon@ti.com, robh+dt@kernel.org, f.fainelli@gmail.com, bcm-kernel-feedback-list@broadcom.com, p.zabel@pengutronix.de, krzk@kernel.org, gregkh@linuxfoundation.org, alcooperx@gmail.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v5 2/2] phy: bcm63xx-usbh: Add BCM63xx USBH driver Message-ID: <20200713055122.GA34333@vkoul-mobl> References: <20200619100035.4032596-1-noltari@gmail.com> <20200619100035.4032596-3-noltari@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20200619100035.4032596-3-noltari@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 19-06-20, 12:00, ?lvaro Fern?ndez Rojas wrote: > Add BCM63xx USBH PHY driver for BMIPS. > > Signed-off-by: ?lvaro Fern?ndez Rojas > --- > v5: use devm_reset_control_get_exclusive. > v4: several improvements: > - Use devm_platform_ioremap_resource. > - Code cleanups. > - Improve device mode config: > - Move USBH_SWAP_CONTROL device mode value to variant variable. > - Set USBH_UTMI_CONTROL1 register value (variant variable). > v3: introduce changes suggested by Florian: > - Add support for device mode. > v2: introduce changes suggested by Florian: > - Drop OF dependency (use device_get_match_data). > - Drop __initconst from variant tables. > - Use devm_clk_get_optional. > > drivers/phy/broadcom/Kconfig | 9 + > drivers/phy/broadcom/Makefile | 1 + > drivers/phy/broadcom/phy-bcm63xx-usbh.c | 457 ++++++++++++++++++++++++ > 3 files changed, 467 insertions(+) > create mode 100644 drivers/phy/broadcom/phy-bcm63xx-usbh.c > > diff --git a/drivers/phy/broadcom/Kconfig b/drivers/phy/broadcom/Kconfig > index b29f11c19155..a7889df8c541 100644 > --- a/drivers/phy/broadcom/Kconfig > +++ b/drivers/phy/broadcom/Kconfig > @@ -2,6 +2,15 @@ > # > # Phy drivers for Broadcom platforms > # > +config PHY_BCM63XX_USBH > + tristate "BCM63xx USBH PHY driver" > + depends on BMIPS_GENERIC || COMPILE_TEST > + select GENERIC_PHY > + default BMIPS_GENERIC you depend on BMIPS_GENERIC and also use as default? > +static int __init bcm63xx_usbh_phy_probe(struct platform_device *pdev) > +{ > + struct device *dev = &pdev->dev; > + struct bcm63xx_usbh_phy *usbh; > + const struct bcm63xx_usbh_phy_variant *variant; > + struct phy *phy; > + struct phy_provider *phy_provider; > + > + usbh = devm_kzalloc(dev, sizeof(*usbh), GFP_KERNEL); > + if (!usbh) > + return -ENOMEM; > + > + variant = device_get_match_data(dev); > + if (!variant) > + return -EINVAL; > + usbh->variant = variant; > + > + usbh->base = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(usbh->base)) > + return PTR_ERR(usbh->base); > + > + usbh->reset = devm_reset_control_get_exclusive(dev, NULL); > + if (IS_ERR(usbh->reset)) { > + if (PTR_ERR(usbh->reset) != -EPROBE_DEFER) > + dev_err(dev, "failed to get reset\n"); > + return PTR_ERR(usbh->reset); > + } > + > + usbh->usbh_clk = devm_clk_get_optional(dev, "usbh"); > + if (IS_ERR(usbh->usbh_clk)) > + return PTR_ERR(usbh->usbh_clk); > + > + usbh->usb_ref_clk = devm_clk_get_optional(dev, "usb_ref"); > + if (IS_ERR(usbh->usb_ref_clk)) > + return PTR_ERR(usbh->usb_ref_clk); > + > + phy = devm_phy_create(dev, NULL, &bcm63xx_usbh_phy_ops); > + if (IS_ERR(phy)) { > + dev_err(dev, "failed to create PHY\n"); > + return PTR_ERR(phy); > + } > + > + platform_set_drvdata(pdev, usbh); > + phy_set_drvdata(phy, usbh); > + > + phy_provider = devm_of_phy_provider_register(dev, > + bcm63xx_usbh_phy_xlate); > + if (IS_ERR(phy_provider)) { > + dev_err(dev, "failed to register PHY provider\n"); > + return PTR_ERR(phy_provider); > + } > + > + dev_info(dev, "Registered BCM63xx USB PHY driver\n"); debug level? -- ~Vinod