On Mon, Jan 11, 2010 at 21:23:48, Kevin Hilman wrote:
> Chaithrika U S <[email protected]> writes:
> 
> > On DA850/OMAP-L138 SoC, the PLL which supplies the clock to CPU also feeds 
> > the
> > UART and the UART input frequency can change when the CPU frequency is 
> > scaled.
> >
> > This patch adds cpufreq support for 8250 serial driver. A clk structure 
> > member
> > has been added to the platform and port data structure. This member is used 
> > by
> > the cpufreq notifier callback to get the updated clock rate. The 
> > implementation
> > is based on the cpufreq implementation for Samsung serial driver.
> >
> > This implementation has been tested on TI DA850/OMAP-L138 EVM.
> >
> > Signed-off-by: Chaithrika U S <[email protected]>
> > ---
> > This patch is posted here for review and will be posted to LKML later.
> 
> Some minor comments/questions below.  Otherwise, should be posted to
> linux-serial + LKML and Cc davinci list.
> 
> Hopefully somebody (hopefully Andrew) will pick this up since the 8250 driver 
> has
> been orphaned for sometime.
>       

I will post this patch to linux-serial and LKML lists soon.

> Kevin
> 
> 
> >  drivers/serial/8250.c       |   81 
> > +++++++++++++++++++++++++++++++++++++++++++
> >  include/linux/serial_8250.h |    1 +
> >  2 files changed, 82 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
> > index c3e37c8..612e129 100644
> > --- a/drivers/serial/8250.c
> > +++ b/drivers/serial/8250.c
> > @@ -38,6 +38,8 @@
> >  #include <linux/serial_8250.h>
> >  #include <linux/nmi.h>
> >  #include <linux/mutex.h>
> > +#include <linux/cpufreq.h>
> > +#include <linux/clk.h>
> >  
> >  #include <asm/io.h>
> >  #include <asm/irq.h>
> > @@ -156,6 +158,10 @@ struct uart_8250_port {
> >      */
> >     void                    (*pm)(struct uart_port *port,
> >                                   unsigned int state, unsigned int old);
> > +   struct clk              *uart_clk;
> > +#ifdef CONFIG_CPU_FREQ
> > +   struct notifier_block   freq_transition;
> > +#endif
> >  };
> >  
> >  struct irq_info {
> > @@ -2931,6 +2937,70 @@ void serial8250_resume_port(int line)
> >     uart_resume_port(&serial8250_reg, &up->port);
> >  }
> >  
> > +#ifdef CONFIG_CPU_FREQ
> > +static int serial8250_cpufreq_transition(struct notifier_block *nb,
> > +                                        unsigned long val, void *data)
> > +{
> > +   struct uart_8250_port *p;
> > +   struct uart_port *uport;
> > +
> > +   p = container_of(nb, struct uart_8250_port, freq_transition);
> > +   uport = &p->port;
> > +
> > +   if(!p->port.uartclk)
> > +           goto cpu_freq_exit;
> 
> Isn't it OK to have a zero value here if you're going to use
> clk_get_rate()?  or does uartclk == 0 have a special meaning here?  If
> so, should be commented.
> 

This is a mistake here! The if condition should check 'uart_clk' - the
clock struct pointer. I will correct this and post the updated patch.

Thanks & Regards, 
Chaithrika


_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to