static int sio_switch_probe(struct platform_device *pdev) { int ret = 0; sio_switch_gpio_init(); sio_switch_dev = device_create(sec_class, NULL, MKDEV(0, 0), NULL, "switch"); if (IS_ERR(sio_switch_dev)) { pr_err("Failed to create device(sio_switch)!\n"); ret = PTR_ERR(sio_switch_dev); return ret; } if ((ret = device_create_file(sio_switch_dev, &dev_attr_uart_sel)) < 0) { pr_err("Failed to create device file(%s)!\n", dev_attr_uart_sel.attr.name); goto err_uart; } if ((ret = device_create_file(sio_switch_dev, &dev_attr_usb_sel)) < 0) { pr_err("Failed to create device file(%s)!\n", dev_attr_usb_sel.attr.name); goto err_usb; } #ifdef _FMC_DM_ usb_lock = device_create(sec_class, sio_switch_dev, MKDEV(0, 0), NULL, ".usb_lock"); if (IS_ERR(usb_lock)) { pr_err("Failed to create device(usb_lock)!\n"); ret = PTR_ERR(usb_lock); goto err_usb; } if ((ret = device_create_file(usb_lock, &dev_attr_enable)) < 0) { pr_err("Failed to create device file(%s)!\n", dev_attr_enable.attr.name); device_destroy((struct class *)usb_lock, MKDEV(0, 0)); goto err_usb; }
static int sio_switch_probe(struct platform_device *pdev) { int ret = 0; sio_switch_gpio_init(); INIT_DELAYED_WORK(&sio_switch_init_work, sio_switch_init_worker); schedule_delayed_work(&sio_switch_init_work, msecs_to_jiffies(200)); printk("[%s]: initialized\n", pdev->name); ret = sysfs_create_group(&pdev->dev.kobj, &switch_sio_group); if (ret) { dev_err(&pdev, "failed to create switch_sio attribute group\n"); goto probe_err; } return 0; probe_err: return ret; }