Re: [PATCH 1/5 RESEND] ARM: OMAP: USB: HOST TLL platform driver

2012-03-20 Thread Munegowda, Keshava
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

2012-03-20 Thread Munegowda, Keshava
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

2012-03-20 Thread Munegowda, Keshava
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

2012-03-20 Thread Shubhrajyoti
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

2012-03-20 Thread Munegowda, Keshava
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

2012-03-20 Thread Munegowda, Keshava
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

2012-03-20 Thread Felipe Balbi
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

2012-03-20 Thread Felipe Balbi
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

2012-03-20 Thread Munegowda, Keshava
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

2012-03-20 Thread Felipe Balbi
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

2012-03-19 Thread Keshava Munegowda
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

2012-03-19 Thread Shubhrajyoti
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

2012-03-19 Thread Felipe Balbi
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

2012-03-19 Thread Sergei Shtylyov

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