Messages in this thread | | | Date | Fri, 11 Apr 2008 17:11:10 +0400 | From | Sergei Shtylyov <> | Subject | Re: [PATCH 3/4] ide: add struct ide_dma_ops |
| |
Hello.
Bartlomiej Zolnierkiewicz wrote:
>> Now where is the code which selects the correct dma_ops for the >>> HPT36x/370/372/372N chip with device ID 4 I'm asking you? :-)
> fixed
Not actually... :-/
> From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> > Subject: [PATCH] ide: add struct ide_dma_ops (take 2)
> Add struct ide_dma_ops and convert core code + drivers to use it.
> While at it:
> * Drop "ide_" prefix from ->ide_dma_end and ->ide_dma_test_irq methods.
> * Drop "ide_" "infixes" from DMA methods.
> * au1xxx-ide.c: > - use auide_dma_{test_irq,end}() directly in auide_dma_timeout()
> * pdc202xx_old.c: > - drop "old_" "infixes" from DMA methods
> * siimage.c: > - add siimage_dma_test_irq() helper > - print SATA warning in siimage_init_one()
> * Remove no longer needed ->init_hwif implementations.
> v2: > * Changes based on review from Sergei: > - s/siimage_ide_dma_test_irq/siimage_dma_test_irq/ > - s/drive->hwif/hwif/ in idefloppy_pc_intr(). > - fix patch description w.r.t. au1xxx-ide changes > - fix au1xxx-ide build > - fix naming for cmd64*_dma_ops > - drop "ide_" and "old_" infixes > - s/hpt3xxx_dma_ops/hpt37x_dma_ops/ > - s/hpt370x_dma_ops/hpt370_dma_ops/ > - use correct DMA ops for HPT302/N, HPT371/N and HPT374 > - s/it821x_smart_dma_ops/it821x_pass_through_dma_ops/
> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Unfortunately, you'll have to try one more... ;-)
> Index: b/drivers/ide/pci/hpt366.c > =================================================================== > --- a/drivers/ide/pci/hpt366.c > +++ b/drivers/ide/pci/hpt366.c [...] > @@ -1428,6 +1415,21 @@ static const struct ide_port_ops hpt3xx_ > .cable_detect = hpt3xx_cable_detect, > }; > > +static struct ide_dma_ops hpt37x_dma_ops = { > + .dma_end = hpt374_dma_end, > + .dma_test_irq = hpt374_dma_test_irq, > +}; > + > +static struct ide_dma_ops hpt370_dma_ops = { > + .dma_start = hpt370_dma_start, > + .dma_end = hpt370_dma_end, > + .dma_timeout = hpt370_dma_timeout, > +}; > + > +static struct ide_dma_ops hpt36x_dma_ops = { > + .dma_lost_irq = hpt366_dma_lost_irq, > +}; > + > static const struct ide_port_info hpt366_chipsets[] __devinitdata = { > { /* 0 */ > .name = "HPT36x", > @@ -1442,6 +1444,7 @@ static const struct ide_port_info hpt366 > */ > .enablebits = {{0x50,0x10,0x10}, {0x54,0x04,0x04}}, > .port_ops = &hpt3xx_port_ops, > + .dma_ops = &hpt36x_dma_ops, > .host_flags = IDE_HFLAGS_HPT3XX | IDE_HFLAG_SINGLE, > .pio_mask = ATA_PIO4, > .mwdma_mask = ATA_MWDMA2,
I'm still not seeing the code to deals with the PCI device ID 4 which may be HPT36x, or HPT370, or HPT372[N] depending on revision -- you're always giving hpt36x_dma_ops to it...
> @@ -1483,6 +1489,7 @@ static const struct ide_port_info hpt366 > .enablebits = {{0x50,0x04,0x04}, {0x54,0x04,0x04}}, > .udma_mask = ATA_UDMA5, > .port_ops = &hpt3xx_port_ops, > + .dma_ops = &hpt370_dma_ops,
Wrong -- HPT374 should have hpt37x_dma_ops...
MBR, Sergei
| |