aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2014-01-31 21:36:13 -0500
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-03-13 09:26:43 -0400
commit3ce569fd7c55ed99c04c4ebc5e49304f29a139bb (patch)
treed9bf0a6294d098013de7af0ed99b71d5a4770e12
parent30845f73945658f41cbcb354e7b37eaac3872567 (diff)
[media] v4l: add RF tuner channel bandwidth control
Modern silicon RF tuners has one or more adjustable filters on signal path, in order to filter noise from desired radio channel. Add channel bandwidth control to tell the driver which is radio channel width we want receive. Filters could be then adjusted by the driver or hardware, using RF frequency and channel bandwidth as a base of filter calculations. On automatic mode (normal mode), bandwidth is calculated from sampling rate or tuning info got from userspace. That new control gives possibility to set manual mode and let user have more control for filters. Cc: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
-rw-r--r--drivers/media/v4l2-core/v4l2-ctrls.c4
-rw-r--r--include/uapi/linux/v4l2-controls.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
index 5c3e8ca9b1d1..48550b0eca2e 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -867,6 +867,8 @@ const char *v4l2_ctrl_get_name(u32 id)
867 case V4L2_CID_RF_TUNER_MIXER_GAIN: return "Mixer Gain"; 867 case V4L2_CID_RF_TUNER_MIXER_GAIN: return "Mixer Gain";
868 case V4L2_CID_RF_TUNER_IF_GAIN_AUTO: return "IF Gain, Auto"; 868 case V4L2_CID_RF_TUNER_IF_GAIN_AUTO: return "IF Gain, Auto";
869 case V4L2_CID_RF_TUNER_IF_GAIN: return "IF Gain"; 869 case V4L2_CID_RF_TUNER_IF_GAIN: return "IF Gain";
870 case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO: return "Bandwidth, Auto";
871 case V4L2_CID_RF_TUNER_BANDWIDTH: return "Bandwidth";
870 default: 872 default:
871 return NULL; 873 return NULL;
872 } 874 }
@@ -919,6 +921,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
919 case V4L2_CID_RF_TUNER_LNA_GAIN_AUTO: 921 case V4L2_CID_RF_TUNER_LNA_GAIN_AUTO:
920 case V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO: 922 case V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO:
921 case V4L2_CID_RF_TUNER_IF_GAIN_AUTO: 923 case V4L2_CID_RF_TUNER_IF_GAIN_AUTO:
924 case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO:
922 *type = V4L2_CTRL_TYPE_BOOLEAN; 925 *type = V4L2_CTRL_TYPE_BOOLEAN;
923 *min = 0; 926 *min = 0;
924 *max = *step = 1; 927 *max = *step = 1;
@@ -1084,6 +1087,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
1084 case V4L2_CID_RF_TUNER_LNA_GAIN: 1087 case V4L2_CID_RF_TUNER_LNA_GAIN:
1085 case V4L2_CID_RF_TUNER_MIXER_GAIN: 1088 case V4L2_CID_RF_TUNER_MIXER_GAIN:
1086 case V4L2_CID_RF_TUNER_IF_GAIN: 1089 case V4L2_CID_RF_TUNER_IF_GAIN:
1090 case V4L2_CID_RF_TUNER_BANDWIDTH:
1087 *flags |= V4L2_CTRL_FLAG_SLIDER; 1091 *flags |= V4L2_CTRL_FLAG_SLIDER;
1088 break; 1092 break;
1089 case V4L2_CID_PAN_RELATIVE: 1093 case V4L2_CID_PAN_RELATIVE:
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index 6501c0b2860e..60a626ca47c8 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -910,5 +910,7 @@ enum v4l2_deemphasis {
910#define V4L2_CID_RF_TUNER_MIXER_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 4) 910#define V4L2_CID_RF_TUNER_MIXER_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 4)
911#define V4L2_CID_RF_TUNER_IF_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 5) 911#define V4L2_CID_RF_TUNER_IF_GAIN_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 5)
912#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 6) 912#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 6)
913#define V4L2_CID_RF_TUNER_BANDWIDTH_AUTO (V4L2_CID_RF_TUNER_CLASS_BASE + 7)
914#define V4L2_CID_RF_TUNER_BANDWIDTH (V4L2_CID_RF_TUNER_CLASS_BASE + 8)
913 915
914#endif 916#endif