/* * Handle open request for "/dev/radioX" device. * Start with FM RX mode as default. */ static int fm_v4l2_fops_open(struct file *file) { int ret; struct fmdev *fmdev = NULL; /* Don't allow multiple open */ if (radio_disconnected) { fmerr("FM device is already opened\n"); return -EBUSY; } fmdev = video_drvdata(file); if (mutex_lock_interruptible(&fmdev->mutex)) return -ERESTARTSYS; ret = fmc_prepare(fmdev); if (ret < 0) { fmerr("Unable to prepare FM CORE\n"); goto open_unlock; } fmdbg("Load FM RX firmware..\n"); ret = fmc_set_mode(fmdev, FM_MODE_RX); if (ret < 0) { fmerr("Unable to load FM RX firmware\n"); goto open_unlock; } radio_disconnected = 1; open_unlock: mutex_unlock(&fmdev->mutex); return ret; }
/* * Handle open request for "/dev/radioX" device. * Start with FM RX mode as default. */ static int fm_v4l2_fops_open(struct file *file) { int ret; struct fmdev *fmdev = NULL; /* Don't allow multiple open */ if (radio_disconnected) { fmerr("FM device is already opened\n"); return -EBUSY; } fmdev = video_drvdata(file); ret = fmc_prepare(fmdev); if (ret < 0) { fmerr("Unable to prepare FM CORE\n"); return ret; } fmdbg("Load FM RX firmware..\n"); ret = fmc_set_mode(fmdev, FM_MODE_RX); if (ret < 0) { fmerr("Unable to load FM RX firmware\n"); return ret; } radio_disconnected = 1; return ret; }
/* * Handle open request for "/dev/radioX" device. * Start with FM RX mode as default. */ static int fm_v4l2_fops_open(struct file *file) { int ret; struct fmdev *fmdev = NULL; /* Don't allow multiple open */ if (radio_disconnected) { fmerr("FM device is already opened\n"); return -EBUSY; } fmdev = video_drvdata(file); ret = fmc_prepare(fmdev); if (ret < 0) { fmerr("Unable to prepare FM CORE\n"); return ret; } fmdbg("Load FM RX firmware..\n"); ret = fmc_set_mode(fmdev, FM_MODE_RX); if (ret < 0) { fmerr("Unable to load FM RX firmware\n"); return ret; } radio_disconnected = 1; /* Register sysfs entries */ ret = sysfs_create_group(&fmdev->radio_dev->dev.kobj, &v4l2_fm_attr_grp); if (ret) { pr_err("failed to create sysfs entries"); return ret; } return ret; }