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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usbinit.c

?? MX1(Arm9 based)Linux USB driver
?? C
字號:
#include <linux/kernel.h>#include <linux/module.h>#include <linux/compatmac.h>#include <linux/hdreg.h>#include <linux/vmalloc.h>#include <linux/fs.h>#include <linux/module.h>#include <linux/blkpg.h>#include "prototype.h"#include "define.h"#include "mx1.h"void _iUsbDelay(U32 count);void _iUsbLoadEPconfig(void);void _iUsbReset(void);U8      _gUsbMode;          // operation mode of driverU8      _gUsbDrvStatus[2];  // Drive statusU32	gEPconfigData[55] = {	// EP0	0x00000000,	0x00000000,	0x00000008,	0x00000000,	0x00000000,	// EP1	0x00000014,		// EP#:1, CF#: 1, IF#:0	0x00000014,		// BULK, IN	0x00000020,		// MAX PS: 32	0x000000C0,		// 0xC0, except for EP0	0x00000001,		// FIFO#: 1	// EP2	0x00000024,		// EP#:2, CF#: 1, IF#:0	0x00000010,		// BULK, OUT	0x00000020,		// MAX PS: 32	0x000000C0,		// 0xC0, except for EP0	0x00000002,		// FIFO#: 2	// EP3	0x00000034,		// EP#:3, CF#: 1, IF#:0	0x0000001C,		// INTR, IN	0x00000010,		// MAX PS: 16	0x000000C0,		// 0xC0, except for EP0	0x00000003,		// FIFO#: 3	// EP4	0x00000044,		// EP#:4, CF#: 1, IF#:0	0x00000018,		// INTR, OIUT	0x00000010,		// MAX PS: 16	0x000000C0,		// 0xC0, except for EP0	0x00000004,		// FIFO#: 4	// EP5	0x00000054,		// EP#:5, CF#: 1, IF#:0	0x0000001C,		// INTR, IN	0x00000010,		// MAX PS: 16	0x000000C0,		// 0xC0, except for EP0	0x00000005,		// FIFO#: 5	// EP6	0x00000018,		// EP#:1, CF#: 2, IF#:0	0x00000014,		// BULK, IN	0x00000020,		// MAX PS: 32	0x000000C0,		// 0xC0, except for EP0	0x00000001,		// FIFO#: 1	// EP7	0x00000028,		// EP#:2, CF#: 2, IF#:0	0x00000010,		// BULK, OUT	0x00000020,		// MAX PS: 32	0x000000C0,		// 0xC0, except for EP0	0x00000002,		// FIFO#: 2	// EP8	0x00000038,		// EP#:3, CF#: 2, IF#:0	0x0000001C,		// INTR, IN	0x00000010,		// MAX PS: 16	0x000000C0,		// 0xC0, except for EP0	0x00000003,		// FIFO#: 3	// EP9	0x00000048,		// EP#:4, CF#: 2, IF#:0	0x00000018,		// INTR, OIUT	0x00000010,		// MAX PS: 16	0x000000C0,		// 0xC0, except for EP0	0x00000004,		// FIFO#: 4	// EP10	0x00000058,		// EP#:5, CF#: 2, IF#:0	0x0000001C,		// INTR, IN	0x00000010,		// MAX PS: 16	0x000000C0,		// 0xC0, except for EP0	0x00000005,		// FIFO#: 5	};void _iUsbDelay(U32 count){    U32 i;    i = 0;    while (i<count)    {        i++;    }}void _iUsbReset(){	U8	i; /* reset and enable USB device module */	//_reg_USBD_ENABLE = 0x00000000;	    /* disable module */// PLAM -- for rev2 (changed from using direct assignment and for new endian bit)	_reg_USBD_ENABLE &= ~0x40000000;	/* disable module */// end PLAM	_iUsbDelay(10);	//_reg_USBD_ENABLE = 0x80000000;	    /* enable and reset module */// PLAM -- for rev2 (changed from using direct assignment and for new endian bit)	_reg_USBD_ENABLE &= ~0x00000001;	/* select 32-bit mode FIFO */	_reg_USBD_ENABLE &= ~0x10000000;	/* Set big endian */	_reg_USBD_ENABLE |= 0x40000000;	    /* enable module */// end PLAM		/* remark: resetting the module will enable module automatically */	while (!(_reg_USBD_ENABLE & 0x40000000));		// wait until it is enabled	// fill endpoint configuration buffer	for (i=0; i<55; i++)	{		_reg_USBD_EPBUF = gEPconfigData[i];		while (_reg_USBD_CFGBSY & 0x40000000);		// wait until busy bit is cleared	}	// mask interrupts	_reg_USBD_INTR_STAT = 0x800000FF;		// clear general interrupts	_reg_USBD_INTR_MASK = 0x800000FF;		// mask all general interrupts//DPRINTK("intr stat: 0x%08x\n",_reg_USBD_INTR_STAT);	_reg_USBD_EP0_INTR_STAT = 0x000001FF;	// clear EP interrupts	_reg_USBD_EP0_INTR_MASK = 0x000001FF;	// mask all EP interrupts	_reg_USBD_EP1_INTR_STAT = 0x000001FF;	// clear EP interrupts	_reg_USBD_EP1_INTR_MASK = 0x000001FF;	// mask all EP interrupts	_reg_USBD_EP2_INTR_STAT = 0x000001FF;	// clear EP interrupts	_reg_USBD_EP2_INTR_MASK = 0x000001FF;	// mask all EP interrupts	_reg_USBD_EP3_INTR_STAT = 0x000001FF;	// clear EP interrupts	_reg_USBD_EP3_INTR_MASK = 0x000001FF;	// mask all EP interrupts	_reg_USBD_EP4_INTR_STAT = 0x000001FF;	// clear EP interrupts	_reg_USBD_EP4_INTR_MASK = 0x000001FF;	// mask all EP interrupts	_reg_USBD_EP5_INTR_STAT = 0x000001FF;	// clear EP interrupts	_reg_USBD_EP5_INTR_MASK = 0x000001FF;	// mask all EP interrupts	// configure USB_EPn_STAT registers and flush FIFOs	_reg_USBD_EP0_STAT = 0x00000002;	_reg_USBD_EP1_STAT = 0x000000D2;		// IN, MAX PS 32, BULK	_reg_USBD_EP2_STAT = 0x00000052;		// OUT, MAX pS 32, BULK	_reg_USBD_EP3_STAT = 0x000000BA;		// IN, MAX PS 16, INTR	_reg_USBD_EP4_STAT = 0x0000003A;		// OUT, MAX PS 16, INTR	_reg_USBD_EP5_STAT = 0x000000BA;		// IN, MAX PS 16, INTR	// configure USB_EPn_FCTRL registers	_reg_USBD_EP0_FCTRL = 0x0F000000;	_reg_USBD_EP1_FCTRL = 0x0B000000;	_reg_USBD_EP2_FCTRL = 0x0F000000;	_reg_USBD_EP3_FCTRL = 0x0B000000;	_reg_USBD_EP4_FCTRL = 0x0F000000;	_reg_USBD_EP5_FCTRL = 0x0B000000;	// configure USB_EPn_FALRM registers	_reg_USBD_EP0_FALRM = 0x00000000;	_reg_USBD_EP1_FALRM = 0x00000020;	_reg_USBD_EP2_FALRM = 0x00000020;	_reg_USBD_EP3_FALRM = 0x00000010;	_reg_USBD_EP4_FALRM = 0x00000010;	_reg_USBD_EP5_FALRM = 0x00000010;	while (_reg_USBD_INTR_STAT & RST_START_MASK);	// wait until reset signaling finished	_reg_USBD_CTRL = 0x0000001A;				// enable module//DPRINTK("intr stat: 0x%08x\n",_reg_USBD_INTR_STAT);}int init_module(void){	printk("USB driver version 0.2.0\n");	// set clock for 48 MHz USB clock	//_reg_CCM_CSCR = 0x47008403;// PLAM -- for rev2 (changed from using direct assignment and for new endian bit)	_reg_CCM_CSCR &= ~USB_DIV_MASK;	_reg_CCM_CSCR |= 0x04000000;	// set USB DIV to divide-by-2// end PLAM		// config port for USBD	_reg_PTB_GIUS &= 0x000FFFFF;		// set PB31-28 to UART2 and PB27-20 to USBD	_reg_PTB_GPR &= 0x000FFFFF;		// select primary peripheral    // enable USB device interrupt//    _reg_IMR &= (~USBD_INTR_MASK);    /* initialize variables */	_gUsbDrvStatus[0] = USB_DRV_READY;//   _gUsbDrvStatus[0] = USB_DRV_NOT_READY;   _gUsbDrvStatus[1] = USB_DRV_NOT_READY;    /* register interrupt handler *///    _HalAttachIsr(USB_INTR_SOURCE, (P_VOID)_UsbIntrHandler);    _iUsbReset();	if (request_irq(USB_INTR_SOURCE0, ep0_interrupt, SA_INTERRUPT, "USB EP0", 0) < 0)		printk("Intr request for source %d failed !\n", USB_INTR_SOURCE0);	if (request_irq(USB_INTR_SOURCE1, ep1_interrupt, SA_INTERRUPT, "USB EP1", 0) < 0)		printk("Intr request for source %d failed !\n", USB_INTR_SOURCE1);	if (request_irq(USB_INTR_SOURCE2, ep2_interrupt, SA_INTERRUPT, "USB EP2", 0) < 0)		printk("Intr request for source %d failed !\n", USB_INTR_SOURCE2);	if (request_irq(USB_INTR_SOURCE3, usb_interrupt, SA_INTERRUPT, "USB EP3", 0) < 0)		printk("Intr request for source %d failed !\n", USB_INTR_SOURCE3);	if (request_irq(USB_INTR_SOURCE4, usb_interrupt, SA_INTERRUPT, "USB EP4", 0) < 0)		printk("Intr request for source %d failed !\n", USB_INTR_SOURCE4);	if (request_irq(USB_INTR_SOURCE5, usb_interrupt, SA_INTERRUPT, "USB EP5", 0) < 0)		printk("Intr request for source %d failed !\n", USB_INTR_SOURCE5);	if (request_irq(USB_INTR_SOURCE6, usb_interrupt, SA_INTERRUPT, "USB", 0) < 0)		printk("Intr request for source %d failed !\n", USB_INTR_SOURCE6);	_reg_USBD_EP0_INTR_MASK &= ~(DEVREQ_MASK);	// enable DEVREQ for EP0//	_reg_USBD_EP0_INTR_MASK = 0x1FD;	// enable DEVREQ for EP0	_reg_USBD_EP2_INTR_MASK &= ~(EOT_MASK);		// enable EOT for EP2	return 0;}void cleanup_module(void){	printk("Cleanup USB driver.\n");	free_irq(USB_INTR_SOURCE0, 0);	free_irq(USB_INTR_SOURCE1, 0);	free_irq(USB_INTR_SOURCE2, 0);	free_irq(USB_INTR_SOURCE3, 0);	free_irq(USB_INTR_SOURCE4, 0);	free_irq(USB_INTR_SOURCE5, 0);	free_irq(USB_INTR_SOURCE6, 0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区久久| 欧美最猛性xxxxx直播| 国产精品三级久久久久三级| 成人永久免费视频| |精品福利一区二区三区| 色老综合老女人久久久| 午夜精品久久久久久久| 日韩一卡二卡三卡四卡| 久久蜜桃av一区二区天堂| 久久精品二区亚洲w码| 日韩区在线观看| 日韩欧美色综合| 风间由美一区二区三区在线观看| 欧美videos大乳护士334| 轻轻草成人在线| 久久久久久久久久久久电影| 国产999精品久久久久久绿帽| 亚洲区小说区图片区qvod| 欧美日韩在线直播| 久久国产精品无码网站| 国产精品妹子av| 精品婷婷伊人一区三区三| 久久精品国产久精国产| 国产精品久久久99| 欧美日韩aaaaaa| 国产精品自产自拍| 一区二区三区不卡视频| 精品国免费一区二区三区| 9i在线看片成人免费| 丝袜亚洲另类丝袜在线| 国产网站一区二区三区| 欧美视频完全免费看| 国内精品免费**视频| 亚洲欧美激情插 | av影院午夜一区| 亚洲国产一区二区三区 | 国产精品一二三四五| 亚洲天堂久久久久久久| 91超碰这里只有精品国产| 国产成a人亚洲精品| 亚洲一区在线看| 国产亚洲午夜高清国产拍精品| 色综合久久综合| 精品无人码麻豆乱码1区2区| 亚洲乱码国产乱码精品精小说 | 国产日韩av一区| 欧美影片第一页| 国产激情视频一区二区在线观看| 一卡二卡欧美日韩| 久久精品网站免费观看| 欧美猛男男办公室激情| 粉嫩av一区二区三区在线播放 | 成人av电影在线播放| 日韩不卡一二三区| 中文字幕日韩一区| 欧美精品一区二区久久婷婷| 在线日韩国产精品| 成人网男人的天堂| 美女国产一区二区三区| 亚洲综合在线第一页| 欧美经典三级视频一区二区三区| 欧美猛男gaygay网站| 99精品国产99久久久久久白柏| 麻豆国产一区二区| 亚洲va韩国va欧美va精品| 97久久精品人人做人人爽| 久久不见久久见免费视频7| 夜夜亚洲天天久久| 国产精品久久毛片a| 精品电影一区二区| 91精品久久久久久蜜臀| 色嗨嗨av一区二区三区| 波多野结衣91| 国产伦精一区二区三区| 蜜桃久久精品一区二区| 亚洲一区二区在线播放相泽| 中文字幕在线观看不卡| 久久婷婷色综合| 欧美一区二区大片| 欧美日韩一级片在线观看| 97久久精品人人爽人人爽蜜臀| 国产精品自拍毛片| 激情图区综合网| 奇米影视一区二区三区小说| 亚洲aⅴ怡春院| 一区二区三区四区亚洲| 成人免费在线观看入口| 欧美韩国日本综合| 久久久欧美精品sm网站| 日韩一区二区高清| 欧美一区二区三区四区五区| 欧美色男人天堂| 在线看国产一区| 99精品久久只有精品| 波多野结衣在线一区| 成人在线视频一区| 懂色一区二区三区免费观看| 久久九九影视网| 精品1区2区在线观看| 欧美一区二区久久| 91精品国产高清一区二区三区 | 奇米777欧美一区二区| 亚洲mv在线观看| 亚洲成人高清在线| 亚洲sss视频在线视频| 婷婷开心激情综合| 天天影视涩香欲综合网| 日韩精品一区第一页| 亚洲第一成年网| 日精品一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩av一区二区在线影视| 日本欧美一区二区三区| 麻豆国产一区二区| 韩国女主播一区二区三区| 韩国一区二区三区| 国产美女视频一区| 国产91高潮流白浆在线麻豆 | 成人免费看黄yyy456| 成人免费高清在线| 99久久免费视频.com| 一本到高清视频免费精品| 91国产精品成人| 欧美日本韩国一区二区三区视频| 七七婷婷婷婷精品国产| 激情成人综合网| 懂色av一区二区三区蜜臀| 成人性生交大片免费看中文 | 在线观看日韩电影| 欧美日韩国产美女| 日韩欧美国产一区在线观看| 欧美成人精精品一区二区频| 久久综合色8888| 国产精品午夜春色av| 亚洲色图视频免费播放| 亚洲国产日韩a在线播放性色| 日本一区中文字幕 | 久久国产综合精品| 国产黄色精品网站| 91蜜桃视频在线| 8v天堂国产在线一区二区| 精品日本一线二线三线不卡| 国产欧美一区二区在线观看| 亚洲乱码国产乱码精品精98午夜 | 亚洲男帅同性gay1069| 亚洲国产毛片aaaaa无费看| 蜜桃视频在线观看一区| 高清日韩电视剧大全免费| 91色九色蝌蚪| 91麻豆精品国产| 日本一区二区视频在线观看| 亚洲精品日产精品乱码不卡| 日韩成人午夜精品| 成人免费视频网站在线观看| 在线观看视频一区二区| 麻豆成人免费电影| 99久久久精品| 日韩一区二区三区视频| 中文字幕电影一区| 亚洲成人自拍偷拍| 国产精品一品视频| 欧美午夜影院一区| 精品久久久久久久久久久久包黑料 | 国产精品久久久久久久裸模| 亚洲成年人网站在线观看| 激情综合色播五月| 91福利视频网站| 欧美大片免费久久精品三p| 日韩一区在线免费观看| 美女脱光内衣内裤视频久久网站| 99热在这里有精品免费| 欧美一区二区三区视频免费播放| 亚洲国产精品t66y| 婷婷亚洲久悠悠色悠在线播放| 国产不卡一区视频| 在线播放中文一区| 国产精品久久久久影院老司| 日本一道高清亚洲日美韩| 99久久国产综合色|国产精品| 日韩亚洲欧美在线| 亚洲精品免费电影| 国产老女人精品毛片久久| 欧美少妇xxx| 中文一区一区三区高中清不卡| 日韩精品一区第一页| 91免费视频网| 国产三级精品三级在线专区| 日日夜夜精品免费视频| 91在线精品秘密一区二区| 亚洲精品在线三区| 亚洲成人av在线电影| 99久久免费精品| 久久蜜桃av一区精品变态类天堂| 五月天一区二区| 色视频欧美一区二区三区| 国产无一区二区| 精品在线免费视频| 五月婷婷久久综合| 91视频免费观看| 亚洲国产精华液网站w|