X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Frtc.h;h=10104e3bf5a904e9c67b11c14782642aa30d9627;hb=a29491ade0adf3dbb9dc51be8b45530edde1f1df;hp=2c3a5743e301e0ffbdfc48331828eee7cf4ed678;hpb=10d3e90f46feace58f4141b696d91644e594e3ed;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/rtc.h b/include/rtc.h index 2c3a574..10104e3 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -16,8 +16,12 @@ #include #include +typedef int64_t time64_t; + #ifdef CONFIG_DM_RTC +struct udevice; + struct rtc_ops { /** * get() - get the current time @@ -54,6 +58,30 @@ struct rtc_ops { int (*reset)(struct udevice *dev); /** + * read() - Read multiple 8-bit registers + * + * @dev: Device to read from + * @reg: First register to read + * @buf: Output buffer + * @len: Number of registers to read + * @return 0 if OK, -ve on error + */ + int (*read)(struct udevice *dev, unsigned int reg, + u8 *buf, unsigned int len); + + /** + * write() - Write multiple 8-bit registers + * + * @dev: Device to write to + * @reg: First register to write + * @buf: Input buffer + * @len: Number of registers to write + * @return 0 if OK, -ve on error + */ + int (*write)(struct udevice *dev, unsigned int reg, + const u8 *buf, unsigned int len); + + /** * read8() - Read an 8-bit register * * @dev: Device to read from @@ -68,7 +96,7 @@ struct rtc_ops { * @dev: Device to write to * @reg: Register to write * @value: Value to write - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int (*write8)(struct udevice *dev, unsigned int reg, int val); }; @@ -81,7 +109,7 @@ struct rtc_ops { * * @dev: Device to read from * @time: Place to put the current time - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int dm_rtc_get(struct udevice *dev, struct rtc_time *time); @@ -90,7 +118,7 @@ int dm_rtc_get(struct udevice *dev, struct rtc_time *time); * * @dev: Device to read from * @time: Time to write into the RTC - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int dm_rtc_set(struct udevice *dev, struct rtc_time *time); @@ -103,16 +131,39 @@ int dm_rtc_set(struct udevice *dev, struct rtc_time *time); * the caller. * * @dev: Device to read from - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int dm_rtc_reset(struct udevice *dev); /** + * dm_rtc_read() - Read multiple 8-bit registers + * + * @dev: Device to read from + * @reg: First register to read + * @buf: Output buffer + * @len: Number of registers to read + * Return: 0 if OK, -ve on error + */ +int dm_rtc_read(struct udevice *dev, unsigned int reg, u8 *buf, unsigned int len); + +/** + * dm_rtc_write() - Write multiple 8-bit registers + * + * @dev: Device to write to + * @reg: First register to write + * @buf: Input buffer + * @len: Number of registers to write + * Return: 0 if OK, -ve on error + */ +int dm_rtc_write(struct udevice *dev, unsigned int reg, + const u8 *buf, unsigned int len); + +/** * rtc_read8() - Read an 8-bit register * * @dev: Device to read from * @reg: Register to read - * @return value read, or -ve on error + * Return: value read, or -ve on error */ int rtc_read8(struct udevice *dev, unsigned int reg); @@ -122,7 +173,7 @@ int rtc_read8(struct udevice *dev, unsigned int reg); * @dev: Device to write to * @reg: Register to write * @value: Value to write - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int rtc_write8(struct udevice *dev, unsigned int reg, int val); @@ -132,7 +183,7 @@ int rtc_write8(struct udevice *dev, unsigned int reg, int val); * @dev: Device to read from * @reg: Offset to start reading from * @valuep: Place to put the value that is read - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int rtc_read16(struct udevice *dev, unsigned int reg, u16 *valuep); @@ -142,7 +193,7 @@ int rtc_read16(struct udevice *dev, unsigned int reg, u16 *valuep); * @dev: Device to write to * @reg: Register to start writing to * @value: Value to write - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int rtc_write16(struct udevice *dev, unsigned int reg, u16 value); @@ -152,7 +203,7 @@ int rtc_write16(struct udevice *dev, unsigned int reg, u16 value); * @dev: Device to read from * @reg: Offset to start reading from * @valuep: Place to put the value that is read - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int rtc_read32(struct udevice *dev, unsigned int reg, u32 *valuep); @@ -162,21 +213,27 @@ int rtc_read32(struct udevice *dev, unsigned int reg, u32 *valuep); * @dev: Device to write to * @reg: Register to start writing to * @value: Value to write - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int rtc_write32(struct udevice *dev, unsigned int reg, u32 value); +#ifdef CONFIG_RTC_ENABLE_32KHZ_OUTPUT +int rtc_enable_32khz_output(int busnum, int chip_addr); +#endif + #else int rtc_get (struct rtc_time *); int rtc_set (struct rtc_time *); void rtc_reset (void); +#ifdef CONFIG_RTC_ENABLE_32KHZ_OUTPUT void rtc_enable_32khz_output(void); +#endif /** * rtc_read8() - Read an 8-bit register * * @reg: Register to read - * @return value read + * Return: value read */ int rtc_read8(int reg); @@ -192,7 +249,7 @@ void rtc_write8(int reg, uchar val); * rtc_read32() - Read a 32-bit value from the RTC * * @reg: Offset to start reading from - * @return value read + * Return: value read */ u32 rtc_read32(int reg); @@ -214,7 +271,7 @@ void rtc_init(void); * is_leap_year - Check if year is a leap year * * @year Year - * @return 1 if leap year + * Return: 1 if leap year */ static inline bool is_leap_year(unsigned int year) { @@ -228,7 +285,7 @@ static inline bool is_leap_year(unsigned int year) * It sets time->tm_wdaay to the correct day of the week. * * @time: Time to inspect. tm_wday is updated - * @return 0 if OK, -EINVAL if the weekday could not be determined + * Return: 0 if OK, -EINVAL if the weekday could not be determined */ int rtc_calc_weekday(struct rtc_time *time); @@ -246,7 +303,7 @@ int rtc_calc_weekday(struct rtc_time *time); void rtc_to_tm(u64 time_t, struct rtc_time *time); /** - * rtc_mktime() - Convert a broken-out time into a time_t value + * rtc_mktime() - Convert a broken-out time into a time64_t value * * The following fields need to be valid for this function to work: * tm_sec, tm_min, tm_hour, tm_mday, tm_mon, tm_year @@ -254,8 +311,16 @@ void rtc_to_tm(u64 time_t, struct rtc_time *time); * Note that tm_wday and tm_yday are ignored. * * @time: Broken-out time to convert - * @return corresponding time_t value, seconds since 1970-01-01 00:00:00 + * Return: corresponding time64_t value, seconds since 1970-01-01 00:00:00 + */ +time64_t rtc_mktime(const struct rtc_time *time); + +/** + * rtc_month_days() - The number of days in the month + * + * @month: month (January = 0) + * @year: year (4 digits) */ -unsigned long rtc_mktime(const struct rtc_time *time); +int rtc_month_days(unsigned int month, unsigned int year); #endif /* _RTC_H_ */