1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 * Character LCD driver for Linux
5 * Copyright (C) 2000-2008, Willy Tarreau <w@1wt.eu>
6 * Copyright (C) 2016-2017 Glider bvba
12 #define LCD_FLAG_B 0x0004 /* Blink on */
13 #define LCD_FLAG_C 0x0008 /* Cursor on */
14 #define LCD_FLAG_D 0x0010 /* Display on */
15 #define LCD_FLAG_F 0x0020 /* Large font mode */
16 #define LCD_FLAG_N 0x0040 /* 2-rows mode */
17 #define LCD_FLAG_L 0x0080 /* Backlight enabled */
24 enum charlcd_shift_dir
{
29 enum charlcd_fontsize
{
30 CHARLCD_FONTSIZE_SMALL
,
31 CHARLCD_FONTSIZE_LARGE
,
40 const struct charlcd_ops
*ops
;
41 const unsigned char *char_conv
; /* Optional */
46 /* Contains the LCD X and Y offset */
56 * struct charlcd_ops - Functions used by charlcd. Drivers have to implement
58 * @backlight: Turn backlight on or off. Optional.
59 * @print: Print one character to the display at current cursor position.
60 * The buffered cursor position is advanced by charlcd. The cursor should not
61 * wrap to the next line at the end of a line.
62 * @gotoxy: Set cursor to x, y. The x and y values to set the cursor to are
63 * previously set in addr.x and addr.y by charlcd.
64 * @home: Set cursor to 0, 0. The values in addr.x and addr.y are set to 0, 0 by
65 * charlcd prior to calling this function.
66 * @clear_display: Clear the whole display and set the cursor to 0, 0. The
67 * values in addr.x and addr.y are set to 0, 0 by charlcd after to calling this
69 * @init_display: Initialize the display.
70 * @shift_cursor: Shift cursor left or right one position.
71 * @shift_display: Shift whole display content left or right.
72 * @display: Turn display on or off.
73 * @cursor: Turn cursor on or off.
74 * @blink: Turn cursor blink on or off.
75 * @lines: One or two lines.
76 * @redefine_char: Redefine the actual pixel matrix of character.
79 void (*backlight
)(struct charlcd
*lcd
, enum charlcd_onoff on
);
80 int (*print
)(struct charlcd
*lcd
, int c
);
81 int (*gotoxy
)(struct charlcd
*lcd
, unsigned int x
, unsigned int y
);
82 int (*home
)(struct charlcd
*lcd
);
83 int (*clear_display
)(struct charlcd
*lcd
);
84 int (*init_display
)(struct charlcd
*lcd
);
85 int (*shift_cursor
)(struct charlcd
*lcd
, enum charlcd_shift_dir dir
);
86 int (*shift_display
)(struct charlcd
*lcd
, enum charlcd_shift_dir dir
);
87 int (*display
)(struct charlcd
*lcd
, enum charlcd_onoff on
);
88 int (*cursor
)(struct charlcd
*lcd
, enum charlcd_onoff on
);
89 int (*blink
)(struct charlcd
*lcd
, enum charlcd_onoff on
);
90 int (*fontsize
)(struct charlcd
*lcd
, enum charlcd_fontsize size
);
91 int (*lines
)(struct charlcd
*lcd
, enum charlcd_lines lines
);
92 int (*redefine_char
)(struct charlcd
*lcd
, char *esc
);
95 void charlcd_backlight(struct charlcd
*lcd
, enum charlcd_onoff on
);
96 struct charlcd
*charlcd_alloc(void);
97 void charlcd_free(struct charlcd
*lcd
);
99 int charlcd_register(struct charlcd
*lcd
);
100 int charlcd_unregister(struct charlcd
*lcd
);
102 void charlcd_poke(struct charlcd
*lcd
);
104 #endif /* CHARLCD_H */