On Thu, Jun 25, 2015 at 02:18:23PM +0200, Christian Hartmann wrote: > 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) I thought that you are developing a new system where you can affect the firmware/BIOS source. Obviously this is not the case so you have close to zero possibility to get the vendor to fix the broken firmware :-/ > 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, , > ) This is wrong as, like I said the Intel Baytrail SPI host controller only supports one native chipselect. > 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, , Only change the chipselect above. \\SB.SPI1 is the host controller and that's probably correct. It is worth a try using the custom DSDT. If it brings you working audio then we need to figure out how to work this around in the kernel. BTW, does the audio work in Windows? I somehow suspect that it just ignores the chipselect in the SPI driver which might explain why it works (if it works, that is). -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html