[PATCH 2/2] pinctrl: ingenic: Add an X1600 group for 18-bit RGB on the top lines
From: Olivier Louvignes
Date: Fri Oct 23 2026 - 16:47:00 EST
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,
+};
+
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