Beispiel #1
0
static void ff_exit(void)
{
	if (ff_current_dev) {
		fmc_device_unregister_n(ff_current_dev->fmc, ff_nr_dev);
		device_unregister(&ff_current_dev->dev);
	}
	cancel_delayed_work_sync(&ff_work);
}
Beispiel #2
0
static void ff_work_fn(struct work_struct *work)
{
	struct ff_dev *ff = ff_current_dev;
	int ret;

	fmc_device_unregister_n(ff->fmc, ff_nr_dev);
	device_unregister(&ff->dev);
	ff_current_dev = NULL;

	ff = ff_dev_create();
	if (IS_ERR(ff)) {
		pr_warning("%s: can't re-create FMC devices\n", __func__);
		return;
	}
	ret = fmc_device_register_n(ff->fmc, ff_nr_dev);
	if (ret < 0) {
		dev_warn(&ff->dev, "can't re-register FMC devices\n");
		device_unregister(&ff->dev);
		return;
	}

	ff_current_dev = ff;
}
Beispiel #3
0
void fmc_device_unregister(struct fmc_device *fmc)
{
	fmc_device_unregister_n(&fmc, 1);
}