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 + -
显示快捷键?