* Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> [100310 09:14]: > "Gurav , Pramod" <pramod.gurav@xxxxxx> writes: > > > Hi All, > > I am using dmtimer in my code. Code looks like this: > > > > { > > static struct omap_dm_timer *gpt; > > void * __iomem gpt10_counter_reg; > > unsigned long gpt_phys_base; > > > > omap_dm_timer_init(); > > gpt = omap_dm_timer_request(); > > if (!gpt) { > > pr_err("Could not get the gptimer\n"); > > return -1; > > } > > omap_dm_timer_set_source(gpt, OMAP_TIMER_SRC_SYS_CLK); > > > > gpt_phys_base = gpt->phys_base; > > > > gpt10_counter_reg = > > OMAP2_L4_IO_ADDRESS(gpt_phys_base + > > OMAP_TIMER_COUNTER_OFFSET); We should use ioremap for allthings like this nowadays. There are static mappings in place for that. > > gt_rate = clk_get_rate(omap_dm_timer_get_fclk(gpt)); > > omap_dm_timer_set_load_start(gpt, 0, 0); > > > > . > > . > > . > > } > > > > I am not able to reference *gpt as the file does not know about struct omap_dm_timer. I have included plat/dmtimer.h. > > > > Why doesn't the dmtimer struct definition appear in plat/dmtimer.h ? > > Is there any reason for this? > > The declaration appears there, but the definition is hidden. > > In fact, it is is hidden to prevent exactly the type of thing you're > trying to do, and to provide all access to DM timer details via the DM > timer API. > > Looking at your example, I'm guessing you're trying to implement one > of my ideas for the SDRC delay calculation by passing the base address > to the assembly routine. > > As I suggested in my original patch, the better way to do this would > be to extend the dmtimer API, and use C instead of assembly. And if it's generic code, you're better off using Linux hrtimers instead. Otherwise there's a good chance your timer won't wake up the system from the idle mode and you miss the timer events. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html