xref: /linux/drivers/auxdisplay/charlcd.h (revision 11588b59)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Character LCD driver for Linux
4  *
5  * Copyright (C) 2000-2008, Willy Tarreau <w@1wt.eu>
6  * Copyright (C) 2016-2017 Glider bvba
7  */
8 
9 #ifndef _CHARLCD_H
10 #define _CHARLCD_H
11 
12 enum charlcd_onoff {
13 	CHARLCD_OFF = 0,
14 	CHARLCD_ON,
15 };
16 
17 struct charlcd {
18 	const struct charlcd_ops *ops;
19 	const unsigned char *char_conv;	/* Optional */
20 
21 	int height;
22 	int width;
23 
24 	/* Contains the LCD X and Y offset */
25 	struct {
26 		unsigned long x;
27 		unsigned long y;
28 	} addr;
29 
30 	void *drvdata;
31 };
32 
33 struct charlcd_ops {
34 	void (*clear_fast)(struct charlcd *lcd);
35 	void (*backlight)(struct charlcd *lcd, enum charlcd_onoff on);
36 };
37 
38 struct charlcd *charlcd_alloc(void);
39 void charlcd_free(struct charlcd *lcd);
40 
41 int charlcd_register(struct charlcd *lcd);
42 int charlcd_unregister(struct charlcd *lcd);
43 
44 void charlcd_poke(struct charlcd *lcd);
45 
46 #endif /* CHARLCD_H */
47