コード例 #1
0
static int read_sysfs_path(void)
{
	int arr_num;

	arr_cnt = PWR_SYSFS_PATH_NUM;

	arr = kzalloc(arr_cnt * sizeof(struct power_sysfs_array),
			GFP_KERNEL);

	if (arr != NULL) {
		for (arr_num = 0; arr_num < arr_cnt; arr_num++) {
			arr[arr_num].group = default_pwr_sysfs_path[arr_num][0];
			arr[arr_num].user_node = default_pwr_sysfs_path[arr_num][1];
			arr[arr_num].kernel_node = default_pwr_sysfs_path[arr_num][2];
			if (arr[arr_num].kernel_node == NULL) {
				pr_err("%s : ERROR get %ith kernel_node\n", __func__, arr_num);
				goto err_get_array;
			} else if (check_mandatory_path(arr_num)) {
				if (!strcmp(arr[arr_num].kernel_node, "NULL")) {
					pr_err("%s : ERROR get mandatory path %s\n", __func__,
							arr[arr_num].user_node);
					goto err_get_array;
				}
				pr_info("%s : %s path is mandatory \n", __func__,
						arr[arr_num].user_node);
			}
		}
	} else {
		pr_err("%s : ERROR get sysfs array\n", __func__);
		return -1;
	}

/* debug */
/*
	for (arr_num = 0; arr_num < arr_cnt; arr_num++)
		pr_err("%s : get %dth node is %s, %s, %s\n", __func__, arr_num,
				arr[arr_num].group, arr[arr_num].user_node,
				arr[arr_num].kernel_node);
*/
	return 0;

err_get_array:
	kzfree(arr);

	return -1;

}
コード例 #2
0
static int power_sysfs_parse_dt(struct platform_device *pdev)
{
	struct device_node *node = pdev->dev.of_node;
	int arr_num, ret, i;

	arr_cnt = of_property_count_strings(node, "sysfs,node") / 3;
	if (arr_cnt > 0)
		pr_info("%s : Total sysfs node is %d\n", __func__, arr_cnt);
	else {
		pr_err("%s : ERROR sysfs node isn't exist\n", __func__);
		return 0;
	}

	arr = kzalloc(arr_cnt * sizeof(struct power_sysfs_array),
			GFP_KERNEL);
	if (arr != NULL) {
		for (arr_num = 0, i = 0; arr_num < arr_cnt; arr_num++) {
			ret = of_property_read_string_index(node, "sysfs,node",
					i++, &arr[arr_num].group);
			if (ret) {
				pr_err("%s : ERROR get %ith group\n", __func__, arr_num);
				goto err_get_array;
			}
			ret = of_property_read_string_index(node, "sysfs,node",
					i++, &arr[arr_num].user_node);
			if (ret) {
				pr_err("%s : ERROR get %ith user_node\n", __func__, arr_num);
				goto err_get_array;
			}
			ret = of_property_read_string_index(node, "sysfs,node",
					i++, &arr[arr_num].kernel_node);
			if (ret) {
				pr_err("%s : ERROR get %ith kernel_node\n", __func__, arr_num);
				goto err_get_array;
			} else if (check_mandatory_path(arr_num)) {
				if (!strcmp(arr[arr_num].kernel_node, "NULL")) {
					pr_err("%s : ERROR get mandatory path %s\n", __func__,
							arr[arr_num].user_node);
					goto err_get_array;
				}
				pr_info("%s : %s path is mandatory \n", __func__,
						arr[arr_num].user_node);
			}
		}
	} else {
		pr_err("%s : ERROR get sysfs array\n", __func__);
		return -1;
	}
/* debug */
	for (arr_num = 0; arr_num < arr_cnt; arr_num++)
		pr_err("%s : get %dth node is %s, %s, %s\n", __func__, arr_num,
				arr[arr_num].group, arr[arr_num].user_node,
				arr[arr_num].kernel_node);

	return 0;

err_get_array:
	kzfree(arr);

	return -1;
}