亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gfd_usb_hl.c

?? USB的驅動編程實例
?? C
?? 第 1 頁 / 共 3 頁
字號:
/**************************************************************************************
 *
 *  (c) 2004 ASIC,all rights reserved
 *         
 *           
 *	This source code and any compilation or derivative thereof 
 *is proprietary information and is confidential in nature.
 *	Under no circumstance is this software to be exposed or placed
 *under an open source License of any type without expressed
 *written permission of ASIC.  
 *
 *filename:	gfd_usb_hl.c          
 *history:
 *
 *    Version         Date            Author            Comments
 *------------------------------------------------------------------------------------    
 *     1.0          2004.9.24           lmq             Initial Creation
 *     1.1 	   2005.3.24		 xl			make all the global var in a USBDevice struct
 **************************************************************************************/
#include "hardware_reg.h"
#include "Gfd_usb_irq.h"
#include "HA_TypeDef.h"
#include "hardware.h"
#include "Gfd_usb_protocol.h"
#include "Gfd_usb_common.h"
#include "Gfd_dmac.h"
#include "debug.h"

/*-------------------------------------------------------------------*
 *				local	function	declerations
 *-------------------------------------------------------------------*/

static void usb_irq_setup(void);
static U8  *get_irq_request_cmd(void);
static U32 pdc_bus_ctrl_pipe_notificaion(unsigned long notif_type, unsigned char *cmd);
static void pdc_bus_get_descriptor(U8 *command);
ER  HA_GFDUSB_INTHANDLE(void);  //usb 中斷服務程序 
static ER OUTINTR(void);
static void pdc_bus_SET_CONFIGURATION(void);
static void bulk_commmand(void);
U32 usb_bulk_cbw(void);
static void bulk_commmand(void);
void usb_bulk_csw(void);
U32 usb_bulk(void);
static U32 transcl(unsigned char *head);
U32 transbulk(unsigned char *head);
/*-------------------------------------------------------------------*
 *					全局變量定義
 *-------------------------------------------------------------------*/
struct USBDevice MSDevice;//海量存儲器類別
struct USBDevice *pMSDevice = &(MSDevice);


/*
 * descriptors,描述符請參看USB1.1協議
 */
 #ifdef READCARD
U32 device_desc[] = {
	0x01100112, /* 描述符長度, 設備描述符, 版本號 (BCD)*/
	0x08000000, /* 設備類,設備子類,設備協議,包的最大長度 */
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
	0x66800ed1, /* 設備商ID , 廠商ID */
	0x02010100, /* gfd's revision ID,制造商索引. 字符串索引*/
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000103  /* 字符串索引, 配置數目. */
};

 U32  conf_desc[] = {
	0x00200209,	/* 描述符長度,配置描述符, 返回的總長度 */ 
	0xc0000101,	/* 接口數目,配置數目,配置索引,字符串索引,屬性.: 自供電 */   
  	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
  	0x00040901, /* 不使用總線供電,描述符長度,接口描述符,接口數目*/
 	0x06080200, /* 可選設置,非0端點,接口類 (Mass Storage),接口子類 (SCSI Transparent) */  
 	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
	0x05070050, /* 接口協議(BOT Protocol),索引值. 字符串描述符長度,端點描述符 */ 
	0x00400282, /* 地址(IN),屬性(BULK),包的最大尺寸*/
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
	0x01050700, /* 輪詢時間 (ms),端點描述符長度,地址(OUT) */
	0x00004002 /* 屬性  (BULK),包的最大尺寸,輪詢時間 (ms),	*/
};
 #endif
 
 #ifdef UDISK
