#include <linux/kernel.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/soc/amlogic/meson-canvas.h>
#include <linux/of_address.h>
#include <linux/of_platform.h>
#include <linux/io.h>
#define NUM_CANVAS …
#define DMC_CAV_LUT_DATAL …
#define CANVAS_WIDTH_LBIT …
#define CANVAS_WIDTH_LWID …
#define DMC_CAV_LUT_DATAH …
#define CANVAS_WIDTH_HBIT …
#define CANVAS_HEIGHT_BIT …
#define CANVAS_WRAP_BIT …
#define CANVAS_BLKMODE_BIT …
#define CANVAS_ENDIAN_BIT …
#define DMC_CAV_LUT_ADDR …
#define CANVAS_LUT_WR_EN …
#define CANVAS_LUT_RD_EN …
struct meson_canvas { … };
static void canvas_write(struct meson_canvas *canvas, u32 reg, u32 val)
{ … }
static u32 canvas_read(struct meson_canvas *canvas, u32 reg)
{ … }
struct meson_canvas *meson_canvas_get(struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
int meson_canvas_config(struct meson_canvas *canvas, u8 canvas_index,
u32 addr, u32 stride, u32 height,
unsigned int wrap,
unsigned int blkmode,
unsigned int endian)
{ … }
EXPORT_SYMBOL_GPL(…);
int meson_canvas_alloc(struct meson_canvas *canvas, u8 *canvas_index)
{ … }
EXPORT_SYMBOL_GPL(…);
int meson_canvas_free(struct meson_canvas *canvas, u8 canvas_index)
{ … }
EXPORT_SYMBOL_GPL(…);
static int meson_canvas_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id canvas_dt_match[] = …;
MODULE_DEVICE_TABLE(of, canvas_dt_match);
static struct platform_driver meson_canvas_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;