Ian Lepore 862993757a Add RTC clock conversions for BCD values, with non-panic validation.
RTC clock hardware frequently uses BCD numbers.  Currently the low-level
bcd2bin() and bin2bcd() functions will KASSERT if given out-of-range BCD
values.  Every RTC driver must implement its own code for validating the
unreliable data coming from the hardware to avoid a potential kernel panic.

This change introduces two new functions, clock_bcd_to_ts() and
clock_ts_to_bcd().  The former validates its inputs and returns EINVAL if any
values are out of range. The latter guarantees the returned data will be
valid BCD in a known format (4-digit years, etc).

A new bcd_clocktime structure is used with the new functions.  It is similar
to the original clocktime structure, but defines the fields holding BCD
values as uint8_t (uint16_t for year), and adds a PM flag for handling hours
using AM/PM mode.

PR:		224813
Differential Revision:	https://reviews.freebsd.org/D13730 (no reviewers)
2018-01-14 17:01:37 +00:00
..
2018-01-08 21:27:41 +00:00
2017-11-30 20:33:45 +00:00
2018-01-03 00:56:30 +00:00
2018-01-03 00:56:30 +00:00
2018-01-14 15:01:25 +00:00
2017-01-25 20:22:32 +00:00
2018-01-08 21:27:41 +00:00
2018-01-08 21:27:41 +00:00
2017-12-13 16:30:39 +00:00
2018-01-08 21:27:41 +00:00
2017-08-07 14:09:57 +00:00
2017-11-30 20:33:45 +00:00
2018-01-12 23:06:35 +00:00
2017-12-01 22:51:02 +00:00
2018-01-12 13:39:02 +00:00