summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLily Zhang <r58066@freescale.com>2012-03-13 18:47:50 +0800
committerLily Zhang <r58066@freescale.com>2012-03-20 13:28:16 +0800
commit7c66a5c5ff0d7269e22666e9199fe3263834565a (patch)
tree78594446be5f254ad469ee468d07f869898a12c1
parentf253811f2df7e62db24abdf04458834c10259022 (diff)
ENGR00177083-5 i.mx6: sabresd: add initial i.mx6dl support
This patch adds the initial i.mx6dl support for sabre smart device board. i.mx6dl and i.mx6q share the same board due to pin to pin compatible. Signed-off-by: Lily Zhang <r58066@freescale.com>
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabresd.c51
1 files changed, 42 insertions, 9 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_sabresd.c b/arch/arm/mach-mx6/board-mx6q_sabresd.c
index 0d30daef94df..79fc10e6fa6c 100644
--- a/arch/arm/mach-mx6/board-mx6q_sabresd.c
+++ b/arch/arm/mach-mx6/board-mx6q_sabresd.c
@@ -77,6 +77,7 @@
#include "crm_regs.h"
#include "cpu_op-mx6.h"
#include "board-mx6q_sabresd.h"
+#include "board-mx6dl_sabresd.h"
#define SABRESD_SD2_CD IMX_GPIO_NR(2, 2)
#define SABRESD_SD2_WP IMX_GPIO_NR(2, 3)
@@ -290,8 +291,12 @@ static void mx6q_csi0_cam_powerdown(int powerdown)
static void mx6q_csi0_io_init(void)
{
- mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_csi0_sensor_pads,
+ if (cpu_is_mx6q())
+ mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_csi0_sensor_pads,
ARRAY_SIZE(mx6q_sabresd_csi0_sensor_pads));
+ else if (cpu_is_mx6dl())
+ mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_csi0_sensor_pads,
+ ARRAY_SIZE(mx6dl_sabresd_csi0_sensor_pads));
/* Camera reset */
gpio_request(SABRESD_CSI0_RST, "cam-reset");
@@ -335,8 +340,12 @@ static void mx6q_mipi_powerdown(int powerdown)
static void mx6q_mipi_sensor_io_init(void)
{
- mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_mipi_sensor_pads,
+ if (cpu_is_mx6q())
+ mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_mipi_sensor_pads,
ARRAY_SIZE(mx6q_sabresd_mipi_sensor_pads));
+ else if (cpu_is_mx6dl())
+ mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_mipi_sensor_pads,
+ ARRAY_SIZE(mx6dl_sabresd_mipi_sensor_pads));
/* Camera reset */
gpio_request(SABRESD_MIPICSI_RST, "cam-reset");
@@ -803,8 +812,12 @@ static void __init mx6_sabresd_board_init(void)
struct clk *new_parent;
int rate;
- mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_pads,
- ARRAY_SIZE(mx6q_sabresd_pads));
+ if (cpu_is_mx6q())
+ mxc_iomux_v3_setup_multiple_pads(mx6q_sabresd_pads,
+ ARRAY_SIZE(mx6q_sabresd_pads));
+ else if (cpu_is_mx6dl())
+ mxc_iomux_v3_setup_multiple_pads(mx6dl_sabresd_pads,
+ ARRAY_SIZE(mx6dl_sabresd_pads));
#ifdef CONFIG_FEC_1588
/* Set GPIO_16 input for IEEE-1588 ts_clk and RMII reference clock
@@ -817,13 +830,31 @@ static void __init mx6_sabresd_board_init(void)
gp_reg_id = sabresd_dvfscore_data.reg_id;
mx6q_sabresd_init_uart();
+
+ /*
+ * MX6DL/Solo only supports single IPU
+ * The following codes are used to change ipu id
+ * and display id information for MX6DL/Solo. Then
+ * register 1 IPU device and up to 2 displays for
+ * MX6DL/Solo
+ */
+ if (cpu_is_mx6dl()) {
+ ldb_data.ipu_id = 0;
+ ldb_data.disp_id = 0;
+ ldb_data.sec_ipu_id = 0;
+ ldb_data.sec_disp_id = 1;
+ hdmi_core_data.disp_id = 1;
+ }
imx6q_add_mxc_hdmi_core(&hdmi_core_data);
imx6q_add_ipuv3(0, &ipu_data[0]);
- imx6q_add_ipuv3(1, &ipu_data[1]);
-
- for (i = 0; i < ARRAY_SIZE(sabresd_fb_data); i++)
- imx6q_add_ipuv3fb(i, &sabresd_fb_data[i]);
+ if (cpu_is_mx6q()) {
+ imx6q_add_ipuv3(1, &ipu_data[1]);
+ for (i = 0; i < ARRAY_SIZE(sabresd_fb_data); i++)
+ imx6q_add_ipuv3fb(i, &sabresd_fb_data[i]);
+ } else
+ for (i = 0; i < (ARRAY_SIZE(sabresd_fb_data) + 1) / 2; i++)
+ imx6q_add_ipuv3fb(i, &sabresd_fb_data[i]);
imx6q_add_lcdif(&lcdif_data);
imx6q_add_ldb(&ldb_data);
@@ -864,7 +895,9 @@ static void __init mx6_sabresd_board_init(void)
imx6q_add_sdhci_usdhc_imx(3, &mx6q_sabresd_sd4_data);
imx_add_viv_gpu(&imx6_gpu_data, &imx6q_gpu_pdata);
imx6q_sabresd_init_usb();
- imx6q_add_ahci(0, &mx6q_sabresd_sata_data);
+ /* SATA is not supported by MX6DL/Solo */
+ if (cpu_is_mx6q())
+ imx6q_add_ahci(0, &mx6q_sabresd_sata_data);
imx6q_add_vpu();
imx6q_init_audio();
platform_device_register(&sabresd_vmmc_reg_devices);