summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorTapani <tapani@vmail.me>2013-01-13 12:02:41 +0100
committerTapani <tapani@vmail.me>2013-01-13 12:02:41 +0100
commitfd46bc8123508378f775cfea9b53a11668ae07ad (patch)
tree2e60e93d29a46e237b8d496b8059e05566701b92 /arch
parent26cdd2e6ef56df5329cb537a060995197f19a24c (diff)
Wandboard : Add HDMI support.
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx6/Kconfig2
-rw-r--r--arch/arm/mach-mx6/board-wand.c92
2 files changed, 90 insertions, 4 deletions
diff --git a/arch/arm/mach-mx6/Kconfig b/arch/arm/mach-mx6/Kconfig
index 77c58f6ec79f..9e89c2e7f95f 100644
--- a/arch/arm/mach-mx6/Kconfig
+++ b/arch/arm/mach-mx6/Kconfig
@@ -300,6 +300,8 @@ config MACH_WANDBOARD
select IMX_HAVE_PLATFORM_MXC_EHCI if USB
select IMX_HAVE_PLATFORM_FSL_USB_WAKEUP if USB
select IMX_HAVE_PLATFORM_FSL_OTG if USB_OTG
+ select IMX_HAVE_PLATFORM_MXC_HDMI if FB_MXC_HDMI
+ select IMX_HAVE_PLATFORM_IMX_IPUV3 if MXC_IPU_V3
help
Include support for the WandBoard SoM.
diff --git a/arch/arm/mach-mx6/board-wand.c b/arch/arm/mach-mx6/board-wand.c
index 992c37faa476..4a754c7adf51 100644
--- a/arch/arm/mach-mx6/board-wand.c
+++ b/arch/arm/mach-mx6/board-wand.c
@@ -358,9 +358,9 @@ void __init wand_init_audio(void) {
imx6q_add_asrc(&wand_asrc_data);
imx6q_add_imx_ssi(1, &wand_ssi_pdata);
-
- /* Enable SPDIF */
- mxc_iomux_v3_setup_pad(MX6DL_PAD_ENET_RXD0__SPDIF_OUT1);
+ /* Enable SPDIF */
+
+ mxc_iomux_v3_setup_pad(MX6DL_PAD_ENET_RXD0__SPDIF_OUT1);
wand_spdif.spdif_core_clk = clk_get_sys("mxc_spdif.0", NULL);
clk_put(wand_spdif.spdif_core_clk);
@@ -497,6 +497,89 @@ static __init void wand_init_usb(void) {
gpio_direction_input(WAND_USB_H1_OC);
}
+
+/****************************************************************************
+ *
+ * IPU
+ *
+ ****************************************************************************/
+
+static struct imx_ipuv3_platform_data wand_ipu_data[] = {
+ {
+ .rev = 4,
+ .csi_clk[0] = "ccm_clk0",
+ }, {
+ .rev = 4,
+ .csi_clk[0] = "ccm_clk0",
+ },
+};
+
+/* ------------------------------------------------------------------------ */
+
+static __init void wand_init_ipu(void) {
+ imx6q_add_ipuv3(0, &wand_ipu_data[0]);
+}
+
+
+/****************************************************************************
+ *
+ * HDMI
+ *
+ ****************************************************************************/
+
+static struct ipuv3_fb_platform_data wand_hdmi_fb[] = {
+ { /* hdmi framebuffer */
+ .disp_dev = "hdmi",
+ .interface_pix_fmt = IPU_PIX_FMT_RGB32,
+ .mode_str = "1920x1080@60",
+ .default_bpp = 32,
+ .int_clk = false,
+ }
+};
+
+/* ------------------------------------------------------------------------ */
+
+static void wand_hdmi_init(int ipu_id, int disp_id) {
+ if ((unsigned)ipu_id > 1) ipu_id = 0;
+ if ((unsigned)disp_id > 1) disp_id = 0;
+
+ mxc_iomux_set_gpr_register(3, 2, 2, 2*ipu_id + disp_id);
+}
+
+/* ------------------------------------------------------------------------ */
+
+static struct fsl_mxc_hdmi_platform_data wand_hdmi_data = {
+ .init = wand_hdmi_init,
+};
+
+/* ------------------------------------------------------------------------ */
+
+static struct fsl_mxc_hdmi_core_platform_data wand_hdmi_core_data = {
+ .ipu_id = 0,
+ .disp_id = 1,
+};
+
+/* ------------------------------------------------------------------------ */
+
+static const struct i2c_board_info wand_hdmi_i2c_info = {
+ I2C_BOARD_INFO("mxc_hdmi_i2c", 0x50),
+};
+
+/* ------------------------------------------------------------------------ */
+
+static void wand_init_hdmi(void) {
+ i2c_register_board_info(0, &wand_hdmi_i2c_info, 1);
+ imx6q_add_mxc_hdmi_core(&wand_hdmi_core_data);
+ imx6q_add_mxc_hdmi(&wand_hdmi_data);
+ imx6q_add_ipuv3fb(0, wand_hdmi_fb);
+
+ /* Enable HDMI audio */
+ imx6q_add_hdmi_soc();
+ imx6q_add_hdmi_soc_dai();
+ mxc_iomux_set_gpr_register(0, 0, 1, 1);
+}
+
+
/*****************************************************************************
*
* Init clocks and early boot console
@@ -537,10 +620,11 @@ static void __init wand_board_init(void) {
wand_init_audio();
wand_init_ethernet();
wand_init_usb();
+ wand_init_ipu();
+ wand_init_hdmi();
}
/* ------------------------------------------------------------------------ */
-
MACHINE_START(WANDBOARD, "Wandboard")
.boot_params = MX6_PHYS_OFFSET + 0x100,