1 #include <linux/slab.h>
40 static BYTE EccBuf[6];
61 if (*redundant++ != 0xFF)
72 if (*redundant == 0xFF)
87 if (*redundant == 0xFF)
110 if ((addr1 & 0xF000) == 0x1000) {
111 Media.LogBlock = (addr1 & 0x0FFF) / 2;
118 if ((addr1 & 0xF000) == 0x1000)
120 Media.LogBlock = (addr1 & 0x0FFF) / 2;
124 if ((addr2 & 0xF000) == 0x1000)
126 Media.LogBlock = (addr2 & 0x0FFF) / 2;
139 *(redundant + i) = 0xFF;
149 addr =
Media.LogBlock*2 + 0x1000;
212 printk(
"Load SM RW Code Fail !!\n");
263 printk(
"Load SM RW Code Fail !!\n");
311 WORD ReadAddr, WriteAddr;
315 printk(
"Load SM RW Code Fail !!\n");
320 ReadAddr = ReadAddr*(
WORD)
Ssfdc.MaxSectors;
322 WriteAddr = WriteAddr*(
WORD)
Ssfdc.MaxSectors;
332 bcb->
CDB[6] = (
BYTE)(WriteAddr / 0x0100);
340 bcb->
CDB[3] = (
BYTE)(ReadAddr / 0x0100);
361 printk(
"Load SM RW Code Fail !!\n");
399 printk(
"Load SM RW Code Fail !!\n");
434 printk(
"Load SM RW Code Fail !!\n");
473 printk(
"Load SM RW Code Fail !!\n");
517 Ssfdc.MaxBlocks = 256;
518 Ssfdc.MaxLogBlocks = 250;
519 Ssfdc.MaxSectors = 8;
525 Ssfdc.MaxBlocks = 512;
526 Ssfdc.MaxLogBlocks = 500;
527 Ssfdc.MaxSectors = 8;
533 Ssfdc.MaxBlocks = 512;
534 Ssfdc.MaxLogBlocks = 500;
535 Ssfdc.MaxSectors = 16;
541 Ssfdc.MaxBlocks = 1024;
542 Ssfdc.MaxLogBlocks = 1000;
543 Ssfdc.MaxSectors = 16;
549 Ssfdc.MaxBlocks = 1024;
550 Ssfdc.MaxLogBlocks = 1000;
551 Ssfdc.MaxSectors = 32;
557 Ssfdc.MaxBlocks = 1024;
558 Ssfdc.MaxLogBlocks = 1000;
559 Ssfdc.MaxSectors = 32;
565 Ssfdc.MaxBlocks = 1024;
566 Ssfdc.MaxLogBlocks = 1000;
567 Ssfdc.MaxSectors = 32;
573 Ssfdc.MaxBlocks = 1024;
574 Ssfdc.MaxLogBlocks = 1000;
575 Ssfdc.MaxSectors = 32;
581 Ssfdc.MaxBlocks = 1024;
582 Ssfdc.MaxLogBlocks = 1000;
583 Ssfdc.MaxSectors = 32;
589 Ssfdc.MaxBlocks = 1024;
590 Ssfdc.MaxLogBlocks = 1000;
591 Ssfdc.MaxSectors = 32;
597 Ssfdc.MaxBlocks = 1024;
598 Ssfdc.MaxLogBlocks = 1000;
599 Ssfdc.MaxSectors = 32;
604 Ssfdc.MaxZones = 128;
605 Ssfdc.MaxBlocks = 1024;
606 Ssfdc.MaxLogBlocks = 1000;
607 Ssfdc.MaxSectors = 32;
662 BYTE cis[] = {0x01, 0x03, 0xD9, 0x01, 0xFF, 0x18, 0x02,
665 int cis_len =
sizeof(cis);
670 if (!
memcmp(redundant + 0x0D, EccBuf, 3))
671 return memcmp(buf, cis, cis_len);
674 return memcmp(buf, cis, cis_len);
677 if (!
memcmp(redundant + 0x08, EccBuf + 0x03, 3))
678 return memcmp(buf, cis, cis_len);
681 return memcmp(buf, cis, cis_len);