Commit ec8ae570 authored by Vinod Koul's avatar Vinod Koul Committed by Takashi Iwai

ALSA: convert users to core bus_parse_capabilities

Now that we have the bus parse capabilities moved to core, we need to
convert users.

The SKL driver and HDA extended lib needs to converted in single patch,
otherwise we regress on the functionality.
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 6720b384
...@@ -118,15 +118,15 @@ void snd_hdac_ext_bus_ppcap_enable(struct hdac_ext_bus *ebus, bool enable) ...@@ -118,15 +118,15 @@ void snd_hdac_ext_bus_ppcap_enable(struct hdac_ext_bus *ebus, bool enable)
{ {
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (!ebus->ppcap) { if (!bus->ppcap) {
dev_err(bus->dev, "Address of PP capability is NULL"); dev_err(bus->dev, "Address of PP capability is NULL");
return; return;
} }
if (enable) if (enable)
snd_hdac_updatel(ebus->ppcap, AZX_REG_PP_PPCTL, 0, AZX_PPCTL_GPROCEN); snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, 0, AZX_PPCTL_GPROCEN);
else else
snd_hdac_updatel(ebus->ppcap, AZX_REG_PP_PPCTL, AZX_PPCTL_GPROCEN, 0); snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, AZX_PPCTL_GPROCEN, 0);
} }
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_ppcap_enable); EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_ppcap_enable);
...@@ -139,15 +139,15 @@ void snd_hdac_ext_bus_ppcap_int_enable(struct hdac_ext_bus *ebus, bool enable) ...@@ -139,15 +139,15 @@ void snd_hdac_ext_bus_ppcap_int_enable(struct hdac_ext_bus *ebus, bool enable)
{ {
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (!ebus->ppcap) { if (!bus->ppcap) {
dev_err(bus->dev, "Address of PP capability is NULL\n"); dev_err(bus->dev, "Address of PP capability is NULL\n");
return; return;
} }
if (enable) if (enable)
snd_hdac_updatel(ebus->ppcap, AZX_REG_PP_PPCTL, 0, AZX_PPCTL_PIE); snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, 0, AZX_PPCTL_PIE);
else else
snd_hdac_updatel(ebus->ppcap, AZX_REG_PP_PPCTL, AZX_PPCTL_PIE, 0); snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, AZX_PPCTL_PIE, 0);
} }
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_ppcap_int_enable); EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_ppcap_int_enable);
...@@ -171,7 +171,7 @@ int snd_hdac_ext_bus_get_ml_capabilities(struct hdac_ext_bus *ebus) ...@@ -171,7 +171,7 @@ int snd_hdac_ext_bus_get_ml_capabilities(struct hdac_ext_bus *ebus)
struct hdac_ext_link *hlink; struct hdac_ext_link *hlink;
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
link_count = readl(ebus->mlcap + AZX_REG_ML_MLCD) + 1; link_count = readl(bus->mlcap + AZX_REG_ML_MLCD) + 1;
dev_dbg(bus->dev, "In %s Link count: %d\n", __func__, link_count); dev_dbg(bus->dev, "In %s Link count: %d\n", __func__, link_count);
...@@ -181,7 +181,7 @@ int snd_hdac_ext_bus_get_ml_capabilities(struct hdac_ext_bus *ebus) ...@@ -181,7 +181,7 @@ int snd_hdac_ext_bus_get_ml_capabilities(struct hdac_ext_bus *ebus)
return -ENOMEM; return -ENOMEM;
hlink->index = idx; hlink->index = idx;
hlink->bus = bus; hlink->bus = bus;
hlink->ml_addr = ebus->mlcap + AZX_ML_BASE + hlink->ml_addr = bus->mlcap + AZX_ML_BASE +
(AZX_ML_INTERVAL * idx); (AZX_ML_INTERVAL * idx);
hlink->lcaps = readl(hlink->ml_addr + AZX_REG_ML_LCAP); hlink->lcaps = readl(hlink->ml_addr + AZX_REG_ML_LCAP);
hlink->lsdiid = readw(hlink->ml_addr + AZX_REG_ML_LSDIID); hlink->lsdiid = readw(hlink->ml_addr + AZX_REG_ML_LSDIID);
......
...@@ -40,27 +40,27 @@ void snd_hdac_ext_stream_init(struct hdac_ext_bus *ebus, ...@@ -40,27 +40,27 @@ void snd_hdac_ext_stream_init(struct hdac_ext_bus *ebus,
{ {
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (ebus->ppcap) { if (bus->ppcap) {
stream->pphc_addr = ebus->ppcap + AZX_PPHC_BASE + stream->pphc_addr = bus->ppcap + AZX_PPHC_BASE +
AZX_PPHC_INTERVAL * idx; AZX_PPHC_INTERVAL * idx;
stream->pplc_addr = ebus->ppcap + AZX_PPLC_BASE + stream->pplc_addr = bus->ppcap + AZX_PPLC_BASE +
AZX_PPLC_MULTI * ebus->num_streams + AZX_PPLC_MULTI * ebus->num_streams +
AZX_PPLC_INTERVAL * idx; AZX_PPLC_INTERVAL * idx;
} }
if (ebus->spbcap) { if (bus->spbcap) {
stream->spib_addr = ebus->spbcap + AZX_SPB_BASE + stream->spib_addr = bus->spbcap + AZX_SPB_BASE +
AZX_SPB_INTERVAL * idx + AZX_SPB_INTERVAL * idx +
AZX_SPB_SPIB; AZX_SPB_SPIB;
stream->fifo_addr = ebus->spbcap + AZX_SPB_BASE + stream->fifo_addr = bus->spbcap + AZX_SPB_BASE +
AZX_SPB_INTERVAL * idx + AZX_SPB_INTERVAL * idx +
AZX_SPB_MAXFIFO; AZX_SPB_MAXFIFO;
} }
if (ebus->drsmcap) if (bus->drsmcap)
stream->dpibr_addr = ebus->drsmcap + AZX_DRSM_BASE + stream->dpibr_addr = bus->drsmcap + AZX_DRSM_BASE +
AZX_DRSM_INTERVAL * idx; AZX_DRSM_INTERVAL * idx;
stream->decoupled = false; stream->decoupled = false;
...@@ -131,10 +131,10 @@ void snd_hdac_ext_stream_decouple(struct hdac_ext_bus *ebus, ...@@ -131,10 +131,10 @@ void snd_hdac_ext_stream_decouple(struct hdac_ext_bus *ebus,
spin_lock_irq(&bus->reg_lock); spin_lock_irq(&bus->reg_lock);
if (decouple) if (decouple)
snd_hdac_updatel(ebus->ppcap, AZX_REG_PP_PPCTL, 0, snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, 0,
AZX_PPCTL_PROCEN(hstream->index)); AZX_PPCTL_PROCEN(hstream->index));
else else
snd_hdac_updatel(ebus->ppcap, AZX_REG_PP_PPCTL, snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL,
AZX_PPCTL_PROCEN(hstream->index), 0); AZX_PPCTL_PROCEN(hstream->index), 0);
stream->decoupled = decouple; stream->decoupled = decouple;
spin_unlock_irq(&bus->reg_lock); spin_unlock_irq(&bus->reg_lock);
...@@ -255,7 +255,7 @@ hdac_ext_link_stream_assign(struct hdac_ext_bus *ebus, ...@@ -255,7 +255,7 @@ hdac_ext_link_stream_assign(struct hdac_ext_bus *ebus,
struct hdac_stream *stream = NULL; struct hdac_stream *stream = NULL;
struct hdac_bus *hbus = &ebus->bus; struct hdac_bus *hbus = &ebus->bus;
if (!ebus->ppcap) { if (!hbus->ppcap) {
dev_err(hbus->dev, "stream type not supported\n"); dev_err(hbus->dev, "stream type not supported\n");
return NULL; return NULL;
} }
...@@ -296,7 +296,7 @@ hdac_ext_host_stream_assign(struct hdac_ext_bus *ebus, ...@@ -296,7 +296,7 @@ hdac_ext_host_stream_assign(struct hdac_ext_bus *ebus,
struct hdac_stream *stream = NULL; struct hdac_stream *stream = NULL;
struct hdac_bus *hbus = &ebus->bus; struct hdac_bus *hbus = &ebus->bus;
if (!ebus->ppcap) { if (!hbus->ppcap) {
dev_err(hbus->dev, "stream type not supported\n"); dev_err(hbus->dev, "stream type not supported\n");
return NULL; return NULL;
} }
...@@ -423,21 +423,21 @@ void snd_hdac_ext_stream_spbcap_enable(struct hdac_ext_bus *ebus, ...@@ -423,21 +423,21 @@ void snd_hdac_ext_stream_spbcap_enable(struct hdac_ext_bus *ebus,
u32 register_mask = 0; u32 register_mask = 0;
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (!ebus->spbcap) { if (!bus->spbcap) {
dev_err(bus->dev, "Address of SPB capability is NULL"); dev_err(bus->dev, "Address of SPB capability is NULL");
return; return;
} }
mask |= (1 << index); mask |= (1 << index);
register_mask = readl(ebus->spbcap + AZX_REG_SPB_SPBFCCTL); register_mask = readl(bus->spbcap + AZX_REG_SPB_SPBFCCTL);
mask |= register_mask; mask |= register_mask;
if (enable) if (enable)
snd_hdac_updatel(ebus->spbcap, AZX_REG_SPB_SPBFCCTL, 0, mask); snd_hdac_updatel(bus->spbcap, AZX_REG_SPB_SPBFCCTL, 0, mask);
else else
snd_hdac_updatel(ebus->spbcap, AZX_REG_SPB_SPBFCCTL, mask, 0); snd_hdac_updatel(bus->spbcap, AZX_REG_SPB_SPBFCCTL, mask, 0);
} }
EXPORT_SYMBOL_GPL(snd_hdac_ext_stream_spbcap_enable); EXPORT_SYMBOL_GPL(snd_hdac_ext_stream_spbcap_enable);
...@@ -452,7 +452,7 @@ int snd_hdac_ext_stream_set_spib(struct hdac_ext_bus *ebus, ...@@ -452,7 +452,7 @@ int snd_hdac_ext_stream_set_spib(struct hdac_ext_bus *ebus,
{ {
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (!ebus->spbcap) { if (!bus->spbcap) {
dev_err(bus->dev, "Address of SPB capability is NULL"); dev_err(bus->dev, "Address of SPB capability is NULL");
return -EINVAL; return -EINVAL;
} }
...@@ -475,7 +475,7 @@ int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_ext_bus *ebus, ...@@ -475,7 +475,7 @@ int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_ext_bus *ebus,
{ {
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (!ebus->spbcap) { if (!bus->spbcap) {
dev_err(bus->dev, "Address of SPB capability is NULL"); dev_err(bus->dev, "Address of SPB capability is NULL");
return -EINVAL; return -EINVAL;
} }
...@@ -515,21 +515,21 @@ void snd_hdac_ext_stream_drsm_enable(struct hdac_ext_bus *ebus, ...@@ -515,21 +515,21 @@ void snd_hdac_ext_stream_drsm_enable(struct hdac_ext_bus *ebus,
u32 register_mask = 0; u32 register_mask = 0;
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (!ebus->drsmcap) { if (!bus->drsmcap) {
dev_err(bus->dev, "Address of DRSM capability is NULL"); dev_err(bus->dev, "Address of DRSM capability is NULL");
return; return;
} }
mask |= (1 << index); mask |= (1 << index);
register_mask = readl(ebus->drsmcap + AZX_REG_SPB_SPBFCCTL); register_mask = readl(bus->drsmcap + AZX_REG_SPB_SPBFCCTL);
mask |= register_mask; mask |= register_mask;
if (enable) if (enable)
snd_hdac_updatel(ebus->drsmcap, AZX_REG_DRSM_CTL, 0, mask); snd_hdac_updatel(bus->drsmcap, AZX_REG_DRSM_CTL, 0, mask);
else else
snd_hdac_updatel(ebus->drsmcap, AZX_REG_DRSM_CTL, mask, 0); snd_hdac_updatel(bus->drsmcap, AZX_REG_DRSM_CTL, mask, 0);
} }
EXPORT_SYMBOL_GPL(snd_hdac_ext_stream_drsm_enable); EXPORT_SYMBOL_GPL(snd_hdac_ext_stream_drsm_enable);
...@@ -544,7 +544,7 @@ int snd_hdac_ext_stream_set_dpibr(struct hdac_ext_bus *ebus, ...@@ -544,7 +544,7 @@ int snd_hdac_ext_stream_set_dpibr(struct hdac_ext_bus *ebus,
{ {
struct hdac_bus *bus = &ebus->bus; struct hdac_bus *bus = &ebus->bus;
if (!ebus->drsmcap) { if (!bus->drsmcap) {
dev_err(bus->dev, "Address of DRSM capability is NULL"); dev_err(bus->dev, "Address of DRSM capability is NULL");
return -EINVAL; return -EINVAL;
} }
......
...@@ -296,7 +296,7 @@ int skl_suspend_dsp(struct skl *skl) ...@@ -296,7 +296,7 @@ int skl_suspend_dsp(struct skl *skl)
int ret; int ret;
/* if ppcap is not supported return 0 */ /* if ppcap is not supported return 0 */
if (!skl->ebus.ppcap) if (!skl->ebus.bus.ppcap)
return 0; return 0;
ret = skl_dsp_sleep(ctx->dsp); ret = skl_dsp_sleep(ctx->dsp);
...@@ -316,7 +316,7 @@ int skl_resume_dsp(struct skl *skl) ...@@ -316,7 +316,7 @@ int skl_resume_dsp(struct skl *skl)
int ret; int ret;
/* if ppcap is not supported return 0 */ /* if ppcap is not supported return 0 */
if (!skl->ebus.ppcap) if (!skl->ebus.bus.ppcap)
return 0; return 0;
/* enable ppcap interrupt */ /* enable ppcap interrupt */
......
...@@ -106,7 +106,7 @@ static void skl_set_pcm_constrains(struct hdac_ext_bus *ebus, ...@@ -106,7 +106,7 @@ static void skl_set_pcm_constrains(struct hdac_ext_bus *ebus,
static enum hdac_ext_stream_type skl_get_host_stream_type(struct hdac_ext_bus *ebus) static enum hdac_ext_stream_type skl_get_host_stream_type(struct hdac_ext_bus *ebus)
{ {
if (ebus->ppcap) if ((ebus_to_hbus(ebus))->ppcap)
return HDAC_EXT_STREAM_TYPE_HOST; return HDAC_EXT_STREAM_TYPE_HOST;
else else
return HDAC_EXT_STREAM_TYPE_COUPLED; return HDAC_EXT_STREAM_TYPE_COUPLED;
...@@ -188,7 +188,7 @@ static int skl_get_format(struct snd_pcm_substream *substream, ...@@ -188,7 +188,7 @@ static int skl_get_format(struct snd_pcm_substream *substream,
struct hdac_ext_bus *ebus = dev_get_drvdata(dai->dev); struct hdac_ext_bus *ebus = dev_get_drvdata(dai->dev);
int format_val = 0; int format_val = 0;
if (ebus->ppcap) { if ((ebus_to_hbus(ebus))->ppcap) {
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
format_val = snd_hdac_calc_stream_format(runtime->rate, format_val = snd_hdac_calc_stream_format(runtime->rate,
...@@ -1020,7 +1020,7 @@ static int skl_platform_pcm_trigger(struct snd_pcm_substream *substream, ...@@ -1020,7 +1020,7 @@ static int skl_platform_pcm_trigger(struct snd_pcm_substream *substream,
{ {
struct hdac_ext_bus *ebus = get_bus_ctx(substream); struct hdac_ext_bus *ebus = get_bus_ctx(substream);
if (!ebus->ppcap) if ((ebus_to_hbus(ebus))->ppcap)
return skl_coupled_trigger(substream, cmd); return skl_coupled_trigger(substream, cmd);
return 0; return 0;
...@@ -1144,7 +1144,7 @@ static int skl_platform_soc_probe(struct snd_soc_platform *platform) ...@@ -1144,7 +1144,7 @@ static int skl_platform_soc_probe(struct snd_soc_platform *platform)
struct skl *skl = ebus_to_skl(ebus); struct skl *skl = ebus_to_skl(ebus);
int ret; int ret;
if (ebus->ppcap) { if ((ebus_to_hbus(ebus))->ppcap) {
ret = skl_tplg_init(platform, ebus); ret = skl_tplg_init(platform, ebus);
if (ret < 0) { if (ret < 0) {
dev_err(platform->dev, "Failed to init topology!\n"); dev_err(platform->dev, "Failed to init topology!\n");
......
...@@ -587,7 +587,7 @@ static int skl_first_init(struct hdac_ext_bus *ebus) ...@@ -587,7 +587,7 @@ static int skl_first_init(struct hdac_ext_bus *ebus)
return -ENXIO; return -ENXIO;
} }
snd_hdac_ext_bus_parse_capabilities(ebus); snd_hdac_bus_parse_capabilities(bus);
if (skl_acquire_irq(ebus, 0) < 0) if (skl_acquire_irq(ebus, 0) < 0)
return -EBUSY; return -EBUSY;
...@@ -682,7 +682,7 @@ static int skl_probe(struct pci_dev *pci, ...@@ -682,7 +682,7 @@ static int skl_probe(struct pci_dev *pci,
skl_dmic_data.dmic_num = skl_get_dmic_geo(skl); skl_dmic_data.dmic_num = skl_get_dmic_geo(skl);
/* check if dsp is there */ /* check if dsp is there */
if (ebus->ppcap) { if (bus->ppcap) {
err = skl_machine_device_register(skl, err = skl_machine_device_register(skl,
(void *)pci_id->driver_data); (void *)pci_id->driver_data);
if (err < 0) if (err < 0)
...@@ -696,7 +696,7 @@ static int skl_probe(struct pci_dev *pci, ...@@ -696,7 +696,7 @@ static int skl_probe(struct pci_dev *pci,
skl->skl_sst->enable_miscbdcge = skl_enable_miscbdcge; skl->skl_sst->enable_miscbdcge = skl_enable_miscbdcge;
} }
if (ebus->mlcap) if (bus->mlcap)
snd_hdac_ext_bus_get_ml_capabilities(ebus); snd_hdac_ext_bus_get_ml_capabilities(ebus);
/* create device for soc dmic */ /* create device for soc dmic */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment