8eea8e29cc4374d1ee24c25a07f45af132db3499ap * CDDL HEADER START
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * The contents of this file are subject to the terms of the
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * Common Development and Distribution License, Version 1.0 only
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * (the "License"). You may not use this file except in compliance
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * with the License.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * See the License for the specific language governing permissions
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * and limitations under the License.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * When distributing Covered Code, include this CDDL HEADER in each
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * If applicable, add the following below this CDDL HEADER, with the
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * fields enclosed by brackets "[]" replaced with your own identifying
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * information: Portions Copyright [yyyy] [name of copyright owner]
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * CDDL HEADER END
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * Use is subject to license terms.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap#pragma ident "%Z%%M% %I% %E% SMI"
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * dcam1394 driver. Device parameter access.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap/* index by vid_mode */
8eea8e29cc4374d1ee24c25a07f45af132db3499apstatic uint_t feature_csr_val_construct(uint_t subparam, uint_t param_val,
8eea8e29cc4374d1ee24c25a07f45af132db3499apstatic uint_t feature_csr_val_subparam_extract(uint_t subparam,
8eea8e29cc4374d1ee24c25a07f45af132db3499apstatic uint_t feature_elm_inq_reg_val_subparam_extract(uint_t subparam,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_attr_init
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_attr_init(dcam_state_t *softc_p, dcam1394_param_attr_t param_attr)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * power ctrl cap
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * video mode cap
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * frame rate cap
8eea8e29cc4374d1ee24c25a07f45af132db3499ap param <= DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_5; param++) {
8eea8e29cc4374d1ee24c25a07f45af132db3499ap subparam <= DCAM1394_SUBPARAM_FRAME_RATE_4; subparam++) {
8eea8e29cc4374d1ee24c25a07f45af132db3499ap err = dcam1394_param_get(softc_p, DCAM1394_PARAM_CAP_POWER_CTRL,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * video mode
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * frame rate
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * ring buffer capacity
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * ring buffer: num frames ready
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * ring buffer: read ptr increment stride
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * frame size
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * cam status
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * features
8eea8e29cc4374d1ee24c25a07f45af132db3499ap for (param = DCAM1394_PARAM_BRIGHTNESS; param <= DCAM1394_PARAM_TILT;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * get feature presence
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * If the operation to read the parameter fails, then act as
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * though the feature is not implemented (because it isn't),
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * don't report a DDI failure (as was previously done).
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature presence */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature cap read */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature cap on/off */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature cap ctrl auto */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature cap ctrl manual */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature min val */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature max val */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature on/off */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature control mode */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* get value read-out capability */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * white balance feature: u, v value
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* feature value */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_attr_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_attr_set(dcam1394_param_attr_t param_attr, uint_t param,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * dcam1394_ioctl_param_get
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * softc's param_attr field must be initialized via param_attr_init()
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * before using this function.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * dcam1394_ioctl_param_set
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * softc's param_attr field must be initialized via param_attr_init()
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * before using this function.
8eea8e29cc4374d1ee24c25a07f45af132db3499apdcam1394_ioctl_param_set(dcam_state_t *softc_p, int is_ctrl_file,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * dcam1394_param_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apdcam1394_param_get(dcam_state_t *softc_p, uint_t param, uint_t subparam,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap switch (param) {
8eea8e29cc4374d1ee24c25a07f45af132db3499ap err = param_cap_frame_rate_get(softc_p, param, subparam, val_p);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap err = param_ring_buff_num_frames_ready_get(softc_p, val_p);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * dcam1394_param_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apdcam1394_param_set(dcam_state_t *softc_p, uint_t param, uint_t subparam,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap switch (param) {
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * feature_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apfeature_get(dcam_state_t *softc_p, uint_t feature_csr_offs,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap uint_t feature_elm_inq_reg_offs, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap val = feature_csr_val_subparam_extract(subparam, reg_io.val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * feature_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apfeature_set(dcam_state_t *softc_p, uint_t feature_csr_offs,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap reg_io.offs = feature_csr_offs + DCAM1394_REG_OFFS_FEATURE_CSR_BASE;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap reg_io.val = feature_csr_val_construct(subparam, val, reg_io.val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_cap_power_ctrl_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_cap_power_ctrl_get(dcam_state_t *softc_p, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_cap_vid_mode_get
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * dcam spec: sec 1.2.1.1
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_cap_vid_mode_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_cap_frame_rate_get()
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * dcam spec: sec 1.2.2
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_cap_frame_rate_get(dcam_state_t *softc_p, uint_t param,
8eea8e29cc4374d1ee24c25a07f45af132db3499ap vid_mode = param - DCAM1394_PARAM_CAP_FRAME_RATE_VID_MODE_0;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap reg_io.offs = DCAM1394_REG_OFFS_FRAME_RATE_INQ_BASE + (4 * vid_mode);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_power_get
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_power_set()
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_vid_mode_get
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_vid_mode_set
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * if we are currently receiving frames, we need to do a restart
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * so that the new vid mode value takes effect
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_frame_rate_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_frame_rate_get(dcam_state_t *softc_p, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap frame_rate = reg_io.val >> DCAM1394_SHIFT_CUR_V_FRM_RATE;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_frame_rate_set
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* if we are currently receiving frames, stop the camera */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap reg_io.val = frame_rate << DCAM1394_SHIFT_CUR_V_FRM_RATE;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * Update the state info.
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * note: the driver maintains frame rate in an array
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * whereas the the camera uses predefined values whose
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * lowest frame rate starts at 6
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* restart the camera */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap reg_io.val = frame_rate << DCAM1394_SHIFT_CUR_V_FRM_RATE;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* see note above re skewing of value by 6 */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_ring_buff_capacity_get()
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_ring_buff_capacity_get(dcam_state_t *softc_p, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_ring_buff_capacity_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_ring_buff_capacity_set(dcam_state_t *softc_p, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* bounds check */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap /* update our state info */
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * if we are currently receiving frames, we need to do a restart
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * so that the new buff_capacity value takes effect
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_ring_buff_num_frames_ready_get()
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_ring_buff_num_frames_ready_get(dcam_state_t *softc_p, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * note: currently we support only one read_ptr_id, so the
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * following logic will work. If multiple read_ptr_id's are
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * supported, this function call will need to receive a
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * read_ptr_id
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap read_pos = ring_buff_read_ptr_pos_get(softc_p->ring_buff_p, 0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap write_pos = ring_buff_write_ptr_pos_get(softc_p->ring_buff_p);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_ring_buff_read_ptr_incr_get()
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_ring_buff_read_ptr_incr_get(dcam_state_t *softc_p, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_ring_buff_read_ptr_incr_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_ring_buff_read_ptr_incr_set(dcam_state_t *softc_p, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_frame_num_bytes_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_frame_num_bytes_get(dcam_state_t *softc_p, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (1);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_status_get()
8eea8e29cc4374d1ee24c25a07f45af132db3499ap return (0);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_brightness_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_brightness_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap feature_elm_inq_reg_offs = DCAM1394_REG_OFFS_BRIGHTNESS_INQ;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_brightness_set()
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_brightness_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_exposure_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_exposure_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap feature_elm_inq_reg_offs = DCAM1394_REG_OFFS_EXPOSURE_INQ;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_exposure_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_exposure_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_sharpness_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_sharpness_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap feature_elm_inq_reg_offs = DCAM1394_REG_OFFS_SHARPNESS_INQ;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_sharpness_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_sharpness_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_white_balance_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_white_balance_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap feature_elm_inq_reg_offs = DCAM1394_REG_OFFS_WHITE_BALANCE_INQ;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_white_balance_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_white_balance_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_hue_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_hue_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_hue_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_hue_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_saturation_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_saturation_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap feature_elm_inq_reg_offs = DCAM1394_REG_OFFS_SATURATION_INQ;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_saturation_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_saturation_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_gamma_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_gamma_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_gamma_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_gamma_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_shutter_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_shutter_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap feature_elm_inq_reg_offs = DCAM1394_REG_OFFS_SHUTTER_INQ;
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_shutter_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_shutter_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_gain_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_gain_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_gain_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_gain_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_iris_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_iris_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_iris_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_iris_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_focus_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_focus_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_focus_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_focus_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_zoom_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_zoom_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_zoom_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_zoom_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_pan_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_pan_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_pan_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_pan_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_tilt_get
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_tilt_get(dcam_state_t *softc_p, uint_t subparam, uint_t *val_p)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * param_tilt_set
8eea8e29cc4374d1ee24c25a07f45af132db3499apparam_tilt_set(dcam_state_t *softc_p, uint_t subparam, uint_t val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap ret_val = feature_set(softc_p, feature_csr_offs, subparam, val);
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * feature_csr_val_construct
8eea8e29cc4374d1ee24c25a07f45af132db3499apfeature_csr_val_construct(uint_t subparam, uint_t param_val, uint_t init_val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * feature_csr_val_subparam_extract
8eea8e29cc4374d1ee24c25a07f45af132db3499apfeature_csr_val_subparam_extract(uint_t subparam, uint_t reg_val)
8eea8e29cc4374d1ee24c25a07f45af132db3499ap * feature_elm_inq_reg_val_subparam_extract