RE: [PATCH v4 2/4] OMAP4: Keyboard device registration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap-owner@xxxxxxxxxxxxxxx]
> On Behalf Of Abraham Arce
> Sent: Wednesday, June 16, 2010 9:39 PM
> To: linux-input@xxxxxxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx
> Cc: Arce, Abraham
> Subject: [PATCH v4 2/4] OMAP4: Keyboard device registration
> 
> Register keyboard device with hwmod framework
> 
> Signed-off-by: Abraham Arce <x0066660@xxxxxx>
> ---
>  arch/arm/mach-omap2/devices.c |   50 +++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 50 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
> index 03e6c9e..d229901 100644
> --- a/arch/arm/mach-omap2/devices.c
> +++ b/arch/arm/mach-omap2/devices.c
> @@ -15,6 +15,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/io.h>
>  #include <linux/clk.h>
> +#include <linux/slab.h>
> 
>  #include <mach/hardware.h>
>  #include <mach/irqs.h>
> @@ -29,6 +30,9 @@
>  #include <mach/gpio.h>
>  #include <plat/mmc.h>
>  #include <plat/dma.h>
> +#include <plat/omap_hwmod.h>
> +#include <plat/omap_device.h>
> +#include <plat/omap4-keypad.h>
> 
>  #include "mux.h"
> 
> @@ -139,6 +143,52 @@ static inline void omap_init_camera(void)
>  }
>  #endif
> 
> +#ifdef CONFIG_ARCH_OMAP4
> +
> +struct omap_device_pm_latency omap_keyboard_latency[] = {
> +	{
> +		.deactivate_func = omap_device_idle_hwmods,
> +		.activate_func   = omap_device_enable_hwmods,
> +		.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
> +	},
> +};
> +
> +int omap4_init_kp(struct omap4_keypad_platform_data *kp)
> +{
> +	struct omap_hwmod *oh;
> +	struct omap_device *od;
> +	struct omap4_keypad_platform_data *pdata;
> +
> +	unsigned int id = 0;
> +	char *name = "omap4-keypad";
> +	char *oh_name = "kbd";
> +
> +	if (!cpu_is_omap44xx())
> +		return -ENODEV;
> +
> +	oh = omap_hwmod_lookup(oh_name);

Use omap_hwmod_for_each_by_class() instead of lookup by name.


> +	if (!oh) {
> +		pr_err("Could not look up %s\n", oh_name);
> +		return -EIO;
> +	}
> +
> +	pdata = kp;
> +
> +	pdata->base = oh->_rt_va;
> +	pdata->irq = oh->mpu_irqs[0].irq;

Use platform_get_() APIs to get base addr & irq instead of passing
it as pdata


> +
> +	od = omap_device_build(name, id, oh, pdata,
> +			sizeof(struct matrix_keypad_platform_data),
> +			omap_keyboard_latency,
> +			ARRAY_SIZE(omap_keyboard_latency), 1);
> +	WARN(IS_ERR(od), "Could not build omap_device for %s %s\n",
> +		name, oh_name);
> +
> +	return 0;
> +}
> +
> +#endif
> +
>  #if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
> 
>  #define MBOX_REG_SIZE   0x120
> --
> 1.6.3.3
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux