prcm-debug.c

来自「omap3 linux 2.6 用nocc去除了冗余代码」· C语言 代码 · 共 2,079 行 · 第 1/5 页

C
2,079
字号
		goto test_fail;	ret = resource_test_3("sgx");	if (ret != 0)		goto test_fail;	ret = resource_notification_test("graphics", "sgx");	if (ret != 0)		goto test_fail;	ret = resource_test_1("camera", "cam");	if (ret != 0)		goto test_fail;	ret = resource_test_2("cam");	if (ret != 0)		goto test_fail;	ret = resource_test_3("cam");	if (ret != 0)		goto test_fail;	ret = resource_notification_test("camera", "cam");	if (ret != 0)		goto test_fail;	ret = test_logical_resource("core");test_fail:	turn_power_domains_on(DOM_CAM);	turn_power_domains_on(DOM_SGX);	/* Restore clock registers */	CM_FCLKEN_SGX = sgxf;	CM_ICLKEN_SGX = sgxi;	CM_FCLKEN_CAM = camf;	CM_ICLKEN_CAM = cami;	if (ret != 0)		printk(KERN_ERR"Test Failed\n");	else		printk(KERN_INFO"Test Passed\n");	return 0;}EXPORT_SYMBOL(resource_test);int resource_test_1(const char *usr_name, char *name){	struct res_handle *res;	int ret = 0;	u8 result, level;	printk(KERN_INFO"Entry %s: %s\n", __FUNCTION__, name);	res = resource_get(usr_name, name);	ret = resource_request(res, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res, POWER_DOMAIN_RET);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x1)			printk(KERN_ERR"FAILED!!!! Power domain %s not in RET"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_release(res);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x0)			printk(KERN_ERR"FAILED!!!! Power domain %s not in OFF"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res, POWER_DOMAIN_RET);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x1)			printk(KERN_ERR"FAILED!!!! Power domain %s not in RET"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_release(res);	if (ret == 0) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		printk(KERN_ERR"FAILED!!!! Power domain %s went to OFF after "				"RET\n", name);	}	printk(KERN_INFO"(result) : %x\n", (result));	ret = resource_request(res, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	level = resource_get_level(res);	if (level != POWER_DOMAIN_ON)		printk(KERN_ERR"resource_get_level failed for domain %s"				"\n", name);	resource_release(res);	resource_put(res);	printk(KERN_INFO"Exit %s: %s\n", __FUNCTION__, name);	return 0;}int resource_test_2(char *name){	struct res_handle *res_1, *res_2, *res_3, *res_4;	int ret = 0;	u8 result, level;	printk(KERN_INFO"Entry %s: %s\n", __FUNCTION__, name);	res_1 = resource_get("Name_1", name);	ret = resource_request(res_1, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_1->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	res_2 = resource_get("Name_2", name);	ret = resource_request(res_2, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_2->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	res_3 = resource_get("Name_3", name);	ret = resource_request(res_3, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_3->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	res_4 = resource_get("Name_4", name);	ret = resource_request(res_4, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_4->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_release(res_4);	if (!ret) {		prcm_get_power_domain_state(res_4->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	resource_put(res_4);	ret = resource_release(res_3);	if (!ret) {		prcm_get_power_domain_state(res_3->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	resource_put(res_3);	ret = resource_release(res_2);	if (!ret) {		prcm_get_power_domain_state(res_2->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	resource_put(res_2);	ret = resource_release(res_1);	if (!ret) {		prcm_get_power_domain_state(res_1->res->prcm_id, &result);		if ((result) != 0x0)			printk(KERN_ERR"Last one to release: FAILED!!!! Power "					"domain %s not in OFF\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	level = resource_get_level(res_1);	if (level != POWER_DOMAIN_OFF)		printk(KERN_ERR"resource_get_level failed for domain %s"				"\n", name);	resource_put(res_1);	printk(KERN_INFO"Exit %s: %s\n", __FUNCTION__, name);	return 0;}int resource_test_3(char *name){	struct res_handle *res_1, *res_2, *res_3, *res_4;	int ret = 0;	u8 result, level;	printk(KERN_INFO"Entry %s: %s\n", __FUNCTION__, name);	/** One ON, three RET and then change ON to RET **/	/** State should be RET **/	res_1 = resource_get("Name_1", name);	ret = resource_request(res_1, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_1->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	res_2 = resource_get("Name_2", name);	ret = resource_request(res_2, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_2->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res_2, POWER_DOMAIN_RET);	if (!ret) {		prcm_get_power_domain_state(res_2->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	res_3 = resource_get("Name_3", name);	ret = resource_request(res_3, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_3->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res_3, POWER_DOMAIN_RET);	if (!ret) {		prcm_get_power_domain_state(res_3->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	res_4 = resource_get("Name_4", name);	ret = resource_request(res_4, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_4->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res_4, POWER_DOMAIN_RET);	if (!ret) {		prcm_get_power_domain_state(res_4->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res_1, POWER_DOMAIN_RET);	if (!ret) {		prcm_get_power_domain_state(res_1->res->prcm_id, &result);		if ((result) != 0x1)			printk(KERN_ERR"FAILED!!!! Power domain %s not in RET"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res_4, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_4->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	resource_release(res_4);	resource_put(res_4);	ret = resource_request(res_3, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_3->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	resource_release(res_3);	resource_put(res_3);	ret = resource_request(res_2, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_2->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	resource_release(res_2);	resource_put(res_2);	ret = resource_request(res_1, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res_1->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	level = resource_get_level(res_1);	if (level != POWER_DOMAIN_ON)		printk(KERN_ERR"resource_get_level failed for domain %s"				"\n", name);	resource_release(res_1);	resource_put(res_1);	printk(KERN_INFO"Exit %s: %s\n", __FUNCTION__, name);	return ret;}int resource_notification_test(const char *usr_name, char *name){	struct res_handle *res;	int ret = 0;	u8 result;	printk(KERN_INFO"Entry %s: %s\n", __FUNCTION__, name);	res = resource_get(usr_name, name);	resource_register_pre_notification(res, &nb_test_pre, POWER_DOMAIN_ON);	resource_register_pre_notification(res, &nb_test_pre, POWER_DOMAIN_RET);	ret = resource_request(res, POWER_DOMAIN_ON);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x3)			printk(KERN_ERR"FAILED!!!! Power domain %s not in ON"					"\n", name);			printk(KERN_INFO"(result) : %x\n", (result));	}	ret = resource_request(res, POWER_DOMAIN_RET);	if (!ret) {		prcm_get_power_domain_state(res->res->prcm_id, &result);		if ((result) != 0x1)			printk(KERN_ERR"FAILED!!!! Power domain %s not in RET"					"\n", name);			printk(KERN_I

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?