input_unregister_device(&atkbd->dev);
if (!(new_dev = input_allocate_device())) return -ENOMEM; input_unregister_device(atkbd->dev); atkbd->dev = new_dev;
static ssize_t atkbd_set_softraw(struct atkbd *atkbd, const char *buf, size_t count){	unsigned long value;	char *rest;	value = simple_strtoul(buf, &rest, 10);	if (*rest || value > 1)		return -EINVAL;	if (atkbd->softraw != value) {		/* unregister device as it's properties will change */		input_unregister_device(&atkbd->dev);		atkbd->softraw = value;		atkbd_set_device_attrs(atkbd);		input_register_device(&atkbd->dev);	}	return count;}