void brickpi_in_port_unregister_sensor(struct brickpi_in_port_data *in_port)
{
	if (in_port->sensor) {
		lego_device_unregister(in_port->sensor);
		in_port->sensor = NULL;
	}
}
示例#2
0
void ms_nxtmmx_out_port_unregister_motor(struct ms_nxtmmx_data *mmx)
{
	if (mmx->motor) {
		lego_device_unregister(mmx->motor);
		mmx->motor = NULL;
	}
}
void ev3_output_port_unregister_motor(struct work_struct *work)
{
	struct ev3_output_port_data *data =
			container_of(work, struct ev3_output_port_data, work);

	lego_device_unregister(data->motor);
	data->motor_type = MOTOR_NONE;
	data->motor = NULL;
}
static int ev3_output_port_set_device(void *context, const char *device_name)
{
	struct ev3_output_port_data *data = context;
	struct lego_device *new_motor;

	if (data->motor_type != MOTOR_TACHO)
		return -EOPNOTSUPP;

	lego_device_unregister(data->motor);
	data->motor = NULL;

	new_motor = lego_device_register(device_name,
		&ev3_motor_device_types[data->motor_type],
		&data->out_port, NULL, 0);
	if (IS_ERR(new_motor))
		return PTR_ERR(new_motor);

	data->motor = new_motor;

	return 0;
}