2a12d07705a3428ab5a2eae18e5bdac6a430c6ab
[sfrench/cifs-2.6.git] / drivers / auxdisplay / charlcd.h
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 ifwidth;                    /* 4-bit or 8-bit (default) */
22         int height;
23         int width;
24
25         void *drvdata;
26 };
27
28 struct charlcd_ops {
29         /* Required */
30         void (*write_cmd)(struct charlcd *lcd, int cmd);
31         void (*write_data)(struct charlcd *lcd, int data);
32
33         /* Optional */
34         void (*write_cmd_raw4)(struct charlcd *lcd, int cmd);   /* 4-bit only */
35         void (*clear_fast)(struct charlcd *lcd);
36         void (*backlight)(struct charlcd *lcd, enum charlcd_onoff on);
37 };
38
39 struct charlcd *charlcd_alloc(void);
40 void charlcd_free(struct charlcd *lcd);
41
42 int charlcd_register(struct charlcd *lcd);
43 int charlcd_unregister(struct charlcd *lcd);
44
45 void charlcd_poke(struct charlcd *lcd);
46
47 #endif /* CHARLCD_H */