linux/drivers/video/fbdev/metronomefb.c

/*
 * linux/drivers/video/metronomefb.c -- FB driver for Metronome controller
 *
 * Copyright (C) 2008, Jaya Kumar
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License. See the file COPYING in the main directory of this archive for
 * more details.
 *
 * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven.
 *
 * This work was made possible by help and equipment support from E-Ink
 * Corporation. https://www.eink.com/
 *
 * This driver is written to be used with the Metronome display controller.
 * It is intended to be architecture independent. A board specific driver
 * must be used to perform all the physical IO interactions. An example
 * is provided as am200epd.c
 *
 */
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/vmalloc.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/fb.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/list.h>
#include <linux/firmware.h>
#include <linux/dma-mapping.h>
#include <linux/uaccess.h>
#include <linux/irq.h>

#include <video/metronomefb.h>

#include <asm/unaligned.h>

/* Display specific information */
#define DPY_W
#define DPY_H

static int user_wfm_size;

/* frame differs from image. frame includes non-visible pixels */
struct epd_frame {};

static struct epd_frame epd_frame_table[] =;

static struct fb_fix_screeninfo metronomefb_fix =;

static struct fb_var_screeninfo metronomefb_var =;

/* the waveform structure that is coming from userspace firmware */
struct waveform_hdr {} __attribute__ ((packed));

/* main metronomefb functions */
static u8 calc_cksum(int start, int end, u8 *mem)
{}

static u16 calc_img_cksum(u16 *start, int length)
{}

/* here we decode the incoming waveform file and populate metromem */
static int load_waveform(u8 *mem, size_t size, int m, int t,
			 struct metronomefb_par *par)
{}

static int metronome_display_cmd(struct metronomefb_par *par)
{}

static int metronome_powerup_cmd(struct metronomefb_par *par)
{}

static int metronome_config_cmd(struct metronomefb_par *par)
{}

static int metronome_init_cmd(struct metronomefb_par *par)
{}

static int metronome_init_regs(struct metronomefb_par *par)
{}

static void metronomefb_dpy_update(struct metronomefb_par *par)
{}

static u16 metronomefb_dpy_update_page(struct metronomefb_par *par, int index)
{}

/* this is called back from the deferred io workqueue */
static void metronomefb_dpy_deferred_io(struct fb_info *info, struct list_head *pagereflist)
{}

static void metronomefb_defio_damage_range(struct fb_info *info, off_t off, size_t len)
{}

static void metronomefb_defio_damage_area(struct fb_info *info, u32 x, u32 y,
					  u32 width, u32 height)
{}

FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(metronomefb,
				   metronomefb_defio_damage_range,
				   metronomefb_defio_damage_area)

static const struct fb_ops metronomefb_ops =;

static struct fb_deferred_io metronomefb_defio =;

static int metronomefb_probe(struct platform_device *dev)
{}

static void metronomefb_remove(struct platform_device *dev)
{}

static struct platform_driver metronomefb_driver =;
module_platform_driver();

module_param(user_wfm_size, uint, 0);
MODULE_PARM_DESC();

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_LICENSE();

MODULE_FIRMWARE();