diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml
index 7dc65c592a87e991defed8265d89fe4491eebeb9..66a0ef251c79e6946071808c8300d1fcdc2d33b3 100644
--- a/Documentation/DocBook/media/v4l/biblio.xml
+++ b/Documentation/DocBook/media/v4l/biblio.xml
@@ -197,4 +197,15 @@ in the frequency range from 87,5 to 108,0 MHz
NTSC-4: United States RBDS Standard
+
+ ISO 12232:2006
+
+ International Organization for Standardization
+(http://www.iso.org)
+
+ Photography — Digital still cameras — Determination
+ of exposure index, ISO speed ratings, standard output sensitivity, and
+ recommended exposure index
+
+
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index 74876b423bc383e3c92ff89c0f5accfab00351bc..8fccfe1b20582a4130926a15f9248ccb10fe1e84 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -3117,6 +3117,44 @@ control in the future, if more options are required.
+
+ V4L2_CID_ISO_SENSITIVITY
+ integer menu
+
Determines ISO equivalent of an
+image sensor indicating the sensor's sensitivity to light. The numbers are
+expressed in arithmetic scale, as per standard,
+where doubling the sensor sensitivity is represented by doubling the numerical
+ISO value. Applications should interpret the values as standard ISO values
+multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will
+usually support only a subset of standard ISO values. The effect of setting
+this control while the V4L2_CID_ISO_SENSITIVITY_AUTO
+control is set to a value other than V4L2_CID_ISO_SENSITIVITY_MANUAL
+ is undefined, drivers should ignore such requests.
+
+
+
+
+ V4L2_CID_ISO_SENSITIVITY_AUTO
+ enum v4l2_iso_sensitivity_type
+
Enables or disables automatic ISO
+sensitivity adjustments.
+
+
+
+
+
+ V4L2_CID_ISO_SENSITIVITY_MANUAL
+ Manual ISO sensitivity.
+
+
+ V4L2_CID_ISO_SENSITIVITY_AUTO
+ Automatic ISO sensitivity adjustments.
+
+
+
+
+
+
diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-ctrls.c
index 2da8b98ac7571dbdf1776f21a257591275833e46..debaf9fb90047b5d892cb1ea9c754515093b34ad 100644
--- a/drivers/media/video/v4l2-ctrls.c
+++ b/drivers/media/video/v4l2-ctrls.c
@@ -262,6 +262,11 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
"Shade",
NULL,
};
+ static const char * const camera_iso_sensitivity_auto[] = {
+ "Manual",
+ "Auto",
+ NULL
+ };
static const char * const tune_preemphasis[] = {
"No Preemphasis",
"50 Microseconds",
@@ -433,6 +438,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
return colorfx;
case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE:
return auto_n_preset_white_balance;
+ case V4L2_CID_ISO_SENSITIVITY_AUTO:
+ return camera_iso_sensitivity_auto;
case V4L2_CID_TUNE_PREEMPHASIS:
return tune_preemphasis;
case V4L2_CID_FLASH_LED_MODE:
@@ -623,6 +630,8 @@ const char *v4l2_ctrl_get_name(u32 id)
case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: return "White Balance, Auto & Preset";
case V4L2_CID_WIDE_DYNAMIC_RANGE: return "Wide Dynamic Range";
case V4L2_CID_IMAGE_STABILIZATION: return "Image Stabilization";
+ case V4L2_CID_ISO_SENSITIVITY: return "ISO Sensitivity";
+ case V4L2_CID_ISO_SENSITIVITY_AUTO: return "ISO Sensitivity, Auto";
/* FM Radio Modulator control */
/* Keep the order of the 'case's the same as in videodev2.h! */
@@ -773,6 +782,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:
case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:
case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
+ case V4L2_CID_ISO_SENSITIVITY_AUTO:
*type = V4L2_CTRL_TYPE_MENU;
break;
case V4L2_CID_LINK_FREQ:
@@ -782,6 +792,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
case V4L2_CID_RDS_TX_RADIO_TEXT:
*type = V4L2_CTRL_TYPE_STRING;
break;
+ case V4L2_CID_ISO_SENSITIVITY:
case V4L2_CID_AUTO_EXPOSURE_BIAS:
*type = V4L2_CTRL_TYPE_INTEGER_MENU;
break;
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index e94601a7ae5fee89767fabceeb8fe5b3fb52f4f4..593a1bd33111b3ff1dd2257248fb54d81d09fd61 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -1726,6 +1726,13 @@ enum v4l2_auto_n_preset_white_balance {
#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21)
#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE+22)
+#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE+23)
+#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE+24)
+enum v4l2_iso_sensitivity_auto_type {
+ V4L2_ISO_SENSITIVITY_MANUAL = 0,
+ V4L2_ISO_SENSITIVITY_AUTO = 1,
+};
+
/* FM Modulator class control IDs */
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)