Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /* drivers/video/backlight/ili9320.h
0003  *
0004  * ILI9320 LCD controller driver core.
0005  *
0006  * Copyright 2007 Simtec Electronics
0007  *  Ben Dooks <ben@simtec.co.uk>
0008  *
0009  * http://armlinux.simtec.co.uk/
0010 */
0011 
0012 /* Holder for register and value pairs. */
0013 struct ili9320_reg {
0014     unsigned short      address;
0015     unsigned short      value;
0016 };
0017 
0018 struct ili9320;
0019 
0020 struct ili9320_client {
0021     const char  *name;
0022     int (*init)(struct ili9320 *ili, struct ili9320_platdata *cfg);
0023 
0024 };
0025 /* Device attached via an SPI bus. */
0026 struct  ili9320_spi {
0027     struct spi_device   *dev;
0028     struct spi_message  message;
0029     struct spi_transfer xfer[2];
0030 
0031     unsigned char       id;
0032     unsigned char       buffer_addr[4];
0033     unsigned char       buffer_data[4];
0034 };
0035 
0036 /* ILI9320 device state. */
0037 struct ili9320 {
0038     union {
0039         struct ili9320_spi  spi;    /* SPI attachged device. */
0040     } access;               /* Register access method. */
0041 
0042     struct device           *dev;
0043     struct lcd_device       *lcd;   /* LCD device we created. */
0044     struct ili9320_client       *client;
0045     struct ili9320_platdata     *platdata;
0046 
0047     int              power; /* current power state. */
0048     int              initialised;
0049 
0050     unsigned short           display1;
0051     unsigned short           power1;
0052 
0053     int (*write)(struct ili9320 *ili, unsigned int reg, unsigned int val);
0054 };
0055 
0056 
0057 /* ILI9320 register access routines */
0058 
0059 extern int ili9320_write(struct ili9320 *ili,
0060              unsigned int reg, unsigned int value);
0061 
0062 extern int ili9320_write_regs(struct ili9320 *ili,
0063                   const struct ili9320_reg *values,
0064                   int nr_values);
0065 
0066 /* Device probe */
0067 
0068 extern int ili9320_probe_spi(struct spi_device *spi,
0069                  struct ili9320_client *cli);
0070 
0071 extern void ili9320_remove(struct ili9320 *lcd);
0072 extern void ili9320_shutdown(struct ili9320 *lcd);
0073 
0074 /* PM */
0075 
0076 extern int ili9320_suspend(struct ili9320 *lcd);
0077 extern int ili9320_resume(struct ili9320 *lcd);