#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/pm_runtime.h>
#include "ipu3.h"
#include "ipu3-css-fw.h"
#include "ipu3-dmamap.h"
#include "ipu3-mmu.h"
#define IMGU_PCI_ID …
#define IMGU_PCI_BAR …
#define IMGU_DMA_MASK …
#define IMGU_MAX_QUEUE_DEPTH …
#define CSS_QUEUE_IN_BUF_SIZE …
#define CSS_QUEUE_PARAMS_BUF_SIZE …
#define CSS_QUEUE_OUT_BUF_SIZE …
#define CSS_QUEUE_VF_BUF_SIZE …
#define CSS_QUEUE_STAT_3A_BUF_SIZE …
static const size_t css_queue_buf_size_map[IPU3_CSS_QUEUES] = …;
static const struct imgu_node_mapping imgu_node_map[IMGU_NODE_NUM] = …;
unsigned int imgu_node_to_queue(unsigned int node)
{ … }
unsigned int imgu_map_node(struct imgu_device *imgu, unsigned int css_queue)
{ … }
static void imgu_dummybufs_cleanup(struct imgu_device *imgu, unsigned int pipe)
{ … }
static int imgu_dummybufs_preallocate(struct imgu_device *imgu,
unsigned int pipe)
{ … }
static int imgu_dummybufs_init(struct imgu_device *imgu, unsigned int pipe)
{ … }
static struct imgu_css_buffer *imgu_dummybufs_get(struct imgu_device *imgu,
int queue, unsigned int pipe)
{ … }
static bool imgu_dummybufs_check(struct imgu_device *imgu,
struct imgu_css_buffer *buf,
unsigned int pipe)
{ … }
static void imgu_buffer_done(struct imgu_device *imgu, struct vb2_buffer *vb,
enum vb2_buffer_state state)
{ … }
static struct imgu_css_buffer *imgu_queue_getbuf(struct imgu_device *imgu,
unsigned int node,
unsigned int pipe)
{ … }
int imgu_queue_buffers(struct imgu_device *imgu, bool initial, unsigned int pipe)
{ … }
static int imgu_powerup(struct imgu_device *imgu)
{ … }
static void imgu_powerdown(struct imgu_device *imgu)
{ … }
int imgu_s_stream(struct imgu_device *imgu, int enable)
{ … }
static void imgu_video_nodes_exit(struct imgu_device *imgu)
{ … }
static int imgu_video_nodes_init(struct imgu_device *imgu)
{ … }
static irqreturn_t imgu_isr_threaded(int irq, void *imgu_ptr)
{ … }
static irqreturn_t imgu_isr(int irq, void *imgu_ptr)
{ … }
static int imgu_pci_config_setup(struct pci_dev *dev)
{ … }
static int imgu_pci_probe(struct pci_dev *pci_dev,
const struct pci_device_id *id)
{ … }
static void imgu_pci_remove(struct pci_dev *pci_dev)
{ … }
static int __maybe_unused imgu_suspend(struct device *dev)
{ … }
static int __maybe_unused imgu_resume(struct device *dev)
{ … }
static __maybe_unused int imgu_rpm_dummy_cb(struct device *dev)
{ … }
static const struct dev_pm_ops imgu_pm_ops = …;
static const struct pci_device_id imgu_pci_tbl[] = …;
MODULE_DEVICE_TABLE(pci, imgu_pci_tbl);
static struct pci_driver imgu_pci_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);