Merge tag 'rtc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
Pull RTC updates from Alexandre Belloni: "RTC for 4.8 Cleanups: - huge cleanup of rtc-generic and char/genrtc this allowed to cleanup rtc-cmos, rtc-sh, rtc-m68k, rtc-powerpc and rtc-parisc - move mn10300 to rtc-cmos Subsystem: - fix wakealarms after hibernate - multiples fixes for rctest - simplify implementations of .read_alarm New drivers: - Maxim MAX6916 Drivers: - ds1307: fix weekday - m41t80: add wakeup support - pcf85063: add support for PCF85063A variant - rv8803: extend i2c fix and other fixes - s35390a: fix alarm reading, this fixes instant reboot after shutdown for QNAP TS-41x - s3c: clock fixes" * tag 'rtc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (65 commits) rtc: rv8803: Clear V1F when setting the time rtc: rv8803: Stop the clock while setting the time rtc: rv8803: Always apply the I²C workaround rtc: rv8803: Fix read day of week rtc: rv8803: Remove the check for valid time rtc: rv8803: Kconfig: Indicate rx8900 support rtc: asm9260: remove .owner field for driver rtc: at91sam9: Fix missing spin_lock_init() rtc: m41t80: add suspend handlers for alarm IRQ rtc: m41t80: make it a real error message rtc: pcf85063: Add support for the PCF85063A device rtc: pcf85063: fix year range rtc: hym8563: in .read_alarm set .tm_sec to 0 to signal minute accuracy rtc: explicitly set tm_sec = 0 for drivers with minute accurancy rtc: s3c: Add s3c_rtc_{enable/disable}_clk in s3c_rtc_setfreq() rtc: s3c: Remove unnecessary call to disable already disabled clock rtc: abx80x: use devm_add_action_or_reset() rtc: m41t80: use devm_add_action_or_reset() rtc: fix a typo and reduce three empty lines to one rtc: s35390a: improve two comments in .set_alarm ...
This commit is contained in:
@@ -35,7 +35,6 @@
|
||||
#include <asm/amigahw.h>
|
||||
#include <asm/amigaints.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
|
@@ -15,7 +15,6 @@
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/apollohw.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
u_long sio01_physaddr;
|
||||
|
@@ -34,7 +34,6 @@
|
||||
#include <asm/setup.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/bvme6000hw.h>
|
||||
|
||||
|
@@ -12,6 +12,7 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/rtc.h>
|
||||
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/bootinfo-hp300.h>
|
||||
@@ -20,7 +21,6 @@
|
||||
#include <asm/blinken.h>
|
||||
#include <asm/io.h> /* readb() and writeb() */
|
||||
#include <asm/hp300hw.h>
|
||||
#include <asm/rtc.h>
|
||||
|
||||
#include "time.h"
|
||||
|
||||
|
@@ -1,79 +0,0 @@
|
||||
/* include/asm-m68k/rtc.h
|
||||
*
|
||||
* Copyright Richard Zidlicky
|
||||
* implementation details for genrtc/q40rtc driver
|
||||
*/
|
||||
/* permission is hereby granted to copy, modify and redistribute this code
|
||||
* in terms of the GNU Library General Public License, Version 2 or later,
|
||||
* at your option.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_RTC_H
|
||||
#define _ASM_RTC_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/rtc.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
#define RTC_PIE 0x40 /* periodic interrupt enable */
|
||||
#define RTC_AIE 0x20 /* alarm interrupt enable */
|
||||
#define RTC_UIE 0x10 /* update-finished interrupt enable */
|
||||
|
||||
/* some dummy definitions */
|
||||
#define RTC_BATT_BAD 0x100 /* battery bad */
|
||||
#define RTC_SQWE 0x08 /* enable square-wave output */
|
||||
#define RTC_DM_BINARY 0x04 /* all time/date values are BCD if clear */
|
||||
#define RTC_24H 0x02 /* 24 hour mode - else hours bit 7 means pm */
|
||||
#define RTC_DST_EN 0x01 /* auto switch DST - works f. USA only */
|
||||
|
||||
static inline unsigned int get_rtc_time(struct rtc_time *time)
|
||||
{
|
||||
/*
|
||||
* Only the values that we read from the RTC are set. We leave
|
||||
* tm_wday, tm_yday and tm_isdst untouched. Even though the
|
||||
* RTC has RTC_DAY_OF_WEEK, we ignore it, as it is only updated
|
||||
* by the RTC when initially set to a non-zero value.
|
||||
*/
|
||||
if (mach_hwclk)
|
||||
mach_hwclk(0, time);
|
||||
return RTC_24H;
|
||||
}
|
||||
|
||||
static inline int set_rtc_time(struct rtc_time *time)
|
||||
{
|
||||
if (mach_hwclk)
|
||||
return mach_hwclk(1, time);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline unsigned int get_rtc_ss(void)
|
||||
{
|
||||
if (mach_get_ss)
|
||||
return mach_get_ss();
|
||||
else{
|
||||
struct rtc_time h;
|
||||
|
||||
get_rtc_time(&h);
|
||||
return h.tm_sec;
|
||||
}
|
||||
}
|
||||
|
||||
static inline int get_rtc_pll(struct rtc_pll_info *pll)
|
||||
{
|
||||
if (mach_get_rtc_pll)
|
||||
return mach_get_rtc_pll(pll);
|
||||
else
|
||||
return -EINVAL;
|
||||
}
|
||||
static inline int set_rtc_pll(struct rtc_pll_info *pll)
|
||||
{
|
||||
if (mach_set_rtc_pll)
|
||||
return mach_set_rtc_pll(pll);
|
||||
else
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _ASM__RTC_H */
|
@@ -86,7 +86,49 @@ void read_persistent_clock(struct timespec *ts)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_USES_GETTIMEOFFSET
|
||||
#if defined(CONFIG_ARCH_USES_GETTIMEOFFSET) && IS_ENABLED(CONFIG_RTC_DRV_GENERIC)
|
||||
static int rtc_generic_get_time(struct device *dev, struct rtc_time *tm)
|
||||
{
|
||||
mach_hwclk(0, tm);
|
||||
return rtc_valid_tm(tm);
|
||||
}
|
||||
|
||||
static int rtc_generic_set_time(struct device *dev, struct rtc_time *tm)
|
||||
{
|
||||
if (mach_hwclk(1, tm) < 0)
|
||||
return -EOPNOTSUPP;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rtc_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct rtc_pll_info pll;
|
||||
struct rtc_pll_info __user *argp = (void __user *)arg;
|
||||
|
||||
switch (cmd) {
|
||||
case RTC_PLL_GET:
|
||||
if (!mach_get_rtc_pll || mach_get_rtc_pll(&pll))
|
||||
return -EINVAL;
|
||||
return copy_to_user(argp, &pll, sizeof pll) ? -EFAULT : 0;
|
||||
|
||||
case RTC_PLL_SET:
|
||||
if (!mach_set_rtc_pll)
|
||||
return -EINVAL;
|
||||
if (!capable(CAP_SYS_TIME))
|
||||
return -EACCES;
|
||||
if (copy_from_user(&pll, argp, sizeof(pll)))
|
||||
return -EFAULT;
|
||||
return mach_set_rtc_pll(&pll);
|
||||
}
|
||||
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
|
||||
static const struct rtc_class_ops generic_rtc_ops = {
|
||||
.ioctl = rtc_ioctl,
|
||||
.read_time = rtc_generic_get_time,
|
||||
.set_time = rtc_generic_set_time,
|
||||
};
|
||||
|
||||
static int __init rtc_init(void)
|
||||
{
|
||||
@@ -95,7 +137,9 @@ static int __init rtc_init(void)
|
||||
if (!mach_hwclk)
|
||||
return -ENODEV;
|
||||
|
||||
pdev = platform_device_register_simple("rtc-generic", -1, NULL, 0);
|
||||
pdev = platform_device_register_data(NULL, "rtc-generic", -1,
|
||||
&generic_rtc_ops,
|
||||
sizeof(generic_rtc_ops));
|
||||
return PTR_ERR_OR_ZERO(pdev);
|
||||
}
|
||||
|
||||
|
@@ -10,6 +10,7 @@
|
||||
* Miscellaneous linux stuff
|
||||
*/
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/mm.h>
|
||||
@@ -25,6 +26,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/adb.h>
|
||||
#include <linux/cuda.h>
|
||||
#include <linux/rtc.h>
|
||||
|
||||
#include <asm/setup.h>
|
||||
#include <asm/bootinfo.h>
|
||||
@@ -34,7 +36,6 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
#include <asm/macintosh.h>
|
||||
|
@@ -18,7 +18,6 @@
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/segment.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/macintosh.h>
|
||||
|
@@ -32,7 +32,6 @@
|
||||
#include <asm/setup.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/mvme147hw.h>
|
||||
|
||||
|
@@ -35,7 +35,6 @@
|
||||
#include <asm/setup.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/mvme16xhw.h>
|
||||
|
||||
|
@@ -12,6 +12,7 @@
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
@@ -27,7 +28,6 @@
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/bootinfo.h>
|
||||
#include <asm/pgtable.h>
|
||||
#include <asm/setup.h>
|
||||
|
@@ -26,7 +26,6 @@
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/sun3-head.h>
|
||||
#include <asm/sun3mmu.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/machines.h>
|
||||
#include <asm/idprom.h>
|
||||
|
@@ -14,8 +14,8 @@
|
||||
#include <linux/rtc.h>
|
||||
|
||||
#include <asm/errno.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/intersil.h>
|
||||
#include <asm/machdep.h>
|
||||
|
||||
|
||||
/* bits to set for start/run of the intersil */
|
||||
|
@@ -15,10 +15,10 @@
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/sun3x.h>
|
||||
#include <asm/sun3ints.h>
|
||||
#include <asm/rtc.h>
|
||||
|
||||
#include "time.h"
|
||||
|
||||
|
Reference in New Issue
Block a user