Skip to content

Commit 99c40a7

Browse files
Ondrej ZaryDamien Le Moal
authored andcommitted
ata: pata_parport-bpck6: merge ppc6_wr_data_blk into bpck6_write_block
ppc6_wr_data_blk is only called by bpck6_write_block. Merge ppc6_wr_data_blk into bpck6_write_block. Signed-off-by: Ondrej Zary <linux@zary.sk> Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
1 parent db24d74 commit 99c40a7

2 files changed

Lines changed: 57 additions & 92 deletions

File tree

drivers/ata/pata_parport/bpck6.c

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,70 @@ static void bpck6_write_regr(struct pi_adapter *pi, int cont, int reg, int val)
3737

3838
static void bpck6_write_block(struct pi_adapter *pi, char *buf, int len)
3939
{
40+
u8 this, last;
41+
4042
ppc6_send_cmd(pi, REG_BLKSIZE | ACCESS_REG | ACCESS_WRITE);
4143
ppc6_wr_data_byte(pi, (u8)len);
4244
ppc6_wr_data_byte(pi, (u8)(len >> 8));
4345
ppc6_wr_data_byte(pi, 0);
4446

4547
ppc6_send_cmd(pi, CMD_PREFIX_SET | PREFIX_IO16 | PREFIX_BLK);
4648
ppc6_send_cmd(pi, ATA_REG_DATA | ACCESS_PORT | ACCESS_WRITE);
47-
ppc6_wr_data_blk(pi, buf, len);
49+
50+
switch (mode_map[pi->mode]) {
51+
case PPCMODE_UNI_SW:
52+
case PPCMODE_BI_SW:
53+
while (len--) {
54+
parport_write_data(pi->pardev->port, *buf++);
55+
parport_frob_control(pi->pardev->port, 0,
56+
PARPORT_CONTROL_INIT);
57+
}
58+
break;
59+
case PPCMODE_UNI_FW:
60+
case PPCMODE_BI_FW:
61+
ppc6_send_cmd(pi, CMD_PREFIX_SET | PREFIX_FASTWR);
62+
63+
parport_frob_control(pi->pardev->port, PARPORT_CONTROL_STROBE,
64+
PARPORT_CONTROL_STROBE);
65+
66+
last = *buf;
67+
68+
parport_write_data(pi->pardev->port, last);
69+
70+
while (len) {
71+
this = *buf++;
72+
len--;
73+
74+
if (this == last) {
75+
parport_frob_control(pi->pardev->port, 0,
76+
PARPORT_CONTROL_INIT);
77+
} else {
78+
parport_write_data(pi->pardev->port, this);
79+
last = this;
80+
}
81+
}
82+
83+
parport_frob_control(pi->pardev->port, PARPORT_CONTROL_STROBE,
84+
0);
85+
ppc6_send_cmd(pi, CMD_PREFIX_RESET | PREFIX_FASTWR);
86+
break;
87+
case PPCMODE_EPP_BYTE:
88+
pi->pardev->port->ops->epp_write_data(pi->pardev->port, buf,
89+
len, PARPORT_EPP_FAST_8);
90+
ppc6_wait_for_fifo(pi);
91+
break;
92+
case PPCMODE_EPP_WORD:
93+
pi->pardev->port->ops->epp_write_data(pi->pardev->port, buf,
94+
len, PARPORT_EPP_FAST_16);
95+
ppc6_wait_for_fifo(pi);
96+
break;
97+
case PPCMODE_EPP_DWORD:
98+
pi->pardev->port->ops->epp_write_data(pi->pardev->port, buf,
99+
len, PARPORT_EPP_FAST_32);
100+
ppc6_wait_for_fifo(pi);
101+
break;
102+
}
103+
48104
ppc6_send_cmd(pi, CMD_PREFIX_RESET | PREFIX_IO16 | PREFIX_BLK);
49105
}
50106

drivers/ata/pata_parport/ppc6lnx.c

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ static void ppc6_send_cmd(struct pi_adapter *pi, u8 cmd);
7373
static void ppc6_wr_data_byte(struct pi_adapter *pi, u8 data);
7474
static u8 ppc6_rd_data_byte(struct pi_adapter *pi);
7575
static void ppc6_wait_for_fifo(struct pi_adapter *pi);
76-
static void ppc6_wr_data_blk(struct pi_adapter *pi, u8 *data, long count);
7776
static void ppc6_wr_extout(struct pi_adapter *pi, u8 regdata);
7877
static int ppc6_open(struct pi_adapter *pi);
7978

@@ -296,96 +295,6 @@ static void ppc6_wait_for_fifo(struct pi_adapter *pi)
296295

297296
//***************************************************************************
298297

299-
static void ppc6_wr_data_blk(struct pi_adapter *pi, u8 *data, long count)
300-
{
301-
switch (mode_map[pi->mode])
302-
{
303-
case PPCMODE_UNI_SW :
304-
case PPCMODE_BI_SW :
305-
{
306-
while(count--)
307-
{
308-
parport_write_data(pi->pardev->port, *data++);
309-
310-
parport_frob_control(pi->pardev->port, 0, PARPORT_CONTROL_INIT);
311-
}
312-
313-
break;
314-
}
315-
316-
case PPCMODE_UNI_FW :
317-
case PPCMODE_BI_FW :
318-
{
319-
u8 this, last;
320-
321-
ppc6_send_cmd(pi, CMD_PREFIX_SET | PREFIX_FASTWR);
322-
323-
parport_frob_control(pi->pardev->port,
324-
PARPORT_CONTROL_STROBE, PARPORT_CONTROL_STROBE);
325-
326-
last = *data;
327-
328-
parport_write_data(pi->pardev->port, last);
329-
330-
while(count)
331-
{
332-
this = *data++;
333-
count--;
334-
335-
if (this == last)
336-
{
337-
parport_frob_control(pi->pardev->port,
338-
0, PARPORT_CONTROL_INIT);
339-
}
340-
else
341-
{
342-
parport_write_data(pi->pardev->port, this);
343-
344-
last = this;
345-
}
346-
}
347-
348-
parport_frob_control(pi->pardev->port, PARPORT_CONTROL_STROBE, 0);
349-
350-
ppc6_send_cmd(pi, CMD_PREFIX_RESET | PREFIX_FASTWR);
351-
352-
break;
353-
}
354-
355-
case PPCMODE_EPP_BYTE :
356-
{
357-
pi->pardev->port->ops->epp_write_data(pi->pardev->port,
358-
data, count, PARPORT_EPP_FAST_8);
359-
360-
ppc6_wait_for_fifo(pi);
361-
362-
break;
363-
}
364-
365-
case PPCMODE_EPP_WORD :
366-
{
367-
pi->pardev->port->ops->epp_write_data(pi->pardev->port,
368-
data, count, PARPORT_EPP_FAST_16);
369-
370-
ppc6_wait_for_fifo(pi);
371-
372-
break;
373-
}
374-
375-
case PPCMODE_EPP_DWORD :
376-
{
377-
pi->pardev->port->ops->epp_write_data(pi->pardev->port,
378-
data, count, PARPORT_EPP_FAST_32);
379-
380-
ppc6_wait_for_fifo(pi);
381-
382-
break;
383-
}
384-
}
385-
}
386-
387-
//***************************************************************************
388-
389298
static void ppc6_wr_extout(struct pi_adapter *pi, u8 regdata)
390299
{
391300
ppc6_send_cmd(pi, REG_VERSION | ACCESS_REG | ACCESS_WRITE);

0 commit comments

Comments
 (0)