This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

AT91: implementation of HAL_IDLE_THREAD_ACTION


daniel.neri@sigicom.se (Daniel Néri) writes:

> I'll make a separate post with a HAL_IDLE_THREAD_ACTION
> implementation for the new AT91 variant HAL.

And here it comes, also including some missing I/O register defines.


Cheers,
  --Daniel

cvs diff: Diffing hal/arm/at91/var
cvs diff: Diffing hal/arm/at91/var/current
Index: hal/arm/at91/var/current/ChangeLog
===================================================================
RCS file: /home/dne/cvsroot/redhat/ecos/packages/hal/arm/at91/var/current/ChangeLog,v
retrieving revision 1.1.1.2
retrieving revision 1.3
diff -u -5 -p -r1.1.1.2 -r1.3
--- hal/arm/at91/var/current/ChangeLog	2003/05/16 09:09:54	1.1.1.2
+++ hal/arm/at91/var/current/ChangeLog	2003/05/16 17:18:37	1.3
@@ -1,5 +1,15 @@
+2003-05-16  Daniel Néri  <daniel.neri@sigicom.se>
+
+	* cdl/hal_arm_at91.cdl: Implement CYGINT_HAL_ARM_VAR_IDLE_THREAD_ACTION.
+
+	* src/at91_misc.c (hal_arm_var_idle_thread_action): New function,
+	used for HAL_IDLE_THREAD_ACTION.
+
+	* include/var_io.h: Add missing PIO register defines. Add
+	AT91_PS_CR idle mode command bit.
+
 2003-05-15  Nick Garnett  <nickg@balti.calivar.com>
 
 	* src/at91_misc.c (hal_delay_us): Added calculation to better
 	approximate the number of timer ticks for a given number of
 	microseconds. This code also now adjust to the actual CPU clock
cvs diff: Diffing hal/arm/at91/var/current/cdl
Index: hal/arm/at91/var/current/cdl/hal_arm_at91.cdl
===================================================================
RCS file: /home/dne/cvsroot/redhat/ecos/packages/hal/arm/at91/var/current/cdl/hal_arm_at91.cdl,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -5 -p -r1.1.1.1 -r1.2
--- hal/arm/at91/var/current/cdl/hal_arm_at91.cdl	2003/05/14 08:47:18	1.1.1.1
+++ hal/arm/at91/var/current/cdl/hal_arm_at91.cdl	2003/05/16 17:23:35	1.2
@@ -64,10 +64,11 @@ cdl_package CYGPKG_HAL_ARM_AT91 {
     implements    CYGINT_HAL_DEBUG_GDB_STUBS
     implements    CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
     implements    CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
     implements    CYGINT_HAL_ARM_ARCH_ARM7
     implements    CYGINT_HAL_ARM_THUMB_ARCH
+    implements    CYGINT_HAL_ARM_VAR_IDLE_THREAD_ACTION
 
     # Let the architectural HAL see this variant's files
     define_proc {
         puts $::cdl_system_header "#define CYGBLD_HAL_ARM_VAR_IO_H"
     }
cvs diff: Diffing hal/arm/at91/var/current/include
Index: hal/arm/at91/var/current/include/var_io.h
===================================================================
RCS file: /home/dne/cvsroot/redhat/ecos/packages/hal/arm/at91/var/current/include/var_io.h,v
retrieving revision 1.1.1.1
retrieving revision 1.3
diff -u -5 -p -r1.1.1.1 -r1.3
--- hal/arm/at91/var/current/include/var_io.h	2003/05/14 08:47:19	1.1.1.1
+++ hal/arm/at91/var/current/include/var_io.h	2003/05/16 17:00:51	1.3
@@ -139,13 +139,23 @@
 
 #define AT91_PIO_PER  0x00  // PIO enable
 #define AT91_PIO_PDR  0x04  // PIO disable
 #define AT91_PIO_PSR  0x08  // PIO status
 #define AT91_PIO_OER  0x10  // Output enable
+#define AT91_PIO_ODR  0x14  // Output disable
+#define AT91_PIO_OSR  0x18  // Output status
+#define AT91_PIO_IFER 0x20  // Input Filter enable
+#define AT91_PIO_IFDR 0x24  // Input Filter disable
+#define AT91_PIO_IFSR 0x28  // Input Filter status
 #define AT91_PIO_SODR 0x30  // Set out bits
 #define AT91_PIO_CODR 0x34  // Clear out bits
+#define AT91_PIO_ODSR 0x38  // Output data status
 #define AT91_PIO_PDSR 0x3C  // Pin data status
+#define AT91_PIO_IER  0x40  // Interrupt enable
+#define AT91_PIO_IDR  0x44  // Interrupt disable
+#define AT91_PIO_IMR  0x48  // Interrupt mask
+#define AT91_PIO_ISR  0x4C  // Interrupt status
 
 //=============================================================================
 // Advanced Interrupt Controller (AIC)
 
 #ifndef AT91_AIC
@@ -376,10 +386,11 @@
 #ifndef AT91_PS
 #define AT91_PS         0xFFFF4000
 #endif
 
 #define AT91_PS_CR        0x000    // Control
+#define AT91_PS_CR_IDLE   (1<<0)   // Disable CPU clock (idle mode)
 #define AT91_PS_PCER      0x004    // Peripheral clock enable
 #define AT91_PS_PCDR      0x004    // Peripheral clock disable
 #define AT91_PS_PCSR      0x004    // Peripheral clock status
 
 #elif defined(CYGHWR_HAL_ARM_AT91_M42800A) || \
cvs diff: Diffing hal/arm/at91/var/current/src
Index: hal/arm/at91/var/current/src/at91_misc.c
===================================================================
RCS file: /home/dne/cvsroot/redhat/ecos/packages/hal/arm/at91/var/current/src/at91_misc.c,v
retrieving revision 1.1.1.2
retrieving revision 1.2
diff -u -5 -p -r1.1.1.2 -r1.2
--- hal/arm/at91/var/current/src/at91_misc.c	2003/05/16 09:09:54	1.1.1.2
+++ hal/arm/at91/var/current/src/at91_misc.c	2003/05/16 17:23:40	1.2
@@ -261,8 +261,14 @@ void hal_interrupt_set_level(int vector,
 void hal_show_IRQ(int vector, int data, int handler)
 {
 //    UNDEFINED(__FUNCTION__);  // FIXME
 }
 
+void
+hal_arm_var_idle_thread_action(cyg_uint32 loop_count)
+{
+    HAL_WRITE_UINT32(AT91_PS+AT91_PS_CR, AT91_PS_CR_IDLE);
+}
+
 
 //--------------------------------------------------------------------------
 // EOF at91_misc.c

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]