diff options
Diffstat (limited to 'drivers/video/backlight/ili9320.h')
-rw-r--r-- | drivers/video/backlight/ili9320.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/drivers/video/backlight/ili9320.h b/drivers/video/backlight/ili9320.h new file mode 100644 index 000000000000..e388eca7cac5 --- /dev/null +++ b/drivers/video/backlight/ili9320.h | |||
@@ -0,0 +1,80 @@ | |||
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. */ | ||
16 | struct ili9320_reg { | ||
17 | unsigned short address; | ||
18 | unsigned short value; | ||
19 | }; | ||
20 | |||
21 | struct ili9320; | ||
22 | |||
23 | struct 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. */ | ||
29 | struct 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. */ | ||
40 | struct 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 | |||
62 | extern int ili9320_write(struct ili9320 *ili, | ||
63 | unsigned int reg, unsigned int value); | ||
64 | |||
65 | extern int ili9320_write_regs(struct ili9320 *ili, | ||
66 | struct ili9320_reg *values, | ||
67 | int nr_values); | ||
68 | |||
69 | /* Device probe */ | ||
70 | |||
71 | extern int ili9320_probe_spi(struct spi_device *spi, | ||
72 | struct ili9320_client *cli); | ||
73 | |||
74 | extern int ili9320_remove(struct ili9320 *lcd); | ||
75 | extern void ili9320_shutdown(struct ili9320 *lcd); | ||
76 | |||
77 | /* PM */ | ||
78 | |||
79 | extern int ili9320_suspend(struct ili9320 *lcd, pm_message_t state); | ||
80 | extern int ili9320_resume(struct ili9320 *lcd); | ||