int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
                     struct regmap *regmap)
 {
+       struct st_sensors_platform_data *pdata = dev->platform_data;
        const struct st_lsm6dsx_shub_settings *hub_settings;
+       struct device_node *np = dev->of_node;
        struct st_lsm6dsx_hw *hw;
        const char *name = NULL;
        int i, err;
                        return err;
        }
 
-       if (dev->of_node &&
-           of_property_read_bool(dev->of_node, "wakeup-source"))
+       if ((np && of_property_read_bool(np, "wakeup-source")) ||
+           (pdata && pdata->wakeup_source))
                device_init_wakeup(dev, true);
 
        return 0;
 
  * @open_drain: set the interrupt line to be open drain if possible.
  * @spi_3wire: enable spi-3wire mode.
  * @pullups: enable/disable i2c controller pullup resistors.
+ * @wakeup_source: enable/disable device as wakeup generator.
  */
 struct st_sensors_platform_data {
        u8 drdy_int_pin;
        bool open_drain;
        bool spi_3wire;
        bool pullups;
+       bool wakeup_source;
 };
 
 #endif /* ST_SENSORS_PDATA_H */