brintos

brintos / linux-shallow public Read only

0
0
Text · 3.2 KiB · 4d42872 Raw
107 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Character LCD driver for Linux4 *5 * Copyright (C) 2000-2008, Willy Tarreau <w@1wt.eu>6 * Copyright (C) 2016-2017 Glider bvba7 */8 9#ifndef _CHARLCD_H10#define _CHARLCD_H11 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 */18 19enum charlcd_onoff {20	CHARLCD_OFF = 0,21	CHARLCD_ON,22};23 24enum charlcd_shift_dir {25	CHARLCD_SHIFT_LEFT,26	CHARLCD_SHIFT_RIGHT,27};28 29enum charlcd_fontsize {30	CHARLCD_FONTSIZE_SMALL,31	CHARLCD_FONTSIZE_LARGE,32};33 34enum charlcd_lines {35	CHARLCD_LINES_1,36	CHARLCD_LINES_2,37};38 39struct charlcd_ops;40 41struct charlcd {42	const struct charlcd_ops *ops;43	const unsigned char *char_conv;	/* Optional */44 45	int height;46	int width;47 48	/* Contains the LCD X and Y offset */49	struct {50		unsigned long x;51		unsigned long y;52	} addr;53 54	void *drvdata;55};56 57/**58 * struct charlcd_ops - Functions used by charlcd. Drivers have to implement59 * these.60 * @backlight: Turn backlight on or off. Optional.61 * @print: Print one character to the display at current cursor position.62 * The buffered cursor position is advanced by charlcd. The cursor should not63 * wrap to the next line at the end of a line.64 * @gotoxy: Set cursor to x, y. The x and y values to set the cursor to are65 * previously set in addr.x and addr.y by charlcd.66 * @home: Set cursor to 0, 0. The values in addr.x and addr.y are set to 0, 0 by67 * charlcd prior to calling this function.68 * @clear_display: Clear the whole display and set the cursor to 0, 0. The69 * values in addr.x and addr.y are set to 0, 0 by charlcd after to calling this70 * function.71 * @init_display: Initialize the display.72 * @shift_cursor: Shift cursor left or right one position.73 * @shift_display: Shift whole display content left or right.74 * @display: Turn display on or off.75 * @cursor: Turn cursor on or off.76 * @blink: Turn cursor blink on or off.77 * @lines: One or two lines.78 * @redefine_char: Redefine the actual pixel matrix of character.79 */80struct charlcd_ops {81	void (*backlight)(struct charlcd *lcd, enum charlcd_onoff on);82	int (*print)(struct charlcd *lcd, int c);83	int (*gotoxy)(struct charlcd *lcd, unsigned int x, unsigned int y);84	int (*home)(struct charlcd *lcd);85	int (*clear_display)(struct charlcd *lcd);86	int (*init_display)(struct charlcd *lcd);87	int (*shift_cursor)(struct charlcd *lcd, enum charlcd_shift_dir dir);88	int (*shift_display)(struct charlcd *lcd, enum charlcd_shift_dir dir);89	int (*display)(struct charlcd *lcd, enum charlcd_onoff on);90	int (*cursor)(struct charlcd *lcd, enum charlcd_onoff on);91	int (*blink)(struct charlcd *lcd, enum charlcd_onoff on);92	int (*fontsize)(struct charlcd *lcd, enum charlcd_fontsize size);93	int (*lines)(struct charlcd *lcd, enum charlcd_lines lines);94	int (*redefine_char)(struct charlcd *lcd, char *esc);95};96 97void charlcd_backlight(struct charlcd *lcd, enum charlcd_onoff on);98struct charlcd *charlcd_alloc(void);99void charlcd_free(struct charlcd *lcd);100 101int charlcd_register(struct charlcd *lcd);102int charlcd_unregister(struct charlcd *lcd);103 104void charlcd_poke(struct charlcd *lcd);105 106#endif /* CHARLCD_H */107