Browse Source

Merge branch 'imx/fixes' of git://git.pengutronix.de/git/imx/linux-2.6 into fixes

* 'imx/fixes' of git://git.pengutronix.de/git/imx/linux-2.6:
  ARM i.MX imx21ads: Fix overlapping static i/o mappings
  ARM i.MX27 Visstrim M10: fix gpio handling.
  ARM: imx: only call l2x0_init if it's available
  ARM: imx: only specify i2c device type once
  ARM: mx31_3ds: Fix build due to missing IMX_HAVE_PLATFORM_IMX_SSI
Olof Johansson 13 years ago
parent
commit
6f4b3bf5dc

+ 1 - 0
arch/arm/mach-imx/Kconfig

@@ -477,6 +477,7 @@ config MACH_MX31_3DS
 	select IMX_HAVE_PLATFORM_IMX2_WDT
 	select IMX_HAVE_PLATFORM_IMX2_WDT
 	select IMX_HAVE_PLATFORM_IMX_I2C
 	select IMX_HAVE_PLATFORM_IMX_I2C
 	select IMX_HAVE_PLATFORM_IMX_KEYPAD
 	select IMX_HAVE_PLATFORM_IMX_KEYPAD
+	select IMX_HAVE_PLATFORM_IMX_SSI
 	select IMX_HAVE_PLATFORM_IMX_UART
 	select IMX_HAVE_PLATFORM_IMX_UART
 	select IMX_HAVE_PLATFORM_IPU_CORE
 	select IMX_HAVE_PLATFORM_IPU_CORE
 	select IMX_HAVE_PLATFORM_MXC_EHCI
 	select IMX_HAVE_PLATFORM_MXC_EHCI

+ 0 - 1
arch/arm/mach-imx/mach-cpuimx35.c

@@ -70,7 +70,6 @@ static struct i2c_board_info eukrea_cpuimx35_i2c_devices[] = {
 		I2C_BOARD_INFO("pcf8563", 0x51),
 		I2C_BOARD_INFO("pcf8563", 0x51),
 	}, {
 	}, {
 		I2C_BOARD_INFO("tsc2007", 0x48),
 		I2C_BOARD_INFO("tsc2007", 0x48),
-		.type		= "tsc2007",
 		.platform_data	= &tsc2007_info,
 		.platform_data	= &tsc2007_info,
 		.irq		= IMX_GPIO_TO_IRQ(TSC2007_IRQGPIO),
 		.irq		= IMX_GPIO_TO_IRQ(TSC2007_IRQGPIO),
 	},
 	},

+ 0 - 1
arch/arm/mach-imx/mach-cpuimx51sd.c

@@ -142,7 +142,6 @@ static struct i2c_board_info eukrea_cpuimx51sd_i2c_devices[] = {
 		I2C_BOARD_INFO("pcf8563", 0x51),
 		I2C_BOARD_INFO("pcf8563", 0x51),
 	}, {
 	}, {
 		I2C_BOARD_INFO("tsc2007", 0x49),
 		I2C_BOARD_INFO("tsc2007", 0x49),
-		.type		= "tsc2007",
 		.platform_data	= &tsc2007_info,
 		.platform_data	= &tsc2007_info,
 	},
 	},
 };
 };

+ 25 - 11
arch/arm/mach-imx/mach-imx27_visstrim_m10.c

@@ -116,6 +116,8 @@ static const int visstrim_m10_pins[] __initconst = {
 	PB23_PF_USB_PWR,
 	PB23_PF_USB_PWR,
 	PB24_PF_USB_OC,
 	PB24_PF_USB_OC,
 	/* CSI */
 	/* CSI */
+	TVP5150_RSTN | GPIO_GPIO | GPIO_OUT,
+	TVP5150_PWDN | GPIO_GPIO | GPIO_OUT,
 	PB10_PF_CSI_D0,
 	PB10_PF_CSI_D0,
 	PB11_PF_CSI_D1,
 	PB11_PF_CSI_D1,
 	PB12_PF_CSI_D2,
 	PB12_PF_CSI_D2,
@@ -147,6 +149,24 @@ static struct gpio visstrim_m10_version_gpios[] = {
 	{ MOTHERBOARD_BIT2, GPIOF_IN, "mother-version-2" },
 	{ MOTHERBOARD_BIT2, GPIOF_IN, "mother-version-2" },
 };
 };
 
 
