📄 devio.h
字号:
/* Copyright 1997-2002, ESS Technology, Inc. *//* SCCSID @(#)devio.h 1.1 09/30/04 *//****************************************************************************** Copyright (C) 2003 UBiSYS Technology Limited. All rights reserved. author : dahlsse created : 2004-08-16 filename : DevIO.h purpose : Device Interface Layer for UBi9021 target mcu: ES 6218S notes : history :*******************************************************************************/#ifndef _DEV_IO_H_#define _DEV_IO_H_#include "common.h"#include "mvd.h"#include "ide.h"#include "ioport.h"#define DISABLE_INT() Disable_md_int()#define ENABLE_INT() Restore_int()#define NOOP() asm("nop")//_________ io control ___________________#define UBi9021_IRQ_PENDING() usb_irq_poll()#define UH_DEV_IS_PLUGGEDIN() usb_plugin()#define GET_UBi9021_IRQ_STS(usbIrq) usbIrq=DEV_ReadReg(RH_INT_STS)//_________ UBi9021 Chip Reset ____________#define PW_RST_PORT_DIR_OUT//#define PW_RST_PORT_LOW {usb_reset(0);}while(0)//#define PW_RST_PORT_HIGH {usb_reset(1);}while(0)#define PW_RST_PORT_LOW {usb_reset(1);}while(0) #define PW_RST_PORT_HIGH {usb_reset(0);}while(0) //_________ io control ___________________//#define WFIRQ_SLEEP_TIME 10000 //RISC_sleep_nsec(10000);#define WFIRQ_SLEEP_TIME 1000 //RISC_sleep_nsec(1000);#if WFIRQ_SLEEP_CHOICE==10000 #define UMO_WAIT_USB_PKT_TICKS 20000 //initial value for "gWaitPktTicks" //this value must be measured from "DEV_TEST_4_GetWaitPacketTicks(200)" // 20000 : RISC_sleep_nsec(10000); #elif WFIRQ_SLEEP_TIME==1000 #define UMO_WAIT_USB_PKT_TICKS 66667 //initial value for "gWaitPktTicks" //this value must be measured from "DEV_TEST_4_GetWaitPacketTicks(200)" // 66667 : RISC_sleep_nsec(1000); #else ..ERROR.. #endif#define UMO_RESET_IDLE_TICKS 1000 //4u-sec //make sure that the reset pulse low enough#define UMO_ENABLE_READCAPACITY 0 //1:enable read-capacity when enumeration, default=0#define UMO_ENABLE_MULTI_LUN 1 //default=0#define UMO_DEFAULT_HUB_ADDRESS 4 //default=4#define UMO_DEFAULT_DEV_ADDRESS 5 //default=5//-------------------------------------------------------------------------------// UBi9021 Reset mode//-------------------------------------------------------------------------------#define RST9021_NORMAL_RESET 0 //using register command#define RST9021_FULL_RESET 1 //using reset pin#define RST9021_RESTORE 2 //restore previous settings (Device-Address,SOF,FIFO-Direction,//7.28//-------------------------------------------------------------------------------// Initialization State//-------------------------------------------------------------------------------#define IS_NO_INIT 0 //not initilized#define IS_ENUM_OK 1 //passed enumeration#define IS_FILESYS_OK 2 //passed file system initialization//-------------------------------------------------------------------------------// Basic Functions for interfacing UBi9021 to SAM8//-------------------------------------------------------------------------------void DEV_WriteReg(U8 addr,U8 dat);void DEV_WriteRegMulti(U8 reg, U16 cnt, U8* buf);U8 DEV_ReadReg(U8 addr);U8 DEV_ReadRegMulti(U8 reg, U16 cnt, register U8* buf);#define DEV_WriteRegMultiWithZero(reg,cnt) DEV_WriteRegMulti(reg,cnt,TxNULL)#define DEV_ReadRegMultiAndDiscard(reg,cnt) DEV_ReadRegMulti(reg,cnt,TxNULL)U8 DEV_WaitForIrq(U8 bIRQ);void DEV_WaitTicks(U32 dwTicks);R8 DEV_WaitMS(U16 msec);R8 DEV_ResetChip(U8 mode);R8 DEV_ResetUsbDevice(U8 msIdle);R8 DEV_CheckDeviceConnection(void);#ifndef REC_FMMvoid MemCopy(U8* pTrg, U8* pSrc, U16 bytCnt);#endifvoid MemFill(U8* buf, U8 val, U16 bytCnt);//-------------------------------------------------------------------------------// Basic Functions for interfacing UBi9021 to SAM8//-------------------------------------------------------------------------------R8 DEV_TEST_1_RegRW(U8 reg, U16 iterCnt);R8 DEV_TEST_2_SOF_n_Interrupt(void);R8 DEV_TEST_3_FifoRW(U8 mode, U16 iterCnt, U16 rwSize);U32 DEV_TEST_4_GetWaitPacketTicks(U16 sofCount); //measure "gWaitPktTicks"//-------------------------------------------------------------------------------// gloable variables//-------------------------------------------------------------------------------extern U8 gBUF[512]; //sector buffer (available for other jobs, if not accessing USB) //..must be aligned to DWORDextern U8* pBUF; //pointer to gBUFextern U32 gWaitPktTicks; //timeout value for usb packet waiting#define gWaitUsbPktMsec gWaitPktTicksextern U8 gInitState; //7.28 initilization stateextern U8 gIntDsblCnt; //interrupt-disable-counter to enable //..nesting interrupt-control-codes. //bit7: used in interrupt service routine. //bit6-0: nesting counter.#if defined(UBi9021_IRQ_USING_INTERRUPT) extern U8 gIrqQueue[8],gIrqHead,gIrqTail;#endifextern U8 gStallMark;extern char gUsbTimeOver;void DEV_TimerStart(int msec);#endif//!_DEV_IO_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -