#include <linux/acpi.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>
struct ak73xx_chipdef { … };
static const struct ak73xx_chipdef ak7345_cdef = …;
static const struct ak73xx_chipdef ak7375_cdef = …;
static const char * const ak7375_supply_names[] = …;
struct ak7375_device { … };
static inline struct ak7375_device *to_ak7375_vcm(struct v4l2_ctrl *ctrl)
{ … }
static inline struct ak7375_device *sd_to_ak7375_vcm(struct v4l2_subdev *subdev)
{ … }
static int ak7375_i2c_write(struct ak7375_device *ak7375,
u8 addr, u16 data, u8 size)
{ … }
static int ak7375_set_ctrl(struct v4l2_ctrl *ctrl)
{ … }
static const struct v4l2_ctrl_ops ak7375_vcm_ctrl_ops = …;
static int ak7375_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{ … }
static int ak7375_close(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{ … }
static const struct v4l2_subdev_internal_ops ak7375_int_ops = …;
static const struct v4l2_subdev_ops ak7375_ops = …;
static void ak7375_subdev_cleanup(struct ak7375_device *ak7375_dev)
{ … }
static int ak7375_init_controls(struct ak7375_device *dev_vcm)
{ … }
static int ak7375_probe(struct i2c_client *client)
{ … }
static void ak7375_remove(struct i2c_client *client)
{ … }
static int __maybe_unused ak7375_vcm_suspend(struct device *dev)
{ … }
static int __maybe_unused ak7375_vcm_resume(struct device *dev)
{ … }
static const struct of_device_id ak7375_of_table[] = …;
MODULE_DEVICE_TABLE(of, ak7375_of_table);
static const struct dev_pm_ops ak7375_pm_ops = …;
static struct i2c_driver ak7375_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;