mirror of https://gitee.com/openkylin/linux.git
MIPS: IP22/28: Switch over to RTC class driver
This patchset removes some dead code and creates a platform device for the RTC class driver. Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
540799e32e
commit
7d81a5e03d
|
@ -1,18 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is subject to the terms and conditions of the GNU General Public
|
|
||||||
* License. See the file "COPYING" in the main directory of this archive
|
|
||||||
* for more details.
|
|
||||||
*
|
|
||||||
* Copyright (C) 1998, 2001, 03 by Ralf Baechle
|
|
||||||
*
|
|
||||||
* RTC routines for PC style attached Dallas chip.
|
|
||||||
*/
|
|
||||||
#ifndef __ASM_MACH_IP22_DS1286_H
|
|
||||||
#define __ASM_MACH_IP22_DS1286_H
|
|
||||||
|
|
||||||
#include <asm/sgi/hpc3.h>
|
|
||||||
|
|
||||||
#define rtc_read(reg) (hpc3c0->rtcregs[(reg)] & 0xff)
|
|
||||||
#define rtc_write(data, reg) do { hpc3c0->rtcregs[(reg)] = (data); } while(0)
|
|
||||||
|
|
||||||
#endif /* __ASM_MACH_IP22_DS1286_H */
|
|
|
@ -1,4 +0,0 @@
|
||||||
#ifndef __ASM_MACH_IP28_DS1286_H
|
|
||||||
#define __ASM_MACH_IP28_DS1286_H
|
|
||||||
#include <asm/mach-ip22/ds1286.h>
|
|
||||||
#endif /* __ASM_MACH_IP28_DS1286_H */
|
|
|
@ -192,3 +192,18 @@ static int __init sgi_button_devinit(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
device_initcall(sgi_button_devinit);
|
device_initcall(sgi_button_devinit);
|
||||||
|
|
||||||
|
static int __init sgi_ds1286_devinit(void)
|
||||||
|
{
|
||||||
|
struct resource res;
|
||||||
|
|
||||||
|
memset(&res, 0, sizeof(res));
|
||||||
|
res.start = HPC3_CHIP0_BASE + offsetof(struct hpc3_regs, rtcregs);
|
||||||
|
res.end = res.start + sizeof(hpc3c0->rtcregs) - 1;
|
||||||
|
res.flags = IORESOURCE_MEM;
|
||||||
|
|
||||||
|
return IS_ERR(platform_device_register_simple("rtc-ds1286", -1,
|
||||||
|
&res, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
device_initcall(sgi_ds1286_devinit);
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
* Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
|
* Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
|
||||||
* Copyright (C) 1997, 1998 Ralf Baechle (ralf@gnu.org)
|
* Copyright (C) 1997, 1998 Ralf Baechle (ralf@gnu.org)
|
||||||
*/
|
*/
|
||||||
#include <linux/ds1286.h>
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/kdev_t.h>
|
#include <linux/kdev_t.h>
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
* Copyright (C) 2003, 06 Ralf Baechle (ralf@linux-mips.org)
|
* Copyright (C) 2003, 06 Ralf Baechle (ralf@linux-mips.org)
|
||||||
*/
|
*/
|
||||||
#include <linux/bcd.h>
|
#include <linux/bcd.h>
|
||||||
#include <linux/ds1286.h>
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
@ -29,69 +28,6 @@
|
||||||
#include <asm/sgi/hpc3.h>
|
#include <asm/sgi/hpc3.h>
|
||||||
#include <asm/sgi/ip22.h>
|
#include <asm/sgi/ip22.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* Note that mktime uses month from 1 to 12 while rtc_time_to_tm
|
|
||||||
* uses 0 to 11.
|
|
||||||
*/
|
|
||||||
unsigned long read_persistent_clock(void)
|
|
||||||
{
|
|
||||||
unsigned int yrs, mon, day, hrs, min, sec;
|
|
||||||
unsigned int save_control;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&rtc_lock, flags);
|
|
||||||
save_control = hpc3c0->rtcregs[RTC_CMD] & 0xff;
|
|
||||||
hpc3c0->rtcregs[RTC_CMD] = save_control | RTC_TE;
|
|
||||||
|
|
||||||
sec = BCD2BIN(hpc3c0->rtcregs[RTC_SECONDS] & 0xff);
|
|
||||||
min = BCD2BIN(hpc3c0->rtcregs[RTC_MINUTES] & 0xff);
|
|
||||||
hrs = BCD2BIN(hpc3c0->rtcregs[RTC_HOURS] & 0x3f);
|
|
||||||
day = BCD2BIN(hpc3c0->rtcregs[RTC_DATE] & 0xff);
|
|
||||||
mon = BCD2BIN(hpc3c0->rtcregs[RTC_MONTH] & 0x1f);
|
|
||||||
yrs = BCD2BIN(hpc3c0->rtcregs[RTC_YEAR] & 0xff);
|
|
||||||
|
|
||||||
hpc3c0->rtcregs[RTC_CMD] = save_control;
|
|
||||||
spin_unlock_irqrestore(&rtc_lock, flags);
|
|
||||||
|
|
||||||
if (yrs < 45)
|
|
||||||
yrs += 30;
|
|
||||||
if ((yrs += 40) < 70)
|
|
||||||
yrs += 100;
|
|
||||||
|
|
||||||
return mktime(yrs + 1900, mon, day, hrs, min, sec);
|
|
||||||
}
|
|
||||||
|
|
||||||
int rtc_mips_set_time(unsigned long tim)
|
|
||||||
{
|
|
||||||
struct rtc_time tm;
|
|
||||||
unsigned int save_control;
|
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
rtc_time_to_tm(tim, &tm);
|
|
||||||
|
|
||||||
tm.tm_mon += 1; /* tm_mon starts at zero */
|
|
||||||
tm.tm_year -= 40;
|
|
||||||
if (tm.tm_year >= 100)
|
|
||||||
tm.tm_year -= 100;
|
|
||||||
|
|
||||||
spin_lock_irqsave(&rtc_lock, flags);
|
|
||||||
save_control = hpc3c0->rtcregs[RTC_CMD] & 0xff;
|
|
||||||
hpc3c0->rtcregs[RTC_CMD] = save_control | RTC_TE;
|
|
||||||
|
|
||||||
hpc3c0->rtcregs[RTC_YEAR] = BIN2BCD(tm.tm_year);
|
|
||||||
hpc3c0->rtcregs[RTC_MONTH] = BIN2BCD(tm.tm_mon);
|
|
||||||
hpc3c0->rtcregs[RTC_DATE] = BIN2BCD(tm.tm_mday);
|
|
||||||
hpc3c0->rtcregs[RTC_HOURS] = BIN2BCD(tm.tm_hour);
|
|
||||||
hpc3c0->rtcregs[RTC_MINUTES] = BIN2BCD(tm.tm_min);
|
|
||||||
hpc3c0->rtcregs[RTC_SECONDS] = BIN2BCD(tm.tm_sec);
|
|
||||||
hpc3c0->rtcregs[RTC_HUNDREDTH_SECOND] = 0;
|
|
||||||
|
|
||||||
hpc3c0->rtcregs[RTC_CMD] = save_control;
|
|
||||||
spin_unlock_irqrestore(&rtc_lock, flags);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned long dosample(void)
|
static unsigned long dosample(void)
|
||||||
{
|
{
|
||||||
u32 ct0, ct1;
|
u32 ct0, ct1;
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
#ifndef __LINUX_DS1286_H
|
#ifndef __LINUX_DS1286_H
|
||||||
#define __LINUX_DS1286_H
|
#define __LINUX_DS1286_H
|
||||||
|
|
||||||
#include <asm/ds1286.h>
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* register summary
|
* register summary
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue