18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Registration of Cobalt RTC platform device. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2007 Yoichi Yuasa <yuasa@linux-mips.org> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci#include <linux/errno.h> 88c2ecf20Sopenharmony_ci#include <linux/init.h> 98c2ecf20Sopenharmony_ci#include <linux/ioport.h> 108c2ecf20Sopenharmony_ci#include <linux/mc146818rtc.h> 118c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_cistatic struct resource cobalt_rtc_resource[] __initdata = { 148c2ecf20Sopenharmony_ci { 158c2ecf20Sopenharmony_ci .start = 0x70, 168c2ecf20Sopenharmony_ci .end = 0x77, 178c2ecf20Sopenharmony_ci .flags = IORESOURCE_IO, 188c2ecf20Sopenharmony_ci }, 198c2ecf20Sopenharmony_ci { 208c2ecf20Sopenharmony_ci .start = RTC_IRQ, 218c2ecf20Sopenharmony_ci .end = RTC_IRQ, 228c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 238c2ecf20Sopenharmony_ci }, 248c2ecf20Sopenharmony_ci}; 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cistatic __init int cobalt_rtc_add(void) 278c2ecf20Sopenharmony_ci{ 288c2ecf20Sopenharmony_ci struct platform_device *pdev; 298c2ecf20Sopenharmony_ci int retval; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci pdev = platform_device_alloc("rtc_cmos", -1); 328c2ecf20Sopenharmony_ci if (!pdev) 338c2ecf20Sopenharmony_ci return -ENOMEM; 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci retval = platform_device_add_resources(pdev, cobalt_rtc_resource, 368c2ecf20Sopenharmony_ci ARRAY_SIZE(cobalt_rtc_resource)); 378c2ecf20Sopenharmony_ci if (retval) 388c2ecf20Sopenharmony_ci goto err_free_device; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci retval = platform_device_add(pdev); 418c2ecf20Sopenharmony_ci if (retval) 428c2ecf20Sopenharmony_ci goto err_free_device; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci return 0; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_cierr_free_device: 478c2ecf20Sopenharmony_ci platform_device_put(pdev); 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci return retval; 508c2ecf20Sopenharmony_ci} 518c2ecf20Sopenharmony_cidevice_initcall(cobalt_rtc_add); 52