1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  *  Registration of Cobalt RTC platform device.
4  *
5  *  Copyright (C) 2007  Yoichi Yuasa <yuasa@linux-mips.org>
6  */
7 #include <linux/errno.h>
8 #include <linux/init.h>
9 #include <linux/ioport.h>
10 #include <linux/mc146818rtc.h>
11 #include <linux/platform_device.h>
12 
13 static struct resource cobalt_rtc_resource[] __initdata = {
14 	{
15 		.start	= 0x70,
16 		.end	= 0x77,
17 		.flags	= IORESOURCE_IO,
18 	},
19 	{
20 		.start	= RTC_IRQ,
21 		.end	= RTC_IRQ,
22 		.flags	= IORESOURCE_IRQ,
23 	},
24 };
25 
cobalt_rtc_add(void)26 static __init int cobalt_rtc_add(void)
27 {
28 	struct platform_device *pdev;
29 	int retval;
30 
31 	pdev = platform_device_alloc("rtc_cmos", -1);
32 	if (!pdev)
33 		return -ENOMEM;
34 
35 	retval = platform_device_add_resources(pdev, cobalt_rtc_resource,
36 					       ARRAY_SIZE(cobalt_rtc_resource));
37 	if (retval)
38 		goto err_free_device;
39 
40 	retval = platform_device_add(pdev);
41 	if (retval)
42 		goto err_free_device;
43 
44 	return 0;
45 
46 err_free_device:
47 	platform_device_put(pdev);
48 
49 	return retval;
50 }
51 device_initcall(cobalt_rtc_add);
52