This is the mail archive of the ecos-patches@sourceware.org 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]

Re: Patch for Dallas DS12887 regarding Intel PC architectures


On Thu, 2006-11-23 at 16:35 +0000, David Fernandez wrote:
> On Thu, 2006-11-23 at 13:58 +0000, Jonathan Larmour wrote:
> > We should avoid introducing changes #ifdeffed for specific targets in 
> > generic code, especially so in this case when it's avoidable.
> > 
> > We should allow an override of DS_READ/DS_WRITE so that 
> > devs/wallclock/i386/pc/current/include/devices_wallclock_i386_pc.inl can 
> > set its own DS_READ/DS_WRITE. A patch that did this would be great, thanks.
> > 
> > Jifl
> 
Jonathan,

Here you are the new patch with the specifics in the inl part.

Have fun.

Index: devs/wallclock/i386/pc/current/ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/dfernandez/Projects/ecos/packages/devs/wallclock/i386/pc/current/ChangeLog,v
retrieving revision 1.1.1.1
diff -u -5 -B -b -w -p -r1.1.1.1 ChangeLog
--- devs/wallclock/i386/pc/current/ChangeLog	2006/06/26 10:52:46	1.1.1.1
+++ devs/wallclock/i386/pc/current/ChangeLog	2006/11/23 17:20:22
@@ -1,5 +1,12 @@
+2006-11-23  David Fernandez  <dfernandez@cct.co.uk>
+
+	* include/devices_wallclock_i386_pc.inl: Added exception for DS_READ
+	  DS_WRITE. Take into account that in Intel PC platforms the 8Th bit
+	  in DS_ADDR is used to enable or disable NMI gate, and therefore,
+	  should be preserved.
+
 2001-09-18  Rajagopalan Thiruvenkatachary  <rajt@us.ibm.com>
 
 	* include/devices_wallclock_i386_pc.inl:
 	* cdl/i386_pc_wallclock_drivers.cdl:
 	New package.
Index: devs/wallclock/i386/pc/current/include/devices_wallclock_i386_pc.inl
===================================================================
RCS file: /home/cvs/cvsroot/dfernandez/Projects/ecos/packages/devs/wallclock/i386/pc/current/include/devices_wallclock_i386_pc.inl,v
retrieving revision 1.1.1.1
diff -u -5 -B -b -w -p -r1.1.1.1 devices_wallclock_i386_pc.inl
--- devs/wallclock/i386/pc/current/include/devices_wallclock_i386_pc.inl	2006/06/26 10:52:46	1.1.1.1
+++ devs/wallclock/i386/pc/current/include/devices_wallclock_i386_pc.inl	2006/11/23 17:20:22
@@ -49,7 +49,25 @@
 
 #include CYGDAT_DEVS_WALLCLOCK_i386_PC_CFG
 
 #define DS_ADDR CYGDAT_DEVS_WALLCLOCK_I386_PC_RTC_ADDRESS_PORT
 #define DS_DATA    CYGDAT_DEVS_WALLCLOCK_I386_PC_RTC_DATA_PORT
+
+#ifndef DS_LINEAR
+#define DS_READ(offset, data)                               \
+CYG_MACRO_START                                             \
+    register CYG_BYTE btval;                                \
+    DS_READ_UINT8( DS_ADDR, (btval));                       \
+    DS_WRITE_UINT8(DS_ADDR, ((offset)&0x7F)|(btval&0x80));  \
+    DS_READ_UINT8( DS_DATA, (data));                        \
+CYG_MACRO_END
+#define DS_WRITE(offset, data)                              \
+CYG_MACRO_START                                             \
+    register CYG_BYTE btval;                                \
+    DS_READ_UINT8( DS_ADDR, (btval));                       \
+    DS_WRITE_UINT8(DS_ADDR, ((offset)&0x7F)|(btval&0x80));  \
+    DS_WRITE_UINT8(DS_DATA, (data));                        \
+CYG_MACRO_END
+#endif
+
 
 // EOF devs_wallclock_i386_pc.inl
Index: devs/wallclock/dallas/ds12887/current/ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/dfernandez/Projects/ecos/packages/devs/wallclock/dallas/ds12887/current/ChangeLog,v
retrieving revision 1.1.1.1
diff -u -5 -B -b -w -p -r1.1.1.1 ChangeLog
--- devs/wallclock/dallas/ds12887/current/ChangeLog	2006/06/26 10:52:46	1.1.1.1
+++ devs/wallclock/dallas/ds12887/current/ChangeLog	2006/11/23 17:20:42
@@ -1,5 +1,10 @@
+2006-11-23  David Fernandez  <dfernandez@cct.co.uk>
+
+	* src/ds17887.cxx (defines): Added check for some defines being done
+	  in INL file.
+
 2001-07-27  Jesper Skov  <jskov@redhat.com>
 
 	* src/ds12887.cxx (init_ds_hwclock): Use BCD mode since Century is
 	NA in binary mode. Force sane settings in registers if they are
 	undefined.
Index: devs/wallclock/dallas/ds12887/current/src/ds12887.cxx
===================================================================
RCS file: /home/cvs/cvsroot/dfernandez/Projects/ecos/packages/devs/wallclock/dallas/ds12887/current/src/ds12887.cxx,v
retrieving revision 1.1.1.1
diff -u -5 -B -b -w -p -r1.1.1.1 ds12887.cxx
--- devs/wallclock/dallas/ds12887/current/src/ds12887.cxx	2006/06/26 10:52:46	1.1.1.1
+++ devs/wallclock/dallas/ds12887/current/src/ds12887.cxx	2006/11/23 17:20:59
@@ -68,20 +68,23 @@
 #ifndef DS_READ_UINT8
 # define DS_READ_UINT8(x,y) HAL_READ_UINT8(x,y)
 # define DS_WRITE_UINT8(x,y) HAL_WRITE_UINT8(x,y)
 #endif
 
+#if !defined(DS_READ) && !defined(DS_WRITE) //  Allow for INL to define this
 #ifdef DS_LINEAR
 # ifndef DS_STEP
 #  define DS_STEP 0
 # endif
 # ifndef DS_BASE
 #  error "Need to know base of DS12887 part"
 # endif
-# define DS_READ(offset, data) DS_READ_UINT8(DS_BASE + ((offset) << DS_STEP), (data))
-# define DS_WRITE(offset, data) DS_WRITE_UINT8(DS_BASE + ((offset) << DS_STEP), (data))
-#else
+#define DS_READ( offset, data)  \
+    DS_READ_UINT8( DS_BASE + ((offset) << DS_STEP), (data))
+#define DS_WRITE(offset, data)  \
+    DS_WRITE_UINT8(DS_BASE + ((offset) << DS_STEP), (data))
+#else   //  !DS_LINEAR
 # if !defined(DS_ADDR) || !defined(DS_DATA)
 #  error "Need to know addr/data locations of DS12887 part"
 # endif
 # define DS_READ(offset, data)                 \
   CYG_MACRO_START                              \
@@ -92,10 +95,11 @@
   CYG_MACRO_START                              \
   DS_WRITE_UINT8(DS_ADDR, (offset));           \
   DS_WRITE_UINT8(DS_DATA, (data));             \
   CYG_MACRO_END
 #endif
+#endif  //  ! DS_READ && ! DS_WRITE
 
 // Registers
 #define DS_SECONDS         0x00
 #define DS_SECONDS_ALARM   0x01
 #define DS_MINUTES         0x02

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