linux-mips
[Top] [All Lists]

Re: [PATCH] ide: Add tx4938ide driver (v2)

To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Subject: Re: [PATCH] ide: Add tx4938ide driver (v2)
From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Date: Sun, 08 Feb 2009 14:52:48 +0300
Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp>, linux-mips@linux-mips.org, linux-ide@vger.kernel.org, Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, ralf@linux-mips.org
In-reply-to: <498EC5BA.4080002@ru.mvista.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20081023.012013.52129771.anemo@mba.ocn.ne.jp> <498EC5BA.4080002@ru.mvista.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0.0.19 (Windows/20081209)
Hello, I wrote:

This is the driver for the Toshiba TX4938 SoC EBUS controller ATA mode.
It has custom set_pio_mode and some hacks for big endian.

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
[...]
+static void tx4938ide_input_data_swap(ide_drive_t *drive, struct request *rq,
+                void *buf, unsigned int len)
+{
+    unsigned long port = drive->hwif->io_ports.data_addr;
+    unsigned short *ptr = buf;
+    unsigned int count = (len + 1) / 2;
+
+    while (count--)
+        *ptr++ = cpu_to_le16(__raw_readw((void __iomem *)port));
+    __ide_flush_dcache_range((unsigned long)buf, count * 2);
+}
+
+static void tx4938ide_output_data_swap(ide_drive_t *drive, struct request *rq,
+                void *buf, unsigned int len)
+{
+    unsigned long port = drive->hwif->io_ports.data_addr;
+    unsigned short *ptr = buf;
+    unsigned int count = (len + 1) / 2;
+
+    while (count--) {
+        __raw_writew(le16_to_cpu(*ptr), (void __iomem *)port);
+        ptr++;
+    }
+    __ide_flush_dcache_range((unsigned long)buf, count * 2);
+}

Atsushi, does TX49 really suffer from the issue that these flushes are trying to address?

Well, looking thru the TX4939 thread, it appears that I've asked this question already. Isn't this related to VIVT caches?

MBR, Sergei



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