1/* drivers/video/backlight/ili9320.h 2 * 3 * ILI9320 LCD controller driver core. 4 * 5 * Copyright 2007 Simtec Electronics 6 * Ben Dooks <ben@simtec.co.uk> 7 * 8 * http://armlinux.simtec.co.uk/ 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License version 2 as 12 * published by the Free Software Foundation. 13*/ 14 15/* Holder for register and value pairs. */ 16struct ili9320_reg { 17 unsigned short address; 18 unsigned short value; 19}; 20 21struct ili9320; 22 23struct ili9320_client { 24 const char *name; 25 int (*init)(struct ili9320 *ili, struct ili9320_platdata *cfg); 26 27}; 28/* Device attached via an SPI bus. */ 29struct ili9320_spi { 30 struct spi_device *dev; 31 struct spi_message message; 32 struct spi_transfer xfer[2]; 33 34 unsigned char id; 35 unsigned char buffer_addr[4]; 36 unsigned char buffer_data[4]; 37}; 38 39/* ILI9320 device state. */ 40struct ili9320 { 41 union { 42 struct ili9320_spi spi; /* SPI attachged device. */ 43 } access; /* Register access method. */ 44 45 struct device *dev; 46 struct lcd_device *lcd; /* LCD device we created. */ 47 struct ili9320_client *client; 48 struct ili9320_platdata *platdata; 49 50 int power; /* current power state. */ 51 int initialised; 52 53 unsigned short display1; 54 unsigned short power1; 55 56 int (*write)(struct ili9320 *ili, unsigned int reg, unsigned int val); 57}; 58 59 60/* ILI9320 register access routines */ 61 62extern int ili9320_write(struct ili9320 *ili, 63 unsigned int reg, unsigned int value); 64 65extern int ili9320_write_regs(struct ili9320 *ili, 66 const struct ili9320_reg *values, 67 int nr_values); 68 69/* Device probe */ 70 71extern int ili9320_probe_spi(struct spi_device *spi, 72 struct ili9320_client *cli); 73 74extern int ili9320_remove(struct ili9320 *lcd); 75extern void ili9320_shutdown(struct ili9320 *lcd); 76 77/* PM */ 78 79extern int ili9320_suspend(struct ili9320 *lcd); 80extern int ili9320_resume(struct ili9320 *lcd); 81