summaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2013-08-22 05:11:17 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-08-24 03:31:01 -0400
commit8c0eadb88bc67cee8b83e08f5743bd7c378efdd9 (patch)
treef9841aec8dcaa188e6956bad2026609c15ee2aa8 /drivers/media
parentb8f0fff4279a1b85fa4b6d7d8b538c254edcb4a1 (diff)
[media] adv7604: set is_private only after successfully creating all controls
is_private was set right after creating each control, but the control pointer might be NULL in case of an error. Set it after all controls were successfully created, since that guarantees that all control pointers are non-NULL. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/i2c/adv7604.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/media/i2c/adv7604.c b/drivers/media/i2c/adv7604.c
index 5b54ba1465e1..fbfdd2fc2a36 100644
--- a/drivers/media/i2c/adv7604.c
+++ b/drivers/media/i2c/adv7604.c
@@ -2021,29 +2021,30 @@ static int adv7604_probe(struct i2c_client *client,
2021 /* private controls */ 2021 /* private controls */
2022 state->detect_tx_5v_ctrl = v4l2_ctrl_new_std(hdl, NULL, 2022 state->detect_tx_5v_ctrl = v4l2_ctrl_new_std(hdl, NULL,
2023 V4L2_CID_DV_RX_POWER_PRESENT, 0, 1, 0, 0); 2023 V4L2_CID_DV_RX_POWER_PRESENT, 0, 1, 0, 0);
2024 state->detect_tx_5v_ctrl->is_private = true;
2025 state->rgb_quantization_range_ctrl = 2024 state->rgb_quantization_range_ctrl =
2026 v4l2_ctrl_new_std_menu(hdl, &adv7604_ctrl_ops, 2025 v4l2_ctrl_new_std_menu(hdl, &adv7604_ctrl_ops,
2027 V4L2_CID_DV_RX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL, 2026 V4L2_CID_DV_RX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL,
2028 0, V4L2_DV_RGB_RANGE_AUTO); 2027 0, V4L2_DV_RGB_RANGE_AUTO);
2029 state->rgb_quantization_range_ctrl->is_private = true;
2030 2028
2031 /* custom controls */ 2029 /* custom controls */
2032 state->analog_sampling_phase_ctrl = 2030 state->analog_sampling_phase_ctrl =
2033 v4l2_ctrl_new_custom(hdl, &adv7604_ctrl_analog_sampling_phase, NULL); 2031 v4l2_ctrl_new_custom(hdl, &adv7604_ctrl_analog_sampling_phase, NULL);
2034 state->analog_sampling_phase_ctrl->is_private = true;
2035 state->free_run_color_manual_ctrl = 2032 state->free_run_color_manual_ctrl =
2036 v4l2_ctrl_new_custom(hdl, &adv7604_ctrl_free_run_color_manual, NULL); 2033 v4l2_ctrl_new_custom(hdl, &adv7604_ctrl_free_run_color_manual, NULL);
2037 state->free_run_color_manual_ctrl->is_private = true;
2038 state->free_run_color_ctrl = 2034 state->free_run_color_ctrl =
2039 v4l2_ctrl_new_custom(hdl, &adv7604_ctrl_free_run_color, NULL); 2035 v4l2_ctrl_new_custom(hdl, &adv7604_ctrl_free_run_color, NULL);
2040 state->free_run_color_ctrl->is_private = true;
2041 2036
2042 sd->ctrl_handler = hdl; 2037 sd->ctrl_handler = hdl;
2043 if (hdl->error) { 2038 if (hdl->error) {
2044 err = hdl->error; 2039 err = hdl->error;
2045 goto err_hdl; 2040 goto err_hdl;
2046 } 2041 }
2042 state->detect_tx_5v_ctrl->is_private = true;
2043 state->rgb_quantization_range_ctrl->is_private = true;
2044 state->analog_sampling_phase_ctrl->is_private = true;
2045 state->free_run_color_manual_ctrl->is_private = true;
2046 state->free_run_color_ctrl->is_private = true;
2047
2047 if (adv7604_s_detect_tx_5v_ctrl(sd)) { 2048 if (adv7604_s_detect_tx_5v_ctrl(sd)) {
2048 err = -ENODEV; 2049 err = -ENODEV;
2049 goto err_hdl; 2050 goto err_hdl;