All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Zhao <richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
To: linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
Cc: marex-ynQEQJNshbs@public.gmane.org,
	B20596-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
	dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
	alexander.shishkin-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	B29397-KZfg59tc24xl57MIdRCFDg@public.gmane.org,
	balbi-l0cyMroinI0@public.gmane.org,
	stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org,
	Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org,
	gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
	linuxzsc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: [PATCH v7 13/14] usb: otg: add basic mxs phy driver support
Date: Wed, 27 Jun 2012 14:37:01 +0800	[thread overview]
Message-ID: <20120627063700.GE21750@b20223-02.ap.freescale.net> (raw)
In-Reply-To: <1340607391-16380-14-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>

On Mon, Jun 25, 2012 at 02:56:30PM +0800, Richard Zhao wrote:
> mxs phy is used in Freescale i.MX SoCs, for example
> imx23, imx28, imx6Q. This patch adds the basic host
> support.
> 
> Signed-off-by: Richard Zhao <richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> Signed-off-by: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
> Cc: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> Acked-by: Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>
> Tested-by: Subodh Nijsure <snijsure-4jo+YWezP1RWk0Htik3J/w@public.gmane.org>
> ---
>  Documentation/devicetree/bindings/usb/mxs-phy.txt |   13 ++
>  drivers/usb/otg/Kconfig                           |    9 +
>  drivers/usb/otg/Makefile                          |    1 +
>  drivers/usb/otg/mxs-phy.c                         |  197 +++++++++++++++++++++
>  4 files changed, 220 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/usb/mxs-phy.txt
>  create mode 100644 drivers/usb/otg/mxs-phy.c
> 
> diff --git a/Documentation/devicetree/bindings/usb/mxs-phy.txt b/Documentation/devicetree/bindings/usb/mxs-phy.txt
> new file mode 100644
> index 0000000..5835b27
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/mxs-phy.txt
> @@ -0,0 +1,13 @@
> +* Freescale MXS USB Phy Device
> +
> +Required properties:
> +- compatible: Should be "fsl,imx23-usbphy"
> +- reg: Should contain registers location and length
> +- interrupts: Should contain phy interrupt
> +
> +Example:
> +usbphy1: usbphy@020c9000 {
> +	compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";
> +	reg = <0x020c9000 0x1000>;
> +	interrupts = <0 44 0x04>;
> +};
> diff --git a/drivers/usb/otg/Kconfig b/drivers/usb/otg/Kconfig
> index 5c87db0..669eb32 100644
> --- a/drivers/usb/otg/Kconfig
> +++ b/drivers/usb/otg/Kconfig
> @@ -116,6 +116,15 @@ config FSL_USB2_OTG
>  	help
>  	  Enable this to support Freescale USB OTG transceiver.
>  
> +config USB_MXS_PHY
> +	tristate "Freescale MXS USB PHY support"
> +	select STMP_DEVICE
> +	select USB_OTG_UTILS
> +	help
> +	  Enable this to support the Freescale MXS USB PHY.
> +
> +	  MXS Phy is used by some of the i.MX SoCs, for example imx23/28/6x.
> +
>  config USB_MV_OTG
>  	tristate "Marvell USB OTG support"
>  	depends on USB_EHCI_MV && USB_MV_UDC && USB_SUSPEND
> diff --git a/drivers/usb/otg/Makefile b/drivers/usb/otg/Makefile
> index 41aa509..a844b8d 100644
> --- a/drivers/usb/otg/Makefile
> +++ b/drivers/usb/otg/Makefile
> @@ -20,4 +20,5 @@ obj-$(CONFIG_USB_MSM_OTG)	+= msm_otg.o
>  obj-$(CONFIG_AB8500_USB)	+= ab8500-usb.o
>  fsl_usb2_otg-objs		:= fsl_otg.o otg_fsm.o
>  obj-$(CONFIG_FSL_USB2_OTG)	+= fsl_usb2_otg.o
> +obj-$(CONFIG_USB_MXS_PHY)	+= mxs-phy.o
>  obj-$(CONFIG_USB_MV_OTG)	+= mv_otg.o
> diff --git a/drivers/usb/otg/mxs-phy.c b/drivers/usb/otg/mxs-phy.c
> new file mode 100644
> index 0000000..d64c1fe
> --- /dev/null
> +++ b/drivers/usb/otg/mxs-phy.c
> @@ -0,0 +1,197 @@
> +/*
> + * Copyright 2012 Freescale Semiconductor, Inc.
> + * Copyright (C) 2012 Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
> + * on behalf of DENX Software Engineering GmbH
> + *
> + * The code contained herein is licensed under the GNU General Public
> + * License. You may obtain a copy of the GNU General Public License
> + * Version 2 or later at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +#include <linux/module.h>
> +#include <linux/kernel.h>
> +#include <linux/platform_device.h>
> +#include <linux/clk.h>
> +#include <linux/usb/otg.h>
> +#include <linux/stmp_device.h>
> +#include <linux/delay.h>
> +#include <linux/err.h>
> +#include <linux/io.h>
> +
> +#define DRIVER_NAME "mxs_phy"
> +
> +#define HW_USBPHY_PWD				0x00
> +#define HW_USBPHY_CTRL				0x30
> +#define HW_USBPHY_CTRL_SET			0x34
> +#define HW_USBPHY_CTRL_CLR			0x38
> +
> +#define BM_USBPHY_CTRL_SFTRST			BIT(31)
> +#define BM_USBPHY_CTRL_CLKGATE			BIT(30)
> +#define BM_USBPHY_CTRL_ENUTMILEVEL3		BIT(15)
> +#define BM_USBPHY_CTRL_ENUTMILEVEL2		BIT(14)
> +#define BM_USBPHY_CTRL_ENHOSTDISCONDETECT	BIT(1)
> +
> +struct mxs_phy {
> +	struct usb_phy phy;
> +	struct clk *clk;
> +	int connected:1;
> +};
> +
> +#define to_mxs_phy(p) container_of((p), struct mxs_phy, phy)
> +
> +static void mxs_phy_hw_init(struct mxs_phy *mxs_phy)
> +{
> +	void __iomem *base = mxs_phy->phy.io_priv;
> +
> +	stmp_reset_block(base + HW_USBPHY_CTRL);
> +
> +	/* Power up the PHY */
> +	writel_relaxed(0, base + HW_USBPHY_PWD);
> +
> +	/* enable FS/LS device */
> +	writel_relaxed(BM_USBPHY_CTRL_ENUTMILEVEL2 |
> +			BM_USBPHY_CTRL_ENUTMILEVEL3,
> +			base + HW_USBPHY_CTRL_SET);
> +}
> +
> +static int mxs_phy_init(struct usb_phy *phy)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	clk_prepare_enable(mxs_phy->clk);
> +	mxs_phy_hw_init(mxs_phy);
> +
> +	return 0;
> +}
> +
> +static void mxs_phy_shutdown(struct usb_phy *phy)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	writel_relaxed(BM_USBPHY_CTRL_CLKGATE,
> +			phy->io_priv + HW_USBPHY_CTRL_SET);
> +
> +	clk_disable_unprepare(mxs_phy->clk);
> +}
> +
> +static int mxs_phy_on_connect(struct usb_phy *phy, int port)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	dev_dbg(phy->dev, "Connect on port %d\n", port);
> +
> +	if (mxs_phy->connected)
> +		return 0;
I'll have to remove all connected checking. When hcd driver is removed,
it won't call notify_disconnect. It corrupt the "connected" state. so
I have to remove the checking.

