#ifndef __SDW_INTEL_LOCAL_H
 #define __SDW_INTEL_LOCAL_H
 
+struct hdac_bus;
+
 /**
  * struct sdw_intel_link_res - Soundwire Intel link resource structure,
  * typically populated by the controller driver.
  * @link_mask: global mask needed for power-up/down sequences
  * @cdns: Cadence master descriptor
  * @list: used to walk-through all masters exposed by the same controller
+ * @hbus: hdac_bus pointer, needed for power management
  */
 struct sdw_intel_link_res {
        const struct sdw_intel_hw_ops *hw_ops;
        u32 link_mask;
        struct sdw_cdns *cdns;
        struct list_head list;
+       struct hdac_bus *hbus;
 };
 
 struct sdw_intel {
 
        link->shim_mask = &ctx->shim_mask;
        link->link_mask = ctx->link_mask;
 
+       link->hbus = res->hbus;
+
        /* now follow the two-step init/add sequence */
        ret = auxiliary_device_init(auxdev);
        if (ret < 0) {
 
        struct sdw_slave_id id;
 };
 
+struct hdac_bus;
+
 /**
  * struct sdw_intel_ctx - context allocated by the controller
  * driver probe
  * @shim_base: sdw shim base.
  * @alh_base: sdw alh base.
  * @ext: extended HDaudio link support
+ * @hbus: hdac_bus pointer, needed for power management
  */
 struct sdw_intel_res {
        const struct sdw_intel_hw_ops *hw_ops;
        u32 shim_base;
        u32 alh_base;
        bool ext;
+       struct hdac_bus *hbus;
 };
 
 /*
 
        res.ops = &sdw_callback;
        res.dev = sdev->dev;
        res.clock_stop_quirks = sdw_clock_stop_quirks;
+       res.hbus = sof_to_bus(sdev);
 
        /*
         * ops and arg fields are not populated for now,