/* serio_destroy_port() completes deregistration process and removes port from the system  */
static void serio_destroy_port(struct serio *serio)
/* serio_destroy_port() completes deregistration process and removes port from the system  */
static void serio_destroy_port(struct serio *serio)
{
	struct serio *child;
	child = serio_get_pending_child(serio);
	if (child) {
		serio_remove_pending_events(child);
		put_device(&child->dev);
	}
	if (serio->stop)
		serio->stop(serio);
	if (serio->parent) {
		serio_pause_rx(serio->parent);
		serio->parent->child = NULL;
		serio_continue_rx(serio->parent);
		serio->parent = NULL;
	}
	if (serio->registered) {
		sysfs_remove_group(&serio->dev.kobj, &serio_id_attr_group);
		device_del(&serio->dev);
		serio->registered = false;
	}
	list_del_init(&serio->node);
	serio_remove_pending_events(serio);
	put_device(&serio->dev);
}