Thanks
Richard
> +	mxs_phy_hw_init(to_mxs_phy(phy));
> +	writel_relaxed(BM_USBPHY_CTRL_ENHOSTDISCONDETECT,
> +			phy->io_priv + HW_USBPHY_CTRL_SET);
> +	mxs_phy->connected = 1;
> +
> +	return 0;
> +}
> +
> +static int mxs_phy_on_disconnect(struct usb_phy *phy, int port)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	dev_dbg(phy->dev, "Disconnect on port %d\n", port);
> +
> +	if (!mxs_phy->connected)
> +		return 0;
> +	writel_relaxed(BM_USBPHY_CTRL_ENHOSTDISCONDETECT,
> +			phy->io_priv + HW_USBPHY_CTRL_CLR);
> +	mxs_phy->connected = 0;
> +
> +	return 0;
> +}
> +
> +static int mxs_phy_probe(struct platform_device *pdev)
> +{
> +	struct resource *res;
> +	void __iomem *base;
> +	struct clk *clk;
> +	struct mxs_phy *mxs_phy;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (!res) {
> +		dev_err(&pdev->dev, "can't get device resources\n");
> +		return -ENOENT;
> +	}
> +
> +	base = devm_request_and_ioremap(&pdev->dev, res);
> +	if (!base)
> +		return -EBUSY;
> +
> +	clk = devm_clk_get(&pdev->dev, NULL);
> +	if (IS_ERR(clk)) {
> +		dev_err(&pdev->dev,
> +			"can't get the clock, err=%ld", PTR_ERR(clk));
> +		return PTR_ERR(clk);
> +	}
> +
> +	mxs_phy = devm_kzalloc(&pdev->dev, sizeof(*mxs_phy), GFP_KERNEL);
> +	if (!mxs_phy) {
> +		dev_err(&pdev->dev, "Failed to allocate USB PHY structure!\n");
> +		return -ENOMEM;
> +	}
> +
> +	mxs_phy->phy.io_priv		= base;
> +	mxs_phy->phy.dev		= &pdev->dev;
> +	mxs_phy->phy.label		= DRIVER_NAME;
> +	mxs_phy->phy.init		= mxs_phy_init;
> +	mxs_phy->phy.shutdown		= mxs_phy_shutdown;
> +	mxs_phy->phy.notify_connect	= mxs_phy_on_connect;
> +	mxs_phy->phy.notify_disconnect	= mxs_phy_on_disconnect;
> +
> +	ATOMIC_INIT_NOTIFIER_HEAD(&mxs_phy->phy.notifier);
> +
> +	mxs_phy->clk = clk;
> +
> +	platform_set_drvdata(pdev, &mxs_phy->phy);
> +
> +	return 0;
> +}
> +
> +static int __devexit mxs_phy_remove(struct platform_device *pdev)
> +{
> +	platform_set_drvdata(pdev, NULL);
> +
> +	return 0;
> +}
> +
> +static const struct of_device_id mxs_phy_dt_ids[] = {
> +	{ .compatible = "fsl,imx23-usbphy", },
> +	{ /* sentinel */ }
> +};
> +MODULE_DEVICE_TABLE(of, mxs_phy_dt_ids);
> +
> +static struct platform_driver mxs_phy_driver = {
> +	.probe = mxs_phy_probe,
> +	.remove = __devexit_p(mxs_phy_remove),
> +	.driver = {
> +		.name = DRIVER_NAME,
> +		.owner	= THIS_MODULE,
> +		.of_match_table = mxs_phy_dt_ids,
> +	 },
> +};
> +
> +static int __init mxs_phy_module_init(void)
> +{
> +	return platform_driver_register(&mxs_phy_driver);
> +}
> +postcore_initcall(mxs_phy_module_init);
> +
> +static void __exit mxs_phy_module_exit(void)
> +{
> +	platform_driver_unregister(&mxs_phy_driver);
> +}
> +module_exit(mxs_phy_module_exit);
> +
> +MODULE_ALIAS("platform:mxs-usb-phy");
> +MODULE_AUTHOR("Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>");
> +MODULE_AUTHOR("Richard Zhao <richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>");
> +MODULE_DESCRIPTION("Freescale MXS USB PHY driver");
> +MODULE_LICENSE("GPL");
> -- 
> 1.7.9.5
> 

