"Govindraj.R" <[email protected]> writes:

> Rebased on latest pm/wip-uart branch.

Still doesn't apply for me, either on pm-wip/uart or on top of your 
series: [pm-wip/uart][PATCH 0/6]: Serial HWMOD updation and cleanup.

Please just include in your updates series which should include the
get_resource_byname() change as well as Sergio's UART fixes for 3630.

Thanks,

Kevin


> -- 
> Regards,
> Govindraj.R
>
>
> 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 |   86 +++++++++++++++++++----------------------
>  1 files changed, 40 insertions(+), 46 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index da9fee6..dc04139 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -55,8 +55,6 @@
>   */
>  #define DEFAULT_TIMEOUT 0
>
> -#define MAX_UART_HWMOD_NAME_LEN              16
> -
>  struct omap_uart_state {
>       int num;
>       int can_sleep;
> @@ -568,52 +566,48 @@ 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))
> +             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
> +      */
> +     uart->oh->flags |= HWMOD_INIT_NO_IDLE;
>
> -             /*
> -              * NOTE: omap_hwmod_init() has not yet been called,
> -              *       so no hwmod functions will work yet.
> -              */
> +     /*
> +      * 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;
>
> -             /*
> -              * 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;
> +     return 0;
> +}
>
> -     } while (1);
> +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

Reply via email to