All of lore.kernel.org
 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 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.