From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752929AbcBBGLa (ORCPT ); Tue, 2 Feb 2016 01:11:30 -0500 Received: from comal.ext.ti.com ([198.47.26.152]:43119 "EHLO comal.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752156AbcBBGL3 (ORCPT ); Tue, 2 Feb 2016 01:11:29 -0500 Subject: Re: [PATCH v3 2/2] phy: Add a driver for the ATH79 USB phy To: Alban Bedel , References: <1454010741-21899-1-git-send-email-albeu@free.fr> <1454010741-21899-2-git-send-email-albeu@free.fr> CC: Andrew Morton , Greg Kroah-Hartman , "David S. Miller" , Mauro Carvalho Chehab , Joe Perches , Jiri Slaby From: Kishon Vijay Abraham I Message-ID: <56B04883.3010506@ti.com> Date: Tue, 2 Feb 2016 11:41:15 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1454010741-21899-2-git-send-email-albeu@free.fr> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Friday 29 January 2016 01:22 AM, Alban Bedel wrote: > The ATH79 USB phy is very simple, it only have a reset. On some SoC a > second reset is used to force the phy in suspend mode regardless of the > USB controller status. > > Signed-off-by: Alban Bedel > --- > Changelog: > v2: * Rebased on the simple PHY driver > * Added myself as maintainer of the driver > --- > MAINTAINERS | 8 +++ > drivers/phy/Kconfig | 8 +++ > drivers/phy/Makefile | 1 + > drivers/phy/phy-ath79-usb.c | 116 ++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 133 insertions(+) > create mode 100644 drivers/phy/phy-ath79-usb.c > > diff --git a/MAINTAINERS b/MAINTAINERS > index 30aca4a..f536d52 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1866,6 +1866,14 @@ S: Maintained > F: drivers/gpio/gpio-ath79.c > F: Documentation/devicetree/bindings/gpio/gpio-ath79.txt > > +ATHEROS 71XX/9XXX USB PHY DRIVER > +M: Alban Bedel > +W: https://github.com/AlbanBedel/linux > +T: git git://github.com/AlbanBedel/linux > +S: Maintained > +F: drivers/phy/phy-ath79-usb.c > +F: Documentation/devicetree/bindings/phy/phy-ath79-usb.txt > + > ATHEROS ATH GENERIC UTILITIES > M: "Luis R. Rodriguez" > L: linux-wireless@vger.kernel.org > diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig > index efbaee4..6090c63 100644 > --- a/drivers/phy/Kconfig > +++ b/drivers/phy/Kconfig > @@ -15,6 +15,14 @@ config GENERIC_PHY > phy users can obtain reference to the PHY. All the users of this > framework should select this config. > > +config PHY_ATH79_USB > + tristate "Atheros AR71XX/9XXX USB PHY driver" > + depends on ATH79 || COMPILE_TEST > + default y if USB_EHCI_HCD_PLATFORM > + select PHY_SIMPLE > + help > + Enable this to support the USB PHY on Atheros AR71XX/9XXX SoCs. > + > config PHY_BERLIN_USB > tristate "Marvell Berlin USB PHY Driver" > depends on ARCH_BERLIN && RESET_CONTROLLER && HAS_IOMEM && OF > diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile > index 1cc7268..5c9ca5f 100644 > --- a/drivers/phy/Makefile > +++ b/drivers/phy/Makefile > @@ -3,6 +3,7 @@ > # > > obj-$(CONFIG_GENERIC_PHY) += phy-core.o > +obj-$(CONFIG_PHY_ATH79_USB) += phy-ath79-usb.o > obj-$(CONFIG_PHY_BERLIN_USB) += phy-berlin-usb.o > obj-$(CONFIG_PHY_BERLIN_SATA) += phy-berlin-sata.o > obj-$(CONFIG_PHY_DM816X_USB) += phy-dm816x-usb.o > diff --git a/drivers/phy/phy-ath79-usb.c b/drivers/phy/phy-ath79-usb.c > new file mode 100644 > index 0000000..ff49356 > --- /dev/null > +++ b/drivers/phy/phy-ath79-usb.c > @@ -0,0 +1,116 @@ > +/* > + * Copyright (C) 2015 Alban Bedel 2016? > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + */ > + > +#include > +#include > +#include > +#include > + > +struct ath79_usb_phy { > + struct simple_phy sphy; > + struct reset_control *suspend_override; > +}; > + > +static int ath79_usb_phy_power_on(struct phy *phy) > +{ > + struct ath79_usb_phy *priv = container_of( > + phy_get_drvdata(phy), struct ath79_usb_phy, sphy); > + int err; > + > + err = simple_phy_power_on(phy); Why do you need a separate driver for ath79_usb? We should be able to directly use simple phy driver right? Thanks Kishon