50
50
//BYTE SectBuf[SECTSIZE];
51
BYTE WorkBuf[SECTSIZE];
52
BYTE Redundant[REDTSIZE];
53
BYTE WorkRedund[REDTSIZE];
51
static BYTE WorkBuf[SECTSIZE];
52
static BYTE Redundant[REDTSIZE];
53
static BYTE WorkRedund[REDTSIZE];
54
54
//WORD Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK];
55
WORD *Log2Phy[MAX_ZONENUM]; // 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK];
56
BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM/8];
57
WORD AssignStart[MAX_ZONENUM];
55
static WORD *Log2Phy[MAX_ZONENUM]; // 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK];
56
static BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM/8];
57
static WORD AssignStart[MAX_ZONENUM];
63
extern struct SSFDCTYPE Ssfdc;
64
extern struct ADDRESS Media;
65
extern struct CIS_AREA CisArea;
68
BYTE BitData[] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 } ;
61
static DWORD SectCopyMode;
64
static BYTE BitData[] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 } ;
69
65
#define Set_D_Bit(a,b) (a[(BYTE)((b)/8)]|= BitData[(b)%8])
70
66
#define Clr_D_Bit(a,b) (a[(BYTE)((b)/8)]&=~BitData[(b)%8])
71
67
#define Chk_D_Bit(a,b) (a[(BYTE)((b)/8)] & BitData[(b)%8])
73
69
//extern PBYTE SMHostAddr;
74
extern BYTE IsSSFDCCompliance;
75
extern BYTE IsXDCompliance;
70
BYTE IsSSFDCCompliance;
79
////Power Controll & Media Exist Check Function
75
////Power Control & Media Exist Check Function
80
76
////----- Init_D_SmartMedia() --------------------------------------------
81
77
//int Init_D_SmartMedia(void)
105
printk("SM_FreeMem start\n");
101
pr_info("SM_FreeMem start\n");
106
102
for (i=0; i<MAX_ZONENUM; i++)
108
104
if (Log2Phy[i]!=NULL)
110
printk("Free Zone = %x, Addr = %p\n", i, Log2Phy[i]);
106
pr_info("Free Zone = %x, Addr = %p\n", i, Log2Phy[i]);
111
107
kfree(Log2Phy[i]);
112
108
Log2Phy[i] = NULL;
198
194
//SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc;
199
195
//ADDRESS_T bb = (ADDRESS_T) &Media;
201
//printk("Media_D_CopySector !!!\n");
197
/* pr_info("Media_D_CopySector !!!\n"); */
202
198
if (Conv_D_MediaAddr(us, start))
256
252
if (Media.PhyBlock==NO_ASSIGN)
258
254
Media.PhyBlock=WriteBlock;
262
258
Clr_D_Bit(Assign[Media.Zone],Media.PhyBlock);
263
259
Media.PhyBlock=WriteBlock;
268
264
//----- Media_D_WriteSector() ------------------------------------------
572
568
// default: *c= 0; *h= 0; *s= 0; ErrCode = ERR_NoSmartMedia; return(ERROR);
571
// return(SMSUCCESS);
578
////Power Controll & Media Exist Check Subroutine
574
////Power Control & Media Exist Check Subroutine
579
575
////----- Initialize_D_Media() -------------------------------------------
580
576
//void Initialize_D_Media(void)
650
646
// return(ERROR);
649
// return(SMSUCCESS);
656
652
//SmartMedia Physical Format Test Subroutine
657
653
//----- Check_D_MediaFmt() ---------------------------------------------
658
654
int Check_D_MediaFmt(struct us_data *us)
660
printk("Check_D_MediaFmt\n");
656
pr_info("Check_D_MediaFmt\n");
661
657
//ULONG i,j, result=FALSE, zone,block;
663
659
//usleep(56*1024);
664
660
if (!MediaChange)
667
663
MediaChange = ERROR;
668
664
SectCopyMode = COMPLETED;
735
731
// return(ERROR);
734
// return(SMSUCCESS);
741
//SmartMedia Physical Address Controll Subroutine
737
//SmartMedia Physical Address Control Subroutine
742
738
//----- Conv_D_MediaAddr() ---------------------------------------------
743
739
int Conv_D_MediaAddr(struct us_data *us, DWORD addr)
1334
1330
//SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc;
1335
1331
//ADDRESS_T bb = (ADDRESS_T) &Media;
1337
//printk("Copy_D_PhyOneSect --- Secotr = %x\n", Media.Sector);
1333
/* pr_info("Copy_D_PhyOneSect --- Secotr = %x\n", Media.Sector); */
1338
1334
if (ReadBlock!=NO_ASSIGN)
1340
1336
Media.PhyBlock=ReadBlock;
1355
1351
if (Check_D_DataStatus(WorkRedund))
1356
1352
{ err=ERROR; break; }
1357
1353
if (!Check_D_ReadError(WorkRedund))
1358
{ err=SUCCESS; break; }
1354
{ err=SMSUCCESS; break; }
1359
1355
if (!Check_D_Correct(WorkBuf,WorkRedund))
1360
{ err=SUCCESS; break; }
1356
{ err=SMSUCCESS; break; }
1363
1359
SectCopyMode=REQ_FAIL;
1424
1420
{ ErrCode = ERR_DataStatus; return(ERROR); }
1426
1422
if (!Check_D_ReadError(Redundant))
1429
1425
if (!Check_D_Correct(buf,Redundant))
1430
1426
{ ErrCode = ERR_CorReadErr; return(ERROR); }
1620
1616
if (Log2Phy[Media.Zone]==NULL)
1622
1618
Log2Phy[Media.Zone] = kmalloc(MAX_LOGBLOCK*sizeof(WORD), GFP_KERNEL);
1623
//printk("ExAllocatePool Zone = %x, Addr = %x\n", Media.Zone, Log2Phy[Media.Zone]);
1619
/* pr_info("ExAllocatePool Zone = %x, Addr = %x\n",
1620
Media.Zone, Log2Phy[Media.Zone]); */
1624
1621
if (Log2Phy[Media.Zone]==NULL)
1630
1627
//for(Media.Zone=0; Media.Zone<MAX_ZONENUM; Media.Zone++)
1631
1628
//for(Media.Zone=0; Media.Zone<Ssfdc.MaxZones; Media.Zone++)
1633
//printk("Make_D_LogTable --- MediaZone = 0x%x\n", Media.Zone);
1630
/* pr_info("Make_D_LogTable --- MediaZone = 0x%x\n",
1634
1632
for(Media.LogBlock=0; Media.LogBlock<Ssfdc.MaxLogBlocks; Media.LogBlock++)
1635
1633
Log2Phy[Media.Zone][Media.LogBlock]=NO_ASSIGN;