static int fm_v4l2_s_ctrl(struct v4l2_ctrl *ctrl) { struct fmdev *fmdev = container_of(ctrl->handler, struct fmdev, ctrl_handler); int ret; switch (ctrl->id) { case V4L2_CID_AUDIO_VOLUME: /* set volume */ return fm_rx_set_volume(fmdev, (u16)ctrl->val); case V4L2_CID_AUDIO_MUTE: /* set mute */ return fmc_set_mute_mode(fmdev, (u8)ctrl->val); case V4L2_CID_TUNE_POWER_LEVEL: /* set TX power level - ext control */ return fm_tx_set_pwr_lvl(fmdev, (u8)ctrl->val); case V4L2_CID_TUNE_PREEMPHASIS: return fm_tx_set_preemph_filter(fmdev, (u8) ctrl->val); case V4L2_CID_RDS_TX_PI: ret = set_rds_picode(fmdev, ctrl->val); if (ret < 0) { fmerr("Failed to set RDS Radio PS Name\n"); return ret; } return 0; case V4L2_CID_RDS_TX_PTY: ret = set_rds_pty(fmdev, ctrl->val); if (ret < 0) { fmerr("Failed to set RDS Radio PS Name\n"); return ret; } return 0; case V4L2_CID_RDS_TX_PS_NAME: ret = fm_tx_set_radio_text(fmdev, ctrl->string, 1); if (ret < 0) { fmerr("Failed to set RDS Radio PS Name\n"); return ret; } return 0; case V4L2_CID_RDS_TX_RADIO_TEXT: ret = fm_tx_set_radio_text(fmdev, ctrl->string, 2); if (ret < 0) { fmerr("Failed to set RDS Radio Text\n"); return ret; } return 0; default: return -EINVAL; } }
static int fm_v4l2_s_ctrl(struct v4l2_ctrl *ctrl) { struct fmdev *fmdev = container_of(ctrl->handler, struct fmdev, ctrl_handler); switch (ctrl->id) { case V4L2_CID_AUDIO_VOLUME: /* set volume */ return fm_rx_set_volume(fmdev, (u16)ctrl->val); case V4L2_CID_AUDIO_MUTE: /* set mute */ return fmc_set_mute_mode(fmdev, (u8)ctrl->val); case V4L2_CID_TUNE_POWER_LEVEL: /* set TX power level - ext control */ return fm_tx_set_pwr_lvl(fmdev, (u8)ctrl->val); case V4L2_CID_TUNE_PREEMPHASIS: return fm_tx_set_preemph_filter(fmdev, (u8) ctrl->val); default: return -EINVAL; } }