|
@@ -259,6 +259,12 @@ static int tx4939ide_build_dmatable(ide_drive_t *drive, struct request *rq)
|
|
bcount = 0x10000 - (cur_addr & 0xffff);
|
|
bcount = 0x10000 - (cur_addr & 0xffff);
|
|
if (bcount > cur_len)
|
|
if (bcount > cur_len)
|
|
bcount = cur_len;
|
|
bcount = cur_len;
|
|
|
|
+ /*
|
|
|
|
+ * This workaround for zero count seems required.
|
|
|
|
+ * (standard ide_build_dmatable do it too)
|
|
|
|
+ */
|
|
|
|
+ if ((bcount & 0xffff) == 0x0000)
|
|
|
|
+ bcount = 0x8000;
|
|
*table++ = bcount & 0xffff;
|
|
*table++ = bcount & 0xffff;
|
|
*table++ = cur_addr;
|
|
*table++ = cur_addr;
|
|
cur_addr += bcount;
|
|
cur_addr += bcount;
|