login
Header Space

 
 

[RFC 13/13] Char: nozomi, cleanup read and write

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: Frank Seidel <fseidel@...>
Date: Friday, November 9, 2007 - 7:51 pm

nozomi, cleanup read and write

- remove macros testing for endianness, le*_to_cpu and complements will do
  it
- pointers cleanup (no need to have different pointers for be and le)
- put unlikely into reading/writing while loop, because it will proceed
  through this case only on last two bytes
- also fix typos in write, le16_to_cpu instead of cpu_to_le16 for 2-byte
  writes

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>

---
commit fe27da2c4a35d2f91fd1ed542d91353f7a3c1dd2
tree a9f8d35b2047a24277d92758d3d579eb59427323
parent 92ca82bcbd5dde95096dac24d0f6a9beab68e003
author Jiri Slaby <jirislaby@gmail.com> Sat, 10 Nov 2007 00:19:04 +0100
committer Jiri Slaby <jirislaby@gmail.com> Sat, 10 Nov 2007 00:19:04 +0100

 drivers/char/nozomi.c |   80 ++++++++++---------------------------------------
 1 files changed, 16 insertions(+), 64 deletions(-)

diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c
index 0735df0..7379cd4 100644
--- a/drivers/char/nozomi.c
+++ b/drivers/char/nozomi.c
@@ -105,6 +105,7 @@
 
 #include <linux/delay.h>
 
+#include <asm/byteorder.h>
 
 #define VERSION_STRING DRIVER_DESC " 2.1c (build date: " \
 					__DATE__ " " __TIME__ ")"
@@ -261,8 +262,7 @@ enum port_type {
 	PORT_ERROR	= -1,
 };
 