+static const struct gpio visstrim_m10_gpios[] __initconst = {
+	{
+		.gpio = TVP5150_RSTN,
+		.flags = GPIOF_DIR_OUT | GPIOF_INIT_HIGH,
+		.label = "tvp5150_rstn",
+	},
+	{
+		.gpio = TVP5150_PWDN,
+		.flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW,
+		.label = "tvp5150_pwdn",
+	},
+	{
+		.gpio = OTG_PHY_CS_GPIO,
+		.flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW,
+		.label = "usbotg_cs",
+	},
+};
+
 /* Camera */
 /* Camera */
 static int visstrim_camera_power(struct device *dev, int on)
 static int visstrim_camera_power(struct device *dev, int on)
 {
 {
@@ -190,13 +210,6 @@ static void __init visstrim_camera_init(void)
 	struct platform_device *pdev;
 	struct platform_device *pdev;
 	int dma;
 	int dma;
 
 
-	/* Initialize tvp5150 gpios */
-	mxc_gpio_mode(TVP5150_RSTN | GPIO_GPIO | GPIO_OUT);
-	mxc_gpio_mode(TVP5150_PWDN | GPIO_GPIO | GPIO_OUT);
-	gpio_set_value(TVP5150_RSTN, 1);
-	gpio_set_value(TVP5150_PWDN, 0);
-	ndelay(1);
-
 	gpio_set_value(TVP5150_PWDN, 1);
 	gpio_set_value(TVP5150_PWDN, 1);
 	ndelay(1);
 	ndelay(1);
 	gpio_set_value(TVP5150_RSTN, 0);
 	gpio_set_value(TVP5150_RSTN, 0);
@@ -377,10 +390,6 @@ static struct i2c_board_info visstrim_m10_i2c_devices[] = {
 /* USB OTG */
 /* USB OTG */
 static int otg_phy_init(struct platform_device *pdev)
 static int otg_phy_init(struct platform_device *pdev)
 {
 {
-	gpio_set_value(OTG_PHY_CS_GPIO, 0);
-
-	mdelay(10);
-
 	return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED);
 	return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED);
 }
 }
 
 
@@ -435,6 +444,11 @@ static void __init visstrim_m10_board_init(void)
 	if (ret)
 	if (ret)
 		pr_err("Failed to setup pins (%d)\n", ret);
 		pr_err("Failed to setup pins (%d)\n", ret);
 
 
+	ret = gpio_request_array(visstrim_m10_gpios,
+				ARRAY_SIZE(visstrim_m10_gpios));
+	if (ret)
+		pr_err("Failed to request gpios (%d)\n", ret);
+
 	imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata);
 	imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata);
 	imx27_add_imx_uart0(&uart_pdata);
 	imx27_add_imx_uart0(&uart_pdata);
 
 

+ 1 - 1
arch/arm/mach-imx/mach-mx21ads.c

@@ -32,7 +32,7 @@
  * Memory-mapped I/O on MX21ADS base board
  * Memory-mapped I/O on MX21ADS base board
  */
  */
 #define MX21ADS_MMIO_BASE_ADDR   0xf5000000
 #define MX21ADS_MMIO_BASE_ADDR   0xf5000000
-#define MX21ADS_MMIO_SIZE        SZ_16M
+#define MX21ADS_MMIO_SIZE        0xc00000
 
 
 #define MX21ADS_REG_ADDR(offset)    (void __force __iomem *) \
 #define MX21ADS_REG_ADDR(offset)    (void __force __iomem *) \
 		(MX21ADS_MMIO_BASE_ADDR + (offset))
 		(MX21ADS_MMIO_BASE_ADDR + (offset))

+ 2 - 0
arch/arm/mach-imx/mm-imx3.c

@@ -86,6 +86,7 @@ static void __iomem *imx3_ioremap_caller(unsigned long phys_addr, size_t size,
 
 
 void __init imx3_init_l2x0(void)
 void __init imx3_init_l2x0(void)
 {
 {
+#ifdef CONFIG_CACHE_L2X0
 	void __iomem *l2x0_base;
 	void __iomem *l2x0_base;
 	void __iomem *clkctl_base;
 	void __iomem *clkctl_base;
 
 
@@ -115,6 +116,7 @@ void __init imx3_init_l2x0(void)
 	}
 	}
 
 
 	l2x0_init(l2x0_base, 0x00030024, 0x00000000);
 	l2x0_init(l2x0_base, 0x00030024, 0x00000000);
+#endif
 }
 }
 
 
 #ifdef CONFIG_SOC_IMX31
 #ifdef CONFIG_SOC_IMX31