diff options
Diffstat (limited to 'target/linux/rb532/patches-2.6.27/005-pata_rb532_cf_4bytes_rw.patch')
-rw-r--r-- | target/linux/rb532/patches-2.6.27/005-pata_rb532_cf_4bytes_rw.patch | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/target/linux/rb532/patches-2.6.27/005-pata_rb532_cf_4bytes_rw.patch b/target/linux/rb532/patches-2.6.27/005-pata_rb532_cf_4bytes_rw.patch deleted file mode 100644 index c8e682014..000000000 --- a/target/linux/rb532/patches-2.6.27/005-pata_rb532_cf_4bytes_rw.patch +++ /dev/null @@ -1,68 +0,0 @@ -* rename the offset definition to avoid abiguity with the standard ATA - IO address -* read and write four bytes at once like the original driver does -* use writesl() and readsl() which implicitly iterate over the data - -This patch assumes buflen to be a multiple of four, which is true for -ATA devices. ATAPI support is not known, though unlikely, as the -original driver always transfers 512 Bytes at once. - -Signed-off-by: Phil Sutter <n0-1@freewrt.org> -Acked-by: Sergei Shtyltov <sshtylyov@ru.mvista.com> ---- - drivers/ata/pata_rb532_cf.c | 20 +++++++++----------- - 1 files changed, 9 insertions(+), 11 deletions(-) - -diff --git a/drivers/ata/pata_rb532_cf.c b/drivers/ata/pata_rb532_cf.c -index 7b11f40..b919012 100644 ---- a/drivers/ata/pata_rb532_cf.c -+++ b/drivers/ata/pata_rb532_cf.c -@@ -43,7 +43,8 @@ - #define RB500_CF_REG_BASE 0x0800 - #define RB500_CF_REG_ERR 0x080D - #define RB500_CF_REG_CTRL 0x080E --#define RB500_CF_REG_DATA 0x0C00 -+/* 32bit buffered data register offset */ -+#define RB500_CF_REG_DBUF32 0x0C00 - - struct rb532_cf_info { - void __iomem *iobase; -@@ -74,19 +75,16 @@ static void rb532_pata_exec_command(struct ata_port *ap, - rb532_pata_finish_io(ap); - } - --static void rb532_pata_data_xfer(struct ata_device *adev, unsigned char *buf, -- unsigned int buflen, int write_data) -+static void rb532_pata_data_xfer(struct ata_device *adev, -+ unsigned char *buf, unsigned int buflen, int write_data) - { - struct ata_port *ap = adev->link->ap; - void __iomem *ioaddr = ap->ioaddr.data_addr; - -- if (write_data) { -- for (; buflen > 0; buflen--, buf++) -- writeb(*buf, ioaddr); -- } else { -- for (; buflen > 0; buflen--, buf++) -- *buf = readb(ioaddr); -- } -+ if (write_data) -+ writesl(ioaddr, buf, buflen / sizeof(u32)); -+ else -+ readsl(ioaddr, buf, buflen / sizeof(u32)); - - rb532_pata_finish_io(adev->link->ap); - } -@@ -156,7 +154,7 @@ static void rb532_pata_setup_ports(struct ata_host *ah) - - ata_sff_std_ports(&ap->ioaddr); - -- ap->ioaddr.data_addr = info->iobase + RB500_CF_REG_DATA; -+ ap->ioaddr.data_addr = info->iobase + RB500_CF_REG_DBUF32; - ap->ioaddr.error_addr = info->iobase + RB500_CF_REG_ERR; - } - --- -1.5.6.4 - - |