diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-05-04 00:53:45 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-05-04 00:53:45 +0000 |
commit | 9c2eacafead672c49f84f415a63caeb24cf2fd60 (patch) | |
tree | 87487fa58ce3aa8c4e20d85b28e5fe1cbba85c26 /c | |
parent | 2009-05-03 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-9c2eacafead672c49f84f415a63caeb24cf2fd60.tar.bz2 |
2009-05-03 Joel Sherrill <joel.sherrill@oarcorp.com>
* libchip/rtc/ds1375.c, libchip/rtc/mc146818a.c: Fix warnings. Reformat
as needed.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/libchip/rtc/ds1375.c | 518 | ||||
-rw-r--r-- | c/src/libchip/rtc/mc146818a.c | 4 |
3 files changed, 273 insertions, 254 deletions
diff --git a/c/src/ChangeLog b/c/src/ChangeLog index 31a84a6892..716ff47246 100644 --- a/c/src/ChangeLog +++ b/c/src/ChangeLog @@ -1,3 +1,8 @@ +2009-05-03 Joel Sherrill <joel.sherrill@oarcorp.com> + + * libchip/rtc/ds1375.c, libchip/rtc/mc146818a.c: Fix warnings. Reformat + as needed. + 2009-04-29 Chris Johns <chrisj@rtems.org> * libchip/ide/ata.c: Remove a detection test that fails in qemu. diff --git a/c/src/libchip/rtc/ds1375.c b/c/src/libchip/rtc/ds1375.c index 28c91abdea..2a63c47755 100644 --- a/c/src/libchip/rtc/ds1375.c +++ b/c/src/libchip/rtc/ds1375.c @@ -8,13 +8,13 @@ * This software was created by * * Till Straumann <strauman@slac.stanford.edu>, 2005-2007, - * Stanford Linear Accelerator Center, Stanford University. + * Stanford Linear Accelerator Center, Stanford University. * * Acknowledgement of sponsorship * ------------------------------ * The software was produced by * the Stanford Linear Accelerator Center, Stanford University, - * under Contract DE-AC03-76SFO0515 with the Department of Energy. + * under Contract DE-AC03-76SFO0515 with the Department of Energy. * * Government disclaimer of liability * ---------------------------------- @@ -70,29 +70,29 @@ * (printf, perror etc.). * Our file descriptors may even be 0..2 */ -#define STDIOSAFE(fmt,args...) \ - do { \ - if ( _System_state_Is_up( _System_state_Get() ) ) { \ - fprintf(stderr,fmt,args); \ - } else { \ - printk(fmt,args); \ - } \ - } while (0) +#define STDIOSAFE(fmt,args...) \ + do { \ + if ( _System_state_Is_up( _System_state_Get() ) ) { \ + fprintf(stderr,fmt,args); \ + } else { \ + printk(fmt,args); \ + } \ + } while (0) STATIC uint8_t ds1375_bcd2bin(uint8_t x) { -uint8_t h = x & 0xf0; + uint8_t h = x & 0xf0; - /* 8*hi + 2*hi + lo */ - return ( h >> 1 ) + ( h >> 3 ) + ( x & 0xf ); + /* 8*hi + 2*hi + lo */ + return ( h >> 1 ) + ( h >> 3 ) + ( x & 0xf ); } STATIC uint8_t ds1375_bin2bcd(uint8_t x) { -uint8_t h = x/10; + uint8_t h = x/10; - return ( h << 4 ) + ( x - ( ( h << 3 ) + ( h << 1 ) ) ); + return ( h << 4 ) + ( x - ( ( h << 3 ) + ( h << 1 ) ) ); } /* @@ -103,227 +103,240 @@ uint8_t h = x/10; * starting at the seconds (for the 1375 both, * _REG and _OFF happen to be identical). */ - - -#define DS1375_SEC_REG 0x0 -#define DS1375_SEC_OFF (DS1375_SEC_REG-DS1375_SEC_REG) +#define DS1375_SEC_REG 0x0 +#define DS1375_SEC_OFF (DS1375_SEC_REG-DS1375_SEC_REG) /* Extract seconds and convert to binary */ -#define DS1375_SEC(x) ds1375_bcd2bin( ((x)[DS1375_SEC_OFF]) & 0x7f ) +#define DS1375_SEC(x) ds1375_bcd2bin( ((x)[DS1375_SEC_OFF]) & 0x7f ) -#define DS1375_MIN_REG 0x1 -#define DS1375_MIN_OFF (DS1375_MIN_REG-DS1375_SEC_REG) +#define DS1375_MIN_REG 0x1 +#define DS1375_MIN_OFF (DS1375_MIN_REG-DS1375_SEC_REG) /* Extract minutes and convert to binary */ -#define DS1375_MIN(x) ds1375_bcd2bin( ((x)[DS1375_MIN_OFF]) & 0x7f ) +#define DS1375_MIN(x) ds1375_bcd2bin( ((x)[DS1375_MIN_OFF]) & 0x7f ) -#define DS1375_HR_REG 0x2 -#define DS1375_HR_OFF (DS1375_HR_REG-DS1375_SEC_REG) -#define DS1375_HR_1224 (1<<6) -#define DS1375_HR_AMPM (1<<5) +#define DS1375_HR_REG 0x2 +#define DS1375_HR_OFF (DS1375_HR_REG-DS1375_SEC_REG) +#define DS1375_HR_1224 (1<<6) +#define DS1375_HR_AMPM (1<<5) /* Are hours in AM/PM representation ? */ -#define DS1375_IS_AMPM(x) (DS1375_HR_1224 & ((x)[DS1375_HR_OFF])) +#define DS1375_IS_AMPM(x) (DS1375_HR_1224 & ((x)[DS1375_HR_OFF])) /* Are we PM ? */ -#define DS1375_IS_PM(x) (DS1375_HR_AMPM & ((x)[DS1375_HR_OFF])) +#define DS1375_IS_PM(x) (DS1375_HR_AMPM & ((x)[DS1375_HR_OFF])) /* Extract hours (12h mode) and convert to binary */ -#define DS1375_HR_12(x) ds1375_bcd2bin( ((x)[DS1375_HR_OFF]) & 0x1f ) +#define DS1375_HR_12(x) ds1375_bcd2bin( ((x)[DS1375_HR_OFF]) & 0x1f ) /* Extract hours (24h mode) and convert to binary */ -#define DS1375_HR_24(x) ds1375_bcd2bin( ((x)[DS1375_HR_OFF]) & 0x3f ) +#define DS1375_HR_24(x) ds1375_bcd2bin( ((x)[DS1375_HR_OFF]) & 0x3f ) -#define DS1375_DAY_REG 0x3 -#define DS1375_DAY_OFF (DS1375_DAY_REG-DS1375_SEC_REG) -#define DS1375_DAT_REG 0x4 -#define DS1375_DAT_OFF (DS1375_DAT_REG-DS1375_SEC_REG) +#define DS1375_DAY_REG 0x3 +#define DS1375_DAY_OFF (DS1375_DAY_REG-DS1375_SEC_REG) +#define DS1375_DAT_REG 0x4 +#define DS1375_DAT_OFF (DS1375_DAT_REG-DS1375_SEC_REG) /* Extract date and convert to binary */ -#define DS1375_DAT(x) ds1375_bcd2bin( ((x)[DS1375_DAT_OFF]) & 0x3f ) -#define DS1375_MON_REG 0x5 -#define DS1375_MON_OFF (DS1375_MON_REG-DS1375_SEC_REG) -#define DS1375_MON_CTRY (1<<7) +#define DS1375_DAT(x) ds1375_bcd2bin( ((x)[DS1375_DAT_OFF]) & 0x3f ) +#define DS1375_MON_REG 0x5 +#define DS1375_MON_OFF (DS1375_MON_REG-DS1375_SEC_REG) +#define DS1375_MON_CTRY (1<<7) /* Is century bit set ? */ -#define DS1375_IS_CTRY(x) (((x)[DS1375_MON_OFF]) & DS1375_MON_CTRY) +#define DS1375_IS_CTRY(x) (((x)[DS1375_MON_OFF]) & DS1375_MON_CTRY) /* Extract month and convert to binary */ -#define DS1375_MON(x) ds1375_bcd2bin( ((x)[DS1375_MON_OFF]) & 0x1f ) +#define DS1375_MON(x) ds1375_bcd2bin( ((x)[DS1375_MON_OFF]) & 0x1f ) -#define DS1375_YR_REG 0x6 -#define DS1375_YR_OFF (DS1375_YR_REG-DS1375_SEC_REG) +#define DS1375_YR_REG 0x6 +#define DS1375_YR_OFF (DS1375_YR_REG-DS1375_SEC_REG) /* Extract year and convert to binary */ -#define DS1375_YR(x) ds1375_bcd2bin( ((x)[DS1375_YR_OFF]) & 0xff ) +#define DS1375_YR(x) ds1375_bcd2bin( ((x)[DS1375_YR_OFF]) & 0xff ) /* CR Register and bit definitions */ -#define DS1375_CR_REG 0xe -#define DS1375_CR_ECLK (1<<7) -#define DS1375_CR_CLKSEL1 (1<<6) -#define DS1375_CR_CLKSEL0 (1<<5) -#define DS1375_CR_RS2 (1<<4) -#define DS1375_CR_RS1 (1<<3) -#define DS1375_CR_INTCN (1<<2) -#define DS1375_CR_A2IE (1<<1) -#define DS1375_CR_A1IE (1<<0) - -#define DS1375_CSR_REG 0xf +#define DS1375_CR_REG 0xe +#define DS1375_CR_ECLK (1<<7) +#define DS1375_CR_CLKSEL1 (1<<6) +#define DS1375_CR_CLKSEL0 (1<<5) +#define DS1375_CR_RS2 (1<<4) +#define DS1375_CR_RS1 (1<<3) +#define DS1375_CR_INTCN (1<<2) +#define DS1375_CR_A2IE (1<<1) +#define DS1375_CR_A1IE (1<<0) + +#define DS1375_CSR_REG 0xf /* User SRAM (8 bytes) */ -#define DS1375_RAM 0x10 /* start of 8 bytes user ram */ +#define DS1375_RAM 0x10 /* start of 8 bytes user ram */ /* Access Primitives */ -STATIC int -rd_bytes( int fd, uint32_t off, uint8_t *buf, int len ) +STATIC int rd_bytes( + int fd, + uint32_t off, + uint8_t *buf, + int len +) { -uint8_t ptr = off; + uint8_t ptr = off; - return 1 == write( fd, &ptr, 1 ) && len == read( fd, buf, len ) ? 0 : -1; + return 1 == write( fd, &ptr, 1 ) && len == read( fd, buf, len ) ? 0 : -1; } -STATIC int -wr_bytes( int fd, uint32_t off, uint8_t *buf, int len ) +STATIC int wr_bytes( + int fd, + uint32_t off, + uint8_t *buf, + int len +) { -uint8_t d[ len + 1 ]; - - /* Must not break up writing of the register pointer and - * the data to-be-written into multiple write() calls - * because every 'write()' operation sends START and - * the chip interprets the first byte after START as - * the register pointer. - */ - - d[0] = off; - memcpy( d + 1, buf, len ); - - return len + 1 == write( fd, d, len + 1 ) ? 0 : -1; + uint8_t d[ len + 1 ]; + + /* Must not break up writing of the register pointer and + * the data to-be-written into multiple write() calls + * because every 'write()' operation sends START and + * the chip interprets the first byte after START as + * the register pointer. + */ + + d[0] = off; + memcpy( d + 1, buf, len ); + + return len + 1 == write( fd, d, len + 1 ) ? 0 : -1; } /* Helpers */ -static int -getfd( int minor ) +static int getfd( + int minor +) { - return open( (const char *)RTC_Table[minor].ulCtrlPort1, O_RDWR ); + return open( (const char *)RTC_Table[minor].ulCtrlPort1, O_RDWR ); } /* Driver Access Functions */ -STATIC void -ds1375_initialize( int minor ) +STATIC void ds1375_initialize( + int minor +) { -int fd; -uint8_t cr; - - if ( ( fd = getfd( minor ) ) >= 0 ) { - if ( 0 == rd_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) { - /* make sure clock is enabled */ - if ( ! ( DS1375_CR_ECLK & cr ) ) { - cr |= DS1375_CR_ECLK; - wr_bytes( fd, DS1375_CR_REG, &cr, 1 ); - } - } - close( fd ); - } + int fd; + uint8_t cr; + + if ( ( fd = getfd( minor ) ) >= 0 ) { + if ( 0 == rd_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) { + /* make sure clock is enabled */ + if ( ! ( DS1375_CR_ECLK & cr ) ) { + cr |= DS1375_CR_ECLK; + wr_bytes( fd, DS1375_CR_REG, &cr, 1 ); + } + } + close( fd ); + } } -STATIC int -ds1375_get_time( int minor, rtems_time_of_day *time ) +STATIC int ds1375_get_time( + int minor, + rtems_time_of_day *time +) { -int rval = -1; -int fd; -uint8_t buf[DS1375_YR_REG + 1 - DS1375_SEC_REG]; - - if ( time && ( ( fd = getfd( minor ) ) >= 0 ) ) { - if ( 0 == rd_bytes( fd, DS1375_SEC_REG, buf, sizeof(buf) ) ) { - time->year = DS1375_IS_CTRY( buf ) ? 2000 : 1900; - time->year += DS1375_YR ( buf ); - time->month = DS1375_MON( buf ); - time->day = DS1375_DAT( buf ); /* DAY is weekday */ - - if ( DS1375_IS_AMPM( buf ) ) { - time->hour = DS1375_HR_12 ( buf ); - if ( DS1375_IS_PM( buf ) ) - time->hour += 12; - } else { - time->hour = DS1375_HR_24 ( buf ); - } - - time->minute = DS1375_MIN( buf ); - time->second = DS1375_SEC( buf ); - time->ticks = 0; - rval = 0; - } - close( fd ); - } - return rval; + int rval = -1; + int fd; + uint8_t buf[DS1375_YR_REG + 1 - DS1375_SEC_REG]; + + if ( time && ( ( fd = getfd( minor ) ) >= 0 ) ) { + if ( 0 == rd_bytes( fd, DS1375_SEC_REG, buf, sizeof(buf) ) ) { + time->year = DS1375_IS_CTRY( buf ) ? 2000 : 1900; + time->year += DS1375_YR ( buf ); + time->month = DS1375_MON( buf ); + time->day = DS1375_DAT( buf ); /* DAY is weekday */ + + if ( DS1375_IS_AMPM( buf ) ) { + time->hour = DS1375_HR_12 ( buf ); + if ( DS1375_IS_PM( buf ) ) + time->hour += 12; + } else { + time->hour = DS1375_HR_24 ( buf ); + } + + time->minute = DS1375_MIN( buf ); + time->second = DS1375_SEC( buf ); + time->ticks = 0; + rval = 0; + } + close( fd ); + } + return rval; } -STATIC int -ds1375_set_time( int minor, rtems_time_of_day *time ) +STATIC int ds1375_set_time( + int minor, + const rtems_time_of_day *time +) { -int rval = -1; -int fd = -1; -time_t secs; -struct tm tm; -uint8_t buf[DS1375_YR_REG + 1 - DS1375_SEC_REG]; -uint8_t cr = 0xff; - /* - * The clock hardware maintains the day-of-week as a separate counter - * so we must compute it ourselves (rtems_time_of_day doesn't come - * with a day of week). - */ - secs = _TOD_To_seconds( time ); - /* we're only interested in tm_wday... */ - gmtime_r( &secs, &tm ); - - buf[DS1375_SEC_OFF] = ds1375_bin2bcd( time->second ); - buf[DS1375_MIN_OFF] = ds1375_bin2bcd( time->minute ); - /* bin2bcd(hour) implicitly selects 24h mode since ms-bit is clear */ - buf[DS1375_HR_OFF] = ds1375_bin2bcd( time->hour ); - buf[DS1375_DAY_OFF] = tm.tm_wday + 1; - buf[DS1375_DAT_OFF] = ds1375_bin2bcd( time->day ); - buf[DS1375_MON_OFF] = ds1375_bin2bcd( time->month ); - - if ( time->year >= 2000 ) { - buf[DS1375_YR_OFF] = ds1375_bin2bcd( time->year - 2000 ); - buf[DS1375_MON_OFF] |= DS1375_MON_CTRY; - } else { - buf[DS1375_YR_OFF] = ds1375_bin2bcd( time->year - 1900 ); - } - - /* - * Stop clock; update registers and restart. This is slightly - * slower than just writing everyting but if we did that we - * could get inconsistent registers if this routine would not - * complete in less than 1s (says the datasheet) and we don't - * know if we are going to be pre-empted for some time... - */ - if ( ( fd = getfd( minor ) ) < 0 ) { - goto cleanup; - } - - if ( rd_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) - goto cleanup; - - cr &= ~DS1375_CR_ECLK; - - /* This stops the clock */ - if ( wr_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) - goto cleanup; - - /* write new contents */ - if ( wr_bytes( fd, DS1375_SEC_REG, buf, sizeof(buf) ) ) - goto cleanup; - - rval = 0; - + int rval = -1; + int fd = -1; + time_t secs; + struct tm tm; + uint8_t buf[DS1375_YR_REG + 1 - DS1375_SEC_REG]; + uint8_t cr = 0xff; + + /* + * The clock hardware maintains the day-of-week as a separate counter + * so we must compute it ourselves (rtems_time_of_day doesn't come + * with a day of week). + */ + secs = _TOD_To_seconds( time ); + /* we're only interested in tm_wday... */ + gmtime_r( &secs, &tm ); + + buf[DS1375_SEC_OFF] = ds1375_bin2bcd( time->second ); + buf[DS1375_MIN_OFF] = ds1375_bin2bcd( time->minute ); + /* bin2bcd(hour) implicitly selects 24h mode since ms-bit is clear */ + buf[DS1375_HR_OFF] = ds1375_bin2bcd( time->hour ); + buf[DS1375_DAY_OFF] = tm.tm_wday + 1; + buf[DS1375_DAT_OFF] = ds1375_bin2bcd( time->day ); + buf[DS1375_MON_OFF] = ds1375_bin2bcd( time->month ); + + if ( time->year >= 2000 ) { + buf[DS1375_YR_OFF] = ds1375_bin2bcd( time->year - 2000 ); + buf[DS1375_MON_OFF] |= DS1375_MON_CTRY; + } else { + buf[DS1375_YR_OFF] = ds1375_bin2bcd( time->year - 1900 ); + } + + /* + * Stop clock; update registers and restart. This is slightly + * slower than just writing everyting but if we did that we + * could get inconsistent registers if this routine would not + * complete in less than 1s (says the datasheet) and we don't + * know if we are going to be pre-empted for some time... + */ + if ( ( fd = getfd( minor ) ) < 0 ) { + goto cleanup; + } + + if ( rd_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) + goto cleanup; + + cr &= ~DS1375_CR_ECLK; + + /* This stops the clock */ + if ( wr_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) + goto cleanup; + + /* write new contents */ + if ( wr_bytes( fd, DS1375_SEC_REG, buf, sizeof(buf) ) ) + goto cleanup; + + rval = 0; + cleanup: - if ( fd >= 0 ) { - if ( ! ( DS1375_CR_ECLK & cr ) ) { - /* start clock; this handles some cases of failure - * after stopping the clock by restarting it again - */ - cr |= DS1375_CR_ECLK; - if ( wr_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) - rval = -1; - } - close( fd ); - } - return rval; + if ( fd >= 0 ) { + if ( ! ( DS1375_CR_ECLK & cr ) ) { + /* start clock; this handles some cases of failure + * after stopping the clock by restarting it again + */ + cr |= DS1375_CR_ECLK; + if ( wr_bytes( fd, DS1375_CR_REG, &cr, 1 ) ) + rval = -1; + } + close( fd ); + } + return rval; } /* Debugging / Testing */ @@ -339,11 +352,11 @@ ds1375_get_time_tst() { rtems_time_of_day rtod; time_t secs; - - ds1375_get_time( 0, &rtod ); - secs = _TOD_To_seconds( &rtod ); - printf( "%s\n", ctime( &secs ) ); - return secs; + + ds1375_get_time( 0, &rtod ); + secs = _TOD_To_seconds( &rtod ); + printf( "%s\n", ctime( &secs ) ); + return secs; } int @@ -353,29 +366,29 @@ struct tm tm; time_t secs; rtems_time_of_day rt; - if ( !datstr ) - return -1; + if ( !datstr ) + return -1; - if ( ! strptime( datstr, "%Y-%m-%d/%T", &tm ) ) - return -2; + if ( ! strptime( datstr, "%Y-%m-%d/%T", &tm ) ) + return -2; - if ( ! prt ) - prt = &rt; - - secs = mktime( &tm ); + if ( ! prt ) + prt = &rt; + + secs = mktime( &tm ); - /* convert to UTC */ - gmtime_r( &secs, &tm ); + /* convert to UTC */ + gmtime_r( &secs, &tm ); - printf("Y: %"PRIu32" ", (prt->year = tm.tm_year + 1900) ); - printf("M: %"PRIu32" ", (prt->month = tm.tm_mon + 1) ); - printf("D: %"PRIu32" ", (prt->day = tm.tm_mday ) ); - printf("h: %"PRIu32" ", (prt->hour = tm.tm_hour ) ); - printf("m: %"PRIu32" ", (prt->minute = tm.tm_min ) ); - printf("s: %"PRIu32"\n", (prt->second = tm.tm_sec ) ); - prt->ticks = 0; + printf("Y: %"PRIu32" ", (prt->year = tm.tm_year + 1900) ); + printf("M: %"PRIu32" ", (prt->month = tm.tm_mon + 1) ); + printf("D: %"PRIu32" ", (prt->day = tm.tm_mday ) ); + printf("h: %"PRIu32" ", (prt->hour = tm.tm_hour ) ); + printf("m: %"PRIu32" ", (prt->minute = tm.tm_min ) ); + printf("s: %"PRIu32"\n", (prt->second = tm.tm_sec ) ); + prt->ticks = 0; - return ( prt == &rt ) ? ds1375_set_time( 0, &rt ) : 0; + return ( prt == &rt ) ? ds1375_set_time( 0, &rt ) : 0; } #endif @@ -388,15 +401,15 @@ int fd; uint8_t v; uint32_t rval = -1; - if ( ( fd = open( (const char*)port, O_RDWR ) ) >= 0 ) { + if ( ( fd = open( (const char*)port, O_RDWR ) ) >= 0 ) { - if ( 0 == rd_bytes( fd, reg, &v, 1 ) ) { - rval = v; - } - close( fd ); - } + if ( 0 == rd_bytes( fd, reg, &v, 1 ) ) { + rval = v; + } + close( fd ); + } - return rval; + return rval; } void @@ -404,41 +417,42 @@ rtc_ds1375_set_register( uint32_t port, uint8_t reg, uint32_t value ) { int fd; uint8_t v = value; - - if ( ( fd = open( (const char*)port, O_RDWR ) ) >= 0 ) { - wr_bytes( fd, reg, &v, 1 ); - close( fd ); - } + + if ( ( fd = open( (const char*)port, O_RDWR ) ) >= 0 ) { + wr_bytes( fd, reg, &v, 1 ); + close( fd ); + } } -bool -rtc_ds1375_device_probe( int minor ) +bool rtc_ds1375_device_probe( + int minor +) { -int fd; - - if ( ( fd = getfd( minor ) ) < 0 ) { - STDIOSAFE( "ds1375_probe (open): %s\n", strerror( errno ) ); - return false; - } - - /* Try to set file pointer */ - if ( 0 != wr_bytes( fd, DS1375_SEC_REG, 0, 0 ) ) { - STDIOSAFE( "ds1375_probe (wr_bytes): %s\n", strerror( errno ) ); - close( fd ); - return false; - } - - if ( close( fd ) ) { - STDIOSAFE( "ds1375_probe (close): %s\n", strerror( errno ) ); - return false; - } - - return true; + int fd; + + if ( ( fd = getfd( minor ) ) < 0 ) { + STDIOSAFE( "ds1375_probe (open): %s\n", strerror( errno ) ); + return false; + } + + /* Try to set file pointer */ + if ( 0 != wr_bytes( fd, DS1375_SEC_REG, 0, 0 ) ) { + STDIOSAFE( "ds1375_probe (wr_bytes): %s\n", strerror( errno ) ); + close( fd ); + return false; + } + + if ( close( fd ) ) { + STDIOSAFE( "ds1375_probe (close): %s\n", strerror( errno ) ); + return false; + } + + return true; } rtc_fns rtc_ds1375_fns = { - deviceInitialize: ds1375_initialize, - deviceGetTime: ds1375_get_time, - deviceSetTime: ds1375_set_time, + deviceInitialize: ds1375_initialize, + deviceGetTime: ds1375_get_time, + deviceSetTime: ds1375_set_time, }; diff --git a/c/src/libchip/rtc/mc146818a.c b/c/src/libchip/rtc/mc146818a.c index 19f726b644..4cd933e86f 100644 --- a/c/src/libchip/rtc/mc146818a.c +++ b/c/src/libchip/rtc/mc146818a.c @@ -134,8 +134,8 @@ int mc146818a_get_time( * Set time into chip */ int mc146818a_set_time( - int minor, - rtems_time_of_day *time + int minor, + const rtems_time_of_day *time ) { uint32_t mc146818a; |