alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
From: Michele Curti <michele.curti@gmail.com>
To: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: Takashi Iwai <tiwai@suse.de>, Bard Liao <bardliao@realtek.com>,
	alsa-devel@alsa-project.org, "Nikula,
	Jarkko" <jarkko.nikula@intel.com>
Subject: Re: writing an alsa driver
Date: Thu, 4 Jun 2015 21:39:22 +0200	[thread overview]
Message-ID: <20150604193922.GA627@asus> (raw)
In-Reply-To: <1433156768.2642.21.camel@loki>

On Mon, Jun 01, 2015 at 12:06:08PM +0100, Liam Girdwood wrote:
> + Jarkko
> 
> On Fri, 2015-05-29 at 15:17 +0200, Michele Curti wrote:
> > On Fri, May 29, 2015 at 10:42:01AM +0100, Liam Girdwood wrote:
> > > On Thu, 2015-05-28 at 21:17 +0200, Michele Curti wrote:
> > > 
> > > > to let the probe continue, the system become quite unusable but I get the 
> > > > logs.
> > > > 
> > > > May 28 20:34:00 asus kernel: byt-rt5645 byt-rt5645: ASoC: CPU DAI baytrail-pcm-audio not registered
> > > > May 28 20:34:00 asus kernel: baytrail-pcm-audio baytrail-pcm-audio: initialising Byt DSP IPC
> > > > May 28 20:34:00 asus kernel: baytrail-pcm-audio baytrail-pcm-audio: initialising audio DSP id 0xf28
> > > > May 28 20:34:00 asus kernel: irq used for dsp = 6
> > > > 
> > > > ---> The IRQ number used is 6
> > > > 
> 
> Jarkko thinks the IRQ may be incorrectly reported by ACPI and that it
> could be using another ACPI index. This could probably be checked by
> decompiling the ACPi data and searching for the audio DSP.
>

Done an acpidump/iasl and (I think) the interesting part is:

    Scope (_SB)
    {
        Device (LPEA)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F28" /* Intel SST Audio DSP */)  // _HID: Hardware ID
            Name (_CID, "80860F28" /* Intel SST Audio DSP */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) Low Power Audio Controller - 80860F28")  // _DDN: DOS Device Name
            Name (_SUB, "1043182D")  // _SUB: Subsystem ID
            Name (_UID, One)  // _UID: Unique ID
            Name (ADEP, Package (0x01)
            {
                ^I2C2.TTLV
            })
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                ^I2C2.RTEK
            })
            Name (_PR0, Package (0x01)  // _PR0: Power Resources for D0
            {
                PLPE
            })
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((LPEE == 0x02) && (LPED == Zero)))
                {
                    Return (0x0F)
                }

                Return (Zero)
            }

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
            }

            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x12345678,         // Address Base
                    0x00200000,         // Address Length
                    _Y04)
                Memory32Fixed (ReadWrite,
                    0xFE830000,         // Address Base
                    0x00001000,         // Address Length
                    _Y05)
                Memory32Fixed (ReadWrite,
                    0x55AA55AA,         // Address Base
                    0x00200000,         // Address Length
                    _Y06)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001D,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000018,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000019,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001A,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001B,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001C,
                }
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.LPEA._Y04._BAS, B0BA)  // _BAS: Base Address
                B0BA = LPE0 /* \LPE0 */
                CreateDWordField (RBUF, \_SB.LPEA._Y05._BAS, B1BA)  // _BAS: Base Address
                B1BA = LPE1 /* \LPE1 */
                CreateDWordField (RBUF, \_SB.LPEA._Y06._BAS, B2BA)  // _BAS: Base Address
                B2BA = LPE2 /* \LPE2 */
                Return (RBUF) /* \_SB_.LPEA.RBUF */
            }

            OperationRegion (KEYS, SystemMemory, LPE1, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            PowerResource (PLPE, 0x05, 0x0000)
            {
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (One)
                }

                Method (_ON, 0, NotSerialized)  // _ON_: Power On
                {
                    PSAT &= 0xFFFFFFFC
                    Local0 = PSAT /* \_SB_.LPEA.PSAT */
                }

                Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                {
                    PSAT |= 0x03
                    Local0 = PSAT /* \_SB_.LPEA.PSAT */
                }
            }

So, 6 possible IRQs for the LPE core, from 0x18 to 0x1D?

Changed the code and tried all six

