From patchwork Thu Jun 4 19:39:22 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michele Curti X-Patchwork-Id: 6549821 Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 66E8F9F399 for ; Thu, 4 Jun 2015 19:40:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 56B72206AB for ; Thu, 4 Jun 2015 19:40:00 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id E486B20649 for ; Thu, 4 Jun 2015 19:39:58 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 4224026668E; Thu, 4 Jun 2015 21:39:57 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, NO_DNS_FOR_FROM, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=no version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id 89D0B266480; Thu, 4 Jun 2015 21:39:49 +0200 (CEST) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 1CB5F2664A0; Thu, 4 Jun 2015 21:39:48 +0200 (CEST) Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by alsa0.perex.cz (Postfix) with ESMTP id E613C261480 for ; Thu, 4 Jun 2015 21:39:40 +0200 (CEST) Received: by wiwd19 with SMTP id d19so31967248wiw.0 for ; Thu, 04 Jun 2015 12:39:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=GgM0lunwXRGE+HZKpWFIVSfu3JaNJ/iuIxMaVc1zOcg=; b=0nBUmIIzbhqxv75hgcbS0e+c64vP6I49UjpURsP6BHI6YL/HmxnvupEZKL6SxlJtPC 9INHExljx8QhU7cKmV0Q0JKbu+EiI4Crs4CQ11iwvFDQX//czyWawj8PBGfQDJ7ZCqTp VBh1LmtjuDicUHSALZPhemfaFHh8VuStd3AHpGlNwrQ+Ogpwaz+d0ik44kBNc6thJDaJ oQxvnYOKawQSskP/dCFk3nzYTL71ev5O6mGLTwSwYalZAL66sjwW81JKZ6r9H6fMs8j0 7sXr/+51a/LqKtjVrtXNctioFoC/cpkoEConGcGxT08DvD/8L9hYAeaVM/1aevXA9Cwm nBXQ== X-Received: by 10.194.78.110 with SMTP id a14mr55572005wjx.87.1433446779653; Thu, 04 Jun 2015 12:39:39 -0700 (PDT) Received: from asus (adsl-159-45.37-151.net24.it. [151.37.45.159]) by mx.google.com with ESMTPSA id b10sm32599230wic.1.2015.06.04.12.39.31 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 04 Jun 2015 12:39:38 -0700 (PDT) Date: Thu, 4 Jun 2015 21:39:22 +0200 From: Michele Curti To: Liam Girdwood Message-ID: <20150604193922.GA627@asus> References: <20150527085440.GA4445@dellaz> <1432752116.8235.25.camel@loki> <20150527201320.GA309@asus> <1432812668.2726.18.camel@loki> <20150528125325.GA418@asus> <1432819294.2726.33.camel@loki> <20150528191721.GA608@asus> <1432892521.2732.14.camel@loki> <20150529131753.GA339@asus> <1433156768.2642.21.camel@loki> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1433156768.2642.21.camel@loki> User-Agent: Mutt/1.5.23 (2014-03-12) Cc: Takashi Iwai , Bard Liao , alsa-devel@alsa-project.org, "Nikula, Jarkko" Subject: Re: [alsa-devel] writing an alsa driver X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP 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 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 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,