summaryrefslogtreecommitdiff
path: root/arch/arm/mach-mx6/board-mx6q_hdmidongle.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-mx6/board-mx6q_hdmidongle.c')
-rw-r--r--arch/arm/mach-mx6/board-mx6q_hdmidongle.c156
1 files changed, 27 insertions, 129 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_hdmidongle.c b/arch/arm/mach-mx6/board-mx6q_hdmidongle.c
index ffd8d9afef6a..e88383b339dd 100644
--- a/arch/arm/mach-mx6/board-mx6q_hdmidongle.c
+++ b/arch/arm/mach-mx6/board-mx6q_hdmidongle.c
@@ -45,6 +45,7 @@
#include <linux/fec.h>
#include <linux/memblock.h>
#include <linux/gpio.h>
+#include <linux/ion.h>
#include <linux/etherdevice.h>
#include <linux/regulator/anatop-regulator.h>
#include <linux/regulator/consumer.h>
@@ -67,12 +68,10 @@
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
+#include <mach/common.h>
-#ifdef CONFIG_MFD_WM831X
-#include <linux/mfd/wm831x/core.h>
-#include <linux/mfd/wm831x/pdata.h>
-#include <linux/mfd/wm831x/regulator.h>
-#include <linux/mfd/wm831x/gpio.h>
+#ifdef CONFIG_IMX_PCIE
+#include <linux/wakelock.h>
#endif
#include "usb.h"
@@ -98,7 +97,7 @@
#ifdef CONFIG_IMX_PCIE
#define HDMIDONGLE_PCIE_PWR_EN IMX_GPIO_NR(3, 7) /*fake pcie power enable */
-#define HDMIDONGLE_PCIE_RST IMX_GPIO_NR(3, 9)
+#define HDMIDONGLE_PCIE_RST IMX_GPIO_NR(3, 9)
#define HDMIDONGLE_PCIE_WAKE IMX_GPIO_NR(3, 22)
#define HDMIDONGLE_PCIE_DIS IMX_GPIO_NR(3, 10)
#endif
@@ -185,115 +184,6 @@ static inline void mx6q_hdmidongle_init_uart(void)
imx6q_add_imx_uart(3, NULL);
}
-static int mx6q_hdmidongle_spi_cs[] = {
- HDMIDONGLE_ECSPI2_CS0,
-};
-
-static const struct spi_imx_master mx6q_hdmidongle_spi_data __initconst = {
- .chipselect = mx6q_hdmidongle_spi_cs,
- .num_chipselect = ARRAY_SIZE(mx6q_hdmidongle_spi_cs),
-};
-
-
-
-#ifdef CONFIG_MFD_WM831X
-#if 0
-/* 1.4125, 1.4125. 1.5 */
-#define WM831X_DC1_ON_CONFIG_VAL (0x48<<WM831X_DC1_ON_VSEL_SHIFT)
-#define WM831X_DC2_ON_CONFIG_VAL (0x48<<WM831X_DC2_ON_VSEL_SHIFT)
-#define WM831X_DC3_ON_CONFIG_VAL (0x1A<<WM831X_DC3_ON_VSEL_SHIFT)
-#else
-/* 1.375, 1.375. 1.5 */
-
-#define WM831X_DC1_ON_CONFIG_VAL (0x44<<WM831X_DC1_ON_VSEL_SHIFT)
-#define WM831X_DC2_ON_CONFIG_VAL (0x44<<WM831X_DC2_ON_VSEL_SHIFT)
-#define WM831X_DC3_ON_CONFIG_VAL (0x1A<<WM831X_DC3_ON_VSEL_SHIFT)
-
-#endif
-
-#define WM831X_DC1_DVS_MODE_VAL (0x02<<WM831X_DC1_DVS_SRC_SHIFT)
-#define WM831X_DC2_DVS_MODE_VAL (0x02<<WM831X_DC2_DVS_SRC_SHIFT)
-
-#define WM831X_DC1_DVS_CONTROL_VAL (0x20<<WM831X_DC1_DVS_VSEL_SHIFT)
-#define WM831X_DC2_DVS_CONTROL_VAL (0x20<<WM831X_DC2_DVS_VSEL_SHIFT)
-
-#define WM831X_DC1_DVS_MASK (WM831X_DC1_DVS_SRC_MASK|WM831X_DC1_DVS_VSEL_MASK)
-#define WM831X_DC2_DVS_MASK (WM831X_DC2_DVS_SRC_MASK|WM831X_DC1_DVS_VSEL_MASK)
-
-#define WM831X_DC1_DVS_VAL (WM831X_DC1_DVS_MODE_VAL|WM831X_DC1_DVS_CONTROL_VAL)
-#define WM831X_DC2_DVS_VAL (WM831X_DC2_DVS_MODE_VAL|WM831X_DC2_DVS_CONTROL_VAL)
-
-#define WM831X_GPN_FN_VAL_HW_EN (0x0A<<WM831X_GPN_FN_SHIFT)
-#define WM831X_GPN_FN_VAL_HW_CTL (0x0C<<WM831X_GPN_FN_SHIFT)
-#define WM831X_GPN_FN_VAL_DVS1 (0x08<<WM831X_GPN_FN_SHIFT)
-
-#define WM831X_GPN_DIR_VAL (0x1<<WM831X_GPN_DIR_SHIFT)
-#define WM831X_GPN_PULL_VAL (0x3<<WM831X_GPN_PULL_SHIFT)
-#define WM831X_GPN_INT_MODE_VAL (0x1<<WM831X_GPN_INT_MODE_SHIFT)
-#define WM831X_GPN_POL_VAL (0x1<<WM831X_GPN_POL_SHIFT)
-#define WM831X_GPN_ENA_VAL (0x1<<WM831X_GPN_ENA_SHIFT)
-
-#define WM831X_GPIO7_8_9_MASK (WM831X_GPN_DIR_MASK|WM831X_GPN_INT_MODE_MASK|WM831X_GPN_PULL_MASK|WM831X_GPN_POL_MASK|WM831X_GPN_FN_MASK)
-
-
-#define WM831X_GPIO7_VAL (WM831X_GPN_DIR_VAL|WM831X_GPN_PULL_VAL|WM831X_GPN_INT_MODE_VAL|WM831X_GPN_POL_VAL|WM831X_GPN_ENA_VAL|WM831X_GPN_FN_VAL_HW_EN)
-#define WM831X_GPIO8_VAL (WM831X_GPN_DIR_VAL|WM831X_GPN_PULL_VAL|WM831X_GPN_INT_MODE_VAL|WM831X_GPN_POL_VAL|WM831X_GPN_ENA_VAL|WM831X_GPN_FN_VAL_HW_CTL)
-#define WM831X_GPIO9_VAL (WM831X_GPN_DIR_VAL|WM831X_GPN_PULL_VAL|WM831X_GPN_INT_MODE_VAL|WM831X_GPN_POL_VAL|WM831X_GPN_ENA_VAL|WM831X_GPN_FN_VAL_DVS1)
-
-#define WM831X_STATUS_LED_MASK 0xC000
-#define WM831X_STATUS_LED_ON (0x1 << 14)
-#define WM831X_STATUS_LED_OFF (0x0 << 14)
-
-static int wm8326_post_init(struct wm831x *wm831x)
-{
- wm831x_set_bits(wm831x, WM831X_DC1_ON_CONFIG, WM831X_DC1_ON_VSEL_MASK, WM831X_DC1_ON_CONFIG_VAL);
- wm831x_set_bits(wm831x, WM831X_DC2_ON_CONFIG, WM831X_DC2_ON_VSEL_MASK, WM831X_DC2_ON_CONFIG_VAL);
- wm831x_set_bits(wm831x, WM831X_DC3_ON_CONFIG, WM831X_DC3_ON_VSEL_MASK, WM831X_DC3_ON_CONFIG_VAL);
-
- wm831x_set_bits(wm831x, WM831X_DC1_DVS_CONTROL, WM831X_DC1_DVS_MASK, WM831X_DC1_DVS_VAL);
- wm831x_set_bits(wm831x, WM831X_DC2_DVS_CONTROL, WM831X_DC2_DVS_MASK, WM831X_DC2_DVS_VAL);
-
- wm831x_set_bits(wm831x, WM831X_GPIO7_CONTROL, WM831X_GPIO7_8_9_MASK, WM831X_GPIO7_VAL);
- wm831x_set_bits(wm831x, WM831X_GPIO8_CONTROL, WM831X_GPIO7_8_9_MASK, WM831X_GPIO8_VAL);
- wm831x_set_bits(wm831x, WM831X_GPIO9_CONTROL, WM831X_GPIO7_8_9_MASK, WM831X_GPIO9_VAL);
-
- wm831x_set_bits(wm831x, WM831X_STATUS_LED_1 , WM831X_STATUS_LED_MASK, WM831X_STATUS_LED_OFF);
- wm831x_set_bits(wm831x, WM831X_STATUS_LED_2 , WM831X_STATUS_LED_MASK, WM831X_STATUS_LED_ON);
- return 0;
-}
-
-static struct wm831x_pdata hdmidongle_wm8326_pdata = {
- .post_init = wm8326_post_init,
-};
-#endif
-
-static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
- {
-#ifdef CONFIG_MFD_WM831X
- I2C_BOARD_INFO("wm8326", 0x34),
- .platform_data = &hdmidongle_wm8326_pdata,
-#endif
- },
-};
-
-static struct spi_board_info wm8326_spi1_board_info[] __initdata = {
-#if defined(CONFIG_MFD_WM831X_SPI)
- {
- /* The modalias must be the same as spi device driver name */
- .modalias = "wm8326",
- .max_speed_hz = 20000000,
- .bus_num = 1,
- .chip_select = 0,
- },
-#endif
-};
-
-static void spi_device_init(void)
-{
- spi_register_board_info(wm8326_spi1_board_info,
- ARRAY_SIZE(wm8326_spi1_board_info));
-}
-
static struct imxi2c_platform_data mx6q_hdmidongle_i2c_data = {
.bitrate = 100000,
};
@@ -431,6 +321,18 @@ static struct imx_ipuv3_platform_data ipu_data[] = {
},
};
+static struct ion_platform_data imx_ion_data = {
+ .nr = 1,
+ .heaps = {
+ {
+ .id = 0,
+ .type = ION_HEAP_TYPE_CARVEOUT,
+ .name = "vpu_ion",
+ .size = SZ_64M,
+ },
+ },
+};
+
static void hdmidongle_suspend_enter(void)
{
/* suspend preparation */
@@ -534,7 +436,8 @@ static void __init imx6q_add_device_buttons(void) {}
static struct mxc_dvfs_platform_data hdmidongle_dvfscore_data = {
#ifdef CONFIG_MX6_INTER_LDO_BYPASS
- .reg_id = "VDDCORE",
+ .reg_id = "VDDCORE_DCDC1",
+ .soc_id = "VDDSOC_DCDC2",
#else
.reg_id = "cpu_vddgp",
.soc_id = "cpu_vddsoc",
@@ -632,7 +535,6 @@ static void __init mx6_hdmidongle_board_init(void)
gp_reg_id = hdmidongle_dvfscore_data.reg_id;
soc_reg_id = hdmidongle_dvfscore_data.soc_id;
- pu_reg_id = hdmidongle_dvfscore_data.pu_id;
mx6q_hdmidongle_init_uart();
/*
@@ -665,14 +567,7 @@ static void __init mx6_hdmidongle_board_init(void)
i2c_register_board_info(1, mxc_i2c1_board_info,
ARRAY_SIZE(mxc_i2c1_board_info));
-
- i2c_register_board_info(2, mxc_i2c2_board_info,
- ARRAY_SIZE(mxc_i2c2_board_info));
-
-
- /* SPI */
- imx6q_add_ecspi(1, &mx6q_hdmidongle_spi_data);
- spi_device_init();
+ mx6q_hdmidongle_init_wm8326();
imx6q_add_mxc_hdmi(&hdmi_data);
@@ -707,6 +602,9 @@ static void __init mx6_hdmidongle_board_init(void)
mx6_cpu_regulator_init();
#endif
+ imx6q_add_ion(0, &imx_ion_data,
+ sizeof(imx_ion_data) + sizeof(struct ion_platform_heap));
+
imx6q_add_device_buttons();
imx6q_add_hdmi_soc();
@@ -716,19 +614,19 @@ static void __init mx6_hdmidongle_board_init(void)
gpio_request(HDMIDONGLE_BT_RST, "bt_reset");
gpio_direction_output(HDMIDONGLE_BT_RST, 1);
gpio_set_value(HDMIDONGLE_BT_RST, 1);
- msleep(1000);
+ mdelay(1000);
gpio_request(HDMIDONGLE_BT_EN, "bt_en");
gpio_direction_output(HDMIDONGLE_BT_EN, 1);
gpio_set_value(HDMIDONGLE_BT_EN, 1);
- msleep(1000);
+ mdelay(1000);
gpio_request(HDMIDONGLE_WL_EN, "wl_en");
gpio_direction_output(HDMIDONGLE_WL_EN, 1);
gpio_set_value(HDMIDONGLE_WL_EN, 1);
- msleep(1000);
+ mdelay(1000);
+#ifdef CONFIG_IMX_PCIE
} else if (board_is_mx6_revb() || board_is_mx6_revc()) {
/* Add PCIe RC interface support */
-#ifdef CONFIG_IMX_PCIE
imx6q_add_pcie(&mx6_hdmidongle_pcie_data);
#endif
}