ide: add ->max_sectors field to struct ide_port_info
Bartlomiej Zolnierkiewicz [Mon, 29 Dec 2008 19:27:34 +0000 (20:27 +0100)]
* Add ->max_sectors field to struct ide_port_info to allow host drivers
  to specify value used for hwif->rqsize (if smaller than the default).

* Convert pdc202xx_old to use ->max_sectors and remove no longer needed
  IDE_HFLAG_RQSIZE_256 flag.

There should be no functional changes caused by this patch.

Acked-by: Sergei Shtyltov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

drivers/ide/ide-probe.c
drivers/ide/pdc202xx_old.c
include/linux/ide.h

index 81f61e8..f76c22c 100644 (file)
@@ -1442,8 +1442,8 @@ static void ide_init_port(ide_hwif_t *hwif, unsigned int port,
                        hwif->mate->serialized = hwif->serialized = 1;
        }
 
-       if (d->host_flags & IDE_HFLAG_RQSIZE_256)
-               hwif->rqsize = 256;
+       if (d->max_sectors)
+               hwif->rqsize = d->max_sectors;
 
        /* call chipset specific routine for each enabled port */
        if (d->init_hwif)
index 799557c..624e62e 100644 (file)
@@ -350,16 +350,17 @@ static const struct ide_dma_ops pdc2026x_dma_ops = {
        .dma_timeout            = pdc202xx_dma_timeout,
 };
 
-#define DECLARE_PDC2026X_DEV(udma, extra_flags) \
+#define DECLARE_PDC2026X_DEV(udma, sectors) \
        { \
                .name           = DRV_NAME, \
                .init_chipset   = init_chipset_pdc202xx, \
                .port_ops       = &pdc2026x_port_ops, \
                .dma_ops        = &pdc2026x_dma_ops, \
-               .host_flags     = IDE_HFLAGS_PDC202XX | extra_flags, \
+               .host_flags     = IDE_HFLAGS_PDC202XX, \
                .pio_mask       = ATA_PIO4, \
                .mwdma_mask     = ATA_MWDMA2, \
                .udma_mask      = udma, \
+               .max_sectors    = sectors, \
        }
 
 static const struct ide_port_info pdc202xx_chipsets[] __devinitdata = {
@@ -376,8 +377,8 @@ static const struct ide_port_info pdc202xx_chipsets[] __devinitdata = {
 
        /* 1: PDC2026{2,3} */
        DECLARE_PDC2026X_DEV(ATA_UDMA4, 0),
-       /* 2: PDC2026{5,7} */
-       DECLARE_PDC2026X_DEV(ATA_UDMA5, IDE_HFLAG_RQSIZE_256),
+       /* 2: PDC2026{5,7}: UDMA5, limit LBA48 requests to 256 sectors */
+       DECLARE_PDC2026X_DEV(ATA_UDMA5, 256),
 };
 
 /**
index fc1a966..2574dda 100644 (file)
@@ -1372,8 +1372,6 @@ enum {
        IDE_HFLAG_LEGACY_IRQS           = (1 << 21),
        /* force use of legacy IRQs */
        IDE_HFLAG_FORCE_LEGACY_IRQS     = (1 << 22),
-       /* limit LBA48 requests to 256 sectors */
-       IDE_HFLAG_RQSIZE_256            = (1 << 23),
        /* use 32-bit I/O ops */
        IDE_HFLAG_IO_32BIT              = (1 << 24),
        /* unmask IRQs */
@@ -1411,6 +1409,9 @@ struct ide_port_info {
 
        ide_pci_enablebit_t     enablebits[2];
        hwif_chipset_t          chipset;
+
+       u16                     max_sectors;    /* if < than the default one */
+
        u32                     host_flags;
        u8                      pio_mask;
        u8                      swdma_mask;