U32 device_desc[] = {
	0x01100112, /* 描述符長度, 設備描述符, 版本號 (BCD)*/
	0x08000000,  /* 設備類,設備子類,設備協議,包的最大長度 */
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
	0x9382058f, /* 設備商ID , 廠商ID */
	0x02010100, /* gfd's revision ID,制造商索引. 字符串索引*/
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000000, //idle          
	0x00000100   /* 字符串索引, 配置數目. */
};
  U32  conf_desc[] = {
	0x00200209,	/* 描述符長度,配置描述符, 返回的總長度 */  
	0x80000101,	/* 接口數目,配置數目,配置索引,字符串索引,屬性.: 自供電 */    
  	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
  	0x00040932, /* 不使用總線供電,描述符長度,接口描述符,接口數目*/
 	0x06080200, /* 可選設置,非0端點,接口類 (Mass Storage),接口子類 (SCSI Transparent) */ 
 	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
	0x05070050, /* 接口協議(BOT Protocol),索引值. 字符串描述符長度,端點描述符 */ 
	0x00400282, /* 地址(IN),屬性(BULK),包的最大尺寸*/
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle
	0x00000000, //idle 
	0x00000000, //idle  
	0x00000000, //idle
	0x00000000, //idle  
	0x00000000, //idle
	0x01050700, /* 輪詢時間 (ms),端點描述符長度,地址(OUT) */
	0x00004002  /* 屬性  (BULK),包的最大尺寸,輪詢時間 (ms),	*/
};
 #endif


/* Unicode描述符 */
unsigned char unicode_string[]= { 
	0x04,0x03,
	0x09,0x04 		/*  0409, US English */
};

unsigned char mfg_string[]= {
	26,3, 'P',0, 'h',0, 'ti',0, 'l',0, 'ti',0, 'p',0, 's',0, 
	'-',0, 'A',0, 'P',0, 'ti',0, 'C',0
};

unsigned char product_string[]= 
#if 1
	gfd_product_string
#else
{
	60,3, '1',0, '3',0, '6',0, '2',0, '-',0, 'O',0, 'T',0, 'G',0, ' ',0,
	'M',0, 'A',0, 'S',0, 'S',0, ' ',0, 
	'S',0, 't',0, 'o',0, 'r',0, 'a',0, 'g',0, 'e',0, ' ',0,
#ifdef CONFIG_gfd_PCI
	'P',0, 'C',0, 'ti',0,
#else
	'ti',0, 'S',0, 'A',0,
#endif /* CONFIG_gfd_PCI */
	' ',0, 'K',0, 'ti',0, 't',0
}
#endif
;

unsigned char serial_string[]= {
	0x0A, 0x03, '1', 0x00, '.',0x00, '0', 0x00, '0', 0x00
};

unsigned char empty[] = {0x00};

/*******************************UFI command descriptions*******************/

U32	UInquiry[]= {
	0x00008000, 0x0000001f,'fraG', 'deli',
	' VED', 'ssaM','otS ', 'egar','01.1'
}; 


/*32M*/
#if 0
U32 URead_capacity[]= {
	0xffff0000,0x00020000
};
#endif
/*16M*/
#if 0
U32 URead_capacity[]= {
	0xff7f0000,0x00020000
};
#endif

/*4M*/
#if 0
U32 URead_capacity[]= {
	0xff1f0000,0x00020000
};
#endif

/*5M*/
#if 0
U32 URead_capacity[]= {
	0xff270000,0x00020000
};
#endif

/*64M*/  /*added by xl  on 5.6*/
#ifdef  USBNANDFLASH
U32 URead_capacity[]= {
	0xffff0100,0x00020000
};
#endif

/*128M*/
#if	1//USBMMC
U32 URead_capacity[]= {
	0xffff0300,0x00020000
};
#endif


/*32M*/
#if 0
U32	URead_format_capacity[]= {
	0x10000000, 0x00001000,	0x00020002,
	0x00000100,	0x00020000,
};
#endif

/*16M*/
#if 0
U32	URead_format_capacity[]= {
	0x10000000, 0x00800000,	0x00020002,
	0x00800000,	0x00020000,
};
#endif

/*4M*/
#if 0
U32	URead_format_capacity[]= {
	0x10000000, 0x00200000,	0x00020002,
	0x00200000,0x00020000,
};
#endif

