Re: [PATCH 4/6 V4] OMAP4: Hwmod: OMAP temperature sensor

2011-09-06 Thread J, KEERTHY
On Thu, Sep 1, 2011 at 4:46 AM, Paul Walmsley p...@pwsan.com wrote:
 Hi Keerthy, Benoît,

 On Wed, 31 Aug 2011, Keerthy wrote:

 From: Benoit Cousson b-cous...@ti.com

 OMAP4460 temperature sensor hwmod cannot be auto generated
 since it is part of ctrl module. Hence populating the
 necessary hwmod info manually.

 Looking at the 4460 1.x TRM Rev H, does it makes sense to create a
 separate hwmod structure for this IP block?  It looks to me like these
 registers are integrated pretty tightly inside the SYSCTRL_GENERAL_CORE IP
 block.  So from a hwmod perspective, it seems to be a different situation
 than, say, the RFBI block inside the DSS subsystem?

 Just based on looking at Table 18-110 Control Module Instance Summary
 and Table 18-111 SYSCTRL_GENERAL_CORE Register Mapping Summary, it seems
 to me that this IP block is best represented as an MFD.  Something like
 drivers/mfd/wm8350-core.c, which registers a hwmon device, which is then
 driven by drivers/hwmon/wm8350-hwmon.c.

