From: Rakesh Ughreja <rakesh.a.ughreja@intel.com>
To: alsa-devel@alsa-project.org, broonie@kernel.org, tiwai@suse.de,
liam.r.girdwood@linux.intel.com
Cc: vinod.koul@intel.com, patches.audio@intel.com,
Rakesh Ughreja <rakesh.a.ughreja@intel.com>,
pierre-louis.bossart@linux.intel.com
Subject: [RFC 04/10] ASoC: Intel: Skylake: use hda_bus instead of hdac_bus
Date: Fri, 1 Dec 2017 14:44:02 +0530 [thread overview]
Message-ID: <1512119648-2700-5-git-send-email-rakesh.a.ughreja@intel.com> (raw)
In-Reply-To: <1512119648-2700-1-git-send-email-rakesh.a.ughreja@intel.com>
This patch prepares SKL platform driver to make reuse of legacy HDA
codec drivers. It does following things.
use hda_bus instead of hdac_bus in the SKL platform driver to align
with the legacy controller driver.
modify snd_hdac_ext_bus_device_init definition to align with
snd_hdac_bus_device_init, used by legacy drivers.
Memory for hdac_device is allocated by the caller.
Signed-off-by: Rakesh Ughreja <rakesh.a.ughreja@intel.com>
---
include/sound/hdaudio_ext.h | 3 ++-
sound/hda/ext/hdac_ext_bus.c | 9 ++-------
sound/soc/intel/skylake/skl.c | 19 ++++++++++++++++++-
sound/soc/intel/skylake/skl.h | 10 +++++++---
4 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/include/sound/hdaudio_ext.h b/include/sound/hdaudio_ext.h
index 3c30247..c188b80 100644
--- a/include/sound/hdaudio_ext.h
+++ b/include/sound/hdaudio_ext.h
@@ -9,7 +9,8 @@ int snd_hdac_ext_bus_init(struct hdac_bus *bus, struct device *dev,
const struct hdac_io_ops *io_ops);
void snd_hdac_ext_bus_exit(struct hdac_bus *bus);
-int snd_hdac_ext_bus_device_init(struct hdac_bus *bus, int addr);
+int snd_hdac_ext_bus_device_init(struct hdac_bus *bus, int addr,
+ struct hdac_device *hdev);
void snd_hdac_ext_bus_device_exit(struct hdac_device *hdev);
void snd_hdac_ext_bus_device_remove(struct hdac_bus *bus);
diff --git a/sound/hda/ext/hdac_ext_bus.c b/sound/hda/ext/hdac_ext_bus.c
index 52f0776..e4bcb76 100644
--- a/sound/hda/ext/hdac_ext_bus.c
+++ b/sound/hda/ext/hdac_ext_bus.c
@@ -135,16 +135,12 @@ static void default_release(struct device *dev)
*
* Returns zero for success or a negative error code.
*/
-int snd_hdac_ext_bus_device_init(struct hdac_bus *bus, int addr)
+int snd_hdac_ext_bus_device_init(struct hdac_bus *bus, int addr,
+ struct hdac_device *hdev)
{
- struct hdac_device *hdev = NULL;
char name[15];
int ret;
- hdev = kzalloc(sizeof(*hdev), GFP_KERNEL);
- if (!hdev)
- return -ENOMEM;
-
hdev->bus = bus;
snprintf(name, sizeof(name), "ehdaudio%dD%d", bus->idx, addr);
@@ -175,7 +171,6 @@ EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_device_init);
void snd_hdac_ext_bus_device_exit(struct hdac_device *hdev)
{
snd_hdac_device_exit(hdev);
- kfree(hdev);
}
EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_device_exit);
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c
index 568a285..72a788a 100644
--- a/sound/soc/intel/skylake/skl.c
+++ b/sound/soc/intel/skylake/skl.c
@@ -35,6 +35,7 @@
#include "skl.h"
#include "skl-sst-dsp.h"
#include "skl-sst-ipc.h"
+#include "../../../pci/hda/hda_codec.h"
static struct skl_machine_pdata skl_dmic_data;
@@ -531,6 +532,8 @@ static int probe_codec(struct hdac_bus *bus, int addr)
unsigned int cmd = (addr << 28) | (AC_NODE_ROOT << 20) |
(AC_VERB_PARAMETERS << 8) | AC_PAR_VENDOR_ID;
unsigned int res = -1;
+ struct skl *skl = bus_to_skl(bus);
+ struct hdac_device *hdev;
mutex_lock(&bus->cmd_mutex);
snd_hdac_bus_send_cmd(bus, cmd);
@@ -540,7 +543,11 @@ static int probe_codec(struct hdac_bus *bus, int addr)
return -EIO;
dev_dbg(bus->dev, "codec #%d probed OK\n", addr);
- return snd_hdac_ext_bus_device_init(bus, addr);
+ hdev = devm_kzalloc(&skl->pci->dev, sizeof(*hdev), GFP_KERNEL);
+ if (!hdev)
+ return -ENOMEM;
+
+ return snd_hdac_ext_bus_device_init(bus, addr, hdev);
}
/* Codec initialization */
@@ -665,6 +672,7 @@ static int skl_create(struct pci_dev *pci,
{
struct skl *skl;
struct hdac_bus *bus;
+ struct hda_bus *hbus;
int err;
@@ -680,6 +688,7 @@ static int skl_create(struct pci_dev *pci,
return -ENOMEM;
}
+ hbus = skl_to_hbus(skl);
bus = skl_to_bus(skl);
snd_hdac_ext_bus_init(bus, &pci->dev, &bus_core_ops, io_ops);
bus->use_posbuf = 1;
@@ -687,6 +696,14 @@ static int skl_create(struct pci_dev *pci,
INIT_WORK(&skl->probe_work, skl_probe_work);
bus->bdl_pos_adj = 0;
+ /*
+ * TODO: other parameters can be taken the way it is taken by
+ * legacy HDA driver
+ */
+ mutex_init(&hbus->prepare_mutex);
+ hbus->pci = pci;
+ hbus->mixer_assigned = -1;
+
*rskl = skl;
return 0;
diff --git a/sound/soc/intel/skylake/skl.h b/sound/soc/intel/skylake/skl.h
index f7fcd7e..c6b7aee 100644
--- a/sound/soc/intel/skylake/skl.h
+++ b/sound/soc/intel/skylake/skl.h
@@ -25,6 +25,7 @@
#include <sound/hdaudio_ext.h>
#include <sound/soc.h>
#include "skl-nhlt.h"
+#include "../../../pci/hda/hda_codec.h"
#define SKL_SUSPEND_DELAY 2000
@@ -46,7 +47,7 @@ struct skl_dsp_resource {
struct skl_debug;
struct skl {
- struct hdac_bus hbus;
+ struct hda_bus hbus;
struct pci_dev *pci;
unsigned int init_done:1; /* delayed init status */
@@ -77,8 +78,11 @@ struct skl {
bool use_tplg_pcm;
};
-#define skl_to_bus(s) (&(s)->hbus)
-#define bus_to_skl(bus) container_of(bus, struct skl, hbus)
+#define skl_to_bus(s) (&(s)->hbus.core)
+#define bus_to_skl(bus) container_of(bus, struct skl, hbus.core)
+
+#define skl_to_hbus(s) (&(s)->hbus)
+#define hbus_to_skl(hbus) container_of(hbus, struct skl, hbus)
/* to pass dai dma data */
struct skl_dma_params {
--
2.7.4
next prev parent reply other threads:[~2017-12-01 9:10 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-01 9:13 [RFC 00/10] Enable HDA Codec support on Intel Platforms (Series2) Rakesh Ughreja
2017-12-01 9:13 ` [RFC 01/10] ASoC: Intel: Boards: Machine driver for Intel platforms Rakesh Ughreja
2017-12-01 17:58 ` Pierre-Louis Bossart
2017-12-04 10:55 ` Ughreja, Rakesh A
2017-12-04 14:49 ` Pierre-Louis Bossart
2017-12-04 15:10 ` Ughreja, Rakesh A
2017-12-04 15:37 ` Pierre-Louis Bossart
2017-12-06 16:17 ` Vinod Koul
2017-12-07 12:27 ` Ughreja, Rakesh A
2017-12-07 13:05 ` Pierre-Louis Bossart
2017-12-07 15:21 ` Ughreja, Rakesh A
2017-12-07 16:33 ` Pierre-Louis Bossart
2017-12-01 9:14 ` [RFC 02/10] ASoC: Intel: Skylake: Add entry in sst_acpi_mach for HDA codecs Rakesh Ughreja
2017-12-01 18:15 ` Pierre-Louis Bossart
2017-12-04 16:27 ` Ughreja, Rakesh A
2017-12-01 9:14 ` [RFC 03/10] ASoC: Intel: Skylake: add HDA BE DAIs Rakesh Ughreja
2017-12-01 18:20 ` Pierre-Louis Bossart
2017-12-04 16:14 ` Ughreja, Rakesh A
2017-12-04 16:40 ` Pierre-Louis Bossart
2017-12-04 16:44 ` Ughreja, Rakesh A
2017-12-04 16:51 ` Pierre-Louis Bossart
2017-12-04 17:01 ` Takashi Iwai
2017-12-01 9:14 ` Rakesh Ughreja [this message]
2017-12-01 18:27 ` [RFC 04/10] ASoC: Intel: Skylake: use hda_bus instead of hdac_bus Pierre-Louis Bossart
2017-12-04 16:09 ` Ughreja, Rakesh A
2017-12-01 9:14 ` [RFC 05/10] ALSA: hda - make some of the functions externally visible Rakesh Ughreja
2017-12-01 19:26 ` Pierre-Louis Bossart
2017-12-04 15:43 ` Ughreja, Rakesh A
2017-12-04 16:23 ` Takashi Iwai
2017-12-01 9:14 ` [RFC 06/10] ASoC: hdac_hda: add ASoC based HDA codec driver Rakesh Ughreja
2017-12-01 19:36 ` Pierre-Louis Bossart
2017-12-04 15:35 ` Ughreja, Rakesh A
2017-12-01 9:14 ` [RFC 07/10] ALSA: hda: add new API snd_hda_asoc_codec_new for ASoC codec drivers Rakesh Ughreja
2017-12-01 9:14 ` [RFC 08/10] ASoC: hdac_hda: add DAI, widgets and related ops Rakesh Ughreja
2017-12-01 9:14 ` [RFC 09/10] ASoC: hdac_hda: add runtime PM support Rakesh Ughreja
2017-12-01 9:14 ` [RFC 10/10] ASoC: Intel: Boards: add support for HDA codecs Rakesh Ughreja
2017-12-01 14:56 ` [RFC 00/10] Enable HDA Codec support on Intel Platforms (Series2) Takashi Iwai
2017-12-01 19:45 ` Pierre-Louis Bossart
2017-12-01 20:03 ` Takashi Iwai
2017-12-03 17:20 ` Vinod Koul
2017-12-04 3:15 ` Pierre-Louis Bossart
2017-12-04 3:22 ` Vinod Koul
2017-12-04 3:44 ` Pierre-Louis Bossart
2017-12-04 4:21 ` Vinod Koul
2017-12-04 14:52 ` Pierre-Louis Bossart
2017-12-04 17:17 ` Vinod Koul
2017-12-04 10:43 ` Ughreja, Rakesh A
2017-12-06 16:06 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1512119648-2700-5-git-send-email-rakesh.a.ughreja@intel.com \
--to=rakesh.a.ughreja@intel.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=liam.r.girdwood@linux.intel.com \
--cc=patches.audio@intel.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=tiwai@suse.de \
--cc=vinod.koul@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).