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; }
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; }