unformat.c
1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "ddwriteint.h"
/*
* Prototypes
*/
static u32 __formatSystemAreaSp(void);
s32 ddUnformat(void *buffer, u32 bufSize)
{
u32 result;
/*
* 呼ばれるのがはじめてなら、初期化する
*/
if (! __ddWriteActive)
{
__ddInit();
if (__ddWriteError)
return __ddWriteError;
}
/*
* システム領域のフォーマット
*/
if ( (result = __formatSystemAreaSp()) != 0 )
{
return (s32)result;
}
/*
* ユーザエリアのアンフォーマット
*/
if ( (result = __ddUnformatUserArea(buffer, bufSize)) != 0 )
{
return (s32)result;
}
#if 1
/*
* システム領域のアンフォーマット
*/
if ( (result = __ddUnformatSystemArea(buffer, bufSize)) != 0 )
{
return (s32)result;
}
#endif
return 0;
} /* LeoUnformat() */
/*
* システム領域をフォーマットする。
* unformat 専用バージョン
*/
static u32 __formatSystemAreaSp(void)
{
__SystemInfo_s sys;
__DefectInfo_s def;
u32 formatType;
u32 result;
if ( (result = __ddReadDefectBlock(&def, &formatType)) != 0 )
{
return result;
}
/*
* とりあえず、下記の情報でフォーマットしておく
*/
sys.country = 0;
sys.diskType = 0;
sys.iplSize = 1;
sys.loadAddr = (void *)0x80000400;
if ( (result = __ddWriteSystemBlock(&sys, &def, formatType)) != 0 )
{
return result;
}
return 0;
} /* __formatSystemAreaSp() */