[alsa-devel] Fwd: [PATCH 1/1] SPI : spi-pxa2xx : fix spi init of WM510205 codec via ACPI (resend)

Christian Hartmann cornogle at googlemail.com
Thu Jun 25 14:18:23 CEST 2015


Hi Mika, Dan et al.

@Dan : thank you, I will use get_maintainer.pl as of now.

@Mika: you mean I should prepare a new DSDT table and in this case
overwrite the SPI  value there with the 0 and load it (the DSDT table
) into a custom kernel build ?? I will do this (cause all what I want
is to enable the codec and to hear sound)

currently I have in the extracted DSDT table from this device the SPI1
controller for the "AUDI" device as seen in this snippet :

    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, "17AA7004")  // _SUB: Subsystem ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                ^SPI1.AUDI
            })
            Name (_PR0, Package (0x01)  // _PR0: Power Resources for D0
            {
                PLPE
            })

.... some lines later follows the AUDI device with
            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
                            }
                    })
                    Return (SBUF) /* \_SB_.SPI1.AUDI._CRS.SBUF */
                }
....

I t makes sense to me, to change the current value(s) in the DSDT and
I have read about it to use a custom DSDT table but I am not 100% sure
yet (until I have tested it).

If I understand you correct, than all I have to do is to change the
'SPI1' string in this dsdt to SPI0 like
^SPI1.AUDI to ^SPI0.AUDI and this block here
SpiSerialBus (0x0001, PolarityLow, FourWireMode, 0x08,
                            ControllerInitiated, 0x007A1200, ClockPolarityLow,
                            ClockPhaseFirst, "\\_SB.SPI1",
                            0x00, ResourceConsumer, ,

becomes
SpiSerialBus (0x0000, PolarityLow, FourWireMode, 0x08,
                            ControllerInitiated, 0x007A1200, ClockPolarityLow,
                            ClockPhaseFirst, "\\_SB.SPI0",
                            0x00, ResourceConsumer, ,

For this case, could you please have a look in the whole DSDT table
that I extract from this device? If nothing else seems relevant and
the current system dsdt has to be changed as suggested,  I will try
this out as soon as possible

@Jarkko : as you suggested , I attach the current system DSDT as a
binary. I have also disassembled,
and if someone needs it, I can also paste it somewhere else as a reference

After all I will assembly the new dsdt and include it in my custom
kernel builld as documented, but will wait for some new infos etc.


thank you for you answers @all

cheers
chris




2015-06-25 9:36 GMT+02:00 Mika Westerberg <mika.westerberg at linux.intel.com>:
> On Thu, Jun 25, 2015 at 09:29:31AM +0200, Christian Hartmann wrote:
>> Hello Maintainer(s)s of SPI,
>>
>> hope I got all of you maintainers now. This email was already sent out
>> last week to the alsa-devel list and I resent it here to you.
>>
>> I have one patch that enables the spi initialization of the WM510205 audio codec
>> Without the patch, this message indicates that the codec chip fails
>> with the current chipselect number in spi-pxa2xx:
>>
>>
>> [ 0.296256] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>> [ 0.296270] spi_master spi32766: failed to add SPI device
>> WM510205:00 from ACPI
>>
>> So raise num_chipselect by one to enable the codec. The WM510202 is on
>> chipselect = 1.
>
> The hardware only has one chipselect.
>
> You can fix this by specifying the correct chipselect in the ACPI
> SpiSerialBus connector:
>
>        SpiSerialBus (0, PolarityLow, FourWireMode, 8, ControllerInitiated, ..
>
> First parameter is the chipselect.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: DSDT_sys_firmware_acpi_tables.bin
Type: application/octet-stream
Size: 42677 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20150625/25eb221c/attachment-0001.bin>


More information about the Alsa-devel mailing list