Re: [PATCH 03/10] Staging: fbtft: Use a struct to describe each LCD controller

Noralf Trønnes
2015-07-23T11:09:39Z

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.falzoi84@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 <noralf@tronnes.org>