All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Hartmann <cornogle@googlemail.com>
To: alsa-devel@alsa-project.org
Subject: Re: ASoC : WM5102 Audio Codec needs ACPI support and a baytrail machine driver
Date: Tue, 16 Jun 2015 14:27:02 +0200	[thread overview]
Message-ID: <CAKor6TeP2HfqpHiKK86GLYLpCNk87y66bdjye_mAqXuMXxPMWA@mail.gmail.com> (raw)
In-Reply-To: <CAKor6TdbnLuJCsBPykPEmhGk-zBLggKxw4Z+=QuBb6Mz2ThD3g@mail.gmail.com>

Hi again,


some notes to the NULL pointer dereference error
I have changed the function arizona_spi_probe in arizona-spi.c and
have looked into the code where the NULL is coming...

in drivers/spi/spi.c the function spi_get_device_id() returns NULL,
cause the called function spi_match_id() does never match an id string
(there is no modalias string available I think).
With the id = NULL the line
type = id->driver_data; will throw the described exception.

Going on further, it seems that "id" has no such structure element of
"->driver_data", or I cannot find it.

Can someone please explain me in some simple words where the element
driver_data is coming or will be set
in THIS function of arizona_spi_probe()

The id->driver_data is not working for the acpi case...
This tablet does not have openfirmware (OF) by the way. The code seems
to be optimized for the Openfirmware API, but not for the ACPI case.



this is the currently local changed code to test and find null pointer
inarizona-spi.c.

diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
index 1e845f6..de48cf6 100644
--- a/drivers/mfd/arizona-spi.c
+++ b/drivers/mfd/arizona-spi.c
@@ -25,16 +25,26 @@

 static int arizona_spi_probe(struct spi_device *spi)
 {
-       const struct spi_device_id *id = spi_get_device_id(spi);
+       const struct spi_device_id *id ;
        struct arizona *arizona;
        const struct regmap_config *regmap_config;
        unsigned long type;
        int ret;

-       if (spi->dev.of_node)
-               type = arizona_of_get_type(&spi->dev);
-       else
+       /*
+       id = spi_get_device_id(spi);
+
+       if (!id)
+               return -EINVAL;
+       type = id->driver_data;
+       */
+       id = WM5102;
+
+       if (id->driver_data)
                type = id->driver_data;
+       else
+               type = WM5102;
+

        switch (type) {
 #ifdef CONFIG_MFD_WM5102
@@ -90,11 +100,23 @@ static const struct spi_device_id arizona_spi_ids[] = {
 };
 MODULE_DEVICE_TABLE(spi, arizona_spi_ids);

+#ifdef CONFIG_ACPI
+static const struct acpi_device_id wm5102_acpi_match[] = {
+       { "WM510205", WM5102 },
+       {},
+};
+
+MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
+#ifdef CONFIG_ACPI
+static const struct acpi_device_id wm5102_acpi_match[] = {
+       { "WM510205", WM5102 },
+       {},
+};
+
+MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
+#endif
+
 static struct spi_driver arizona_spi_driver = {
        .driver = {
                .name   = "arizona",
                .owner  = THIS_MODULE,
                .pm     = &arizona_pm_ops,
+#ifdef CONFIG_ACPI
+               .acpi_match_table = wm5102_acpi_match,
+#endif
                .of_match_table = of_match_ptr(arizona_of_match),
        },
        .probe          = arizona_spi_probe,
@@ -107,3 +129,4 @@ module_spi_driver(arizona_spi_driver);
 MODULE_DESCRIPTION("Arizona SPI bus interface");
 MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("spi:WM510205");



cheers
chris






[    5.095808] pxa2xx-spi 80860F0E:00: no DMA channels available, using PIO
[    5.095892] pxa2xx-spi 80860F0E:00: registered master spi32766 (dynamic)
[    5.110575] spi spi-WM510205:00: 8333333 Hz actual, PIO
[    5.110585] spi spi-WM510205:00: setup mode 0, 8 bits/w, 8000000 Hz max --> 0
[    5.110664] pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
[    5.245307] ACPI: Battery Slot [BATC] (battery present)
[    5.246890] i2c i2c-4: Failed to register i2c client MAGN0001:00 at
0x1d (-16)
[    5.254246] i2c i2c-4: failed to add I2C device MAGN0001:00 from ACPI
[    5.320349] arizona: probe of spi-WM510205:00 failed with error -22

2015-06-16 12:00 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
> Hi list,
>
> I have a device "Lenovo Yoga 851 F" which have a WM510205 Audio codec
> on a Baytrail System.
>
> I have sent already one patch (spi-pxa2xx) raise num_chipselect by one, which
> fixes to bind the arizona WM5102 codec as a spi slave attachted on a
> pxa2xx spi master device.
>
> I have tried several times and added the ACPI id "WM510205"  to
> the arizona-spi.c driver.
>
> The ACPI ID is extracted from the DSDT.dsl of this machine.
>
> But unfortunately it fails and I got only a NULL pointer deference error
> in arizona_spi_probe().
> I want to request ACPI support for this device and I cannot fix
> currently the NULL pointer.
>
> I do not know yet, if I have to add this ACPI id to the arizona-spi
> driver (sure,
> thats what I am trying and failing) or to the NEW baytrail machine driver.
>
> In this case it should be the bytcr_wm5102.c and byt-wm5102.c, which
> does not exists yet.
>
> I have a branched tovalds/master and added (my first attempt) the
> above mentioned machine driver on a local branch. The result is only
> a dsp boot timeout error.
>
> Any help, ideas, hints, patches to try would be appreciate
>
> sincerely yours
> Christian Hartmann
>
> a snap of the dsdt
>
> 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, "17AA7004")  // _SUB: Subsystem ID
>             Name (_UID, One)  // _UID: Unique ID
>             Name (_DEP, Package (0x01)  // _DEP: Dependencies
>             {
>                 ^SPI1.AUDI
>             })
> ...
> ...
> Device (AUDI)
>             {
>                 Name (_HID, "WM510205")  // _HID: Hardware ID
>                 Name (_CID, "WM510205")  // _CID: Compatible ID
>                 Name (_DDN, "Wolfson Microelectronics Audio WM5102")
> // _DDN: DOS Device Name
>                 Method (_CRS, 0, NotSerialized)  // _CRS: Current
> Resource Settings
>                 {
>                     Name (SBUF, ResourceTemplate ()
>                     {
>                         SpiSerialBus (0x0001, PolarityLow, FourWireMode, 0x08,
>                             ControllerInitiated, 0x007A1200, ClockPolarityLow,
>                             ClockPhaseFirst, "\\_SB.SPI1",
>                             0x00, ResourceConsumer, ,
>                             )
>                         GpioInt (Edge, ActiveLow, ExclusiveAndWake,
> PullNone, 0x0000,
>                             "\\_SB.GPO2", 0x00, ResourceConsumer, ,
>                             )
>                             {   // Pin list
>                                 0x0004
>                             }
>                         GpioIo (Exclusive, PullDefault, 0x0000,
> 0x0000, IoRestrictionOutputOnly,
>                             "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
>                             )
>                             {   // Pin list
>                                 0x0003
>                             }
>                         GpioIo (Exclusive, PullDefault, 0x0000,
> 0x0000, IoRestrictionOutputOnly,
>                             "\\_SB.GPO1", 0x00, ResourceConsumer, ,
>                             )
>                             {   // Pin list
>                                 0x0017
>                             }
>                     })

  reply	other threads:[~2015-06-16 12:27 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-16 10:00 ASoC : WM5102 Audio Codec needs ACPI support and a baytrail machine driver Christian Hartmann
2015-06-16 12:27 ` Christian Hartmann [this message]
2015-06-16 13:10   ` Fwd: " Christian Hartmann
2015-06-16 14:47     ` Charles Keepax
2015-06-22  9:55       ` Christian Hartmann
2015-06-22 12:00         ` Charles Keepax
2015-06-24  8:48           ` Charles Keepax

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=CAKor6TeP2HfqpHiKK86GLYLpCNk87y66bdjye_mAqXuMXxPMWA@mail.gmail.com \
    --to=cornogle@googlemail.com \
    --cc=alsa-devel@alsa-project.org \
    /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.