return ret;
 }
 
-int wl12xx_acx_wake_up_conditions(struct wl12xx *wl, u8 listen_interval)
+int wl12xx_acx_wake_up_conditions(struct wl12xx *wl, u8 wake_up_event,
+                                 u8 listen_interval)
 {
        struct acx_wake_up_condition *wake_up;
        int ret;
                goto out;
        }
 
-       wake_up->wake_up_event = WAKE_UP_EVENT_DTIM_BITMAP;
+       wake_up->wake_up_event = wake_up_event;
        wake_up->listen_interval = listen_interval;
 
        ret = wl12xx_cmd_configure(wl, ACX_WAKE_UP_CONDITIONS,
 
                           u8 mgt_rate, u8 mgt_mod);
 int wl12xx_acx_station_id(struct wl12xx *wl);
 int wl12xx_acx_default_key(struct wl12xx *wl, u8 key_id);
-int wl12xx_acx_wake_up_conditions(struct wl12xx *wl, u8 listen_interval);
+int wl12xx_acx_wake_up_conditions(struct wl12xx *wl, u8 wake_up_event,
+                                 u8 listen_interval);
 int wl12xx_acx_sleep_auth(struct wl12xx *wl, u8 sleep_auth);
 int wl12xx_acx_fw_version(struct wl12xx *wl, char *buf, size_t len);
 int wl12xx_acx_tx_power(struct wl12xx *wl, int power);
 
        int ret = 0;
 
        /* FIXME: this should be in ps.c */
-       ret = wl12xx_acx_wake_up_conditions(wl, wl->listen_int);
+       ret = wl12xx_acx_wake_up_conditions(wl, WAKE_UP_EVENT_DTIM_BITMAP,
+                                           wl->listen_int);
        if (ret < 0) {
                wl12xx_error("couldn't set wake up conditions");
                goto out;