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

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

?? mbus.c

?? SigmDesign SMP8634 media decode chip development SDK
?? C
?? 第 1 頁 / 共 2 頁
字號:
			// Wait for MBUS interface			if ((status = wait_for_mbus(pgbus, REG_BASE_host_interface+MIF_R1_CMD)))				goto exit_mbus_read_dram;			gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_ADD, addr);			gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_CNT, mbus_size);			if (xfer_dma_size == mbus_size)				gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_CMD, MBUS_LINEAR_VOID);			else				gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_CMD, MBUS_LINEAR);							addr += mbus_size;			xfer_dma_size -= mbus_size;		}							offset = (offset + half_dma_size) & (dma_size - 1); // dma_size is a power of 2		dmacpy_read_data(pdmacpy, offset, data, old_read_size);		data += old_read_size;		// Wait for MBUS interface		if ((status = wait_for_mbus(pgbus, REG_BASE_host_interface+MIF_R1_CMD)))			goto exit_mbus_read_dram;				// Wait for PCI Master		if ((status = wait_for_pci(pgbus, REG_BASE_host_interface+WRITE_ENABLE, REG_BASE_host_interface+WRITE_COUNTER)))			goto exit_mbus_read_dram;	}	offset = (offset + half_dma_size) & (dma_size - 1); // dma_size is a power of 2	dmacpy_read_data(pdmacpy, offset, data, read_size); exit_mbus_read_dram:	dmacpy_close(pdmacpy);	gbus_close(pgbus);	return status;} RMint32 mbus_write_picture(struct llad *pllad, RMuint32 addr, RMuint8 *data, RMuint16 x, RMuint16 y, RMuint32 buffer_width, RMuint8 xfer_mode, RMuint32 max_pci_size){	RMuint32 pci_size, xfer_size = 0;    	RMuint32 dma_size, dma_bus_address, half_dma_size, offset;	RMuint32 skip;	RMint32 status = 0;	struct gbus *pgbus;	struct dmacpy *pdmacpy;	if (max_pci_size > 65532) {		RMDBGLOG((MBUSDBG, "bad value for max_pci_size %lu\n", max_pci_size));		return max_pci_size;	}	pgbus = gbus_open(pllad);	pdmacpy = dmacpy_open(pllad);	dmacpy_get_info(pdmacpy, &dma_size, &dma_bus_address);	half_dma_size = dma_size / 2;	offset = 0;	// Wait for MBUS interface	if ((status = wait_for_mbus(pgbus, REG_BASE_host_interface+MIF_W1_CMD)))		goto exit_mbus_write_picture;	// Wait for PCI Master	if ((status = wait_for_pci(pgbus, REG_BASE_host_interface+READ_ENABLE, REG_BASE_host_interface+READ_COUNTER)))		goto exit_mbus_write_picture;	// Program the switchbox	hostsbox_pcimaster_channel1(pgbus);	// Program endianness (0 on little-endian systems, 1 on big-endian systems)	gbus_write_uint32(pgbus, REG_BASE_host_interface+READ_REVERSE, 0x0);	if (xfer_mode)		skip = ((buffer_width / 128) - 1) | 0x10000;	else		skip = buffer_width;	gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_W1_ADD, addr);	gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_W1_CNT, x + (y << 16));	gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_W1_SKIP, skip);	gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_W1_CMD, MBUS_RECTANGLE_VOID | xfer_mode);	pci_size = x * y;	while (pci_size > 0) {		if (xfer_size == 0) {			xfer_size = RMmin(max_pci_size, RMmin(half_dma_size, pci_size));			dmacpy_write_data(pdmacpy, offset, data, xfer_size);		}		// PCI Master side		status = get_pci_status(pgbus, REG_BASE_host_interface+READ_COUNTER);		if (status == 0) {			gbus_write_uint32(pgbus, REG_BASE_host_interface+READ_ENABLE, 0);			gbus_write_uint32(pgbus, REG_BASE_host_interface+READ_ADDRESS, dma_bus_address + offset);			gbus_write_uint32(pgbus, REG_BASE_host_interface+READ_COUNTER, xfer_size);			gbus_write_uint32(pgbus, REG_BASE_host_interface+READ_ENABLE, 1);			data += xfer_size;			pci_size -= xfer_size;			offset = (offset + half_dma_size) & (dma_size - 1); // dma_size is a power of 2			xfer_size = 0;		}		else if (status < 0)			goto exit_mbus_write_picture;			}	// Wait for the void command to be executed to ensure	// all the data has been written to DRAM.	if ((status = wait_for_mbus(pgbus, REG_BASE_host_interface+MIF_W1_CMD)))		goto exit_mbus_write_picture;	gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_W1_CMD, 0); // reset tiled mode	// Wait for PCI to finish	if ((status = wait_for_pci(pgbus, REG_BASE_host_interface+READ_ENABLE, REG_BASE_host_interface+READ_COUNTER)))		goto exit_mbus_write_picture; exit_mbus_write_picture:	dmacpy_close(pdmacpy);	gbus_close(pgbus);	return status;}RMint32 mbus_read_picture (struct llad *pllad, RMuint32 addr, RMuint8 *data, RMuint16 x, RMuint16 y, RMuint32 buffer_width, RMuint8 tiled_xfer, RMuint32 max_pci_size){	RMuint32 pci_size = 0;	RMuint32 line_read = 0;	RMuint32 dma_size, dma_bus_address, half_dma_size, offset;	RMuint32 skip;	RMuint16 x_xfer;	RMuint32 i, j;	RMint32 status = 0;	RMuint32 cur_address;	RMuint32 cur_y;	RMuint32 max_line_count;	struct gbus *pgbus;	struct dmacpy *pdmacpy;	RMuint32 base_addr;	if ((max_pci_size % 4) || (max_pci_size > 65532)) {		RMDBGLOG((MBUSDBG, "bad value for max_pci_size %lu\n", max_pci_size));		return max_pci_size;	}	if ((x == 0) || (y == 0))		return 1;		pgbus = gbus_open(pllad);	pdmacpy = dmacpy_open(pllad);	dmacpy_get_info(pdmacpy, &dma_size, &dma_bus_address);	half_dma_size = dma_size / 2;	offset = 0;#if (EM86XX_CHIP < EM86XX_CHIPID_TANGO15)	// read size must be a multiple of 4 on mambo/tango	x_xfer = (x + 3) & ~3;#else	x_xfer = x;#endif	max_pci_size = RMmin(max_pci_size,half_dma_size);	if (max_pci_size < x_xfer) {		RMDBGLOG((MBUSDBG, "max_pci_size [%lu] must be large enough to transfer one line of [%lu] bytes each\n", max_pci_size,x));		status = max_pci_size; 		goto exit_mbus_read_picture;	}	max_line_count = max_pci_size / x_xfer;	// Wait for MBUS interface	if ((status = wait_for_mbus(pgbus, REG_BASE_host_interface+MIF_R1_CMD)))		goto exit_mbus_read_picture;	// Wait for PCI Master	if ((status = wait_for_pci(pgbus, REG_BASE_host_interface+WRITE_ENABLE, REG_BASE_host_interface+WRITE_COUNTER)))		goto exit_mbus_read_picture;	// Program the switchbox	hostsbox_pcimaster_channel1(pgbus);	// Program endianness (0 on little-endian systems, 1 on big-endian systems)	gbus_write_uint32(pgbus, REG_BASE_host_interface+READ_REVERSE, 0x0);	if (tiled_xfer) 		skip = ((buffer_width / 128) - 1) | 0x10000;	else		skip = buffer_width;	j = y;	if (tiled_xfer) {		/* get the curt line in the tile and compute base_addr */		cur_y = (addr/128) % 32; 		base_addr = addr - (cur_y*128); 	} else {		cur_y = 0;		base_addr = addr;	}	while (j>0) {		RMuint32 line_count = RMmin(max_line_count, j);		if (tiled_xfer) {			cur_address = base_addr + (cur_y % 32) * 128 + (cur_y/32) * buffer_width * 32;		} else {			cur_address = base_addr + cur_y * buffer_width;		}		gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_ADD, cur_address);		gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_CNT, x_xfer + (line_count << 16));		gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_SKIP, skip);		gbus_write_uint32(pgbus, REG_BASE_host_interface+MIF_R1_CMD, MBUS_RECTANGLE_VOID | (tiled_xfer ? 0x8 : 0x0));				pci_size = x_xfer * line_count;				gbus_write_uint32(pgbus, REG_BASE_host_interface+WRITE_ENABLE, 0);		gbus_write_uint32(pgbus, REG_BASE_host_interface+WRITE_ADDRESS, dma_bus_address + offset);		gbus_write_uint32(pgbus, REG_BASE_host_interface+WRITE_COUNTER, pci_size);		gbus_write_uint32(pgbus, REG_BASE_host_interface+WRITE_ENABLE, 1);		RMDBGLOG((MBUSDBG, "MBUS 0x%08lx %ld %ld %ld %ld\n", cur_address, x_xfer, line_count, skip&~0x10000, pci_size));		offset = (offset + half_dma_size) & (dma_size - 1); // dma_size is a power of 2		for (i = 0; i < line_read; i++) {			dmacpy_read_data(pdmacpy, offset + i * x_xfer, data, x);			data += x;		}		line_read = line_count;		// Wait for MBUS interface		if ((status = wait_for_mbus(pgbus, REG_BASE_host_interface+MIF_R1_CMD)))			goto exit_mbus_read_picture;				// Wait for PCI Master		if ((status = wait_for_pci(pgbus, REG_BASE_host_interface+WRITE_ENABLE, REG_BASE_host_interface+WRITE_COUNTER)))			goto exit_mbus_read_picture;		j -= line_count;		cur_y += line_count;	}		offset = (offset + half_dma_size) & (dma_size - 1); // dma_size is a power of 2	for (i = 0; i < line_read; i ++) {		dmacpy_read_data(pdmacpy, offset + i * x_xfer, data + i * x, x);	} exit_mbus_read_picture:	dmacpy_close(pdmacpy);	gbus_close(pgbus);		return status;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利精品一区| 国产成人精品影视| 亚洲人成网站色在线观看| 2021中文字幕一区亚洲| 精品日韩av一区二区| 91精品在线观看入口| 91精品一区二区三区久久久久久 | 欧美老肥妇做.爰bbww| 91丝袜国产在线播放| 色噜噜狠狠色综合中国| 欧美日韩一区二区不卡| 欧美一区二区在线看| 日韩一区二区三区四区五区六区| 日韩亚洲欧美中文三级| 亚洲日本丝袜连裤袜办公室| 欧美激情在线看| 1024国产精品| 亚洲福利一区二区| 日韩电影一区二区三区| 久久99精品一区二区三区三区| 国产精品99久久久久| 97精品久久久午夜一区二区三区| 日本久久精品电影| 欧美日韩电影一区| 26uuu成人网一区二区三区| 国产欧美一区二区精品秋霞影院| 亚洲色图色小说| 日韩高清不卡一区二区| 国产大陆亚洲精品国产| 欧美综合一区二区| 日韩欧美亚洲一区二区| 国产精品不卡一区二区三区| 午夜精品久久久久| 国产乱妇无码大片在线观看| 欧美在线播放高清精品| 精品国产91洋老外米糕| 亚洲精品日产精品乱码不卡| 奇米888四色在线精品| 成人深夜福利app| 91精品国产色综合久久不卡电影 | 不卡一区二区三区四区| 在线免费观看日韩欧美| 亚洲日本在线天堂| 美女视频黄频大全不卡视频在线播放| 精品制服美女丁香| 一本色道**综合亚洲精品蜜桃冫| 日韩欧美国产一区二区在线播放 | 色综合色综合色综合色综合色综合| 欧美色图天堂网| 国产日韩精品一区二区三区在线| 亚洲一级片在线观看| 国产电影精品久久禁18| 日韩欧美另类在线| 亚洲电影一级片| 91网上在线视频| 国产亚洲欧美色| 免费观看91视频大全| 欧美日韩在线三级| 国产精品久久久久久久久免费相片| 日韩高清一区在线| 欧美性猛交一区二区三区精品 | 国产精品不卡在线| 国产精品中文欧美| 日韩小视频在线观看专区| 亚洲大片精品永久免费| 99国产精品久| 国产精品美女久久久久久久久久久 | 日韩欧美国产1| 视频在线观看一区| 欧美日韩高清一区二区| 一区二区三区中文字幕电影| 高清免费成人av| 亚洲人成小说网站色在线| 成人午夜短视频| 国产欧美一区视频| 激情综合一区二区三区| 欧美精品 国产精品| 亚洲欧洲综合另类| 91极品视觉盛宴| 亚洲国产视频网站| 欧美日韩一区三区四区| 五月激情综合色| 欧美久久一二三四区| 亚洲成av人片www| 91精品国产色综合久久不卡蜜臀| 亚欧色一区w666天堂| 日韩一区二区在线观看视频| 九九久久精品视频| 国产亚洲欧美激情| 99在线精品一区二区三区| 亚洲人妖av一区二区| 99re这里只有精品视频首页| 亚洲美腿欧美偷拍| 在线播放中文字幕一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩亚洲欧美一区二区三区| 国产在线观看免费一区| 一区在线观看视频| 欧美高清dvd| 狠狠色综合播放一区二区| 国产亚洲精品超碰| 91视频一区二区| 天天做天天摸天天爽国产一区| 日韩欧美精品三级| av电影在线不卡| 一区二区三区不卡在线观看| 在线观看91精品国产麻豆| 久久99国产精品尤物| 1区2区3区精品视频| 欧美日韩1区2区| 国产精品综合网| 亚洲自拍都市欧美小说| 日韩精品中文字幕一区二区三区| 成人网男人的天堂| 美女视频一区二区三区| 中文字幕一区二区日韩精品绯色| 欧美日韩免费观看一区二区三区| 久久国产夜色精品鲁鲁99| 国产精品久久久久影院亚瑟| 欧美精品久久天天躁| 99精品在线免费| 经典三级一区二区| 亚洲免费观看视频| 久久久综合九色合综国产精品| 欧美在线观看视频一区二区三区| 国产成人在线视频网址| 婷婷综合另类小说色区| 亚洲欧美日韩一区二区三区在线观看| 欧美一区二区三区系列电影| 色又黄又爽网站www久久| 国产一区二区三区电影在线观看| 亚洲第一会所有码转帖| 日韩理论在线观看| 国产视频一区在线播放| 欧美一区二区国产| 欧美体内she精高潮| 91在线视频网址| 成人综合婷婷国产精品久久蜜臀| 男男gaygay亚洲| 日韩和的一区二区| 一区二区三区高清在线| 成人免费在线视频观看| 亚洲v精品v日韩v欧美v专区| 国产精品久久久久天堂| 久久久精品国产99久久精品芒果| 日韩三级视频在线看| 91麻豆精品国产| 91精品国产免费久久综合| 一本大道久久a久久综合| 99久久er热在这里只有精品66| 粉嫩一区二区三区在线看| 国产激情视频一区二区三区欧美| 精品一区二区三区在线视频| 免费观看在线综合色| 久久精品国产久精国产爱| 久久精品国产一区二区| 蜜桃在线一区二区三区| 美国十次综合导航| 狠狠网亚洲精品| 国产精品一级片在线观看| 粉嫩一区二区三区在线看| 成人亚洲精品久久久久软件| 成人黄色综合网站| 不卡区在线中文字幕| 99国产精品久久久久| 91网址在线看| 欧美日韩国产天堂| 日韩欧美国产电影| 久久这里只有精品视频网| 国产精品视频看| 亚洲精品欧美激情| 偷拍一区二区三区四区| 久久福利视频一区二区| 国产高清成人在线| 91久久精品一区二区三| 91精品国产综合久久久蜜臀图片| 精品国产一区二区亚洲人成毛片| 国产精品天美传媒沈樵| 亚洲视频一区在线观看| 天天色图综合网| 国产真实乱对白精彩久久| 成人av小说网| 91精品国产一区二区三区香蕉| 26uuu国产日韩综合| 亚洲欧美中日韩| 日本最新不卡在线| 国产传媒日韩欧美成人| 欧美探花视频资源| 久久久一区二区三区捆绑**| 亚洲色图在线播放| 精品综合免费视频观看| av亚洲精华国产精华精| 日韩精品一区二| 玉米视频成人免费看| 国产露脸91国语对白| 在线视频国内一区二区| 久久精品水蜜桃av综合天堂| 亚洲一区二区三区中文字幕 | 精品国产1区2区3区| 亚洲精品欧美二区三区中文字幕|