162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *  Cobalt buttons platform device.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Copyright (C) 2007  Yoichi Yuasa <yuasa@linux-mips.org>
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/platform_device.h>
962306a36Sopenharmony_ci#include <linux/errno.h>
1062306a36Sopenharmony_ci#include <linux/init.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cistatic struct resource cobalt_buttons_resource __initdata = {
1362306a36Sopenharmony_ci	.start	= 0x1d000000,
1462306a36Sopenharmony_ci	.end	= 0x1d000003,
1562306a36Sopenharmony_ci	.flags	= IORESOURCE_MEM,
1662306a36Sopenharmony_ci};
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cistatic __init int cobalt_add_buttons(void)
1962306a36Sopenharmony_ci{
2062306a36Sopenharmony_ci	struct platform_device *pd;
2162306a36Sopenharmony_ci	int error;
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	pd = platform_device_alloc("Cobalt buttons", -1);
2462306a36Sopenharmony_ci	if (!pd)
2562306a36Sopenharmony_ci		return -ENOMEM;
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	error = platform_device_add_resources(pd, &cobalt_buttons_resource, 1);
2862306a36Sopenharmony_ci	if (error)
2962306a36Sopenharmony_ci		goto err_free_device;
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	error = platform_device_add(pd);
3262306a36Sopenharmony_ci	if (error)
3362306a36Sopenharmony_ci		goto err_free_device;
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci	return 0;
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci err_free_device:
3862306a36Sopenharmony_ci	platform_device_put(pd);
3962306a36Sopenharmony_ci	return error;
4062306a36Sopenharmony_ci}
4162306a36Sopenharmony_cidevice_initcall(cobalt_add_buttons);
42