[PATCH 08/12] [ARM][S3C6410] Add platform device support for keypad driver
Kyungmin Park
kmpark at infradead.org
Sun Sep 6 20:05:10 EDT 2009
2009/9/5 양진성 <jsgood.yang at samsung.com>:
> This patch includes platform device information and resources support
> for s3c keypad driver.
>
> Signed-off-by: Jinsung Yang <jsgood.yang at samsung.com>
> Signed-off-by: Kyeongil Kim <ki0351.kim at samsung.com>
> ---
> arch/arm/plat-s3c/dev-keypad.c | 66 ++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 66 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/plat-s3c/dev-keypad.c
>
> diff --git a/arch/arm/plat-s3c/dev-keypad.c b/arch/arm/plat-s3c/dev-keypad.c
> new file mode 100644
> index 0000000..74c5443
> --- /dev/null
> +++ b/arch/arm/plat-s3c/dev-keypad.c
> @@ -0,0 +1,66 @@
> +/* linux/arch/arm/plat-s3c/dev-keypad.c
Where's the copyright? Don't forget to add copyright
> + *
> + * Base S3C Keypad resource and device definitions
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/interrupt.h>
> +#include <linux/list.h>
> +#include <linux/platform_device.h>
> +
> +#include <asm/mach/arch.h>
> +#include <asm/mach/irq.h>
> +#include <mach/hardware.h>
> +#include <mach/map.h>
> +
> +#include <plat/keypad.h>
> +
> +static struct resource s3c_keypad_resource[] = {
> + [0] = {
> + .start = S3C_PA_KEYPAD,
> + .end = S3C_PA_KEYPAD + S3C_SZ_KEYPAD - 1,
> + .flags = IORESOURCE_MEM,
> + },
> + [1] = {
> + .start = IRQ_KEYPAD,
> + .end = IRQ_KEYPAD,
> + .flags = IORESOURCE_IRQ,
> + }
> +};
> +
> +struct platform_device s3c_device_keypad = {
> + .name = "s3c-keypad",
> + .id = -1,
> + .num_resources = ARRAY_SIZE(s3c_keypad_resource),
> + .resource = s3c_keypad_resource,
> +};
> +EXPORT_SYMBOL(s3c_device_keypad);
> +
> +static struct s3c_platform_keypad default_keypad_data __initdata = {
> + .nr_rows = 8,
> + .nr_cols = 8,
> + .max_keys = 64,
> + .max_masks = 32,
> + .delay = 50,
> +};
> +
> +void __init s3c_keypad_set_platdata(struct s3c_platform_keypad *pd)
> +{
> + struct s3c_platform_keypad *npd;
> +
> + if (!pd)
> + pd = &default_keypad_data;
If you want to set the default it. just assign it at platform_device
directly. No need to check pd at here.
Thank you,
Kyungmin Park
> +
> + npd = kmemdup(pd, sizeof(struct s3c_platform_keypad), GFP_KERNEL);
> + if (!npd)
> + printk(KERN_ERR "%s: no memory for platform data\n", __func__);
> +
> + s3c_device_keypad.dev.platform_data = npd;
> +}
> +
> --
> 1.6.2.5
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
More information about the linux-arm-kernel
mailing list