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

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

?? device-init.c

?? linux內核源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
}static int ps3_setup_storage_dev(const struct ps3_repository_device *repo,				 enum ps3_match_id match_id){	int result;	struct ps3_storage_device *p;	u64 port, blk_size, num_blocks;	unsigned int num_regions, i;	pr_debug(" -> %s:%u: match_id %u\n", __func__, __LINE__, match_id);	result = ps3_repository_read_stor_dev_info(repo->bus_index,						   repo->dev_index, &port,						   &blk_size, &num_blocks,						   &num_regions);	if (result) {		printk(KERN_ERR "%s:%u: _read_stor_dev_info failed %d\n",		       __func__, __LINE__, result);		return -ENODEV;	}	pr_debug("%s:%u: (%u:%u:%u): port %lu blk_size %lu num_blocks %lu "		 "num_regions %u\n", __func__, __LINE__, repo->bus_index,		 repo->dev_index, repo->dev_type, port, blk_size, num_blocks,		 num_regions);	p = kzalloc(sizeof(struct ps3_storage_device) +		    num_regions * sizeof(struct ps3_storage_region),		    GFP_KERNEL);	if (!p) {		result = -ENOMEM;		goto fail_malloc;	}	p->sbd.match_id = match_id;	p->sbd.dev_type = PS3_DEVICE_TYPE_SB;	p->sbd.bus_id = repo->bus_id;	p->sbd.dev_id = repo->dev_id;	p->sbd.d_region = &p->dma_region;	p->blk_size = blk_size;	p->num_regions = num_regions;	result = ps3_repository_find_interrupt(repo,					       PS3_INTERRUPT_TYPE_EVENT_PORT,					       &p->sbd.interrupt_id);	if (result) {		printk(KERN_ERR "%s:%u: find_interrupt failed %d\n", __func__,		       __LINE__, result);		result = -ENODEV;		goto fail_find_interrupt;	}	/* FIXME: Arrange to only do this on a 'cold' boot */	result = ps3_storage_wait_for_device(repo);	if (result) {		printk(KERN_ERR "%s:%u: storage_notification failed %d\n",		       __func__, __LINE__, result);		result = -ENODEV;		goto fail_probe_notification;	}	for (i = 0; i < num_regions; i++) {		unsigned int id;		u64 start, size;		result = ps3_repository_read_stor_dev_region(repo->bus_index,							     repo->dev_index,							     i, &id, &start,							     &size);		if (result) {			printk(KERN_ERR			       "%s:%u: read_stor_dev_region failed %d\n",			       __func__, __LINE__, result);			result = -ENODEV;			goto fail_read_region;		}		pr_debug("%s:%u: region %u: id %u start %lu size %lu\n",			 __func__, __LINE__, i, id, start, size);		p->regions[i].id = id;		p->regions[i].start = start;		p->regions[i].size = size;	}	result = ps3_system_bus_device_register(&p->sbd);	if (result) {		pr_debug("%s:%u ps3_system_bus_device_register failed\n",			 __func__, __LINE__);		goto fail_device_register;	}	pr_debug(" <- %s:%u\n", __func__, __LINE__);	return 0;fail_device_register:fail_read_region:fail_probe_notification:fail_find_interrupt:	kfree(p);fail_malloc:	pr_debug(" <- %s:%u: fail.\n", __func__, __LINE__);	return result;}static int __init ps3_register_vuart_devices(void){	int result;	unsigned int port_number;	pr_debug(" -> %s:%d\n", __func__, __LINE__);	result = ps3_repository_read_vuart_av_port(&port_number);	if (result)		port_number = 0; /* av default */	result = ps3_setup_vuart_device(PS3_MATCH_ID_AV_SETTINGS, port_number);	WARN_ON(result);	result = ps3_repository_read_vuart_sysmgr_port(&port_number);	if (result)		port_number = 2; /* sysmgr default */	result = ps3_setup_vuart_device(PS3_MATCH_ID_SYSTEM_MANAGER,		port_number);	WARN_ON(result);	pr_debug(" <- %s:%d\n", __func__, __LINE__);	return result;}static int __init ps3_register_sound_devices(void){	int result;	struct layout {		struct ps3_system_bus_device dev;		struct ps3_dma_region d_region;		struct ps3_mmio_region m_region;	} *p;	pr_debug(" -> %s:%d\n", __func__, __LINE__);	p = kzalloc(sizeof(*p), GFP_KERNEL);	if (!p)		return -ENOMEM;	p->dev.match_id = PS3_MATCH_ID_SOUND;	p->dev.dev_type = PS3_DEVICE_TYPE_IOC0;	p->dev.d_region = &p->d_region;	p->dev.m_region = &p->m_region;	result = ps3_system_bus_device_register(&p->dev);	if (result)		pr_debug("%s:%d ps3_system_bus_device_register failed\n",			__func__, __LINE__);	pr_debug(" <- %s:%d\n", __func__, __LINE__);	return result;}static int __init ps3_register_graphics_devices(void){	int result;	struct layout {		struct ps3_system_bus_device dev;	} *p;	pr_debug(" -> %s:%d\n", __func__, __LINE__);	p = kzalloc(sizeof(struct layout), GFP_KERNEL);	if (!p)		return -ENOMEM;	p->dev.match_id = PS3_MATCH_ID_GRAPHICS;	p->dev.dev_type = PS3_DEVICE_TYPE_IOC0;	result = ps3_system_bus_device_register(&p->dev);	if (result)		pr_debug("%s:%d ps3_system_bus_device_register failed\n",			__func__, __LINE__);	pr_debug(" <- %s:%d\n", __func__, __LINE__);	return result;}/** * ps3_register_repository_device - Register a device from the repositiory info. * */static int ps3_register_repository_device(	const struct ps3_repository_device *repo){	int result;	switch (repo->dev_type) {	case PS3_DEV_TYPE_SB_GELIC:		result = ps3_setup_gelic_device(repo);		if (result) {			pr_debug("%s:%d ps3_setup_gelic_device failed\n",				__func__, __LINE__);		}		break;	case PS3_DEV_TYPE_SB_USB:		/* Each USB device has both an EHCI and an OHCI HC */		result = ps3_setup_ehci_device(repo);		if (result) {			pr_debug("%s:%d ps3_setup_ehci_device failed\n",				__func__, __LINE__);		}		result = ps3_setup_ohci_device(repo);		if (result) {			pr_debug("%s:%d ps3_setup_ohci_device failed\n",				__func__, __LINE__);		}		break;	case PS3_DEV_TYPE_STOR_DISK:		result = ps3_setup_storage_dev(repo, PS3_MATCH_ID_STOR_DISK);		/* Some devices are not accessable from the Other OS lpar. */		if (result == -ENODEV) {			result = 0;			pr_debug("%s:%u: not accessable\n", __func__,				 __LINE__);		}		if (result)			pr_debug("%s:%u ps3_setup_storage_dev failed\n",				 __func__, __LINE__);		break;	case PS3_DEV_TYPE_STOR_ROM:		result = ps3_setup_storage_dev(repo, PS3_MATCH_ID_STOR_ROM);		if (result)			pr_debug("%s:%u ps3_setup_storage_dev failed\n",				 __func__, __LINE__);		break;	case PS3_DEV_TYPE_STOR_FLASH:		result = ps3_setup_storage_dev(repo, PS3_MATCH_ID_STOR_FLASH);		if (result)			pr_debug("%s:%u ps3_setup_storage_dev failed\n",				 __func__, __LINE__);		break;	default:		result = 0;		pr_debug("%s:%u: unsupported dev_type %u\n", __func__, __LINE__,			repo->dev_type);	}	return result;}/** * ps3_probe_thread - Background repository probing at system startup. * * This implementation only supports background probing on a single bus. */static int ps3_probe_thread(void *data){	struct ps3_repository_device *repo = data;	int result;	unsigned int ms = 250;	pr_debug(" -> %s:%u: kthread started\n", __func__, __LINE__);	do {		try_to_freeze();		pr_debug("%s:%u: probing...\n", __func__, __LINE__);		do {			result = ps3_repository_find_device(repo);			if (result == -ENODEV)				pr_debug("%s:%u: nothing new\n", __func__,					__LINE__);			else if (result)				pr_debug("%s:%u: find device error.\n",					__func__, __LINE__);			else {				pr_debug("%s:%u: found device (%u:%u:%u)\n",					 __func__, __LINE__, repo->bus_index,					 repo->dev_index, repo->dev_type);				ps3_register_repository_device(repo);				ps3_repository_bump_device(repo);				ms = 250;			}		} while (!result);		pr_debug("%s:%u: ms %u\n", __func__, __LINE__, ms);		if ( ms > 60000)			break;		msleep_interruptible(ms);		/* An exponential backoff. */		ms <<= 1;	} while (!kthread_should_stop());	pr_debug(" <- %s:%u: kthread finished\n", __func__, __LINE__);	return 0;}/** * ps3_start_probe_thread - Starts the background probe thread. * */static int __init ps3_start_probe_thread(enum ps3_bus_type bus_type){	int result;	struct task_struct *task;	static struct ps3_repository_device repo; /* must be static */	pr_debug(" -> %s:%d\n", __func__, __LINE__);	memset(&repo, 0, sizeof(repo));	repo.bus_type = bus_type;	result = ps3_repository_find_bus(repo.bus_type, 0, &repo.bus_index);	if (result) {		printk(KERN_ERR "%s: Cannot find bus (%d)\n", __func__, result);		return -ENODEV;	}	result = ps3_repository_read_bus_id(repo.bus_index, &repo.bus_id);	if (result) {		printk(KERN_ERR "%s: read_bus_id failed %d\n", __func__,			result);		return -ENODEV;	}	task = kthread_run(ps3_probe_thread, &repo, "ps3-probe-%u", bus_type);	if (IS_ERR(task)) {		result = PTR_ERR(task);		printk(KERN_ERR "%s: kthread_run failed %d\n", __func__,		       result);		return result;	}	pr_debug(" <- %s:%d\n", __func__, __LINE__);	return 0;}/** * ps3_register_devices - Probe the system and register devices found. * * A device_initcall() routine. */static int __init ps3_register_devices(void){	int result;	if (!firmware_has_feature(FW_FEATURE_PS3_LV1))		return -ENODEV;	pr_debug(" -> %s:%d\n", __func__, __LINE__);	/* ps3_repository_dump_bus_info(); */	result = ps3_start_probe_thread(PS3_BUS_TYPE_STORAGE);	ps3_register_vuart_devices();	ps3_register_graphics_devices();	ps3_repository_find_devices(PS3_BUS_TYPE_SB,		ps3_register_repository_device);	ps3_register_sound_devices();	pr_debug(" <- %s:%d\n", __func__, __LINE__);	return 0;}device_initcall(ps3_register_devices);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国模一区二区三区| 高清国产一区二区三区| 狠狠色丁香久久婷婷综合_中 | 国产精品资源网站| 99久久免费精品高清特色大片| 色狠狠一区二区三区香蕉| 欧美一区二区三区在线| 日韩欧美精品三级| 国产三级精品三级| 亚洲国产日韩精品| 成人做爰69片免费看网站| 欧美综合一区二区三区| 久久综合狠狠综合| 亚洲国产另类av| 国产成人三级在线观看| 欧美日韩亚洲不卡| 国产精品美日韩| 亚洲精品老司机| 紧缚奴在线一区二区三区| 91蝌蚪porny| 在线不卡免费av| 中文字幕欧美一| 极品瑜伽女神91| 欧美日韩国产在线观看| 亚洲欧洲日本在线| 国产一区二区三区黄视频 | 国产成人亚洲综合a∨婷婷图片| 成人午夜碰碰视频| 精品美女在线观看| 亚洲已满18点击进入久久| 国产电影一区在线| 欧美变态tickle挠乳网站| 伊人色综合久久天天| 国产精品77777竹菊影视小说| 91.com视频| 亚洲视频每日更新| 99精品国产一区二区三区不卡| 欧美精品一区二区在线观看| 午夜精品在线看| 色系网站成人免费| 亚洲伦理在线免费看| av在线不卡电影| 中文字幕第一区二区| 国产乱码精品一区二区三区五月婷| 欧美日韩国产中文| 亚洲小少妇裸体bbw| 在线精品视频免费观看| 国产精品家庭影院| 97se亚洲国产综合自在线| 国产三区在线成人av| 国产精品一二三四五| 久久精品一级爱片| 国产麻豆精品theporn| 日韩精品一区二区在线| 久久99国产精品久久99| 精品欧美乱码久久久久久1区2区| 麻豆91在线看| 久久久亚洲精品一区二区三区| 国产在线播放一区| 国产精品久久久久影院| 精品在线观看视频| 日韩一二三区不卡| 国产一区二区电影| 国产精品女同互慰在线看| 99久久精品国产导航| 国产精品精品国产色婷婷| 91久久精品国产91性色tv| 亚洲国产aⅴ成人精品无吗| 成人爽a毛片一区二区免费| 亚洲精品视频在线| 欧美日韩不卡一区二区| 麻豆一区二区三| 国产精品美女久久久久久久久| 色域天天综合网| 亚洲综合在线第一页| 欧美色视频一区| 麻豆国产91在线播放| 国产精品久久久久国产精品日日| 色天使久久综合网天天| 亚洲成人动漫精品| 久久久高清一区二区三区| 色综合天天视频在线观看| 日日摸夜夜添夜夜添精品视频| 欧美www视频| 99久久婷婷国产综合精品 | 国产精品12区| 一区二区三区四区视频精品免费| 欧美一卡二卡三卡| 成人免费视频app| 亚洲成精国产精品女| 久久免费精品国产久精品久久久久| a美女胸又www黄视频久久| 午夜一区二区三区视频| 国产视频在线观看一区二区三区 | 亚洲精品日产精品乱码不卡| 欧美一级午夜免费电影| 99re这里都是精品| 奇米精品一区二区三区在线观看| 国产精品久久久久桃色tv| 欧美性感一区二区三区| 丰满岳乱妇一区二区三区| 日韩av成人高清| 亚洲综合在线第一页| 国产喷白浆一区二区三区| 欧美妇女性影城| 色中色一区二区| 高清国产一区二区三区| 麻豆国产欧美一区二区三区| 亚洲免费毛片网站| 久久久久国产精品麻豆ai换脸| 欧美久久久久中文字幕| 色综合天天综合色综合av| 日韩av中文字幕一区二区三区| 综合久久综合久久| 国产欧美一区二区三区鸳鸯浴 | 日本一区二区三区高清不卡| 欧美一区二区视频观看视频| 国产成人自拍高清视频在线免费播放| 亚洲一区二区三区影院| 中文字幕日韩av资源站| 国产亚洲综合性久久久影院| 日韩视频一区二区三区| 欧美日韩免费观看一区二区三区 | 亚洲欧美电影一区二区| 一二三四区精品视频| 亚洲成人一二三| 日韩av不卡一区二区| 精品一区二区在线观看| 国产不卡在线一区| 色综合久久中文字幕综合网| 在线观看三级视频欧美| 欧美无人高清视频在线观看| 欧美一级日韩不卡播放免费| 精品国产免费人成电影在线观看四季| 久久久一区二区三区| 亚洲欧美日韩综合aⅴ视频| 亚洲靠逼com| 青青草97国产精品免费观看| 国产真实乱偷精品视频免| 99久久久久久99| 7878成人国产在线观看| 久久这里都是精品| 亚洲日本韩国一区| 蜜桃视频在线观看一区| 国产iv一区二区三区| 欧洲国产伦久久久久久久| 日韩欧美综合一区| 中文字幕一区二区不卡| 日韩激情在线观看| 成人久久久精品乱码一区二区三区| 色悠悠久久综合| 日韩免费看的电影| 亚洲色图欧洲色图婷婷| 久久精品国产亚洲一区二区三区| 成人av电影观看| 欧美一区二区三区在线观看视频| 国产精品久久久久毛片软件| 午夜欧美大尺度福利影院在线看| 国产精品一区三区| 在线播放中文一区| 中文一区在线播放| 日韩av不卡在线观看| 色综合色狠狠天天综合色| 久久这里都是精品| 天堂成人免费av电影一区| av动漫一区二区| 日韩欧美一级二级三级久久久| 亚洲欧美国产高清| 成人夜色视频网站在线观看| 5858s免费视频成人| 亚洲女女做受ⅹxx高潮| 国产精品白丝av| 欧美不卡视频一区| 亚洲成a人片在线不卡一二三区| 成人福利视频网站| 久久影视一区二区| 美女视频黄免费的久久| 91成人免费电影| 国产精品国产三级国产三级人妇| 久久99久久精品| 日韩欧美一级二级三级久久久| 亚洲成人av一区二区| 日本道免费精品一区二区三区| 亚洲国产成人自拍| 久久精品国产亚洲5555| 欧美日韩高清一区二区三区| 亚洲影视在线播放| 欧美最猛黑人xxxxx猛交| 亚洲精品视频自拍| 一本一道综合狠狠老| 亚洲久草在线视频| 91在线看国产| 一区二区三区高清| 在线这里只有精品| 亚洲美女免费在线| 日本韩国一区二区| 亚洲小说欧美激情另类| 欧美性色欧美a在线播放| 亚洲一区二区三区自拍| 欧美老女人第四色|