Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Mon, Mar 19, 2012 at 4:39 PM, Sergei Shtylyov sshtyl...@mvista.com wrote: Hello. On 19-03-2012 14:06, Felipe Balbi wrote: + ver = usbtll_read(base, OMAP_USBTLL_REVISION); + if (ver == OMAP_USBTLL_REV1) + count = OMAP_TLL_CHANNEL_COUNT; + else if (ver == OMAP_USBTLL_REV2) + count = OMAP_REV2_TLL_CHANNEL_COUNT; + else { + dev_err(dev, TLL version failed\n); + ret = -ENODEV; + goto err_ioremap; + } wrong coding style. And *switch* seems more fitting here. WBR, Sergei Thanks , I will do this, -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Mon, Mar 19, 2012 at 3:11 PM, Shubhrajyoti shubhrajy...@ti.com wrote: Hi Keshava, Some doubts / comments . On Monday 19 March 2012 12:18 PM, Keshava Munegowda wrote: From: Keshava Munegowda keshava_mgo...@ti.com The platform driver for the TLL component of the OMAP USB host controller is implemented. Depending on the TLL hardware revision , the TLL channels are configured. The USB HS core driver uses this driver through exported APIs from the TLL platform driver. usb_tll_enable and usb_tll_disble are the exported APIs of the USB TLL platform driver. Signed-off-by: Keshava Munegowda keshava_mgo...@ti.com Reviewed-by: Partha Basak part...@india.ti.com --- arch/arm/plat-omap/include/plat/usb.h | 8 + drivers/mfd/Kconfig | 2 +- drivers/mfd/Makefile | 2 +- drivers/mfd/omap-usb-tll.c | 463 + 4 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 drivers/mfd/omap-usb-tll.c diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index dc864b5..eb1e47d 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h @@ -61,6 +61,10 @@ struct usbhs_omap_platform_data { struct ehci_hcd_omap_platform_data *ehci_data; struct ohci_hcd_omap_platform_data *ohci_data; }; + +struct usbtll_omap_platform_data { + enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS]; +}; /*-*/ #define OMAP1_OTG_BASE 0xfffb0400 @@ -105,6 +109,10 @@ extern int omap4430_phy_set_clk(struct device *dev, int on); extern int omap4430_phy_init(struct device *dev); extern int omap4430_phy_exit(struct device *dev); extern int omap4430_phy_suspend(struct device *dev, int suspend); + +extern int omap_tll_enable(void); +extern int omap_tll_disable(void); + #endif extern void am35x_musb_reset(void); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index f147395..5f75ad4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -772,7 +772,7 @@ config MFD_WL1273_CORE audio codec. config MFD_OMAP_USB_HOST - bool Support OMAP USBHS core driver + bool Support OMAP USBHS core and TLL driver depends on USB_EHCI_HCD_OMAP || USB_OHCI_HCD_OMAP3 default y help diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index b953bab..4b3a8e0 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -105,7 +105,7 @@ obj-$(CONFIG_MFD_TPS6586X) += tps6586x.o obj-$(CONFIG_MFD_VX855) += vx855.o obj-$(CONFIG_MFD_WL1273_CORE) += wl1273-core.o obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o -obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o +obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o omap-usb-tll.o obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o obj-$(CONFIG_MFD_PM8XXX_IRQ) += pm8xxx-irq.o obj-$(CONFIG_TPS65911_COMPARATOR) += tps65911-comparator.o diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c new file mode 100644 index 000..3da468a --- /dev/null +++ b/drivers/mfd/omap-usb-tll.c @@ -0,0 +1,463 @@ +/** + * omap-usb-tll.c - The USB TLL driver for OMAP EHCI OHCI + * + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com Nitpick : 2012 + * Author: Keshava Munegowda keshava_mgo...@ti.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 of + * the License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ +#include linux/kernel.h +#include linux/module.h +#include linux/types.h +#include linux/slab.h +#include linux/spinlock.h +#include linux/platform_device.h +#include linux/clk.h +#include linux/io.h +#include linux/err.h +#include plat/usb.h +#include linux/pm_runtime.h + +#define USBTLL_DRIVER_NAME usbhs_tll + +/* TLL Register Set */ +#define OMAP_USBTLL_REVISION (0x00) +#define OMAP_USBTLL_SYSCONFIG (0x10) +#define OMAP_USBTLL_SYSCONFIG_CACTIVITY (1 8) +#define OMAP_USBTLL_SYSCONFIG_SIDLEMODE (1 3) +#define OMAP_USBTLL_SYSCONFIG_ENAWAKEUP (1 2) +#define OMAP_USBTLL_SYSCONFIG_SOFTRESET (1 1) +#define OMAP_USBTLL_SYSCONFIG_AUTOIDLE
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Mon, Mar 19, 2012 at 12:18 PM, Keshava Munegowda keshava_mgo...@ti.com wrote: From: Keshava Munegowda keshava_mgo...@ti.com The platform driver for the TLL component of the OMAP USB host controller is implemented. Depending on the TLL hardware revision , the TLL channels are configured. The USB HS core driver uses this driver through exported APIs from the TLL platform driver. usb_tll_enable and usb_tll_disble are the exported APIs of the USB TLL platform driver. Signed-off-by: Keshava Munegowda keshava_mgo...@ti.com Reviewed-by: Partha Basak part...@india.ti.com --- arch/arm/plat-omap/include/plat/usb.h | 8 + drivers/mfd/Kconfig | 2 +- drivers/mfd/Makefile | 2 +- drivers/mfd/omap-usb-tll.c | 463 + 4 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 drivers/mfd/omap-usb-tll.c diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index dc864b5..eb1e47d 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h @@ -61,6 +61,10 @@ struct usbhs_omap_platform_data { struct ehci_hcd_omap_platform_data *ehci_data; struct ohci_hcd_omap_platform_data *ohci_data; }; + +struct usbtll_omap_platform_data { + enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS]; +}; /*-*/ #define OMAP1_OTG_BASE 0xfffb0400 @@ -105,6 +109,10 @@ extern int omap4430_phy_set_clk(struct device *dev, int on); extern int omap4430_phy_init(struct device *dev); extern int omap4430_phy_exit(struct device *dev); extern int omap4430_phy_suspend(struct device *dev, int suspend); + +extern int omap_tll_enable(void); +extern int omap_tll_disable(void); + #endif extern void am35x_musb_reset(void); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index f147395..5f75ad4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -772,7 +772,7 @@ config MFD_WL1273_CORE audio codec. config MFD_OMAP_USB_HOST - bool Support OMAP USBHS core driver + bool Support OMAP USBHS core and TLL driver depends on USB_EHCI_HCD_OMAP || USB_OHCI_HCD_OMAP3 default y help diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index b953bab..4b3a8e0 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -105,7 +105,7 @@ obj-$(CONFIG_MFD_TPS6586X) += tps6586x.o obj-$(CONFIG_MFD_VX855) += vx855.o obj-$(CONFIG_MFD_WL1273_CORE) += wl1273-core.o obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o -obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o +obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o omap-usb-tll.o obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o obj-$(CONFIG_MFD_PM8XXX_IRQ) += pm8xxx-irq.o obj-$(CONFIG_TPS65911_COMPARATOR) += tps65911-comparator.o diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c new file mode 100644 index 000..3da468a --- /dev/null +++ b/drivers/mfd/omap-usb-tll.c @@ -0,0 +1,463 @@ +/** + * omap-usb-tll.c - The USB TLL driver for OMAP EHCI OHCI + * + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com + * Author: Keshava Munegowda keshava_mgo...@ti.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 of + * the License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ +#include linux/kernel.h +#include linux/module.h +#include linux/types.h +#include linux/slab.h +#include linux/spinlock.h +#include linux/platform_device.h +#include linux/clk.h +#include linux/io.h +#include linux/err.h +#include plat/usb.h +#include linux/pm_runtime.h + +#define USBTLL_DRIVER_NAME usbhs_tll + +/* TLL Register Set */ +#define OMAP_USBTLL_REVISION (0x00) +#define OMAP_USBTLL_SYSCONFIG (0x10) +#define OMAP_USBTLL_SYSCONFIG_CACTIVITY (1 8) +#define OMAP_USBTLL_SYSCONFIG_SIDLEMODE (1 3) +#define OMAP_USBTLL_SYSCONFIG_ENAWAKEUP (1 2) +#define OMAP_USBTLL_SYSCONFIG_SOFTRESET (1 1) +#define OMAP_USBTLL_SYSCONFIG_AUTOIDLE (1 0) + +#define OMAP_USBTLL_SYSSTATUS (0x14)
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
Hi Keshava, On Tuesday 20 March 2012 12:58 PM, Munegowda, Keshava wrote:Snip +} + +static const struct dev_pm_ops usbtllomap_dev_pm_ops = { + .runtime_suspend= usbtll_runtime_suspend, + .runtime_resume = usbtll_runtime_resume, +}; + Also how about using runtime_pm_ops ? Sorry I din't get this? what exact alternative are you suggesting here? SET_RUNTIME_PM_OPS(usbtll_runtime_suspend, usbtll_runtime_resume, NULL) I should have been clearer. -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Tue, Mar 20, 2012 at 2:22 PM, Shubhrajyoti shubhrajy...@ti.com wrote: Hi Keshava, On Tuesday 20 March 2012 12:58 PM, Munegowda, Keshava wrote:Snip +} + +static const struct dev_pm_ops usbtllomap_dev_pm_ops = { + .runtime_suspend = usbtll_runtime_suspend, + .runtime_resume = usbtll_runtime_resume, +}; + Also how about using runtime_pm_ops ? Sorry I din't get this? what exact alternative are you suggesting here? SET_RUNTIME_PM_OPS(usbtll_runtime_suspend, usbtll_runtime_resume, NULL) I should have been clearer. Thanks, I will do this , I think Felipe has already pointed out this. regards keshava -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Mon, Mar 19, 2012 at 3:36 PM, Felipe Balbi ba...@ti.com wrote: Hi, On Mon, Mar 19, 2012 at 12:18:31PM +0530, Keshava Munegowda wrote: + ver = usbtll_read(base, OMAP_USBTLL_REVISION); + if (ver == OMAP_USBTLL_REV1) + count = OMAP_TLL_CHANNEL_COUNT; + else if (ver == OMAP_USBTLL_REV2) + count = OMAP_REV2_TLL_CHANNEL_COUNT; + else { + dev_err(dev, TLL version failed\n); + ret = -ENODEV; + goto err_ioremap; + } wrong coding style. +static const struct dev_pm_ops usbtllomap_dev_pm_ops = { + .runtime_suspend = usbtll_runtime_suspend, + .runtime_resume = usbtll_runtime_resume, use SET_RUNTIME_PM_OPS() +static struct platform_driver usbtll_omap_driver = { + .driver = { + .name = (char *)usbtll_driver_name, + .owner = THIS_MODULE, + .pm = usbtllomap_dev_pm_ops, + }, + .remove = __exit_p(usbtll_omap_remove), __devexit_p() +}; + +int omap_tll_enable(void) +{ + if (!tll_pdev) { + dev_dbg(tll_pdev-dev, missing platform_data\n); + return -ENODEV; + } + return pm_runtime_get_sync(tll_pdev-dev); +} +EXPORT_SYMBOL_GPL(omap_tll_enable); why ? the usb hs core driver uses omap_tll_enable and omap_tll_disable apis based on the port selection in ./drivers/mfd/omap-usb-host.c file. + +int omap_tll_disable(void) +{ + if (!tll_pdev) { + dev_dbg(tll_pdev-dev, missing platform_data\n); + return -ENODEV; + } + return pm_runtime_put_sync(tll_pdev-dev); +} +EXPORT_SYMBOL_GPL(omap_tll_disable); why ? +MODULE_AUTHOR(Keshava Munegowda keshava_mgo...@ti.com); +MODULE_ALIAS(platform: USBHS_DRIVER_NAME); +MODULE_LICENSE(GPL v2); +MODULE_DESCRIPTION(usb tll driver for TI OMAP EHCI and OHCI controllers); + +static int __init omap_usbtll_drvinit(void) +{ + return platform_driver_probe(usbtll_omap_driver, usbtll_omap_probe); please don't. Make sure you use platform_driver_register, instead. Here , omap_usbtll_drvinit is registered through fs_initcall call; this is required because, the TLL driver is required to initialized before the UHH ( usb host core) driver. regards keshava -- balbi -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
Hi, On Tue, Mar 20, 2012 at 03:00:50PM +0530, Munegowda, Keshava wrote: +MODULE_AUTHOR(Keshava Munegowda keshava_mgo...@ti.com); +MODULE_ALIAS(platform: USBHS_DRIVER_NAME); +MODULE_LICENSE(GPL v2); +MODULE_DESCRIPTION(usb tll driver for TI OMAP EHCI and OHCI controllers); + +static int __init omap_usbtll_drvinit(void) +{ + return platform_driver_probe(usbtll_omap_driver, usbtll_omap_probe); please don't. Make sure you use platform_driver_register, instead. Here , omap_usbtll_drvinit is registered through fs_initcall call; this is required because, the TLL driver is required to initialized before the UHH ( usb host core) driver. no issues with fs_initcall. The issue is with platform_driver_probe() only. -- balbi signature.asc Description: Digital signature
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Tue, Mar 20, 2012 at 01:02:58PM +0530, Munegowda, Keshava wrote: On Mon, Mar 19, 2012 at 12:18 PM, Keshava Munegowda keshava_mgo...@ti.com wrote: From: Keshava Munegowda keshava_mgo...@ti.com The platform driver for the TLL component of the OMAP USB host controller is implemented. Depending on the TLL hardware revision , the TLL channels are configured. The USB HS core driver uses this driver through exported APIs from the TLL platform driver. usb_tll_enable and usb_tll_disble are the exported APIs of the USB TLL platform driver. Signed-off-by: Keshava Munegowda keshava_mgo...@ti.com Reviewed-by: Partha Basak part...@india.ti.com --- arch/arm/plat-omap/include/plat/usb.h | 8 + drivers/mfd/Kconfig | 2 +- drivers/mfd/Makefile | 2 +- drivers/mfd/omap-usb-tll.c | 463 + 4 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 drivers/mfd/omap-usb-tll.c diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index dc864b5..eb1e47d 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h @@ -61,6 +61,10 @@ struct usbhs_omap_platform_data { struct ehci_hcd_omap_platform_data *ehci_data; struct ohci_hcd_omap_platform_data *ohci_data; }; + +struct usbtll_omap_platform_data { + enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS]; +}; /*-*/ #define OMAP1_OTG_BASE 0xfffb0400 @@ -105,6 +109,10 @@ extern int omap4430_phy_set_clk(struct device *dev, int on); extern int omap4430_phy_init(struct device *dev); extern int omap4430_phy_exit(struct device *dev); extern int omap4430_phy_suspend(struct device *dev, int suspend); + +extern int omap_tll_enable(void); +extern int omap_tll_disable(void); + #endif extern void am35x_musb_reset(void); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index f147395..5f75ad4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -772,7 +772,7 @@ config MFD_WL1273_CORE audio codec. config MFD_OMAP_USB_HOST - bool Support OMAP USBHS core driver + bool Support OMAP USBHS core and TLL driver depends on USB_EHCI_HCD_OMAP || USB_OHCI_HCD_OMAP3 default y help diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index b953bab..4b3a8e0 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -105,7 +105,7 @@ obj-$(CONFIG_MFD_TPS6586X) += tps6586x.o obj-$(CONFIG_MFD_VX855) += vx855.o obj-$(CONFIG_MFD_WL1273_CORE) += wl1273-core.o obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o -obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o +obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o omap-usb-tll.o obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o obj-$(CONFIG_MFD_PM8XXX_IRQ) += pm8xxx-irq.o obj-$(CONFIG_TPS65911_COMPARATOR) += tps65911-comparator.o diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c new file mode 100644 index 000..3da468a --- /dev/null +++ b/drivers/mfd/omap-usb-tll.c @@ -0,0 +1,463 @@ +/** + * omap-usb-tll.c - The USB TLL driver for OMAP EHCI OHCI + * + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com + * Author: Keshava Munegowda keshava_mgo...@ti.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 of + * the License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ +#include linux/kernel.h +#include linux/module.h +#include linux/types.h +#include linux/slab.h +#include linux/spinlock.h +#include linux/platform_device.h +#include linux/clk.h +#include linux/io.h +#include linux/err.h +#include plat/usb.h +#include linux/pm_runtime.h + +#define USBTLL_DRIVER_NAME usbhs_tll + +/* TLL Register Set */ +#define OMAP_USBTLL_REVISION (0x00) +#define OMAP_USBTLL_SYSCONFIG (0x10) +#define OMAP_USBTLL_SYSCONFIG_CACTIVITY (1 8) +#define OMAP_USBTLL_SYSCONFIG_SIDLEMODE (1 3) +#define OMAP_USBTLL_SYSCONFIG_ENAWAKEUP (1 2) +#define
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Tue, Mar 20, 2012 at 3:29 PM, Felipe Balbi ba...@ti.com wrote: Hi, On Tue, Mar 20, 2012 at 03:00:50PM +0530, Munegowda, Keshava wrote: +MODULE_AUTHOR(Keshava Munegowda keshava_mgo...@ti.com); +MODULE_ALIAS(platform: USBHS_DRIVER_NAME); +MODULE_LICENSE(GPL v2); +MODULE_DESCRIPTION(usb tll driver for TI OMAP EHCI and OHCI controllers); + +static int __init omap_usbtll_drvinit(void) +{ + return platform_driver_probe(usbtll_omap_driver, usbtll_omap_probe); please don't. Make sure you use platform_driver_register, instead. Here , omap_usbtll_drvinit is registered through fs_initcall call; this is required because, the TLL driver is required to initialized before the UHH ( usb host core) driver. no issues with fs_initcall. The issue is with platform_driver_probe() only. -- balbi Thanks , I got it. I will take the same comment make the same change in usbhs driver too; regards keshava -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
On Tue, Mar 20, 2012 at 04:21:18PM +0530, Munegowda, Keshava wrote: On Tue, Mar 20, 2012 at 3:29 PM, Felipe Balbi ba...@ti.com wrote: Hi, On Tue, Mar 20, 2012 at 03:00:50PM +0530, Munegowda, Keshava wrote: +MODULE_AUTHOR(Keshava Munegowda keshava_mgo...@ti.com); +MODULE_ALIAS(platform: USBHS_DRIVER_NAME); +MODULE_LICENSE(GPL v2); +MODULE_DESCRIPTION(usb tll driver for TI OMAP EHCI and OHCI controllers); + +static int __init omap_usbtll_drvinit(void) +{ + return platform_driver_probe(usbtll_omap_driver, usbtll_omap_probe); please don't. Make sure you use platform_driver_register, instead. Here , omap_usbtll_drvinit is registered through fs_initcall call; this is required because, the TLL driver is required to initialized before the UHH ( usb host core) driver. no issues with fs_initcall. The issue is with platform_driver_probe() only. -- balbi Thanks , I got it. I will take the same comment make the same change in usbhs driver too; cool, thanks -- balbi signature.asc Description: Digital signature
[PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
From: Keshava Munegowda keshava_mgo...@ti.com The platform driver for the TLL component of the OMAP USB host controller is implemented. Depending on the TLL hardware revision , the TLL channels are configured. The USB HS core driver uses this driver through exported APIs from the TLL platform driver. usb_tll_enable and usb_tll_disble are the exported APIs of the USB TLL platform driver. Signed-off-by: Keshava Munegowda keshava_mgo...@ti.com Reviewed-by: Partha Basak part...@india.ti.com --- arch/arm/plat-omap/include/plat/usb.h |8 + drivers/mfd/Kconfig |2 +- drivers/mfd/Makefile |2 +- drivers/mfd/omap-usb-tll.c| 463 + 4 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 drivers/mfd/omap-usb-tll.c diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index dc864b5..eb1e47d 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h @@ -61,6 +61,10 @@ struct usbhs_omap_platform_data { struct ehci_hcd_omap_platform_data *ehci_data; struct ohci_hcd_omap_platform_data *ohci_data; }; + +struct usbtll_omap_platform_data { + enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS]; +}; /*-*/ #define OMAP1_OTG_BASE 0xfffb0400 @@ -105,6 +109,10 @@ extern int omap4430_phy_set_clk(struct device *dev, int on); extern int omap4430_phy_init(struct device *dev); extern int omap4430_phy_exit(struct device *dev); extern int omap4430_phy_suspend(struct device *dev, int suspend); + +extern int omap_tll_enable(void); +extern int omap_tll_disable(void); + #endif extern void am35x_musb_reset(void); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index f147395..5f75ad4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -772,7 +772,7 @@ config MFD_WL1273_CORE audio codec. config MFD_OMAP_USB_HOST - bool Support OMAP USBHS core driver + bool Support OMAP USBHS core and TLL driver depends on USB_EHCI_HCD_OMAP || USB_OHCI_HCD_OMAP3 default y help diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index b953bab..4b3a8e0 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -105,7 +105,7 @@ obj-$(CONFIG_MFD_TPS6586X) += tps6586x.o obj-$(CONFIG_MFD_VX855)+= vx855.o obj-$(CONFIG_MFD_WL1273_CORE) += wl1273-core.o obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o -obj-$(CONFIG_MFD_OMAP_USB_HOST)+= omap-usb-host.o +obj-$(CONFIG_MFD_OMAP_USB_HOST)+= omap-usb-host.o omap-usb-tll.o obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o obj-$(CONFIG_MFD_PM8XXX_IRQ) += pm8xxx-irq.o obj-$(CONFIG_TPS65911_COMPARATOR) += tps65911-comparator.o diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c new file mode 100644 index 000..3da468a --- /dev/null +++ b/drivers/mfd/omap-usb-tll.c @@ -0,0 +1,463 @@ +/** + * omap-usb-tll.c - The USB TLL driver for OMAP EHCI OHCI + * + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com + * Author: Keshava Munegowda keshava_mgo...@ti.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 of + * the License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ +#include linux/kernel.h +#include linux/module.h +#include linux/types.h +#include linux/slab.h +#include linux/spinlock.h +#include linux/platform_device.h +#include linux/clk.h +#include linux/io.h +#include linux/err.h +#include plat/usb.h +#include linux/pm_runtime.h + +#define USBTLL_DRIVER_NAME usbhs_tll + +/* TLL Register Set */ +#defineOMAP_USBTLL_REVISION(0x00) +#defineOMAP_USBTLL_SYSCONFIG (0x10) +#defineOMAP_USBTLL_SYSCONFIG_CACTIVITY (1 8) +#defineOMAP_USBTLL_SYSCONFIG_SIDLEMODE (1 3) +#defineOMAP_USBTLL_SYSCONFIG_ENAWAKEUP (1 2) +#defineOMAP_USBTLL_SYSCONFIG_SOFTRESET (1 1) +#defineOMAP_USBTLL_SYSCONFIG_AUTOIDLE (1 0) + +#defineOMAP_USBTLL_SYSSTATUS (0x14) +#defineOMAP_USBTLL_SYSSTATUS_RESETDONE (1 0) + +#defineOMAP_USBTLL_IRQSTATUS (0x18) +#defineOMAP_USBTLL_IRQENABLE
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
Hi Keshava, Some doubts / comments . On Monday 19 March 2012 12:18 PM, Keshava Munegowda wrote: From: Keshava Munegowda keshava_mgo...@ti.com The platform driver for the TLL component of the OMAP USB host controller is implemented. Depending on the TLL hardware revision , the TLL channels are configured. The USB HS core driver uses this driver through exported APIs from the TLL platform driver. usb_tll_enable and usb_tll_disble are the exported APIs of the USB TLL platform driver. Signed-off-by: Keshava Munegowda keshava_mgo...@ti.com Reviewed-by: Partha Basak part...@india.ti.com --- arch/arm/plat-omap/include/plat/usb.h |8 + drivers/mfd/Kconfig |2 +- drivers/mfd/Makefile |2 +- drivers/mfd/omap-usb-tll.c| 463 + 4 files changed, 473 insertions(+), 2 deletions(-) create mode 100644 drivers/mfd/omap-usb-tll.c diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index dc864b5..eb1e47d 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h @@ -61,6 +61,10 @@ struct usbhs_omap_platform_data { struct ehci_hcd_omap_platform_data *ehci_data; struct ohci_hcd_omap_platform_data *ohci_data; }; + +struct usbtll_omap_platform_data { + enum usbhs_omap_port_mode port_mode[OMAP3_HS_USB_PORTS]; +}; /*-*/ #define OMAP1_OTG_BASE 0xfffb0400 @@ -105,6 +109,10 @@ extern int omap4430_phy_set_clk(struct device *dev, int on); extern int omap4430_phy_init(struct device *dev); extern int omap4430_phy_exit(struct device *dev); extern int omap4430_phy_suspend(struct device *dev, int suspend); + +extern int omap_tll_enable(void); +extern int omap_tll_disable(void); + #endif extern void am35x_musb_reset(void); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index f147395..5f75ad4 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -772,7 +772,7 @@ config MFD_WL1273_CORE audio codec. config MFD_OMAP_USB_HOST - bool Support OMAP USBHS core driver + bool Support OMAP USBHS core and TLL driver depends on USB_EHCI_HCD_OMAP || USB_OHCI_HCD_OMAP3 default y help diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile index b953bab..4b3a8e0 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile @@ -105,7 +105,7 @@ obj-$(CONFIG_MFD_TPS6586X)+= tps6586x.o obj-$(CONFIG_MFD_VX855) += vx855.o obj-$(CONFIG_MFD_WL1273_CORE)+= wl1273-core.o obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o -obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o +obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o omap-usb-tll.o obj-$(CONFIG_MFD_PM8921_CORE)+= pm8921-core.o obj-$(CONFIG_MFD_PM8XXX_IRQ) += pm8xxx-irq.o obj-$(CONFIG_TPS65911_COMPARATOR)+= tps65911-comparator.o diff --git a/drivers/mfd/omap-usb-tll.c b/drivers/mfd/omap-usb-tll.c new file mode 100644 index 000..3da468a --- /dev/null +++ b/drivers/mfd/omap-usb-tll.c @@ -0,0 +1,463 @@ +/** + * omap-usb-tll.c - The USB TLL driver for OMAP EHCI OHCI + * + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com Nitpick : 2012 + * Author: Keshava Munegowda keshava_mgo...@ti.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 of + * the License as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ +#include linux/kernel.h +#include linux/module.h +#include linux/types.h +#include linux/slab.h +#include linux/spinlock.h +#include linux/platform_device.h +#include linux/clk.h +#include linux/io.h +#include linux/err.h +#include plat/usb.h +#include linux/pm_runtime.h + +#define USBTLL_DRIVER_NAME usbhs_tll + +/* TLL Register Set */ +#define OMAP_USBTLL_REVISION(0x00) +#define OMAP_USBTLL_SYSCONFIG (0x10) +#define OMAP_USBTLL_SYSCONFIG_CACTIVITY (1 8) +#define OMAP_USBTLL_SYSCONFIG_SIDLEMODE (1 3) +#define OMAP_USBTLL_SYSCONFIG_ENAWAKEUP (1 2) +#define OMAP_USBTLL_SYSCONFIG_SOFTRESET (1 1) +#define OMAP_USBTLL_SYSCONFIG_AUTOIDLE (1 0) + +#define OMAP_USBTLL_SYSSTATUS
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
Hi, On Mon, Mar 19, 2012 at 12:18:31PM +0530, Keshava Munegowda wrote: + ver = usbtll_read(base, OMAP_USBTLL_REVISION); + if (ver == OMAP_USBTLL_REV1) + count = OMAP_TLL_CHANNEL_COUNT; + else if (ver == OMAP_USBTLL_REV2) + count = OMAP_REV2_TLL_CHANNEL_COUNT; + else { + dev_err(dev, TLL version failed\n); + ret = -ENODEV; + goto err_ioremap; + } wrong coding style. +static const struct dev_pm_ops usbtllomap_dev_pm_ops = { + .runtime_suspend= usbtll_runtime_suspend, + .runtime_resume = usbtll_runtime_resume, use SET_RUNTIME_PM_OPS() +static struct platform_driver usbtll_omap_driver = { + .driver = { + .name = (char *)usbtll_driver_name, + .owner = THIS_MODULE, + .pm = usbtllomap_dev_pm_ops, + }, + .remove = __exit_p(usbtll_omap_remove), __devexit_p() +}; + +int omap_tll_enable(void) +{ + if (!tll_pdev) { + dev_dbg(tll_pdev-dev, missing platform_data\n); + return -ENODEV; + } + return pm_runtime_get_sync(tll_pdev-dev); +} +EXPORT_SYMBOL_GPL(omap_tll_enable); why ? + +int omap_tll_disable(void) +{ + if (!tll_pdev) { + dev_dbg(tll_pdev-dev, missing platform_data\n); + return -ENODEV; + } + return pm_runtime_put_sync(tll_pdev-dev); +} +EXPORT_SYMBOL_GPL(omap_tll_disable); why ? +MODULE_AUTHOR(Keshava Munegowda keshava_mgo...@ti.com); +MODULE_ALIAS(platform: USBHS_DRIVER_NAME); +MODULE_LICENSE(GPL v2); +MODULE_DESCRIPTION(usb tll driver for TI OMAP EHCI and OHCI controllers); + +static int __init omap_usbtll_drvinit(void) +{ + return platform_driver_probe(usbtll_omap_driver, usbtll_omap_probe); please don't. Make sure you use platform_driver_register, instead. -- balbi signature.asc Description: Digital signature
Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver
Hello. On 19-03-2012 14:06, Felipe Balbi wrote: + ver = usbtll_read(base, OMAP_USBTLL_REVISION); + if (ver == OMAP_USBTLL_REV1) + count = OMAP_TLL_CHANNEL_COUNT; + else if (ver == OMAP_USBTLL_REV2) + count = OMAP_REV2_TLL_CHANNEL_COUNT; + else { + dev_err(dev, TLL version failed\n); + ret = -ENODEV; + goto err_ioremap; + } wrong coding style. And *switch* seems more fitting here. WBR, Sergei -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html