[quote user="LIANG WANG102707"]
I have do print inside omap_dmtimer_stop(),it show that
l = __omap_dm_timer_read(timer, OMAP_TIMER_CTRL_REG, posted);
this sentence lead to fail
[/quote]
Looking inside the read function, it looks like if Write Posted mode is used, then the software synchronisation inside the dmtimer driver checks if there is a pending write access to the register and waits for it, but for some reason this ends up in a endless loop. I can't be 100% sure, but this is the only explanation I have from reading the source code:
[quote] if (posted)
while (__raw_readl(timer->pend) & (reg >> WPSHIFT))
cpu_relax();[/quote]
Please try to print the value of timer->pend and reg>>WPSHIFT inside this while loop. This is inside the __omap_dm_timer_read() function.
More information about the DMTIMER Write Posted mode can be read inside the AM335x TRM, section 20.1.3.10.1.
Best regards,
Miroslav