Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at b1404069f64457c94de241738fdca142c2e5698f 69 lines 1.6 kB view raw
1/* 2 * RTC driver for ppc_md RTC functions 3 * 4 * © 2007 Red Hat, Inc. 5 * 6 * Author: David Woodhouse <dwmw2@infradead.org> 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 */ 12 13 14#include <linux/module.h> 15#include <linux/err.h> 16#include <linux/rtc.h> 17#include <linux/platform_device.h> 18#include <asm/machdep.h> 19 20static int ppc_rtc_read_time(struct device *dev, struct rtc_time *tm) 21{ 22 ppc_md.get_rtc_time(tm); 23 return 0; 24} 25 26static int ppc_rtc_set_time(struct device *dev, struct rtc_time *tm) 27{ 28 return ppc_md.set_rtc_time(tm); 29} 30 31static const struct rtc_class_ops ppc_rtc_ops = { 32 .set_time = ppc_rtc_set_time, 33 .read_time = ppc_rtc_read_time, 34}; 35 36static struct rtc_device *rtc; 37static struct platform_device *ppc_rtc_pdev; 38 39static int __init ppc_rtc_init(void) 40{ 41 if (!ppc_md.get_rtc_time || !ppc_md.set_rtc_time) 42 return -ENODEV; 43 44 ppc_rtc_pdev = platform_device_register_simple("ppc-rtc", 0, NULL, 0); 45 if (IS_ERR(ppc_rtc_pdev)) 46 return PTR_ERR(ppc_rtc_pdev); 47 48 rtc = rtc_device_register("ppc_md", &ppc_rtc_pdev->dev, 49 &ppc_rtc_ops, THIS_MODULE); 50 if (IS_ERR(rtc)) { 51 platform_device_unregister(ppc_rtc_pdev); 52 return PTR_ERR(rtc); 53 } 54 55 return 0; 56} 57 58static void __exit ppc_rtc_exit(void) 59{ 60 rtc_device_unregister(rtc); 61 platform_device_unregister(ppc_rtc_pdev); 62} 63 64module_init(ppc_rtc_init); 65module_exit(ppc_rtc_exit); 66 67MODULE_LICENSE("GPL"); 68MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>"); 69MODULE_DESCRIPTION("Generic RTC class driver for PowerPC");