/*5M*/
#if 0
U32	URead_format_capacity[]= {
	0x10000000, 0x00280000,	0x00020002,
	0x00280000,0x00020000,
};
#endif



/*64M*/
#ifdef USBNANDFLASH
U32	URead_format_capacity[]= {
	0x10000000, 0x00000200,	0x00020002,
	0x00000200,0x00020000,
};
#endif




/*128M*/
#if  1
U32	URead_format_capacity[]= {
	0x10000000, 0x0000040,	0x00020002,
	0x0000040,0x00020000,
};
#endif


U32 URequest_sense[]= {
	0X000600f0,	0X0a000000,	0X00000000,	0X00000028,
	0x00000000
};

unsigned char Ucode_15[]= {
	0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x02, 0x00, 0x1c, 0x0a, 0x80, 0x04,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频在线一区二区三区 | 日本一区二区在线不卡| 久久精品国产**网站演员| 5566中文字幕一区二区电影| 午夜不卡在线视频| 日韩视频永久免费| 国产精品99久久久久久久女警| 久久精品一区二区| 99久久精品国产麻豆演员表| 亚洲图片你懂的| 欧美日韩在线播放三区四区| 免费成人av在线播放| 26uuu色噜噜精品一区二区| 国产成人亚洲综合a∨婷婷图片| 久久精品水蜜桃av综合天堂| 99免费精品在线观看| 亚洲五月六月丁香激情| 日韩视频国产视频| 成人午夜又粗又硬又大| 亚洲一区二区三区中文字幕在线| 在线播放日韩导航| 国产成人高清视频| 亚洲无线码一区二区三区| 精品少妇一区二区三区在线播放 | 91.xcao| 国产一区欧美一区| 亚洲精品国产精品乱码不99 | 精品国产91洋老外米糕| 成人a免费在线看| 午夜精品福利久久久| 中文字幕精品—区二区四季| 欧美性猛交xxxx黑人交| 国产精品亚洲午夜一区二区三区 | 国产精品乱码久久久久久| 欧美亚洲免费在线一区| 国产一区二区0| 亚洲一区二区在线观看视频| 国产亚洲午夜高清国产拍精品 | 欧美国产视频在线| 欧美日产国产精品| 成人少妇影院yyyy| 青青草97国产精品免费观看 | 欧美精品亚洲一区二区在线播放| 国产麻豆精品久久一二三| 亚洲国产一区二区视频| 国产欧美日韩在线看| 欧美一区二区在线不卡| 波多野结衣在线一区| 精品一区二区三区在线观看国产| 一卡二卡三卡日韩欧美| 中文字幕av免费专区久久| 日韩欧美在线一区二区三区| 在线免费观看一区| 波多野结衣中文字幕一区| 国产在线不卡一区| 日本美女一区二区三区| 亚洲精品乱码久久久久久久久 | 亚洲私人影院在线观看| 亚洲精品一区二区三区福利 | 日本精品视频一区二区| 风间由美一区二区三区在线观看 | 成a人片亚洲日本久久| 免费高清成人在线| 亚洲成人www| 亚洲激情五月婷婷| 中文字幕一区二区三区不卡在线| 国产亚洲污的网站| 久久久久成人黄色影片| 精品久久久久一区二区国产| 69久久99精品久久久久婷婷| 欧美日韩黄色影视| 欧美又粗又大又爽| 欧美午夜精品一区二区三区 | 懂色av中文字幕一区二区三区| 麻豆精品在线播放| 免费成人在线播放| 亚洲成人一区二区| 亚洲一区二区三区美女| 亚洲午夜免费福利视频| 依依成人精品视频| 亚洲一区二区在线免费观看视频| 一级精品视频在线观看宜春院| 亚洲人吸女人奶水| 亚洲综合成人在线| 婷婷激情综合网| 日韩不卡免费视频| 蜜臀av性久久久久av蜜臀妖精| 久久国产精品99久久人人澡| 精品一区二区综合| 国产成人av电影免费在线观看| 国产盗摄女厕一区二区三区| 成人一区二区视频| 91在线你懂得| 欧美日韩免费观看一区三区| 欧美午夜宅男影院| 日韩女优视频免费观看| 久久久不卡网国产精品一区| 国产精品拍天天在线| 亚洲人精品一区| 日本欧美一区二区三区| 久久爱另类一区二区小说| 国产麻豆一精品一av一免费| 成人免费观看男女羞羞视频| 日本道色综合久久| 日韩午夜在线播放| 国产欧美精品国产国产专区| 亚洲精品国产无天堂网2021 | 久久99热狠狠色一区二区| 国产一区啦啦啦在线观看| 东方欧美亚洲色图在线| 欧美亚洲自拍偷拍| 久久亚洲捆绑美女| 亚洲色图在线播放| 久久国产视频网| 色综合天天综合| 日韩免费电影网站| 亚洲六月丁香色婷婷综合久久 | 免费国产亚洲视频| 99久久婷婷国产精品综合| 在线不卡免费欧美| 中文天堂在线一区| 日本麻豆一区二区三区视频| 岛国精品在线播放| 日韩亚洲欧美一区| 亚洲男人的天堂在线aⅴ视频| 美女www一区二区| 色婷婷激情久久| 久久久久久久综合色一本| 亚洲国产精品视频| 成人免费视频视频在线观看免费| 91麻豆精品91久久久久同性| 中文字幕不卡的av| 麻豆国产精品一区二区三区| 色综合av在线| 久久精品男人天堂av| 天堂va蜜桃一区二区三区漫画版| 国产成+人+日韩+欧美+亚洲| 欧美一区二区成人6969| 亚洲精品一二三四区| 国产福利91精品| 精品久久久久久久久久久久久久久| 亚洲午夜精品在线| 99riav一区二区三区| 欧美激情在线一区二区三区| 久久99精品一区二区三区| 欧美日韩激情一区二区| 亚洲激情av在线| 99国产精品一区| 中文字幕av一区二区三区高| 韩国精品免费视频| 日韩欧美一二区| 日韩电影一区二区三区| 欧美性感一区二区三区| 精品亚洲国产成人av制服丝袜 | 国产精品国产三级国产aⅴ无密码| 日韩av网站在线观看| 欧美日韩夫妻久久| 亚洲影视资源网| 日本伦理一区二区| 亚洲猫色日本管| 成人h精品动漫一区二区三区| 久久亚洲精品小早川怜子| 精品在线视频一区| 日韩欧美黄色影院| 捆绑调教美女网站视频一区| 日韩一级黄色片| 麻豆国产精品官网| 欧美不卡视频一区| 国产自产2019最新不卡| 精品美女一区二区三区| 精品一区二区三区不卡| 精品国产乱码久久久久久1区2区| 青青草原综合久久大伊人精品| 日韩欧美在线一区二区三区| 蜜桃av一区二区三区电影| 欧美哺乳videos| 国产乱码精品一区二区三区忘忧草 | 久久久精品日韩欧美| 国产麻豆精品一区二区| 中文字幕va一区二区三区| 91色.com| 婷婷综合另类小说色区| 欧美大片日本大片免费观看| 国产乱人伦偷精品视频免下载| 国产女人aaa级久久久级| 99久久国产综合精品色伊| 亚洲综合激情小说| 在线播放91灌醉迷j高跟美女| 日本午夜一本久久久综合| xfplay精品久久| 成人精品在线视频观看| 亚洲欧美福利一区二区| 欧美日韩一区二区在线视频| 久久电影国产免费久久电影| 中文一区二区在线观看| 欧美写真视频网站| 国产精品中文字幕日韩精品| 中文字幕日韩av资源站| 欧美日韩国产电影| 国产91精品久久久久久久网曝门|