diff --git a/sound/soc/intel/common/sst-acpi.c b/sound/soc/intel/common/sst-acpi.c
index bb28e84..a306502 100644
--- a/sound/soc/intel/common/sst-acpi.c
+++ b/sound/soc/intel/common/sst-acpi.c
@@ -149,8 +149,12 @@ static int sst_acpi_probe(struct platform_device *pdev)
 		sst_pdata->dma_size = desc->dma_size;
 	}
 
-	if (desc->irqindex_host_ipc >= 0)
-		sst_pdata->irq = platform_get_irq(pdev, desc->irqindex_host_ipc);
+	if (desc->irqindex_host_ipc >= 0) {
+		sst_pdata->irq = 0x1D; /* acpi-dump, from 0x18 to 0x1D */
+		pr_info("audio dsp: IRQ # was %d, force to %d\n",
+				platform_get_irq(pdev, desc->irqindex_host_ipc),
+				sst_pdata->irq);
+	}
 
 	if (desc->resindex_lpe_base >= 0) {
 		mmio = platform_get_resource(pdev, IORESOURCE_MEM,

without success, I get always the "dsp boot timeout".

I'm going to investigate why platform_get_irq() returns 6 instead of something
in the range 0x18-0x1D.. :)

Thanks for the time spent,
Michele

  parent reply	other threads:[~2015-06-04 19:39 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-21 14:52 writing an alsa driver Michele Curti
2015-05-23 16:32 ` Michele Curti
2015-05-27  6:45   ` Takashi Iwai
2015-05-27  8:54     ` Michele Curti
2015-05-27 18:41       ` Liam Girdwood
2015-05-27 20:13         ` Michele Curti
2015-05-28 11:31           ` Liam Girdwood
2015-05-28 12:53             ` Michele Curti
2015-05-28 13:21               ` Liam Girdwood
2015-05-28 19:17                 ` Michele Curti
2015-05-29  9:42                   ` Liam Girdwood
2015-05-29 13:17                     ` Michele Curti
2015-06-01 11:06                       ` Liam Girdwood
2015-06-04  7:09                         ` Marcus Bannerman
2015-06-04  9:04                           ` Michele Curti
2015-06-04  8:59                         ` Michele Curti
2015-06-04 10:33                           ` Liam Girdwood
2015-06-04 17:44                             ` Juergen Bausa
2015-06-04 19:39                         ` Michele Curti [this message]
2015-06-05  7:00                           ` Jarkko Nikula
2015-06-08  8:26                             ` Michele Curti
2015-06-08  8:49                         ` Michele Curti
2015-06-13 13:47                           ` Luka Karinja
2015-06-15 16:46                             ` Michele Curti
2015-06-15 17:04                               ` Liam Girdwood
2015-06-16 20:50                                 ` Michele Curti
2015-06-17  9:16                                   ` Liam Girdwood
2015-06-17 21:34                                     ` Michele Curti
2015-06-18 11:14                                       ` Vinod Koul
2015-06-18 18:47                                         ` Michele Curti
2015-06-19  7:54                                           ` Vinod Koul
2015-06-19  8:12                                             ` Michele Curti
2015-06-17  6:39                                 ` Jarkko Nikula
2015-06-23  9:09                                 ` Michele Curti
2015-06-23  9:51                                   ` Liam Girdwood
2015-06-24 10:21                                   ` Vinod Koul
2015-06-24 11:31                                     ` Antonio Ospite
2015-06-24 11:40                                       ` Liam Girdwood
2015-06-24 16:04                                         ` Vinod Koul
2015-06-24 18:21                                     ` Michele Curti
2015-06-25  3:24                                       ` Vinod Koul
2015-06-25  7:39                                         ` Michele Curti
2016-03-03 11:11                                         ` Michele Curti
2016-03-03 11:27                                           ` Vinod Koul
2016-03-03 13:08                                             ` Michele Curti
2016-03-03 16:20                                             ` Pierre-Louis Bossart
2016-03-04 11:07                                               ` Michele Curti
  -- strict thread matches above, loose matches on Subject: below --
2015-07-22 20:05 Marco Bodega
2015-07-24 20:54 ` Michele Curti
2015-08-10 14:12 Johnny

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=20150604193922.GA627@asus \
    --to=michele.curti@gmail.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=bardliao@realtek.com \
    --cc=jarkko.nikula@intel.com \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=tiwai@suse.de \
    /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).