All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Mark Brown <broonie@kernel.org>
Cc: alsa-devel@alsa-project.org, Vinod Koul <vinod.koul@intel.com>,
	liam.r.girdwood@linux.intel.com, patches.audio@intel.com,
	Jeeja KP <jeeja.kp@intel.com>,
	"Subhransu S. Prusty" <subhransu.s.prusty@intel.com>
Subject: Re: [PATCH v5 2/4] ASoC: Intel - add Skylake HDA audio driver
Date: Mon, 15 Jun 2015 18:35:16 +0200	[thread overview]
Message-ID: <s5hoakhexq3.wl-tiwai@suse.de> (raw)
In-Reply-To: <20150615155632.GU18309@sirena.org.uk>

Just a few pin-points:

At Mon, 15 Jun 2015 16:56:33 +0100,
Mark Brown wrote:
> 
> On Thu, Jun 11, 2015 at 10:03:56PM +0530, Vinod Koul wrote:
> 
> > +/* initialize SD streams, use seprate streeam tag for PB and CP */
> > +static int skl_init_stream(struct hdac_ext_bus *ebus, int start_idx,
> > +				int num_stream, int dir)
> > +{
> > +	int stream_tag = 0;
> > +	int i, tag, idx = start_idx;
> > +
> > +	for (i = 0; i < num_stream; i++) {
> > +		struct hdac_ext_stream *stream =
> > +				kzalloc(sizeof(*stream), GFP_KERNEL);
> > +		if (!stream)
> > +			return -ENOMEM;
> > +		tag = ++stream_tag;
> > +		snd_hdac_ext_stream_init(ebus, stream, idx, dir, tag);
> > +		idx++;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +static void skl_free_streams(struct hdac_ext_bus *ebus)
> > +{
> > +	struct hdac_stream *s;
> > +	struct hdac_ext_stream *stream;
> > +	struct hdac_bus *bus = ebus_to_hbus(ebus);
> > +
> > +	while (!list_empty(&bus->stream_list)) {
> > +		s = list_first_entry(&bus->stream_list, struct hdac_stream, list);
> > +		stream = stream_to_hdac_ext_stream(s);
> > +		list_del(&s->list);
> > +		kfree(stream);
> > +	}
> > +}
> 
> Still not sure why these are Sky Lake specific?

Currently the allocation and the free of each HDA(-ext) stream are
left to each controller driver.  (See the stream object is embedded.)

And, yes, the allocation (especially the assignment of the stream tag)
*is* SKL specific.  SKL has some twists in the interpretation of
HD-audio spec.


> > +static int skl_suspend(struct device *dev)
> > +{
> > +	struct pci_dev *pci = to_pci_dev(dev);
> > +	struct hdac_ext_bus *ebus = pci_get_drvdata(pci);
> > +	struct hdac_bus *bus = ebus_to_hbus(ebus);
> > +
> > +	snd_hdac_bus_stop_chip(bus);
> > +	snd_hdac_bus_enter_link_reset(bus);
> > +	if (bus->irq >= 0) {
> > +		free_irq(bus->irq, bus);
> 
> 
> Why are we freeing the interrupt over suspend?  That is very unusual
> behaviour.

Believe or not, a PCI controller may reassign to a different IRQ
number after hibernation.  This really happened in the past for some
old stuff, hence we have this in the legacy driver.

But SKL won't need this, I suppose.


> > +
> > +static const struct hdac_io_ops skl_io_ops = {
> > +	.reg_writel = skl_pci_writel,
> > +	.reg_readl = skl_pci_readl,
> > +	.reg_writew = skl_pci_writew,
> > +	.reg_readw = skl_pci_readw,
> > +	.reg_writeb = skl_pci_writeb,
> > +	.reg_readb = skl_pci_readb,
> > +	.dma_alloc_pages = skl_dma_alloc_pages,
> > +	.dma_free_pages = skl_dma_free_pages,
> > +};
> 
> Still not thrilled at open coding these wrappers.

This is not so sexy, right, but be patient until the next HDA core
code rewrite.


Takashi

  reply	other threads:[~2015-06-15 16:35 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-11 16:33 [PATCH v5 0/4] ASoC: intel - add skylake PCM driver Vinod Koul
2015-06-11 16:33 ` [PATCH v5 1/4] ASoC: Intel: add Skylake HDA platform driver Vinod Koul
2015-06-11 16:33 ` [PATCH v5 2/4] ASoC: Intel - add Skylake HDA audio driver Vinod Koul
2015-06-15 15:56   ` Mark Brown
2015-06-15 16:35     ` Takashi Iwai [this message]
2015-06-15 16:42       ` Mark Brown
2015-06-15 16:46         ` Takashi Iwai
2015-06-16 15:25           ` Vinod Koul
2015-06-16 15:27             ` Takashi Iwai
2015-06-16  3:52     ` Vinod Koul
2015-06-16 10:28       ` Mark Brown
2015-06-16 15:24         ` Vinod Koul
2015-06-16 15:28           ` Takashi Iwai
2015-06-11 16:33 ` [PATCH v5 3/4] ASoC: Intel - add makefile support for SKL driver Vinod Koul
2015-06-15 15:57   ` Mark Brown
2015-06-15 16:42     ` Takashi Iwai
2015-06-15 18:54       ` Mark Brown
2015-06-16  4:44         ` Vinod Koul
2015-06-16 10:43           ` Mark Brown
2015-06-16 15:22             ` Vinod Koul
2015-06-16  5:01         ` Takashi Iwai
2015-06-16 10:52           ` Mark Brown
2015-06-11 16:33 ` [PATCH v5 4/4] ASoC: intel - adds support for decoupled mode in skl driver 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=s5hoakhexq3.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=jeeja.kp@intel.com \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=patches.audio@intel.com \
    --cc=subhransu.s.prusty@intel.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.