diff options
author | guoyin.chen <guoyin.chen@freescale.com> | 2013-04-07 10:50:19 +0800 |
---|---|---|
committer | guoyin.chen <guoyin.chen@freescale.com> | 2013-04-07 10:50:19 +0800 |
commit | 7c8718a8d86182a1ea3ad6d89e2ff0201ca2a4a9 (patch) | |
tree | 353f54ee75b1ea2449213c936126b72ea11366ce | |
parent | 7e09444a91a1d439957a5cbe7a0b659c144ff653 (diff) | |
parent | 790715dfbc95afe64521f9d7ef60ef85c4a33849 (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_defconfig | 7 | ||||
-rw-r--r-- | arch/arm/mach-mx6/board-mx6q_hdmidongle.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-mx6/board-mx6q_sabreauto.c | 102 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/iomux-mx6dl.h | 48 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/iomux-mx6q.h | 48 | ||||
-rwxr-xr-x | drivers/input/touchscreen/Kconfig | 10 | ||||
-rw-r--r-- | drivers/media/video/mxc/capture/ipu_fg_overlay_sdc.c | 42 | ||||
-rw-r--r-- | drivers/mtd/chips/cfi_cmdset_0002.c | 4 | ||||
-rw-r--r-- | drivers/mtd/maps/Kconfig | 9 | ||||
-rw-r--r-- | drivers/mtd/maps/Makefile | 1 | ||||
-rw-r--r-- | drivers/mtd/maps/imx6x-weimnor.c | 299 | ||||
-rw-r--r-- | drivers/mxc/ipu/ipu_calc_stripes_sizes.c | 42 | ||||
-rw-r--r-- | drivers/mxc/ipu3/ipu_calc_stripes_sizes.c | 42 | ||||
-rw-r--r-- | drivers/mxc/ipu3/ipu_common.c | 3 |
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)] && |