All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 10/17] sunxi: video: Add suppport SoCs without HDMI, e.g. the A13 and A23
Date: Wed, 24 Dec 2014 20:06:22 +0100	[thread overview]
Message-ID: <1419447989-21959-11-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1419447989-21959-1-git-send-email-hdegoede@redhat.com>

Some SoCs, specifically the A13 (sun5i variant) and the A23 (sun8i) only have
lcd output support.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 board/sunxi/Kconfig           |  7 +++++++
 drivers/video/sunxi_display.c | 30 ++++++++++++++++++++++++++----
 2 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
index 35c59e9..7a8503b 100644
--- a/board/sunxi/Kconfig
+++ b/board/sunxi/Kconfig
@@ -246,6 +246,13 @@ config VIDEO
 	or VGA output found on most sunxi devices. See doc/README.video for
 	info on how to select the video output and mode.
 
+config VIDEO_HDMI
+	boolean "HDMI output support"
+	depends on VIDEO && !MACH_SUN8I
+	default y
+	---help---
+	Say Y here to add support for outputting video over HDMI.
+
 config VIDEO_LCD_MODE
 	string "LCD panel timing details"
 	depends on VIDEO
diff --git a/drivers/video/sunxi_display.c b/drivers/video/sunxi_display.c
index bfcfd3f..2822cc6 100644
--- a/drivers/video/sunxi_display.c
+++ b/drivers/video/sunxi_display.c
@@ -38,6 +38,8 @@ struct sunxi_display {
 	unsigned int depth;
 } sunxi_display;
 
+#ifdef CONFIG_VIDEO_HDMI
+
 /*
  * Wait up to 200ms for value to be set in given part of reg.
  */
@@ -266,6 +268,8 @@ static int sunxi_hdmi_edid_get_mode(struct ctfb_res_modes *mode)
 	return 0;
 }
 
+#endif /* CONFIG_VIDEO_HDMI */
+
 /*
  * This is the entity that mixes and matches the different layers and inputs.
  * Allwinner calls it the back-end, but i like composer better.
@@ -278,7 +282,7 @@ static void sunxi_composer_init(void)
 		(struct sunxi_de_be_reg *)SUNXI_DE_BE0_BASE;
 	int i;
 
-#ifdef CONFIG_MACH_SUN6I
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
 	/* Reset off */
 	setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_DE_BE0);
 #endif
@@ -408,7 +412,7 @@ static void sunxi_lcdc_init(void)
 		(struct sunxi_lcdc_reg *)SUNXI_LCD0_BASE;
 
 	/* Reset off */
-#ifdef CONFIG_MACH_SUN6I
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
 	setbits_le32(&ccm->ahb_reset1_cfg, 1 << AHB_RESET_OFFSET_LCD0);
 #else
 	setbits_le32(&ccm->lcd0_ch0_clk_cfg, CCM_LCD_CH0_CTRL_RST);
@@ -567,6 +571,8 @@ static void sunxi_lcdc_tcon0_mode_set(const struct ctfb_res_modes *mode)
 	writel(0, &lcdc->tcon0_io_tristate);
 }
 
+#ifdef CONFIG_VIDEO_HDMI
+
 static void sunxi_lcdc_tcon1_mode_set(const struct ctfb_res_modes *mode,
 				      int *clk_div, int *clk_double)
 {
@@ -713,9 +719,11 @@ static void sunxi_hdmi_enable(void)
 	setbits_le32(&hdmi->video_ctrl, SUNXI_HDMI_VIDEO_CTRL_ENABLE);
 }
 
