diff options
author | Tapani <tapani@vmail.me> | 2013-01-13 12:02:41 +0100 |
---|---|---|
committer | Tapani <tapani@vmail.me> | 2013-01-13 12:02:41 +0100 |
commit | fd46bc8123508378f775cfea9b53a11668ae07ad (patch) | |
tree | 2e60e93d29a46e237b8d496b8059e05566701b92 /arch | |
parent | 26cdd2e6ef56df5329cb537a060995197f19a24c (diff) |
Wandboard : Add HDMI support.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-mx6/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mach-mx6/board-wand.c | 92 |
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, |