mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-18 02:46:06 +00:00
ASoC/soundwire: intel: pass hdac_bus pointer for link management
The hdac_bus pointer is used to access the extended link information and handle power management. Pass it from the SOF driver down to the auxiliary devices. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Rander Wang <rander.wang@intel.com> Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Acked-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20230515071042.2038-7-yung-chuan.liao@linux.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
e40e0e11fe
commit
881cf1e9df
@ -4,6 +4,8 @@
|
||||
#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.
|
||||
@ -23,6 +25,7 @@
|
||||
* @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;
|
||||
@ -42,6 +45,7 @@ struct sdw_intel_link_res {
|
||||
u32 link_mask;
|
||||
struct sdw_cdns *cdns;
|
||||
struct list_head list;
|
||||
struct hdac_bus *hbus;
|
||||
};
|
||||
|
||||
struct sdw_intel {
|
||||
|
@ -84,6 +84,8 @@ static struct sdw_intel_link_dev *intel_link_dev_register(struct sdw_intel_res *
|
||||
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) {
|
||||
|
@ -269,6 +269,8 @@ struct sdw_intel_slave_id {
|
||||
struct sdw_slave_id id;
|
||||
};
|
||||
|
||||
struct hdac_bus;
|
||||
|
||||
/**
|
||||
* struct sdw_intel_ctx - context allocated by the controller
|
||||
* driver probe
|
||||
@ -324,6 +326,7 @@ struct sdw_intel_ctx {
|
||||
* @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;
|
||||
@ -339,6 +342,7 @@ struct sdw_intel_res {
|
||||
u32 shim_base;
|
||||
u32 alh_base;
|
||||
bool ext;
|
||||
struct hdac_bus *hbus;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -189,6 +189,7 @@ static int hda_sdw_probe(struct snd_sof_dev *sdev)
|
||||
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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user