|
@@ -13,6 +13,7 @@
|
|
|
#include <fsl_esdhc.h>
|
|
|
#include <miiphy.h>
|
|
|
#include <netdev.h>
|
|
|
+#include <errno.h>
|
|
|
#include <fdt_support.h>
|
|
|
#include <sata.h>
|
|
|
#include <splash.h>
|
|
@@ -54,31 +55,27 @@ static void cm_fx6_enable_hdmi(struct display_info_t const *dev)
|
|
|
imx_enable_hdmi_phy();
|
|
|
}
|
|
|
|
|
|
-struct display_info_t const displays[] = {
|
|
|
- {
|
|
|
- .bus = -1,
|
|
|
- .addr = 0,
|
|
|
- .pixfmt = IPU_PIX_FMT_RGB24,
|
|
|
- .detect = detect_hdmi,
|
|
|
- .enable = cm_fx6_enable_hdmi,
|
|
|
- .mode = {
|
|
|
- .name = "HDMI",
|
|
|
- .refresh = 60,
|
|
|
- .xres = 1024,
|
|
|
- .yres = 768,
|
|
|
- .pixclock = 40385,
|
|
|
- .left_margin = 220,
|
|
|
- .right_margin = 40,
|
|
|
- .upper_margin = 21,
|
|
|
- .lower_margin = 7,
|
|
|
- .hsync_len = 60,
|
|
|
- .vsync_len = 10,
|
|
|
- .sync = FB_SYNC_EXT,
|
|
|
- .vmode = FB_VMODE_NONINTERLACED,
|
|
|
- }
|
|
|
- },
|
|
|
+static struct display_info_t preset_hdmi_1024X768 = {
|
|
|
+ .bus = -1,
|
|
|
+ .addr = 0,
|
|
|
+ .pixfmt = IPU_PIX_FMT_RGB24,
|
|
|
+ .enable = cm_fx6_enable_hdmi,
|
|
|
+ .mode = {
|
|
|
+ .name = "HDMI",
|
|
|
+ .refresh = 60,
|
|
|
+ .xres = 1024,
|
|
|
+ .yres = 768,
|
|
|
+ .pixclock = 40385,
|
|
|
+ .left_margin = 220,
|
|
|
+ .right_margin = 40,
|
|
|
+ .upper_margin = 21,
|
|
|
+ .lower_margin = 7,
|
|
|
+ .hsync_len = 60,
|
|
|
+ .vsync_len = 10,
|
|
|
+ .sync = FB_SYNC_EXT,
|
|
|
+ .vmode = FB_VMODE_NONINTERLACED,
|
|
|
+ }
|
|
|
};
|
|
|
-size_t display_count = ARRAY_SIZE(displays);
|
|
|
|
|
|
static void cm_fx6_setup_display(void)
|
|
|
{
|
|
@@ -93,6 +90,33 @@ static void cm_fx6_setup_display(void)
|
|
|
writel(reg, &mxc_ccm->CCGR3);
|
|
|
clrbits_le32(&iomuxc_regs->gpr[3], MXC_CCM_CCGR3_IPU1_IPU_DI0_MASK);
|
|
|
}
|
|
|
+
|
|
|
+int board_video_skip(void)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+ struct display_info_t *preset;
|
|
|
+ char const *panel = getenv("panel");
|
|
|
+
|
|
|
+ if (!panel)
|
|
|
+ return -ENOENT;
|
|
|
+
|
|
|
+ if (!strcmp(panel, "HDMI"))
|
|
|
+ preset = &preset_hdmi_1024X768;
|
|
|
+ else
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ ret = ipuv3_fb_init(&preset->mode, 0, preset->pixfmt);
|
|
|
+ if (ret) {
|
|
|
+ printf("Can't init display %s: %d\n", preset->mode.name, ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ preset->enable(preset);
|
|
|
+ printf("Display: %s (%ux%u)\n", preset->mode.name, preset->mode.xres,
|
|
|
+ preset->mode.yres);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
#else
|
|
|
static inline void cm_fx6_setup_display(void) {}
|
|
|
#endif /* CONFIG_VIDEO_IPUV3 */
|