#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/kmod.h>
#include <linux/device.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/moduleparam.h>
#include <media/v4l2-device.h>
#include "../include/linux/atomisp_gmin_platform.h"
#include <linux/acpi.h>
#include <linux/io.h>
#include "gc2235.h"
static int gc2235_read_reg(struct i2c_client *client,
u16 data_length, u16 reg, u16 *val)
{ … }
static int gc2235_i2c_write(struct i2c_client *client, u16 len, u8 *data)
{ … }
static int gc2235_write_reg(struct i2c_client *client, u16 data_length,
u8 reg, u8 val)
{ … }
static int __gc2235_flush_reg_array(struct i2c_client *client,
struct gc2235_write_ctrl *ctrl)
{ … }
static int __gc2235_buf_reg_array(struct i2c_client *client,
struct gc2235_write_ctrl *ctrl,
const struct gc2235_reg *next)
{ … }
static int __gc2235_write_reg_is_consecutive(struct i2c_client *client,
struct gc2235_write_ctrl *ctrl,
const struct gc2235_reg *next)
{ … }
static int gc2235_write_reg_array(struct i2c_client *client,
const struct gc2235_reg *reglist)
{ … }
static long __gc2235_set_exposure(struct v4l2_subdev *sd, int coarse_itg,
int gain, int digitgain)
{ … }
static int gc2235_set_exposure(struct v4l2_subdev *sd, int exposure,
int gain, int digitgain)
{ … }
static long gc2235_s_exposure(struct v4l2_subdev *sd,
struct atomisp_exposure *exposure)
{ … }
static long gc2235_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
{ … }
static int gc2235_q_exposure(struct v4l2_subdev *sd, s32 *value)
{ … }
static int gc2235_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
{ … }
static const struct v4l2_ctrl_ops ctrl_ops = …;
static struct v4l2_ctrl_config gc2235_controls[] = …;
static int __gc2235_init(struct v4l2_subdev *sd)
{ … }
static int is_init;
static int power_ctrl(struct v4l2_subdev *sd, bool flag)
{ … }
static int gpio_ctrl(struct v4l2_subdev *sd, bool flag)
{ … }
static int power_up(struct v4l2_subdev *sd)
{ … }
static int power_down(struct v4l2_subdev *sd)
{ … }
static int gc2235_s_power(struct v4l2_subdev *sd, int on)
{ … }
static int startup(struct v4l2_subdev *sd)
{ … }
static int gc2235_set_fmt(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{ … }
static int gc2235_get_fmt(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{ … }
static int gc2235_detect(struct i2c_client *client)
{ … }
static int gc2235_s_stream(struct v4l2_subdev *sd, int enable)
{ … }
static int gc2235_s_config(struct v4l2_subdev *sd,
int irq, void *platform_data)
{ … }
static int gc2235_get_frame_interval(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_frame_interval *interval)
{ … }
static int gc2235_enum_mbus_code(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_mbus_code_enum *code)
{ … }
static int gc2235_enum_frame_size(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_frame_size_enum *fse)
{ … }
static int gc2235_g_skip_frames(struct v4l2_subdev *sd, u32 *frames)
{ … }
static const struct v4l2_subdev_sensor_ops gc2235_sensor_ops = …;
static const struct v4l2_subdev_video_ops gc2235_video_ops = …;
static const struct v4l2_subdev_core_ops gc2235_core_ops = …;
static const struct v4l2_subdev_pad_ops gc2235_pad_ops = …;
static const struct v4l2_subdev_ops gc2235_ops = …;
static void gc2235_remove(struct i2c_client *client)
{ … }
static int gc2235_probe(struct i2c_client *client)
{ … }
static const struct acpi_device_id gc2235_acpi_match[] = …;
MODULE_DEVICE_TABLE(acpi, gc2235_acpi_match);
static struct i2c_driver gc2235_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;