From 57d21192adabffea0a40b91aa3c0e25f8dc29afe Mon Sep 17 00:00:00 2001 From: Kevin Hilman Date: Mon, 27 Sep 2010 20:20:06 +0530 Subject: [PATCH] --- yaml --- r: 216975 b: refs/heads/master c: 8da37d9dc52befa8b55bdc20eef2a4aaf20e0c8d h: refs/heads/master i: 216973: dbd83daa8ff408690d2ddf7f6c2a330d2c8c93dd 216971: c502e58e80321af48e3874b8d8fee9a25e596dfa 216967: 593b68cdff9c74b45b5fb86d26124073637af96e 216959: e5bc88613710428372903ba84c0b86af691c13c6 v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-omap2/serial.c | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 61140b8711da..105c2764226d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3244fcd227526a2f21018a280c7af0a9219c6ff4 +refs/heads/master: 8da37d9dc52befa8b55bdc20eef2a4aaf20e0c8d diff --git a/trunk/arch/arm/mach-omap2/serial.c b/trunk/arch/arm/mach-omap2/serial.c index ff83e91e6109..72b5c9896390 100644 --- a/trunk/arch/arm/mach-omap2/serial.c +++ b/trunk/arch/arm/mach-omap2/serial.c @@ -105,10 +105,29 @@ struct omap_uart_state { static LIST_HEAD(uart_list); static u8 num_uarts; +/* + * Since these idle/enable hooks are used in the idle path itself + * which has interrupts disabled, use the non-locking versions of + * the hwmod enable/disable functions. + */ +static int uart_idle_hwmod(struct omap_device *od) +{ + _omap_hwmod_idle(od->hwmods[0]); + + return 0; +} + +static int uart_enable_hwmod(struct omap_device *od) +{ + _omap_hwmod_enable(od->hwmods[0]); + + return 0; +} + static struct omap_device_pm_latency omap_uart_latency[] = { { - .deactivate_func = omap_device_idle_hwmods, - .activate_func = omap_device_enable_hwmods, + .deactivate_func = uart_idle_hwmod, + .activate_func = uart_enable_hwmod, .flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST, }, };