Thread (51 messages) 51 messages, 2 authors, 2009-03-04

Re: [PATCH 01/18] ide: add ->read_sff_dma_status method

From: Sergei Shtylyov <hidden>
Date: 2008-09-07 22:27:22
Also in: lkml

Hello.

Bartlomiej Zolnierkiewicz wrote:
quoted
quoted
quoted
quoted
static void ide_tf_load(ide_drive_t *drive, ide_task_t *task)
{
	ide_hwif_t *hwif = drive->hwif;
@@ -323,6 +331,8 @@ static void ata_output_data(ide_drive_t 
void default_hwif_transport(ide_hwif_t *hwif)
{
+	hwif->read_sff_dma_status = ide_read_sff_dma_status;
+
	hwif->tf_load	  = ide_tf_load;
	hwif->tf_read	  = ide_tf_read;
          
   I also didn't understand the motivation behind putting this method 
together with the transport operations... IMO, DMA programming interface 
hardly has anything to do with transporting the data over IDE bus.
        
The motivation was that hwif->dma_ops is not available yet when
->read_sff_dma_status is used in ide_pci_check_simplex().
      
However I agree that it should somehow find its way into ->dma_ops
(as usual patches are stongly preffered :).
      
    Unless I'm missing something changing the place where hwif->dma_ops is 
initialized to sff_dma_ops (along the lines it was changed for hwif->dma_base) 
seems pretty trivial, so I wonder why you didn't do it in the same patch...
    
   Ah, I forgot for a moment that there were two patches and it would 
have make no sense to do that in the patch that factored out 
ide_pci_check_simplex()... And then tre was a patch introducing 'struct 
ide_tp_ops' which incorporated the read_sff_dma_status() method.
Indeed, it should be trivial now, one just needs to be careful to:

* move 'if (d->dma_ops) ...' from ide_init_port() into
  ->init_dma/ide_hwif_setup_dma()

* unset ->dma_ops on ->init_dma/ide_hwif_setup_dma() failures
  
   Sure.
I guess I overlooked it ATM of making the patch (or the code evolved
greatly in the meantime)...
  
   I think I understand now: it's sticking read_sff_dma_status() method 
into 'struct ide_tp_ops' that was a wrong move that's worth undoing (by 
putting it where it really belongs).
[ It is really time consuming and difficult to recall the every small
  detail of every patch after few months (the patch was posted 10 weeks
  
   Heh, as if it wasn't time consuming to untange that after a few 
months (when I'm suposed to spend time elsewhere :-)...
  ago and merged 6 weeks ago)...  The most efficient way of handling
  such issues upon discovery is with sending patches... ]
  
    Sigh, I'll see what I can do in my currently very limieted time...
Thanks,
Bart
  
MBR, Sergei

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help