Re: [PATCH 0/3] hvc_dcc cleanups and fixes

2011-02-03 Thread Greg KH
On Mon, Dec 20, 2010 at 12:08:35PM -0800, Stephen Boyd wrote:
 Here are the split patches.
 
 The first two patches cleanup and fix the hvc_dcc driver for my
 compiler. The final patch is more controversial, it removes the
 v6 and v7 differences in this driver.
 
 Stephen Boyd (3):
   hvc_dcc: Fix bad code generation by marking assembly volatile
   hvc_dcc: Simplify put_chars()/get_chars() loops
   hvc_dcc: Simplify assembly for v6 and v7 ARM

Can you redo these against the linux-next tree as they don't apply
anymore and resend them so I can apply them?

thanks,

greg k-h
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] hvc_dcc cleanups and fixes

2011-02-03 Thread Stephen Boyd
 On Mon, Dec 20, 2010 at 12:08:35PM -0800, Stephen Boyd wrote:
 Here are the split patches.

 The first two patches cleanup and fix the hvc_dcc driver for my
 compiler. The final patch is more controversial, it removes the
 v6 and v7 differences in this driver.

 Stephen Boyd (3):
   hvc_dcc: Fix bad code generation by marking assembly volatile
   hvc_dcc: Simplify put_chars()/get_chars() loops
   hvc_dcc: Simplify assembly for v6 and v7 ARM
 
 Can you redo these against the linux-next tree as they don't apply
 anymore and resend them so I can apply them?
 

Have you tried 'git am -3' on them? I assume it's the movement of the
file that's causing the problem.

Either way, I'll resend and collect the acks in a bit.
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/3] hvc_dcc cleanups and fixes

2011-02-03 Thread Greg KH
On Thu, Feb 03, 2011 at 03:19:07PM -0800, Stephen Boyd wrote:
  On Mon, Dec 20, 2010 at 12:08:35PM -0800, Stephen Boyd wrote:
  Here are the split patches.
 
  The first two patches cleanup and fix the hvc_dcc driver for my
  compiler. The final patch is more controversial, it removes the
  v6 and v7 differences in this driver.
 
  Stephen Boyd (3):
hvc_dcc: Fix bad code generation by marking assembly volatile
hvc_dcc: Simplify put_chars()/get_chars() loops
hvc_dcc: Simplify assembly for v6 and v7 ARM
  
  Can you redo these against the linux-next tree as they don't apply
  anymore and resend them so I can apply them?
  
 
 Have you tried 'git am -3' on them? I assume it's the movement of the
 file that's causing the problem.
 
 Either way, I'll resend and collect the acks in a bit.

thanks, that would be great.

greg k-h

--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCHv2 0/3] hvc_dcc cleanups and fixes

2011-02-03 Thread Stephen Boyd
Redone against tty-next and collected acks from Nicolas and Tony.

Stephen Boyd (3):
  hvc_dcc: Fix bad code generation by marking assembly volatile
  hvc_dcc: Simplify put_chars()/get_chars() loops
  hvc_dcc: Simplify assembly for v6 and v7 ARM

 drivers/tty/hvc/hvc_dcc.c |   43 +++
 1 files changed, 7 insertions(+), 36 deletions(-)

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCHv2 3/3] hvc_dcc: Simplify assembly for v6 and v7 ARM

2011-02-03 Thread Stephen Boyd
The inline assembly differences for v6 vs. v7 in the hvc_dcc
driver are purely optimizations. On a v7 processor, an mrc with
the pc sets the condition codes to the 28-31 bits of the register
being read. It just so happens that the TX/RX full bits the DCC
driver is testing for are high enough in the register to be put
into the condition codes. On a v6 processor, this feature isn't
implemented and thus we have to do the usual read, mask, test
operations to check for TX/RX full.

Since we already test the RX/TX full bits before calling
__dcc_getchar() and __dcc_putchar() we don't actually need to do
anything special for v7 over v6. The only difference is in
hvc_dcc_get_chars(). We would test RX full, poll RX full, and
then read a character from the buffer, whereas now we will test
RX full, read a character from the buffer, and then test RX full
again for the second iteration of the loop. It doesn't seem
possible for the buffer to go from full to empty between testing
the RX full and reading a character. Therefore, replace the v7
versions with the v6 versions and everything works the same.

