linux-mips
[Top] [All Lists]

Re: [PATCH 1/2] ide: Add tx4939ide driver

To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Subject: Re: [PATCH 1/2] ide: Add tx4939ide driver
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date: Mon, 15 Sep 2008 00:55:11 +0400
Cc: linux-mips@linux-mips.org, linux-ide@vger.kernel.org, Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, ralf@linux-mips.org
In-reply-to: <48CC3516.9080404@ru.mvista.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20080910.010824.07456636.anemo@mba.ocn.ne.jp> <48CC3516.9080404@ru.mvista.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0.0.16 (Windows/20080708)
Hello, I wrote:

+static void mm_insw_swap(unsigned long port, void *addr, u32 count)
+{
+    unsigned short *ptr = addr;
+    unsigned long size = count * 2;
+    port &= ~1;
+    while (count--)
+        *ptr++ = le16_to_cpu(__raw_readw((void __iomem *)port));
+    __ide_flush_dcache_range((unsigned long)addr, size);
+}
+static void mm_outsw_swap(unsigned long port, void *addr, u32 count)
+{
+    unsigned short *ptr = addr;
+    unsigned long size = count * 2;
+    port &= ~1;
+    while (count--) {
+        __raw_writew(cpu_to_le16(*ptr), (void __iomem *)port);
+        ptr++;
+    }
+    __ide_flush_dcache_range((unsigned long)addr, size);
+}

Hum... but is it really correct to convert from/to LE order above? I'm prett sure that data is expected in LE order -- look ar ide_fix_driveid() for example...


Assuming that the IDE data words' MSB appears at offset 6 and LSB at offset 7 (which would seem logical), the data is actually in BE (CPU) orger, so
mm_insw_swap() should use cpu_to_le16() and mm_outsw_swap() le16_to_cpu()...

MBR, Sergei



<Prev in Thread] Current Thread [Next in Thread>