@@ -53,20 +53,28 @@ DEFINE_IRQ(dma_wdata_irq, "IRQ_wdata_dma");
5353#define dma_rdata_irq DMA1_CH3_IRQ
5454DEFINE_IRQ (dma_rdata_irq , "IRQ_rdata_dma" );
5555
56- /* EXTI IRQs. */
57- void IRQ_6 (void ) __attribute__((alias ("IRQ_SELA_changed" ))); /* EXTI0 */
58- void IRQ_7 (void ) __attribute__((alias ("IRQ_WGATE_rotary" ))); /* EXTI1 */
59- void IRQ_10 (void ) __attribute__((alias ("IRQ_SIDE_changed" ))); /* EXTI4 */
60- void IRQ_23 (void ) __attribute__((alias ("IRQ_WGATE_rotary" ))); /* EXTI9_5 */
56+ /* Head step handling. */
6157#if defined(APPLE2 )
6258static struct timer step_timer ;
6359static void POLL_step (void * unused );
6460#else
6561void IRQ_28 (void ) __attribute__((alias ("IRQ_STEP_changed" ))); /* TMR2 */
6662#endif
63+
64+ /* EXTI IRQs. */
65+ void IRQ_6 (void ) __attribute__((alias ("IRQ_SELA_changed" ))); /* EXTI0 */
66+ void IRQ_7 (void ) __attribute__((alias ("IRQ_WGATE_rotary" ))); /* EXTI1 */
67+ void IRQ_10 (void ) __attribute__((alias ("IRQ_SIDE_changed" ))); /* EXTI4 */
68+ void IRQ_23 (void ) __attribute__((alias ("IRQ_WGATE_rotary" ))); /* EXTI9_5 */
6769void IRQ_40 (void ) __attribute__((alias ("IRQ_MOTOR_CHGRST_rotary" ))); /* EXTI15_10 */
70+ #if WDATA_TOGGLE
71+ void IRQ_27 (void ) __attribute__((alias ("IRQ_wdata_capture" ))); /* TMR1_CC */
72+ #endif
6873#define MOTOR_CHGRST_IRQ 40
6974static const struct exti_irq exti_irqs [] = {
75+ #if WDATA_TOGGLE
76+ /* WDATA */ { 27 , FLOPPY_IRQ_WGATE_PRI , 0 },
77+ #endif
7078 /* SELA */ { 6 , FLOPPY_IRQ_SEL_PRI , 0 },
7179#if !defined (APPLE2 )
7280 /* STEP */ { 28 , FLOPPY_IRQ_STEP_PRI , m (2 ) /* dummy */ },
@@ -532,6 +540,17 @@ static void IRQ_CHGRST(struct drive *drv)
532540 }
533541}
534542
543+ #if WDATA_TOGGLE
544+ static void IRQ_wdata_capture (void )
545+ {
546+ /* Clear WDATA-captured flag. */
547+ (void )tim_wdata -> ccr1 ;
548+
549+ /* Toggle polarity to capture the next edge. */
550+ tim_wdata -> ccer ^= TIM_CCER_CC1P ;
551+ }
552+ #endif
553+
535554static void IRQ_MOTOR_CHGRST_rotary (void )
536555{
537556 struct drive * drv = & drive ;
0 commit comments