sh: Add PFC platform device registration helper function

The sh_pfc_register() function can be called by boards or SoC setup code
to register the PFC platform device.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
This commit is contained in:
Laurent Pinchart 2012-12-15 23:51:04 +01:00 committed by Simon Horman
parent c2a163c830
commit 8fdff1dc26
3 changed files with 75 additions and 1 deletions

View File

@ -0,0 +1,30 @@
/*
* SH Pin Function Control Initialization
*
* Copyright (C) 2012 Renesas Solutions Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __ARCH_SH_CPU_PFC_H__
#define __ARCH_SH_CPU_PFC_H__
#include <linux/types.h>
struct pinmux_info;
struct resource;
int sh_pfc_register(const char *name,
struct resource *resource, u32 num_resources);
int sh_pfc_register_info(const char *name,
struct resource *resource, u32 num_resources,
struct pinmux_info *pdata);
#endif /* __ARCH_SH_CPU_PFC_H__ */

View File

@ -18,4 +18,4 @@ obj-$(CONFIG_ARCH_SHMOBILE) += shmobile/
obj-$(CONFIG_SH_ADC) += adc.o
obj-$(CONFIG_SH_CLK_CPG_LEGACY) += clock-cpg.o
obj-y += irq/ init.o clock.o fpu.o proc.o
obj-y += irq/ init.o clock.o fpu.o pfc.o proc.o

44
arch/sh/kernel/cpu/pfc.c Normal file
View File

@ -0,0 +1,44 @@
/*
* SH Pin Function Control Initialization
*
* Copyright (C) 2012 Renesas Solutions Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/init.h>
#include <linux/platform_device.h>
#include <cpu/pfc.h>
static struct platform_device sh_pfc_device = {
.name = "sh-pfc",
.id = -1,
};
int __init sh_pfc_register(const char *name,
struct resource *resource, u32 num_resources)
{
if (name)
sh_pfc_device.name = name;
sh_pfc_device.num_resources = num_resources;
sh_pfc_device.resource = resource;
return platform_device_register(&sh_pfc_device);
}
int __init sh_pfc_register_info(const char *name,
struct resource *resource, u32 num_resources,
struct pinmux_info *pdata)
{
sh_pfc_device.dev.platform_data = pdata;
return sh_pfc_register(name, resource, num_resources);
}