In case of OMAP4460 only one instance of thermal sensor is present.
If i take the case of OMAP5 multiple (3) instances are present. I agree
all the registers are part of SYSCTRL. Defining a hwmod i could easily
call omap_hwmod_for_each_by_class() for multiple instances. WIthout
hwmod i am not sure how to cater to this requirement. Any inputs?


 That should avoid the need for this hwmod entry too.


 Signed-off-by: Benoit Cousson b-cous...@ti.com
 Signed-off-by: Keerthy j-keer...@ti.com
 Cc: t...@atomide.com
 Cc: b-cous...@ti.com
 ---
  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |   61 
 
  1 files changed, 61 insertions(+), 0 deletions(-)

 diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c 
 b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 index 6201422..28bf6d3 100644
 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 @@ -29,6 +29,7 @@
  #include plat/mcbsp.h
  #include plat/mmc.h
  #include plat/i2c.h
 +#include plat/temperature_sensor.h

  #include omap_hwmod_common_data.h

 @@ -832,6 +833,63 @@ static struct omap_hwmod omap44xx_aess_hwmod = {
  };

  /*
 + * 'temperature_sensor' class
 + * temperature sensor module inside the bandgap / control module
 + */
 +
 +static struct omap_hwmod_class omap44xx_temperature_sensor_hwmod_class = {
 +     .name   = temperature_sensor,
 +};
 +
 +static struct omap_hwmod_irq_info omap44xx_temperature_sensor_irqs[] = {
 +     { .name = thermal_alert, .irq = 126 + OMAP44XX_IRQ_GIC_START },
 +};
 +
 +static struct omap_hwmod_addr_space omap44xx_temperature_sensor_addrs[] = {
 +     {
 +             .pa_start       = 0x4a00232c,
 +             .pa_end         = 0x4a00238b,
 +     },
 +};
 +
 +static struct omap_hwmod omap44xx_temperature_sensor_hwmod;
 +/* l4_cfg - ctrl_module_core */
 +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__temperature_sensor = {
 +     .master         = omap44xx_l4_cfg_hwmod,
 +     .slave          = omap44xx_temperature_sensor_hwmod,
 +     .clk            = l4_div_ck,
 +     .addr           = omap44xx_temperature_sensor_addrs,
 +     .user           = OCP_USER_MPU | OCP_USER_SDMA,
 +};
 +
 +/* ctrl_module_core slave ports */
 +static struct omap_hwmod_ocp_if *omap44xx_temperature_sensor_slaves[] = {
 +     omap44xx_l4_cfg__temperature_sensor,
 +};
 +
 +/* temperature sensor dev_attr */
 +static struct omap_temp_sensor_dev_attr temp_sensor_dev_attr = {
 +     .name   = mpu,
 +};
 +
 +static struct omap_hwmod omap44xx_temperature_sensor_hwmod = {
 +     .name           = temperature_sensor_mpu,
 +     .class          = omap44xx_temperature_sensor_hwmod_class,
 +     .mpu_irqs       = omap44xx_temperature_sensor_irqs,
 +     .main_clk       = bandgap_ts_fclk,
 +     .slaves         = omap44xx_temperature_sensor_slaves,
 +     .slaves_cnt     = ARRAY_SIZE(omap44xx_temperature_sensor_slaves),
 +     .clkdm_name     = l4_wkup_clkdm,
 +     .prcm           = {
 +             .omap4 = {
 +             .clkctrl_offs = OMAP4_CM_WKUP_BANDGAP_CLKCTRL_OFFSET,
 +             },
 +     },
 +     .dev_attr       = temp_sensor_dev_attr,
 +     .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
 +};
 +
 +/*
   * 'bandgap' class
   * bangap reference for ldo regulators
   */
 @@ -5469,6 +5527,9 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] 
 = {
       omap44xx_timer10_hwmod,
       omap44xx_timer11_hwmod,

 +     /* temperature sensor hwmod */
 +     omap44xx_temperature_sensor_hwmod,
 +
       /* uart class */
       omap44xx_uart1_hwmod,
       omap44xx_uart2_hwmod,
 --
 1.7.0.4

 --
 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



 - Paul



-- 
Regards and Thanks,
Keerthy
--
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  

Re: [PATCH 4/6 V4] OMAP4: Hwmod: OMAP temperature sensor

2011-08-31 Thread Paul Walmsley
Hi Keerthy, Benoît,

On Wed, 31 Aug 2011, Keerthy wrote:

 From: Benoit Cousson b-cous...@ti.com
 
 OMAP4460 temperature sensor hwmod cannot be auto generated
 since it is part of ctrl module. Hence populating the
 necessary hwmod info manually.

Looking at the 4460 1.x TRM Rev H, does it makes sense to create a 
separate hwmod structure for this IP block?  It looks to me like these 
registers are integrated pretty tightly inside the SYSCTRL_GENERAL_CORE IP 
block.  So from a hwmod perspective, it seems to be a different situation 
than, say, the RFBI block inside the DSS subsystem?

Just based on looking at Table 18-110 Control Module Instance Summary 
and Table 18-111 SYSCTRL_GENERAL_CORE Register Mapping Summary, it seems 
to me that this IP block is best represented as an MFD.  Something like 
drivers/mfd/wm8350-core.c, which registers a hwmon device, which is then 
driven by drivers/hwmon/wm8350-hwmon.c.

That should avoid the need for this hwmod entry too.

 
 Signed-off-by: Benoit Cousson b-cous...@ti.com
 Signed-off-by: Keerthy j-keer...@ti.com
 Cc: t...@atomide.com
 Cc: b-cous...@ti.com
 ---
  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |   61 
 
  1 files changed, 61 insertions(+), 0 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c 
 b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 index 6201422..28bf6d3 100644
 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 @@ -29,6 +29,7 @@
  #include plat/mcbsp.h
  #include plat/mmc.h
  #include plat/i2c.h
 +#include plat/temperature_sensor.h
  
  #include omap_hwmod_common_data.h
  
 @@ -832,6 +833,63 @@ static struct omap_hwmod omap44xx_aess_hwmod = {
  };
  
  /*
 + * 'temperature_sensor' class
 + * temperature sensor module inside the bandgap / control module
 + */
 +
 +static struct omap_hwmod_class omap44xx_temperature_sensor_hwmod_class = {
 + .name   = temperature_sensor,
 +};
 +
 +static struct omap_hwmod_irq_info omap44xx_temperature_sensor_irqs[] = {
 + { .name = thermal_alert, .irq = 126 + OMAP44XX_IRQ_GIC_START },
 +};
 +
 +static struct omap_hwmod_addr_space omap44xx_temperature_sensor_addrs[] = {
 + {
 + .pa_start   = 0x4a00232c,
 + .pa_end = 0x4a00238b,
 + },
 +};
 +
 +static struct omap_hwmod omap44xx_temperature_sensor_hwmod;
 +/* l4_cfg - ctrl_module_core */
 +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__temperature_sensor = {
 + .master = omap44xx_l4_cfg_hwmod,
 + .slave  = omap44xx_temperature_sensor_hwmod,
 + .clk= l4_div_ck,
 + .addr   = omap44xx_temperature_sensor_addrs,
 + .user   = OCP_USER_MPU | OCP_USER_SDMA,
 +};
 +
 +/* ctrl_module_core slave ports */
 +static struct omap_hwmod_ocp_if *omap44xx_temperature_sensor_slaves[] = {
 + omap44xx_l4_cfg__temperature_sensor,
 +};
 +
 +/* temperature sensor dev_attr */
 +static struct omap_temp_sensor_dev_attr temp_sensor_dev_attr = {
 + .name   = mpu,
 +};
 +
 +static struct omap_hwmod omap44xx_temperature_sensor_hwmod = {
 + .name   = temperature_sensor_mpu,
 + .class  = omap44xx_temperature_sensor_hwmod_class,
 + .mpu_irqs   = omap44xx_temperature_sensor_irqs,
 + .main_clk   = bandgap_ts_fclk,
 + .slaves = omap44xx_temperature_sensor_slaves,
 + .slaves_cnt = ARRAY_SIZE(omap44xx_temperature_sensor_slaves),
 + .clkdm_name = l4_wkup_clkdm,
 + .prcm   = {
 + .omap4 = {
 + .clkctrl_offs = OMAP4_CM_WKUP_BANDGAP_CLKCTRL_OFFSET,
 + },
 + },
 + .dev_attr   = temp_sensor_dev_attr,
 + .omap_chip  = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
 +};
 +
 +/*
   * 'bandgap' class
   * bangap reference for ldo regulators
   */
 @@ -5469,6 +5527,9 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] 
 = {
   omap44xx_timer10_hwmod,
   omap44xx_timer11_hwmod,
  
 + /* temperature sensor hwmod */
 + omap44xx_temperature_sensor_hwmod,
 +
   /* uart class */
   omap44xx_uart1_hwmod,
   omap44xx_uart2_hwmod,
 -- 
 1.7.0.4
 
 --
 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
 


- Paul