Acked-by: Tony Lindgren t...@atomide.com
Cc: Arnd Bergmann a...@arndb.de
Acked-by: Nicolas Pitre nicolas.pi...@linaro.org
Cc: Daniel Walker dwal...@codeaurora.org
Signed-off-by: Stephen Boyd sb...@codeaurora.org
---
 drivers/tty/hvc/hvc_dcc.c |   24 
 1 files changed, 0 insertions(+), 24 deletions(-)

diff --git a/drivers/tty/hvc/hvc_dcc.c b/drivers/tty/hvc/hvc_dcc.c
index ad23cc8..435f6fa 100644
--- a/drivers/tty/hvc/hvc_dcc.c
+++ b/drivers/tty/hvc/hvc_dcc.c
@@ -40,19 +40,6 @@ static inline u32 __dcc_getstatus(void)
 }
 
 
-#if defined(CONFIG_CPU_V7)
-static inline char __dcc_getchar(void)
-{
-   char __c;
-
-   asm volatile(get_wait: mrc p14, 0, pc, c0, c1, 0  \n\
-   bne get_wait   \n\
-   mrc p14, 0, %0, c0, c5, 0   @ read comms data reg
-   : =r (__c) : : cc);
-
-   return __c;
-}
-#else
 static inline char __dcc_getchar(void)
 {
char __c;
@@ -62,24 +49,13 @@ static inline char __dcc_getchar(void)
 
return __c;
 }
-#endif
 
-#if defined(CONFIG_CPU_V7)
-static inline void __dcc_putchar(char c)
-{
-   asm volatile(put_wait: mrc p14, 0, pc, c0, c1, 0 \n\
-   bcs put_wait  \n\
-   mcr p14, 0, %0, c0, c5, 0   
-   : : r (c) : cc);
-}
-#else
 static inline void __dcc_putchar(char c)
 {
asm volatile(mcr p14, 0, %0, c0, c5, 0 @ write a char
: /* no output register */
: r (c));
 }
-#endif
 
 static int hvc_dcc_put_chars(uint32_t vt, const char *buf, int count)
 {
-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCHv2 2/3] hvc_dcc: Simplify put_chars()/get_chars() loops

2011-02-03 Thread Stephen Boyd
Casting and anding with 0xff is unnecessary in
hvc_dcc_put_chars() since buf is already a char[].
__dcc_get_char() can't return an int less than 0 since it only
returns a char. Simplify the if statement in hvc_dcc_get_chars()
to take this into account.

Cc: Daniel Walker dwal...@codeaurora.org
Signed-off-by: Stephen Boyd sb...@codeaurora.org
---
 drivers/tty/hvc/hvc_dcc.c |   12 
 1 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/tty/hvc/hvc_dcc.c b/drivers/tty/hvc/hvc_dcc.c
index 155ec10..ad23cc8 100644
--- a/drivers/tty/hvc/hvc_dcc.c
+++ b/drivers/tty/hvc/hvc_dcc.c
@@ -89,7 +89,7 @@ static int hvc_dcc_put_chars(uint32_t vt, const char *buf, 
int count)
while (__dcc_getstatus()  DCC_STATUS_TX)
cpu_relax();
 
-   __dcc_putchar((char)(buf[i]  0xFF));
+   __dcc_putchar(buf[i]);
}
 
return count;
@@ -99,15 +99,11 @@ static int hvc_dcc_get_chars(uint32_t vt, char *buf, int 
count)
 {
int i;
 
-   for (i = 0; i  count; ++i) {
-   int c = -1;
-
+   for (i = 0; i  count; ++i)
if (__dcc_getstatus()  DCC_STATUS_RX)
-   c = __dcc_getchar();
-   if (c  0)
+   buf[i] = __dcc_getchar();
+   else
break;
-   buf[i] = c;
-   }
 
return i;
 }
-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html