static void lis3lv02d_8b_configure(struct lis3lv02d *dev,
                                struct lis3lv02d_platform_data *p)
 {
+       int ctrl2 = p->hipass_ctrl;
+
        if (p->click_flags) {
                dev->write(dev, CLICK_CFG, p->click_flags);
                dev->write(dev, CLICK_TIMELIMIT, p->click_time_limit);
                dev->write(dev, FF_WU_THS_1, p->wakeup_thresh & 0x7f);
                /* default to 2.5ms for now */
                dev->write(dev, FF_WU_DURATION_1, 1);
-               /* enable high pass filter for both free-fall units */
-               dev->write(dev, CTRL_REG2, HP_FF_WU1 | HP_FF_WU2);
+               ctrl2 ^= HP_FF_WU1; /* Xor to keep compatible with old pdata*/
+       }
+
+       if (p->wakeup_flags2) {
+               dev->write(dev, FF_WU_CFG_2, p->wakeup_flags2);
+               dev->write(dev, FF_WU_THS_2, p->wakeup_thresh2 & 0x7f);
+               /* default to 2.5ms for now */
+               dev->write(dev, FF_WU_DURATION_2, 1);
+               ctrl2 ^= HP_FF_WU2; /* Xor to keep compatible with old pdata*/
        }
+       /* Configure hipass filters */
+       dev->write(dev, CTRL_REG2, ctrl2);
 }
 
 /*
 
 #define LIS3_WAKEUP_Z_HI       (1 << 5)
        unsigned char wakeup_flags;
        unsigned char wakeup_thresh;
+       unsigned char wakeup_flags2;
+       unsigned char wakeup_thresh2;
+#define LIS3_HIPASS_CUTFF_8HZ   0
+#define LIS3_HIPASS_CUTFF_4HZ   1
+#define LIS3_HIPASS_CUTFF_2HZ   2
+#define LIS3_HIPASS_CUTFF_1HZ   3
+#define LIS3_HIPASS1_DISABLE    (1 << 2)
+#define LIS3_HIPASS2_DISABLE    (1 << 3)
+       unsigned char hipass_ctrl;
 #define LIS3_NO_MAP            0
 #define LIS3_DEV_X             1
 #define LIS3_DEV_Y             2