Re: [PATCH 2/2] pinctrl: ingenic: Add an X1600 group for 18-bit RGB on the top lines
From: H. Nikolaus Schaller
Date: Sat Oct 24 2026 - 13:19:22 EST
Hi,
> Am 23.10.2026 um 22:42 schrieb Olivier Louvignes <olivier@xxxxxxxxx>:
>
> Boards that wire an 18-bit panel to the six most significant lines of
> each colour leave PA0, PA1, PA8, PA9, PA16 and PA17 free for other uses,
> which the cumulative lcd-16bit and lcd-18bit groups would take. Add
> "lcd-18bit-msb" for that wiring.
>
> Used on a HiBy R1, which drives its panel this way and uses PA0, PA1,
> PA16 and PA17 as GPIOs.
>
> Signed-off-by: Olivier Louvignes <olivier@xxxxxxxxx>
> ---
> drivers/pinctrl/pinctrl-ingenic.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pinctrl/pinctrl-ingenic.c b/drivers/pinctrl/pinctrl-ingenic.c
> index 28e7f1852054..8c424db27fd5 100644
> --- a/drivers/pinctrl/pinctrl-ingenic.c
> +++ b/drivers/pinctrl/pinctrl-ingenic.c
> @@ -2442,6 +2442,17 @@ static int x1600_lcd_24bit_pins[] = {
> 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
> };
>
> +/*
> + * 18-bit RGB on the six most significant lines of each colour of the 24-bit
> + * bus, with the clock, data enable and syncs.
> + */
> +static int x1600_lcd_18bit_msb_pins[] = {
> + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
> + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
> + 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
> + 0x18, 0x19, 0x1a, 0x1b,
> +};
I just wonder if you can't get this by combining some existing partial pinctrl,
e.g something with lcd-16bit and lcd-18bit?
But there is no good overlap with existing settings to achieve this.
> +
> static int x1600_pwm_pwm0_pins[] = { 0x40, };
> static int x1600_pwm_pwm1_pins[] = { 0x41, };
> static int x1600_pwm_pwm2_pins[] = { 0x42, };
> @@ -2503,6 +2514,7 @@ static const struct group_desc x1600_groups[] = {
> INGENIC_PIN_GROUP("lcd-16bit", x1600_lcd_16bit, 0),
> INGENIC_PIN_GROUP("lcd-18bit", x1600_lcd_18bit, 0),
> INGENIC_PIN_GROUP("lcd-24bit", x1600_lcd_24bit, 0),
> + INGENIC_PIN_GROUP("lcd-18bit-msb", x1600_lcd_18bit_msb, 0),
> INGENIC_PIN_GROUP("pwm0", x1600_pwm_pwm0, 0),
> INGENIC_PIN_GROUP("pwm1", x1600_pwm_pwm1, 0),
> INGENIC_PIN_GROUP("pwm2", x1600_pwm_pwm2, 0),
> @@ -2549,7 +2561,7 @@ static const char * const x1600_i2s_groups[] = {
> static const char * const x1600_cim_groups[] = { "cim-data", };
>
> static const char * const x1600_lcd_groups[] = { "slcd-8bit", "slcd-16bit",
> - "lcd-16bit", "lcd-18bit", "lcd-24bit", "lcd-no-pins",
> + "lcd-16bit", "lcd-18bit", "lcd-24bit", "lcd-18bit-msb", "lcd-no-pins",
> };
>
> static const char * const x1600_pwm0_groups[] = { "pwm0", };
> --
> 2.39.5
>
>
Reviewed-By: H. Nikolaus Schaller <hns@xxxxxxxxxxxxx>