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 struct charlcd { 13 const struct charlcd_ops *ops; 14 const unsigned char *char_conv; /* Optional */ 15 16 int ifwidth; /* 4-bit or 8-bit (default) */ 17 int height; 18 int width; 19 int bwidth; /* Default set by charlcd_alloc() */ 20 int hwidth; /* Default set by charlcd_alloc() */ 21 22 void *drvdata; /* Set by charlcd_alloc() */ 23 }; 24 25 struct charlcd_ops { 26 /* Required */ 27 void (*write_cmd)(struct charlcd *lcd, int cmd); 28 void (*write_data)(struct charlcd *lcd, int data); 29 30 /* Optional */ 31 void (*write_cmd_raw4)(struct charlcd *lcd, int cmd); /* 4-bit only */ 32 void (*clear_fast)(struct charlcd *lcd); 33 void (*backlight)(struct charlcd *lcd, int on); 34 }; 35 36 struct charlcd *charlcd_alloc(unsigned int drvdata_size); 37 void charlcd_free(struct charlcd *lcd); 38 39 int charlcd_register(struct charlcd *lcd); 40 int charlcd_unregister(struct charlcd *lcd); 41 42 void charlcd_poke(struct charlcd *lcd); 43 44 #endif /* CHARLCD_H */ 45