]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00174229-1 mx6q sabresd: add sensors devices
authorXinyu Chen <b03824@freescale.com>
Fri, 10 Feb 2012 07:58:02 +0000 (15:58 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:33:59 +0000 (08:33 +0200)
Add 3-axis accelerometer (mma8451) device.
Add Digital Magnetometer (mag3110) device.
Add Ambient Light sensor (isl29023) device.

Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
arch/arm/mach-mx6/board-mx6q_sabresd.c

index 1121feacc72b93f2a68307420cdfc8515ba7d92a..1948600f0e138f6bb544f301faf9b9152309aa3e 100644 (file)
 #define MX6Q_SABRESD_MIPICSI_RST       IMX_GPIO_NR(1, 20)
 #define MX6Q_SABRESD_MIPICSI_PWN       IMX_GPIO_NR(1, 19)
 #define MX6Q_SABRESD_AUX_5V_EN         IMX_GPIO_NR(6, 10)
+#define MX6Q_SABRESD_SENSOR_EN         IMX_GPIO_NR(2, 31)
+#define MX6Q_SABRESD_eCOMPASS_INT      IMX_GPIO_NR(3, 16)
+#define MX6Q_SABRESD_ALS_INT           IMX_GPIO_NR(3, 9)
 
 void __init early_console_setup(unsigned long base, struct clk *clk);
 static struct clk *sata_clk;
+static int mma8451_position = 3;
+static int mag3110_position;
 
 extern char *gp_reg_id;
 
@@ -123,7 +128,6 @@ static iomux_v3_cfg_t mx6q_sabresd_pads[] = {
        /* ECSPI1 */
        MX6Q_PAD_EIM_D17__ECSPI1_MISO,
        MX6Q_PAD_EIM_D18__ECSPI1_MOSI,
-       MX6Q_PAD_EIM_D16__ECSPI1_SCLK,
        MX6Q_PAD_EIM_D19__GPIO_3_19,    /*SS1*/
 
        /* ENET */
@@ -188,6 +192,9 @@ static iomux_v3_cfg_t mx6q_sabresd_pads[] = {
        MX6Q_PAD_GPIO_4__GPIO_1_4,      /* Volume Up */
        MX6Q_PAD_GPIO_5__GPIO_1_5,      /* Volume Down */
 
+       /* eCompass int */
+       MX6Q_PAD_EIM_D16__GPIO_3_16,
+
        /* GPIO5 */
        MX6Q_PAD_EIM_WAIT__GPIO_5_0,    /* J12 - Boot Mode Select */
        MX6Q_PAD_EIM_A24__GPIO_5_4,     /* J12 - Boot Mode Select */
@@ -568,6 +575,10 @@ static struct imxi2c_platform_data mx6q_sabresd_i2c_data = {
        .bitrate = 100000,
 };
 
+static struct fsl_mxc_lightsensor_platform_data ls_data = {
+       .rext = 499,    /* calibration: 499K->700K */
+};
+
 static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
        {
                I2C_BOARD_INFO("sgtl5000", 0x0a),
@@ -576,6 +587,10 @@ static struct i2c_board_info mxc_i2c0_board_info[] __initdata = {
                I2C_BOARD_INFO("ov5642", 0x3c),
                .platform_data = (void *)&camera_data,
        },
+       {
+               I2C_BOARD_INFO("mma8451", 0x1c),
+               .platform_data = (void *)&mma8451_position,
+       },
 };
 
 static struct i2c_board_info mxc_i2c1_board_info[] __initdata = {
@@ -597,6 +612,16 @@ static struct i2c_board_info mxc_i2c2_board_info[] __initdata = {
                I2C_BOARD_INFO("egalax_ts", 0x4),
                .irq = gpio_to_irq(MX6Q_SABRESD_CAP_TCH_INT1),
        },
+       {
+               I2C_BOARD_INFO("mag3110", 0x0e),
+               .irq = gpio_to_irq(MX6Q_SABRESD_eCOMPASS_INT),
+               .platform_data = (void *)&mag3110_position,
+       },
+       {
+               I2C_BOARD_INFO("isl29023", 0x44),
+               .irq  = gpio_to_irq(MX6Q_SABRESD_ALS_INT),
+               .platform_data = &ls_data,
+       },
 };
 
 static void imx6q_sabresd_usbotg_vbus(bool on)
@@ -1083,15 +1108,28 @@ static void __init mx6_sabresd_board_init(void)
        imx6q_add_dvfs_core(&sabresd_dvfscore_data);
        mx6_cpu_regulator_init();
 
+       /* enable sensor 3v3 and 1v8 */
+       gpio_request(MX6Q_SABRESD_SENSOR_EN, "sensor-en");
+       gpio_direction_output(MX6Q_SABRESD_SENSOR_EN, 1);
+
+       /* enable ecompass intr */
+       gpio_request(MX6Q_SABRESD_eCOMPASS_INT, "ecompass-int");
+       gpio_direction_input(MX6Q_SABRESD_eCOMPASS_INT);
+       /* enable light sensor intr */
+       gpio_request(MX6Q_SABRESD_ALS_INT, "als-int");
+       gpio_direction_input(MX6Q_SABRESD_ALS_INT);
+
        imx6q_add_hdmi_soc();
        imx6q_add_hdmi_soc_dai();
 
+       /*
        ret = gpio_request_array(mx6q_sabresd_flexcan_gpios,
                        ARRAY_SIZE(mx6q_sabresd_flexcan_gpios));
        if (ret)
                pr_err("failed to request flexcan1-gpios: %d\n", ret);
        else
                imx6q_add_flexcan0(&mx6q_sabresd_flexcan0_pdata);
+       */
 
        clko2 = clk_get(NULL, "clko2_clk");
        if (IS_ERR(clko2))