Date:2010-05-28 01:37:09 (10 years 1 month ago)
Author:Maarten ter Huurne
Commit:08d2d24b276d180d4b086eaef64e802271bcb3d6
Message:jz4740_timer: Mask the "half" timer interrupts in plat_time_init(). This fixes a hang when booting on the Dingoo A320 in USB boot mode with the Rockbox USBtool.

Files: arch/mips/jz4740/time.c (1 diff)
arch/mips/jz4740/timer.h (1 diff)

Change Details

arch/mips/jz4740/time.c
136136
137137    jz4740_timer_set_period(TIMER_CLOCKEVENT, jz4740_jiffies_per_tick);
138138    jz4740_timer_irq_full_enable(TIMER_CLOCKEVENT);
139    jz4740_timer_irq_half_disable(TIMER_CLOCKEVENT);
139140
140141    jz4740_timer_irq_full_disable(TIMER_CLOCKSOURCE);
142    jz4740_timer_irq_half_disable(TIMER_CLOCKSOURCE);
141143    jz4740_timer_set_period(TIMER_CLOCKSOURCE, 0xffff);
142144
143145    jz4740_timer_enable(TIMER_CLOCKEVENT);
arch/mips/jz4740/timer.h
122122    writel(JZ_TIMER_IRQ_FULL(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_SET);
123123}
124124
125static inline void jz4740_timer_irq_half_enable(unsigned int timer)
126{
127    writel(JZ_TIMER_IRQ_HALF(timer), jz4740_timer_base + JZ_REG_TIMER_FLAG_CLEAR);
128    writel(JZ_TIMER_IRQ_HALF(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_CLEAR);
129}
130
131static inline void jz4740_timer_irq_half_disable(unsigned int timer)
132{
133    writel(JZ_TIMER_IRQ_HALF(timer), jz4740_timer_base + JZ_REG_TIMER_MASK_SET);
134}
135
125136static inline void jz4740_timer_set_ctrl(unsigned int timer, uint16_t ctrl)
126137{
127138    writew(ctrl, jz4740_timer_base + JZ_REG_TIMER_CTRL(timer));

Archive Download the corresponding diff file



interactive