+#endif /* CONFIG_VIDEO_HDMI */
+
 static void sunxi_drc_init(void)
 {
-#ifdef CONFIG_MACH_SUN6I
+#if defined CONFIG_MACH_SUN6I || defined CONFIG_MACH_SUN8I
 	struct sunxi_ccm_reg * const ccm =
 		(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
 
@@ -740,6 +748,7 @@ static void sunxi_mode_set(const struct ctfb_res_modes *mode,
 		break;
 	case sunxi_monitor_dvi:
 	case sunxi_monitor_hdmi: {
+#ifdef CONFIG_VIDEO_HDMI
 		int clk_div, clk_double;
 		sunxi_composer_mode_set(mode, address);
 		sunxi_lcdc_tcon1_mode_set(mode, &clk_div, &clk_double);
@@ -747,6 +756,7 @@ static void sunxi_mode_set(const struct ctfb_res_modes *mode,
 		sunxi_composer_enable();
 		sunxi_lcdc_enable();
 		sunxi_hdmi_enable();
+#endif
 		}
 		break;
 	case sunxi_monitor_lcd:
@@ -768,10 +778,13 @@ void *video_hw_init(void)
 	const struct ctfb_res_modes *mode;
 	struct ctfb_res_modes custom;
 	const char *options;
-	int i, ret, hpd, edid;
+#ifdef CONFIG_VIDEO_HDMI
+	int ret, hpd, edid;
+#endif
 	char mon[16];
 	const char *mon_desc[] = { "none", "dvi", "hdmi", "lcd", "vga" };
 	char *lcd_mode = CONFIG_VIDEO_LCD_MODE;
+	int i;
 
 	memset(&sunxi_display, 0, sizeof(struct sunxi_display));
 
@@ -781,9 +794,13 @@ void *video_hw_init(void)
 
 	video_get_ctfb_res_modes(RES_MODE_1024x768, 24, &mode,
 				 &sunxi_display.depth, &options);
+#ifdef CONFIG_VIDEO_HDMI
 	hpd = video_get_option_int(options, "hpd", 1);
 	edid = video_get_option_int(options, "edid", 1);
 	sunxi_display.monitor = sunxi_monitor_dvi;
+#else
+	sunxi_display.monitor = sunxi_monitor_lcd;
+#endif
 	video_get_option_string(options, "monitor", mon, sizeof(mon),
 				mon_desc[sunxi_display.monitor]);
 	for (i = 0; i < ARRAY_SIZE(mon_desc); i++) {
@@ -801,6 +818,10 @@ void *video_hw_init(void)
 		return NULL;
 	case sunxi_monitor_dvi:
 	case sunxi_monitor_hdmi:
+#ifndef CONFIG_VIDEO_HDMI
+		printf("HDMI/DVI not supported on this board\n");
+		return NULL;
+#else
 		/* Always call hdp_detect, as it also enables clocks, etc. */
 		ret = sunxi_hdmi_hpd_detect();
 		if (ret) {
@@ -819,6 +840,7 @@ void *video_hw_init(void)
 
 		/* Fall back / through to LCD */
 		sunxi_display.monitor = sunxi_monitor_lcd;
+#endif
 	case sunxi_monitor_lcd:
 		if (lcd_mode[0]) {
 			sunxi_display.depth = video_get_params(&custom, lcd_mode);
-- 
2.1.0

  parent reply	other threads:[~2014-12-24 19:06 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-24 19:06 [U-Boot] sunxi: video: Add LCD output and A13-Olinuxino VGA output support Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 01/17] videomodes: Add support for refresh and pclk_khz to video_get_params() Hans de Goede
2014-12-28  9:27   ` Ian Campbell
2015-01-08 17:23   ` Anatolij Gustschin
2014-12-24 19:06 ` [U-Boot] [PATCH 02/17] sunxi: gpio: Properly sort mux defines by port number Hans de Goede
2014-12-28  9:28   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 03/17] sunxi: gpio: Add support for gpio pins on the AXP209 pmic Hans de Goede
2014-12-28  9:34   ` Ian Campbell
2014-12-28 10:35     ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 04/17] sunxi: video: Drop disabling of backend / lcdc / hdmi encoder on modeset Hans de Goede
2014-12-28  9:34   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 05/17] sunxi: video: Improve monitor video-mode option handling Hans de Goede
2014-12-28  9:40   ` Ian Campbell
2014-12-28 10:55     ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 06/17] sunxi: video: Prepare for lcd support Hans de Goede
2014-12-28  9:41   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 07/17] sunxi: video: Modify sunxi_lcdc_pll_set to work with both tcon0 and tcon1 Hans de Goede
2014-12-29 13:36   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 08/17] sunxi: video: Move sunxi_drc_init Hans de Goede
2014-12-25  9:08   ` Chen-Yu Tsai
2014-12-25 10:22     ` Hans de Goede
2014-12-29 13:37       ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 09/17] sunxi: video: Add lcd output support Hans de Goede
2014-12-29 13:43   ` Ian Campbell
2014-12-31 11:59     ` Hans de Goede
2014-12-24 19:06 ` Hans de Goede [this message]
2014-12-29 13:50   ` [U-Boot] [PATCH 10/17] sunxi: video: Add suppport SoCs without HDMI, e.g. the A13 and A23 Ian Campbell
2014-12-31 12:07     ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 11/17] sunxi: video: Add support for VGA via external DACs connected to the LCD pins Hans de Goede
2014-12-29 13:51   ` Ian Campbell
2014-12-29 19:25     ` Hans de Goede
2014-12-30  2:21       ` Chen-Yu Tsai
2014-12-30 10:21         ` Hans de Goede
2014-12-24 19:06 ` [U-Boot] [PATCH 12/17] sunxi: sunxi-common.h: Reduce bootm_size to take the framebuffer into account Hans de Goede
2014-12-29 13:52   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 13/17] sunxi: A13-OLinuXino defconfigs: Enable VGA output, add lcd-mode for 7" LCD Hans de Goede
2014-12-29 13:53   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 14/17] sunxi: Add 2 defconfigs for using the Olimex 7" lcd with olinuxino boards Hans de Goede
2014-12-29 13:55   ` Ian Campbell
2014-12-29 19:27     ` Hans de Goede
2014-12-30  7:25       ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 15/17] sunxi: Ippo_q8h defconfigs: Enable the LCD panel found on these tablets Hans de Goede
2014-12-25 10:00   ` Chen-Yu Tsai
2014-12-25 10:59     ` Hans de Goede
2014-12-26  6:44       ` Chen-Yu Tsai
2014-12-26 10:48         ` Hans de Goede
2014-12-29 13:57         ` Ian Campbell
2014-12-29 15:56           ` Chen-Yu Tsai
2014-12-29 19:31             ` Hans de Goede
2014-12-30 10:18       ` Siarhei Siamashka
2014-12-30 10:26         ` Hans de Goede
2014-12-30 10:36           ` Hans de Goede
2014-12-30 11:25             ` Siarhei Siamashka
2014-12-31 11:22               ` Hans de Goede
2014-12-30 12:17           ` Siarhei Siamashka
2014-12-31 11:22             ` Hans de Goede
2015-01-01  2:35               ` Chen-Yu Tsai
2015-01-01 12:36                 ` Hans de Goede
2015-01-02 11:02                   ` Siarhei Siamashka
2015-01-04 20:22                     ` Hans de Goede
2015-01-01 20:03               ` Siarhei Siamashka
2015-01-01 20:15                 ` Hans de Goede
2015-01-01 21:05                   ` Siarhei Siamashka
2014-12-24 19:06 ` [U-Boot] [PATCH 16/17] sunxi: video: Remove sunxi_display.enabled variable Hans de Goede
2014-12-29 13:57   ` Ian Campbell
2014-12-24 19:06 ` [U-Boot] [PATCH 17/17] sunxi: video: Use sunxi_lcdc_get_clk_delay to calculate tcon1 delay Hans de Goede
2014-12-29 13:58   ` Ian Campbell

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=1419447989-21959-11-git-send-email-hdegoede@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=u-boot@lists.denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.