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