diff options
| author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 19:55:56 +0200 | 
|---|---|---|
| committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 19:55:56 +0200 | 
| commit | 374e042c3e767ac2e5a40b78529220e0b3de793c (patch) | |
| tree | 433d258f6da9783f0cb34234af9c359353f531fe /drivers/ide/legacy/q40ide.c | |
| parent | d6276b5f5cc7508124de291f3ed59c6945c17ae7 (diff) | |
| download | olio-linux-3.10-374e042c3e767ac2e5a40b78529220e0b3de793c.tar.xz olio-linux-3.10-374e042c3e767ac2e5a40b78529220e0b3de793c.zip  | |
ide: add struct ide_tp_ops (take 2)
* Add struct ide_tp_ops for transport methods.
* Add 'const struct ide_tp_ops *tp_ops' to struct ide_port_info
  and ide_hwif_t.
* Set the default hwif->tp_ops in ide_init_port_data().
* Set host driver specific hwif->tp_ops in ide_init_port().
* Export ide_exec_command(), ide_read_status(), ide_read_altstatus(),
  ide_read_sff_dma_status(), ide_set_irq(), ide_tf_{load,read}()
  and ata_{in,out}put_data().
* Convert host drivers and core code to use struct ide_tp_ops.
* Remove no longer needed default_hwif_transport().
* Cleanup ide_hwif_t from methods that are now in struct ide_tp_ops.
While at it:
* Use struct ide_port_info in falconide.c and q40ide.c.
* Rename ata_{in,out}put_data() to ide_{in,out}put_data().
v2:
* Fix missing convertion in ns87415.c.
There should be no functional changes caused by this patch.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/legacy/q40ide.c')
| -rw-r--r-- | drivers/ide/legacy/q40ide.c | 27 | 
1 files changed, 22 insertions, 5 deletions
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c index fcb04b8b023..2dc306f852a 100644 --- a/drivers/ide/legacy/q40ide.c +++ b/drivers/ide/legacy/q40ide.c @@ -96,6 +96,27 @@ static void q40ide_output_data(ide_drive_t *drive, struct request *rq,  	outsw_swapw(data_addr, buf, (len + 1) / 2);  } +/* Q40 has a byte-swapped IDE interface */ +static const struct ide_tp_ops q40ide_tp_ops = { +	.exec_command		= ide_exec_command, +	.read_status		= ide_read_status, +	.read_altstatus		= ide_read_altstatus, +	.read_sff_dma_status	= ide_read_sff_dma_status, + +	.set_irq		= ide_set_irq, + +	.tf_load		= ide_tf_load, +	.tf_read		= ide_tf_read, + +	.input_data		= q40ide_input_data, +	.output_data		= q40ide_output_data, +}; + +static const struct ide_port_info q40ide_port_info = { +	.tp_ops			= &q40ide_tp_ops, +	.host_flags		= IDE_HFLAG_NO_DMA, +}; +  /*    * the static array is needed to have the name reported in /proc/ioports,   * hwif->name unfortunately isn't available yet @@ -141,16 +162,12 @@ static int __init q40ide_init(void)  	if (hwif) {  		hwif->chipset = ide_generic; -		/* Q40 has a byte-swapped IDE interface */ -		hwif->input_data  = q40ide_input_data; -		hwif->output_data = q40ide_output_data; -  		hws[i] = &hw[i];  		idx[i] = hwif->index;  	}      } -    ide_device_add(idx, NULL, hws); +    ide_device_add(idx, &q40ide_port_info, hws);      return 0;  }  |