Patchwork ARM: mx53_loco: Add support for the accelerometer

login
register
mail settings
Submitter Fabio Estevam
Date Aug. 24, 2011, 8:31 p.m.
Message ID <1314217895-30699-1-git-send-email-fabio.estevam@freescale.com>
Download mbox | patch
Permalink /patch/111420/
State New
Headers show

Comments

Fabio Estevam - Aug. 24, 2011, 8:31 p.m.
mx53_loco has a MMA8450 accelerometer connected to i2c0.

Add support for it.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
 arch/arm/mach-mx5/board-mx53_loco.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
Sascha Hauer - Aug. 25, 2011, 6:43 a.m.
On Wed, Aug 24, 2011 at 05:31:35PM -0300, Fabio Estevam wrote:
> mx53_loco has a MMA8450 accelerometer connected to i2c0.
> 
> Add support for it.

Applied for next.

Sascha

> 
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
>  arch/arm/mach-mx5/board-mx53_loco.c |   20 ++++++++++++++++++++
>  1 files changed, 20 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-mx5/board-mx53_loco.c b/arch/arm/mach-mx5/board-mx53_loco.c
> index 4e1d51d..145f48e 100644
> --- a/arch/arm/mach-mx5/board-mx53_loco.c
> +++ b/arch/arm/mach-mx5/board-mx53_loco.c
> @@ -22,6 +22,7 @@
>  #include <linux/clk.h>
>  #include <linux/delay.h>
>  #include <linux/gpio.h>
> +#include <linux/i2c.h>
>  
>  #include <mach/common.h>
>  #include <mach/hardware.h>
> @@ -42,6 +43,7 @@
>  #define LOCO_SD3_CD			IMX_GPIO_NR(3, 11)
>  #define LOCO_SD3_WP			IMX_GPIO_NR(3, 12)
>  #define LOCO_SD1_CD			IMX_GPIO_NR(3, 13)
> +#define LOCO_ACCEL_EN			IMX_GPIO_NR(6, 14)
>  
>  static iomux_v3_cfg_t mx53_loco_pads[] = {
>  	/* FEC */
> @@ -64,6 +66,10 @@ static iomux_v3_cfg_t mx53_loco_pads[] = {
>  	MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,
>  	MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,
>  	MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,
> +	/* I2C1 */
> +	MX53_PAD_CSI0_DAT8__I2C1_SDA,
> +	MX53_PAD_CSI0_DAT9__I2C1_SCL,
> +	MX53_PAD_NANDF_CS1__GPIO6_14,	/* Accelerometer Enable */
>  	/* I2C2 */
>  	MX53_PAD_KEY_COL3__I2C2_SCL,
>  	MX53_PAD_KEY_ROW3__I2C2_SDA,
> @@ -257,8 +263,15 @@ static const struct gpio_led_platform_data mx53loco_leds_data __initconst = {
>  	.num_leds	= ARRAY_SIZE(mx53loco_leds),
>  };
>  
> +static struct i2c_board_info mx53loco_i2c_devices[] = {
> +	{
> +		I2C_BOARD_INFO("mma8450", 0x1C),
> +	},
> +};
> +
>  static void __init mx53_loco_board_init(void)
>  {
> +	int ret;
>  	imx53_soc_init();
>  
>  	mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,
> @@ -267,6 +280,13 @@ static void __init mx53_loco_board_init(void)
>  	mx53_loco_fec_reset();
>  	imx53_add_fec(&mx53_loco_fec_data);
>  	imx53_add_imx2_wdt(0, NULL);
> +
> +	ret = gpio_request_one(LOCO_ACCEL_EN, GPIOF_OUT_INIT_HIGH, "accel_en");
> +	if (ret)
> +		pr_err("Cannot request ACCEL_EN pin: %d\n", ret);
> +
> +	i2c_register_board_info(0, mx53loco_i2c_devices,
> +				ARRAY_SIZE(mx53loco_i2c_devices));
>  	imx53_add_imx_i2c(0, &mx53_loco_i2c_data);
>  	imx53_add_imx_i2c(1, &mx53_loco_i2c_data);
>  	imx53_add_sdhci_esdhc_imx(0, &mx53_loco_sd1_data);
> -- 
> 1.6.0.4
> 
> 
>

Patch

diff --git a/arch/arm/mach-mx5/board-mx53_loco.c b/arch/arm/mach-mx5/board-mx53_loco.c
index 4e1d51d..145f48e 100644
--- a/arch/arm/mach-mx5/board-mx53_loco.c
+++ b/arch/arm/mach-mx5/board-mx53_loco.c
@@ -22,6 +22,7 @@ 
 #include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/gpio.h>
+#include <linux/i2c.h>
 
 #include <mach/common.h>
 #include <mach/hardware.h>
@@ -42,6 +43,7 @@ 
 #define LOCO_SD3_CD			IMX_GPIO_NR(3, 11)
 #define LOCO_SD3_WP			IMX_GPIO_NR(3, 12)
 #define LOCO_SD1_CD			IMX_GPIO_NR(3, 13)
+#define LOCO_ACCEL_EN			IMX_GPIO_NR(6, 14)
 
 static iomux_v3_cfg_t mx53_loco_pads[] = {
 	/* FEC */
@@ -64,6 +66,10 @@  static iomux_v3_cfg_t mx53_loco_pads[] = {
 	MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,
 	MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,
 	MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,
+	/* I2C1 */
+	MX53_PAD_CSI0_DAT8__I2C1_SDA,
+	MX53_PAD_CSI0_DAT9__I2C1_SCL,
+	MX53_PAD_NANDF_CS1__GPIO6_14,	/* Accelerometer Enable */
 	/* I2C2 */
 	MX53_PAD_KEY_COL3__I2C2_SCL,
 	MX53_PAD_KEY_ROW3__I2C2_SDA,
@@ -257,8 +263,15 @@  static const struct gpio_led_platform_data mx53loco_leds_data __initconst = {
 	.num_leds	= ARRAY_SIZE(mx53loco_leds),
 };
 
+static struct i2c_board_info mx53loco_i2c_devices[] = {
+	{
+		I2C_BOARD_INFO("mma8450", 0x1C),
+	},
+};
+
 static void __init mx53_loco_board_init(void)
 {
+	int ret;
 	imx53_soc_init();
 
 	mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,
@@ -267,6 +280,13 @@  static void __init mx53_loco_board_init(void)
 	mx53_loco_fec_reset();
 	imx53_add_fec(&mx53_loco_fec_data);
 	imx53_add_imx2_wdt(0, NULL);
+
+	ret = gpio_request_one(LOCO_ACCEL_EN, GPIOF_OUT_INIT_HIGH, "accel_en");
+	if (ret)
+		pr_err("Cannot request ACCEL_EN pin: %d\n", ret);
+
+	i2c_register_board_info(0, mx53loco_i2c_devices,
+				ARRAY_SIZE(mx53loco_i2c_devices));
 	imx53_add_imx_i2c(0, &mx53_loco_i2c_data);
 	imx53_add_imx_i2c(1, &mx53_loco_i2c_data);
 	imx53_add_sdhci_esdhc_imx(0, &mx53_loco_sd1_data);