diff options
author | Joel Sherrill <joel.sherrill@oarcorp.com> | 2014-10-15 18:34:36 -0500 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2014-10-19 17:00:55 -0500 |
commit | a94fb3919895f7b0ecff3f83ff01c18eff678319 (patch) | |
tree | 3eb6aa6164317ab6675ee48e4136f8b080de5bf7 /c/src/lib/libbsp/m68k/mcf5206elite/tod/ds1307.c | |
parent | m68k/mvme147: Fix warnings (diff) | |
download | rtems-a94fb3919895f7b0ecff3f83ff01c18eff678319.tar.bz2 |
mcf5206 libcpu and mcf5206elite: Fix warnings
Diffstat (limited to 'c/src/lib/libbsp/m68k/mcf5206elite/tod/ds1307.c')
-rw-r--r-- | c/src/lib/libbsp/m68k/mcf5206elite/tod/ds1307.c | 256 |
1 files changed, 123 insertions, 133 deletions
diff --git a/c/src/lib/libbsp/m68k/mcf5206elite/tod/ds1307.c b/c/src/lib/libbsp/m68k/mcf5206elite/tod/ds1307.c index b49f5b6ad9..ab7fc7daac 100644 --- a/c/src/lib/libbsp/m68k/mcf5206elite/tod/ds1307.c +++ b/c/src/lib/libbsp/m68k/mcf5206elite/tod/ds1307.c @@ -16,13 +16,14 @@ * * + two digit years 00-87 are mapped to 2000-2087 * + two digit years 88-99 are mapped to 1988-1999 - * + */ + +/* * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia * Author: Victor V. Vengerov <vvv@oktet.ru> * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at - * * http://www.rtems.org/license/LICENSE. */ @@ -43,36 +44,34 @@ * PARAMETERS: * minor -- minor RTC device number */ -void -ds1307_initialize(int minor) +static void ds1307_initialize(int minor) { - i2c_message_status status; - int try; - uint8_t sec; - i2c_bus_number bus; - i2c_address addr; - - bus = RTC_Table[minor].ulCtrlPort1; - addr = RTC_Table[minor].ulDataPort; - - /* Read SECONDS register */ - try = 0; - do { - status = i2c_wbrd(bus, addr, 0, &sec, sizeof(sec)); - try++; - } while ((status != I2C_SUCCESSFUL) && (try < 15)); - - /* If clock is halted, reset and start the clock */ - if ((sec & DS1307_SECOND_HALT) != 0) - { - uint8_t start[8]; - memset(start, 0, sizeof(start)); - start[0] = DS1307_SECOND; - try = 0; - do { - status = i2c_write(bus, addr, start, 2); - } while ((status != I2C_SUCCESSFUL) && (try < 15)); - } + i2c_message_status status; + int try; + uint8_t sec; + i2c_bus_number bus; + i2c_address addr; + + bus = RTC_Table[minor].ulCtrlPort1; + addr = RTC_Table[minor].ulDataPort; + + /* Read SECONDS register */ + try = 0; + do { + status = i2c_wbrd(bus, addr, 0, &sec, sizeof(sec)); + try++; + } while ((status != I2C_SUCCESSFUL) && (try < 15)); + + /* If clock is halted, reset and start the clock */ + if ((sec & DS1307_SECOND_HALT) != 0) { + uint8_t start[8]; + memset(start, 0, sizeof(start)); + start[0] = DS1307_SECOND; + try = 0; + do { + status = i2c_write(bus, addr, start, 2); + } while ((status != I2C_SUCCESSFUL) && (try < 15)); + } } /* ds1307_get_time -- @@ -87,74 +86,66 @@ ds1307_initialize(int minor) * 0, if time obtained successfully * -1, if error occured */ -int -ds1307_get_time(int minor, rtems_time_of_day *time) +static int ds1307_get_time(int minor, rtems_time_of_day *time) { - i2c_bus_number bus; - i2c_address addr; - uint8_t info[8]; - uint32_t v1, v2; - i2c_message_status status; - int try; - - if (time == NULL) - return -1; - - bus = RTC_Table[minor].ulCtrlPort1; - addr = RTC_Table[minor].ulDataPort; - - memset(time, 0, sizeof(rtems_time_of_day)); - try = 0; - do { - status = i2c_wbrd(bus, addr, 0, info, sizeof(info)); - try++; - } while ((status != I2C_SUCCESSFUL) && (try < 10)); - - if (status != I2C_SUCCESSFUL) - { - return -1; + i2c_bus_number bus; + i2c_address addr; + uint8_t info[8]; + uint32_t v1, v2; + i2c_message_status status; + int try; + + if (time == NULL) + return -1; + + bus = RTC_Table[minor].ulCtrlPort1; + addr = RTC_Table[minor].ulDataPort; + + memset(time, 0, sizeof(rtems_time_of_day)); + try = 0; + do { + status = i2c_wbrd(bus, addr, 0, info, sizeof(info)); + try++; + } while ((status != I2C_SUCCESSFUL) && (try < 10)); + + if (status != I2C_SUCCESSFUL) { + return -1; + } + + v1 = info[DS1307_YEAR]; + v2 = From_BCD(v1); + if (v2 < 88) + time->year = 2000 + v2; + else + time->year = 1900 + v2; + + v1 = info[DS1307_MONTH] & ~0xE0; + time->month = From_BCD(v1); + + v1 = info[DS1307_DAY] & ~0xC0; + time->day = From_BCD(v1); + + v1 = info[DS1307_HOUR]; + if (v1 & DS1307_HOUR_12) { + v2 = v1 & ~0xE0; + if (v1 & DS1307_HOUR_PM) { + time->hour = From_BCD(v2) + 12; + } else { + time->hour = From_BCD(v2); } + } else { + v2 = v1 & ~0xC0; + time->hour = From_BCD(v2); + } - v1 = info[DS1307_YEAR]; - v2 = From_BCD(v1); - if (v2 < 88) - time->year = 2000 + v2; - else - time->year = 1900 + v2; - - v1 = info[DS1307_MONTH] & ~0xE0; - time->month = From_BCD(v1); - - v1 = info[DS1307_DAY] & ~0xC0; - time->day = From_BCD(v1); - - v1 = info[DS1307_HOUR]; - if (v1 & DS1307_HOUR_12) - { - v2 = v1 & ~0xE0; - if (v1 & DS1307_HOUR_PM) - { - time->hour = From_BCD(v2) + 12; - } - else - { - time->hour = From_BCD(v2); - } - } - else - { - v2 = v1 & ~0xC0; - time->hour = From_BCD(v2); - } - - v1 = info[DS1307_MINUTE] & ~0x80; - time->minute = From_BCD(v1); + v1 = info[DS1307_MINUTE] & ~0x80; + time->minute = From_BCD(v1); - v1 = info[DS1307_SECOND]; - v2 = v1 & ~0x80; - time->second = From_BCD(v2); + v1 = info[DS1307_SECOND]; + v2 = v1 & ~0x80; + time->second = From_BCD(v2); - return 0; + return 0; } /* ds1307_set_time -- @@ -168,49 +159,48 @@ ds1307_get_time(int minor, rtems_time_of_day *time) * 0, if time obtained successfully * -1, if error occured */ -int -ds1307_set_time(int minor, const rtems_time_of_day *time) +static int ds1307_set_time(int minor, const rtems_time_of_day *time) { - i2c_bus_number bus; - i2c_address addr; - uint8_t info[8]; - i2c_message_status status; - int try; - - if (time == NULL) - return -1; - - bus = RTC_Table[minor].ulCtrlPort1; - addr = RTC_Table[minor].ulDataPort; - - if (time->year >= 2088) - rtems_fatal_error_occurred(RTEMS_INVALID_NUMBER); - - info[0] = DS1307_SECOND; - info[1 + DS1307_YEAR] = To_BCD(time->year % 100); - info[1 + DS1307_MONTH] = To_BCD(time->month); - info[1 + DS1307_DAY] = To_BCD(time->day); - info[1 + DS1307_HOUR] = To_BCD(time->hour); - info[1 + DS1307_MINUTE] = To_BCD(time->minute); - info[1 + DS1307_SECOND] = To_BCD(time->second); - info[1 + DS1307_DAY_OF_WEEK] = 1; /* Do not set day of week */ - - try = 0; - do { - status = i2c_write(bus, addr, info, 8); - try++; - } while ((status != I2C_SUCCESSFUL) && (try < 10)); - - if (status != I2C_SUCCESSFUL) - return -1; - else - return 0; + i2c_bus_number bus; + i2c_address addr; + uint8_t info[8]; + i2c_message_status status; + int try; + + if (time == NULL) + return -1; + + bus = RTC_Table[minor].ulCtrlPort1; + addr = RTC_Table[minor].ulDataPort; + + if (time->year >= 2088) + rtems_fatal_error_occurred(RTEMS_INVALID_NUMBER); + + info[0] = DS1307_SECOND; + info[1 + DS1307_YEAR] = To_BCD(time->year % 100); + info[1 + DS1307_MONTH] = To_BCD(time->month); + info[1 + DS1307_DAY] = To_BCD(time->day); + info[1 + DS1307_HOUR] = To_BCD(time->hour); + info[1 + DS1307_MINUTE] = To_BCD(time->minute); + info[1 + DS1307_SECOND] = To_BCD(time->second); + info[1 + DS1307_DAY_OF_WEEK] = 1; /* Do not set day of week */ + + try = 0; + do { + status = i2c_write(bus, addr, info, 8); + try++; + } while ((status != I2C_SUCCESSFUL) && (try < 10)); + + if (status != I2C_SUCCESSFUL) + return -1; + else + return 0; } /* Driver function table */ rtc_fns ds1307_fns = { - ds1307_initialize, - ds1307_get_time, - ds1307_set_time + ds1307_initialize, + ds1307_get_time, + ds1307_set_time }; |