From: Tim Harvey <tharvey@gateworks.com>
To: u-boot@lists.denx.de, Stefano Babic <sbabic@denx.de>,
Fabio Estevam <festevam@gmail.com>,
"NXP i . MX U-Boot Team" <uboot-imx@nxp.com>
Cc: Tim Harvey <tharvey@gateworks.com>
Subject: [PATCH 6/7] imx: ventana: update LVDS support
Date: Wed, 29 Sep 2021 15:04:21 -0700 [thread overview]
Message-ID: <20210929220422.13661-6-tharvey@gateworks.com> (raw)
In-Reply-To: <20210929220422.13661-1-tharvey@gateworks.com>
Enable LVDS display detection and panel-specific configuration
Make I2C based LVDS detection and configuration model specific:
- not all boards support LVDS connectors; fail detection that do not
support LVDS to avoid misdetecting an I2C device as a display
- GPIO configuration is panel specific; use panel name where needed
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---
board/gateworks/gw_ventana/gw_ventana.c | 59 ++++++++++++++++++-------
1 file changed, 42 insertions(+), 17 deletions(-)
diff --git a/board/gateworks/gw_ventana/gw_ventana.c b/board/gateworks/gw_ventana/gw_ventana.c
index 16468060f7..1c82bd5067 100644
--- a/board/gateworks/gw_ventana/gw_ventana.c
+++ b/board/gateworks/gw_ventana/gw_ventana.c
@@ -158,25 +158,54 @@ static void enable_hdmi(struct display_info_t const *dev)
imx_enable_hdmi_phy();
}
-static int detect_i2c(struct display_info_t const *dev)
+static int detect_lvds(struct display_info_t const *dev)
{
+ /* only the following boards support LVDS connectors */
+ switch (board_type) {
+ case GW52xx:
+ case GW53xx:
+ case GW54xx:
+ case GW560x:
+ case GW5905:
+ case GW5909:
+ break;
+ default:
+ return 0;
+ }
+
return i2c_set_bus_num(dev->bus) == 0 &&
i2c_probe(dev->addr) == 0;
}
static void enable_lvds(struct display_info_t const *dev)
{
- struct iomuxc *iomux = (struct iomuxc *)
- IOMUXC_BASE_ADDR;
+ struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
/* set CH0 data width to 24bit (IOMUXC_GPR2:5 0=18bit, 1=24bit) */
u32 reg = readl(&iomux->gpr[2]);
reg |= IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT;
writel(reg, &iomux->gpr[2]);
- /* Enable Backlight */
- gpio_request(IMX_GPIO_NR(1, 10), "bklt_gpio");
- gpio_direction_output(IMX_GPIO_NR(1, 10), 0);
+ /* Configure GPIO */
+ switch (board_type) {
+ case GW52xx:
+ case GW53xx:
+ case GW54xx:
+ if (!strncmp(dev->mode.name, "Hannstar", 8)) {
+ SETUP_IOMUX_PAD(PAD_SD2_CLK__GPIO1_IO10 | DIO_PAD_CFG);
+ gpio_request(IMX_GPIO_NR(1, 10), "cabc");
+ gpio_direction_output(IMX_GPIO_NR(1, 10), 0);
+ } else if (!strncmp(dev->mode.name, "DLC", 3)) {
+ SETUP_IOMUX_PAD(PAD_SD2_CLK__GPIO1_IO10 | DIO_PAD_CFG);
+ gpio_request(IMX_GPIO_NR(1, 10), "touch_rst#");
+ gpio_direction_output(IMX_GPIO_NR(1, 10), 1);
+ }
+ break;
+ default:
+ break;
+ }
+
+ /* Configure backlight */
gpio_request(IMX_GPIO_NR(1, 18), "bklt_en");
SETUP_IOMUX_PAD(PAD_SD1_CMD__GPIO1_IO18 | DIO_PAD_CFG);
gpio_direction_output(IMX_GPIO_NR(1, 18), 1);
@@ -208,7 +237,7 @@ struct display_info_t const displays[] = {{
.bus = 2,
.addr = 0x4,
.pixfmt = IPU_PIX_FMT_LVDS666,
- .detect = detect_i2c,
+ .detect = detect_lvds,
.enable = enable_lvds,
.mode = {
.name = "Hannstar-XGA",
@@ -228,7 +257,7 @@ struct display_info_t const displays[] = {{
/* DLC700JMG-T-4 */
.bus = 2,
.addr = 0x38,
- .detect = NULL,
+ .detect = detect_lvds,
.enable = enable_lvds,
.pixfmt = IPU_PIX_FMT_LVDS666,
.mode = {
@@ -247,9 +276,9 @@ struct display_info_t const displays[] = {{
.vmode = FB_VMODE_NONINTERLACED
} }, {
/* DLC0700XDP21LF-C-1 */
- .bus = 0,
- .addr = 0,
- .detect = NULL,
+ .bus = 2,
+ .addr = 0x38,
+ .detect = detect_lvds,
.enable = enable_lvds,
.pixfmt = IPU_PIX_FMT_LVDS666,
.mode = {
@@ -270,7 +299,7 @@ struct display_info_t const displays[] = {{
/* DLC800FIG-T-3 */
.bus = 2,
.addr = 0x14,
- .detect = NULL,
+ .detect = detect_lvds,
.enable = enable_lvds,
.pixfmt = IPU_PIX_FMT_LVDS666,
.mode = {
@@ -290,7 +319,7 @@ struct display_info_t const displays[] = {{
} }, {
.bus = 2,
.addr = 0x5d,
- .detect = detect_i2c,
+ .detect = detect_lvds,
.enable = enable_lvds,
.pixfmt = IPU_PIX_FMT_LVDS666,
.mode = {
@@ -358,10 +387,6 @@ static void setup_display(void)
| (IOMUXC_GPR3_MUX_SRC_IPU1_DI0
<<IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET);
writel(reg, &iomux->gpr[3]);
-
- /* LVDS Backlight GPIO on LVDS connector - output low */
- SETUP_IOMUX_PAD(PAD_SD2_CLK__GPIO1_IO10 | DIO_PAD_CFG);
- gpio_direction_output(IMX_GPIO_NR(1, 10), 0);
}
#endif /* CONFIG_VIDEO_IPUV3 */
--
2.17.1
next prev parent reply other threads:[~2021-09-29 22:05 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-29 22:04 [PATCH 1/7] imx: ventana: add part command Tim Harvey
2021-09-29 22:04 ` [PATCH 2/7] imx: ventana: add U-Boot watchdog support Tim Harvey
2021-10-07 14:13 ` sbabic
2021-09-29 22:04 ` [PATCH 3/7] imx: ventana: remove phy gpio reset from dt Tim Harvey
2021-10-07 14:13 ` sbabic
2021-09-29 22:04 ` [PATCH 4/7] imx: ventana: enable additional USB ether devices Tim Harvey
2021-10-07 14:12 ` sbabic
2021-09-29 22:04 ` [PATCH 5/7] imx: ventana: fix splash logo drawing Tim Harvey
2021-10-07 14:12 ` sbabic
2021-09-29 22:04 ` Tim Harvey [this message]
2021-10-07 14:14 ` [PATCH 6/7] imx: ventana: update LVDS support sbabic
2021-09-29 22:04 ` [PATCH 7/7] imx: ventana: fix USB hub reset Tim Harvey
2021-10-07 14:14 ` sbabic
2021-10-07 14:14 ` [PATCH 1/7] imx: ventana: add part command sbabic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210929220422.13661-6-tharvey@gateworks.com \
--to=tharvey@gateworks.com \
--cc=festevam@gmail.com \
--cc=sbabic@denx.de \
--cc=u-boot@lists.denx.de \
--cc=uboot-imx@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox