#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <linux/types.h>
#include <linux/videodev2.h>
#include <media/v4l2-async.h>
#include <media/v4l2-cci.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-fwnode.h>
#include <media/v4l2-mediabus.h>
#include <media/v4l2-subdev.h>
#define MT9M114_CHIP_ID …
#define MT9M114_COMMAND_REGISTER …
#define MT9M114_COMMAND_REGISTER_APPLY_PATCH …
#define MT9M114_COMMAND_REGISTER_SET_STATE …
#define MT9M114_COMMAND_REGISTER_REFRESH …
#define MT9M114_COMMAND_REGISTER_WAIT_FOR_EVENT …
#define MT9M114_COMMAND_REGISTER_OK …
#define MT9M114_RESET_AND_MISC_CONTROL …
#define MT9M114_RESET_SOC …
#define MT9M114_PAD_SLEW …
#define MT9M114_PAD_CONTROL …
#define MT9M114_ACCESS_CTL_STAT …
#define MT9M114_PHYSICAL_ADDRESS_ACCESS …
#define MT9M114_LOGICAL_ADDRESS_ACCESS …
#define MT9M114_COARSE_INTEGRATION_TIME …
#define MT9M114_FINE_INTEGRATION_TIME …
#define MT9M114_RESET_REGISTER …
#define MT9M114_RESET_REGISTER_LOCK_REG …
#define MT9M114_RESET_REGISTER_MASK_BAD …
#define MT9M114_FLASH …
#define MT9M114_GREEN1_GAIN …
#define MT9M114_BLUE_GAIN …
#define MT9M114_RED_GAIN …
#define MT9M114_GREEN2_GAIN …
#define MT9M114_GLOBAL_GAIN …
#define MT9M114_GAIN_DIGITAL_GAIN(n) …
#define MT9M114_GAIN_DIGITAL_GAIN_MASK …
#define MT9M114_GAIN_ANALOG_GAIN(n) …
#define MT9M114_GAIN_ANALOG_GAIN_MASK …
#define MT9M114_CUSTOMER_REV …
#define MT9M114_MON_MAJOR_VERSION …
#define MT9M114_MON_MINOR_VERSION …
#define MT9M114_MON_RELEASE_VERSION …
#define MT9M114_AE_TRACK_ALGO …
#define MT9M114_AE_TRACK_EXEC_AUTOMATIC_EXPOSURE …
#define MT9M114_AE_TRACK_AE_TRACKING_DAMPENING_SPEED …
#define MT9M114_CCM_ALGO …
#define MT9M114_CCM_EXEC_CALC_CCM_MATRIX …
#define MT9M114_CCM_DELTA_GAIN …
#define MT9M114_CAM_SENSOR_CFG_Y_ADDR_START …
#define MT9M114_CAM_SENSOR_CFG_X_ADDR_START …
#define MT9M114_CAM_SENSOR_CFG_Y_ADDR_END …
#define MT9M114_CAM_SENSOR_CFG_X_ADDR_END …
#define MT9M114_CAM_SENSOR_CFG_PIXCLK …
#define MT9M114_CAM_SENSOR_CFG_ROW_SPEED …
#define MT9M114_CAM_SENSOR_CFG_FINE_INTEG_TIME_MIN …
#define MT9M114_CAM_SENSOR_CFG_FINE_INTEG_TIME_MAX …
#define MT9M114_CAM_SENSOR_CFG_FRAME_LENGTH_LINES …
#define MT9M114_CAM_SENSOR_CFG_FRAME_LENGTH_LINES_MAX …
#define MT9M114_CAM_SENSOR_CFG_LINE_LENGTH_PCK …
#define MT9M114_CAM_SENSOR_CFG_LINE_LENGTH_PCK_MAX …
#define MT9M114_CAM_SENSOR_CFG_FINE_CORRECTION …
#define MT9M114_CAM_SENSOR_CFG_CPIPE_LAST_ROW …
#define MT9M114_CAM_SENSOR_CFG_REG_0_DATA …
#define MT9M114_CAM_SENSOR_CONTROL_READ_MODE …
#define MT9M114_CAM_SENSOR_CONTROL_HORZ_MIRROR_EN …
#define MT9M114_CAM_SENSOR_CONTROL_VERT_FLIP_EN …
#define MT9M114_CAM_SENSOR_CONTROL_X_READ_OUT_NORMAL …
#define MT9M114_CAM_SENSOR_CONTROL_X_READ_OUT_SKIPPING …
#define MT9M114_CAM_SENSOR_CONTROL_X_READ_OUT_AVERAGE …
#define MT9M114_CAM_SENSOR_CONTROL_X_READ_OUT_SUMMING …
#define MT9M114_CAM_SENSOR_CONTROL_X_READ_OUT_MASK …
#define MT9M114_CAM_SENSOR_CONTROL_Y_READ_OUT_NORMAL …
#define MT9M114_CAM_SENSOR_CONTROL_Y_READ_OUT_SKIPPING …
#define MT9M114_CAM_SENSOR_CONTROL_Y_READ_OUT_SUMMING …
#define MT9M114_CAM_SENSOR_CONTROL_Y_READ_OUT_MASK …
#define MT9M114_CAM_SENSOR_CONTROL_ANALOG_GAIN …
#define MT9M114_CAM_SENSOR_CONTROL_COARSE_INTEGRATION_TIME …
#define MT9M114_CAM_SENSOR_CONTROL_FINE_INTEGRATION_TIME …
#define MT9M114_CAM_MODE_SELECT …
#define MT9M114_CAM_MODE_SELECT_NORMAL …
#define MT9M114_CAM_MODE_SELECT_LENS_CALIBRATION …
#define MT9M114_CAM_MODE_SELECT_TEST_PATTERN …
#define MT9M114_CAM_MODE_TEST_PATTERN_SELECT …
#define MT9M114_CAM_MODE_TEST_PATTERN_SELECT_SOLID …
#define MT9M114_CAM_MODE_TEST_PATTERN_SELECT_SOLID_BARS …
#define MT9M114_CAM_MODE_TEST_PATTERN_SELECT_RANDOM …
#define MT9M114_CAM_MODE_TEST_PATTERN_SELECT_FADING_BARS …
#define MT9M114_CAM_MODE_TEST_PATTERN_SELECT_WALKING_1S_10B …
#define MT9M114_CAM_MODE_TEST_PATTERN_SELECT_WALKING_1S_8B …
#define MT9M114_CAM_MODE_TEST_PATTERN_RED …
#define MT9M114_CAM_MODE_TEST_PATTERN_GREEN …
#define MT9M114_CAM_MODE_TEST_PATTERN_BLUE …
#define MT9M114_CAM_CROP_WINDOW_XOFFSET …
#define MT9M114_CAM_CROP_WINDOW_YOFFSET …
#define MT9M114_CAM_CROP_WINDOW_WIDTH …
#define MT9M114_CAM_CROP_WINDOW_HEIGHT …
#define MT9M114_CAM_CROP_CROPMODE …
#define MT9M114_CAM_CROP_MODE_AE_AUTO_CROP_EN …
#define MT9M114_CAM_CROP_MODE_AWB_AUTO_CROP_EN …
#define MT9M114_CAM_OUTPUT_WIDTH …
#define MT9M114_CAM_OUTPUT_HEIGHT …
#define MT9M114_CAM_OUTPUT_FORMAT …
#define MT9M114_CAM_OUTPUT_FORMAT_SWAP_RED_BLUE …
#define MT9M114_CAM_OUTPUT_FORMAT_SWAP_BYTES …
#define MT9M114_CAM_OUTPUT_FORMAT_MONO_ENABLE …
#define MT9M114_CAM_OUTPUT_FORMAT_BT656_ENABLE …
#define MT9M114_CAM_OUTPUT_FORMAT_BT656_CROP_SCALE_DISABLE …
#define MT9M114_CAM_OUTPUT_FORMAT_FVLV_DISABLE …
#define MT9M114_CAM_OUTPUT_FORMAT_FORMAT_YUV …
#define MT9M114_CAM_OUTPUT_FORMAT_FORMAT_RGB …
#define MT9M114_CAM_OUTPUT_FORMAT_FORMAT_BAYER …
#define MT9M114_CAM_OUTPUT_FORMAT_FORMAT_NONE …
#define MT9M114_CAM_OUTPUT_FORMAT_FORMAT_MASK …
#define MT9M114_CAM_OUTPUT_FORMAT_BAYER_FORMAT_RAWR10 …
#define MT9M114_CAM_OUTPUT_FORMAT_BAYER_FORMAT_PRELSC_8_2 …
#define MT9M114_CAM_OUTPUT_FORMAT_BAYER_FORMAT_POSTLSC_8_2 …
#define MT9M114_CAM_OUTPUT_FORMAT_BAYER_FORMAT_PROCESSED8 …
#define MT9M114_CAM_OUTPUT_FORMAT_BAYER_FORMAT_MASK …
#define MT9M114_CAM_OUTPUT_FORMAT_RGB_FORMAT_565RGB …
#define MT9M114_CAM_OUTPUT_FORMAT_RGB_FORMAT_555RGB …
#define MT9M114_CAM_OUTPUT_FORMAT_RGB_FORMAT_444xRGB …
#define MT9M114_CAM_OUTPUT_FORMAT_RGB_FORMAT_444RGBx …
#define MT9M114_CAM_OUTPUT_FORMAT_RGB_FORMAT_MASK …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV_CLIP …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV_AUV_OFFSET …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV_SELECT_601 …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV_NORMALISE …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV_SAMPLING_EVEN_UV …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV_SAMPLING_ODD_UV …
#define MT9M114_CAM_OUTPUT_FORMAT_YUV_SAMPLING_EVENU_ODDV …
#define MT9M114_CAM_OUTPUT_Y_OFFSET …
#define MT9M114_CAM_AET_AEMODE …
#define MT9M114_CAM_AET_EXEC_SET_INDOOR …
#define MT9M114_CAM_AET_DISCRETE_FRAMERATE …
#define MT9M114_CAM_AET_ADAPTATIVE_TARGET_LUMA …
#define MT9M114_CAM_AET_ADAPTATIVE_SKIP_FRAMES …
#define MT9M114_CAM_AET_SKIP_FRAMES …
#define MT9M114_CAM_AET_TARGET_AVERAGE_LUMA …
#define MT9M114_CAM_AET_TARGET_AVERAGE_LUMA_DARK …
#define MT9M114_CAM_AET_BLACK_CLIPPING_TARGET …
#define MT9M114_CAM_AET_AE_MIN_VIRT_INT_TIME_PCLK …
#define MT9M114_CAM_AET_AE_MIN_VIRT_DGAIN …
#define MT9M114_CAM_AET_AE_MAX_VIRT_DGAIN …
#define MT9M114_CAM_AET_AE_MIN_VIRT_AGAIN …
#define MT9M114_CAM_AET_AE_MAX_VIRT_AGAIN …
#define MT9M114_CAM_AET_AE_VIRT_GAIN_TH_EG …
#define MT9M114_CAM_AET_AE_EG_GATE_PERCENTAGE …
#define MT9M114_CAM_AET_FLICKER_FREQ_HZ …
#define MT9M114_CAM_AET_MAX_FRAME_RATE …
#define MT9M114_CAM_AET_MIN_FRAME_RATE …
#define MT9M114_CAM_AET_TARGET_GAIN …
#define MT9M114_CAM_AWB_CCM_L(n) …
#define MT9M114_CAM_AWB_CCM_M(n) …
#define MT9M114_CAM_AWB_CCM_R(n) …
#define MT9M114_CAM_AWB_CCM_L_RG_GAIN …
#define MT9M114_CAM_AWB_CCM_L_BG_GAIN …
#define MT9M114_CAM_AWB_CCM_M_RG_GAIN …
#define MT9M114_CAM_AWB_CCM_M_BG_GAIN …
#define MT9M114_CAM_AWB_CCM_R_RG_GAIN …
#define MT9M114_CAM_AWB_CCM_R_BG_GAIN …
#define MT9M114_CAM_AWB_CCM_L_CTEMP …
#define MT9M114_CAM_AWB_CCM_M_CTEMP …
#define MT9M114_CAM_AWB_CCM_R_CTEMP …
#define MT9M114_CAM_AWB_AWB_XSCALE …
#define MT9M114_CAM_AWB_AWB_YSCALE …
#define MT9M114_CAM_AWB_AWB_WEIGHTS(n) …
#define MT9M114_CAM_AWB_AWB_XSHIFT_PRE_ADJ …
#define MT9M114_CAM_AWB_AWB_YSHIFT_PRE_ADJ …
#define MT9M114_CAM_AWB_AWBMODE …
#define MT9M114_CAM_AWB_MODE_AUTO …
#define MT9M114_CAM_AWB_MODE_EXCLUSIVE_AE …
#define MT9M114_CAM_AWB_K_R_L …
#define MT9M114_CAM_AWB_K_G_L …
#define MT9M114_CAM_AWB_K_B_L …
#define MT9M114_CAM_AWB_K_R_R …
#define MT9M114_CAM_AWB_K_G_R …
#define MT9M114_CAM_AWB_K_B_R …
#define MT9M114_CAM_STAT_AWB_CLIP_WINDOW_XSTART …
#define MT9M114_CAM_STAT_AWB_CLIP_WINDOW_YSTART …
#define MT9M114_CAM_STAT_AWB_CLIP_WINDOW_XEND …
#define MT9M114_CAM_STAT_AWB_CLIP_WINDOW_YEND …
#define MT9M114_CAM_STAT_AE_INITIAL_WINDOW_XSTART …
#define MT9M114_CAM_STAT_AE_INITIAL_WINDOW_YSTART …
#define MT9M114_CAM_STAT_AE_INITIAL_WINDOW_XEND …
#define MT9M114_CAM_STAT_AE_INITIAL_WINDOW_YEND …
#define MT9M114_CAM_LL_LLMODE …
#define MT9M114_CAM_LL_START_BRIGHTNESS …
#define MT9M114_CAM_LL_STOP_BRIGHTNESS …
#define MT9M114_CAM_LL_START_SATURATION …
#define MT9M114_CAM_LL_END_SATURATION …
#define MT9M114_CAM_LL_START_DESATURATION …
#define MT9M114_CAM_LL_END_DESATURATION …
#define MT9M114_CAM_LL_START_DEMOSAICING …
#define MT9M114_CAM_LL_START_AP_GAIN …
#define MT9M114_CAM_LL_START_AP_THRESH …
#define MT9M114_CAM_LL_STOP_DEMOSAICING …
#define MT9M114_CAM_LL_STOP_AP_GAIN …
#define MT9M114_CAM_LL_STOP_AP_THRESH …
#define MT9M114_CAM_LL_START_NR_RED …
#define MT9M114_CAM_LL_START_NR_GREEN …
#define MT9M114_CAM_LL_START_NR_BLUE …
#define MT9M114_CAM_LL_START_NR_THRESH …
#define MT9M114_CAM_LL_STOP_NR_RED …
#define MT9M114_CAM_LL_STOP_NR_GREEN …
#define MT9M114_CAM_LL_STOP_NR_BLUE …
#define MT9M114_CAM_LL_STOP_NR_THRESH …
#define MT9M114_CAM_LL_START_CONTRAST_BM …
#define MT9M114_CAM_LL_STOP_CONTRAST_BM …
#define MT9M114_CAM_LL_GAMMA …
#define MT9M114_CAM_LL_START_CONTRAST_GRADIENT …
#define MT9M114_CAM_LL_STOP_CONTRAST_GRADIENT …
#define MT9M114_CAM_LL_START_CONTRAST_LUMA_PERCENTAGE …
#define MT9M114_CAM_LL_STOP_CONTRAST_LUMA_PERCENTAGE …
#define MT9M114_CAM_LL_START_GAIN_METRIC …
#define MT9M114_CAM_LL_STOP_GAIN_METRIC …
#define MT9M114_CAM_LL_START_FADE_TO_BLACK_LUMA …
#define MT9M114_CAM_LL_STOP_FADE_TO_BLACK_LUMA …
#define MT9M114_CAM_LL_CLUSTER_DC_TH_BM …
#define MT9M114_CAM_LL_CLUSTER_DC_GATE_PERCENTAGE …
#define MT9M114_CAM_LL_SUMMING_SENSITIVITY_FACTOR …
#define MT9M114_CAM_LL_START_TARGET_LUMA_BM …
#define MT9M114_CAM_LL_STOP_TARGET_LUMA_BM …
#define MT9M114_CAM_PGA_PGA_CONTROL …
#define MT9M114_CAM_SYSCTL_PLL_ENABLE …
#define MT9M114_CAM_SYSCTL_PLL_ENABLE_VALUE …
#define MT9M114_CAM_SYSCTL_PLL_DIVIDER_M_N …
#define MT9M114_CAM_SYSCTL_PLL_DIVIDER_VALUE(m, n) …
#define MT9M114_CAM_SYSCTL_PLL_DIVIDER_P …
#define MT9M114_CAM_SYSCTL_PLL_DIVIDER_P_VALUE(p) …
#define MT9M114_CAM_PORT_OUTPUT_CONTROL …
#define MT9M114_CAM_PORT_PORT_SELECT_PARALLEL …
#define MT9M114_CAM_PORT_PORT_SELECT_MIPI …
#define MT9M114_CAM_PORT_CLOCK_SLOWDOWN …
#define MT9M114_CAM_PORT_TRUNCATE_RAW_BAYER …
#define MT9M114_CAM_PORT_PIXCLK_GATE …
#define MT9M114_CAM_PORT_CONT_MIPI_CLK …
#define MT9M114_CAM_PORT_CHAN_NUM(vc) …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_HS_ZERO …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_HS_ZERO_VALUE(n) …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_HS_EXIT_TRAIL …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_HS_EXIT_VALUE(n) …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_HS_TRAIL_VALUE(n) …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_CLK_POST_PRE …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_CLK_POST_VALUE(n) …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_CLK_PRE_VALUE(n) …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_CLK_TRAIL_ZERO …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_CLK_TRAIL_VALUE(n) …
#define MT9M114_CAM_PORT_MIPI_TIMING_T_CLK_ZERO_VALUE(n) …
#define MT9M114_SYSMGR_NEXT_STATE …
#define MT9M114_SYSMGR_CURRENT_STATE …
#define MT9M114_SYSMGR_CMD_STATUS …
#define MT9M114_PATCHLDR_LOADER_ADDRESS …
#define MT9M114_PATCHLDR_PATCH_ID …
#define MT9M114_PATCHLDR_FIRMWARE_ID …
#define MT9M114_PATCHLDR_APPLY_STATUS …
#define MT9M114_PATCHLDR_NUM_PATCHES …
#define MT9M114_PATCHLDR_PATCH_ID_0 …
#define MT9M114_PATCHLDR_PATCH_ID_1 …
#define MT9M114_PATCHLDR_PATCH_ID_2 …
#define MT9M114_PATCHLDR_PATCH_ID_3 …
#define MT9M114_PATCHLDR_PATCH_ID_4 …
#define MT9M114_PATCHLDR_PATCH_ID_5 …
#define MT9M114_PATCHLDR_PATCH_ID_6 …
#define MT9M114_PATCHLDR_PATCH_ID_7 …
#define MT9M114_SYS_STATE_ENTER_CONFIG_CHANGE …
#define MT9M114_SYS_STATE_STREAMING …
#define MT9M114_SYS_STATE_START_STREAMING …
#define MT9M114_SYS_STATE_ENTER_SUSPEND …
#define MT9M114_SYS_STATE_SUSPENDED …
#define MT9M114_SYS_STATE_ENTER_STANDBY …
#define MT9M114_SYS_STATE_STANDBY …
#define MT9M114_SYS_STATE_LEAVE_STANDBY …
#define MT9M114_SET_STATE_RESULT_ENOERR …
#define MT9M114_SET_STATE_RESULT_EINVAL …
#define MT9M114_SET_STATE_RESULT_ENOSPC …
#define MT9M114_MIN_HBLANK …
#define MT9M114_MIN_VBLANK …
#define MT9M114_DEF_HBLANK …
#define MT9M114_DEF_VBLANK …
#define MT9M114_DEF_FRAME_RATE …
#define MT9M114_MAX_FRAME_RATE …
#define MT9M114_PIXEL_ARRAY_WIDTH …
#define MT9M114_PIXEL_ARRAY_HEIGHT …
#define MT9M114_PIXEL_ARRAY_MIN_OUTPUT_WIDTH …
#define MT9M114_PIXEL_ARRAY_MIN_OUTPUT_HEIGHT …
#define MT9M114_SCALER_CROPPED_INPUT_WIDTH …
#define MT9M114_SCALER_CROPPED_INPUT_HEIGHT …
#define MT9M114_TPG_PATTERN …
#define MT9M114_TPG_RED …
#define MT9M114_TPG_GREEN …
#define MT9M114_TPG_BLUE …
enum mt9m114_format_flag { … };
struct mt9m114_format_info { … };
struct mt9m114 { … };
static const struct mt9m114_format_info mt9m114_format_infos[] = …;
static const struct mt9m114_format_info *
mt9m114_default_format_info(struct mt9m114 *sensor)
{ … }
static const struct mt9m114_format_info *
mt9m114_format_info(struct mt9m114 *sensor, unsigned int pad, u32 code)
{ … }
static const struct cci_reg_sequence mt9m114_init[] = …;
static int mt9m114_poll_command(struct mt9m114 *sensor, u32 command)
{ … }
static int mt9m114_poll_state(struct mt9m114 *sensor, u32 state)
{ … }
static int mt9m114_set_state(struct mt9m114 *sensor, u8 next_state)
{ … }
static int mt9m114_initialize(struct mt9m114 *sensor)
{ … }
static int mt9m114_configure(struct mt9m114 *sensor,
struct v4l2_subdev_state *pa_state,
struct v4l2_subdev_state *ifp_state)
{ … }
static int mt9m114_set_frame_rate(struct mt9m114 *sensor)
{ … }
static int mt9m114_start_streaming(struct mt9m114 *sensor,
struct v4l2_subdev_state *pa_state,
struct v4l2_subdev_state *ifp_state)
{ … }
static int mt9m114_stop_streaming(struct mt9m114 *sensor)
{ … }
static const struct media_entity_operations mt9m114_entity_ops = …;
static inline struct mt9m114 *pa_ctrl_to_mt9m114(struct v4l2_ctrl *ctrl)
{ … }
static int mt9m114_pa_g_ctrl(struct v4l2_ctrl *ctrl)
{ … }
static int mt9m114_pa_s_ctrl(struct v4l2_ctrl *ctrl)
{ … }
static const struct v4l2_ctrl_ops mt9m114_pa_ctrl_ops = …;
static void mt9m114_pa_ctrl_update_exposure(struct mt9m114 *sensor, bool manual)
{ … }
static void mt9m114_pa_ctrl_update_blanking(struct mt9m114 *sensor,
const struct v4l2_mbus_framefmt *format)
{ … }
static inline struct mt9m114 *pa_to_mt9m114(struct v4l2_subdev *sd)
{ … }
static int mt9m114_pa_init_state(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state)
{ … }
static int mt9m114_pa_enum_mbus_code(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_mbus_code_enum *code)
{ … }
static int mt9m114_pa_enum_framesizes(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_frame_size_enum *fse)
{ … }
static int mt9m114_pa_set_fmt(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_format *fmt)
{ … }
static int mt9m114_pa_get_selection(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_selection *sel)
{ … }
static int mt9m114_pa_set_selection(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_selection *sel)
{ … }
static const struct v4l2_subdev_pad_ops mt9m114_pa_pad_ops = …;
static const struct v4l2_subdev_ops mt9m114_pa_ops = …;
static const struct v4l2_subdev_internal_ops mt9m114_pa_internal_ops = …;
static int mt9m114_pa_init(struct mt9m114 *sensor)
{ … }
static void mt9m114_pa_cleanup(struct mt9m114 *sensor)
{ … }
static const char * const mt9m114_test_pattern_menu[] = …;
static const unsigned int mt9m114_test_pattern_value[] = …;
static inline struct mt9m114 *ifp_ctrl_to_mt9m114(struct v4l2_ctrl *ctrl)
{ … }
static int mt9m114_ifp_s_ctrl(struct v4l2_ctrl *ctrl)
{ … }
static const struct v4l2_ctrl_ops mt9m114_ifp_ctrl_ops = …;
static inline struct mt9m114 *ifp_to_mt9m114(struct v4l2_subdev *sd)
{ … }
static int mt9m114_ifp_s_stream(struct v4l2_subdev *sd, int enable)
{ … }
static int mt9m114_ifp_get_frame_interval(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_frame_interval *interval)
{ … }
static int mt9m114_ifp_set_frame_interval(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_frame_interval *interval)
{ … }
static int mt9m114_ifp_init_state(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state)
{ … }
static int mt9m114_ifp_enum_mbus_code(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_mbus_code_enum *code)
{ … }
static int mt9m114_ifp_enum_framesizes(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_frame_size_enum *fse)
{ … }
static int mt9m114_ifp_enum_frameintervals(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_frame_interval_enum *fie)
{ … }
static int mt9m114_ifp_set_fmt(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_format *fmt)
{ … }
static int mt9m114_ifp_get_selection(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_selection *sel)
{ … }
static int mt9m114_ifp_set_selection(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
struct v4l2_subdev_selection *sel)
{ … }
static void mt9m114_ifp_unregistered(struct v4l2_subdev *sd)
{ … }
static int mt9m114_ifp_registered(struct v4l2_subdev *sd)
{ … }
static const struct v4l2_subdev_video_ops mt9m114_ifp_video_ops = …;
static const struct v4l2_subdev_pad_ops mt9m114_ifp_pad_ops = …;
static const struct v4l2_subdev_ops mt9m114_ifp_ops = …;
static const struct v4l2_subdev_internal_ops mt9m114_ifp_internal_ops = …;
static int mt9m114_ifp_init(struct mt9m114 *sensor)
{ … }
static void mt9m114_ifp_cleanup(struct mt9m114 *sensor)
{ … }
static int mt9m114_power_on(struct mt9m114 *sensor)
{ … }
static void mt9m114_power_off(struct mt9m114 *sensor)
{ … }
static int __maybe_unused mt9m114_runtime_resume(struct device *dev)
{ … }
static int __maybe_unused mt9m114_runtime_suspend(struct device *dev)
{ … }
static const struct dev_pm_ops mt9m114_pm_ops = …;
static int mt9m114_clk_init(struct mt9m114 *sensor)
{ … }
static int mt9m114_identify(struct mt9m114 *sensor)
{ … }
static int mt9m114_parse_dt(struct mt9m114 *sensor)
{ … }
static int mt9m114_probe(struct i2c_client *client)
{ … }
static void mt9m114_remove(struct i2c_client *client)
{ … }
static const struct of_device_id mt9m114_of_ids[] = …;
MODULE_DEVICE_TABLE(of, mt9m114_of_ids);
static struct i2c_driver mt9m114_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;