linux/drivers/auxdisplay/ht16k33.c

// SPDX-License-Identifier: GPL-2.0
/*
 * HT16K33 driver
 *
 * Author: Robin van der Gracht <[email protected]>
 *
 * Copyright: (C) 2016 Protonic Holland.
 * Copyright (C) 2021 Glider bv
 */

#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"

/* Registers */
#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

/* Defines */
#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)
{}

/*
 * This gets the fb data from cache and copies it to ht16k33 display RAM
 */
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 =;

/*
 * Blank events will be passed to the actual device handling the backlight when
 * we return zero here.
 */
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 =;

/*
 * This gets the keys from keypad and reports it to input subsystem.
 * Returns true if a key is pressed.
 */
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();