#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/i2c.h>
#include <linux/property.h>
#include <linux/fb.h>
#include <linux/backlight.h>
#include <linux/container_of.h>
#include <linux/input.h>
#include <linux/input/matrix_keypad.h>
#include <linux/leds.h>
#include <linux/workqueue.h>
#include <linux/mm.h>
#include <linux/map_to_7segment.h>
#include <linux/map_to_14segment.h>
#include <asm/unaligned.h>
#include "line-display.h"
#define REG_SYSTEM_SETUP …
#define REG_SYSTEM_SETUP_OSC_ON …
#define REG_DISPLAY_SETUP …
#define REG_DISPLAY_SETUP_ON …
#define REG_DISPLAY_SETUP_BLINK_OFF …
#define REG_DISPLAY_SETUP_BLINK_2HZ …
#define REG_DISPLAY_SETUP_BLINK_1HZ …
#define REG_DISPLAY_SETUP_BLINK_0HZ5 …
#define REG_ROWINT_SET …
#define REG_ROWINT_SET_INT_EN …
#define REG_ROWINT_SET_INT_ACT_HIGH …
#define REG_BRIGHTNESS …
#define DRIVER_NAME …
#define MIN_BRIGHTNESS …
#define MAX_BRIGHTNESS …
#define HT16K33_MATRIX_LED_MAX_COLS …
#define HT16K33_MATRIX_LED_MAX_ROWS …
#define HT16K33_MATRIX_KEYPAD_MAX_COLS …
#define HT16K33_MATRIX_KEYPAD_MAX_ROWS …
#define BYTES_PER_ROW …
#define HT16K33_FB_SIZE …
enum display_type { … };
struct ht16k33_keypad { … };
struct ht16k33_fbdev { … };
struct ht16k33_priv { … };
#define ht16k33_work_to_priv(p) …
#define ht16k33_led_to_priv(p) …
#define ht16k33_linedisp_to_priv(p) …
static const struct fb_fix_screeninfo ht16k33_fb_fix = …;
static const struct fb_var_screeninfo ht16k33_fb_var = …;
static int ht16k33_display_on(struct ht16k33_priv *priv)
{ … }
static int ht16k33_display_off(struct ht16k33_priv *priv)
{ … }
static int ht16k33_brightness_set(struct ht16k33_priv *priv,
unsigned int brightness)
{ … }
static int ht16k33_brightness_set_blocking(struct led_classdev *led_cdev,
enum led_brightness brightness)
{ … }
static int ht16k33_blink_set(struct led_classdev *led_cdev,
unsigned long *delay_on, unsigned long *delay_off)
{ … }
static void ht16k33_fb_queue(struct ht16k33_priv *priv)
{ … }
static void ht16k33_fb_update(struct work_struct *work)
{ … }
static int ht16k33_initialize(struct ht16k33_priv *priv)
{ … }
static int ht16k33_bl_update_status(struct backlight_device *bl)
{ … }
static const struct backlight_ops ht16k33_bl_ops = …;
static int ht16k33_blank(int blank, struct fb_info *info)
{ … }
static int ht16k33_mmap(struct fb_info *info, struct vm_area_struct *vma)
{ … }
static const struct fb_ops ht16k33_fb_ops = …;
static bool ht16k33_keypad_scan(struct ht16k33_keypad *keypad)
{ … }
static irqreturn_t ht16k33_keypad_irq_thread(int irq, void *dev)
{ … }
static int ht16k33_keypad_start(struct input_dev *dev)
{ … }
static void ht16k33_keypad_stop(struct input_dev *dev)
{ … }
static void ht16k33_seg7_update(struct work_struct *work)
{ … }
static void ht16k33_seg14_update(struct work_struct *work)
{ … }
static int ht16k33_linedisp_get_map_type(struct linedisp *linedisp)
{ … }
static void ht16k33_linedisp_update(struct linedisp *linedisp)
{ … }
static const struct linedisp_ops ht16k33_linedisp_ops = …;
static int ht16k33_led_probe(struct device *dev, struct led_classdev *led,
unsigned int brightness)
{ … }
static int ht16k33_keypad_probe(struct i2c_client *client,
struct ht16k33_keypad *keypad)
{ … }
static int ht16k33_fbdev_probe(struct device *dev, struct ht16k33_priv *priv,
uint32_t brightness)
{ … }
static int ht16k33_seg_probe(struct device *dev, struct ht16k33_priv *priv,
uint32_t brightness)
{ … }
static int ht16k33_probe(struct i2c_client *client)
{ … }
static void ht16k33_remove(struct i2c_client *client)
{ … }
static const struct i2c_device_id ht16k33_i2c_match[] = …;
MODULE_DEVICE_TABLE(i2c, ht16k33_i2c_match);
static const struct of_device_id ht16k33_of_match[] = …;
MODULE_DEVICE_TABLE(of, ht16k33_of_match);
static struct i2c_driver ht16k33_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_IMPORT_NS(…);
MODULE_AUTHOR(…) …;