]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - drivers/staging/keucr/smilmain.c
Merge branches 'fixes', 'pgt-next' and 'versatile' into devel
[mirror_ubuntu-artful-kernel.git] / drivers / staging / keucr / smilmain.c
CommitLineData
126bb03b
AC
1#include <linux/slab.h>
2#include "usb.h"
3#include "scsiglue.h"
4#include "smcommon.h"
5#include "smil.h"
6
7int Check_D_LogCHS (WORD *,BYTE *,BYTE *);
8void Initialize_D_Media (void);
9void PowerOff_D_Media (void);
10int Check_D_MediaPower (void);
11int Check_D_MediaExist (void);
12int Check_D_MediaWP (void);
13int Check_D_MediaFmt (struct us_data *);
14int Check_D_MediaFmtForEraseAll (struct us_data *);
15int Conv_D_MediaAddr (struct us_data *, DWORD);
16int Inc_D_MediaAddr (struct us_data *);
17int Check_D_FirstSect (void);
18int Check_D_LastSect (void);
19int Media_D_ReadOneSect (struct us_data *, WORD, BYTE *);
20int Media_D_WriteOneSect (struct us_data *, WORD, BYTE *);
21int Media_D_CopyBlockHead (struct us_data *);
22int Media_D_CopyBlockTail (struct us_data *);
23int Media_D_EraseOneBlock (void);
24int Media_D_EraseAllBlock (void);
25
26int Copy_D_BlockAll (struct us_data *, DWORD);
27int Copy_D_BlockHead (struct us_data *);
28int Copy_D_BlockTail (struct us_data *);
29int Reassign_D_BlockHead (struct us_data *);
30
31int Assign_D_WriteBlock (void);
32int Release_D_ReadBlock (struct us_data *);
33int Release_D_WriteBlock (struct us_data *);
34int Release_D_CopySector (struct us_data *);
35
36int Copy_D_PhyOneSect (struct us_data *);
37int Read_D_PhyOneSect (struct us_data *, WORD, BYTE *);
38int Write_D_PhyOneSect (struct us_data *, WORD, BYTE *);
39int Erase_D_PhyOneBlock (struct us_data *);
40
41int Set_D_PhyFmtValue (struct us_data *);
42int Search_D_CIS (struct us_data *);
43int Make_D_LogTable (struct us_data *);
44void Check_D_BlockIsFull (void);
45
46int MarkFail_D_PhyOneBlock (struct us_data *);
47
48DWORD ErrXDCode;
49DWORD ErrCode;
50//BYTE SectBuf[SECTSIZE];
51BYTE WorkBuf[SECTSIZE];
52BYTE Redundant[REDTSIZE];
53BYTE WorkRedund[REDTSIZE];
54//WORD Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK];
55WORD *Log2Phy[MAX_ZONENUM]; // 128 x 1000, Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK];
56BYTE Assign[MAX_ZONENUM][MAX_BLOCKNUM/8];
57WORD AssignStart[MAX_ZONENUM];
58WORD ReadBlock;
59WORD WriteBlock;
60DWORD MediaChange;
61DWORD SectCopyMode;
62
63extern struct SSFDCTYPE Ssfdc;
64extern struct ADDRESS Media;
65extern struct CIS_AREA CisArea;
66
67//BIT Controll Macro
68BYTE BitData[] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 } ;
69#define Set_D_Bit(a,b) (a[(BYTE)((b)/8)]|= BitData[(b)%8])
70#define Clr_D_Bit(a,b) (a[(BYTE)((b)/8)]&=~BitData[(b)%8])
71#define Chk_D_Bit(a,b) (a[(BYTE)((b)/8)] & BitData[(b)%8])
72
73//extern PBYTE SMHostAddr;
74extern BYTE IsSSFDCCompliance;
75extern BYTE IsXDCompliance;
76
77
78//
79////Power Controll & Media Exist Check Function
80////----- Init_D_SmartMedia() --------------------------------------------
81//int Init_D_SmartMedia(void)
82//{
83// int i;
84//
85// EMCR_Print("Init_D_SmartMedia start\n");
86// for (i=0; i<MAX_ZONENUM; i++)
87// {
88// if (Log2Phy[i]!=NULL)
89// {
90// EMCR_Print("ExFreePool Zone = %x, Addr = %x\n", i, Log2Phy[i]);
91// ExFreePool(Log2Phy[i]);
92// Log2Phy[i] = NULL;
93// }
94// }
95//
96// Initialize_D_Media();
97// return(NO_ERROR);
98//}
99
100//----- SM_FreeMem() -------------------------------------------------
101int SM_FreeMem(void)
102{
103 int i;
104
105 printk("SM_FreeMem start\n");
106 for (i=0; i<MAX_ZONENUM; i++)
107 {
108 if (Log2Phy[i]!=NULL)
109 {
110 printk("Free Zone = %x, Addr = %p\n", i, Log2Phy[i]);
111 kfree(Log2Phy[i]);
112 Log2Phy[i] = NULL;
113 }
114 }
115 return(NO_ERROR);
116}
117
118////----- Pwoff_D_SmartMedia() -------------------------------------------
119//int Pwoff_D_SmartMedia(void)
120//{
121// PowerOff_D_Media();
122// return(NO_ERROR);
123//}
124//
125////----- Check_D_SmartMedia() -------------------------------------------
126//int Check_D_SmartMedia(void)
127//{
128// if (Check_D_MediaExist())
129// return(ErrCode);
130//
131// return(NO_ERROR);
132//}
133//
134////----- Check_D_Parameter() --------------------------------------------
135//int Check_D_Parameter(PFDO_DEVICE_EXTENSION fdoExt,WORD *pcyl,BYTE *phead,BYTE *psect)
136//{
137// if (Check_D_MediaPower())
138// return(ErrCode);
139//
140// if (Check_D_MediaFmt(fdoExt))
141// return(ErrCode);
142//
143// if (Check_D_LogCHS(pcyl,phead,psect))
144// return(ErrCode);
145//
146// return(NO_ERROR);
147//}
148
149//SmartMedia Read/Write/Erase Function
150//----- Media_D_ReadSector() -------------------------------------------
151int Media_D_ReadSector(struct us_data *us, DWORD start,WORD count,BYTE *buf)
152{
153 WORD len, bn;
154
155