All of lore.kernel.org
 help / color / mirror / Atom feed
* [PM][PATCH 0/4] OMAP3: Serial Misc fixes
@ 2010-04-08 17:54 Nishanth Menon
  2010-04-08 17:54 ` [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr Nishanth Menon
  0 siblings, 1 reply; 10+ messages in thread
From: Nishanth Menon @ 2010-04-08 17:54 UTC (permalink / raw)
  To: linux-omap
  Cc: Nishanth Menon, Deepak K, Govindraj R, Kevin Hilman, Tero Kristo

Hi All,

Starting off from Android kernel, found a few fixes whic have
been backported to l-o pm branch and a basic sanity tests run
against SDP3430/SDP3630.

Deepak K (1):
  OMAP3: Serial: Errata i202: fix for MDR1 access

Govindraj R (1):
  OMAP3: Serial: Add context save and restore for mcr

Nishanth Menon (2):
  OMAP3: Serial: remove initialization sparse warnings
  OMAP3: Serial: kill dev_attr_sleep_timeout sparse warn

 arch/arm/mach-omap2/serial.c |   31 +++++++++++++++++++++++++++----
 1 files changed, 27 insertions(+), 4 deletions(-)

Regards,
Nishanth Menon

Cc: Deepak K <deepak.k@ti.com>
Cc: Govindraj R <govindraj.raja@ti.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Tero Kristo <tero.kristo@nokia.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr
  2010-04-08 17:54 [PM][PATCH 0/4] OMAP3: Serial Misc fixes Nishanth Menon
@ 2010-04-08 17:54 ` Nishanth Menon
  2010-04-08 17:54   ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
  2010-05-05 23:49   ` [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr Kevin Hilman
  0 siblings, 2 replies; 10+ messages in thread
From: Nishanth Menon @ 2010-04-08 17:54 UTC (permalink / raw)
  To: linux-omap; +Cc: Govindraj R, Kevin Hilman, Tero Kristo, Nishanth Menon

From: Govindraj R <govindraj.raja@ti.com>

Ref:
http://git.omapzoom.org/?p=kernel/omap.git;a=commitdiff;h=c74952c3077e4b19e649b5b48c785c01f73ab9d4

Adds context save/restore for mcr register as state of mcr register
is lost after core off.

Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Tero Kristo <tero.kristo@nokia.com>

Signed-off-by: Govindraj R <govindraj.raja@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
---
Note: Original Patch was done for android kernel, was ported and sanity
tested to l-o pm.  A quick check did not reveal any mcr access in
arch/arm/mach-omap2/serial.c though drivers/serial/8250.c seems to
hit on it a lot, hence posting.

 arch/arm/mach-omap2/serial.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index b731556..86d3b47 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -78,6 +78,7 @@ struct omap_uart_state {
 	u16 sysc;
 	u16 scr;
 	u16 wer;
+	u16 mcr;
 #endif
 };
 
@@ -201,6 +202,9 @@ static void omap_uart_save_context(struct omap_uart_state *uart)
 	uart->sysc = serial_read_reg(p, UART_OMAP_SYSC);
 	uart->scr = serial_read_reg(p, UART_OMAP_SCR);
 	uart->wer = serial_read_reg(p, UART_OMAP_WER);
+	serial_write_reg(p, UART_LCR, 0x80);
+	uart->mcr = serial_read_reg(p, UART_MCR);
+	serial_write_reg(p, UART_LCR, lcr);
 
 	uart->context_valid = 1;
 }
@@ -229,6 +233,8 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
 	serial_write_reg(p, UART_DLM, uart->dlh);
 	serial_write_reg(p, UART_LCR, 0x0); /* Operational mode */
 	serial_write_reg(p, UART_IER, uart->ier);
+	serial_write_reg(p, UART_LCR, 0x80);
+	serial_write_reg(p, UART_MCR, uart->mcr);
 	serial_write_reg(p, UART_FCR, 0xA1);
 	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
 	serial_write_reg(p, UART_EFR, efr);
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access
  2010-04-08 17:54 ` [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr Nishanth Menon
@ 2010-04-08 17:54   ` Nishanth Menon
  2010-04-08 17:54     ` [PM][PATCH 3/4] OMAP3: Serial: remove initialization sparse warnings Nishanth Menon
  2010-04-09 17:00     ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
  2010-05-05 23:49   ` [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr Kevin Hilman
  1 sibling, 2 replies; 10+ messages in thread
From: Nishanth Menon @ 2010-04-08 17:54 UTC (permalink / raw)
  To: linux-omap
  Cc: Deepak K, Govindraj R, Kevin Hilman, Tero Kristo, Nishanth Menon

From: Deepak K <deepak.k@ti.com>

Original patch:
http://git.omapzoom.org/?p=kernel/omap.git;a=commitdiff;h=42d4a342c009bd9727c100abc8a4bc3063c22f0c

Errata i202 (OMAP3430 - 1.12, OMAP3630 - 1.6):
UART module MDR1 register access can cause a dummy underrun
condition which could result in a freeze in the case of IrDA
communication or if used as UART, corrupted data.

Workaround is as follows for everytime MDR1 register is changed:
* setup all required UART registers
* setup MDR1.MODE_SELECT bit field
* Wait 5 L4 clk cycles + 5 UART functional clock cycles
* Clear the Tx and RX fifo using FCR register

Note: The following step is not done as I am assuming it is not
needed due to reconfiguration being done and there is no halted
operation perse.
* Read if required, the RESUME register to resume halted operation

Cc: Govindraj R <govindraj.raja@ti.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Tero Kristo <tero.kristo@nokia.com>

Signed-off-by: Deepak K <deepak.k@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
---
Note: original patch was done for android kernel, ported and sanity
tested

 arch/arm/mach-omap2/serial.c |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 86d3b47..144033f 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -223,6 +223,19 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
 	uart->context_valid = 0;
 
 	serial_write_reg(p, UART_OMAP_MDR1, 0x7);
+	/*
+	 * Work Around for Errata i202 (3430 - 1.12, 3630 - 1.6)
+	 * The access to uart register after MDR1 Access
+	 * causes UART to corrupt data.
+	 *
+	 * Need a delay =
+	 * 5 L4 clock cycles + 5 UART functional clock cycle (@48MHz = ~0.2uS)
+	 * give 10 times as much
+	 */
+	udelay(2);
+	/* TX and RX FIFO Clear; FIFO dis */
+	serial_write_reg(p, UART_FCR, 0xA6);
+
 	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
 	efr = serial_read_reg(p, UART_EFR);
 	serial_write_reg(p, UART_EFR, UART_EFR_ECB);
@@ -235,7 +248,6 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
 	serial_write_reg(p, UART_IER, uart->ier);
 	serial_write_reg(p, UART_LCR, 0x80);
 	serial_write_reg(p, UART_MCR, uart->mcr);
-	serial_write_reg(p, UART_FCR, 0xA1);
 	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
 	serial_write_reg(p, UART_EFR, efr);
 	serial_write_reg(p, UART_LCR, UART_LCR_WLEN8);
@@ -243,6 +255,10 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
 	serial_write_reg(p, UART_OMAP_WER, uart->wer);
 	serial_write_reg(p, UART_OMAP_SYSC, uart->sysc);
 	serial_write_reg(p, UART_OMAP_MDR1, 0x00); /* UART 16x mode */
+	/* Errata: i202 */
+	udelay(2);
+	/* TX and RX FIFO Clear; FIFO en */
+	serial_write_reg(p, UART_FCR, 0xA7);
 }
 #else
 static inline void omap_uart_save_context(struct omap_uart_state *uart) {}
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PM][PATCH 3/4] OMAP3: Serial: remove initialization sparse warnings
  2010-04-08 17:54   ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
@ 2010-04-08 17:54     ` Nishanth Menon
  2010-04-08 17:54       ` [PM][PATCH 4/4] OMAP3: Serial: kill dev_attr_sleep_timeout sparse warn Nishanth Menon
  2010-04-09 17:00     ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
  1 sibling, 1 reply; 10+ messages in thread
From: Nishanth Menon @ 2010-04-08 17:54 UTC (permalink / raw)
  To: linux-omap; +Cc: Nishanth Menon, Govindraj R, Kevin Hilman, Tero Kristo

Initialization of pointer should be done with NULL. Removes sparse
warnings:
arch/arm/mach-omap2/serial.c:566:17: warning: Using plain integer as NULL pointer
arch/arm/mach-omap2/serial.c:567:17: warning: Using plain integer as NULL pointer

Cc: Govindraj R <govindraj.raja@ti.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Tero Kristo <tero.kristo@nokia.com>

Signed-off-by: Nishanth Menon <nm@ti.com>
---
 arch/arm/mach-omap2/serial.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 144033f..c7b2326 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -563,8 +563,8 @@ static void omap_uart_idle_init(struct omap_uart_state *uart)
 		}
 		uart->wk_mask = wk_mask;
 	} else {
-		uart->wk_en = 0;
-		uart->wk_st = 0;
+		uart->wk_en = NULL;
+		uart->wk_st = NULL;
 		uart->wk_mask = 0;
 		uart->padconf = 0;
 	}
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PM][PATCH 4/4] OMAP3: Serial: kill dev_attr_sleep_timeout sparse warn
  2010-04-08 17:54     ` [PM][PATCH 3/4] OMAP3: Serial: remove initialization sparse warnings Nishanth Menon
@ 2010-04-08 17:54       ` Nishanth Menon
  2010-05-05 23:57         ` Kevin Hilman
  0 siblings, 1 reply; 10+ messages in thread
From: Nishanth Menon @ 2010-04-08 17:54 UTC (permalink / raw)
  To: linux-omap; +Cc: Nishanth Menon, Govindraj R, Kevin Hilman, Tero Kristo

Remove the following sparse warnings by declaring attr as static:
arch/arm/mach-omap2/serial.c:627:1: warning: symbol 'dev_attr_sleep_timeout' was not declared. Should it be static?

Cc: Govindraj R <govindraj.raja@ti.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Tero Kristo <tero.kristo@nokia.com>

Signed-off-by: Nishanth Menon <nm@ti.com>
---
 arch/arm/mach-omap2/serial.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index c7b2326..cea0a9e 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -624,7 +624,8 @@ static ssize_t sleep_timeout_store(struct device *dev,
 	return n;
 }
 
-DEVICE_ATTR(sleep_timeout, 0644, sleep_timeout_show, sleep_timeout_store);
+static DEVICE_ATTR(sleep_timeout, 0644, sleep_timeout_show,
+		sleep_timeout_store);
 #define DEV_CREATE_FILE(dev, attr) WARN_ON(device_create_file(dev, attr))
 #else
 static inline void omap_uart_idle_init(struct omap_uart_state *uart) {}
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access
  2010-04-08 17:54   ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
  2010-04-08 17:54     ` [PM][PATCH 3/4] OMAP3: Serial: remove initialization sparse warnings Nishanth Menon
@ 2010-04-09 17:00     ` Nishanth Menon
  2010-04-09 17:06       ` Kattungal, Deepak
  1 sibling, 1 reply; 10+ messages in thread
From: Nishanth Menon @ 2010-04-09 17:00 UTC (permalink / raw)
  To: linux-omap; +Cc: Kattungal, Deepak, Raja, Govindraj, Kevin Hilman, Tero Kristo

Menon, Nishanth had written, on 04/08/2010 12:54 PM, the following:
> From: Deepak K <deepak.k@ti.com>
[...]
> 
> Cc: Govindraj R <govindraj.raja@ti.com>
> Cc: Kevin Hilman <khilman@deeprootsystems.com>
> Cc: Tero Kristo <tero.kristo@nokia.com>
> 
> Signed-off-by: Deepak K <deepak.k@ti.com>
> Signed-off-by: Nishanth Menon <nm@ti.com>
> ---
> Note: original patch was done for android kernel, ported and sanity
> tested
> 
>  arch/arm/mach-omap2/serial.c |   18 +++++++++++++++++-
>  1 files changed, 17 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index 86d3b47..144033f 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -223,6 +223,19 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
>  	uart->context_valid = 0;
>  
>  	serial_write_reg(p, UART_OMAP_MDR1, 0x7);
> +	/*
> +	 * Work Around for Errata i202 (3430 - 1.12, 3630 - 1.6)
> +	 * The access to uart register after MDR1 Access
> +	 * causes UART to corrupt data.
> +	 *
> +	 * Need a delay =
> +	 * 5 L4 clock cycles + 5 UART functional clock cycle (@48MHz = ~0.2uS)
> +	 * give 10 times as much
> +	 */
> +	udelay(2);
> +	/* TX and RX FIFO Clear; FIFO dis */
> +	serial_write_reg(p, UART_FCR, 0xA6);
NAK
Late realization: should be checking if FIFO clear actually occurred 
before proceeding (FIFO clear bits will be cleared by h/w once it is 
complete,
so need to add a
/* wait till  TX and RX fifos are cleard by h/w */
while(serial_read_reg(p, UART_FCR) & 0x06)
	;
> +
>  	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
>  	efr = serial_read_reg(p, UART_EFR);
>  	serial_write_reg(p, UART_EFR, UART_EFR_ECB);
> @@ -235,7 +248,6 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
>  	serial_write_reg(p, UART_IER, uart->ier);
>  	serial_write_reg(p, UART_LCR, 0x80);
>  	serial_write_reg(p, UART_MCR, uart->mcr);
> -	serial_write_reg(p, UART_FCR, 0xA1);
>  	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
>  	serial_write_reg(p, UART_EFR, efr);
>  	serial_write_reg(p, UART_LCR, UART_LCR_WLEN8);
> @@ -243,6 +255,10 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
>  	serial_write_reg(p, UART_OMAP_WER, uart->wer);
>  	serial_write_reg(p, UART_OMAP_SYSC, uart->sysc);
>  	serial_write_reg(p, UART_OMAP_MDR1, 0x00); /* UART 16x mode */
> +	/* Errata: i202 */
> +	udelay(2);
> +	/* TX and RX FIFO Clear; FIFO en */
> +	serial_write_reg(p, UART_FCR, 0xA7);
NAK
same reason
>  }
>  #else
>  static inline void omap_uart_save_context(struct omap_uart_state *uart) {}

I will post a v2 patch in a few mins..
-- 
Regards,
Nishanth Menon

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access
  2010-04-09 17:00     ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
@ 2010-04-09 17:06       ` Kattungal, Deepak
  2010-04-09 17:21         ` Nishanth Menon
  0 siblings, 1 reply; 10+ messages in thread
From: Kattungal, Deepak @ 2010-04-09 17:06 UTC (permalink / raw)
  To: Menon, Nishanth, linux-omap; +Cc: Raja, Govindraj, Kevin Hilman, Tero Kristo

Hi Nishanth

My comments below.

Regards
Deepak

-----Original Message-----
From: Menon, Nishanth 
Sent: Friday, April 09, 2010 12:00 PM
To: linux-omap
Cc: Kattungal, Deepak; Raja, Govindraj; Kevin Hilman; Tero Kristo
Subject: Re: [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access

Menon, Nishanth had written, on 04/08/2010 12:54 PM, the following:
> From: Deepak K <deepak.k@ti.com>
[...]
> 
> Cc: Govindraj R <govindraj.raja@ti.com>
> Cc: Kevin Hilman <khilman@deeprootsystems.com>
> Cc: Tero Kristo <tero.kristo@nokia.com>
> 
> Signed-off-by: Deepak K <deepak.k@ti.com>
> Signed-off-by: Nishanth Menon <nm@ti.com>
> ---
> Note: original patch was done for android kernel, ported and sanity
> tested
> 
>  arch/arm/mach-omap2/serial.c |   18 +++++++++++++++++-
>  1 files changed, 17 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index 86d3b47..144033f 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -223,6 +223,19 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
>  	uart->context_valid = 0;
>  
>  	serial_write_reg(p, UART_OMAP_MDR1, 0x7);
> +	/*
> +	 * Work Around for Errata i202 (3430 - 1.12, 3630 - 1.6)
> +	 * The access to uart register after MDR1 Access
> +	 * causes UART to corrupt data.
> +	 *
> +	 * Need a delay =
> +	 * 5 L4 clock cycles + 5 UART functional clock cycle (@48MHz = ~0.2uS)
> +	 * give 10 times as much
> +	 */
> +	udelay(2);
> +	/* TX and RX FIFO Clear; FIFO dis */
> +	serial_write_reg(p, UART_FCR, 0xA6);
NAK
Late realization: should be checking if FIFO clear actually occurred 
before proceeding (FIFO clear bits will be cleared by h/w once it is 
complete,
so need to add a
/* wait till  TX and RX fifos are cleard by h/w */
while(serial_read_reg(p, UART_FCR) & 0x06)
	;

Deepak : The FCR is a Write-Only Register, the read to it wont return the correct value. If at all we need to add a check, the LSR should be read for the status of the FIFO. The same follows for the below section also.

> +
>  	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
>  	efr = serial_read_reg(p, UART_EFR);
>  	serial_write_reg(p, UART_EFR, UART_EFR_ECB);
> @@ -235,7 +248,6 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
>  	serial_write_reg(p, UART_IER, uart->ier);
>  	serial_write_reg(p, UART_LCR, 0x80);
>  	serial_write_reg(p, UART_MCR, uart->mcr);
> -	serial_write_reg(p, UART_FCR, 0xA1);
>  	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
>  	serial_write_reg(p, UART_EFR, efr);
>  	serial_write_reg(p, UART_LCR, UART_LCR_WLEN8);
> @@ -243,6 +255,10 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
>  	serial_write_reg(p, UART_OMAP_WER, uart->wer);
>  	serial_write_reg(p, UART_OMAP_SYSC, uart->sysc);
>  	serial_write_reg(p, UART_OMAP_MDR1, 0x00); /* UART 16x mode */
> +	/* Errata: i202 */
> +	udelay(2);
> +	/* TX and RX FIFO Clear; FIFO en */
> +	serial_write_reg(p, UART_FCR, 0xA7);
NAK
same reason
>  }
>  #else
>  static inline void omap_uart_save_context(struct omap_uart_state *uart) {}

I will post a v2 patch in a few mins..
-- 
Regards,
Nishanth Menon

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access
  2010-04-09 17:06       ` Kattungal, Deepak
@ 2010-04-09 17:21         ` Nishanth Menon
  0 siblings, 0 replies; 10+ messages in thread
From: Nishanth Menon @ 2010-04-09 17:21 UTC (permalink / raw)
  To: Kattungal, Deepak; +Cc: linux-omap, Raja, Govindraj, Kevin Hilman, Tero Kristo

Kattungal, Deepak had written, on 04/09/2010 12:06 PM, the following:
[..]
>> +	/* TX and RX FIFO Clear; FIFO dis */
>> +	serial_write_reg(p, UART_FCR, 0xA6);
> NAK
> Late realization: should be checking if FIFO clear actually occurred 
> before proceeding (FIFO clear bits will be cleared by h/w once it is 
> complete,
> so need to add a
> /* wait till  TX and RX fifos are cleard by h/w */
> while(serial_read_reg(p, UART_FCR) & 0x06)
> 	;
> 
> Deepak : The FCR is a Write-Only Register, the read to it wont return the correct value. If at all we need to add a check, 
 >the LSR should be read for the status of the FIFO. The same follows 
for the below section also.

Gee thx. Since RX fifo empty bit is 0 when empty and tx_fifo_empty bit 
is 1 when empty, i will change to:
while( 0x20 != (serial_read_reg(p, UART_LSR) & 0x21))
  	;
Also From errata it does not require to make sure that shift register 
also needs to be empty.. we could save a few nano seconds by not using that.

-- 
Regards,
Nishanth Menon

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr
  2010-04-08 17:54 ` [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr Nishanth Menon
  2010-04-08 17:54   ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
@ 2010-05-05 23:49   ` Kevin Hilman
  1 sibling, 0 replies; 10+ messages in thread
From: Kevin Hilman @ 2010-05-05 23:49 UTC (permalink / raw)
  To: Nishanth Menon; +Cc: linux-omap, Govindraj R, Tero Kristo

Nishanth Menon <nm@ti.com> writes:

> From: Govindraj R <govindraj.raja@ti.com>
>
> Ref:
> http://git.omapzoom.org/?p=kernel/omap.git;a=commitdiff;h=c74952c3077e4b19e649b5b48c785c01f73ab9d4
>
> Adds context save/restore for mcr register as state of mcr register
> is lost after core off.
>
> Cc: Kevin Hilman <khilman@deeprootsystems.com>
> Cc: Tero Kristo <tero.kristo@nokia.com>
>
> Signed-off-by: Govindraj R <govindraj.raja@ti.com>
> Signed-off-by: Nishanth Menon <nm@ti.com>

OK, adding to pm-next, and queing (hopefully) for 2.6.35.

Kevin

> ---
> Note: Original Patch was done for android kernel, was ported and sanity
> tested to l-o pm.  A quick check did not reveal any mcr access in
> arch/arm/mach-omap2/serial.c though drivers/serial/8250.c seems to
> hit on it a lot, hence posting.
>
>  arch/arm/mach-omap2/serial.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index b731556..86d3b47 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -78,6 +78,7 @@ struct omap_uart_state {
>  	u16 sysc;
>  	u16 scr;
>  	u16 wer;
> +	u16 mcr;
>  #endif
>  };
>  
> @@ -201,6 +202,9 @@ static void omap_uart_save_context(struct omap_uart_state *uart)
>  	uart->sysc = serial_read_reg(p, UART_OMAP_SYSC);
>  	uart->scr = serial_read_reg(p, UART_OMAP_SCR);
>  	uart->wer = serial_read_reg(p, UART_OMAP_WER);
> +	serial_write_reg(p, UART_LCR, 0x80);
> +	uart->mcr = serial_read_reg(p, UART_MCR);
> +	serial_write_reg(p, UART_LCR, lcr);
>  
>  	uart->context_valid = 1;
>  }
> @@ -229,6 +233,8 @@ static void omap_uart_restore_context(struct omap_uart_state *uart)
>  	serial_write_reg(p, UART_DLM, uart->dlh);
>  	serial_write_reg(p, UART_LCR, 0x0); /* Operational mode */
>  	serial_write_reg(p, UART_IER, uart->ier);
> +	serial_write_reg(p, UART_LCR, 0x80);
> +	serial_write_reg(p, UART_MCR, uart->mcr);
>  	serial_write_reg(p, UART_FCR, 0xA1);
>  	serial_write_reg(p, UART_LCR, 0xBF); /* Config B mode */
>  	serial_write_reg(p, UART_EFR, efr);
> -- 
> 1.6.3.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PM][PATCH 4/4] OMAP3: Serial: kill dev_attr_sleep_timeout sparse warn
  2010-04-08 17:54       ` [PM][PATCH 4/4] OMAP3: Serial: kill dev_attr_sleep_timeout sparse warn Nishanth Menon
@ 2010-05-05 23:57         ` Kevin Hilman
  0 siblings, 0 replies; 10+ messages in thread
From: Kevin Hilman @ 2010-05-05 23:57 UTC (permalink / raw)
  To: Nishanth Menon; +Cc: linux-omap, Govindraj R, Tero Kristo

Nishanth Menon <nm@ti.com> writes:

> Remove the following sparse warnings by declaring attr as static:
> arch/arm/mach-omap2/serial.c:627:1: warning: symbol 'dev_attr_sleep_timeout' was not declared. Should it be static?
>
> Cc: Govindraj R <govindraj.raja@ti.com>
> Cc: Kevin Hilman <khilman@deeprootsystems.com>
> Cc: Tero Kristo <tero.kristo@nokia.com>
>
> Signed-off-by: Nishanth Menon <nm@ti.com>

Thanks, adding to pm-next, queing for 2.6.35.

Kevin

> ---
>  arch/arm/mach-omap2/serial.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index c7b2326..cea0a9e 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -624,7 +624,8 @@ static ssize_t sleep_timeout_store(struct device *dev,
>  	return n;
>  }
>  
> -DEVICE_ATTR(sleep_timeout, 0644, sleep_timeout_show, sleep_timeout_store);
> +static DEVICE_ATTR(sleep_timeout, 0644, sleep_timeout_show,
> +		sleep_timeout_store);
>  #define DEV_CREATE_FILE(dev, attr) WARN_ON(device_create_file(dev, attr))
>  #else
>  static inline void omap_uart_idle_init(struct omap_uart_state *uart) {}
> -- 
> 1.6.3.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-05-05 23:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-08 17:54 [PM][PATCH 0/4] OMAP3: Serial Misc fixes Nishanth Menon
2010-04-08 17:54 ` [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr Nishanth Menon
2010-04-08 17:54   ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
2010-04-08 17:54     ` [PM][PATCH 3/4] OMAP3: Serial: remove initialization sparse warnings Nishanth Menon
2010-04-08 17:54       ` [PM][PATCH 4/4] OMAP3: Serial: kill dev_attr_sleep_timeout sparse warn Nishanth Menon
2010-05-05 23:57         ` Kevin Hilman
2010-04-09 17:00     ` [PM][PATCH 2/4] OMAP3: Serial: Errata i202: fix for MDR1 access Nishanth Menon
2010-04-09 17:06       ` Kattungal, Deepak
2010-04-09 17:21         ` Nishanth Menon
2010-05-05 23:49   ` [PM][PATCH 1/4] OMAP3: Serial: Add context save and restore for mcr Kevin Hilman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.