diff packages/devs/pcmcia/arm/assabet/current/src/assabet_pcmcia.c @ 117:bd1a71e3e476 ecos-sw-2000-08-25

Merge from eCos master repository on 2000-08-25-19:22:58-BST
author jlarmour
date Fri, 25 Aug 2000 19:17:22 +0000
parents 6ed91473a1cd
children 77cec8369160
line wrap: on
line diff
--- a/packages/devs/pcmcia/arm/assabet/current/src/assabet_pcmcia.c
+++ b/packages/devs/pcmcia/arm/assabet/current/src/assabet_pcmcia.c
@@ -46,6 +46,7 @@
 #include <cyg/hal/hal_io.h>             // IO macros
 #include <cyg/hal/hal_arch.h>           // Register state info
 #include <cyg/hal/hal_intr.h>           // HAL interrupt macros
+#include <cyg/hal/drv_api.h>
 
 #ifdef CYGPKG_KERNEL
 #include <pkgconf/kernel.h>   // Configuration header
@@ -123,29 +124,29 @@ cf_hwr_init(struct cf_slot *slot)
         int_init = 1;
 #ifdef CYGPKG_KERNEL
         // Set up interrupts
-        cyg_interrupt_create(SA1110_CF_DETECT,
-                             99,                     // Priority - what goes here?
-                             (cyg_addrword_t) slot,  //  Data item passed to interrupt handler
-                             (cyg_ISR_t *)cf_detect_isr,
-                             (cyg_DSR_t *)cf_detect_dsr,
-                             &cf_detect_interrupt_handle,
-                             &cf_detect_interrupt);
-        cyg_interrupt_attach(cf_detect_interrupt_handle);
-        cyg_interrupt_configure(SA1110_CF_DETECT, true, true);  // Detect either edge
-        cyg_interrupt_acknowledge(SA1110_CF_DETECT);
-        cyg_interrupt_unmask(SA1110_CF_DETECT);
-        cyg_interrupt_create(SA1110_CF_IRQ,
-                             99,                     // Priority - what goes here?
-                             (cyg_addrword_t) slot,  //  Data item passed to interrupt handler
-                             (cyg_ISR_t *)cf_irq_isr,
-                             (cyg_DSR_t *)cf_irq_dsr,
-                             &cf_irq_interrupt_handle,
-                             &cf_irq_interrupt);
-        cyg_interrupt_attach(cf_irq_interrupt_handle);
-        cyg_interrupt_configure(SA1110_CF_IRQ, false, false);  // Falling edge
-        cyg_interrupt_acknowledge(SA1110_CF_IRQ);
-        cyg_interrupt_unmask(SA1110_CF_IRQ);
+        cyg_drv_interrupt_create(SA1110_CF_DETECT,
+                                 99,                     // Priority - what goes here?
+                                 (cyg_addrword_t) slot,  //  Data item passed to interrupt handler
+                                 (cyg_ISR_t *)cf_detect_isr,
+                                 (cyg_DSR_t *)cf_detect_dsr,
+                                 &cf_detect_interrupt_handle,
+                                 &cf_detect_interrupt);
+        cyg_drv_interrupt_attach(cf_detect_interrupt_handle);
+        cyg_drv_interrupt_configure(SA1110_CF_DETECT, true, true);  // Detect either edge
+        cyg_drv_interrupt_acknowledge(SA1110_CF_DETECT);
+        cyg_drv_interrupt_unmask(SA1110_CF_DETECT);
+        cyg_drv_interrupt_create(SA1110_CF_IRQ,
+                                 99,                     // Priority - what goes here?
+                                 (cyg_addrword_t) slot,  //  Data item passed to interrupt handler
+                                 (cyg_ISR_t *)cf_irq_isr,
+                                 (cyg_DSR_t *)cf_irq_dsr,
+                                 &cf_irq_interrupt_handle,
+                                 &cf_irq_interrupt);
+        cyg_drv_interrupt_attach(cf_irq_interrupt_handle);
+        cyg_drv_interrupt_acknowledge(SA1110_CF_IRQ);
+        cyg_drv_interrupt_unmask(SA1110_CF_IRQ);
 #endif
+        cyg_drv_interrupt_configure(SA1110_CF_IRQ, false, false);  // Falling edge
     }
     slot->attr = (unsigned char *)0x38000000;
     slot->attr_length = 0x200;
@@ -236,3 +237,13 @@ cf_hwr_change_state(struct cf_slot *slot
         }
     }
 }
+
+//
+// Acknowledge interrupt (used in non-kernel environments)
+//
+void
+cf_hwr_clear_interrupt(struct cf_slot *slot)
+{
+    // Clear interrupt [edge indication]
+    cyg_drv_interrupt_acknowledge(SA1110_CF_IRQ);
+}