scc_pata: add ->{in,out}put_data methods (take 2)
PATCH 1/1 scc_pata: add ->{in,out}put_data methods (take 2)
v2:
* Update ->{in,out}_data methods to take 'struct request *rq' argument (thanks to Stephen Rothwell for catching it).
There should be no functional changes caused by this patch.
Cc Kou Ishizaki <[email protected]>
Cc Akira Iguchi <[email protected]>
Cc Stephen Rothwell <[email protected]>
Cc Sergei Shtylyov <[email protected]>
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
---
replacement patch for the one in the IDE tree
drivers/ide/pci/scc_pata.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)
drivers/ide/pci/scc_pata.c +35 -0
@@ -612,6 +612,38 @@ static int __devinit init_setup_scc(strureturn rc; } +static void scc_input_data (ide_drive_t *drive,struct request *rq, +void *buf,unsigned int len) +{ +unsigned long data_addr = drive->hwif->io_ports.data_addr; + + len++; + +if (drive->io_32bit) { +scc_ide_insl (data_addr, buf, len /4 ); + +if ((len &3 ) >=2 ) +scc_ide_insw (data_addr, (u8 *)buf + (len & ~3 ),1 ); + }else +scc_ide_insw (data_addr, buf, len /2 ); +} + +static void scc_output_data (ide_drive_t *drive,struct request *rq, +void *buf,unsigned int len) +{ +unsigned long data_addr = drive->hwif->io_ports.data_addr; + + len++; + +if (drive->io_32bit) { +scc_ide_outsl (data_addr, buf, len /4 ); + +if ((len &3 ) >=2 ) +scc_ide_outsw (data_addr, (u8 *)buf + (len & ~3 ),1 ); + }else +scc_ide_outsw (data_addr, buf, len /2 ); +} +/** * init_mmio_iops_scc - set up the iops for MMIO * @hwif: interface to set up
@@ -626,6 +658,9 @@ static void __devinit init_mmio_iops_sccide_set_hwifdata (hwif, ports); + hwif->input_data = scc_input_data; + hwif->output_data = scc_output_data; + hwif->INB = scc_ide_inb; hwif->INW = scc_ide_inw; hwif->INSW = scc_ide_insw;