#include <linux/clk.h>
#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <linux/reset.h>
#include <media/v4l2-device.h>
#include <media/v4l2-mc.h>
#include "sun6i_csi.h"
#include "sun6i_csi_bridge.h"
#include "sun6i_csi_capture.h"
#include "sun6i_csi_reg.h"
int sun6i_csi_isp_complete(struct sun6i_csi_device *csi_dev,
struct v4l2_device *v4l2_dev)
{ … }
static int sun6i_csi_isp_detect(struct sun6i_csi_device *csi_dev)
{ … }
static const struct media_device_ops sun6i_csi_media_ops = …;
static int sun6i_csi_v4l2_setup(struct sun6i_csi_device *csi_dev)
{ … }
static void sun6i_csi_v4l2_cleanup(struct sun6i_csi_device *csi_dev)
{ … }
static irqreturn_t sun6i_csi_interrupt(int irq, void *private)
{ … }
static int sun6i_csi_suspend(struct device *dev)
{ … }
static int sun6i_csi_resume(struct device *dev)
{ … }
static const struct dev_pm_ops sun6i_csi_pm_ops = …;
static const struct regmap_config sun6i_csi_regmap_config = …;
static int sun6i_csi_resources_setup(struct sun6i_csi_device *csi_dev,
struct platform_device *platform_dev)
{ … }
static void sun6i_csi_resources_cleanup(struct sun6i_csi_device *csi_dev)
{ … }
static int sun6i_csi_probe(struct platform_device *platform_dev)
{ … }
static void sun6i_csi_remove(struct platform_device *pdev)
{ … }
static const struct sun6i_csi_variant sun6i_a31_csi_variant = …;
static const struct sun6i_csi_variant sun50i_a64_csi_variant = …;
static const struct of_device_id sun6i_csi_of_match[] = …;
MODULE_DEVICE_TABLE(of, sun6i_csi_of_match);
static struct platform_driver sun6i_csi_platform_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;