>>-----Original Message-----
>>From: [email protected]
>>[mailto:[email protected]] On Behalf Of Raja,
>>Govindraj
>>Sent: Friday, June 04, 2010 7:14 PM
>>To: [email protected]
>>Cc: Kevin Hilman
>>Subject: [pm-wip/uart][PATCH 3/4] Serial: Avoid using hwmod lookup using name
>>string
>>
>>Avoid using hwmod lookup using name string rather
>>retreive port info using the hwmod class interface.
>>
>>Cc: Kevin Hilman <[email protected]>
>>Signed-off-by: Govindraj.R <[email protected]>
>>---
>> arch/arm/mach-omap2/serial.c | 76
>> ++++++++++++++++++++----------------------
>> 1 files changed, 36 insertions(+), 40 deletions(-)
>>
>>diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
>>index 70a9089..017332b 100644
>>--- a/arch/arm/mach-omap2/serial.c
>>+++ b/arch/arm/mach-omap2/serial.c
>>@@ -56,8 +56,6 @@
>> */
>> #define DEFAULT_TIMEOUT 0
>>
>>-#define MAX_UART_HWMOD_NAME_LEN 16
>>-
>> struct omap_uart_state {
>> int num;
>> int can_sleep;
>>@@ -596,52 +594,50 @@ static void serial_out_override(struct uart_port *up,
>>int offset, int value)
>> }
>> #endif
>>
>>-void __init omap_serial_early_init(void)
>>+static int omap_serial_port_init(struct omap_hwmod *oh, void *user)
>> {
>>- int i = 0;
>>+ struct omap_uart_state *uart;
>>+ static int i;
>>
>>- do {
>>- char oh_name[MAX_UART_HWMOD_NAME_LEN];
>>- struct omap_hwmod *oh;
>>- struct omap_uart_state *uart;
>>+ uart = kzalloc(sizeof(struct omap_uart_state), GFP_KERNEL);
>>+ if (WARN_ON(!uart))
A better error message using pr_err ??
>>+ return -ENOMEM;
>>
>>- snprintf(oh_name, MAX_UART_HWMOD_NAME_LEN,
>>- "uart%d", i + 1);
>>- oh = omap_hwmod_lookup(oh_name);
>>- if (!oh)
>>- break;
>>+ uart->oh = oh;
>>+ uart->num = i++;
>>+ list_add_tail(&uart->node, &uart_list);
>>+ num_uarts++;
>>
>>- uart = kzalloc(sizeof(struct omap_uart_state), GFP_KERNEL);
>>- if (WARN_ON(!uart))
>>- return;
>>+ /*
>>+ * NOTE: omap_hwmod_init() has not yet been called,
>>+ * so no hwmod functions will work yet.
>>+ */
>>
>>- uart->oh = oh;
>>- uart->num = i++;
>>- list_add_tail(&uart->node, &uart_list);
>>- num_uarts++;
>>+ /*
>>+ * During UART early init, device need to be probed
>>+ * to determine SoC specific init before omap_device
>>+ * is ready. Therefore, don't allow idle here
>>+ */
You have two comment blocks back to back. Either make it into one block or put
the first block appropriately above the intended code.
Regards
Thara
>>
>>- /*
>>- * NOTE: omap_hwmod_init() has not yet been called,
>>- * so no hwmod functions will work yet.
>>- */
>>+ uart->oh->flags |= HWMOD_INIT_NO_IDLE;
>>
>>- /*
>>- * During UART early init, device need to be probed
>>- * to determine SoC specific init before omap_device
>>- * is ready. Therefore, don't allow idle here
>>- */
>>- uart->oh->flags |= HWMOD_INIT_NO_IDLE;
>>-
>>- /*
>>- * Since UART hwmod is idle/enabled inside the
>>- * idle loop, interrupts are already disabled and
>>- * thus no locking is needed. Since the mutex-based
>>- * locking in hwmod might sleep, allowing locking
>>- * may introduce problems.
>>- */
>>- uart->oh->flags |= HWMOD_NO_IDLE_LOCKING;
>>+ /*
>>+ * Since UART hwmod is idle/enabled inside the
>>+ * idle loop, interrupts are already disabled and
>>+ * thus no locking is needed. Since the mutex-based
>>+ * locking in hwmod might sleep, allowing locking
>>+ * may introduce problems.
>>+ */
>>+
>>+ uart->oh->flags |= HWMOD_NO_IDLE_LOCKING;
>>
>>- } while (1);
>>+ return 0;
>>+}
>>+
>>+void __init omap_serial_early_init(void)
>>+{
>>+ omap_hwmod_for_each_by_class("uart",
>>+ omap_serial_port_init, NULL);
>> }
>>
>> /**
>>--
>>1.6.3.3
>>
>>
>>--
>>To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>>the body of a message to [email protected]
>>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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html