Den 30.06.2015 08:43, skrev Fabio Falzoi:
Use a struct flexfb_lcd_controller to holds chip properties, instead of
relying on a long 'if - else if' chain.
This allows to:
- use a simple linear search to verify if a certain LCD controller
model is supported or not.
- add support for a new LCD chip controller simply defining a new
flexfb_lcd_controller struct.

Signed-off-by: Fabio Falzoi <fabio.falzo...@gmail.com>
---
  drivers/staging/fbtft/fbtft.h  |  20 ++++
  drivers/staging/fbtft/flexfb.c | 212 ++++++++++++++++++++++-------------------
  2 files changed, 136 insertions(+), 96 deletions(-)

diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
index 7d817eb..c96c06b 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
@@ -256,6 +256,26 @@ struct fbtft_par {
        void *extra;
  };
+/**
+ * struct flexfb_lcd_controller - Describes the LCD controller properties
+ * @name: Model name of the chip
+ * @width: Width of display in pixels
+ * @height: Height of display in pixels
+ * @setaddrwin: Which set_addr_win() implementation to use
+ * @regwidth: LCD Controller Register width in bits
+ * @init_seq: LCD initialization sequence
+ * @init_seq_sz: Size of LCD initialization sequence
+ */
+struct flexfb_lcd_controller {
+       const char *name;
+       unsigned int width;
+       unsigned int height;
+       unsigned int setaddrwin;
+       unsigned int regwidth;
+       int *init_seq;
+       int init_seq_sz;
+};
+

Please put this in flexfb.c since it won't be used outside that file.

  #define NUMARGS(...)  (sizeof((int[]){__VA_ARGS__})/sizeof(int))
#define write_reg(par, ...) \
diff --git a/drivers/staging/fbtft/flexfb.c b/drivers/staging/fbtft/flexfb.c
index ed867e7..25b394d 100644
--- a/drivers/staging/fbtft/flexfb.c
+++ b/drivers/staging/fbtft/flexfb.c
@@ -126,6 +126,89 @@ static int ssd1351_init[] = { -1, 0xfd, 0x12, -1, 0xfd, 
0xb1, -1, 0xae, -1, 0xb3
                              -1, 0xab, 0x01, -1, 0xb1, 0x32, -1, 0xb4, 0xa0, 
0xb5, 0x55, -1, 0xbb, 0x17, -1, 0xbe, 0x05,
                              -1, 0xc1, 0xc8, 0x80, 0xc8, -1, 0xc7, 0x0f, -1, 
0xb6, 0x01, -1, 0xa6, -1, 0xaf, -3 };
+static const struct flexfb_lcd_controller flexfb_chip_table[] = {
+       {
+               .name = "st7735r",
+               .width = 120,
+               .height = 160,
+               .init_seq = st7735r_init,
+               .init_seq_sz = ARRAY_SIZE(st7735r_init),
+       },
+       {

Can this be put on one line? }, {

With the struct moved:
Acked-by: Noralf Trønnes <nor...@tronnes.org>

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to