int ilitek_create_sysfsnode(void)
{
	int ret = 0;
	struct i2c_client *client = ilitek_data->client;
	ilitek_data->ilitek_func_kobj = kobject_create_and_add("touchscreen", NULL);
	if (ilitek_data->ilitek_func_kobj == NULL) {
		tp_log_err("kobject_create_and_add failed\n");
	} else {
		ret = sysfs_create_group(ilitek_data->ilitek_func_kobj, ilitek_attribute_group);
		if (ret < 0) {
			tp_log_err("sysfs_create_group failed\n");
			kobject_put(ilitek_data->ilitek_func_kobj);
		}
	}
	ret = sysfs_create_group(&client->dev.kobj, ilitek_attribute_group);
		if (ret < 0) {
			tp_log_err("sysfs_create_group failed\n");
			kobject_put(&client->dev.kobj);
		}
	return ret;
}
int32_t ilitek_create_tool_node(void)
{
	int32_t ret = 0;
	// allocate character device driver buffer
	ret = alloc_chrdev_region(&ilitek_dev.devno, 0, 1, "ilitek_file");
	if (ret) {
		tp_log_err("can't allocate chrdev\n");
		//return ret;
	} else {
		tp_log_info("register chrdev(%d, %d)\n", MAJOR(ilitek_dev.devno), MINOR(ilitek_dev.devno));
		// initialize character device driver
		cdev_init(&ilitek_dev.cdev, &ilitek_fops);
		ilitek_dev.cdev.owner = THIS_MODULE;
		ret = cdev_add(&ilitek_dev.cdev, ilitek_dev.devno, 1);
		if (ret < 0) {
			tp_log_err("add character device error, ret %d\n", ret);
			//return ret;
		} else {
			ilitek_dev.class = class_create(THIS_MODULE, "ilitek_file");
			if (IS_ERR(ilitek_dev.class)) {
				tp_log_err("create class, error\n");
				//return ret;
			}
			device_create(ilitek_dev.class, NULL, ilitek_dev.devno, NULL, "ilitek_ctrl");
		}
	}
	ilitek_proc = proc_create("ilitek_ctrl", ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_fops);
	if (ilitek_proc == NULL) {
		tp_log_err("proc_create(ilitek_ctrl, ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_fops) fail\n");
	}
	ilitek_proc_irq_enable = proc_create("ilitek_irq_enable", ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_irq_enable_fops);
	if (ilitek_proc_irq_enable == NULL) {
		tp_log_err("proc_create(ilitek_irq_enable, ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_irq_enable_fops) fail\n");
	}
#ifdef ILITEK_TUNING_NODE
	ilitek_proc_debug = proc_create("ilitek_debug", ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_debug_fops);
	if (ilitek_proc_debug == NULL) {
		tp_log_err("proc_create(ilitek_debug, ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_debug_fops) fail\n");
	}
	ilitek_proc_debug_switch = proc_create("ilitek_debug_switch", ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_debug_fops_switch);
	if (ilitek_proc_debug_switch == NULL) {
		tp_log_err("proc_create(ilitek_debug, ILITEK_DEVICE_NODE_PERMISSON, NULL, &ilitek_debug_fops) fail\n");
	}
	init_waitqueue_head(&(ilitek_data->inq));
	ilitek_data->debug_data_frame = 0;
#endif
    ilitek_sensortest_init();
	ilitek_proc_entry = proc_mkdir("ilitek", NULL);
	if (!ilitek_proc_entry) {
		tp_log_err("Error, failed to creat procfs.\n");
	} else {
		if (!proc_create("firmware_version", ILITEK_DEVICE_NODE_PERMISSON, ilitek_proc_entry, &ilitek_proc_fops_fwversion)) {
			tp_log_err("Error, failed to creat procfs firmware_version.\n");
			remove_proc_entry("firmware_version", ilitek_proc_entry);
		}
		if (!proc_create("update_firmware", ILITEK_DEVICE_NODE_PERMISSON, ilitek_proc_entry, &ilitek_proc_fops_fwupdate)) {
			tp_log_err("Error, failed to creat procfs update_firmware.\n");
			remove_proc_entry("update_firmware", ilitek_proc_entry);
		}
		if (!proc_create("sensor_test_data", ILITEK_DEVICE_NODE_PERMISSON, ilitek_proc_entry, &ilitek_proc_fops_sensortest)) {
			tp_log_err("Error, failed to creat procfs sensor_test.\n");
			remove_proc_entry("sensor_test_data", ilitek_proc_entry);
		}
		if (!proc_create("noisefre_data", ILITEK_DEVICE_NODE_PERMISSON, ilitek_proc_entry, &ilitek_proc_fops_noisefre)) {
			tp_log_err("Error, failed to creat procfs noisefre_data.\n");
			remove_proc_entry("noisefre_data", ilitek_proc_entry);
		}
		if (!proc_create("setmode_0", ILITEK_DEVICE_NODE_PERMISSON, ilitek_proc_entry, &ilitek_proc_fops_setmode_0)) {
			tp_log_err("Error, failed to creat procfs setmode_0.\n");
			remove_proc_entry("setmode_0", ilitek_proc_entry);
		}
		if (!proc_create("setmode_1", ILITEK_DEVICE_NODE_PERMISSON, ilitek_proc_entry, &ilitek_proc_fops_setmode_1)) {
			tp_log_err("Error, failed to creat procfs setmode_1.\n");
			remove_proc_entry("setmode_1", ilitek_proc_entry);
		}
		if (!proc_create("setmode_2", ILITEK_DEVICE_NODE_PERMISSON, ilitek_proc_entry, &ilitek_proc_fops_setmode_2)) {
			tp_log_err("Error, failed to creat procfs setmode_1.\n");
			remove_proc_entry("setmode_2", ilitek_proc_entry);
		}
	}
	return 0;
}
請問create node 的path?
					最新发布