WARNING: multiple messages have this Message-ID (diff)
From: richard.zhao@freescale.com (Richard Zhao)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 13/14] usb: otg: add basic mxs phy driver support
Date: Wed, 27 Jun 2012 14:37:01 +0800	[thread overview]
Message-ID: <20120627063700.GE21750@b20223-02.ap.freescale.net> (raw)
In-Reply-To: <1340607391-16380-14-git-send-email-richard.zhao@freescale.com>

On Mon, Jun 25, 2012 at 02:56:30PM +0800, Richard Zhao wrote:
> mxs phy is used in Freescale i.MX SoCs, for example
> imx23, imx28, imx6Q. This patch adds the basic host
> support.
> 
> Signed-off-by: Richard Zhao <richard.zhao@freescale.com>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Peter Chen <peter.chen@freescale.com>
> Acked-by: Felipe Balbi <balbi@ti.com>
> Tested-by: Subodh Nijsure <snijsure@grid-net.com>
> ---
>  Documentation/devicetree/bindings/usb/mxs-phy.txt |   13 ++
>  drivers/usb/otg/Kconfig                           |    9 +
>  drivers/usb/otg/Makefile                          |    1 +
>  drivers/usb/otg/mxs-phy.c                         |  197 +++++++++++++++++++++
>  4 files changed, 220 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/usb/mxs-phy.txt
>  create mode 100644 drivers/usb/otg/mxs-phy.c
> 
> diff --git a/Documentation/devicetree/bindings/usb/mxs-phy.txt b/Documentation/devicetree/bindings/usb/mxs-phy.txt
> new file mode 100644
> index 0000000..5835b27
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/mxs-phy.txt
> @@ -0,0 +1,13 @@
> +* Freescale MXS USB Phy Device
> +
> +Required properties:
> +- compatible: Should be "fsl,imx23-usbphy"
> +- reg: Should contain registers location and length
> +- interrupts: Should contain phy interrupt
> +
> +Example:
> +usbphy1: usbphy at 020c9000 {
> +	compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";
> +	reg = <0x020c9000 0x1000>;
> +	interrupts = <0 44 0x04>;
> +};
> diff --git a/drivers/usb/otg/Kconfig b/drivers/usb/otg/Kconfig
> index 5c87db0..669eb32 100644
> --- a/drivers/usb/otg/Kconfig
> +++ b/drivers/usb/otg/Kconfig
> @@ -116,6 +116,15 @@ config FSL_USB2_OTG
>  	help
>  	  Enable this to support Freescale USB OTG transceiver.
>  
> +config USB_MXS_PHY
> +	tristate "Freescale MXS USB PHY support"
> +	select STMP_DEVICE
> +	select USB_OTG_UTILS
> +	help
> +	  Enable this to support the Freescale MXS USB PHY.
> +
> +	  MXS Phy is used by some of the i.MX SoCs, for example imx23/28/6x.
> +
>  config USB_MV_OTG
>  	tristate "Marvell USB OTG support"
>  	depends on USB_EHCI_MV && USB_MV_UDC && USB_SUSPEND
> diff --git a/drivers/usb/otg/Makefile b/drivers/usb/otg/Makefile
> index 41aa509..a844b8d 100644
> --- a/drivers/usb/otg/Makefile
> +++ b/drivers/usb/otg/Makefile
> @@ -20,4 +20,5 @@ obj-$(CONFIG_USB_MSM_OTG)	+= msm_otg.o
>  obj-$(CONFIG_AB8500_USB)	+= ab8500-usb.o
>  fsl_usb2_otg-objs		:= fsl_otg.o otg_fsm.o
>  obj-$(CONFIG_FSL_USB2_OTG)	+= fsl_usb2_otg.o
> +obj-$(CONFIG_USB_MXS_PHY)	+= mxs-phy.o
>  obj-$(CONFIG_USB_MV_OTG)	+= mv_otg.o
> diff --git a/drivers/usb/otg/mxs-phy.c b/drivers/usb/otg/mxs-phy.c
> new file mode 100644
> index 0000000..d64c1fe
> --- /dev/null
> +++ b/drivers/usb/otg/mxs-phy.c
> @@ -0,0 +1,197 @@
> +/*
> + * Copyright 2012 Freescale Semiconductor, Inc.
> + * Copyright (C) 2012 Marek Vasut <marex@denx.de>
> + * on behalf of DENX Software Engineering GmbH
> + *
> + * The code contained herein is licensed under the GNU General Public
> + * License. You may obtain a copy of the GNU General Public License
> + * Version 2 or later at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +#include <linux/module.h>
> +#include <linux/kernel.h>
> +#include <linux/platform_device.h>
> +#include <linux/clk.h>
> +#include <linux/usb/otg.h>
> +#include <linux/stmp_device.h>
> +#include <linux/delay.h>
> +#include <linux/err.h>
> +#include <linux/io.h>
> +
> +#define DRIVER_NAME "mxs_phy"
> +
> +#define HW_USBPHY_PWD				0x00
> +#define HW_USBPHY_CTRL				0x30
> +#define HW_USBPHY_CTRL_SET			0x34
> +#define HW_USBPHY_CTRL_CLR			0x38
> +
> +#define BM_USBPHY_CTRL_SFTRST			BIT(31)
> +#define BM_USBPHY_CTRL_CLKGATE			BIT(30)
> +#define BM_USBPHY_CTRL_ENUTMILEVEL3		BIT(15)
> +#define BM_USBPHY_CTRL_ENUTMILEVEL2		BIT(14)
> +#define BM_USBPHY_CTRL_ENHOSTDISCONDETECT	BIT(1)
> +
> +struct mxs_phy {
> +	struct usb_phy phy;
> +	struct clk *clk;
> +	int connected:1;
> +};
> +
> +#define to_mxs_phy(p) container_of((p), struct mxs_phy, phy)
> +
> +static void mxs_phy_hw_init(struct mxs_phy *mxs_phy)
> +{
> +	void __iomem *base = mxs_phy->phy.io_priv;
> +
> +	stmp_reset_block(base + HW_USBPHY_CTRL);
> +
> +	/* Power up the PHY */
> +	writel_relaxed(0, base + HW_USBPHY_PWD);
> +
> +	/* enable FS/LS device */
> +	writel_relaxed(BM_USBPHY_CTRL_ENUTMILEVEL2 |
> +			BM_USBPHY_CTRL_ENUTMILEVEL3,
> +			base + HW_USBPHY_CTRL_SET);
> +}
> +
> +static int mxs_phy_init(struct usb_phy *phy)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	clk_prepare_enable(mxs_phy->clk);
> +	mxs_phy_hw_init(mxs_phy);
> +
> +	return 0;
> +}
> +
> +static void mxs_phy_shutdown(struct usb_phy *phy)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	writel_relaxed(BM_USBPHY_CTRL_CLKGATE,
> +			phy->io_priv + HW_USBPHY_CTRL_SET);
> +
> +	clk_disable_unprepare(mxs_phy->clk);
> +}
> +
> +static int mxs_phy_on_connect(struct usb_phy *phy, int port)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	dev_dbg(phy->dev, "Connect on port %d\n", port);
> +
> +	if (mxs_phy->connected)
> +		return 0;
I'll have to remove all connected checking. When hcd driver is removed,
it won't call notify_disconnect. It corrupt the "connected" state. so
I have to remove the checking.

