linux/drivers/auxdisplay/lcd2s.c

// SPDX-License-Identifier: GPL-2.0
/*
 *  Console driver for LCD2S 4x20 character displays connected through i2c.
 *  The display also has a SPI interface, but the driver does not support
 *  this yet.
 *
 *  This is a driver allowing you to use a LCD2S 4x20 from Modtronix
 *  engineering as auxdisplay character device.
 *
 *  (C) 2019 by Lemonage Software GmbH
 *  Author: Lars Pöschel <[email protected]>
 *  All rights reserved.
 */
#include <linux/kernel.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/property.h>
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/delay.h>

#include "charlcd.h"

#define LCD2S_CMD_CUR_MOVES_FWD
#define LCD2S_CMD_CUR_BLINK_OFF
#define LCD2S_CMD_CUR_UL_OFF
#define LCD2S_CMD_DISPLAY_OFF
#define LCD2S_CMD_CUR_BLINK_ON
#define LCD2S_CMD_CUR_UL_ON
#define LCD2S_CMD_DISPLAY_ON
#define LCD2S_CMD_BACKLIGHT_OFF
#define LCD2S_CMD_BACKLIGHT_ON
#define LCD2S_CMD_WRITE
#define LCD2S_CMD_MOV_CUR_RIGHT
#define LCD2S_CMD_MOV_CUR_LEFT
#define LCD2S_CMD_SHIFT_RIGHT
#define LCD2S_CMD_SHIFT_LEFT
#define LCD2S_CMD_SHIFT_UP
#define LCD2S_CMD_SHIFT_DOWN
#define LCD2S_CMD_CUR_ADDR
#define LCD2S_CMD_CUR_POS
#define LCD2S_CMD_CUR_RESET
#define LCD2S_CMD_CLEAR
#define LCD2S_CMD_DEF_CUSTOM_CHAR
#define LCD2S_CMD_READ_STATUS

#define LCD2S_CHARACTER_SIZE

#define LCD2S_STATUS_BUF_MASK

struct lcd2s_data {};

static s32 lcd2s_wait_buf_free(const struct i2c_client *client, int count)
{}

static int lcd2s_i2c_master_send(const struct i2c_client *client,
				 const char *buf, int count)
{}

static int lcd2s_i2c_smbus_write_byte(const struct i2c_client *client, u8 value)
{}

static int lcd2s_print(struct charlcd *lcd, int c)
{}

static int lcd2s_gotoxy(struct charlcd *lcd, unsigned int x, unsigned int y)
{}

static int lcd2s_home(struct charlcd *lcd)
{}

static int lcd2s_init_display(struct charlcd *lcd)
{}

static int lcd2s_shift_cursor(struct charlcd *lcd, enum charlcd_shift_dir dir)
{}

static int lcd2s_shift_display(struct charlcd *lcd, enum charlcd_shift_dir dir)
{}

static void lcd2s_backlight(struct charlcd *lcd, enum charlcd_onoff on)
{}

static int lcd2s_display(struct charlcd *lcd, enum charlcd_onoff on)
{}

static int lcd2s_cursor(struct charlcd *lcd, enum charlcd_onoff on)
{}

static int lcd2s_blink(struct charlcd *lcd, enum charlcd_onoff on)
{}

static int lcd2s_fontsize(struct charlcd *lcd, enum charlcd_fontsize size)
{}

static int lcd2s_lines(struct charlcd *lcd, enum charlcd_lines lines)
{}

/*
 * Generator: LGcxxxxx...xx; must have <c> between '0' and '7',
 * representing the numerical ASCII code of the redefined character,
 * and <xx...xx> a sequence of 16 hex digits representing 8 bytes
 * for each character. Most LCDs will only use 5 lower bits of
 * the 7 first bytes.
 */
static int lcd2s_redefine_char(struct charlcd *lcd, char *esc)
{}

static int lcd2s_clear_display(struct charlcd *lcd)
{}

static const struct charlcd_ops lcd2s_ops =;

static int lcd2s_i2c_probe(struct i2c_client *i2c)
{}

static void lcd2s_i2c_remove(struct i2c_client *i2c)
{}

static const struct i2c_device_id lcd2s_i2c_id[] =;
MODULE_DEVICE_TABLE(i2c, lcd2s_i2c_id);

static const struct of_device_id lcd2s_of_table[] =;
MODULE_DEVICE_TABLE(of, lcd2s_of_table);

static struct i2c_driver lcd2s_i2c_driver =;
module_i2c_driver();

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