[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <55B0CB5E.8070808@tronnes.org>
Date: Thu, 23 Jul 2015 13:09:18 +0200
From: Noralf Trønnes <noralf@...nnes.org>
To: Fabio Falzoi <fabio.falzoi84@...il.com>,
thomas.petazzoni@...e-electrons.com
CC: gregkh@...uxfoundation.org, devel@...verdev.osuosl.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 03/10] Staging: fbtft: Use a struct to describe each LCD
controller
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@...il.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@...nnes.org>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists