/*-------------------------------------------------------------------------*/
+#if defined(CONFIG_ARCH_OMAP3) && \
+ (defined(CONFIG_OMAP3_THERMAL) || defined(CONFIG_OMAP3_THERMAL_MODULE))
+static void omap_init_temp_sensor(void)
+{
+ struct omap_hwmod *oh;
+ struct platform_device *pdev;
+
+ oh = omap_hwmod_lookup("bandgap_ts");
+ if (!oh) {
+ pr_err("%s: unable to find hwmod\n", __func__);
+ return;
+ }
+
+ pdev = omap_device_build("omap3-thermal", -1, oh, NULL, 0, NULL, 0, 0);
+ WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n",
+ __func__, PTR_ERR(pdev));
+}
+#else
+static inline void omap_init_temp_sensor(void) {}
+#endif
+
+/*-------------------------------------------------------------------------*/
+
static int __init omap2_init_devices(void)
{
/*
omap_init_sham();
omap_init_aes();
omap_init_vout();
+ omap_init_temp_sensor();
return 0;
}
.dev_attr = &omap_mcspi4_dev_attr,
};
+/* temp. sensor */
+struct omap_hwmod_class omap34xx_bandgap_ts_class = {
+ .name = "bandgap_ts",
+};
+
+static struct omap_hwmod_addr_space omap3xxx_bandgap_ts_addrs[] = {
+ {
+ .name = "mpu",
+ .pa_start = 0x48002524,
+ .pa_end = 0x48002524 + 4,
+ .flags = ADDR_TYPE_RT
+ },
+ { }
+};
+
+static struct omap_hwmod omap34xx_bandgap_ts;
+
+/* l4_core -> bandgap */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__bandgap_ts = {
+ .master = &omap3xxx_l4_core_hwmod,
+ .slave = &omap34xx_bandgap_ts,
+ .addr = omap3xxx_bandgap_ts_addrs,
+ .user = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_ocp_if *omap3xxx_bandgap_ts_slaves[] = {
+ &omap3xxx_l4_core__bandgap_ts,
+};
+
+static struct omap_hwmod omap34xx_bandgap_ts = {
+ .name = "bandgap_ts",
+ .main_clk = "ts_fck",
+ .slaves = omap3xxx_bandgap_ts_slaves,
+ .slaves_cnt = ARRAY_SIZE(omap3xxx_bandgap_ts_slaves),
+ .class = &omap34xx_bandgap_ts_class,
+ .flags = HWMOD_NO_IDLEST,
+};
+
/*
* usbhsotg
*/
&omap34xx_mcspi3,
&omap34xx_mcspi4,
+ &omap34xx_bandgap_ts,
+
NULL,
};