linux/drivers/media/i2c/ov08d10.c

// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2022 Intel Corporation.

#include <linux/acpi.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/module.h>
#include <linux/pm_runtime.h>
#include <linux/regulator/consumer.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-fwnode.h>

#define OV08D10_SCLK
#define OV08D10_XVCLK_19_2
#define OV08D10_ROWCLK
#define OV08D10_DATA_LANES
#define OV08D10_RGB_DEPTH

#define OV08D10_REG_PAGE
#define OV08D10_REG_GLOBAL_EFFECTIVE
#define OV08D10_REG_CHIP_ID_0
#define OV08D10_REG_CHIP_ID_1
#define OV08D10_ID_MASK
#define OV08D10_CHIP_ID

#define OV08D10_REG_MODE_SELECT
#define OV08D10_MODE_STANDBY
#define OV08D10_MODE_STREAMING

/* vertical-timings from sensor */
#define OV08D10_REG_VTS_H
#define OV08D10_REG_VTS_L
#define OV08D10_VTS_MAX

/* Exposure controls from sensor */
#define OV08D10_REG_EXPOSURE_H
#define OV08D10_REG_EXPOSURE_M
#define OV08D10_REG_EXPOSURE_L
#define OV08D10_EXPOSURE_MIN
#define OV08D10_EXPOSURE_MAX_MARGIN
#define OV08D10_EXPOSURE_STEP

/* Analog gain controls from sensor */
#define OV08D10_REG_ANALOG_GAIN
#define OV08D10_ANAL_GAIN_MIN
#define OV08D10_ANAL_GAIN_MAX
#define OV08D10_ANAL_GAIN_STEP

/* Digital gain controls from sensor */
#define OV08D10_REG_MWB_DGAIN_C
#define OV08D10_REG_MWB_DGAIN_F
#define OV08D10_DGTL_GAIN_MIN
#define OV08D10_DGTL_GAIN_MAX
#define OV08D10_DGTL_GAIN_STEP
#define OV08D10_DGTL_GAIN_DEFAULT

/* Test Pattern Control */
#define OV08D10_REG_TEST_PATTERN
#define OV08D10_TEST_PATTERN_ENABLE
#define OV08D10_TEST_PATTERN_DISABLE

/* Flip Mirror Controls from sensor */
#define OV08D10_REG_FLIP_OPT
#define OV08D10_REG_FLIP_MASK

#define to_ov08d10(_sd)

struct ov08d10_reg {};

struct ov08d10_reg_list {};

struct ov08d10_link_freq_config {};

struct ov08d10_mode {};

/* 3280x2460, 3264x2448 need 720Mbps/lane, 2 lanes */
static const struct ov08d10_reg mipi_data_rate_720mbps[] =;

/* 1632x1224 needs 360Mbps/lane, 2 lanes */
static const struct ov08d10_reg mipi_data_rate_360mbps[] =;

static const struct ov08d10_reg lane_2_mode_3280x2460[] =;

static const struct ov08d10_reg lane_2_mode_3264x2448[] =;

static const struct ov08d10_reg lane_2_mode_1632x1224[] =;

static const char * const ov08d10_test_pattern_menu[] =;

struct ov08d10 {};

struct ov08d10_lane_cfg {};

static const struct ov08d10_lane_cfg lane_cfg_2 =;

static u32 ov08d10_get_format_code(struct ov08d10 *ov08d10)
{}

static unsigned int ov08d10_modes_num(const struct ov08d10 *ov08d10)
{}

static u64 to_rate(const s64 *link_freq_menu,
		   u32 f_index, u8 nlanes)
{}

static u64 to_pixels_per_line(const s64 *link_freq_menu, u32 hts,
			      u32 f_index, u8 nlanes)
{}

static int ov08d10_write_reg_list(struct ov08d10 *ov08d10,
				  const struct ov08d10_reg_list *r_list)
{}

static int ov08d10_update_analog_gain(struct ov08d10 *ov08d10, u32 a_gain)
{}

static int ov08d10_update_digital_gain(struct ov08d10 *ov08d10, u32 d_gain)
{}

static int ov08d10_set_exposure(struct ov08d10 *ov08d10, u32 exposure)
{}

static int ov08d10_set_vblank(struct ov08d10 *ov08d10, u32 vblank)
{}

static int ov08d10_test_pattern(struct ov08d10 *ov08d10, u32 pattern)
{}

static int ov08d10_set_ctrl_flip(struct ov08d10 *ov08d10, u32 ctrl_val)
{}

static int ov08d10_set_ctrl(struct v4l2_ctrl *ctrl)
{}

static const struct v4l2_ctrl_ops ov08d10_ctrl_ops =;

static int ov08d10_init_controls(struct ov08d10 *ov08d10)
{}

static void ov08d10_update_pad_format(struct ov08d10 *ov08d10,
				      const struct ov08d10_mode *mode,
				      struct v4l2_mbus_framefmt *fmt)
{}

static int ov08d10_start_streaming(struct ov08d10 *ov08d10)
{}

static void ov08d10_stop_streaming(struct ov08d10 *ov08d10)
{}

static int ov08d10_set_stream(struct v4l2_subdev *sd, int enable)
{}

static int ov08d10_set_format(struct v4l2_subdev *sd,
			      struct v4l2_subdev_state *sd_state,
			      struct v4l2_subdev_format *fmt)
{}

static int ov08d10_get_format(struct v4l2_subdev *sd,
			      struct v4l2_subdev_state *sd_state,
			      struct v4l2_subdev_format *fmt)
{}

static int ov08d10_enum_mbus_code(struct v4l2_subdev *sd,
				  struct v4l2_subdev_state *sd_state,
				  struct v4l2_subdev_mbus_code_enum *code)
{}

static int ov08d10_enum_frame_size(struct v4l2_subdev *sd,
				   struct v4l2_subdev_state *sd_state,
				   struct v4l2_subdev_frame_size_enum *fse)
{}

static int ov08d10_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{}

static const struct v4l2_subdev_video_ops ov08d10_video_ops =;

static const struct v4l2_subdev_pad_ops ov08d10_pad_ops =;

static const struct v4l2_subdev_ops ov08d10_subdev_ops =;

static const struct v4l2_subdev_internal_ops ov08d10_internal_ops =;

static int ov08d10_identify_module(struct ov08d10 *ov08d10)
{}

static int ov08d10_get_hwcfg(struct ov08d10 *ov08d10, struct device *dev)
{}

static void ov08d10_remove(struct i2c_client *client)
{}

static int ov08d10_probe(struct i2c_client *client)
{}

#ifdef CONFIG_ACPI
static const struct acpi_device_id ov08d10_acpi_ids[] =;

MODULE_DEVICE_TABLE(acpi, ov08d10_acpi_ids);
#endif

static struct i2c_driver ov08d10_i2c_driver =;

module_i2c_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();