-#ifdef __ARMEB__
-/* Big endian */
+#ifdef __BIG_ENDIAN
 
 struct toggles {
 	unsigned enabled:5;	/*
@@ -470,16 +470,10 @@ static inline struct port *get_port_by_tty(const struct tty_struct *tty)
  * -Rewrite cleaner
  */
 
-static void read_mem32(u32 *buf, const void __iomem *mem_addr_start,
-			u32 size_bytes)
+static void read_mem32(u32 *buf, void __iomem *ptr, u32 size_bytes)
 {
-	u32 i = 0;
-#ifdef __ARMEB__
-	const u32 *ptr = (u32 *) mem_addr_start;
-#else
-	const u32 *ptr = (__force u32 *) mem_addr_start;
-#endif
 	u16 *buf16;
+	u32 i = 0;
 
 	if (unlikely(!ptr || !buf))
 		goto out;
@@ -488,40 +482,22 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start,
 	switch (size_bytes) {
 	case 2:	/* 2 bytes */
 		buf16 = (u16 *) buf;
-#ifdef __ARMEB__
-		*buf16 = __le16_to_cpu(readw(ptr));
-#else
-		*buf16 = readw((void __iomem *)ptr);
-#endif
+		*buf16 = le16_to_cpu(readw(ptr));
 		goto out;
-		break;
 	case 4:	/* 4 bytes */
-#ifdef __ARMEB__
-		*(buf) = __le32_to_cpu(readl(ptr));
-#else
-		*(buf) = readl((void __iomem *)ptr);
-#endif
+		*buf = le32_to_cpu(readl(ptr));
 		goto out;
-		break;
 	}
 
 	while (i < size_bytes) {
-		if (size_bytes - i == 2) {
+		if (unlikely(size_bytes - i == 2)) {
 			/* Handle 2 bytes in the end */
 			buf16 = (u16 *) buf;
-#ifdef __ARMEB__
-			*(buf16) = __le16_to_cpu(readw(ptr));
-#else
-			*(buf16) = readw((void __iomem *)ptr);
-#endif
+			*buf16 = le16_to_cpu(readw(ptr));
 			i += 2;
 		} else {
 			/* Read 4 bytes */
-#ifdef __ARMEB__
-			*(buf) = __le32_to_cpu(readl(ptr));
-#else
-			*(buf) = readl((void __iomem *)ptr);
-#endif
+			*buf = le32_to_cpu(readl(ptr));
 			i += 4;
 		}
 		buf++;
@@ -536,15 +512,9 @@ out:
  * -Optimize
  * -Rewrite cleaner
  */
-static u32 write_mem32(void __iomem *mem_addr_start, u32 *buf,
-			u32 size_bytes)
+static u32 write_mem32(void __iomem *ptr, u32 *buf, u32 size_bytes)
 {
 	u32 i = 0;
-#ifdef __ARMEB__
-	u32 *ptr = (u32 *) mem_addr_start;
-#else
-	u32 *ptr = (__force u32 *) mem_addr_start;
-#endif
 	u16 *buf16;
 
 	if (unlikely(!ptr || !buf))
@@ -553,41 +523,23 @@ static u32 write_mem32(void __iomem *mem_addr_start, u32 *buf,
 	/* shortcut for extremely often used cases */
 	switch (size_bytes) {
 	case 2:	/* 2 bytes */
-		buf16 = (u16 *) buf;
-#ifdef __ARMEB__
-		writew(__le16_to_cpu(*buf16), ptr);
-#else
-		writew(*buf16, (void __iomem *)ptr);
-#endif
+		buf16 = (u16 *)buf;
+		writew(cpu_to_le16(*buf16), ptr);
 		return 2;
-		break;
 	case 4: /* 4 bytes */
-#ifdef __ARMEB__
-		writel(__cpu_to_le32(*buf), ptr);
-#else
-		writel(*buf, (void __iomem *)ptr);
-#endif
+		writel(cpu_to_le32(*buf), ptr);
 		return 4;
-		break;
 	}
 
 	while (i < size_bytes) {
-		if (size_bytes - i == 2) {
+		if (unlikely(size_bytes - i == 2)) {
 			/* 2 bytes */
 			buf16 = (u16 *) buf;
-#ifdef __ARMEB__
-			writew(__le16_to_cpu(*buf16), ptr);
-#else
-			writew(*buf16, (void __iomem *)ptr);
-#endif
+			writew(cpu_to_le16(*buf16), ptr);
 			i += 2;
 		} else {
 			/* 4 bytes */
-#ifdef __ARMEB__
-			writel(__cpu_to_le32(*buf), ptr);
-#else
-			writel(*buf, (void __iomem *)ptr);
-#endif
+			writel(cpu_to_le32(*buf), ptr);
 			i += 4;
 		}
 		buf++;
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC 1/13] Char: nozomi, remove unneded stuff, Jiri Slaby, (Fri Nov 9, 7:43 pm)
Re: [RFC 1/13] Char: nozomi, remove unneded stuff, Frank Seidel, (Sat Nov 10, 11:41 am)
Re: [RFC 1/13] Char: nozomi, remove unneded stuff, Jiri Slaby, (Sat Nov 10, 11:55 am)
[RFC 13/13] Char: nozomi, cleanup read and write, Jiri Slaby, (Fri Nov 9, 7:51 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Adrian Bunk, (Sat Nov 10, 12:15 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Jiri Slaby, (Sat Nov 10, 6:04 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Adrian Bunk, (Mon Nov 12, 3:54 am)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Mon Nov 12, 5:43 am)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Sat Nov 10, 10:37 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Sun Nov 11, 12:02 pm)
Re: [RFC 13/13] Char: nozomi, cleanup read and write, Frank Seidel, (Sat Nov 10, 11:43 am)
[RFC 11/13] Char: nozomi, remove unused includes, Jiri Slaby, (Fri Nov 9, 7:50 pm)
Re: [RFC 11/13] Char: nozomi, remove unused includes, Frank Seidel, (Sat Nov 10, 11:43 am)
[RFC! 10/13] Char: nozomi, fix tty_flip_buffer_push, Jiri Slaby, (Fri Nov 9, 7:49 pm)
Re: [RFC! 10/13] Char: nozomi, fix tty_flip_buffer_push, Frank Seidel, (Sat Nov 10, 11:43 am)
[RFC 9/13] Char: nozomi, lock cleanup, Jiri Slaby, (Fri Nov 9, 7:48 pm)
Re: [RFC 9/13] Char: nozomi, lock cleanup, Frank Seidel, (Sat Nov 10, 11:42 am)
[RFC 8/13] Char: nozomi, tty cleanup, Jiri Slaby, (Fri Nov 9, 7:48 pm)
Re: [RFC 8/13] Char: nozomi, tty cleanup, Frank Seidel, (Mon Nov 12, 2:43 pm)
Re: [RFC 8/13] Char: nozomi, tty cleanup, Frank Seidel, (Sat Nov 10, 11:42 am)
[RFC 7/13] Char: nozomi, remove struct irq, Jiri Slaby, (Fri Nov 9, 7:47 pm)
Re: [RFC 7/13] Char: nozomi, remove struct irq, Frank Seidel, (Mon Nov 12, 11:11 am)
Re: [RFC 7/13] Char: nozomi, remove struct irq, Frank Seidel, (Sat Nov 10, 11:42 am)
[RFC 5/13] Char: nozomi, ioctls cleanup, Jiri Slaby, (Fri Nov 9, 7:46 pm)
Re: [RFC 5/13] Char: nozomi, ioctls cleanup, Frank Seidel, (Sat Nov 10, 11:41 am)
[RFC 4/13] Char: nozomi, tty index cleanup, Jiri Slaby, (Fri Nov 9, 7:45 pm)
Re: [RFC 4/13] Char: nozomi, tty index cleanup, Frank Seidel, (Sat Nov 10, 11:41 am)
Re: [RFC 4/13] Char: nozomi, tty index cleanup, Jiri Slaby, (Sat Nov 10, 11:50 am)
[RFC 3/13] Char: nozomi, fix fail paths, Jiri Slaby, (Fri Nov 9, 7:44 pm)
Re: [RFC 3/13] Char: nozomi, fix fail paths, Frank Seidel, (Sat Nov 10, 11:41 am)
[RFC 2/13] Char: nozomi, expand some functions, Jiri Slaby, (Fri Nov 9, 7:44 pm)
Re: [RFC 2/13] Char: nozomi, expand some functions, Frank Seidel, (Sat Nov 10, 11:41 am)
speck-geostationary