summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguoyin.chen <guoyin.chen@freescale.com>2013-04-07 10:50:19 +0800
committerguoyin.chen <guoyin.chen@freescale.com>2013-04-07 10:50:19 +0800
commit7c8718a8d86182a1ea3ad6d89e2ff0201ca2a4a9 (patch)
tree353f54ee75b1ea2449213c936126b72ea11366ce
parent7e09444a91a1d439957a5cbe7a0b659c144ff653 (diff)
parent790715dfbc95afe64521f9d7ef60ef85c4a33849 (diff)
Merge remote-tracking branch 'fsl-linux-sdk/imx_3.0.35_4.0.0' into imx_3.0.35_android
Conflicts: arch/arm/mach-mx6/board-mx6q_hdmidongle.c drivers/input/touchscreen/egalax_ts.c
-rw-r--r--arch/arm/configs/imx6_defconfig7
-rw-r--r--arch/arm/mach-mx6/board-mx6q_hdmidongle.c3
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabreauto.c102
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx6dl.h48
-rw-r--r--arch/arm/plat-mxc/include/mach/iomux-mx6q.h48
-rwxr-xr-xdrivers/input/touchscreen/Kconfig10
-rw-r--r--drivers/media/video/mxc/capture/ipu_fg_overlay_sdc.c42
-rw-r--r--drivers/mtd/chips/cfi_cmdset_0002.c4
-rw-r--r--drivers/mtd/maps/Kconfig9
-rw-r--r--drivers/mtd/maps/Makefile1
-rw-r--r--drivers/mtd/maps/imx6x-weimnor.c299
-rw-r--r--drivers/mxc/ipu/ipu_calc_stripes_sizes.c42
-rw-r--r--drivers/mxc/ipu3/ipu_calc_stripes_sizes.c42
-rw-r--r--drivers/mxc/ipu3/ipu_common.c3
14 files changed, 190 insertions, 470 deletions
diff --git a/arch/arm/configs/imx6_defconfig b/arch/arm/configs/imx6_defconfig
index 13a4ef171e2e..5ad4a002676d 100644
--- a/arch/arm/configs/imx6_defconfig
+++ b/arch/arm/configs/imx6_defconfig
@@ -301,7 +301,6 @@ CONFIG_IMX_HAVE_PLATFORM_IMX_PCIE=y
# CONFIG_ARCH_MX503 is not set
# CONFIG_ARCH_MX51 is not set
CONFIG_ARCH_MX6=y
-# CONFIG_MACH_IMX_BLUETOOTH_RFKILL is not set
CONFIG_ARCH_MX6Q=y
CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_SOC_IMX6Q=y
@@ -754,8 +753,8 @@ CONFIG_MTD_CFI_UTIL=y
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-CONFIG_MTD_IMX6X_WEIMNOR=y
+CONFIG_MTD_PHYSMAP=y
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_PLATRAM is not set
@@ -1101,7 +1100,6 @@ CONFIG_TOUCHSCREEN_MAX11801=y
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_WM97XX is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
-# CONFIG_TOUCHSCREEN_NOVATEK is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC2005 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
@@ -1960,7 +1958,6 @@ CONFIG_USB_OTG=y
#
# CONFIG_USB_C67X00_HCD is not set
CONFIG_USB_EHCI_HCD=y
-# CONFIG_FSL_USB_TEST_MODE is not set
CONFIG_USB_EHCI_ARC=y
CONFIG_USB_EHCI_ARC_OTG=y
# CONFIG_USB_EHCI_ARC_HSIC is not set
diff --git a/arch/arm/mach-mx6/board-mx6q_hdmidongle.c b/arch/arm/mach-mx6/board-mx6q_hdmidongle.c
index 48ba8055e08c..e88383b339dd 100644
--- a/arch/arm/mach-mx6/board-mx6q_hdmidongle.c
+++ b/arch/arm/mach-mx6/board-mx6q_hdmidongle.c
@@ -100,7 +100,6 @@
#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)
-static struct wake_lock pcie_wake_lock;
#endif
extern char *gp_reg_id;
@@ -629,8 +628,6 @@ static void __init mx6_hdmidongle_board_init(void)
} else if (board_is_mx6_revb() || board_is_mx6_revc()) {
/* Add PCIe RC interface support */
imx6q_add_pcie(&mx6_hdmidongle_pcie_data);
- wake_lock_init(&pcie_wake_lock, WAKE_LOCK_SUSPEND, "pcie_workaround");
- wake_lock(&pcie_wake_lock);
#endif
}
pm_power_off = mx6_snvs_poweroff;
diff --git a/arch/arm/mach-mx6/board-mx6q_sabreauto.c b/arch/arm/mach-mx6/board-mx6q_sabreauto.c
index 2700a249c20e..45f4af592ab9 100644
--- a/arch/arm/mach-mx6/board-mx6q_sabreauto.c
+++ b/arch/arm/mach-mx6/board-mx6q_sabreauto.c
@@ -464,7 +464,6 @@ static struct spi_board_info m25p32_spi0_board_info[] __initdata = {
.platform_data = &m25p32_spi_flash_data,
},
};
-
static void spi_device_init(void)
{
spi_register_board_info(m25p32_spi0_board_info,
@@ -505,8 +504,8 @@ static struct physmap_flash_data nor_flash_data = {
.nr_parts = ARRAY_SIZE(mxc_nor_partitions),
};
-static struct platform_device imx6x_weimnor_device = {
- .name = "imx6x-weimnor",
+static struct platform_device physmap_flash_device = {
+ .name = "physmap-flash",
.id = 0,
.dev = {
.platform_data = &nor_flash_data,
@@ -515,11 +514,12 @@ static struct platform_device imx6x_weimnor_device = {
.num_resources = 1,
};
+/* These registers settings are just valid for Numonyx M29W256GL7AN6E. */
static void mx6q_setup_weimcs(void)
{
- unsigned int reg;
void __iomem *nor_reg = MX6_IO_ADDRESS(WEIM_BASE_ADDR);
void __iomem *ccm_reg = MX6_IO_ADDRESS(CCM_BASE_ADDR);
+ unsigned int reg;
struct clk *clk;
u32 rate;
@@ -539,26 +539,53 @@ static void mx6q_setup_weimcs(void)
printk(KERN_ERR "Warning: emi_slow_clk not set to 132 MHz!"
" WEIM NOR timing may be incorrect!\n");
- /* EIM_CS0GCR1: 16-bit port on DATA[31:16], Burst Length 8 words,
- Chip select enable is set */
- __raw_writel(0x00020181, nor_reg);
-
- /* EIM_CS0GCR2: Address hold time is set to cycle after ADV negation */
- __raw_writel(0x00000001, nor_reg + 0x00000004);
-
- /* EIM_CS0RCR1: RWSC = 9 EIM Clocks, ADV Negation = 2 EIM Clocks,
- OE Assertion = 2 EIM Clocks */
- __raw_writel(0x0a022000, nor_reg + 0x00000008);
-
- /* EIM_CS0RCR2: APR = Page read enabled, PAT = 4 EIM Clocks */
- __raw_writel(0x0000c000, nor_reg + 0x0000000c);
+ /*
+ * For EIM General Configuration registers.
+ *
+ * CS0GCR1:
+ * GBC = 0; CSREC = 6; DSZ = 2; BL = 0;
+ * CREP = 1; CSEN = 1;
+ *
+ * EIM Operation Mode: MUM = SRD = SWR = 0.
+ * (Async write/Async page read, none multiplexed)
+ *
+ * CS0GCR2:
+ * ADH = 1
+ */
+ writel(0x00620081, nor_reg);
+ writel(0x00000001, nor_reg + 0x00000004);
- /* EIM_CS0WCR1: WWSC = 8 EIM Clocks, WADVN = 1, WBEA = 1, WBEN = 1,
- WEA = 1, WEN = 1 */
- __raw_writel(0x0804a240, nor_reg + 0x00000010);
+ /*
+ * For EIM Read Configuration registers.
+ *
+ * CS0RCR1:
+ * RWSC = 1C;
+ * RADVA = 0; RADVN = 2;
+ * OEA = 2; OEN = 0;
+ * RCSA = 0; RCSN = 0
+ *
+ * CS0RCR2:
+ * APR = 1 (Async Page Read);
+ * PAT = 4 (6 EIM clock sycles)
+ */
+ writel(0x1C022000, nor_reg + 0x00000008);
+ writel(0x0000C000, nor_reg + 0x0000000C);
- /* EIM_WCR: WDOG_EN = 1, INTPOL = 1 */
- __raw_writel(0x00000120, nor_reg + 0x00000090);
+ /*
+ * For EIM Write Configuration registers.
+ *
+ * CS0WCR1:
+ * WWSC = 20;
+ * WADVA = 0; WADVN = 1;
+ * WBEA = 1; WBEN = 2;
+ * WEA = 1; WEN = 6;
+ * WCSA = 1; WCSN = 2;
+ *
+ * CS0WCR2:
+ * WBCDD = 0
+ */
+ writel(0x1404a38e, nor_reg + 0x00000010);
+ writel(0x00000000, nor_reg + 0x00000014);
}
static int max7310_1_setup(struct i2c_client *client,
@@ -703,6 +730,12 @@ static struct fsl_mxc_tvin_platform_data adv7180_data = {
.io_init = mx6q_csi0_io_init,
};
+static void mx6q_mipi_csi1_io_init(void)
+{
+ if (cpu_is_mx6dl())
+ mxc_iomux_set_gpr_register(13, 3, 3, 1);
+}
+
static struct fsl_mxc_tvin_platform_data adv7280_data = {
.dvddio_reg = NULL,
.dvdd_reg = NULL,
@@ -710,8 +743,9 @@ static struct fsl_mxc_tvin_platform_data adv7280_data = {
.pvdd_reg = NULL,
.pwdn = NULL,
.cvbs = true,
+ .io_init = mx6q_mipi_csi1_io_init,
/* csi slave reg address */
- .csi_tx_addr = 0x51,
+ .csi_tx_addr = 0x52,
};
static struct imxi2c_platform_data mx6q_sabreauto_i2c2_data = {
@@ -1074,10 +1108,10 @@ static struct fsl_mxc_ldb_platform_data ldb_data = {
static struct imx_ipuv3_platform_data ipu_data[] = {
{
.rev = 4,
- .csi_clk[0] = "ccm_clk0",
+ .csi_clk[0] = "clko_clk",
}, {
.rev = 4,
- .csi_clk[0] = "ccm_clk0",
+ .csi_clk[0] = "clko_clk",
},
};
@@ -1161,9 +1195,9 @@ static const struct flexcan_platform_data
static struct mipi_csi2_platform_data mipi_csi2_pdata = {
.ipu_id = 0,
- .csi_id = 0,
- .v_channel = 0,
- .lanes = 2,
+ .csi_id = 1,
+ .v_channel = 1,
+ .lanes = 1,
.dphy_clk = "mipi_pllref_clk",
.pixel_clk = "emi_clk",
};
@@ -1689,12 +1723,12 @@ static void __init mx6_board_init(void)
}
/* SPI */
imx6q_add_ecspi(0, &mx6q_sabreauto_spi_data);
- if (spinor_en)
- spi_device_init();
- else if (weimnor_en) {
- mx6q_setup_weimcs();
- platform_device_register(&imx6x_weimnor_device);
- }
+ if (spinor_en)
+ spi_device_init();
+ else if (weimnor_en) {
+ mx6q_setup_weimcs();
+ platform_device_register(&physmap_flash_device);
+ }
imx6q_add_mxc_hdmi(&hdmi_data);
imx6q_add_anatop_thermal_imx(1, &mx6q_sabreauto_anatop_thermal_data);
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h b/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h
index cfda6e768e78..dbfc9a2d8012 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx6dl.h
@@ -1262,7 +1262,7 @@
IOMUX_PAD(0x04DC, NO_MUX_I, 0, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A16__WEIM_WEIM_A_16 \
- IOMUX_PAD(0x04E0, 0x0110, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04E0, 0x0110, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A16__IPU1_DI1_DISP_CLK \
IOMUX_PAD(0x04E0, 0x0110, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A16__IPU1_CSI1_PIXCLK \
@@ -1279,7 +1279,7 @@
IOMUX_PAD(0x04E0, 0x0110, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A17__WEIM_WEIM_A_17 \
- IOMUX_PAD(0x04E4, 0x0114, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04E4, 0x0114, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A17__IPU1_DISP1_DAT_12 \
IOMUX_PAD(0x04E4, 0x0114, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A17__IPU1_CSI1_D_12 \
@@ -1296,7 +1296,7 @@
IOMUX_PAD(0x04E4, 0x0114, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A18__WEIM_WEIM_A_18 \
- IOMUX_PAD(0x04E8, 0x0118, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04E8, 0x0118, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A18__IPU1_DISP1_DAT_13 \
IOMUX_PAD(0x04E8, 0x0118, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A18__IPU1_CSI1_D_13 \
@@ -1313,7 +1313,7 @@
IOMUX_PAD(0x04E8, 0x0118, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A19__WEIM_WEIM_A_19 \
- IOMUX_PAD(0x04EC, 0x011C, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04EC, 0x011C, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A19__IPU1_DISP1_DAT_14 \
IOMUX_PAD(0x04EC, 0x011C, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A19__IPU1_CSI1_D_14 \
@@ -1330,7 +1330,7 @@
IOMUX_PAD(0x04EC, 0x011C, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A20__WEIM_WEIM_A_20 \
- IOMUX_PAD(0x04F0, 0x0120, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04F0, 0x0120, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A20__IPU1_DISP1_DAT_15 \
IOMUX_PAD(0x04F0, 0x0120, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A20__IPU1_CSI1_D_15 \
@@ -1347,7 +1347,7 @@
IOMUX_PAD(0x04F0, 0x0120, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A21__WEIM_WEIM_A_21 \
- IOMUX_PAD(0x04F4, 0x0124, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04F4, 0x0124, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A21__IPU1_DISP1_DAT_16 \
IOMUX_PAD(0x04F4, 0x0124, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A21__IPU1_CSI1_D_16 \
@@ -1364,7 +1364,7 @@
IOMUX_PAD(0x04F4, 0x0124, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A22__WEIM_WEIM_A_22 \
- IOMUX_PAD(0x04F8, 0x0128, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04F8, 0x0128, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A22__IPU1_DISP1_DAT_17 \
IOMUX_PAD(0x04F8, 0x0128, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A22__IPU1_CSI1_D_17 \
@@ -1379,7 +1379,7 @@
IOMUX_PAD(0x04F8, 0x0128, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A23__WEIM_WEIM_A_23 \
- IOMUX_PAD(0x04FC, 0x012C, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x04FC, 0x012C, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_A23__IPU1_DISP1_DAT_18 \
IOMUX_PAD(0x04FC, 0x012C, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_A23__IPU1_CSI1_D_18 \
@@ -1797,7 +1797,7 @@
IOMUX_PAD(0x0550, 0x0180, 9, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA0__WEIM_WEIM_DA_A_0 \
- IOMUX_PAD(0x0554, 0x0184, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0554, 0x0184, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA0__IPU1_DISP1_DAT_9 \
IOMUX_PAD(0x0554, 0x0184, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA0__IPU1_CSI1_D_9 \
@@ -1814,7 +1814,7 @@
IOMUX_PAD(0x0554, 0x0184, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA1__WEIM_WEIM_DA_A_1 \
- IOMUX_PAD(0x0558, 0x0188, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0558, 0x0188, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA1__IPU1_DISP1_DAT_8 \
IOMUX_PAD(0x0558, 0x0188, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA1__IPU1_CSI1_D_8 \
@@ -1833,7 +1833,7 @@
IOMUX_PAD(0x0558, 0x0188, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA10__WEIM_WEIM_DA_A_10 \
- IOMUX_PAD(0x055C, 0x018C, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x055C, 0x018C, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA10__IPU1_DI1_PIN15 \
IOMUX_PAD(0x055C, 0x018C, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA10__IPU1_CSI1_DATA_EN \
@@ -1850,7 +1850,7 @@
IOMUX_PAD(0x055C, 0x018C, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA11__WEIM_WEIM_DA_A_11 \
- IOMUX_PAD(0x0560, 0x0190, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0560, 0x0190, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA11__IPU1_DI1_PIN2 \
IOMUX_PAD(0x0560, 0x0190, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA11__IPU1_CSI1_HSYNC \
@@ -1869,7 +1869,7 @@
IOMUX_PAD(0x0560, 0x0190, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA12__WEIM_WEIM_DA_A_12 \
- IOMUX_PAD(0x0564, 0x0194, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0564, 0x0194, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA12__IPU1_DI1_PIN3 \
IOMUX_PAD(0x0564, 0x0194, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA12__IPU1_CSI1_VSYNC \
@@ -1888,7 +1888,7 @@
IOMUX_PAD(0x0564, 0x0194, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA13__WEIM_WEIM_DA_A_13 \
- IOMUX_PAD(0x0568, 0x0198, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0568, 0x0198, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA13__IPU1_DI1_D0_CS \
IOMUX_PAD(0x0568, 0x0198, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA13__CCM_DI1_EXT_CLK \
@@ -1907,7 +1907,7 @@
IOMUX_PAD(0x0568, 0x0198, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA14__WEIM_WEIM_DA_A_14 \
- IOMUX_PAD(0x056C, 0x019C, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x056C, 0x019C, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA14__IPU1_DI1_D1_CS \
IOMUX_PAD(0x056C, 0x019C, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA14__CCM_DI0_EXT_CLK \
@@ -1926,7 +1926,7 @@
IOMUX_PAD(0x056C, 0x019C, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA15__WEIM_WEIM_DA_A_15 \
- IOMUX_PAD(0x0570, 0x01A0, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0570, 0x01A0, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA15__IPU1_DI1_PIN1 \
IOMUX_PAD(0x0570, 0x01A0, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA15__IPU1_DI1_PIN4 \
@@ -1943,7 +1943,7 @@
IOMUX_PAD(0x0570, 0x01A0, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA2__WEIM_WEIM_DA_A_2 \
- IOMUX_PAD(0x0574, 0x01A4, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0574, 0x01A4, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA2__IPU1_DISP1_DAT_7 \
IOMUX_PAD(0x0574, 0x01A4, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA2__IPU1_CSI1_D_7 \
@@ -1962,7 +1962,7 @@
IOMUX_PAD(0x0574, 0x01A4, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA3__WEIM_WEIM_DA_A_3 \
- IOMUX_PAD(0x0578, 0x01A8, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0578, 0x01A8, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA3__IPU1_DISP1_DAT_6 \
IOMUX_PAD(0x0578, 0x01A8, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA3__IPU1_CSI1_D_6 \
@@ -1981,7 +1981,7 @@
IOMUX_PAD(0x0578, 0x01A8, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA4__WEIM_WEIM_DA_A_4 \
- IOMUX_PAD(0x057C, 0x01AC, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x057C, 0x01AC, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA4__IPU1_DISP1_DAT_5 \
IOMUX_PAD(0x057C, 0x01AC, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA4__IPU1_CSI1_D_5 \
@@ -2000,7 +2000,7 @@
IOMUX_PAD(0x057C, 0x01AC, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA5__WEIM_WEIM_DA_A_5 \
- IOMUX_PAD(0x0580, 0x01B0, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0580, 0x01B0, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA5__IPU1_DISP1_DAT_4 \
IOMUX_PAD(0x0580, 0x01B0, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA5__IPU1_CSI1_D_4 \
@@ -2019,7 +2019,7 @@
IOMUX_PAD(0x0580, 0x01B0, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA6__WEIM_WEIM_DA_A_6 \
- IOMUX_PAD(0x0584, 0x01B4, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0584, 0x01B4, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA6__IPU1_DISP1_DAT_3 \
IOMUX_PAD(0x0584, 0x01B4, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA6__IPU1_CSI1_D_3 \
@@ -2038,7 +2038,7 @@
IOMUX_PAD(0x0584, 0x01B4, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA7__WEIM_WEIM_DA_A_7 \
- IOMUX_PAD(0x0588, 0x01B8, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0588, 0x01B8, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA7__IPU1_DISP1_DAT_2 \
IOMUX_PAD(0x0588, 0x01B8, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA7__IPU1_CSI1_D_2 \
@@ -2055,7 +2055,7 @@
IOMUX_PAD(0x0588, 0x01B8, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA8__WEIM_WEIM_DA_A_8 \
- IOMUX_PAD(0x058C, 0x01BC, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x058C, 0x01BC, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA8__IPU1_DISP1_DAT_1 \
IOMUX_PAD(0x058C, 0x01BC, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA8__IPU1_CSI1_D_1 \
@@ -2072,7 +2072,7 @@
IOMUX_PAD(0x058C, 0x01BC, 8, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA9__WEIM_WEIM_DA_A_9 \
- IOMUX_PAD(0x0590, 0x01C0, 0, 0x0000, 0, NO_PAD_CTRL)
+ IOMUX_PAD(0x0590, 0x01C0, 0, 0x0000, 0, MX6DL_WEIM_NOR_PAD_CTRL)
#define MX6DL_PAD_EIM_DA9__IPU1_DISP1_DAT_0 \
IOMUX_PAD(0x0590, 0x01C0, 1, 0x0000, 0, NO_PAD_CTRL)
#define MX6DL_PAD_EIM_DA9__IPU1_CSI1_D_0 \
diff --git a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
index 36ae997d4db5..557fc4398cd1 100644
--- a/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
+++ b/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
@@ -4232,7 +4232,7 @@
(_MX6Q_PAD_EIM_A24__SRC_BT_CFG_24 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A23__WEIM_WEIM_A_23 \
- (_MX6Q_PAD_EIM_A23__WEIM_WEIM_A_23 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A23__WEIM_WEIM_A_23 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A23__IPU1_DISP1_DAT_18 \
(_MX6Q_PAD_EIM_A23__IPU1_DISP1_DAT_18 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A23__IPU2_CSI1_D_18 \
@@ -4249,7 +4249,7 @@
(_MX6Q_PAD_EIM_A23__SRC_BT_CFG_23 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A22__WEIM_WEIM_A_22 \
- (_MX6Q_PAD_EIM_A22__WEIM_WEIM_A_22 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A22__WEIM_WEIM_A_22 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A22__IPU1_DISP1_DAT_17 \
(_MX6Q_PAD_EIM_A22__IPU1_DISP1_DAT_17 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A22__IPU2_CSI1_D_17 \
@@ -4262,7 +4262,7 @@
(_MX6Q_PAD_EIM_A22__SRC_BT_CFG_22 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A21__WEIM_WEIM_A_21 \
- (_MX6Q_PAD_EIM_A21__WEIM_WEIM_A_21 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A21__WEIM_WEIM_A_21 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A21__IPU1_DISP1_DAT_16 \
(_MX6Q_PAD_EIM_A21__IPU1_DISP1_DAT_16 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A21__IPU2_CSI1_D_16 \
@@ -4279,7 +4279,7 @@
(_MX6Q_PAD_EIM_A21__SRC_BT_CFG_21 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A20__WEIM_WEIM_A_20 \
- (_MX6Q_PAD_EIM_A20__WEIM_WEIM_A_20 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A20__WEIM_WEIM_A_20 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A20__IPU1_DISP1_DAT_15 \
(_MX6Q_PAD_EIM_A20__IPU1_DISP1_DAT_15 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A20__IPU2_CSI1_D_15 \
@@ -4296,7 +4296,7 @@
(_MX6Q_PAD_EIM_A20__SRC_BT_CFG_20 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A19__WEIM_WEIM_A_19 \
- (_MX6Q_PAD_EIM_A19__WEIM_WEIM_A_19 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A19__WEIM_WEIM_A_19 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A19__IPU1_DISP1_DAT_14 \
(_MX6Q_PAD_EIM_A19__IPU1_DISP1_DAT_14 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A19__IPU2_CSI1_D_14 \
@@ -4313,7 +4313,7 @@
(_MX6Q_PAD_EIM_A19__SRC_BT_CFG_19 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A18__WEIM_WEIM_A_18 \
- (_MX6Q_PAD_EIM_A18__WEIM_WEIM_A_18 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A18__WEIM_WEIM_A_18 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A18__IPU1_DISP1_DAT_13 \
(_MX6Q_PAD_EIM_A18__IPU1_DISP1_DAT_13 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A18__IPU2_CSI1_D_13 \
@@ -4330,7 +4330,7 @@
(_MX6Q_PAD_EIM_A18__SRC_BT_CFG_18 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A17__WEIM_WEIM_A_17 \
- (_MX6Q_PAD_EIM_A17__WEIM_WEIM_A_17 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A17__WEIM_WEIM_A_17 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A17__IPU1_DISP1_DAT_12 \
(_MX6Q_PAD_EIM_A17__IPU1_DISP1_DAT_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A17__IPU2_CSI1_D_12 \
@@ -4347,7 +4347,7 @@
(_MX6Q_PAD_EIM_A17__SRC_BT_CFG_17 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A16__WEIM_WEIM_A_16 \
- (_MX6Q_PAD_EIM_A16__WEIM_WEIM_A_16 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_A16__WEIM_WEIM_A_16 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_A16__IPU1_DI1_DISP_CLK \
(_MX6Q_PAD_EIM_A16__IPU1_DI1_DISP_CLK | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_A16__IPU2_CSI1_PIXCLK \
@@ -4461,7 +4461,7 @@
(_MX6Q_PAD_EIM_EB1__SRC_BT_CFG_28 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA0__WEIM_WEIM_DA_A_0 \
- (_MX6Q_PAD_EIM_DA0__WEIM_WEIM_DA_A_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA0__WEIM_WEIM_DA_A_0 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA0__IPU1_DISP1_DAT_9 \
(_MX6Q_PAD_EIM_DA0__IPU1_DISP1_DAT_9 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA0__IPU2_CSI1_D_9 \
@@ -4476,7 +4476,7 @@
(_MX6Q_PAD_EIM_DA0__SRC_BT_CFG_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA1__WEIM_WEIM_DA_A_1 \
- (_MX6Q_PAD_EIM_DA1__WEIM_WEIM_DA_A_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA1__WEIM_WEIM_DA_A_1 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA1__IPU1_DISP1_DAT_8 \
(_MX6Q_PAD_EIM_DA1__IPU1_DISP1_DAT_8 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA1__IPU2_CSI1_D_8 \
@@ -4493,7 +4493,7 @@
(_MX6Q_PAD_EIM_DA1__SRC_BT_CFG_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA2__WEIM_WEIM_DA_A_2 \
- (_MX6Q_PAD_EIM_DA2__WEIM_WEIM_DA_A_2 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA2__WEIM_WEIM_DA_A_2 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA2__IPU1_DISP1_DAT_7 \
(_MX6Q_PAD_EIM_DA2__IPU1_DISP1_DAT_7 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA2__IPU2_CSI1_D_7 \
@@ -4510,7 +4510,7 @@
(_MX6Q_PAD_EIM_DA2__SRC_BT_CFG_2 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA3__WEIM_WEIM_DA_A_3 \
- (_MX6Q_PAD_EIM_DA3__WEIM_WEIM_DA_A_3 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA3__WEIM_WEIM_DA_A_3 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA3__IPU1_DISP1_DAT_6 \
(_MX6Q_PAD_EIM_DA3__IPU1_DISP1_DAT_6 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA3__IPU2_CSI1_D_6 \
@@ -4527,7 +4527,7 @@
(_MX6Q_PAD_EIM_DA3__SRC_BT_CFG_3 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA4__WEIM_WEIM_DA_A_4 \
- (_MX6Q_PAD_EIM_DA4__WEIM_WEIM_DA_A_4 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA4__WEIM_WEIM_DA_A_4 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA4__IPU1_DISP1_DAT_5 \
(_MX6Q_PAD_EIM_DA4__IPU1_DISP1_DAT_5 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA4__IPU2_CSI1_D_5 \
@@ -4544,7 +4544,7 @@
(_MX6Q_PAD_EIM_DA4__SRC_BT_CFG_4 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA5__WEIM_WEIM_DA_A_5 \
- (_MX6Q_PAD_EIM_DA5__WEIM_WEIM_DA_A_5 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA5__WEIM_WEIM_DA_A_5 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA5__IPU1_DISP1_DAT_4 \
(_MX6Q_PAD_EIM_DA5__IPU1_DISP1_DAT_4 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA5__IPU2_CSI1_D_4 \
@@ -4561,7 +4561,7 @@
(_MX6Q_PAD_EIM_DA5__SRC_BT_CFG_5 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA6__WEIM_WEIM_DA_A_6 \
- (_MX6Q_PAD_EIM_DA6__WEIM_WEIM_DA_A_6 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA6__WEIM_WEIM_DA_A_6 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA6__IPU1_DISP1_DAT_3 \
(_MX6Q_PAD_EIM_DA6__IPU1_DISP1_DAT_3 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA6__IPU2_CSI1_D_3 \
@@ -4578,7 +4578,7 @@
(_MX6Q_PAD_EIM_DA6__SRC_BT_CFG_6 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA7__WEIM_WEIM_DA_A_7 \
- (_MX6Q_PAD_EIM_DA7__WEIM_WEIM_DA_A_7 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA7__WEIM_WEIM_DA_A_7 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA7__IPU1_DISP1_DAT_2 \
(_MX6Q_PAD_EIM_DA7__IPU1_DISP1_DAT_2 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA7__IPU2_CSI1_D_2 \
@@ -4593,7 +4593,7 @@
(_MX6Q_PAD_EIM_DA7__SRC_BT_CFG_7 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA8__WEIM_WEIM_DA_A_8 \
- (_MX6Q_PAD_EIM_DA8__WEIM_WEIM_DA_A_8 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA8__WEIM_WEIM_DA_A_8 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA8__IPU1_DISP1_DAT_1 \
(_MX6Q_PAD_EIM_DA8__IPU1_DISP1_DAT_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA8__IPU2_CSI1_D_1 \
@@ -4608,7 +4608,7 @@
(_MX6Q_PAD_EIM_DA8__SRC_BT_CFG_8 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA9__WEIM_WEIM_DA_A_9 \
- (_MX6Q_PAD_EIM_DA9__WEIM_WEIM_DA_A_9 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA9__WEIM_WEIM_DA_A_9 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA9__IPU1_DISP1_DAT_0 \
(_MX6Q_PAD_EIM_DA9__IPU1_DISP1_DAT_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA9__IPU2_CSI1_D_0 \
@@ -4623,7 +4623,7 @@
(_MX6Q_PAD_EIM_DA9__SRC_BT_CFG_9 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA10__WEIM_WEIM_DA_A_10 \
- (_MX6Q_PAD_EIM_DA10__WEIM_WEIM_DA_A_10 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA10__WEIM_WEIM_DA_A_10 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA10__IPU1_DI1_PIN15 \
(_MX6Q_PAD_EIM_DA10__IPU1_DI1_PIN15 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA10__IPU2_CSI1_DATA_EN \
@@ -4638,7 +4638,7 @@
(_MX6Q_PAD_EIM_DA10__SRC_BT_CFG_10 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA11__WEIM_WEIM_DA_A_11 \
- (_MX6Q_PAD_EIM_DA11__WEIM_WEIM_DA_A_11 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA11__WEIM_WEIM_DA_A_11 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA11__IPU1_DI1_PIN2 \
(_MX6Q_PAD_EIM_DA11__IPU1_DI1_PIN2 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA11__IPU2_CSI1_HSYNC \
@@ -4655,7 +4655,7 @@
(_MX6Q_PAD_EIM_DA11__SRC_BT_CFG_11 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA12__WEIM_WEIM_DA_A_12 \
- (_MX6Q_PAD_EIM_DA12__WEIM_WEIM_DA_A_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA12__WEIM_WEIM_DA_A_12 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA12__IPU1_DI1_PIN3 \
(_MX6Q_PAD_EIM_DA12__IPU1_DI1_PIN3 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA12__IPU2_CSI1_VSYNC \
@@ -4672,7 +4672,7 @@
(_MX6Q_PAD_EIM_DA12__SRC_BT_CFG_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA13__WEIM_WEIM_DA_A_13 \
- (_MX6Q_PAD_EIM_DA13__WEIM_WEIM_DA_A_13 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA13__WEIM_WEIM_DA_A_13 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA13__IPU1_DI1_D0_CS \
(_MX6Q_PAD_EIM_DA13__IPU1_DI1_D0_CS | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA13__CCM_DI1_EXT_CLK \
@@ -4689,7 +4689,7 @@
(_MX6Q_PAD_EIM_DA13__SRC_BT_CFG_13 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA14__WEIM_WEIM_DA_A_14 \
- (_MX6Q_PAD_EIM_DA14__WEIM_WEIM_DA_A_14 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA14__WEIM_WEIM_DA_A_14 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA14__IPU1_DI1_D1_CS \
(_MX6Q_PAD_EIM_DA14__IPU1_DI1_D1_CS | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA14__CCM_DI0_EXT_CLK \
@@ -4706,7 +4706,7 @@
(_MX6Q_PAD_EIM_DA14__SRC_BT_CFG_14 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA15__WEIM_WEIM_DA_A_15 \
- (_MX6Q_PAD_EIM_DA15__WEIM_WEIM_DA_A_15 | MUX_PAD_CTRL(NO_PAD_CTRL))
+ (_MX6Q_PAD_EIM_DA15__WEIM_WEIM_DA_A_15 | MUX_PAD_CTRL(MX6Q_WEIM_NOR_PAD_CTRL))
#define MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN1 \
(_MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN1 | MUX_PAD_CTRL(NO_PAD_CTRL))
#define MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN4 \
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index b68c56071c84..d02c72e1cfbe 100755
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -199,6 +199,16 @@ config TOUCHSCREEN_ELAN
To compile this driver as a module, choose M here: the
module will be called elan-touch.
+config TOUCHSCREEN_EGALAX_SINGLE_TOUCH
+ bool "EETI eGalax touchscreen as single-touch"
+ default N
+ depends on TOUCHSCREEN_EGALAX
+ help
+ If you say yes here you get single-touch touchscreen support
+ on the eGalax I2C controller.
+ If you say "no", you'll get the normal multi-touch.
+
+
config TOUCHSCREEN_FUJITSU
tristate "Fujitsu serial touchscreen"
select SERIO
diff --git a/drivers/media/video/mxc/capture/ipu_fg_overlay_sdc.c b/drivers/media/video/mxc/capture/ipu_fg_overlay_sdc.c
index f324f4eac489..6d8d4399d7ad 100644
--- a/drivers/media/video/mxc/capture/ipu_fg_overlay_sdc.c
+++ b/drivers/media/video/mxc/capture/ipu_fg_overlay_sdc.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2004-2012 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2004-2013 Freescale Semiconductor, Inc. All Rights Reserved.
*/
/* * The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License
@@ -55,7 +55,7 @@ static void csi_buf_work_func(struct work_struct *work)
task.input.paddr = cam->vf_bufs[1];
task.input.width = cam->crop_current.width;
task.input.height = cam->crop_current.height;
- task.input.format = IPU_PIX_FMT_UYVY;
+ task.input.format = IPU_PIX_FMT_NV12;
if (buffer_num == 0)
task.output.paddr = fbi->fix.smem_start +
@@ -124,7 +124,7 @@ static irqreturn_t csi_enc_callback(int irq, void *dev_id)
ipu_select_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER, csi_buffer_num);
if ((cam->crop_current.width != cam->win.w.width) ||
(cam->crop_current.height != cam->win.w.height) ||
- (vf_out_format != IPU_PIX_FMT_UYVY) ||
+ (vf_out_format != IPU_PIX_FMT_NV12) ||
(cam->rotation >= IPU_ROTATE_VERT_FLIP))
schedule_work(&cam->csi_work_struct);
csi_buffer_num = (csi_buffer_num == 0) ? 1 : 0;
@@ -134,7 +134,6 @@ static irqreturn_t csi_enc_callback(int irq, void *dev_id)
static int csi_enc_setup(cam_data *cam)
{
ipu_channel_params_t params;
- u32 pixel_fmt;
int err = 0, sensor_protocol = 0;
#ifdef CONFIG_MXC_MIPI_CSI2
void *mipi_csi2_info;
@@ -213,7 +212,8 @@ static int csi_enc_setup(cam_data *cam)
cam->vf_bufs_vaddr[1],
(dma_addr_t) cam->vf_bufs[1]);
}
- csi_mem_bufsize = cam->crop_current.width * cam->crop_current.height * 2;
+ csi_mem_bufsize = cam->crop_current.width *
+ cam->crop_current.height * 3/2;
cam->vf_bufs_size[0] = PAGE_ALIGN(csi_mem_bufsize);
cam->vf_bufs_vaddr[0] = (void *)dma_alloc_coherent(0,
cam->vf_bufs_size[0],
@@ -246,13 +246,13 @@ static int csi_enc_setup(cam_data *cam)
goto out_1;
}
- pixel_fmt = IPU_PIX_FMT_UYVY;
if ((cam->crop_current.width == cam->win.w.width) &&
(cam->crop_current.height == cam->win.w.height) &&
- (vf_out_format == IPU_PIX_FMT_UYVY) &&
+ (vf_out_format == IPU_PIX_FMT_NV12) &&
(cam->rotation < IPU_ROTATE_VERT_FLIP)) {
err = ipu_init_channel_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER,
- pixel_fmt, cam->crop_current.width,
+ IPU_PIX_FMT_NV12,
+ cam->crop_current.width,
cam->crop_current.height,
cam->crop_current.width, IPU_ROTATE_NONE,
fbi->fix.smem_start + (fbi->fix.line_length * fbvar.yres),
@@ -260,7 +260,8 @@ static int csi_enc_setup(cam_data *cam)
cam->offset.u_offset, cam->offset.u_offset);
} else {
err = ipu_init_channel_buffer(cam->ipu, CSI_MEM, IPU_OUTPUT_BUFFER,
- pixel_fmt, cam->crop_current.width,
+ IPU_PIX_FMT_NV12,
+ cam->crop_current.width,
cam->crop_current.height,
cam->crop_current.width, IPU_ROTATE_NONE,
cam->vf_bufs[0], cam->vf_bufs[1], 0,
@@ -347,8 +348,8 @@ out1:
static int foreground_start(void *private)
{
cam_data *cam = (cam_data *) private;
- int err = 0, i = 0;
- short *tmp, color;
+ int err = 0, i = 0, screen_size;
+ char *base;
if (!cam) {
printk(KERN_ERR "private is NULL\n");
@@ -383,13 +384,11 @@ static int foreground_start(void *private)
if (OVERLAY_FB_SUPPORT_NONSTD) {
/* Use DP to do CSC so that we can get better performance */
- vf_out_format = IPU_PIX_FMT_UYVY;
+ vf_out_format = IPU_PIX_FMT_NV12;
fbvar.nonstd = vf_out_format;
- color = 0x80;
} else {
vf_out_format = IPU_PIX_FMT_RGB565;
fbvar.nonstd = 0;
- color = 0x0;
}
fbvar.bits_per_pixel = 16;
@@ -405,10 +404,17 @@ static int foreground_start(void *private)
cam->win.w.top);
/* Fill black color for framebuffer */
- tmp = (short *) fbi->screen_base;
- for (i = 0; i < (fbi->fix.line_length * fbi->var.yres)/2;
- i++, tmp++)
- *tmp = color;
+ base = (char *) fbi->screen_base;
+ screen_size = fbi->var.xres * fbi->var.yres;
+ if (OVERLAY_FB_SUPPORT_NONSTD) {
+ memset(base, 0, screen_size);
+ base += screen_size;
+ for (i = 0; i < screen_size / 2; i++, base++)
+ *base = 0x80;
+ } else {
+ for (i = 0; i < screen_size * 2; i++, base++)
+ *base = 0x00;
+ }
console_lock();
fb_blank(fbi, FB_BLANK_UNBLANK);
diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c
index 23175edd5634..727fd9c53199 100644
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -1473,8 +1473,8 @@ static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
xip_enable(map, chip, adr);
/* FIXME - should have reset delay before continuing */
- printk(KERN_WARNING "MTD %s(): software timeout\n",
- __func__ );
+ printk(KERN_WARNING "MTD %s(): software timeout, address:0x%.8lx.\n",
+ __func__, adr);
ret = -EIO;
op_done:
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index 96e6f186bf57..c0c328c5b133 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -162,15 +162,6 @@ config MTD_PXA2XX
help
This provides a driver for the NOR flash attached to a PXA2xx chip.
-config MTD_IMX6X_WEIMNOR
- tristate "CFI Flash device mapped on iMX6x based boards"
- depends on MTD_CFI || MTD_JEDECPROBE || MTD_ROM || MTD_LPDDR
- help
- This provides a driver for the WEIM (Parallel) NOR flash attached to
- an iMX6x chip. This driver provides a cached read to take advantage
- of paged reads by using memcopy. If you have a board such as the
- SabreAI select 'Y' to use the NOR flash chips on it.
-
config MTD_OCTAGON
tristate "JEDEC Flash device mapped on Octagon 5066 SBC"
depends on X86 && MTD_JEDEC && MTD_COMPLEX_MAPPINGS
diff --git a/drivers/mtd/maps/Makefile b/drivers/mtd/maps/Makefile
index 8f437a0b828d..cb48b11affff 100644
--- a/drivers/mtd/maps/Makefile
+++ b/drivers/mtd/maps/Makefile
@@ -18,7 +18,6 @@ obj-$(CONFIG_MTD_ICHXROM) += ichxrom.o
obj-$(CONFIG_MTD_CK804XROM) += ck804xrom.o
obj-$(CONFIG_MTD_TSUNAMI) += tsunami_flash.o
obj-$(CONFIG_MTD_PXA2XX) += pxa2xx-flash.o
-obj-$(CONFIG_MTD_IMX6X_WEIMNOR) += imx6x-weimnor.o
obj-$(CONFIG_MTD_MBX860) += mbx860.o
obj-$(CONFIG_MTD_CEIVA) += ceiva.o
obj-$(CONFIG_MTD_OCTAGON) += octagon-5066.o
diff --git a/drivers/mtd/maps/imx6x-weimnor.c b/drivers/mtd/maps/imx6x-weimnor.c
deleted file mode 100644
index 60a96da32dcf..000000000000
--- a/drivers/mtd/maps/imx6x-weimnor.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright (C) 2013 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/device.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/map.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mtd/concat.h>
-#include <linux/io.h>
-
-#include <asm/outercache.h>
-
-#define MAX_RESOURCES 4
-
-struct imx6x_weimnor_info {
- struct mtd_info *mtd[MAX_RESOURCES];
- struct mtd_info *cmtd;
- struct map_info map[MAX_RESOURCES];
- int nr_parts;
- struct mtd_partition *parts;
-};
-
-static int imx6x_weimnor_remove(struct platform_device *dev)
-{
- struct imx6x_weimnor_info *info;
- int i;
-
- info = platform_get_drvdata(dev);
-
- if (info == NULL)
- return 0;
-
- platform_set_drvdata(dev, NULL);
-
- if (info->cmtd) {
- mtd_device_unregister(info->cmtd);
- if (info->nr_parts)
- kfree(info->parts);
- if (info->cmtd != info->mtd[0])
- mtd_concat_destroy(info->cmtd);
- }
-
- for (i = 0; i < MAX_RESOURCES; i++) {
- if (info->mtd[i] != NULL)
- map_destroy(info->mtd[i]);
- if (info->map[i].cached)
- iounmap(info->map[i].cached);
- }
-
- kfree(info);
-
- return 0;
-}
-
-static void imx6x_set_vpp(struct map_info *map, int state)
-{
- struct platform_device *pdev;
- struct physmap_flash_data *flash;
-
- pdev = (struct platform_device *)map->map_priv_1;
- flash = pdev->dev.platform_data;
-
- if (flash->set_vpp)
- flash->set_vpp(pdev, state);
-}
-
-#define CACHELINESIZE 32
-static void imx6x_map_inval_cache(struct map_info *map, unsigned long from,
-ssize_t len)
-{
- unsigned long start;
- unsigned long end;
- unsigned long phys_start;
- unsigned long phys_end;
-
- if (from > map->size) {
- start = (unsigned long)map->cached + map->size;
- phys_start = (unsigned long)map->phys + map->size;
- } else {
- start = (unsigned long)map->cached + from;
- phys_start = (unsigned long)map->phys + from;
- }
-
- if ((from + len) > map->size) {
- end = start + map->size;
- phys_end = phys_start + map->size;
- } else {
- end = start + len;
- phys_end = phys_start + len;
- }
-
- start &= ~(CACHELINESIZE - 1);
- while (start < end) {
- /* invalidate D cache line */
- asm volatile ("mcr p15, 0, %0, c7, c6, 1" : : "r" (start));
- start += CACHELINESIZE;
- }
- outer_inv_range(phys_start, phys_end);
-}
-
-static const char *rom_probe_types[] = {
- "cfi_probe",
- "jedec_probe",
- "qinfo_probe",
- "map_rom",
- NULL};
-
-static const char *part_probe_types[] = { "cmdlinepart", "RedBoot", "afs",
- NULL};
-
-static int imx6x_weimnor_probe(struct platform_device *dev)
-{
- struct physmap_flash_data *flash;
- struct imx6x_weimnor_info *info;
- const char **probe_type;
- int err = 0;
- int i;
- int devices_found = 0;
-
- flash = dev->dev.platform_data;
- if (flash == NULL)
- return -ENODEV;
-
- info = devm_kzalloc(&dev->dev, sizeof(struct imx6x_weimnor_info),
- GFP_KERNEL);
- if (info == NULL) {
- err = -ENOMEM;
- goto err_out;
- }
-
- if (flash->init) {
- err = flash->init(dev);
- if (err)
- goto err_out;
- }
-
- platform_set_drvdata(dev, info);
-
- for (i = 0; i < dev->num_resources; i++) {
- printk(KERN_NOTICE
- "imx6x-flash (physmap) platform "
- "flash device: %.8llx at %.8llx\n",
- (unsigned long long)resource_size(&dev->resource[i]),
- (unsigned long long)dev->resource[i].start);
-
- if (!devm_request_mem_region(&dev->dev,
- dev->resource[i].start,
- resource_size(&dev->resource[i]),
- dev_name(&dev->dev))) {
- dev_err(&dev->dev, "Could not reserve memory region\n");
- err = -ENOMEM;
- goto err_out;
- }
-
- info->map[i].name = dev_name(&dev->dev);
- info->map[i].phys = dev->resource[i].start;
- info->map[i].size = resource_size(&dev->resource[i]);
- info->map[i].bankwidth = flash->width;
- info->map[i].set_vpp = imx6x_set_vpp;
- info->map[i].pfow_base = 0;
- info->map[i].map_priv_1 = (unsigned long)dev;
- info->map[i].virt = devm_ioremap(&dev->dev, info->map[i].phys,
- info->map[i].size);
- if (info->map[i].virt == NULL) {
- dev_err(&dev->dev, "Failed to ioremap flash region\n");
- err = -EIO;
- goto err_out;
- }
-
- info->map[i].cached =
- ioremap_cached(info->map[i].phys, info->map[i].size);
- if (!info->map[i].cached)
- printk(KERN_WARNING "Failed to ioremap cached %s\n",
- info->map[i].name);
-
- info->map[i].inval_cache = imx6x_map_inval_cache;
-
- simple_map_init(&info->map[i]);
- probe_type = rom_probe_types;
-
- for (; info->mtd[i] == NULL && *probe_type != NULL;
- probe_type++)
- info->mtd[i] = do_map_probe(*probe_type, &info->map[i]);
-
- if (info->mtd[i] == NULL) {
- dev_err(&dev->dev, "map_probe failed\n");
- err = -ENXIO;
- goto err_out;
- } else {
- devices_found++;
- }
- info->mtd[i]->owner = THIS_MODULE;
- info->mtd[i]->dev.parent = &dev->dev;
- }
-
- if (devices_found == 1) {
- info->cmtd = info->mtd[0];
- } else if (devices_found > 1) {
- /*
- * We detected multiple devices. Concatenate them together.
- */
- info->cmtd = mtd_concat_create(info->mtd, devices_found,
- dev_name(&dev->dev));
- if (info->cmtd == NULL)
- err = -ENXIO;
- }
- if (err)
- goto err_out;
-
- err = parse_mtd_partitions(info->cmtd, part_probe_types,
- &info->parts, 0);
- if (err > 0) {
- mtd_device_register(info->cmtd, info->parts, err);
- info->nr_parts = err;
- return 0;
- }
-
- if (flash->nr_parts) {
- printk(KERN_NOTICE "Using physmap partition information\n");
- mtd_device_register(info->cmtd, flash->parts,
- flash->nr_parts);
- return 0;
- }
-
- mtd_device_register(info->cmtd, NULL, 0);
-
- return 0;
-
-err_out:
- imx6x_weimnor_remove(dev);
- return err;
-}
-
-#ifdef CONFIG_PM
-static void imx6x_weimnor_shutdown(struct platform_device *dev)
-{
- struct imx6x_weimnor_info *info = platform_get_drvdata(dev);
- int i;
-
- for (i = 0; i < MAX_RESOURCES && info->mtd[i]; i++)
- if (info->mtd[i]->suspend && info->mtd[i]->resume)
- if (info->mtd[i]->suspend(info->mtd[i]) == 0)
- info->mtd[i]->resume(info->mtd[i]);
-}
-#else
-#define imx6x_weimnor_shutdown NULL
-#endif
-
-static struct platform_driver imx6x_weimnor_driver = {
- .probe = imx6x_weimnor_probe,
- .remove = __devexit_p(imx6x_weimnor_remove),
- .shutdown = imx6x_weimnor_shutdown,
- .driver = {
- .name = "imx6x-weimnor",
- .owner = THIS_MODULE,
- },
-};
-
-static int __init imx6x_init(void)
-{
- int err;
- err = platform_driver_register(&imx6x_weimnor_driver);
- return err;
-}
-
-static void __exit imx6x_exit(void)
-{
- platform_driver_unregister(&imx6x_weimnor_driver);
-}
-
-module_init(imx6x_init);
-module_exit(imx6x_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Oliver Brown <oliver.brown@freescale.com>");
-MODULE_DESCRIPTION("MTD map driver for Freescale iMX");
-
diff --git a/drivers/mxc/ipu/ipu_calc_stripes_sizes.c b/drivers/mxc/ipu/ipu_calc_stripes_sizes.c
index b6230e819503..0700b941a387 100644
--- a/drivers/mxc/ipu/ipu_calc_stripes_sizes.c
+++ b/drivers/mxc/ipu/ipu_calc_stripes_sizes.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2009-2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2009-2013 Freescale Semiconductor, Inc. All Rights Reserved.
*/
/*
@@ -21,7 +21,7 @@
#include <linux/module.h>
#include <linux/ipu.h>
-#include <asm/div64.h>
+#include <linux/math64.h>
#define BPP_32 0
#define BPP_16 3
@@ -30,21 +30,13 @@
#define BPP_12 4
#define BPP_18 2
-static u64 _do_div(u64 a, u32 b)
-{
- u64 div;
- div = a;
- do_div(div, b);
- return div;
-}
-
static u32 truncate(u32 up, /* 0: down; else: up */
u64 a, /* must be non-negative */
u32 b)
{
u32 d;
u64 div;
- div = _do_div(a, b);
+ div = div_u64(a, b);
d = b * (div >> 32);
if (up && (a > (((u64)d) << 32)))
return d+b;
@@ -227,9 +219,9 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
|| (output_frame_width < 4))
return 1;
- irr_opt = _do_div((((u64)(input_frame_width - 1)) << 32),
+ irr_opt = div_u64((((u64)(input_frame_width - 1)) << 32),
(output_frame_width - 1));
- rr_opt = _do_div((((u64)(output_frame_width - 1)) << 32),
+ rr_opt = div_u64((((u64)(output_frame_width - 1)) << 32),
(input_frame_width - 1));
if ((input_m == 0) || (output_m == 0) || (input_f == 0) || (output_f == 0)
@@ -262,7 +254,7 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
left->output_width = right->output_width = right->output_column =
output_frame_width >> 1;
left->input_column = right->input_column = 0;
- div = _do_div(((((u64)irr_steps) << 32) *
+ div = div_u64(((((u64)irr_steps) << 32) *
(right->input_width - 1)), (right->output_width - 1));
left->irr = right->irr = truncate(0, div, 1);
} else { /* with overlap */
@@ -272,7 +264,7 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
/* this is the maximal inw which allows the same resizing ratio */
/* in both stripes */
onw = truncate(1, (inw * rr_opt), output_f);
- div = _do_div((((u64)(irr_steps * inw)) <<
+ div = div_u64((((u64)(irr_steps * inw)) <<
32), onw);
left->irr = right->irr = truncate(0, div, 1);
left->output_width = right->output_width =
@@ -280,14 +272,14 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
/* These are valid assignments for output_width, */
/* assuming output_f is a multiple of output_m */
div = (((u64)(left->output_width-1) * (left->irr)) << 32);
- div = (((u64)1) << 32) + _do_div(div, irr_steps);
+ div = (((u64)1) << 32) + div_u64(div, irr_steps);
left->input_width = right->input_width = truncate(1, div, input_m);
- div = _do_div((((u64)((right->output_width - 1) * right->irr)) <<
+ div = div_u64((((u64)((right->output_width - 1) * right->irr)) <<
32), irr_steps);
difwr = (((u64)(input_frame_width - 1 - inw)) << 32) - div;
- div = _do_div((difwr + (((u64)input_f) << 32)), 2);
+ div = div_u64((difwr + (((u64)input_f) << 32)), 2);
left->input_column = truncate(0, div, input_f);
@@ -312,13 +304,13 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
/* in both stripes */
onw = truncate(1, inw * rr_opt, output_f);
do {
- div = _do_div((((u64)(irr_steps * inw)) << 32), onw);
+ div = div_u64((((u64)(irr_steps * inw)) << 32), onw);
left->irr = truncate(0, div, 1);
- div = _do_div((((u64)(onw * left->irr)) << 32),
+ div = div_u64((((u64)(onw * left->irr)) << 32),
irr_steps);
dinw = (((u64)inw) << 32) - div;
- div = _do_div((((u64)((output_frame_width - 1 - onw) * left->irr)) <<
+ div = div_u64((((u64)((output_frame_width - 1 - onw) * left->irr)) <<
32), irr_steps);
difwl = (((u64)(input_frame_width - 1 - inw)) << 32) - div;
@@ -338,7 +330,7 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
inw = inw_best;
onw = truncate(1, inw * rr_opt, output_f);
- div = _do_div((((u64)(irr_steps * inw)) << 32), onw);
+ div = div_u64((((u64)(irr_steps * inw)) << 32), onw);
left->irr = truncate(0, div, 1);
left->output_width = onw;
@@ -349,18 +341,18 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
right->input_width = truncate(1, ((u64)(input_frame_width - inw)) <<
32, input_m);
- div = _do_div((((u64)(irr_steps * (input_frame_width - 1 - inw))) <<
+ div = div_u64((((u64)(irr_steps * (input_frame_width - 1 - inw))) <<
32), (right->output_width - 1));
right->irr = truncate(0, div, 1);
temp = truncate(0, ((u64)left->irr) * ((((u64)1) << 32) + dirr), 1);
if (temp < right->irr)
right->irr = temp;
- div = _do_div(((u64)((right->output_width - 1) * right->irr) <<
+ div = div_u64(((u64)((right->output_width - 1) * right->irr) <<
32), irr_steps);
difwr = (u64)(input_frame_width - 1 - inw) - div;
- div = _do_div((difwr + (((u64)input_f) << 32)), 2);
+ div = div_u64((difwr + (((u64)input_f) << 32)), 2);
left->input_column = truncate(0, div, input_f);
/* This splits the truncated input columns evenly */
diff --git a/drivers/mxc/ipu3/ipu_calc_stripes_sizes.c b/drivers/mxc/ipu3/ipu_calc_stripes_sizes.c
index 4cee1df5cbf8..3a27195bbc3d 100644
--- a/drivers/mxc/ipu3/ipu_calc_stripes_sizes.c
+++ b/drivers/mxc/ipu3/ipu_calc_stripes_sizes.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2009-2012 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright 2009-2013 Freescale Semiconductor, Inc. All Rights Reserved.
*/
/*
@@ -21,7 +21,7 @@
#include <linux/module.h>
#include <mach/ipu-v3.h>
-#include <asm/div64.h>
+#include <linux/math64.h>
#define BPP_32 0
#define BPP_16 3
@@ -30,21 +30,13 @@
#define BPP_12 4
#define BPP_18 2
-static u64 _do_div(u64 a, u32 b)
-{
- u64 div;
- div = a;
- do_div(div, b);
- return div;
-}
-
static u32 truncate(u32 up, /* 0: down; else: up */
u64 a, /* must be non-negative */
u32 b)
{
u32 d;
u64 div;
- div = _do_div(a, b);
+ div = div_u64(a, b);
d = b * (div >> 32);
if (up && (a > (((u64)d) << 32)))
return d+b;
@@ -229,9 +221,9 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
if ((input_frame_width < 4) || (output_frame_width < 4))
return 1;
- irr_opt = _do_div((((u64)(input_frame_width - 1)) << 32),
+ irr_opt = div_u64((((u64)(input_frame_width - 1)) << 32),
(output_frame_width - 1));
- rr_opt = _do_div((((u64)(output_frame_width - 1)) << 32),
+ rr_opt = div_u64((((u64)(output_frame_width - 1)) << 32),
(input_frame_width - 1));
if ((input_m == 0) || (output_m == 0) || (input_f == 0) || (output_f == 0)
@@ -265,7 +257,7 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
output_frame_width >> 1;
left->input_column = 0;
left->output_column = 0;
- div = _do_div(((((u64)irr_steps) << 32) *
+ div = div_u64(((((u64)irr_steps) << 32) *
(right->input_width - 1)), (right->output_width - 1));
left->irr = right->irr = truncate(0, div, 1);
} else { /* with overlap */
@@ -275,7 +267,7 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
/* this is the maximal inw which allows the same resizing ratio */
/* in both stripes */
onw = truncate(1, (inw * rr_opt), output_f);
- div = _do_div((((u64)(irr_steps * inw)) <<
+ div = div_u64((((u64)(irr_steps * inw)) <<
32), onw);
left->irr = right->irr = truncate(0, div, 1);
left->output_width = right->output_width =
@@ -283,14 +275,14 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
/* These are valid assignments for output_width, */
/* assuming output_f is a multiple of output_m */
div = (((u64)(left->output_width-1) * (left->irr)) << 32);
- div = (((u64)1) << 32) + _do_div(div, irr_steps);
+ div = (((u64)1) << 32) + div_u64(div, irr_steps);
left->input_width = right->input_width = truncate(1, div, input_m);
- div = _do_div((((u64)((right->output_width - 1) * right->irr)) <<
+ div = div_u64((((u64)((right->output_width - 1) * right->irr)) <<
32), irr_steps);
difwr = (((u64)(input_frame_width - 1 - inw)) << 32) - div;
- div = _do_div((difwr + (((u64)input_f) << 32)), 2);
+ div = div_u64((difwr + (((u64)input_f) << 32)), 2);
left->input_column = truncate(0, div, input_f);
@@ -315,13 +307,13 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
/* in both stripes */
onw = truncate(1, inw * rr_opt, output_f);
do {
- div = _do_div((((u64)(irr_steps * inw)) << 32), onw);
+ div = div_u64((((u64)(irr_steps * inw)) << 32), onw);
left->irr = truncate(0, div, 1);
- div = _do_div((((u64)(onw * left->irr)) << 32),
+ div = div_u64((((u64)(onw * left->irr)) << 32),
irr_steps);
dinw = (((u64)inw) << 32) - div;
- div = _do_div((((u64)((output_frame_width - 1 - onw) * left->irr)) <<
+ div = div_u64((((u64)((output_frame_width - 1 - onw) * left->irr)) <<
32), irr_steps);
difwl = (((u64)(input_frame_width - 1 - inw)) << 32) - div;
@@ -341,7 +333,7 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
inw = inw_best;
onw = truncate(1, inw * rr_opt, output_f);
- div = _do_div((((u64)(irr_steps * inw)) << 32), onw);
+ div = div_u64((((u64)(irr_steps * inw)) << 32), onw);
left->irr = truncate(0, div, 1);
left->output_width = onw;
@@ -352,18 +344,18 @@ int ipu_calc_stripes_sizes(const unsigned int input_frame_width,
right->input_width = truncate(1, ((u64)(input_frame_width - inw)) <<
32, input_m);
- div = _do_div((((u64)(irr_steps * (input_frame_width - 1 - inw))) <<
+ div = div_u64((((u64)(irr_steps * (input_frame_width - 1 - inw))) <<
32), (right->output_width - 1));
right->irr = truncate(0, div, 1);
temp = truncate(0, ((u64)left->irr) * ((((u64)1) << 32) + dirr), 1);
if (temp < right->irr)
right->irr = temp;
- div = _do_div(((u64)((right->output_width - 1) * right->irr) <<
+ div = div_u64(((u64)((right->output_width - 1) * right->irr) <<
32), irr_steps);
difwr = (u64)(input_frame_width - 1 - inw) - div;
- div = _do_div((difwr + (((u64)input_f) << 32)), 2);
+ div = div_u64((difwr + (((u64)input_f) << 32)), 2);
left->input_column = truncate(0, div, input_f);
/* This splits the truncated input columns evenly */
diff --git a/drivers/mxc/ipu3/ipu_common.c b/drivers/mxc/ipu3/ipu_common.c
index 0a92aaeaa3a7..563d5320cc9d 100644
--- a/drivers/mxc/ipu3/ipu_common.c
+++ b/drivers/mxc/ipu3/ipu_common.c
@@ -2192,7 +2192,8 @@ int32_t ipu_disable_channel(struct ipu_soc *ipu, ipu_channel_t channel, bool wai
}
}
}
- } else if (wait_for_stop && !_ipu_is_smfc_chan(out_dma)) {
+ } else if (wait_for_stop && !_ipu_is_smfc_chan(out_dma) &&
+ channel != CSI_PRP_VF_MEM && channel != CSI_PRP_ENC_MEM) {
while (idma_is_set(ipu, IDMAC_CHA_BUSY, in_dma) ||
idma_is_set(ipu, IDMAC_CHA_BUSY, out_dma) ||
(ipu->sec_chan_en[IPU_CHAN_ID(channel)] &&