64 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Copyright (c) 2011-2018 Magewell Electronics Co., Ltd. (Nanjing)4 * Author: Yong Deng <yong.deng@magewell.com>5 * Copyright 2021-2022 Bootlin6 * Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>7 */8 9#ifndef _SUN6I_CSI_H_10#define _SUN6I_CSI_H_11 12#include <media/v4l2-device.h>13#include <media/videobuf2-v4l2.h>14 15#include "sun6i_csi_bridge.h"16#include "sun6i_csi_capture.h"17 18#define SUN6I_CSI_NAME "sun6i-csi"19#define SUN6I_CSI_DESCRIPTION "Allwinner A31 CSI Device"20 21enum sun6i_csi_port {22 SUN6I_CSI_PORT_PARALLEL = 0,23 SUN6I_CSI_PORT_MIPI_CSI2 = 1,24 SUN6I_CSI_PORT_ISP = 2,25};26 27struct sun6i_csi_buffer {28 struct vb2_v4l2_buffer v4l2_buffer;29 struct list_head list;30};31 32struct sun6i_csi_v4l2 {33 struct v4l2_device v4l2_dev;34 struct media_device media_dev;35};36 37struct sun6i_csi_device {38 struct device *dev;39 struct v4l2_device *v4l2_dev;40 struct media_device *media_dev;41 42 struct sun6i_csi_v4l2 v4l2;43 struct sun6i_csi_bridge bridge;44 struct sun6i_csi_capture capture;45 46 struct regmap *regmap;47 struct clk *clock_mod;48 struct clk *clock_ram;49 struct reset_control *reset;50 51 bool isp_available;52};53 54struct sun6i_csi_variant {55 unsigned long clock_mod_rate;56};57 58/* ISP */59 60int sun6i_csi_isp_complete(struct sun6i_csi_device *csi_dev,61 struct v4l2_device *v4l2_dev);62 63#endif64