Thanks
Richard
> +	mxs_phy_hw_init(to_mxs_phy(phy));
> +	writel_relaxed(BM_USBPHY_CTRL_ENHOSTDISCONDETECT,
> +			phy->io_priv + HW_USBPHY_CTRL_SET);
> +	mxs_phy->connected = 1;
> +
> +	return 0;
> +}
> +
> +static int mxs_phy_on_disconnect(struct usb_phy *phy, int port)
> +{
> +	struct mxs_phy *mxs_phy = to_mxs_phy(phy);
> +
> +	dev_dbg(phy->dev, "Disconnect on port %d\n", port);
> +
> +	if (!mxs_phy->connected)
> +		return 0;
> +	writel_relaxed(BM_USBPHY_CTRL_ENHOSTDISCONDETECT,
> +			phy->io_priv + HW_USBPHY_CTRL_CLR);
> +	mxs_phy->connected = 0;
> +
> +	return 0;
> +}
> +
> +static int mxs_phy_probe(struct platform_device *pdev)
> +{
> +	struct resource *res;
> +	void __iomem *base;
> +	struct clk *clk;
> +	struct mxs_phy *mxs_phy;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (!res) {
> +		dev_err(&pdev->dev, "can't get device resources\n");
> +		return -ENOENT;
> +	}
> +
> +	base = devm_request_and_ioremap(&pdev->dev, res);
> +	if (!base)
> +		return -EBUSY;
> +
> +	clk = devm_clk_get(&pdev->dev, NULL);
> +	if (IS_ERR(clk)) {
> +		dev_err(&pdev->dev,
> +			"can't get the clock, err=%ld", PTR_ERR(clk));
> +		return PTR_ERR(clk);
> +	}
> +
> +	mxs_phy = devm_kzalloc(&pdev->dev, sizeof(*mxs_phy), GFP_KERNEL);
> +	if (!mxs_phy) {
> +		dev_err(&pdev->dev, "Failed to allocate USB PHY structure!\n");
> +		return -ENOMEM;
> +	}
> +
> +	mxs_phy->phy.io_priv		= base;
> +	mxs_phy->phy.dev		= &pdev->dev;
> +	mxs_phy->phy.label		= DRIVER_NAME;
> +	mxs_phy->phy.init		= mxs_phy_init;
> +	mxs_phy->phy.shutdown		= mxs_phy_shutdown;
> +	mxs_phy->phy.notify_connect	= mxs_phy_on_connect;
> +	mxs_phy->phy.notify_disconnect	= mxs_phy_on_disconnect;
> +
> +	ATOMIC_INIT_NOTIFIER_HEAD(&mxs_phy->phy.notifier);
> +
> +	mxs_phy->clk = clk;
> +
> +	platform_set_drvdata(pdev, &mxs_phy->phy);
> +
> +	return 0;
> +}
> +
> +static int __devexit mxs_phy_remove(struct platform_device *pdev)
> +{
> +	platform_set_drvdata(pdev, NULL);
> +
> +	return 0;
> +}
> +
> +static const struct of_device_id mxs_phy_dt_ids[] = {
> +	{ .compatible = "fsl,imx23-usbphy", },
> +	{ /* sentinel */ }
> +};
> +MODULE_DEVICE_TABLE(of, mxs_phy_dt_ids);
> +
> +static struct platform_driver mxs_phy_driver = {
> +	.probe = mxs_phy_probe,
> +	.remove = __devexit_p(mxs_phy_remove),
> +	.driver = {
> +		.name = DRIVER_NAME,
> +		.owner	= THIS_MODULE,
> +		.of_match_table = mxs_phy_dt_ids,
> +	 },
> +};
> +
> +static int __init mxs_phy_module_init(void)
> +{
> +	return platform_driver_register(&mxs_phy_driver);
> +}
> +postcore_initcall(mxs_phy_module_init);
> +
> +static void __exit mxs_phy_module_exit(void)
> +{
> +	platform_driver_unregister(&mxs_phy_driver);
> +}
> +module_exit(mxs_phy_module_exit);
> +
> +MODULE_ALIAS("platform:mxs-usb-phy");
> +MODULE_AUTHOR("Marek Vasut <marex@denx.de>");
> +MODULE_AUTHOR("Richard Zhao <richard.zhao@freescale.com>");
> +MODULE_DESCRIPTION("Freescale MXS USB PHY driver");
> +MODULE_LICENSE("GPL");
> -- 
> 1.7.9.5
> 

  parent reply	other threads:[~2012-06-27  6:37 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-25  6:56 [PATCH v7 00/14] add imx usb driver based on Greg next tree Richard Zhao
2012-06-25  6:56 ` Richard Zhao
     [not found] ` <1340607391-16380-1-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25  6:56   ` [PATCH v7 01/14] usb: chipidea: remove unneeded NULL check Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-2-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:43       ` Greg KH
2012-06-26 21:43         ` Greg KH
     [not found]         ` <20120626214311.GA4878-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2012-06-27  6:24           ` Richard Zhao
2012-06-27  6:24             ` Richard Zhao
2012-06-26 21:51       ` Marek Vasut
2012-06-26 21:51         ` Marek Vasut
2012-06-25  6:56   ` [PATCH v7 02/14] usb: chipidea: drop useless arch-check Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-3-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:52       ` Marek Vasut
2012-06-26 21:52         ` Marek Vasut
2012-06-25  6:56   ` [PATCH v7 03/14] usb: chipidea: msm: add missing section annotation Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-4-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:52       ` Marek Vasut
2012-06-26 21:52         ` Marek Vasut
2012-06-25  6:56   ` [PATCH v7 04/14] usb: chipidea: msm: add remove method Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-5-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25 13:18       ` ABRAHAM, KISHON VIJAY
2012-06-25 13:18         ` ABRAHAM, KISHON VIJAY
     [not found]         ` <CAAe_U6JJe4U+oMR+xj4TwdNsXEzHNhQ0+t-PUPJT=kezHCqL2w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-25 13:33           ` Marek Vasut
2012-06-25 13:33             ` Marek Vasut
     [not found]             ` <201206251533.20788.marex-ynQEQJNshbs@public.gmane.org>
2012-06-25 13:44               ` ABRAHAM, KISHON VIJAY
2012-06-25 13:44                 ` ABRAHAM, KISHON VIJAY
     [not found]                 ` <CAAe_U6JL5P26zJDOWaV3Z=uOmhJddBKE9B3r=OrzEtPEuM3vnA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-25 13:55                   ` Marek Vasut
2012-06-25 13:55                     ` Marek Vasut
     [not found]                     ` <201206251555.22820.marex-ynQEQJNshbs@public.gmane.org>
2012-06-25 14:14                       ` Felipe Balbi
2012-06-25 14:14                         ` Felipe Balbi
     [not found]                         ` <20120625141443.GB601-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2012-06-25 14:20                           ` Marek Vasut
2012-06-25 14:20                             ` Marek Vasut
2012-06-25  6:56   ` [PATCH v7 05/14] USB: Chipidea: rename struct ci13xxx_udc_driver to struct ci13xxx_platform_data Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-6-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:54       ` Marek Vasut
2012-06-26 21:54         ` Marek Vasut
     [not found]         ` <201206262354.03543.marex-ynQEQJNshbs@public.gmane.org>
2012-06-27  6:30           ` Richard Zhao
2012-06-27  6:30             ` Richard Zhao
2012-06-25  6:56   ` [PATCH v7 06/14] USB: Chipidea: rename struct ci13xxx variables from udc to ci Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-7-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:55       ` Marek Vasut
2012-06-26 21:55         ` Marek Vasut
2012-06-27 12:42       ` Marc Kleine-Budde
2012-06-27 12:42         ` Marc Kleine-Budde
     [not found]         ` <4FEAFFB7.7010906-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-06-28  1:59           ` Richard Zhao
2012-06-28  1:59             ` Richard Zhao
2012-06-25  6:56   ` [PATCH v7 07/14] USB: Chipidea: add unified ci13xxx_{add,remove}_device for platform drivers Richard Zhao
2012-06-25  6:56     ` [PATCH v7 07/14] USB: Chipidea: add unified ci13xxx_{add, remove}_device " Richard Zhao
2012-06-25  6:56   ` [PATCH v7 08/14] USB: Chipidea: add ci13xxx device id management Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-9-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25  9:48       ` Marc Kleine-Budde
2012-06-25  9:48         ` Marc Kleine-Budde
2012-06-25 10:03         ` Richard Zhao
2012-06-25 10:03           ` Richard Zhao
     [not found]           ` <513f64cb-8eac-4e51-81f7-e3824d96d870-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2012-06-25 10:17             ` Marc Kleine-Budde
2012-06-25 10:17               ` Marc Kleine-Budde
     [not found]               ` <4FE83AA9.6030507-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-06-27  5:42                 ` Richard Zhao
2012-06-27  5:42                   ` Richard Zhao
     [not found]                   ` <20120627054231.GA21750-iWYTGMXpHj9ITqJhDdzsOjpauB2SiJktrE5yTffgRl4@public.gmane.org>
2012-06-27 11:49                     ` Marek Vasut
2012-06-27 11:49                       ` Marek Vasut
     [not found]                       ` <201206271349.45641.marex-ynQEQJNshbs@public.gmane.org>
2012-06-27 12:02                         ` Marc Kleine-Budde
2012-06-27 12:02                           ` Marc Kleine-Budde
2012-06-25  6:56   ` [PATCH v7 09/14] usb: chipidea: select USB_EHCI_ROOT_HUB_TT in USB_CHIPIDEA_HOST of Kconfig Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-10-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-26 21:58       ` Marek Vasut
2012-06-26 21:58         ` Marek Vasut
2012-06-25  6:56   ` [PATCH v7 10/14] usb: otg: add notify_connect/notify_disconnect callback Richard Zhao
2012-06-25  6:56     ` Richard Zhao
2012-06-25  6:56   ` [PATCH v7 11/14] USB: notify phy when root hub port connect change Richard Zhao
2012-06-25  6:56     ` Richard Zhao
2012-06-25  6:56   ` [PATCH v7 12/14] usb: chipidea: permit driver bindings pass phy pointer Richard Zhao
2012-06-25  6:56     ` Richard Zhao
2012-06-25  6:56   ` [PATCH v7 13/14] usb: otg: add basic mxs phy driver support Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-14-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-27  6:37       ` Richard Zhao [this message]
2012-06-27  6:37         ` Richard Zhao
2012-06-25  6:56   ` [PATCH v7 14/14] usb: chipidea: add imx platform driver Richard Zhao
2012-06-25  6:56     ` Richard Zhao
     [not found]     ` <1340607391-16380-15-git-send-email-richard.zhao-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2012-06-25 10:33       ` Marc Kleine-Budde
2012-06-25 10:33         ` Marc Kleine-Budde
     [not found]         ` <4FE83E96.5090004-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-06-27  6:20           ` Richard Zhao
2012-06-27  6:20             ` Richard Zhao
     [not found]             ` <20120627062005.GB21750-iWYTGMXpHj9ITqJhDdzsOjpauB2SiJktrE5yTffgRl4@public.gmane.org>
2012-06-27  9:46               ` Marc Kleine-Budde
2012-06-27  9:46                 ` Marc Kleine-Budde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120627063700.GE21750@b20223-02.ap.freescale.net \
    --to=richard.zhao-kzfg59tc24xl57midrcfdg@public.gmane.org \
    --cc=B20596-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=B29397-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=alexander.shishkin-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=balbi-l0cyMroinI0@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=dong.aisheng-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=fabio.estevam-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linuxzsc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=marex-ynQEQJNshbs@public.gmane.org \
    --cc=peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.