mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
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:
@@ -9828,10 +9828,14 @@ L: rtc-linux@googlegroups.com
|
||||
Q: http://patchwork.ozlabs.org/project/rtc-linux/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/rtc/
|
||||
F: Documentation/rtc.txt
|
||||
F: drivers/rtc/
|
||||
F: include/linux/rtc.h
|
||||
F: include/uapi/linux/rtc.h
|
||||
F: include/linux/rtc/
|
||||
F: include/linux/platform_data/rtc-*
|
||||
F: tools/testing/selftests/timers/rtctest.c
|
||||
|
||||
REALTEK AUDIO CODECS
|
||||
M: Bard Liao <bardliao@realtek.com>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include <asm-generic/rtc.h>
|
||||
@@ -24,7 +24,6 @@
|
||||
#include <asm/gct.h>
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/rtc.h>
|
||||
#include <asm/vga.h>
|
||||
|
||||
#include "proto.h"
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
#include <linux/rtc.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/rtc.h>
|
||||
|
||||
#include "proto.h"
|
||||
|
||||
|
||||
@@ -81,7 +79,7 @@ init_rtc_epoch(void)
|
||||
static int
|
||||
alpha_rtc_read_time(struct device *dev, struct rtc_time *tm)
|
||||
{
|
||||
__get_rtc_time(tm);
|
||||
mc146818_get_time(tm);
|
||||
|
||||
/* Adjust for non-default epochs. It's easier to depend on the
|
||||
generic __get_rtc_time and adjust the epoch here than create
|
||||
@@ -112,7 +110,7 @@ alpha_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
||||
tm = &xtm;
|
||||
}
|
||||
|
||||
return __set_rtc_time(tm);
|
||||
return mc146818_set_time(tm);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/m48t86.h>
|
||||
#include <linux/platform_data/rtc-m48t86.h>
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/ata_platform.h>
|
||||
#include <linux/m48t86.h>
|
||||
#include <linux/platform_data/rtc-m48t86.h>
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/timeriomem-rng.h>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <linux/rtc-v3020.h>
|
||||
#include <linux/platform_data/rtc-v3020.h>
|
||||
#include <video/mbxfb.h>
|
||||
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/dm9000.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/rtc-v3020.h>
|
||||
#include <linux/platform_data/rtc-v3020.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <linux/pwm_backlight.h>
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <linux/dm9000.h>
|
||||
#include <linux/rtc-v3020.h>
|
||||
#include <linux/platform_data/rtc-v3020.h>
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
/* mc146818rtc.h: RTC defs
|
||||
*
|
||||
* Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
|
||||
* Written by David Howells (dhowells@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _ASM_MC146818RTC_H
|
||||
#define _ASM_MC146818RTC_H
|
||||
|
||||
|
||||
#endif /* _ASM_MC146818RTC_H */
|
||||
@@ -1,9 +0,0 @@
|
||||
/*
|
||||
* Machine dependent access functions for RTC registers.
|
||||
*/
|
||||
#ifndef _H8300_MC146818RTC_H
|
||||
#define _H8300_MC146818RTC_H
|
||||
|
||||
/* empty include file to satisfy the include in genrtc.c/ide-geometry.c */
|
||||
|
||||
#endif /* _H8300_MC146818RTC_H */
|
||||
@@ -1,10 +0,0 @@
|
||||
#ifndef _ASM_IA64_MC146818RTC_H
|
||||
#define _ASM_IA64_MC146818RTC_H
|
||||
|
||||
/*
|
||||
* Machine dependent access functions for RTC registers.
|
||||
*/
|
||||
|
||||
/* empty include file to satisfy the include in genrtc.c */
|
||||
|
||||
#endif /* _ASM_IA64_MC146818RTC_H */
|
||||
@@ -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>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user