ddwriteint.h 2.54 KB

#include <PR/leosp.h>
#include <ddwrite.h>

/*
 * Type definitions
 */
typedef struct
{
  u32           country;
  u32           diskType;
  u32           iplSize;
  void          *loadAddr;

} __SystemInfo_s;

typedef struct
{
  u8            defectData1[20];
  u8            defectData2[160];

} __DefectInfo_s;

typedef struct
{
  u32	inNlbas;		/* 指定領域に何ブロックとれるか */
  u32	inNbytes;		/* inNlbas に対応するバイト数 */
  u32	outNlbas;		/* 指定領域を書くのに何ブロック必要か */
  u32	outNbytes;		/* outNlbas に対応するバイト数 */
  u32	restBytes;		
  u32	oneBlockSize;		/* startLba + nbytes の含まれるブロックのサイズ */

} __byteInfo_s;


/*
 * Global definitions
 */
#define SECPERBLOCK     85


/*
 * Macro definitions
 */
#define SAVE_COUNTRY(x)                                                         \
{                                                                               \
   *(u8*)OS_PHYSICAL_TO_K1(0x00000010) = (((u32)(x) & 0xff000000) >> 24);       \
   *(u8*)OS_PHYSICAL_TO_K1(0x00000090) = (((u32)(x) & 0x00ff0000) >> 16);       \
   *(u8*)OS_PHYSICAL_TO_K1(0x00000110) = (((u32)(x) & 0x0000ff00) >>  8);       \
   *(u8*)OS_PHYSICAL_TO_K1(0x00000190) = ( (u32)(x) & 0x000000ff       );       \
}


/*
 * Prototypes
 */
extern 	void 	__ddFormatDisk(DDCmd *command);
extern 	void 	__ddSetID(DDCmd *command);
extern	void 	__ddDummyRead(void);
extern	void 	__ddDoDiskWrite(DDCmd *command);
extern	void	__ddInit(void);

/* from system.c */
extern  u32 	__ddWriteSystemBlock(__SystemInfo_s *sys,
				     __DefectInfo_s *def, u32 formatType);
extern  u32 	__ddReadSystemBlock(__SystemInfo_s *sys,
				    __DefectInfo_s *def, u32 *formatType);
extern  u32 	__ddWriteIDBlock(LEODiskID *id);
extern  u32 	__ddReadIDBlock(LEODiskID *id);
extern  u32 	__ddReadDefectBlock(__DefectInfo_s *def, u32 *formatType);
extern  u32 	__ddWriteErrorECC(void);
extern  u32 	__ddUnformatUserArea(void *buffer, u32 bufSize);
extern  u32 	__ddUnformatSystemArea(void *buffer, u32 bufSize);

/* from util.c */
extern  u32 	__ddGetnBlksInAreaLong(u32 diskType, s32 startLba, u32 areaSize);
extern  u32 	__ddLba2Byte(u32 type, s32 startLBA, u32 nlbas);
extern  void 	__ddBfill(void *vaddr, u32 nbytes, u32 filldata);
extern	u32 	__ddGetnBlksInArea(__byteInfo_s *byteInfo,
				   u32 diskType, s32 startLba, u32 nbytes);


/*
 * extern variables
 */
extern 	u32 	LEO_country_code;


extern	u32	__ddWriteActive;
extern	s32	__ddWriteError;

extern	OSMesgQueue	__ddDiskQ;		/* post queue */

extern	DDInfo	__ddInfo;

/* exports from init.c */

extern	void	*__ddBufp1;
extern	void	*__ddBufp2;