ide-floppy: allocate only toplevel packet commands
[safe/jmp/linux-2.6] / drivers / ide / tx4938ide.c
index 9120063..b4ef218 100644 (file)
@@ -181,7 +181,7 @@ static void tx4938ide_input_data_swap(ide_drive_t *drive, struct request *rq,
 
        while (count--)
                *ptr++ = cpu_to_le16(__raw_readw((void __iomem *)port));
-       __ide_flush_dcache_range((unsigned long)buf, count * 2);
+       __ide_flush_dcache_range((unsigned long)buf, roundup(len, 2));
 }
 
 static void tx4938ide_output_data_swap(ide_drive_t *drive, struct request *rq,
@@ -195,7 +195,7 @@ static void tx4938ide_output_data_swap(ide_drive_t *drive, struct request *rq,
                __raw_writew(le16_to_cpu(*ptr), (void __iomem *)port);
                ptr++;
        }
-       __ide_flush_dcache_range((unsigned long)buf, count * 2);
+       __ide_flush_dcache_range((unsigned long)buf, roundup(len, 2));
 }
 
 static const struct ide_tp_ops tx4938ide_tp_ops = {
@@ -216,16 +216,17 @@ static const struct ide_tp_ops tx4938ide_tp_ops = {
 #endif /* __BIG_ENDIAN */
 
 static const struct ide_port_ops tx4938ide_port_ops = {
-       .set_pio_mode = tx4938ide_set_pio_mode,
+       .set_pio_mode           = tx4938ide_set_pio_mode,
 };
 
 static const struct ide_port_info tx4938ide_port_info __initdata = {
-       .port_ops = &tx4938ide_port_ops,
+       .port_ops               = &tx4938ide_port_ops,
 #ifdef __BIG_ENDIAN
-       .tp_ops = &tx4938ide_tp_ops,
+       .tp_ops                 = &tx4938ide_tp_ops,
 #endif
-       .host_flags = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA,
-       .pio_mask = ATA_PIO5,
+       .host_flags             = IDE_HFLAG_MMIO | IDE_HFLAG_NO_DMA,
+       .pio_mask               = ATA_PIO5,
+       .chipset                = ide_generic,
 };
 
 static int __init tx4938ide_probe(struct platform_device *pdev)