18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Registration of Cobalt LED 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/platform_device.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include <cobalt.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistatic struct resource cobalt_led_resource __initdata = { 158c2ecf20Sopenharmony_ci .start = 0x1c000000, 168c2ecf20Sopenharmony_ci .end = 0x1c000000, 178c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 188c2ecf20Sopenharmony_ci}; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic __init int cobalt_led_add(void) 218c2ecf20Sopenharmony_ci{ 228c2ecf20Sopenharmony_ci struct platform_device *pdev; 238c2ecf20Sopenharmony_ci int retval; 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci if (cobalt_board_id == COBALT_BRD_ID_QUBE1 || 268c2ecf20Sopenharmony_ci cobalt_board_id == COBALT_BRD_ID_QUBE2) 278c2ecf20Sopenharmony_ci pdev = platform_device_alloc("cobalt-qube-leds", -1); 288c2ecf20Sopenharmony_ci else 298c2ecf20Sopenharmony_ci pdev = platform_device_alloc("cobalt-raq-leds", -1); 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci if (!pdev) 328c2ecf20Sopenharmony_ci return -ENOMEM; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci retval = platform_device_add_resources(pdev, &cobalt_led_resource, 1); 358c2ecf20Sopenharmony_ci if (retval) 368c2ecf20Sopenharmony_ci goto err_free_device; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci retval = platform_device_add(pdev); 398c2ecf20Sopenharmony_ci if (retval) 408c2ecf20Sopenharmony_ci goto err_free_device; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci return 0; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_cierr_free_device: 458c2ecf20Sopenharmony_ci platform_device_put(pdev); 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci return retval; 488c2ecf20Sopenharmony_ci} 498c2ecf20Sopenharmony_cidevice_initcall(cobalt_led_add); 50