[WM5102/ARIZONA] spi driver needs to support ACPI
diff mbox

Message ID CAKor6TdtBEf9cN-EFw0BpRd4EbAKYXgfWh_PbSiG5=EhC1peew@mail.gmail.com
State New
Headers show

Commit Message

Christian Hartmann May 15, 2015, 9:16 a.m. UTC
Hi list,


I need ACPI support for the arizona-core / arizona-spi driver for the
ACPI ID WM5102.
This audio codec is build into the Lenovo Yoga 851F. This device is a
32Bit (UEFI) system

http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851


I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
master (from torvalds) currently its 4.1.0-rc3. As distribution I am
working with Fedora / Fedlet was the initial install image.

With all vanilla kernels I got at first an error message from spi32766:

[    0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
[    0.296311] spi_master spi32766: failed to add SPI device
WM510205:00 from ACPI

so I have at first patched as suggested by broonie the arizona-core

commit 48203a0fede057d6a8c5f6872c53326395350f45
Author: somebody anybody <somebody@foobar.com>
Date:   Mon May 11 13:35:43 2015 +0200

    spi-pxa2xx : raise chipselect

    Signed-off-by: somebody anybody <somebody@foobar.com>




with these two patches the local master branch compiles fine, but at
initialzing the arizona-spi driver gots a NULL pointer exception.

I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).

I need some assistance or hints to the right direction, I am looking
myself and I also try what I can, but I think it would be easy peasy
with some experts like here on this list :)


PS: the message : spi_master spi32766: raised num_chipselect to 20 for
WM510205:00

is a dev_err() line added to the function static acpi_status
acpi_spi_add_device(), there I had raised the num_chipselect first
(that was wrong, the raise is now done as in the first patch above.
this is only a debug message and will be removed soon)


PPS: for me it seems that there is a missing 'link' from WM5102 to the
sst-acpi 80860F28:00 device, which complaints NOW / the first time
with the three patches applied on top on master.... will have a look
into it.

I hope I got this device working with some more help from you.

cheers
chris
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.1.0.26-rc3 (b23@berkelium.fyedot.greenzone) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #127 SMP Wed May 13 15:19:39 CEST 2015
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000008ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020200000-0x00000000782d5fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000782d6000-0x0000000078bd5fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078bd6000-0x0000000078cd5fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000078cd6000-0x0000000078d15fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x0000000078d16000-0x000000007950efff] usable
[    0.000000] BIOS-e820: [mem 0x000000007950f000-0x0000000079e0efff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000079e0f000-0x0000000079ffffff] usable
[    0.000000] BIOS-e820: [mem 0x000000007a800000-0x000000007acfffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed01000-0x00000000fed01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd00000-0x00000000ffffffff] reserved
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] efi: EFI v2.40 by INSYDE Corp.
[    0.000000] efi:  ACPI 2.0=0x78d15014  SMBIOS=0x7878a000 
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: LENOVO 60072/INVALID, BIOS 02WT18WW 08/01/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x7ad00 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFD00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 040000000 mask FE0000000 write-back
[    0.000000]   3 base 060000000 mask FF0000000 write-back
[    0.000000]   4 base 070000000 mask FF8000000 write-back
[    0.000000]   5 base 078000000 mask FFC000000 write-back
[    0.000000]   6 base 07B000000 mask FFF000000 uncachable
[    0.000000]   7 base 07AE00000 mask FFFE00000 uncachable
[    0.000000] PAT configuration [0-7]: WB  WC  UC- UC  WB  WC  UC- UC  
[    0.000000] initial memory mapped: [mem 0x00000000-0x013fffff]
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x36c00000-0x36ffffff]
[    0.000000]  [mem 0x36c00000-0x36ffffff] page 4M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x1fffffff] page 4M
[    0.000000] init_memory_mapping: [mem 0x20200000-0x36bfffff]
[    0.000000]  [mem 0x20200000-0x203fffff] page 4k
[    0.000000]  [mem 0x20400000-0x36bfffff] page 4M
[    0.000000] BRK [0x010af000, 0x010affff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x37000000-0x373fdfff]
[    0.000000]  [mem 0x37000000-0x373fdfff] page 4k
[    0.000000] BRK [0x010b0000, 0x010b0fff] PGTABLE
[    0.000000] BRK [0x010b1000, 0x010b2fff] PGTABLE
[    0.000000] RAMDISK: [mem 0x3ef4c000-0x3fffafff]
[    0.000000] Allocated new RAMDISK: [mem 0x3634f000-0x373fdd4f]
[    0.000000] Move RAMDISK from [mem 0x3ef4c000-0x3fffad4f] to [mem 0x3634f000-0x373fdd4f]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x0000000078D15014 000024 (v02 LENOVO)
[    0.000000] ACPI: XSDT 0x0000000078CF3188 0000DC (v01 LENOVO CS-02    00000001      01000013)
[    0.000000] ACPI: FACP 0x0000000078D0F000 00010C (v05 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: DSDT 0x0000000078CFF000 00A6B5 (v02 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x0000000078D14000 000236 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: TCPA 0x0000000078D13000 000032 (v02 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: MSDM 0x0000000078D12000 000055 (v03 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x0000000078D11000 000042 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: DBG2 0x0000000078D10000 000072 (v00 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: HPET 0x0000000078D0E000 000038 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: LPIT 0x0000000078D0D000 000104 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: APIC 0x0000000078D0C000 00006C (v03 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: MCFG 0x0000000078D0B000 00003C (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: SLIC 0x0000000078D0A000 000176 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CFE000 0005FB (v01 LENOVO CpuDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CFC000 0018BD (v01 LENOVO DptfTab  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CFB000 000058 (v01 LENOVO LowPwrM  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CFA000 0000FF (v01 LENOVO SoCDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CF9000 00043A (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: TPM2 0x0000000078CF8000 000034 (v03 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CF7000 000763 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CF6000 000290 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x0000000078CF5000 00017A (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: FPDT 0x0000000078CF4000 000044 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: CSRT 0x0000000078CF2000 00014C (v00 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: BGRT 0x0000000078CF1000 000038 (v01 LENOVO CS-02    00000001 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 1081MB HIGHMEM available.
[    0.000000] 883MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 373fe000
[    0.000000]   low ram: 0 - 373fe000
[    0.000000] BRK [0x010b3000, 0x010b3fff] PGTABLE
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.000000]   Normal   [mem 0x0000000001000000-0x00000000373fdfff]
[    0.000000]   HighMem  [mem 0x00000000373fe000-0x000000007acfffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000001000-0x000000000008efff]
[    0.000000]   node   0: [mem 0x0000000000090000-0x000000000009dfff]
[    0.000000]   node   0: [mem 0x0000000000100000-0x000000001fffffff]
[    0.000000]   node   0: [mem 0x0000000020200000-0x00000000782d5fff]
[    0.000000]   node   0: [mem 0x0000000078d16000-0x000000007950efff]
[    0.000000]   node   0: [mem 0x0000000079e0f000-0x0000000079ffffff]
[    0.000000]   node   0: [mem 0x000000007a800000-0x000000007acfffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000007acfffff]
[    0.000000] On node 0 totalpages: 495452
[    0.000000] free_area_init_node: node 0, pgdat c0edd440, node_mem_map f5017028
[    0.000000]   DMA zone: 40 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   Normal zone: 2170 pages used for memmap
[    0.000000]   Normal zone: 221694 pages, LIFO batch:31
[    0.000000]   HighMem zone: 269762 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] x86/hpet: Will disable the HPET for this platform because it's not reliable
[    0.000000] Reserving Intel graphics stolen memory at 0x7af00000-0x7eefffff
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-86
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.000000] PM: Registered nosave memory: [mem 0x0008f000-0x0008ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x201fffff]
[    0.000000] e820: [mem 0x7ef00000-0xe00f7fff] available for PCI devices
[    0.000000] clocksource refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1910969940391419 ns
[    0.000000] setup_percpu: NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 19 pages/cpu @f4fb6000 s45528 r0 d32296 u77824
[    0.000000] pcpu-alloc: s45528 r0 d32296 u77824 alloc=19*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 493242
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-4.1.0.26-rc3 root=UUID=6c3bcf92-5a26-4dde-95e3-78ceb9aaa35b ro i915.modeset=0 rhgb quiet i915.force_backlight_pmic=1 audit=1 enforcing=1 selinux=1 LANG=de_DE.UTF-8
[    0.000000] audit: enabled (after initialization)
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000373fe:0007ad00)
[    0.000000] Initializing Movable for node 0 (00000000:00000000)
[    0.000000] Memory: 1900596K/1981808K available (7412K kernel code, 755K rwdata, 3068K rodata, 796K init, 896K bss, 81212K reserved, 0K cma-reserved, 1048856K highmem)
[    0.000000] virtual kernel memory layout:
    fixmap  : 0xffa96000 - 0xfffff000   (5540 kB)
    pkmap   : 0xff400000 - 0xff800000   (4096 kB)
    vmalloc : 0xf7bfe000 - 0xff3fe000   ( 120 MB)
    lowmem  : 0xc0000000 - 0xf73fe000   ( 883 MB)
      .init : 0xc0efc000 - 0xc0fc3000   ( 796 kB)
      .data : 0xc0b3d36a - 0xc0efafc0   (3831 kB)
      .text : 0xc0400000 - 0xc0b3d36a   (7412 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=32 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS:2304 nr_irqs:1024 0
[    0.000000] CPU 0 irqstacks, hard=f4836000 soft=f483c000
[    0.000000] 	Offload RCU callbacks from all CPUs
[    0.000000] 	Offload RCU callbacks from CPUs: 0-3.
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Maximum core-clock to bus-clock ratio: 0xa
[    0.000000] Resolved frequency ID: 2, frequency: 133200 KHz
[    0.000000] TSC runs at 1332000 KHz
[    0.000000] lapic_timer_frequency = 133200
[    0.000000] tsc: Detected 1332.000 MHz processor
[    0.000045] Calibrating delay loop (skipped), value calculated using timer frequency.. 2664.00 BogoMIPS (lpj=1332000)
[    0.000055] pid_max: default: 32768 minimum: 301
[    0.000072] ACPI: Core revision 20150410
[    0.035735] ACPI: All ACPI Tables successfully acquired
[    0.036960] Security Framework initialized
[    0.036976] SELinux:  Initializing.
[    0.036995] SELinux:  Starting in enforcing mode
[    0.037095] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.037102] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.037555] Initializing cgroup subsys blkio
[    0.037565] Initializing cgroup subsys memory
[    0.037585] Initializing cgroup subsys devices
[    0.037594] Initializing cgroup subsys freezer
[    0.037602] Initializing cgroup subsys net_cls
[    0.037610] Initializing cgroup subsys perf_event
[    0.037619] Initializing cgroup subsys net_prio
[    0.037663] CPU: Physical Processor ID: 0
[    0.037668] CPU: Processor Core ID: 0
[    0.037675] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.037679] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.049693] mce: CPU supports 6 MCE banks
[    0.049707] CPU0: Thermal monitoring enabled (TM1)
[    0.049714] process: using mwait in idle threads
[    0.049724] Last level iTLB entries: 4KB 48, 2MB 0, 4MB 0
[    0.049729] Last level dTLB entries: 4KB 128, 2MB 16, 4MB 16, 1GB 0
[    0.050076] Freeing SMP alternatives memory: 24K (c0fc3000 - c0fc9000)
[    0.050102] Ignoring BGRT: invalid status 0 (expected 1)
[    0.053353] ftrace: allocating 30256 entries in 60 pages
[    0.079723] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.079783] TSC deadline timer enabled
[    0.079790] smpboot: CPU0: Intel(R) Atom(TM) CPU  Z3745  @ 1.33GHz (fam: 06, model: 37, stepping: 08)
[    0.079843] Performance Events: PEBS fmt2+, 8-deep LBR, Silvermont events, full-width counters, Intel PMU driver.
[    0.079866] ... version:                3
[    0.079870] ... bit width:              40
[    0.079874] ... generic registers:      2
[    0.079878] ... value mask:             000000ffffffffff
[    0.079881] ... max period:             000000ffffffffff
[    0.079885] ... fixed-purpose events:   3
[    0.079889] ... event mask:             0000000700000003
[    0.082421] CPU 1 irqstacks, hard=f4968000 soft=f496a000
[    0.082428] x86: Booting SMP configuration:
[    0.082433] .... node  #0, CPUs:      #1
[    0.093458] Initializing CPU#1
[    0.107744] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.
[    0.108123] CPU 2 irqstacks, hard=f4a14000 soft=f4a16000
[    0.108129]  #2
[    0.119149] Initializing CPU#2
[    0.133576] CPU 3 irqstacks, hard=f4a58000 soft=f4a5a000
[    0.133584]  #3
[    0.144604] Initializing CPU#3
[    0.158814] x86: Booted up 1 node, 4 CPUs
[    0.158824] smpboot: Total of 4 processors activated (10656.00 BogoMIPS)
[    0.160049] devtmpfs: initialized
[    0.161009] PM: Registering ACPI NVS region [mem 0x0008f000-0x0008ffff] (4096 bytes)
[    0.161017] PM: Registering ACPI NVS region [mem 0x78bd6000-0x78cd5fff] (1048576 bytes)
[    0.161063] PM: Registering ACPI NVS region [mem 0x7950f000-0x79e0efff] (9437184 bytes)
[    0.161654] clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
[    0.161924] atomic64_test: passed for i586+ platform with CX8 and with SSE
[    0.161933] pinctrl core: initialized pinctrl subsystem
[    0.162225] RTC time: 15:48:06, date: 05/13/15
[    0.162667] NET: Registered protocol family 16
[    0.165873] cpuidle: using governor menu
[    0.166238] ACPI: bus type PCI registered
[    0.166245] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.166470] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.166478] PCI: not using MMCONFIG
[    0.166817] PCI: Using configuration type 1 for base access
[    0.177009] ACPI: Added _OSI(Module Device)
[    0.177017] ACPI: Added _OSI(Processor Device)
[    0.177022] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.177027] ACPI: Added _OSI(Processor Aggregator Device)
[    0.203417] ACPI: Dynamic OEM Table Load:
[    0.203457] ACPI: SSDT 0x00000000F4A8F000 000338 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.205453] ACPI: Dynamic OEM Table Load:
[    0.205490] ACPI: SSDT 0x00000000F4812000 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.208109] ACPI: Dynamic OEM Table Load:
[    0.208144] ACPI: SSDT 0x00000000F4B30400 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.210074] ACPI: Dynamic OEM Table Load:
[    0.210108] ACPI: SSDT 0x00000000F4AEE180 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.213968] ACPI: Interpreter enabled
[    0.213992] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20150410/hwxface-580)
[    0.214007] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20150410/hwxface-580)
[    0.214019] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20150410/hwxface-580)
[    0.214032] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20150410/hwxface-580)
[    0.214044] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S5_] (20150410/hwxface-580)
[    0.214053] ACPI: (supports S0)
[    0.214058] ACPI: Using IOAPIC for interrupt routing
[    0.214120] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.219818] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[    0.219826] PCI: not using MMCONFIG
[    0.219870] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.222647] ACPI: Power Resource [USBC] (on)
[    0.231897] ACPI: Power Resource [PLPE] (on)
[    0.241372] ACPI: Power Resource [CLK0] (on)
[    0.241527] ACPI: Power Resource [CLK1] (on)
[    0.241793] ACPI: Power Resource [P28X] (off)
[    0.241930] ACPI: Power Resource [P18X] (off)
[    0.244659] ACPI: Power Resource [TCPR] (off)
[    0.254443] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.254461] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.254588] \_SB_.PCI0:_OSC invalid UUID
[    0.254594] _OSC request data:1 1e 0 
[    0.254608] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.255003] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.255351] PCI host bridge to bus 0000:00
[    0.255362] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.255370] pci_bus 0000:00: root bus resource [io  0x0070-0x0077]
[    0.255377] pci_bus 0000:00: root bus resource [io  0x0000-0x006f window]
[    0.255384] pci_bus 0000:00: root bus resource [io  0x0078-0x0cf7 window]
[    0.255391] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.255399] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
[    0.255405] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff window]
[    0.255412] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000fffff window]
[    0.255420] pci_bus 0000:00: root bus resource [mem 0x90c00000-0x90ffffff window]
[    0.255427] pci_bus 0000:00: root bus resource [mem 0x7af00001-0x7ef00000 window]
[    0.255434] pci_bus 0000:00: root bus resource [mem 0x80000000-0x908ffffe window]
[    0.255440] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed40fff window]
[    0.255460] pci 0000:00:00.0: [8086:0f00] type 00 class 0x060000
[    0.255714] pci 0000:00:02.0: [8086:0f31] type 00 class 0x030000
[    0.255739] pci 0000:00:02.0: reg 0x10: [mem 0x90000000-0x903fffff]
[    0.255760] pci 0000:00:02.0: reg 0x18: [mem 0x80000000-0x8fffffff pref]
[    0.255780] pci 0000:00:02.0: reg 0x20: [io  0x1000-0x1007]
[    0.256030] pci 0000:00:14.0: [8086:0f35] type 00 class 0x0c0330
[    0.256061] pci 0000:00:14.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    0.256148] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.256367] pci 0000:00:1a.0: [8086:0f18] type 00 class 0x108000
[    0.256397] pci 0000:00:1a.0: reg 0x10: [mem 0x90700000-0x907fffff]
[    0.256415] pci 0000:00:1a.0: reg 0x14: [mem 0x90600000-0x906fffff]
[    0.256522] pci 0000:00:1a.0: PME# supported from D0 D3hot
[    0.256749] pci 0000:00:1f.0: [8086:0f1c] type 00 class 0x060100
[    0.257020] pci_bus 0000:00: on NUMA node 0
[    0.257781] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.257980] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.258177] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.258372] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.258567] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.258787] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.258998] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.259215] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.260193] gpiochip_find_base: found new base at 410
[    0.260336] gpiochip_add: registered GPIOs 410 to 511 on device: INT33FC:00
[    0.260349] byt_gpio INT33FC:00: disabling GPIO 0
[    0.260359] byt_gpio INT33FC:00: disabling GPIO 1
[    0.260369] byt_gpio INT33FC:00: disabling GPIO 2
[    0.260379] byt_gpio INT33FC:00: disabling GPIO 3
[    0.260388] byt_gpio INT33FC:00: disabling GPIO 4
[    0.260398] byt_gpio INT33FC:00: disabling GPIO 5
[    0.260407] byt_gpio INT33FC:00: disabling GPIO 6
[    0.260474] byt_gpio INT33FC:00: disabling GPIO 38
[    0.260489] byt_gpio INT33FC:00: disabling GPIO 42
[    0.260499] byt_gpio INT33FC:00: disabling GPIO 43
[    0.260509] byt_gpio INT33FC:00: disabling GPIO 44
[    0.260518] byt_gpio INT33FC:00: disabling GPIO 45
[    0.260528] byt_gpio INT33FC:00: disabling GPIO 46
[    0.260537] byt_gpio INT33FC:00: disabling GPIO 47
[    0.260547] byt_gpio INT33FC:00: disabling GPIO 48
[    0.260557] byt_gpio INT33FC:00: disabling GPIO 49
[    0.260566] byt_gpio INT33FC:00: disabling GPIO 50
[    0.260576] byt_gpio INT33FC:00: disabling GPIO 51
[    0.260585] byt_gpio INT33FC:00: disabling GPIO 52
[    0.260595] byt_gpio INT33FC:00: disabling GPIO 53
[    0.260605] byt_gpio INT33FC:00: disabling GPIO 54
[    0.260614] byt_gpio INT33FC:00: disabling GPIO 55
[    0.260624] byt_gpio INT33FC:00: disabling GPIO 56
[    0.260635] byt_gpio INT33FC:00: disabling GPIO 58
[    0.260645] byt_gpio INT33FC:00: disabling GPIO 59
[    0.260654] byt_gpio INT33FC:00: disabling GPIO 60
[    0.260738] byt_gpio INT33FC:00: disabling GPIO 94
[    0.260749] byt_gpio INT33FC:00: disabling GPIO 95
[    0.260762] byt_gpio INT33FC:00: disabling GPIO 98
[    0.260773] byt_gpio INT33FC:00: disabling GPIO 100
[    0.260783] byt_gpio INT33FC:00: disabling GPIO 101
[    0.261427] gpiochip_find_base: found new base at 382
[    0.261515] gpiochip_add: registered GPIOs 382 to 409 on device: INT33FC:01
[    0.261531] byt_gpio INT33FC:01: disabling GPIO 3
[    0.261541] byt_gpio INT33FC:01: disabling GPIO 4
[    0.261550] byt_gpio INT33FC:01: disabling GPIO 5
[    0.261559] byt_gpio INT33FC:01: disabling GPIO 6
[    0.261568] byt_gpio INT33FC:01: disabling GPIO 7
[    0.261578] byt_gpio INT33FC:01: disabling GPIO 8
[    0.261587] byt_gpio INT33FC:01: disabling GPIO 9
[    0.261596] byt_gpio INT33FC:01: disabling GPIO 10
[    0.261605] byt_gpio INT33FC:01: disabling GPIO 11
[    0.261615] byt_gpio INT33FC:01: disabling GPIO 12
[    0.261624] byt_gpio INT33FC:01: disabling GPIO 13
[    0.261633] byt_gpio INT33FC:01: disabling GPIO 14
[    0.261642] byt_gpio INT33FC:01: disabling GPIO 15
[    0.261652] byt_gpio INT33FC:01: disabling GPIO 16
[    0.261661] byt_gpio INT33FC:01: disabling GPIO 17
[    0.261670] byt_gpio INT33FC:01: disabling GPIO 18
[    0.261680] byt_gpio INT33FC:01: disabling GPIO 19
[    0.261702] byt_gpio INT33FC:01: disabling GPIO 20
[    0.261712] byt_gpio INT33FC:01: disabling GPIO 21
[    0.261721] byt_gpio INT33FC:01: disabling GPIO 22
[    0.261731] byt_gpio INT33FC:01: disabling GPIO 23
[    0.261740] byt_gpio INT33FC:01: disabling GPIO 24
[    0.261749] byt_gpio INT33FC:01: disabling GPIO 25
[    0.261759] byt_gpio INT33FC:01: disabling GPIO 26
[    0.261768] byt_gpio INT33FC:01: disabling GPIO 27
[    0.262095] gpiochip_find_base: found new base at 338
[    0.262257] gpiochip_add: registered GPIOs 338 to 381 on device: INT33FC:02
[    0.262272] byt_gpio INT33FC:02: disabling GPIO 1
[    0.262283] byt_gpio INT33FC:02: disabling GPIO 2
[    0.262296] byt_gpio INT33FC:02: disabling GPIO 4
[    0.262308] byt_gpio INT33FC:02: disabling GPIO 6
[    0.262321] byt_gpio INT33FC:02: disabling GPIO 8
[    0.262332] byt_gpio INT33FC:02: disabling GPIO 9
[    0.262342] byt_gpio INT33FC:02: disabling GPIO 10
[    0.262364] byt_gpio INT33FC:02: disabling GPIO 16
[    0.262377] byt_gpio INT33FC:02: disabling GPIO 18
[    0.262390] byt_gpio INT33FC:02: disabling GPIO 20
[    0.262401] byt_gpio INT33FC:02: disabling GPIO 21
[    0.262411] byt_gpio INT33FC:02: disabling GPIO 22
[    0.262422] byt_gpio INT33FC:02: disabling GPIO 23
[    0.262432] byt_gpio INT33FC:02: disabling GPIO 24
[    0.262443] byt_gpio INT33FC:02: disabling GPIO 25
[    0.262453] byt_gpio INT33FC:02: disabling GPIO 26
[    0.262464] byt_gpio INT33FC:02: disabling GPIO 27
[    0.262474] byt_gpio INT33FC:02: disabling GPIO 28
[    0.262484] byt_gpio INT33FC:02: disabling GPIO 29
[    0.262495] byt_gpio INT33FC:02: disabling GPIO 30
[    0.273988] vgaarb: setting as boot device: PCI:0000:00:02.0
[    0.273997] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.274003] vgaarb: loaded
[    0.274008] vgaarb: bridge control possible 0000:00:02.0
[    0.274872] SCSI subsystem initialized
[    0.275012] libata version 3.00 loaded.
[    0.275396] spi_master spi32766: raised num_chipselect to 20 for WM510205:00
[    0.275796] ACPI: bus type USB registered
[    0.275887] usbcore: registered new interface driver usbfs
[    0.275925] usbcore: registered new interface driver hub
[    0.275992] usbcore: registered new device driver usb
[    0.276648] Advanced Linux Sound Architecture Driver Initialized.
[    0.276660] PCI: Using ACPI for IRQ routing
[    0.276666] PCI: pci_cache_line_size set to 64 bytes
[    0.276696] Expanded resource reserved due to conflict with PCI Bus 0000:00
[    0.276704] e820: reserve RAM buffer [mem 0x0008f000-0x0008ffff]
[    0.276709] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.276715] e820: reserve RAM buffer [mem 0x782d6000-0x7bffffff]
[    0.276721] e820: reserve RAM buffer [mem 0x7950f000-0x7bffffff]
[    0.276726] e820: reserve RAM buffer [mem 0x7a000000-0x7bffffff]
[    0.276731] e820: reserve RAM buffer [mem 0x7ad00000-0x7bffffff]
[    0.277119] NetLabel: Initializing
[    0.277124] NetLabel:  domain hash size = 128
[    0.277127] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.277161] NetLabel:  unlabeled traffic allowed by default
[    0.277508] Switched to clocksource refined-jiffies
[    0.306242] pnp: PnP ACPI init
[    0.306428] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.306630] system 00:01: [io  0x0680-0x069f] has been reserved
[    0.306639] system 00:01: [io  0x0400-0x047f] has been reserved
[    0.306647] system 00:01: [io  0x0500-0x05fe] has been reserved
[    0.306655] system 00:01: [io  0x0600-0x061f] has been reserved
[    0.306663] system 00:01: [io  0x164e-0x164f] has been reserved
[    0.306675] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.306975] pnp 00:02: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.309779] pnp: PnP ACPI: found 3 devices
[    0.317262] pci_bus 0000:00: resource 4 [io  0x0070-0x0077]
[    0.317271] pci_bus 0000:00: resource 5 [io  0x0000-0x006f window]
[    0.317279] pci_bus 0000:00: resource 6 [io  0x0078-0x0cf7 window]
[    0.317286] pci_bus 0000:00: resource 7 [io  0x0d00-0xffff window]
[    0.317294] pci_bus 0000:00: resource 8 [mem 0x000a0000-0x000bffff window]
[    0.317301] pci_bus 0000:00: resource 9 [mem 0x000c0000-0x000dffff window]
[    0.317308] pci_bus 0000:00: resource 10 [mem 0x000e0000-0x000fffff window]
[    0.317315] pci_bus 0000:00: resource 11 [mem 0x90c00000-0x90ffffff window]
[    0.317322] pci_bus 0000:00: resource 12 [mem 0x7af00001-0x7ef00000 window]
[    0.317329] pci_bus 0000:00: resource 13 [mem 0x80000000-0x908ffffe window]
[    0.317351] pci_bus 0000:00: resource 14 [mem 0xfed40000-0xfed40fff window]
[    0.317439] NET: Registered protocol family 2
[    0.317932] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.317986] TCP bind hash table entries: 8192 (order: 5, 163840 bytes)
[    0.318093] TCP: Hash tables configured (established 8192 bind 8192)
[    0.318140] UDP hash table entries: 512 (order: 2, 24576 bytes)
[    0.318164] UDP-Lite hash table entries: 512 (order: 2, 24576 bytes)
[    0.318299] NET: Registered protocol family 1
[    0.318340] pci 0000:00:02.0: Video device with shadowed ROM
[    0.318744] PCI: CLS 0 bytes, default 64
[    0.318911] Unpacking initramfs...
[    1.077194] Freeing initrd memory: 17084K (f634f000 - f73fe000)
[    1.077783] microcode: CPU0 sig=0x30678, pf=0x2, revision=0x829
[    1.077804] microcode: CPU1 sig=0x30678, pf=0x2, revision=0x829
[    1.077852] microcode: CPU2 sig=0x30678, pf=0x2, revision=0x829
[    1.077874] microcode: CPU3 sig=0x30678, pf=0x2, revision=0x829
[    1.078041] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    1.078952] apm: BIOS version 115.85 Flags 0x616f (Driver version 1.16ac)
[    1.078958] apm: disabled - APM is not SMP safe.
[    1.079192] simple-framebuffer simple-framebuffer.0: framebuffer at 0x80000000, 0x8ca000 bytes, mapped to 0xf8c00000
[    1.079201] simple-framebuffer simple-framebuffer.0: format=a8r8g8b8, mode=1200x1920x32, linelength=4800
[    1.113742] Console: switching to colour frame buffer device 150x120
[    1.146825] simple-framebuffer simple-framebuffer.0: fb0: simplefb registered!
[    1.154380] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    1.154419] Initialise system trusted keyring
[    1.154468] audit: initializing netlink subsys (enabled)
[    1.154513] audit: type=2000 audit(1431532087.009:1): initialized
[    1.155150] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    1.159950] zpool: loaded
[    1.159957] zbud: loaded
[    1.160246] VFS: Disk quotas dquot_6.6.0
[    1.160358] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.161488] Key type big_key registered
[    1.161497] SELinux:  Registering netfilter hooks
[    1.163470] alg: No test for stdrng (krng)
[    1.163494] NET: Registered protocol family 38
[    1.163512] Key type asymmetric registered
[    1.163519] Asymmetric key parser 'x509' registered
[    1.163575] bounce: pool size: 64 pages
[    1.163686] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    1.163790] io scheduler noop registered
[    1.163798] io scheduler deadline registered
[    1.163901] io scheduler cfq registered (default)
[    1.164328] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    1.164396] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    1.164500] intel_idle: MWAIT substates: 0x33000020
[    1.164506] intel_idle: v0.4 model 0x37
[    1.164510] intel_idle: lapic_timer_reliable_states 0xffffffff
[    1.165513] ACPI: AC Adapter [ADP1] (on-line)
[    1.165983] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0
[    1.166098] ACPI: Lid Switch [LID0]
[    1.170818] [Firmware Bug]: No valid trip found
[    1.170947] GHES: HEST is not enabled!
[    1.171139] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.191505] 00:02: ttyS0 at I/O 0x3f8 (irq = 203, base_baud = 115200) is a 16550A
[    1.192760] hpet: number irqs doesn't agree with number of timers
[    1.192941] Non-volatile memory driver v1.3
[    1.193054] Linux agpgart interface v0.103
[    1.193135] [drm] Initialized drm 1.1.0 20060810
[    1.195181] libphy: Fixed MDIO Bus: probed
[    1.195582] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    1.195719] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    1.196137] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x00009810
[    1.196151] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    1.196360] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.196368] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.196374] usb usb1: Product: xHCI Host Controller
[    1.196380] usb usb1: Manufacturer: Linux 4.1.0.26-rc3 xhci-hcd
[    1.196386] usb usb1: SerialNumber: 0000:00:14.0
[    1.196805] hub 1-0:1.0: USB hub found
[    1.196835] hub 1-0:1.0: 6 ports detected
[    1.198260] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    1.198404] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    1.198544] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    1.198552] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.198559] usb usb2: Product: xHCI Host Controller
[    1.198565] usb usb2: Manufacturer: Linux 4.1.0.26-rc3 xhci-hcd
[    1.198570] usb usb2: SerialNumber: 0000:00:14.0
[    1.198960] hub 2-0:1.0: USB hub found
[    1.198986] hub 2-0:1.0: 1 port detected
[    1.199404] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.199421] ehci-pci: EHCI PCI platform driver
[    1.199460] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.199474] ohci-pci: OHCI PCI platform driver
[    1.199510] uhci_hcd: USB Universal Host Controller Interface driver
[    1.199672] usbcore: registered new interface driver usbserial
[    1.199700] usbcore: registered new interface driver usbserial_generic
[    1.199726] usbserial: USB Serial support registered for generic
[    1.199823] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    2.243821] i8042: No controller found
[    2.244224] mousedev: PS/2 mouse device common for all mice
[    2.244799] ACPI Warning: Could not enable fixed event - RealTimeClock (4) (20150410/evxface-654)
[    2.245056] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
[    2.245194] rtc_cmos: probe of 00:00 failed with error -22
[    2.245417] device-mapper: uevent: version 1.0.3
[    2.245644] device-mapper: ioctl: 4.31.0-ioctl (2015-3-12) initialised: dm-devel@redhat.com
[    2.245919] Intel P-state driver initializing.
[    2.246249] sdhci: Secure Digital Host Controller Interface driver
[    2.246254] sdhci: Copyright(c) Pierre Ossman
[    2.247433] sdhci-acpi 80860F14:00: No vmmc regulator found
[    2.247440] sdhci-acpi 80860F14:00: No vqmmc regulator found
[    2.252498] mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
[    2.253699] sdhci-acpi INT33BB:00: No vmmc regulator found
[    2.253707] sdhci-acpi INT33BB:00: No vqmmc regulator found
[    2.258851] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    2.258993] sdhci-acpi 80860F14:01: GPIO lookup for consumer 80860F14:01 cd
[    2.259001] sdhci-acpi 80860F14:01: using ACPI for GPIO lookup
[    2.259009] acpi 80860F14:01: GPIO: looking up 80860F14:01 cd-gpios
[    2.259017] acpi 80860F14:01: GPIO: looking up 80860F14:01 cd-gpio
[    2.259023] acpi 80860F14:01: GPIO: looking up 0 in _CRS
[    2.260168] sdhci-acpi 80860F14:01: No vmmc regulator found
[    2.260173] sdhci-acpi 80860F14:01: No vqmmc regulator found
[    2.265256] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[    2.265340] ioremap error for 0x78789000-0x7878a000, requested 0x2, got 0x0
[    2.265481] EFI Variables Facility v0.08 2004-May-17
[    2.276022] clocksource tsc: mask: 0xffffffffffffffff max_cycles: 0x1333333ae14, max_idle_ns: 440795264474 ns
[    2.280256] Switched to clocksource tsc
[    2.282466] hidraw: raw HID events driver (C) Jiri Kosina
[    2.282773] usbcore: registered new interface driver usbhid
[    2.282777] usbhid: USB HID core driver
[    2.283461] ip_tables: (C) 2000-2006 Netfilter Core Team
[    2.283493] audit: type=1325 audit(1431532087.948:2): table=filter family=2 entries=0
[    2.284228] Initializing XFRM netlink socket
[    2.284245] NET: Registered protocol family 17
[    2.284982] Using IPI No-Shortcut mode
[    2.285584] Loading compiled-in X.509 certificates
[    2.291502] Loaded X.509 cert 'Magrathea: Glacier signing key: 0fb0674c7be57650c400f99c36e767ef51a011ef'
[    2.291531] registered taskstats version 1
[    2.295924]   Magic number: 15:348:841
[    2.296022] hctosys: unable to open rtc device (rtc0)
[    2.296398] PM: Hibernation image not present or could not be loaded.
[    2.296426] ALSA device list:
[    2.296429]   No soundcards found.
[    2.297118] Freeing unused kernel memory: 796K (c0efc000 - c0fc3000)
[    2.297985] Write protecting the kernel text: 7416k
[    2.298422] Write protecting the kernel read-only data: 3072k
[    2.302976] systemd[1]: Failed to insert module 'ipv6'
[    2.340931] random: systemd urandom read with 0 bits of entropy available
[    2.342867] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
[    2.343311] systemd[1]: Detected architecture 'x86'.
[    2.343322] systemd[1]: Running in initial RAM disk.
[    2.343386] systemd[1]: Set hostname to <yoga.fyedot.greenzone>.
[    2.368850] mmc0: MAN_BKOPS_EN bit is not set
[    2.378642] mmc0: new HS200 MMC card at address 0001
[    2.379068] mmcblk0: mmc0:0001 MBG4GC 29.1 GiB 
[    2.379154] mmcblk0boot0: mmc0:0001 MBG4GC partition 1 4.00 MiB
[    2.379314] mmcblk0boot1: mmc0:0001 MBG4GC partition 2 4.00 MiB
[    2.379398] mmcblk0rpmb: mmc0:0001 MBG4GC partition 3 4.00 MiB
[    2.387297]  mmcblk0: p1 p2 p3 p4
[    2.413136] systemd[1]: Unit type .busname is not supported on this system.
[    2.426738] systemd[1]: Cannot add dependency job for unit systemd-journald-audit.socket, ignoring: Unit systemd-journald-audit.socket failed to load: No such file or directory.
[    2.427513] systemd[1]: Reached target Local File Systems.
[    2.427542] systemd[1]: Starting Local File Systems.
[    2.427593] systemd[1]: Reached target Timers.
[    2.427617] systemd[1]: Starting Timers.
[    2.427651] systemd[1]: Reached target Swap.
[    2.427675] systemd[1]: Starting Swap.
[    2.428424] systemd[1]: Created slice -.slice.
[    2.428451] systemd[1]: Starting -.slice.
[    2.428601] systemd[1]: Listening on Journal Socket.
[    2.428629] systemd[1]: Starting Journal Socket.
[    2.428715] systemd[1]: Listening on Journal Socket (/dev/log).
[    2.428741] systemd[1]: Starting Journal Socket (/dev/log).
[    2.428816] systemd[1]: Listening on udev Kernel Socket.
[    2.428841] systemd[1]: Starting udev Kernel Socket.
[    2.428945] systemd[1]: Listening on udev Control Socket.
[    2.428971] systemd[1]: Starting udev Control Socket.
[    2.429006] systemd[1]: Reached target Sockets.
[    2.429031] systemd[1]: Starting Sockets.
[    2.429237] systemd[1]: Created slice System Slice.
[    2.429265] systemd[1]: Starting System Slice.
[    2.429589] systemd[1]: Started Load Kernel Modules.
[    2.430630] systemd[1]: Starting Journal Service...
[    2.430889] systemd[1]: Created slice system-systemd\x2dfsck.slice.
[    2.430917] systemd[1]: Starting system-systemd\x2dfsck.slice.
[    2.431979] systemd[1]: Starting Apply Kernel Variables...
[    2.432108] systemd[1]: Started dracut ask for additional cmdline parameters.
[    2.433807] systemd[1]: Starting dracut cmdline hook...
[    2.437681] systemd[1]: Starting Setup Virtual Console...
[    2.439681] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[    2.439757] systemd[1]: Reached target Slices.
[    2.439792] systemd[1]: Starting Slices.
[    2.442692] systemd[1]: Started Apply Kernel Variables.
[    2.443698] audit: type=1305 audit(1431532088.109:3): audit_enabled=1 old=1 auid=4294967295 ses=4294967295 subj=kernel res=1
[    2.443735] audit: type=1130 audit(1431532088.109:4): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=systemd-sysctl comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    2.444129] systemd-journald[124]: Failed to set file attributes: Inappropriate ioctl for device
[    2.449881] systemd[1]: Started Create list of required static device nodes for the current kernel.
[    2.449950] audit: type=1130 audit(1431532088.115:5): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=kmod-static-nodes comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    2.451363] systemd[1]: Starting Create Static Device Nodes in /dev...
[    2.459247] systemd[1]: Started Create Static Device Nodes in /dev.
[    2.459356] audit: type=1130 audit(1431532088.124:6): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=systemd-tmpfiles-setup-dev comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    2.478482] mmc1: new ultra high speed DDR50 SDIO card at address 0001
[    2.514406] systemd[1]: Started Journal Service.
[    2.514546] audit: type=1130 audit(1431532088.179:7): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=systemd-journald comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    2.532913] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    2.620330] audit: type=1130 audit(1431532088.285:8): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=dracut-cmdline comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    2.628925] audit: type=1130 audit(1431532088.294:9): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=systemd-vconsole-setup comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    2.682598] mmc2: new high speed SDHC card at address e624
[    2.682992] mmcblk1: mmc2:e624 SU32G 29.7 GiB 
[    2.690735]  mmcblk1: p1
[    2.700163] audit: type=1130 audit(1431532088.365:10): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel msg='unit=dracut-pre-udev comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    2.708888] usb 1-1: New USB device found, idVendor=05e3, idProduct=0608
[    2.708896] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    2.708901] usb 1-1: Product: USB2.0 Hub
[    2.709687] hub 1-1:1.0: USB hub found
[    2.709978] hub 1-1:1.0: 4 ports detected
[    2.981309] usb 1-1.2: new high-speed USB device number 3 using xhci_hcd
[    3.058714] usb 1-1.2: New USB device found, idVendor=05e3, idProduct=0608
[    3.058723] usb 1-1.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    3.058727] usb 1-1.2: Product: USB2.0 Hub
[    3.059819] hub 1-1.2:1.0: USB hub found
[    3.060104] hub 1-1.2:1.0: 4 ports detected
[    3.121295] EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Opts: (null)
[    3.339159] usb 1-1.2.2: new low-speed USB device number 4 using xhci_hcd
[    3.423567] usb 1-1.2.2: New USB device found, idVendor=046d, idProduct=c517
[    3.423575] usb 1-1.2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    3.423580] usb 1-1.2.2: Product: USB Receiver
[    3.423584] usb 1-1.2.2: Manufacturer: Logitech
[    3.423823] usb 1-1.2.2: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
[    3.423833] usb 1-1.2.2: ep 0x82 - rounding interval to 64 microframes, ep desc says 80 microframes
[    3.427160] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2:1.0/0003:046D:C517.0001/input/input1
[    3.480324] logitech 0003:046D:C517.0001: input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Receiver] on usb-0000:00:14.0-1.2.2/input0
[    3.486378] logitech 0003:046D:C517.0002: fixing up Logitech keyboard report descriptor
[    3.487854] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2:1.1/0003:046D:C517.0002/input/input2
[    3.541723] logitech 0003:046D:C517.0002: input,hiddev0,hidraw1: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:14.0-1.2.2/input1
[    3.605231] usb 1-1.2.3: new high-speed USB device number 5 using xhci_hcd
[    3.672234] systemd-journald[124]: Received SIGTERM from PID 1 (systemd).
[    3.688771] usb 1-1.2.3: New USB device found, idVendor=0b95, idProduct=1790
[    3.688779] usb 1-1.2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    3.688784] usb 1-1.2.3: Product: AX88179
[    3.688788] usb 1-1.2.3: Manufacturer: ASIX Elec. Corp.
[    3.688792] usb 1-1.2.3: SerialNumber: 00000000000001
[    3.816937] SELinux: 32768 avtab hash slots, 105082 rules.
[    3.855149] SELinux: 32768 avtab hash slots, 105082 rules.
[    3.921230] SELinux:  8 users, 103 roles, 4989 types, 294 bools, 1 sens, 1024 cats
[    3.921239] SELinux:  83 classes, 105082 rules
[    3.932584] SELinux:  Permission audit_read in class capability2 not defined in policy.
[    3.932600] SELinux:  Class binder not defined in policy.
[    3.932604] SELinux: the above unknown classes and permissions will be allowed
[    3.932614] SELinux:  Completing initialization.
[    3.932616] SELinux:  Setting up existing superblocks.
[    3.966465] systemd[1]: Successfully loaded SELinux policy in 192.404ms.
[    4.007808] systemd[1]: Failed to insert module 'ipv6'
[    4.068842] systemd[1]: Relabelled /dev and /run in 50.979ms.
[    4.153514] systemd-sysv-generator[357]: Overwriting existing symlink /run/systemd/generator.late/network.service with real service
[    4.153655] systemd-sysv-generator[357]: Overwriting existing symlink /run/systemd/generator.late/livesys-late.service with real service
[    4.154373] systemd-sysv-generator[357]: Overwriting existing symlink /run/systemd/generator.late/netconsole.service with real service
[    4.154483] systemd-sysv-generator[357]: Overwriting existing symlink /run/systemd/generator.late/livesys.service with real service
[    4.495495] systemd-journald[392]: Failed to issue audit enable call: Permission denied
[    4.575841] EXT4-fs (mmcblk0p4): re-mounted. Opts: (null)
[    4.629720] RPC: Registered named UNIX socket transport module.
[    4.629728] RPC: Registered udp transport module.
[    4.629731] RPC: Registered tcp transport module.
[    4.629734] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    4.636350] systemd-journald[392]: Received request to flush runtime journal from PID 1
[    5.217623] rfkill_gpio LNV4752:00: GPIO lookup for consumer reset
[    5.217631] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
[    5.217638] acpi LNV4752:00: GPIO: looking up reset-gpios
[    5.217645] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 0 0 0
[    5.217725] no flags found for reset
[    5.217736] rfkill_gpio LNV4752:00: GPIO lookup for consumer shutdown
[    5.217740] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
[    5.217745] acpi LNV4752:00: GPIO: looking up shutdown-gpios
[    5.217751] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 1 0 0
[    5.217788] acpi LNV4752:00: GPIO: looking up shutdown-gpio
[    5.217794] acpi LNV4752:00: GPIO: looking up 0 in _CRS
[    5.217830] gpio-411 (reset): gpiod_request: status -16
[    5.217927] rfkill_gpio LNV4752:00: LNV4752:00 device registered.
[    5.246179] sst-acpi 80860F28:00: No matching ASoC machine driver found
[    5.264608] BUG: unable to handle kernel NULL pointer dereference at 00000020
[    5.264621] IP: [<f7df103f>] arizona_spi_probe+0x1f/0xec [arizona_spi]
[    5.264631] *pde = 00000000 
[    5.264636] Oops: 0000 [#1] SMP 
[    5.264641] Modules linked in: pcc_cpufreq(-) arizona_spi(+) snd_soc_sst_acpi(+) pwm_lpss_platform acpi_cpufreq(-) rfkill_gpio arizona_i2c mei pwm_lpss lpc_ich i2c_designware_core rfkill sunrpc
[    5.264665] CPU: 3 PID: 444 Comm: systemd-udevd Not tainted 4.1.0.26-rc3 #127
[    5.264669] Hardware name: LENOVO 60072/INVALID, BIOS 02WT18WW 08/01/2014
[    5.264674] task: f6fbe420 ti: f280e000 task.ti: f280e000
[    5.264678] EIP: 0060:[<f7df103f>] EFLAGS: 00010246 CPU: 3
[    5.264683] EIP is at arizona_spi_probe+0x1f/0xec [arizona_spi]
[    5.264687] EAX: 00000000 EBX: f4bbb800 ECX: f7df3010 EDX: f7df20c8
[    5.264691] ESI: 00000000 EDI: f7df3000 EBP: f280fce8 ESP: f280fccc
[    5.264694]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[    5.264698] CR0: 8005003b CR2: 00000020 CR3: 3284a000 CR4: 001007d0
[    5.264701] Stack:
[    5.264704]  f280007b c074007b f4bb00d8 f4bb00e0 00000000 f4bbb800 f7df3000 f280fcfc
[    5.264715]  c091b3c4 f4bbb800 f7df3010 00000000 f280fd30 c08a13fa f7df3060 f7df3010
[    5.264727]  f280fd1c c0746527 5c7d87d3 f4bbb834 0000000f f4bbb834 f4bbb800 f7df3010
[    5.264737] Call Trace:
[    5.264748]  [<c074007b>] ? efifb_probe+0x7b/0x220
[    5.264757]  [<c091b3c4>] spi_drv_probe+0x34/0x60
[    5.264764]  [<c08a13fa>] driver_probe_device+0x1ba/0x400
[    5.264770]  [<c0746527>] ? acpi_driver_match_device+0x36/0x3f
[    5.264776]  [<c08a16f1>] __driver_attach+0x71/0x80
[    5.264781]  [<c08a1680>] ? __device_attach+0x40/0x40
[    5.264786]  [<c089f6b7>] bus_for_each_dev+0x57/0xa0
[    5.264792]  [<c08a0dde>] driver_attach+0x1e/0x20
[    5.264796]  [<c08a1680>] ? __device_attach+0x40/0x40
[    5.264801]  [<c08a0a27>] bus_add_driver+0x157/0x230
[    5.264807]  [<f7df6000>] ? 0xf7df6000
[    5.264811]  [<f7df6000>] ? 0xf7df6000
[    5.264816]  [<c08a1df9>] driver_register+0x59/0xe0
[    5.264823]  [<c06d3760>] ? kvasprintf+0x40/0x50
[    5.264828]  [<c091b341>] spi_register_driver+0x41/0x50
[    5.264835]  [<f7df600d>] arizona_spi_driver_init+0xd/0x1000 [arizona_spi]
[    5.264841]  [<c0400472>] do_one_initcall+0xc2/0x1f0
[    5.264845]  [<f7df6000>] ? 0xf7df6000
[    5.264852]  [<c052b2e3>] ? free_pages_prepare+0x1c3/0x360
[    5.264859]  [<c0569c85>] ? kmem_cache_alloc_trace+0x175/0x1e0
[    5.264865]  [<c0b2e24e>] ? do_init_module+0x24/0x1ae
[    5.264870]  [<c0b2e27d>] do_init_module+0x53/0x1ae
[    5.264877]  [<c04c4e54>] load_module+0x1034/0x16b0
[    5.264884]  [<c04c1e69>] ? copy_module_from_fd.isra.48+0x109/0x1a0
[    5.264891]  [<c04c56bd>] SyS_finit_module+0x8d/0xd0
[    5.264897]  [<c053f053>] ? vm_mmap_pgoff+0x93/0xb0
[    5.264905]  [<c0b3b20f>] sysenter_do_call+0x12/0x12
[    5.264908] Code: 8d b6 00 00 00 00 8d bf 00 00 00 00 55 89 e5 57 56 53 83 ec 10 3e 8d 74 26 00 89 c3 e8 6b b2 b2 c8 89 c6 8b 83 70 01 00 00 85 c0 <8b> 46 20 74 24 89 44 24 08 c7 44 24 04 24 20 df f7 89 1c 24 e8
[    5.264978] EIP: [<f7df103f>] arizona_spi_probe+0x1f/0xec [arizona_spi] SS:ESP 0068:f280fccc
[    5.264985] CR2: 0000000000000020
[    5.264991] ---[ end trace 036db66979862189 ]---
[    5.374431] intel_sst_acpi 80860F28:00: No matching machine driver found
[    5.436927] random: nonblocking pool is initialized
[    5.665524] mei_txe 0000:00:1a.0: NFC MEI VERSION: IVN 0x1 Vendor ID 0x1 Type 0x1
[    5.713785] ACPI: Battery Slot [BATC] (battery present)
[    5.714016] soc_button_array INTCFD9:00: GPIO lookup for consumer soc_button_array
[    5.714038] soc_button_array INTCFD9:00: using ACPI for GPIO lookup
[    5.714045] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpios
[    5.714051] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpio
[    5.714056] acpi INTCFD9:00: GPIO: looking up 2 in _CRS
[    5.714154] no flags found for soc_button_array
[    5.714165] soc_button_array INTCFD9:00: GPIO lookup for consumer soc_button_array
[    5.714169] soc_button_array INTCFD9:00: using ACPI for GPIO lookup
[    5.714174] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpios
[    5.714180] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpio
[    5.714184] acpi INTCFD9:00: GPIO: looking up 3 in _CRS
[    5.714225] no flags found for soc_button_array
[    5.714322] soc_button_array INTCFD9:00: GPIO lookup for consumer soc_button_array
[    5.714328] soc_button_array INTCFD9:00: using ACPI for GPIO lookup
[    5.714333] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpios
[    5.714338] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpio
[    5.714343] acpi INTCFD9:00: GPIO: looking up 0 in _CRS
[    5.714385] no flags found for soc_button_array
[    5.714394] soc_button_array INTCFD9:00: GPIO lookup for consumer soc_button_array
[    5.714399] soc_button_array INTCFD9:00: using ACPI for GPIO lookup
[    5.714404] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpios
[    5.714409] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpio
[    5.714413] acpi INTCFD9:00: GPIO: looking up 1 in _CRS
[    5.714453] no flags found for soc_button_array
[    5.714462] soc_button_array INTCFD9:00: GPIO lookup for consumer soc_button_array
[    5.714466] soc_button_array INTCFD9:00: using ACPI for GPIO lookup
[    5.714471] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpios
[    5.714476] acpi INTCFD9:00: GPIO: looking up soc_button_array-gpio
[    5.714481] acpi INTCFD9:00: GPIO: looking up 4 in _CRS
[    5.714516] soc_button_array INTCFD9:00: using lookup tables for GPIO lookup
[    5.714522] soc_button_array INTCFD9:00: lookup for GPIO soc_button_array failed
[    5.752185] i2c i2c-4: Failed to register i2c client MAGN0001:00 at 0x1d (-16)
[    5.752194] i2c i2c-4: failed to add I2C device MAGN0001:00 from ACPI
[    5.753526] intel_soc_pmic_i2c i2c-INT33FD:00: GPIO lookup for consumer intel_soc_pmic
[    5.753535] intel_soc_pmic_i2c i2c-INT33FD:00: using ACPI for GPIO lookup
[    5.753542] acpi INT33FD:00: GPIO: looking up intel_soc_pmic-gpios
[    5.753548] acpi INT33FD:00: GPIO: looking up intel_soc_pmic-gpio
[    5.753553] acpi INT33FD:00: GPIO: looking up 0 in _CRS
[    5.756790] intel_soc_pmic_i2c i2c-INT33FD:00: using lookup tables for GPIO lookup
[    5.756801] intel_soc_pmic_i2c i2c-INT33FD:00: lookup for GPIO intel_soc_pmic failed
[    5.768906] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[    5.773372] dw_dmac INTL9C60:01: DesignWare DMA Controller, 8 channels
[    5.919998] input: PC Speaker as /devices/platform/pcspkr/input/input3
[    6.183259] iTCO_vendor_support: vendor-support=0
[    6.185711] alg: No test for crc32 (crc32-pclmul)
[    6.277113] cfg80211: Calling CRDA to update world regulatory domain
[    6.284864] input: gpio-keys as /devices/platform/gpio-keys.0.auto/input/input4
[    6.285213] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.11
[    6.285375] iTCO_wdt: Found a Bay Trail SoC TCO device (Version=3, TCOBASE=0x0460)
[    6.301552] input: gpio-keys as /devices/platform/gpio-keys.1.auto/input/input5
[    6.302140] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[    6.378561] Adding 2097148k swap on /dev/mmcblk0p3.  Priority:-1 extents:1 across:2097148k SSFS
[    6.411082] intel_rapl: Found RAPL domain package
[    6.411085] intel_rapl: Found RAPL domain core
[    6.545117] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    6.567254] cfg80211: World regulatory domain updated:
[    6.567259] cfg80211:  DFS Master region: unset
[    6.567259] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[    6.567264] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    6.567266] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    6.567268] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)
[    6.567272] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[    6.567275] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[    6.567277] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)
[    6.567279] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)
[    6.567282] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)
[    6.690449] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[    6.756534] brcmfmac: brcmf_sdio_drivestrengthinit: No SDIO Drive strength init done for chip 4324 rev 5 pmurev 17
[    6.757005] usbcore: registered new interface driver brcmfmac
[    6.833843] input: SYNA0001:00 2ABB:8101 as /devices/platform/80860F41:05/i2c-5/i2c-SYNA0001:00/0018:2ABB:8101.0003/input/input6
[    6.847205] hid-multitouch 0018:2ABB:8101.0003: input,hidraw2: <UNKNOWN> HID v1.00 Device [SYNA0001:00 2ABB:8101] on 
[    6.923702] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Jul 17 2013 07:36:07 version 6.10.197.71 (r412987) FWID 01-882d2634
[    6.945256] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
[    7.010579] cfg80211: Calling CRDA for country: DE
[    7.030780] audit_printk_skb: 177 callbacks suppressed
[    7.030783] audit: type=1130 audit(1431532092.694:68): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-rfkill@rfkill1 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    7.061644] cfg80211: Regulatory domain changed to country: DE
[    7.061649] cfg80211:  DFS Master region: ETSI
[    7.061649] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time)
[    7.061654] cfg80211:   (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)
[    7.061659] cfg80211:   (5150000 KHz - 5250000 KHz @ 80000 KHz, 200000 KHz AUTO), (N/A, 2000 mBm), (N/A)
[    7.061663] cfg80211:   (5250000 KHz - 5350000 KHz @ 80000 KHz, 200000 KHz AUTO), (N/A, 2000 mBm), (0 s)
[    7.061667] cfg80211:   (5470000 KHz - 5725000 KHz @ 160000 KHz), (N/A, 2698 mBm), (0 s)
[    7.061670] cfg80211:   (57000000 KHz - 66000000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)
[    7.461730] ax88179_178a 1-1.2.3:1.0 eth0: register 'ax88179_178a' at usb-0000:00:14.0-1.2.3, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:fe:c8:f7:bc:d9
[    7.461781] usbcore: registered new interface driver ax88179_178a
[    7.475680] ax88179_178a 1-1.2.3:1.0 enp0s20u1u2u3: renamed from eth0
[  184.793770] audit: type=1130 audit(1431532270.404:69): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-udev-settle comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'
[  184.863823] audit: type=1130 audit(1431532270.474:70): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=dmraid-activation comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[  184.863879] audit: type=1131 audit(1431532270.474:71): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=dmraid-activation comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[  184.902080] audit: type=1130 audit(1431532270.512:72): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=plymouth-read-write comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[  184.902138] audit: type=1131 audit(1431532270.512:73): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=plymouth-read-write comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[  185.582224] audit: type=1130 audit(1431532271.192:74): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=systemd-tmpfiles-setup comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[  185.598090] audit: type=1305 audit(1431532271.208:75): auid=4294967295 ses=4294967295 subj=system_u:system_r:auditctl_t:s0 op="add_rule" key=(null) list=1 res=1
[  185.601953] audit: type=1130 audit(1431532271.212:76): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=auditd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[  185.614988] audit: type=1305 audit(1431532271.225:77): audit_enabled=1 old=1 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
[  187.620290] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[  188.366456] brcmfmac: brcmf_add_if: ERROR: netdev:wlan0 already exists
[  188.366466] brcmfmac: brcmf_add_if: ignore IF event
[  191.397773] ax88179_178a 1-1.2.3:1.0 enp0s20u1u2u3: ax88179 - Link status is: 1

Comments

Pierre-Louis Bossart May 18, 2015, 4:29 p.m. UTC | #1
On 5/15/15 4:16 AM, Christian Hartmann wrote:
> Hi list,
>
>
> I need ACPI support for the arizona-core / arizona-spi driver for the
> ACPI ID WM5102.
> This audio codec is build into the Lenovo Yoga 851F. This device is a
> 32Bit (UEFI) system
>
> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>
>
> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
> working with Fedora / Fedlet was the initial install image.
>
> With all vanilla kernels I got at first an error message from spi32766:
>
> [    0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
> [    0.296311] spi_master spi32766: failed to add SPI device
> WM510205:00 from ACPI
>
> so I have at first patched as suggested by broonie the arizona-core
>
> commit 48203a0fede057d6a8c5f6872c53326395350f45
> Author: somebody anybody <somebody@foobar.com>
> Date:   Mon May 11 13:35:43 2015 +0200
>
>      spi-pxa2xx : raise chipselect
>
>      Signed-off-by: somebody anybody <somebody@foobar.com>
>
> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
> index e3223ac..9c919ea 100644
> --- a/drivers/spi/spi-pxa2xx.c
> +++ b/drivers/spi/spi-pxa2xx.c
> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev)
>          if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0, &devid))
>                  ssp->port_id = devid;
>
> -       pdata->num_chipselect = 1;
> +       pdata->num_chipselect = 20;
>          pdata->enable_dma = true;
>
>          return pdata;
>
> This leds the spi master do the further ACPI configuration and inital
> setup for the arizona-spi device, but adding the ACPI ID to it
> does not work yet as expected:
>
> The current last patchset on top of master is
>
>
> Author: somebody anybody <somebody@foobar.com>
> Date:   Wed May 13 11:36:25 2015 +0200
>
>      arizona : added ACPI id of wm5102 to SPI driver, too
>
>      Signed-off-by: somebody anybody <somebody@foobar.com>
>
> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
> index 1e845f6..c19a4c1 100644
> --- a/drivers/mfd/arizona-spi.c
> +++ b/drivers/mfd/arizona-spi.c
> @@ -17,6 +17,7 @@
>   #include <linux/regulator/consumer.h>
>   #include <linux/slab.h>
>   #include <linux/spi/spi.h>
> +#include <linux/acpi.h>
>   #include <linux/of.h>
>
>   #include <linux/mfd/arizona/core.h>
> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device *spi)
>          return 0;
>   }
>
> +#ifdef CONFIG_ACPI
> +static struct acpi_device_id wm5102_acpi_match[] = {
> +               { "WM5102", 0},
> +               { "WM510205", 0},
> +               { },
> +};
> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
> +#endif
> +
>   static const struct spi_device_id arizona_spi_ids[] = {
>          { "wm5102", WM5102 },
>          { "wm5110", WM5110 },
> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>                  .owner  = THIS_MODULE,
>                  .pm     = &arizona_pm_ops,
>                  .of_match_table = of_match_ptr(arizona_of_match),
> +#ifdef CONFIG_ACPI
> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
> +#endif
>          },
>          .probe          = arizona_spi_probe,
>          .remove         = arizona_spi_remove,
>
>
>
>
> commit 268e21d29c942205e40f749c6d71c77839dc67da
> Author: somebody anybody <somebody@foobar.com>
> Date:   Wed May 13 11:36:04 2015 +0200
>
>      arizona : added ACPI id of wm5102 to i2c driver
>
>      Signed-off-by: somebody anybody <somebody@foobar.com>
>
> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
> index ff782a5..45ece1b 100644
> --- a/drivers/mfd/arizona-i2c.c
> +++ b/drivers/mfd/arizona-i2c.c
> @@ -18,6 +18,7 @@
>   #include <linux/regulator/consumer.h>
>   #include <linux/slab.h>
>   #include <linux/of.h>
> +#include <linux/acpi.h>
>
>   #include <linux/mfd/arizona/core.h>
>
> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client *i2c)
>          return 0;
>   }
>
> +#ifdef CONFIG_ACPI
> +static struct acpi_device_id wm5102_acpi_match[] = {
> +               { "WM5102", 0},
> +               { "WM510205", 0},
> +               { },

Those IDs don't really look like ACPI ones? Isn't there a rule that the 
_HID is represented by a 4-letter vendor ID followed by part ID? see 
http://www.uefi.org/PNP_ACPI_Registry


> +};
> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
> +#endif
> +
>   static const struct i2c_device_id arizona_i2c_id[] = {
>          { "wm5102", WM5102 },
>          { "wm5110", WM5110 },
> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>                  .owner  = THIS_MODULE,
>                  .pm     = &arizona_pm_ops,
>                  .of_match_table = of_match_ptr(arizona_of_match),
> +#ifdef CONFIG_ACPI
> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
> +#endif
>          },
>          .probe          = arizona_i2c_probe,
>          .remove         = arizona_i2c_remove,
>
>
>
> with these two patches the local master branch compiles fine, but at
> initialzing the arizona-spi driver gots a NULL pointer exception.
>
> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>
> I need some assistance or hints to the right direction, I am looking
> myself and I also try what I can, but I think it would be easy peasy
> with some experts like here on this list :)
>
>
> PS: the message : spi_master spi32766: raised num_chipselect to 20 for
> WM510205:00
>
> is a dev_err() line added to the function static acpi_status
> acpi_spi_add_device(), there I had raised the num_chipselect first
> (that was wrong, the raise is now done as in the first patch above.
> this is only a debug message and will be removed soon)
>
>
> PPS: for me it seems that there is a missing 'link' from WM5102 to the
> sst-acpi 80860F28:00 device, which complaints NOW / the first time
> with the three patches applied on top on master.... will have a look
> into it.
>
> I hope I got this device working with some more help from you.
>
> cheers
> chris
>
>
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
Christian Hartmann May 19, 2015, 9:04 a.m. UTC | #2
Hi,

so the ACPI id string, which I want to add to arizona-spi.c should be

WM510205 ??

I have changed the ACPI string to

{"WM510205", WM5102},

now and give it a try.

cheers
chris

2015-05-18 18:29 GMT+02:00 Pierre-Louis Bossart
<pierre-louis.bossart@linux.intel.com>:
> On 5/15/15 4:16 AM, Christian Hartmann wrote:
>>
>> Hi list,
>>
>>
>> I need ACPI support for the arizona-core / arizona-spi driver for the
>> ACPI ID WM5102.
>> This audio codec is build into the Lenovo Yoga 851F. This device is a
>> 32Bit (UEFI) system
>>
>>
>> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>>
>>
>> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
>> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
>> working with Fedora / Fedlet was the initial install image.
>>
>> With all vanilla kernels I got at first an error message from spi32766:
>>
>> [ 0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>> [ 0.296311] spi_master spi32766: failed to add SPI device
>> WM510205:00 from ACPI
>>
>> so I have at first patched as suggested by broonie the arizona-core
>>
>> commit 48203a0fede057d6a8c5f6872c53326395350f45
>> Author: somebody anybody <somebody@foobar.com>
>> Date:   Mon May 11 13:35:43 2015 +0200
>>
>>      spi-pxa2xx : raise chipselect
>>
>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>
>> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
>> index e3223ac..9c919ea 100644
>> --- a/drivers/spi/spi-pxa2xx.c
>> +++ b/drivers/spi/spi-pxa2xx.c
>> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct platform_device
>> *pdev)
>>          if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0,
>> &devid))
>>                  ssp->port_id = devid;
>>
>> -       pdata->num_chipselect = 1;
>> +       pdata->num_chipselect = 20;
>>          pdata->enable_dma = true;
>>
>>          return pdata;
>>
>> This leds the spi master do the further ACPI configuration and inital
>> setup for the arizona-spi device, but adding the ACPI ID to it
>> does not work yet as expected:
>>
>> The current last patchset on top of master is
>>
>>
>> Author: somebody anybody <somebody@foobar.com>
>> Date:   Wed May 13 11:36:25 2015 +0200
>>
>>      arizona : added ACPI id of wm5102 to SPI driver, too
>>
>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>
>> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
>> index 1e845f6..c19a4c1 100644
>> --- a/drivers/mfd/arizona-spi.c
>> +++ b/drivers/mfd/arizona-spi.c
>> @@ -17,6 +17,7 @@
>>   #include <linux/regulator/consumer.h>
>>   #include <linux/slab.h>
>>   #include <linux/spi/spi.h>
>> +#include <linux/acpi.h>
>>   #include <linux/of.h>
>>
>>   #include <linux/mfd/arizona/core.h>
>> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device *spi)
>>          return 0;
>>   }
>>
>> +#ifdef CONFIG_ACPI
>> +static struct acpi_device_id wm5102_acpi_match[] = {
>> +               { "WM5102", 0},
>> +               { "WM510205", 0},
>> +               { },
>> +};
>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>> +#endif
>> +
>>   static const struct spi_device_id arizona_spi_ids[] = {
>>          { "wm5102", WM5102 },
>>          { "wm5110", WM5110 },
>> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>>                  .owner  = THIS_MODULE,
>>                  .pm     = &arizona_pm_ops,
>>                  .of_match_table = of_match_ptr(arizona_of_match),
>> +#ifdef CONFIG_ACPI
>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>> +#endif
>>          },
>>          .probe          = arizona_spi_probe,
>>          .remove         = arizona_spi_remove,
>>
>>
>>
>>
>> commit 268e21d29c942205e40f749c6d71c77839dc67da
>> Author: somebody anybody <somebody@foobar.com>
>> Date:   Wed May 13 11:36:04 2015 +0200
>>
>>      arizona : added ACPI id of wm5102 to i2c driver
>>
>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>
>> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
>> index ff782a5..45ece1b 100644
>> --- a/drivers/mfd/arizona-i2c.c
>> +++ b/drivers/mfd/arizona-i2c.c
>> @@ -18,6 +18,7 @@
>>   #include <linux/regulator/consumer.h>
>>   #include <linux/slab.h>
>>   #include <linux/of.h>
>> +#include <linux/acpi.h>
>>
>>   #include <linux/mfd/arizona/core.h>
>>
>> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client *i2c)
>>          return 0;
>>   }
>>
>> +#ifdef CONFIG_ACPI
>> +static struct acpi_device_id wm5102_acpi_match[] = {
>> +               { "WM5102", 0},
>> +               { "WM510205", 0},
>> +               { },
>
>
> Those IDs don't really look like ACPI ones? Isn't there a rule that the _HID
> is represented by a 4-letter vendor ID followed by part ID? see
> http://www.uefi.org/PNP_ACPI_Registry
>
>
>> +};
>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>> +#endif
>> +
>>   static const struct i2c_device_id arizona_i2c_id[] = {
>>          { "wm5102", WM5102 },
>>          { "wm5110", WM5110 },
>> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>>                  .owner  = THIS_MODULE,
>>                  .pm     = &arizona_pm_ops,
>>                  .of_match_table = of_match_ptr(arizona_of_match),
>> +#ifdef CONFIG_ACPI
>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>> +#endif
>>          },
>>          .probe          = arizona_i2c_probe,
>>          .remove         = arizona_i2c_remove,
>>
>>
>>
>> with these two patches the local master branch compiles fine, but at
>> initialzing the arizona-spi driver gots a NULL pointer exception.
>>
>> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>>
>> I need some assistance or hints to the right direction, I am looking
>> myself and I also try what I can, but I think it would be easy peasy
>> with some experts like here on this list :)
>>
>>
>> PS: the message : spi_master spi32766: raised num_chipselect to 20 for
>> WM510205:00
>>
>> is a dev_err() line added to the function static acpi_status
>> acpi_spi_add_device(), there I had raised the num_chipselect first
>> (that was wrong, the raise is now done as in the first patch above.
>> this is only a debug message and will be removed soon)
>>
>>
>> PPS: for me it seems that there is a missing 'link' from WM5102 to the
>> sst-acpi 80860F28:00 device, which complaints NOW / the first time
>> with the three patches applied on top on master.... will have a look
>> into it.
>>
>> I hope I got this device working with some more help from you.
>>
>> cheers
>> chris
>>
>>
>>
>> _______________________________________________
>> Alsa-devel mailing list
>> Alsa-devel@alsa-project.org
>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>
>
Christian Hartmann May 19, 2015, 1:39 p.m. UTC | #3
Hi,

at the moment I am totally confused. I thought adding an ACPI ID is
trivial, but it is not.

I have again a null pointer exception in arizona_spi_probe()

could it be with the new num_chipselect value in spi-pxa2xx.c ??
I attach the trace of the last try

Any hints or tips are welcome.

cheers
chris

2015-05-19 11:04 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
> Hi,
>
> so the ACPI id string, which I want to add to arizona-spi.c should be
>
> WM510205 ??
>
> I have changed the ACPI string to
>
> {"WM510205", WM5102},
>
> now and give it a try.
>
> cheers
> chris
>
> 2015-05-18 18:29 GMT+02:00 Pierre-Louis Bossart
> <pierre-louis.bossart@linux.intel.com>:
>> On 5/15/15 4:16 AM, Christian Hartmann wrote:
>>>
>>> Hi list,
>>>
>>>
>>> I need ACPI support for the arizona-core / arizona-spi driver for the
>>> ACPI ID WM5102.
>>> This audio codec is build into the Lenovo Yoga 851F. This device is a
>>> 32Bit (UEFI) system
>>>
>>>
>>> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>>>
>>>
>>> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
>>> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
>>> working with Fedora / Fedlet was the initial install image.
>>>
>>> With all vanilla kernels I got at first an error message from spi32766:
>>>
>>> [ 0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>>> [ 0.296311] spi_master spi32766: failed to add SPI device
>>> WM510205:00 from ACPI
>>>
>>> so I have at first patched as suggested by broonie the arizona-core
>>>
>>> commit 48203a0fede057d6a8c5f6872c53326395350f45
>>> Author: somebody anybody <somebody@foobar.com>
>>> Date:   Mon May 11 13:35:43 2015 +0200
>>>
>>>      spi-pxa2xx : raise chipselect
>>>
>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>
>>> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
>>> index e3223ac..9c919ea 100644
>>> --- a/drivers/spi/spi-pxa2xx.c
>>> +++ b/drivers/spi/spi-pxa2xx.c
>>> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct platform_device
>>> *pdev)
>>>          if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0,
>>> &devid))
>>>                  ssp->port_id = devid;
>>>
>>> -       pdata->num_chipselect = 1;
>>> +       pdata->num_chipselect = 20;
>>>          pdata->enable_dma = true;
>>>
>>>          return pdata;
>>>
>>> This leds the spi master do the further ACPI configuration and inital
>>> setup for the arizona-spi device, but adding the ACPI ID to it
>>> does not work yet as expected:
>>>
>>> The current last patchset on top of master is
>>>
>>>
>>> Author: somebody anybody <somebody@foobar.com>
>>> Date:   Wed May 13 11:36:25 2015 +0200
>>>
>>>      arizona : added ACPI id of wm5102 to SPI driver, too
>>>
>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>
>>> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
>>> index 1e845f6..c19a4c1 100644
>>> --- a/drivers/mfd/arizona-spi.c
>>> +++ b/drivers/mfd/arizona-spi.c
>>> @@ -17,6 +17,7 @@
>>>   #include <linux/regulator/consumer.h>
>>>   #include <linux/slab.h>
>>>   #include <linux/spi/spi.h>
>>> +#include <linux/acpi.h>
>>>   #include <linux/of.h>
>>>
>>>   #include <linux/mfd/arizona/core.h>
>>> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device *spi)
>>>          return 0;
>>>   }
>>>
>>> +#ifdef CONFIG_ACPI
>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>> +               { "WM5102", 0},
>>> +               { "WM510205", 0},
>>> +               { },
>>> +};
>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>> +#endif
>>> +
>>>   static const struct spi_device_id arizona_spi_ids[] = {
>>>          { "wm5102", WM5102 },
>>>          { "wm5110", WM5110 },
>>> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>>>                  .owner  = THIS_MODULE,
>>>                  .pm     = &arizona_pm_ops,
>>>                  .of_match_table = of_match_ptr(arizona_of_match),
>>> +#ifdef CONFIG_ACPI
>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>> +#endif
>>>          },
>>>          .probe          = arizona_spi_probe,
>>>          .remove         = arizona_spi_remove,
>>>
>>>
>>>
>>>
>>> commit 268e21d29c942205e40f749c6d71c77839dc67da
>>> Author: somebody anybody <somebody@foobar.com>
>>> Date:   Wed May 13 11:36:04 2015 +0200
>>>
>>>      arizona : added ACPI id of wm5102 to i2c driver
>>>
>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>
>>> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
>>> index ff782a5..45ece1b 100644
>>> --- a/drivers/mfd/arizona-i2c.c
>>> +++ b/drivers/mfd/arizona-i2c.c
>>> @@ -18,6 +18,7 @@
>>>   #include <linux/regulator/consumer.h>
>>>   #include <linux/slab.h>
>>>   #include <linux/of.h>
>>> +#include <linux/acpi.h>
>>>
>>>   #include <linux/mfd/arizona/core.h>
>>>
>>> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client *i2c)
>>>          return 0;
>>>   }
>>>
>>> +#ifdef CONFIG_ACPI
>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>> +               { "WM5102", 0},
>>> +               { "WM510205", 0},
>>> +               { },
>>
>>
>> Those IDs don't really look like ACPI ones? Isn't there a rule that the _HID
>> is represented by a 4-letter vendor ID followed by part ID? see
>> http://www.uefi.org/PNP_ACPI_Registry
>>
>>
>>> +};
>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>> +#endif
>>> +
>>>   static const struct i2c_device_id arizona_i2c_id[] = {
>>>          { "wm5102", WM5102 },
>>>          { "wm5110", WM5110 },
>>> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>>>                  .owner  = THIS_MODULE,
>>>                  .pm     = &arizona_pm_ops,
>>>                  .of_match_table = of_match_ptr(arizona_of_match),
>>> +#ifdef CONFIG_ACPI
>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>> +#endif
>>>          },
>>>          .probe          = arizona_i2c_probe,
>>>          .remove         = arizona_i2c_remove,
>>>
>>>
>>>
>>> with these two patches the local master branch compiles fine, but at
>>> initialzing the arizona-spi driver gots a NULL pointer exception.
>>>
>>> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>>>
>>> I need some assistance or hints to the right direction, I am looking
>>> myself and I also try what I can, but I think it would be easy peasy
>>> with some experts like here on this list :)
>>>
>>>
>>> PS: the message : spi_master spi32766: raised num_chipselect to 20 for
>>> WM510205:00
>>>
>>> is a dev_err() line added to the function static acpi_status
>>> acpi_spi_add_device(), there I had raised the num_chipselect first
>>> (that was wrong, the raise is now done as in the first patch above.
>>> this is only a debug message and will be removed soon)
>>>
>>>
>>> PPS: for me it seems that there is a missing 'link' from WM5102 to the
>>> sst-acpi 80860F28:00 device, which complaints NOW / the first time
>>> with the three patches applied on top on master.... will have a look
>>> into it.
>>>
>>> I hope I got this device working with some more help from you.
>>>
>>> cheers
>>> chris
>>>
>>>
>>>
>>> _______________________________________________
>>> Alsa-devel mailing list
>>> Alsa-devel@alsa-project.org
>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>
>>
>
>
>
> --
> --
> ......oooO..............
> .....(....).....Oooo...
> ......)../.....(....)....
> .....(_/.......)../.....
> ...............(_/.......
> ... I WAS ..............
> .......... HERE...... ;)
Christian Hartmann June 2, 2015, 8:34 a.m. UTC | #4
hi list again,

I have patched the torvalds/master branch currently rc6
and I have no NULL pointer exception anymore.

I will send each patch separately

Of course no (working) soundcard yet..

so let be try to describe what is actually open or resolved for me:

* the spi master 37622 (pxa2xx) does not fail to add the SPI slave spi-WM510205
pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00

* ALSA device list: no soundcards found
* in dmesg I found two message indicating that something seems to be
missing yet:

sst-acpi 80860F28:00: No matching ASoC machine driver found
intel-sst-acpi 80860F28:00: No matching machine driver found


snip of dmesg 4.1.0.42-rc6


[    6.075170] sst-acpi 80860F28:00: No matching ASoC machine driver found
[    6.106787] pxa2xx-spi 80860F0E:00: no DMA channels available, using PIO
[    6.106865] pxa2xx-spi 80860F0E:00: registered master spi32766 (dynamic)
[    6.107058] spi spi-WM510205:00: 8333333 Hz actual, PIO
[    6.107065] spi spi-WM510205:00: setup mode 0, 8 bits/w, 8000000 Hz max --> 0
[    6.107151] pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
[    6.114510] rfkill_gpio LNV4752:00: GPIO lookup for consumer reset
[    6.114519] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
[    6.114526] acpi LNV4752:00: GPIO: looking up reset-gpios
[    6.114533] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 0 0 0
[    6.114607] no flags found for reset
[    6.114619] rfkill_gpio LNV4752:00: GPIO lookup for consumer shutdown
[    6.114623] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
[    6.114628] acpi LNV4752:00: GPIO: looking up shutdown-gpios
[    6.114633] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 1 0 0
[    6.114669] acpi LNV4752:00: GPIO: looking up shutdown-gpio
[    6.114675] acpi LNV4752:00: GPIO: looking up 0 in _CRS
[    6.114711] gpio-411 (reset): gpiod_request: status -16
[    6.114849] rfkill_gpio LNV4752:00: LNV4752:00 device registered.
[    6.247784] intel_sst_acpi 80860F28:00: No matching machine driver found


I have grepped the string 80860F28 in the ACPI DSDT table (->
dsdt.dsl) and found

    {
        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
            })
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (LAnd (LEqual (LPEE, 0x02), LEqual (LPED, Zero)))
                {
                    Return (0x0F)
                }

                Return (Zero)
            }

So how to bind the intel_sst_acpi with the WM5102 arizona coded and
its hub named arizone ???

Any suggestions or new directions?
....


cheers
chris


2015-05-19 15:39 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
> Hi,
>
> at the moment I am totally confused. I thought adding an ACPI ID is
> trivial, but it is not.
>
> I have again a null pointer exception in arizona_spi_probe()
>
> could it be with the new num_chipselect value in spi-pxa2xx.c ??
> I attach the trace of the last try
>
> Any hints or tips are welcome.
>
> cheers
> chris
>
> 2015-05-19 11:04 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
>> Hi,
>>
>> so the ACPI id string, which I want to add to arizona-spi.c should be
>>
>> WM510205 ??
>>
>> I have changed the ACPI string to
>>
>> {"WM510205", WM5102},
>>
>> now and give it a try.
>>
>> cheers
>> chris
>>
>> 2015-05-18 18:29 GMT+02:00 Pierre-Louis Bossart
>> <pierre-louis.bossart@linux.intel.com>:
>>> On 5/15/15 4:16 AM, Christian Hartmann wrote:
>>>>
>>>> Hi list,
>>>>
>>>>
>>>> I need ACPI support for the arizona-core / arizona-spi driver for the
>>>> ACPI ID WM5102.
>>>> This audio codec is build into the Lenovo Yoga 851F. This device is a
>>>> 32Bit (UEFI) system
>>>>
>>>>
>>>> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>>>>
>>>>
>>>> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
>>>> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
>>>> working with Fedora / Fedlet was the initial install image.
>>>>
>>>> With all vanilla kernels I got at first an error message from spi32766:
>>>>
>>>> [ 0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>>>> [ 0.296311] spi_master spi32766: failed to add SPI device
>>>> WM510205:00 from ACPI
>>>>
>>>> so I have at first patched as suggested by broonie the arizona-core
>>>>
>>>> commit 48203a0fede057d6a8c5f6872c53326395350f45
>>>> Author: somebody anybody <somebody@foobar.com>
>>>> Date:   Mon May 11 13:35:43 2015 +0200
>>>>
>>>>      spi-pxa2xx : raise chipselect
>>>>
>>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>
>>>> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
>>>> index e3223ac..9c919ea 100644
>>>> --- a/drivers/spi/spi-pxa2xx.c
>>>> +++ b/drivers/spi/spi-pxa2xx.c
>>>> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct platform_device
>>>> *pdev)
>>>>          if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0,
>>>> &devid))
>>>>                  ssp->port_id = devid;
>>>>
>>>> -       pdata->num_chipselect = 1;
>>>> +       pdata->num_chipselect = 20;
>>>>          pdata->enable_dma = true;
>>>>
>>>>          return pdata;
>>>>
>>>> This leds the spi master do the further ACPI configuration and inital
>>>> setup for the arizona-spi device, but adding the ACPI ID to it
>>>> does not work yet as expected:
>>>>
>>>> The current last patchset on top of master is
>>>>
>>>>
>>>> Author: somebody anybody <somebody@foobar.com>
>>>> Date:   Wed May 13 11:36:25 2015 +0200
>>>>
>>>>      arizona : added ACPI id of wm5102 to SPI driver, too
>>>>
>>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>
>>>> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
>>>> index 1e845f6..c19a4c1 100644
>>>> --- a/drivers/mfd/arizona-spi.c
>>>> +++ b/drivers/mfd/arizona-spi.c
>>>> @@ -17,6 +17,7 @@
>>>>   #include <linux/regulator/consumer.h>
>>>>   #include <linux/slab.h>
>>>>   #include <linux/spi/spi.h>
>>>> +#include <linux/acpi.h>
>>>>   #include <linux/of.h>
>>>>
>>>>   #include <linux/mfd/arizona/core.h>
>>>> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device *spi)
>>>>          return 0;
>>>>   }
>>>>
>>>> +#ifdef CONFIG_ACPI
>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>> +               { "WM5102", 0},
>>>> +               { "WM510205", 0},
>>>> +               { },
>>>> +};
>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>> +#endif
>>>> +
>>>>   static const struct spi_device_id arizona_spi_ids[] = {
>>>>          { "wm5102", WM5102 },
>>>>          { "wm5110", WM5110 },
>>>> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>>>>                  .owner  = THIS_MODULE,
>>>>                  .pm     = &arizona_pm_ops,
>>>>                  .of_match_table = of_match_ptr(arizona_of_match),
>>>> +#ifdef CONFIG_ACPI
>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>> +#endif
>>>>          },
>>>>          .probe          = arizona_spi_probe,
>>>>          .remove         = arizona_spi_remove,
>>>>
>>>>
>>>>
>>>>
>>>> commit 268e21d29c942205e40f749c6d71c77839dc67da
>>>> Author: somebody anybody <somebody@foobar.com>
>>>> Date:   Wed May 13 11:36:04 2015 +0200
>>>>
>>>>      arizona : added ACPI id of wm5102 to i2c driver
>>>>
>>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>
>>>> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
>>>> index ff782a5..45ece1b 100644
>>>> --- a/drivers/mfd/arizona-i2c.c
>>>> +++ b/drivers/mfd/arizona-i2c.c
>>>> @@ -18,6 +18,7 @@
>>>>   #include <linux/regulator/consumer.h>
>>>>   #include <linux/slab.h>
>>>>   #include <linux/of.h>
>>>> +#include <linux/acpi.h>
>>>>
>>>>   #include <linux/mfd/arizona/core.h>
>>>>
>>>> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client *i2c)
>>>>          return 0;
>>>>   }
>>>>
>>>> +#ifdef CONFIG_ACPI
>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>> +               { "WM5102", 0},
>>>> +               { "WM510205", 0},
>>>> +               { },
>>>
>>>
>>> Those IDs don't really look like ACPI ones? Isn't there a rule that the _HID
>>> is represented by a 4-letter vendor ID followed by part ID? see
>>> http://www.uefi.org/PNP_ACPI_Registry
>>>
>>>
>>>> +};
>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>> +#endif
>>>> +
>>>>   static const struct i2c_device_id arizona_i2c_id[] = {
>>>>          { "wm5102", WM5102 },
>>>>          { "wm5110", WM5110 },
>>>> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>>>>                  .owner  = THIS_MODULE,
>>>>                  .pm     = &arizona_pm_ops,
>>>>                  .of_match_table = of_match_ptr(arizona_of_match),
>>>> +#ifdef CONFIG_ACPI
>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>> +#endif
>>>>          },
>>>>          .probe          = arizona_i2c_probe,
>>>>          .remove         = arizona_i2c_remove,
>>>>
>>>>
>>>>
>>>> with these two patches the local master branch compiles fine, but at
>>>> initialzing the arizona-spi driver gots a NULL pointer exception.
>>>>
>>>> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>>>>
>>>> I need some assistance or hints to the right direction, I am looking
>>>> myself and I also try what I can, but I think it would be easy peasy
>>>> with some experts like here on this list :)
>>>>
>>>>
>>>> PS: the message : spi_master spi32766: raised num_chipselect to 20 for
>>>> WM510205:00
>>>>
>>>> is a dev_err() line added to the function static acpi_status
>>>> acpi_spi_add_device(), there I had raised the num_chipselect first
>>>> (that was wrong, the raise is now done as in the first patch above.
>>>> this is only a debug message and will be removed soon)
>>>>
>>>>
>>>> PPS: for me it seems that there is a missing 'link' from WM5102 to the
>>>> sst-acpi 80860F28:00 device, which complaints NOW / the first time
>>>> with the three patches applied on top on master.... will have a look
>>>> into it.
>>>>
>>>> I hope I got this device working with some more help from you.
>>>>
>>>> cheers
>>>> chris
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Alsa-devel mailing list
>>>> Alsa-devel@alsa-project.org
>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>>
>>
Pierre-Louis Bossart June 2, 2015, 6:13 p.m. UTC | #5
On 06/02/2015 03:34 AM, Christian Hartmann wrote:
> hi list again,
> 
> I have patched the torvalds/master branch currently rc6
> and I have no NULL pointer exception anymore.
> 
> I will send each patch separately
> 
> Of course no (working) soundcard yet..
> 
> so let be try to describe what is actually open or resolved for me:
> 
> * the spi master 37622 (pxa2xx) does not fail to add the SPI slave spi-WM510205
> pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
> 
> * ALSA device list: no soundcards found
> * in dmesg I found two message indicating that something seems to be
> missing yet:
> 
> sst-acpi 80860F28:00: No matching ASoC machine driver found
> intel-sst-acpi 80860F28:00: No matching machine driver found
> 
> 
> snip of dmesg 4.1.0.42-rc6
> 
> 
> [    6.075170] sst-acpi 80860F28:00: No matching ASoC machine driver found
> [    6.106787] pxa2xx-spi 80860F0E:00: no DMA channels available, using PIO
> [    6.106865] pxa2xx-spi 80860F0E:00: registered master spi32766 (dynamic)
> [    6.107058] spi spi-WM510205:00: 8333333 Hz actual, PIO
> [    6.107065] spi spi-WM510205:00: setup mode 0, 8 bits/w, 8000000 Hz max --> 0
> [    6.107151] pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
> [    6.114510] rfkill_gpio LNV4752:00: GPIO lookup for consumer reset
> [    6.114519] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
> [    6.114526] acpi LNV4752:00: GPIO: looking up reset-gpios
> [    6.114533] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 0 0 0
> [    6.114607] no flags found for reset
> [    6.114619] rfkill_gpio LNV4752:00: GPIO lookup for consumer shutdown
> [    6.114623] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
> [    6.114628] acpi LNV4752:00: GPIO: looking up shutdown-gpios
> [    6.114633] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 1 0 0
> [    6.114669] acpi LNV4752:00: GPIO: looking up shutdown-gpio
> [    6.114675] acpi LNV4752:00: GPIO: looking up 0 in _CRS
> [    6.114711] gpio-411 (reset): gpiod_request: status -16
> [    6.114849] rfkill_gpio LNV4752:00: LNV4752:00 device registered.
> [    6.247784] intel_sst_acpi 80860F28:00: No matching machine driver found
> 
> 
> I have grepped the string 80860F28 in the ACPI DSDT table (->
> dsdt.dsl) and found
> 
>     {
>         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
>             })
>             Method (_STA, 0, NotSerialized)  // _STA: Status
>             {
>                 If (LAnd (LEqual (LPEE, 0x02), LEqual (LPED, Zero)))
>                 {
>                     Return (0x0F)
>                 }
> 
>                 Return (Zero)
>             }
> 
> So how to bind the intel_sst_acpi with the WM5102 arizona coded and
> its hub named arizone ???
> 
> Any suggestions or new directions?

In your DSDT table, you need to leave the LPEA device alone. this is Intel only

You will need to have a second device for your codec that is either a child of the I2C (or SPI?) controllers. This second device will have an HID that you need to include in the sst-acpi.c code. when the LPEA driver starts, it will look if this codec HID is present and if yes load the relevant machine driver and firmware.

see for example the baytrail code, it uses the codec ID to identify which machine driver is needed. this is where you would need to add the wolfson HID.

static struct sst_acpi_mach baytrail_machines[] = {
	{ "10EC5640", "byt-rt5640", "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
	{ "193C9890", "byt-max98090", "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
	{}
};


Maybe you can share your DSDT table (factory settings) if you want more help.
Also note that HIDs are specified based on rules defined by uefi.org, the "WM5102" does not follow any of the usual conventions. My guess is that the HID should be prefixed by the Wolfson PCI vendor ID.


> ....
>  
> 
> cheers
> chris
> 
> 
> 2015-05-19 15:39 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
>> Hi,
>>
>> at the moment I am totally confused. I thought adding an ACPI ID is
>> trivial, but it is not.
>>
>> I have again a null pointer exception in arizona_spi_probe()
>>
>> could it be with the new num_chipselect value in spi-pxa2xx.c ??
>> I attach the trace of the last try
>>
>> Any hints or tips are welcome.
>>
>> cheers
>> chris
>>
>> 2015-05-19 11:04 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
>>> Hi,
>>>
>>> so the ACPI id string, which I want to add to arizona-spi.c should be
>>>
>>> WM510205 ??
>>>
>>> I have changed the ACPI string to
>>>
>>> {"WM510205", WM5102},
>>>
>>> now and give it a try.
>>>
>>> cheers
>>> chris
>>>
>>> 2015-05-18 18:29 GMT+02:00 Pierre-Louis Bossart
>>> <pierre-louis.bossart@linux.intel.com>:
>>>> On 5/15/15 4:16 AM, Christian Hartmann wrote:
>>>>>
>>>>> Hi list,
>>>>>
>>>>>
>>>>> I need ACPI support for the arizona-core / arizona-spi driver for the
>>>>> ACPI ID WM5102.
>>>>> This audio codec is build into the Lenovo Yoga 851F. This device is a
>>>>> 32Bit (UEFI) system
>>>>>
>>>>>
>>>>> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>>>>>
>>>>>
>>>>> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
>>>>> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
>>>>> working with Fedora / Fedlet was the initial install image.
>>>>>
>>>>> With all vanilla kernels I got at first an error message from spi32766:
>>>>>
>>>>> [ 0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>>>>> [ 0.296311] spi_master spi32766: failed to add SPI device
>>>>> WM510205:00 from ACPI
>>>>>
>>>>> so I have at first patched as suggested by broonie the arizona-core
>>>>>
>>>>> commit 48203a0fede057d6a8c5f6872c53326395350f45
>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>> Date:   Mon May 11 13:35:43 2015 +0200
>>>>>
>>>>>      spi-pxa2xx : raise chipselect
>>>>>
>>>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>
>>>>> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
>>>>> index e3223ac..9c919ea 100644
>>>>> --- a/drivers/spi/spi-pxa2xx.c
>>>>> +++ b/drivers/spi/spi-pxa2xx.c
>>>>> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct platform_device
>>>>> *pdev)
>>>>>          if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0,
>>>>> &devid))
>>>>>                  ssp->port_id = devid;
>>>>>
>>>>> -       pdata->num_chipselect = 1;
>>>>> +       pdata->num_chipselect = 20;
>>>>>          pdata->enable_dma = true;
>>>>>
>>>>>          return pdata;
>>>>>
>>>>> This leds the spi master do the further ACPI configuration and inital
>>>>> setup for the arizona-spi device, but adding the ACPI ID to it
>>>>> does not work yet as expected:
>>>>>
>>>>> The current last patchset on top of master is
>>>>>
>>>>>
>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>> Date:   Wed May 13 11:36:25 2015 +0200
>>>>>
>>>>>      arizona : added ACPI id of wm5102 to SPI driver, too
>>>>>
>>>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>
>>>>> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
>>>>> index 1e845f6..c19a4c1 100644
>>>>> --- a/drivers/mfd/arizona-spi.c
>>>>> +++ b/drivers/mfd/arizona-spi.c
>>>>> @@ -17,6 +17,7 @@
>>>>>   #include <linux/regulator/consumer.h>
>>>>>   #include <linux/slab.h>
>>>>>   #include <linux/spi/spi.h>
>>>>> +#include <linux/acpi.h>
>>>>>   #include <linux/of.h>
>>>>>
>>>>>   #include <linux/mfd/arizona/core.h>
>>>>> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device *spi)
>>>>>          return 0;
>>>>>   }
>>>>>
>>>>> +#ifdef CONFIG_ACPI
>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>> +               { "WM5102", 0},
>>>>> +               { "WM510205", 0},
>>>>> +               { },
>>>>> +};
>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>> +#endif
>>>>> +
>>>>>   static const struct spi_device_id arizona_spi_ids[] = {
>>>>>          { "wm5102", WM5102 },
>>>>>          { "wm5110", WM5110 },
>>>>> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>>>>>                  .owner  = THIS_MODULE,
>>>>>                  .pm     = &arizona_pm_ops,
>>>>>                  .of_match_table = of_match_ptr(arizona_of_match),
>>>>> +#ifdef CONFIG_ACPI
>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>> +#endif
>>>>>          },
>>>>>          .probe          = arizona_spi_probe,
>>>>>          .remove         = arizona_spi_remove,
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> commit 268e21d29c942205e40f749c6d71c77839dc67da
>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>> Date:   Wed May 13 11:36:04 2015 +0200
>>>>>
>>>>>      arizona : added ACPI id of wm5102 to i2c driver
>>>>>
>>>>>      Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>
>>>>> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
>>>>> index ff782a5..45ece1b 100644
>>>>> --- a/drivers/mfd/arizona-i2c.c
>>>>> +++ b/drivers/mfd/arizona-i2c.c
>>>>> @@ -18,6 +18,7 @@
>>>>>   #include <linux/regulator/consumer.h>
>>>>>   #include <linux/slab.h>
>>>>>   #include <linux/of.h>
>>>>> +#include <linux/acpi.h>
>>>>>
>>>>>   #include <linux/mfd/arizona/core.h>
>>>>>
>>>>> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client *i2c)
>>>>>          return 0;
>>>>>   }
>>>>>
>>>>> +#ifdef CONFIG_ACPI
>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>> +               { "WM5102", 0},
>>>>> +               { "WM510205", 0},
>>>>> +               { },
>>>>
>>>>
>>>> Those IDs don't really look like ACPI ones? Isn't there a rule that the _HID
>>>> is represented by a 4-letter vendor ID followed by part ID? see
>>>> http://www.uefi.org/PNP_ACPI_Registry
>>>>
>>>>
>>>>> +};
>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>> +#endif
>>>>> +
>>>>>   static const struct i2c_device_id arizona_i2c_id[] = {
>>>>>          { "wm5102", WM5102 },
>>>>>          { "wm5110", WM5110 },
>>>>> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>>>>>                  .owner  = THIS_MODULE,
>>>>>                  .pm     = &arizona_pm_ops,
>>>>>                  .of_match_table = of_match_ptr(arizona_of_match),
>>>>> +#ifdef CONFIG_ACPI
>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>> +#endif
>>>>>          },
>>>>>          .probe          = arizona_i2c_probe,
>>>>>          .remove         = arizona_i2c_remove,
>>>>>
>>>>>
>>>>>
>>>>> with these two patches the local master branch compiles fine, but at
>>>>> initialzing the arizona-spi driver gots a NULL pointer exception.
>>>>>
>>>>> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>>>>>
>>>>> I need some assistance or hints to the right direction, I am looking
>>>>> myself and I also try what I can, but I think it would be easy peasy
>>>>> with some experts like here on this list :)
>>>>>
>>>>>
>>>>> PS: the message : spi_master spi32766: raised num_chipselect to 20 for
>>>>> WM510205:00
>>>>>
>>>>> is a dev_err() line added to the function static acpi_status
>>>>> acpi_spi_add_device(), there I had raised the num_chipselect first
>>>>> (that was wrong, the raise is now done as in the first patch above.
>>>>> this is only a debug message and will be removed soon)
>>>>>
>>>>>
>>>>> PPS: for me it seems that there is a missing 'link' from WM5102 to the
>>>>> sst-acpi 80860F28:00 device, which complaints NOW / the first time
>>>>> with the three patches applied on top on master.... will have a look
>>>>> into it.
>>>>>
>>>>> I hope I got this device working with some more help from you.
>>>>>
>>>>> cheers
>>>>> chris
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Alsa-devel mailing list
>>>>> Alsa-devel@alsa-project.org
>>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>>>
>>>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
Pierre-Louis Bossart June 3, 2015, 2:59 p.m. UTC | #6
On 6/3/15 2:50 AM, Christian Hartmann wrote:
> hi,
>
> thanks Pierre-Luis,
>
> I attach the DSDT table in ASM format to get this device working as
> soon as possible.

this format is unreadable, can you extract the plain DSL instead, e.g. 
with iasl -d dsdt.dat -> extracts dsdt.dsl with only the code in 
'human-readable' format.

>
> By the way, I looked yesterday into the baytrail code (sound/soc/intel/sst )
> and I added this WM510205 codec.... but I do not know if I have it
> done correctly... currently I test my latest changes, seems to not
> work as expected yet.
>
>
> cheers
> chris
>
>
> 2015-06-02 20:13 GMT+02:00 Pierre-Louis Bossart
> <pierre-louis.bossart@linux.intel.com>:
>> On 06/02/2015 03:34 AM, Christian Hartmann wrote:
>>> hi list again,
>>>
>>> I have patched the torvalds/master branch currently rc6
>>> and I have no NULL pointer exception anymore.
>>>
>>> I will send each patch separately
>>>
>>> Of course no (working) soundcard yet..
>>>
>>> so let be try to describe what is actually open or resolved for me:
>>>
>>> * the spi master 37622 (pxa2xx) does not fail to add the SPI slave spi-WM510205
>>> pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
>>>
>>> * ALSA device list: no soundcards found
>>> * in dmesg I found two message indicating that something seems to be
>>> missing yet:
>>>
>>> sst-acpi 80860F28:00: No matching ASoC machine driver found
>>> intel-sst-acpi 80860F28:00: No matching machine driver found
>>>
>>>
>>> snip of dmesg 4.1.0.42-rc6
>>>
>>>
>>> [    6.075170] sst-acpi 80860F28:00: No matching ASoC machine driver found
>>> [    6.106787] pxa2xx-spi 80860F0E:00: no DMA channels available, using PIO
>>> [    6.106865] pxa2xx-spi 80860F0E:00: registered master spi32766 (dynamic)
>>> [    6.107058] spi spi-WM510205:00: 8333333 Hz actual, PIO
>>> [    6.107065] spi spi-WM510205:00: setup mode 0, 8 bits/w, 8000000 Hz max --> 0
>>> [    6.107151] pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
>>> [    6.114510] rfkill_gpio LNV4752:00: GPIO lookup for consumer reset
>>> [    6.114519] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
>>> [    6.114526] acpi LNV4752:00: GPIO: looking up reset-gpios
>>> [    6.114533] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 0 0 0
>>> [    6.114607] no flags found for reset
>>> [    6.114619] rfkill_gpio LNV4752:00: GPIO lookup for consumer shutdown
>>> [    6.114623] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
>>> [    6.114628] acpi LNV4752:00: GPIO: looking up shutdown-gpios
>>> [    6.114633] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 1 0 0
>>> [    6.114669] acpi LNV4752:00: GPIO: looking up shutdown-gpio
>>> [    6.114675] acpi LNV4752:00: GPIO: looking up 0 in _CRS
>>> [    6.114711] gpio-411 (reset): gpiod_request: status -16
>>> [    6.114849] rfkill_gpio LNV4752:00: LNV4752:00 device registered.
>>> [    6.247784] intel_sst_acpi 80860F28:00: No matching machine driver found
>>>
>>>
>>> I have grepped the string 80860F28 in the ACPI DSDT table (->
>>> dsdt.dsl) and found
>>>
>>>      {
>>>          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
>>>              })
>>>              Method (_STA, 0, NotSerialized)  // _STA: Status
>>>              {
>>>                  If (LAnd (LEqual (LPEE, 0x02), LEqual (LPED, Zero)))
>>>                  {
>>>                      Return (0x0F)
>>>                  }
>>>
>>>                  Return (Zero)
>>>              }
>>>
>>> So how to bind the intel_sst_acpi with the WM5102 arizona coded and
>>> its hub named arizone ???
>>>
>>> Any suggestions or new directions?
>>
>> In your DSDT table, you need to leave the LPEA device alone. this is Intel only
>>
>> You will need to have a second device for your codec that is either a child of the I2C (or SPI?) controllers. This second device will have an HID that you need to include in the sst-acpi.c code. when the LPEA driver starts, it will look if this codec HID is present and if yes load the relevant machine driver and firmware.
>>
>> see for example the baytrail code, it uses the codec ID to identify which machine driver is needed. this is where you would need to add the wolfson HID.
>>
>> static struct sst_acpi_mach baytrail_machines[] = {
>>          { "10EC5640", "byt-rt5640", "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
>>          { "193C9890", "byt-max98090", "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
>>          {}
>> };
>>
>>
>> Maybe you can share your DSDT table (factory settings) if you want more help.
>> Also note that HIDs are specified based on rules defined by uefi.org, the "WM5102" does not follow any of the usual conventions. My guess is that the HID should be prefixed by the Wolfson PCI vendor ID.
>>
>>
>>> ....
>>>
>>>
>>> cheers
>>> chris
>>>
>>>
>>> 2015-05-19 15:39 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
>>>> Hi,
>>>>
>>>> at the moment I am totally confused. I thought adding an ACPI ID is
>>>> trivial, but it is not.
>>>>
>>>> I have again a null pointer exception in arizona_spi_probe()
>>>>
>>>> could it be with the new num_chipselect value in spi-pxa2xx.c ??
>>>> I attach the trace of the last try
>>>>
>>>> Any hints or tips are welcome.
>>>>
>>>> cheers
>>>> chris
>>>>
>>>> 2015-05-19 11:04 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
>>>>> Hi,
>>>>>
>>>>> so the ACPI id string, which I want to add to arizona-spi.c should be
>>>>>
>>>>> WM510205 ??
>>>>>
>>>>> I have changed the ACPI string to
>>>>>
>>>>> {"WM510205", WM5102},
>>>>>
>>>>> now and give it a try.
>>>>>
>>>>> cheers
>>>>> chris
>>>>>
>>>>> 2015-05-18 18:29 GMT+02:00 Pierre-Louis Bossart
>>>>> <pierre-louis.bossart@linux.intel.com>:
>>>>>> On 5/15/15 4:16 AM, Christian Hartmann wrote:
>>>>>>>
>>>>>>> Hi list,
>>>>>>>
>>>>>>>
>>>>>>> I need ACPI support for the arizona-core / arizona-spi driver for the
>>>>>>> ACPI ID WM5102.
>>>>>>> This audio codec is build into the Lenovo Yoga 851F. This device is a
>>>>>>> 32Bit (UEFI) system
>>>>>>>
>>>>>>>
>>>>>>> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>>>>>>>
>>>>>>>
>>>>>>> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
>>>>>>> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
>>>>>>> working with Fedora / Fedlet was the initial install image.
>>>>>>>
>>>>>>> With all vanilla kernels I got at first an error message from spi32766:
>>>>>>>
>>>>>>> [ 0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>>>>>>> [ 0.296311] spi_master spi32766: failed to add SPI device
>>>>>>> WM510205:00 from ACPI
>>>>>>>
>>>>>>> so I have at first patched as suggested by broonie the arizona-core
>>>>>>>
>>>>>>> commit 48203a0fede057d6a8c5f6872c53326395350f45
>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>> Date:   Mon May 11 13:35:43 2015 +0200
>>>>>>>
>>>>>>>       spi-pxa2xx : raise chipselect
>>>>>>>
>>>>>>>       Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>
>>>>>>> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
>>>>>>> index e3223ac..9c919ea 100644
>>>>>>> --- a/drivers/spi/spi-pxa2xx.c
>>>>>>> +++ b/drivers/spi/spi-pxa2xx.c
>>>>>>> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct platform_device
>>>>>>> *pdev)
>>>>>>>           if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0,
>>>>>>> &devid))
>>>>>>>                   ssp->port_id = devid;
>>>>>>>
>>>>>>> -       pdata->num_chipselect = 1;
>>>>>>> +       pdata->num_chipselect = 20;
>>>>>>>           pdata->enable_dma = true;
>>>>>>>
>>>>>>>           return pdata;
>>>>>>>
>>>>>>> This leds the spi master do the further ACPI configuration and inital
>>>>>>> setup for the arizona-spi device, but adding the ACPI ID to it
>>>>>>> does not work yet as expected:
>>>>>>>
>>>>>>> The current last patchset on top of master is
>>>>>>>
>>>>>>>
>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>> Date:   Wed May 13 11:36:25 2015 +0200
>>>>>>>
>>>>>>>       arizona : added ACPI id of wm5102 to SPI driver, too
>>>>>>>
>>>>>>>       Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>
>>>>>>> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
>>>>>>> index 1e845f6..c19a4c1 100644
>>>>>>> --- a/drivers/mfd/arizona-spi.c
>>>>>>> +++ b/drivers/mfd/arizona-spi.c
>>>>>>> @@ -17,6 +17,7 @@
>>>>>>>    #include <linux/regulator/consumer.h>
>>>>>>>    #include <linux/slab.h>
>>>>>>>    #include <linux/spi/spi.h>
>>>>>>> +#include <linux/acpi.h>
>>>>>>>    #include <linux/of.h>
>>>>>>>
>>>>>>>    #include <linux/mfd/arizona/core.h>
>>>>>>> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device *spi)
>>>>>>>           return 0;
>>>>>>>    }
>>>>>>>
>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>>>> +               { "WM5102", 0},
>>>>>>> +               { "WM510205", 0},
>>>>>>> +               { },
>>>>>>> +};
>>>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>>>> +#endif
>>>>>>> +
>>>>>>>    static const struct spi_device_id arizona_spi_ids[] = {
>>>>>>>           { "wm5102", WM5102 },
>>>>>>>           { "wm5110", WM5110 },
>>>>>>> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>>>>>>>                   .owner  = THIS_MODULE,
>>>>>>>                   .pm     = &arizona_pm_ops,
>>>>>>>                   .of_match_table = of_match_ptr(arizona_of_match),
>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>>>> +#endif
>>>>>>>           },
>>>>>>>           .probe          = arizona_spi_probe,
>>>>>>>           .remove         = arizona_spi_remove,
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> commit 268e21d29c942205e40f749c6d71c77839dc67da
>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>> Date:   Wed May 13 11:36:04 2015 +0200
>>>>>>>
>>>>>>>       arizona : added ACPI id of wm5102 to i2c driver
>>>>>>>
>>>>>>>       Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>
>>>>>>> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
>>>>>>> index ff782a5..45ece1b 100644
>>>>>>> --- a/drivers/mfd/arizona-i2c.c
>>>>>>> +++ b/drivers/mfd/arizona-i2c.c
>>>>>>> @@ -18,6 +18,7 @@
>>>>>>>    #include <linux/regulator/consumer.h>
>>>>>>>    #include <linux/slab.h>
>>>>>>>    #include <linux/of.h>
>>>>>>> +#include <linux/acpi.h>
>>>>>>>
>>>>>>>    #include <linux/mfd/arizona/core.h>
>>>>>>>
>>>>>>> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client *i2c)
>>>>>>>           return 0;
>>>>>>>    }
>>>>>>>
>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>>>> +               { "WM5102", 0},
>>>>>>> +               { "WM510205", 0},
>>>>>>> +               { },
>>>>>>
>>>>>>
>>>>>> Those IDs don't really look like ACPI ones? Isn't there a rule that the _HID
>>>>>> is represented by a 4-letter vendor ID followed by part ID? see
>>>>>> http://www.uefi.org/PNP_ACPI_Registry
>>>>>>
>>>>>>
>>>>>>> +};
>>>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>>>> +#endif
>>>>>>> +
>>>>>>>    static const struct i2c_device_id arizona_i2c_id[] = {
>>>>>>>           { "wm5102", WM5102 },
>>>>>>>           { "wm5110", WM5110 },
>>>>>>> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>>>>>>>                   .owner  = THIS_MODULE,
>>>>>>>                   .pm     = &arizona_pm_ops,
>>>>>>>                   .of_match_table = of_match_ptr(arizona_of_match),
>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>>>> +#endif
>>>>>>>           },
>>>>>>>           .probe          = arizona_i2c_probe,
>>>>>>>           .remove         = arizona_i2c_remove,
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> with these two patches the local master branch compiles fine, but at
>>>>>>> initialzing the arizona-spi driver gots a NULL pointer exception.
>>>>>>>
>>>>>>> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>>>>>>>
>>>>>>> I need some assistance or hints to the right direction, I am looking
>>>>>>> myself and I also try what I can, but I think it would be easy peasy
>>>>>>> with some experts like here on this list :)
>>>>>>>
>>>>>>>
>>>>>>> PS: the message : spi_master spi32766: raised num_chipselect to 20 for
>>>>>>> WM510205:00
>>>>>>>
>>>>>>> is a dev_err() line added to the function static acpi_status
>>>>>>> acpi_spi_add_device(), there I had raised the num_chipselect first
>>>>>>> (that was wrong, the raise is now done as in the first patch above.
>>>>>>> this is only a debug message and will be removed soon)
>>>>>>>
>>>>>>>
>>>>>>> PPS: for me it seems that there is a missing 'link' from WM5102 to the
>>>>>>> sst-acpi 80860F28:00 device, which complaints NOW / the first time
>>>>>>> with the three patches applied on top on master.... will have a look
>>>>>>> into it.
>>>>>>>
>>>>>>> I hope I got this device working with some more help from you.
>>>>>>>
>>>>>>> cheers
>>>>>>> chris
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Alsa-devel mailing list
>>>>>>> Alsa-devel@alsa-project.org
>>>>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>>>>>
>>>>>
>>> _______________________________________________
>>> Alsa-devel mailing list
>>> Alsa-devel@alsa-project.org
>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>
>>
>
>
>
Christian Hartmann June 4, 2015, 7:23 a.m. UTC | #7
hi,

her is the dsdt.dsl in readable format (looks better)


2015-06-03 16:59 GMT+02:00 Pierre-Louis Bossart
<pierre-louis.bossart@linux.intel.com>:
> On 6/3/15 2:50 AM, Christian Hartmann wrote:
>>
>> hi,
>>
>> thanks Pierre-Luis,
>>
>> I attach the DSDT table in ASM format to get this device working as
>> soon as possible.
>
>
> this format is unreadable, can you extract the plain DSL instead, e.g. with
> iasl -d dsdt.dat -> extracts dsdt.dsl with only the code in 'human-readable'
> format.
>
>
>>
>> By the way, I looked yesterday into the baytrail code (sound/soc/intel/sst
>> )
>> and I added this WM510205 codec.... but I do not know if I have it
>> done correctly... currently I test my latest changes, seems to not
>> work as expected yet.
>>
>>
>> cheers
>> chris
>>
>>
>> 2015-06-02 20:13 GMT+02:00 Pierre-Louis Bossart
>> <pierre-louis.bossart@linux.intel.com>:
>>>
>>> On 06/02/2015 03:34 AM, Christian Hartmann wrote:
>>>>
>>>> hi list again,
>>>>
>>>> I have patched the torvalds/master branch currently rc6
>>>> and I have no NULL pointer exception anymore.
>>>>
>>>> I will send each patch separately
>>>>
>>>> Of course no (working) soundcard yet..
>>>>
>>>> so let be try to describe what is actually open or resolved for me:
>>>>
>>>> * the spi master 37622 (pxa2xx) does not fail to add the SPI slave
>>>> spi-WM510205
>>>> pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
>>>>
>>>> * ALSA device list: no soundcards found
>>>> * in dmesg I found two message indicating that something seems to be
>>>> missing yet:
>>>>
>>>> sst-acpi 80860F28:00: No matching ASoC machine driver found
>>>> intel-sst-acpi 80860F28:00: No matching machine driver found
>>>>
>>>>
>>>> snip of dmesg 4.1.0.42-rc6
>>>>
>>>>
>>>> [    6.075170] sst-acpi 80860F28:00: No matching ASoC machine driver
>>>> found
>>>> [    6.106787] pxa2xx-spi 80860F0E:00: no DMA channels available, using
>>>> PIO
>>>> [    6.106865] pxa2xx-spi 80860F0E:00: registered master spi32766
>>>> (dynamic)
>>>> [    6.107058] spi spi-WM510205:00: 8333333 Hz actual, PIO
>>>> [    6.107065] spi spi-WM510205:00: setup mode 0, 8 bits/w, 8000000 Hz
>>>> max --> 0
>>>> [    6.107151] pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
>>>> [    6.114510] rfkill_gpio LNV4752:00: GPIO lookup for consumer reset
>>>> [    6.114519] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
>>>> [    6.114526] acpi LNV4752:00: GPIO: looking up reset-gpios
>>>> [    6.114533] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 0 0 0
>>>> [    6.114607] no flags found for reset
>>>> [    6.114619] rfkill_gpio LNV4752:00: GPIO lookup for consumer shutdown
>>>> [    6.114623] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
>>>> [    6.114628] acpi LNV4752:00: GPIO: looking up shutdown-gpios
>>>> [    6.114633] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 1 0 0
>>>> [    6.114669] acpi LNV4752:00: GPIO: looking up shutdown-gpio
>>>> [    6.114675] acpi LNV4752:00: GPIO: looking up 0 in _CRS
>>>> [    6.114711] gpio-411 (reset): gpiod_request: status -16
>>>> [    6.114849] rfkill_gpio LNV4752:00: LNV4752:00 device registered.
>>>> [    6.247784] intel_sst_acpi 80860F28:00: No matching machine driver
>>>> found
>>>>
>>>>
>>>> I have grepped the string 80860F28 in the ACPI DSDT table (->
>>>> dsdt.dsl) and found
>>>>
>>>>      {
>>>>          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
>>>>              })
>>>>              Method (_STA, 0, NotSerialized)  // _STA: Status
>>>>              {
>>>>                  If (LAnd (LEqual (LPEE, 0x02), LEqual (LPED, Zero)))
>>>>                  {
>>>>                      Return (0x0F)
>>>>                  }
>>>>
>>>>                  Return (Zero)
>>>>              }
>>>>
>>>> So how to bind the intel_sst_acpi with the WM5102 arizona coded and
>>>> its hub named arizone ???
>>>>
>>>> Any suggestions or new directions?
>>>
>>>
>>> In your DSDT table, you need to leave the LPEA device alone. this is
>>> Intel only
>>>
>>> You will need to have a second device for your codec that is either a
>>> child of the I2C (or SPI?) controllers. This second device will have an HID
>>> that you need to include in the sst-acpi.c code. when the LPEA driver
>>> starts, it will look if this codec HID is present and if yes load the
>>> relevant machine driver and firmware.
>>>
>>> see for example the baytrail code, it uses the codec ID to identify which
>>> machine driver is needed. this is where you would need to add the wolfson
>>> HID.
>>>
>>> static struct sst_acpi_mach baytrail_machines[] = {
>>>          { "10EC5640", "byt-rt5640",
>>> "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
>>>          { "193C9890", "byt-max98090",
>>> "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
>>>          {}
>>> };
>>>
>>>
>>> Maybe you can share your DSDT table (factory settings) if you want more
>>> help.
>>> Also note that HIDs are specified based on rules defined by uefi.org, the
>>> "WM5102" does not follow any of the usual conventions. My guess is that the
>>> HID should be prefixed by the Wolfson PCI vendor ID.
>>>
>>>
>>>> ....
>>>>
>>>>
>>>> cheers
>>>> chris
>>>>
>>>>
>>>> 2015-05-19 15:39 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
>>>>>
>>>>> Hi,
>>>>>
>>>>> at the moment I am totally confused. I thought adding an ACPI ID is
>>>>> trivial, but it is not.
>>>>>
>>>>> I have again a null pointer exception in arizona_spi_probe()
>>>>>
>>>>> could it be with the new num_chipselect value in spi-pxa2xx.c ??
>>>>> I attach the trace of the last try
>>>>>
>>>>> Any hints or tips are welcome.
>>>>>
>>>>> cheers
>>>>> chris
>>>>>
>>>>> 2015-05-19 11:04 GMT+02:00 Christian Hartmann
>>>>> <cornogle@googlemail.com>:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> so the ACPI id string, which I want to add to arizona-spi.c should be
>>>>>>
>>>>>> WM510205 ??
>>>>>>
>>>>>> I have changed the ACPI string to
>>>>>>
>>>>>> {"WM510205", WM5102},
>>>>>>
>>>>>> now and give it a try.
>>>>>>
>>>>>> cheers
>>>>>> chris
>>>>>>
>>>>>> 2015-05-18 18:29 GMT+02:00 Pierre-Louis Bossart
>>>>>> <pierre-louis.bossart@linux.intel.com>:
>>>>>>>
>>>>>>> On 5/15/15 4:16 AM, Christian Hartmann wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> Hi list,
>>>>>>>>
>>>>>>>>
>>>>>>>> I need ACPI support for the arizona-core / arizona-spi driver for
>>>>>>>> the
>>>>>>>> ACPI ID WM5102.
>>>>>>>> This audio codec is build into the Lenovo Yoga 851F. This device is
>>>>>>>> a
>>>>>>>> 32Bit (UEFI) system
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>>>>>>>>
>>>>>>>>
>>>>>>>> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
>>>>>>>> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
>>>>>>>> working with Fedora / Fedlet was the initial install image.
>>>>>>>>
>>>>>>>> With all vanilla kernels I got at first an error message from
>>>>>>>> spi32766:
>>>>>>>>
>>>>>>>> [ 0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>>>>>>>> [ 0.296311] spi_master spi32766: failed to add SPI device
>>>>>>>> WM510205:00 from ACPI
>>>>>>>>
>>>>>>>> so I have at first patched as suggested by broonie the arizona-core
>>>>>>>>
>>>>>>>> commit 48203a0fede057d6a8c5f6872c53326395350f45
>>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>>> Date:   Mon May 11 13:35:43 2015 +0200
>>>>>>>>
>>>>>>>>       spi-pxa2xx : raise chipselect
>>>>>>>>
>>>>>>>>       Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>>
>>>>>>>> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
>>>>>>>> index e3223ac..9c919ea 100644
>>>>>>>> --- a/drivers/spi/spi-pxa2xx.c
>>>>>>>> +++ b/drivers/spi/spi-pxa2xx.c
>>>>>>>> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct
>>>>>>>> platform_device
>>>>>>>> *pdev)
>>>>>>>>           if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id,
>>>>>>>> 0,
>>>>>>>> &devid))
>>>>>>>>                   ssp->port_id = devid;
>>>>>>>>
>>>>>>>> -       pdata->num_chipselect = 1;
>>>>>>>> +       pdata->num_chipselect = 20;
>>>>>>>>           pdata->enable_dma = true;
>>>>>>>>
>>>>>>>>           return pdata;
>>>>>>>>
>>>>>>>> This leds the spi master do the further ACPI configuration and
>>>>>>>> inital
>>>>>>>> setup for the arizona-spi device, but adding the ACPI ID to it
>>>>>>>> does not work yet as expected:
>>>>>>>>
>>>>>>>> The current last patchset on top of master is
>>>>>>>>
>>>>>>>>
>>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>>> Date:   Wed May 13 11:36:25 2015 +0200
>>>>>>>>
>>>>>>>>       arizona : added ACPI id of wm5102 to SPI driver, too
>>>>>>>>
>>>>>>>>       Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>>
>>>>>>>> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
>>>>>>>> index 1e845f6..c19a4c1 100644
>>>>>>>> --- a/drivers/mfd/arizona-spi.c
>>>>>>>> +++ b/drivers/mfd/arizona-spi.c
>>>>>>>> @@ -17,6 +17,7 @@
>>>>>>>>    #include <linux/regulator/consumer.h>
>>>>>>>>    #include <linux/slab.h>
>>>>>>>>    #include <linux/spi/spi.h>
>>>>>>>> +#include <linux/acpi.h>
>>>>>>>>    #include <linux/of.h>
>>>>>>>>
>>>>>>>>    #include <linux/mfd/arizona/core.h>
>>>>>>>> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device
>>>>>>>> *spi)
>>>>>>>>           return 0;
>>>>>>>>    }
>>>>>>>>
>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>>>>> +               { "WM5102", 0},
>>>>>>>> +               { "WM510205", 0},
>>>>>>>> +               { },
>>>>>>>> +};
>>>>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>>>>> +#endif
>>>>>>>> +
>>>>>>>>    static const struct spi_device_id arizona_spi_ids[] = {
>>>>>>>>           { "wm5102", WM5102 },
>>>>>>>>           { "wm5110", WM5110 },
>>>>>>>> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>>>>>>>>                   .owner  = THIS_MODULE,
>>>>>>>>                   .pm     = &arizona_pm_ops,
>>>>>>>>                   .of_match_table = of_match_ptr(arizona_of_match),
>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>>>>> +#endif
>>>>>>>>           },
>>>>>>>>           .probe          = arizona_spi_probe,
>>>>>>>>           .remove         = arizona_spi_remove,
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> commit 268e21d29c942205e40f749c6d71c77839dc67da
>>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>>> Date:   Wed May 13 11:36:04 2015 +0200
>>>>>>>>
>>>>>>>>       arizona : added ACPI id of wm5102 to i2c driver
>>>>>>>>
>>>>>>>>       Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>>
>>>>>>>> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
>>>>>>>> index ff782a5..45ece1b 100644
>>>>>>>> --- a/drivers/mfd/arizona-i2c.c
>>>>>>>> +++ b/drivers/mfd/arizona-i2c.c
>>>>>>>> @@ -18,6 +18,7 @@
>>>>>>>>    #include <linux/regulator/consumer.h>
>>>>>>>>    #include <linux/slab.h>
>>>>>>>>    #include <linux/of.h>
>>>>>>>> +#include <linux/acpi.h>
>>>>>>>>
>>>>>>>>    #include <linux/mfd/arizona/core.h>
>>>>>>>>
>>>>>>>> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client
>>>>>>>> *i2c)
>>>>>>>>           return 0;
>>>>>>>>    }
>>>>>>>>
>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>>>>> +               { "WM5102", 0},
>>>>>>>> +               { "WM510205", 0},
>>>>>>>> +               { },
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Those IDs don't really look like ACPI ones? Isn't there a rule that
>>>>>>> the _HID
>>>>>>> is represented by a 4-letter vendor ID followed by part ID? see
>>>>>>> http://www.uefi.org/PNP_ACPI_Registry
>>>>>>>
>>>>>>>
>>>>>>>> +};
>>>>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>>>>> +#endif
>>>>>>>> +
>>>>>>>>    static const struct i2c_device_id arizona_i2c_id[] = {
>>>>>>>>           { "wm5102", WM5102 },
>>>>>>>>           { "wm5110", WM5110 },
>>>>>>>> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>>>>>>>>                   .owner  = THIS_MODULE,
>>>>>>>>                   .pm     = &arizona_pm_ops,
>>>>>>>>                   .of_match_table = of_match_ptr(arizona_of_match),
>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>>>>> +#endif
>>>>>>>>           },
>>>>>>>>           .probe          = arizona_i2c_probe,
>>>>>>>>           .remove         = arizona_i2c_remove,
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> with these two patches the local master branch compiles fine, but at
>>>>>>>> initialzing the arizona-spi driver gots a NULL pointer exception.
>>>>>>>>
>>>>>>>> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>>>>>>>>
>>>>>>>> I need some assistance or hints to the right direction, I am looking
>>>>>>>> myself and I also try what I can, but I think it would be easy peasy
>>>>>>>> with some experts like here on this list :)
>>>>>>>>
>>>>>>>>
>>>>>>>> PS: the message : spi_master spi32766: raised num_chipselect to 20
>>>>>>>> for
>>>>>>>> WM510205:00
>>>>>>>>
>>>>>>>> is a dev_err() line added to the function static acpi_status
>>>>>>>> acpi_spi_add_device(), there I had raised the num_chipselect first
>>>>>>>> (that was wrong, the raise is now done as in the first patch above.
>>>>>>>> this is only a debug message and will be removed soon)
>>>>>>>>
>>>>>>>>
>>>>>>>> PPS: for me it seems that there is a missing 'link' from WM5102 to
>>>>>>>> the
>>>>>>>> sst-acpi 80860F28:00 device, which complaints NOW / the first time
>>>>>>>> with the three patches applied on top on master.... will have a look
>>>>>>>> into it.
>>>>>>>>
>>>>>>>> I hope I got this device working with some more help from you.
>>>>>>>>
>>>>>>>> cheers
>>>>>>>> chris
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Alsa-devel mailing list
>>>>>>>> Alsa-devel@alsa-project.org
>>>>>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>>>>>>
>>>>>>
>>>> _______________________________________________
>>>> Alsa-devel mailing list
>>>> Alsa-devel@alsa-project.org
>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>>
>>>
>>
>>
>>
>
Pierre-Louis Bossart June 4, 2015, 2:57 p.m. UTC | #8
On 6/4/15 2:23 AM, Christian Hartmann wrote:
> hi,
>
> her is the dsdt.dsl in readable format (looks better)

So this confirms my initial assertion that whoever wrote the BIOS has a 
limited understanding of ACPI. WM5102 isn't a well-formed _HID, the 
prefix *has* to be a 4-letter ACPI ID or a 4-hex-number PCI ID. the code 
will work but violates the rules of the standard.

At any rate, you would indeed to add this string in the table in 
sst-acpi and add a reference to a machine driver (e.g. byt-wm5102) to 
get your sound card registered.

>
> 2015-06-03 16:59 GMT+02:00 Pierre-Louis Bossart
> <pierre-louis.bossart@linux.intel.com>:
>> On 6/3/15 2:50 AM, Christian Hartmann wrote:
>>>
>>> hi,
>>>
>>> thanks Pierre-Luis,
>>>
>>> I attach the DSDT table in ASM format to get this device working as
>>> soon as possible.
>>
>>
>> this format is unreadable, can you extract the plain DSL instead, e.g. with
>> iasl -d dsdt.dat -> extracts dsdt.dsl with only the code in 'human-readable'
>> format.
>>
>>
>>>
>>> By the way, I looked yesterday into the baytrail code (sound/soc/intel/sst
>>> )
>>> and I added this WM510205 codec.... but I do not know if I have it
>>> done correctly... currently I test my latest changes, seems to not
>>> work as expected yet.
>>>
>>>
>>> cheers
>>> chris
>>>
>>>
>>> 2015-06-02 20:13 GMT+02:00 Pierre-Louis Bossart
>>> <pierre-louis.bossart@linux.intel.com>:
>>>>
>>>> On 06/02/2015 03:34 AM, Christian Hartmann wrote:
>>>>>
>>>>> hi list again,
>>>>>
>>>>> I have patched the torvalds/master branch currently rc6
>>>>> and I have no NULL pointer exception anymore.
>>>>>
>>>>> I will send each patch separately
>>>>>
>>>>> Of course no (working) soundcard yet..
>>>>>
>>>>> so let be try to describe what is actually open or resolved for me:
>>>>>
>>>>> * the spi master 37622 (pxa2xx) does not fail to add the SPI slave
>>>>> spi-WM510205
>>>>> pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
>>>>>
>>>>> * ALSA device list: no soundcards found
>>>>> * in dmesg I found two message indicating that something seems to be
>>>>> missing yet:
>>>>>
>>>>> sst-acpi 80860F28:00: No matching ASoC machine driver found
>>>>> intel-sst-acpi 80860F28:00: No matching machine driver found
>>>>>
>>>>>
>>>>> snip of dmesg 4.1.0.42-rc6
>>>>>
>>>>>
>>>>> [    6.075170] sst-acpi 80860F28:00: No matching ASoC machine driver
>>>>> found
>>>>> [    6.106787] pxa2xx-spi 80860F0E:00: no DMA channels available, using
>>>>> PIO
>>>>> [    6.106865] pxa2xx-spi 80860F0E:00: registered master spi32766
>>>>> (dynamic)
>>>>> [    6.107058] spi spi-WM510205:00: 8333333 Hz actual, PIO
>>>>> [    6.107065] spi spi-WM510205:00: setup mode 0, 8 bits/w, 8000000 Hz
>>>>> max --> 0
>>>>> [    6.107151] pxa2xx-spi 80860F0E:00: registered child spi-WM510205:00
>>>>> [    6.114510] rfkill_gpio LNV4752:00: GPIO lookup for consumer reset
>>>>> [    6.114519] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
>>>>> [    6.114526] acpi LNV4752:00: GPIO: looking up reset-gpios
>>>>> [    6.114533] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 0 0 0
>>>>> [    6.114607] no flags found for reset
>>>>> [    6.114619] rfkill_gpio LNV4752:00: GPIO lookup for consumer shutdown
>>>>> [    6.114623] rfkill_gpio LNV4752:00: using ACPI for GPIO lookup
>>>>> [    6.114628] acpi LNV4752:00: GPIO: looking up shutdown-gpios
>>>>> [    6.114633] acpi LNV4752:00: GPIO: _DSD returned LNV4752:00 3 1 0 0
>>>>> [    6.114669] acpi LNV4752:00: GPIO: looking up shutdown-gpio
>>>>> [    6.114675] acpi LNV4752:00: GPIO: looking up 0 in _CRS
>>>>> [    6.114711] gpio-411 (reset): gpiod_request: status -16
>>>>> [    6.114849] rfkill_gpio LNV4752:00: LNV4752:00 device registered.
>>>>> [    6.247784] intel_sst_acpi 80860F28:00: No matching machine driver
>>>>> found
>>>>>
>>>>>
>>>>> I have grepped the string 80860F28 in the ACPI DSDT table (->
>>>>> dsdt.dsl) and found
>>>>>
>>>>>       {
>>>>>           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
>>>>>               })
>>>>>               Method (_STA, 0, NotSerialized)  // _STA: Status
>>>>>               {
>>>>>                   If (LAnd (LEqual (LPEE, 0x02), LEqual (LPED, Zero)))
>>>>>                   {
>>>>>                       Return (0x0F)
>>>>>                   }
>>>>>
>>>>>                   Return (Zero)
>>>>>               }
>>>>>
>>>>> So how to bind the intel_sst_acpi with the WM5102 arizona coded and
>>>>> its hub named arizone ???
>>>>>
>>>>> Any suggestions or new directions?
>>>>
>>>>
>>>> In your DSDT table, you need to leave the LPEA device alone. this is
>>>> Intel only
>>>>
>>>> You will need to have a second device for your codec that is either a
>>>> child of the I2C (or SPI?) controllers. This second device will have an HID
>>>> that you need to include in the sst-acpi.c code. when the LPEA driver
>>>> starts, it will look if this codec HID is present and if yes load the
>>>> relevant machine driver and firmware.
>>>>
>>>> see for example the baytrail code, it uses the codec ID to identify which
>>>> machine driver is needed. this is where you would need to add the wolfson
>>>> HID.
>>>>
>>>> static struct sst_acpi_mach baytrail_machines[] = {
>>>>           { "10EC5640", "byt-rt5640",
>>>> "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
>>>>           { "193C9890", "byt-max98090",
>>>> "intel/fw_sst_0f28.bin-48kHz_i2s_master" },
>>>>           {}
>>>> };
>>>>
>>>>
>>>> Maybe you can share your DSDT table (factory settings) if you want more
>>>> help.
>>>> Also note that HIDs are specified based on rules defined by uefi.org, the
>>>> "WM5102" does not follow any of the usual conventions. My guess is that the
>>>> HID should be prefixed by the Wolfson PCI vendor ID.
>>>>
>>>>
>>>>> ....
>>>>>
>>>>>
>>>>> cheers
>>>>> chris
>>>>>
>>>>>
>>>>> 2015-05-19 15:39 GMT+02:00 Christian Hartmann <cornogle@googlemail.com>:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> at the moment I am totally confused. I thought adding an ACPI ID is
>>>>>> trivial, but it is not.
>>>>>>
>>>>>> I have again a null pointer exception in arizona_spi_probe()
>>>>>>
>>>>>> could it be with the new num_chipselect value in spi-pxa2xx.c ??
>>>>>> I attach the trace of the last try
>>>>>>
>>>>>> Any hints or tips are welcome.
>>>>>>
>>>>>> cheers
>>>>>> chris
>>>>>>
>>>>>> 2015-05-19 11:04 GMT+02:00 Christian Hartmann
>>>>>> <cornogle@googlemail.com>:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> so the ACPI id string, which I want to add to arizona-spi.c should be
>>>>>>>
>>>>>>> WM510205 ??
>>>>>>>
>>>>>>> I have changed the ACPI string to
>>>>>>>
>>>>>>> {"WM510205", WM5102},
>>>>>>>
>>>>>>> now and give it a try.
>>>>>>>
>>>>>>> cheers
>>>>>>> chris
>>>>>>>
>>>>>>> 2015-05-18 18:29 GMT+02:00 Pierre-Louis Bossart
>>>>>>> <pierre-louis.bossart@linux.intel.com>:
>>>>>>>>
>>>>>>>> On 5/15/15 4:16 AM, Christian Hartmann wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hi list,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I need ACPI support for the arizona-core / arizona-spi driver for
>>>>>>>>> the
>>>>>>>>> ACPI ID WM5102.
>>>>>>>>> This audio codec is build into the Lenovo Yoga 851F. This device is
>>>>>>>>> a
>>>>>>>>> 32Bit (UEFI) system
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> http://support.lenovo.com/de/de/products/tablets/yoga-series/yoga-tablet-2-851
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I have tested with vanilla kernels from kernel.org 3.19.y ,4.0.y and
>>>>>>>>> master (from torvalds) currently its 4.1.0-rc3. As distribution I am
>>>>>>>>> working with Fedora / Fedlet was the initial install image.
>>>>>>>>>
>>>>>>>>> With all vanilla kernels I got at first an error message from
>>>>>>>>> spi32766:
>>>>>>>>>
>>>>>>>>> [ 0.296297] pxa2xx-spi 80860F0E:00: cs1 >= max 1
>>>>>>>>> [ 0.296311] spi_master spi32766: failed to add SPI device
>>>>>>>>> WM510205:00 from ACPI
>>>>>>>>>
>>>>>>>>> so I have at first patched as suggested by broonie the arizona-core
>>>>>>>>>
>>>>>>>>> commit 48203a0fede057d6a8c5f6872c53326395350f45
>>>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>>>> Date:   Mon May 11 13:35:43 2015 +0200
>>>>>>>>>
>>>>>>>>>        spi-pxa2xx : raise chipselect
>>>>>>>>>
>>>>>>>>>        Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
>>>>>>>>> index e3223ac..9c919ea 100644
>>>>>>>>> --- a/drivers/spi/spi-pxa2xx.c
>>>>>>>>> +++ b/drivers/spi/spi-pxa2xx.c
>>>>>>>>> @@ -1279,7 +1279,7 @@ pxa2xx_spi_acpi_get_pdata(struct
>>>>>>>>> platform_device
>>>>>>>>> *pdev)
>>>>>>>>>            if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id,
>>>>>>>>> 0,
>>>>>>>>> &devid))
>>>>>>>>>                    ssp->port_id = devid;
>>>>>>>>>
>>>>>>>>> -       pdata->num_chipselect = 1;
>>>>>>>>> +       pdata->num_chipselect = 20;
>>>>>>>>>            pdata->enable_dma = true;
>>>>>>>>>
>>>>>>>>>            return pdata;
>>>>>>>>>
>>>>>>>>> This leds the spi master do the further ACPI configuration and
>>>>>>>>> inital
>>>>>>>>> setup for the arizona-spi device, but adding the ACPI ID to it
>>>>>>>>> does not work yet as expected:
>>>>>>>>>
>>>>>>>>> The current last patchset on top of master is
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>>>> Date:   Wed May 13 11:36:25 2015 +0200
>>>>>>>>>
>>>>>>>>>        arizona : added ACPI id of wm5102 to SPI driver, too
>>>>>>>>>
>>>>>>>>>        Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
>>>>>>>>> index 1e845f6..c19a4c1 100644
>>>>>>>>> --- a/drivers/mfd/arizona-spi.c
>>>>>>>>> +++ b/drivers/mfd/arizona-spi.c
>>>>>>>>> @@ -17,6 +17,7 @@
>>>>>>>>>     #include <linux/regulator/consumer.h>
>>>>>>>>>     #include <linux/slab.h>
>>>>>>>>>     #include <linux/spi/spi.h>
>>>>>>>>> +#include <linux/acpi.h>
>>>>>>>>>     #include <linux/of.h>
>>>>>>>>>
>>>>>>>>>     #include <linux/mfd/arizona/core.h>
>>>>>>>>> @@ -82,6 +83,15 @@ static int arizona_spi_remove(struct spi_device
>>>>>>>>> *spi)
>>>>>>>>>            return 0;
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>>>>>> +               { "WM5102", 0},
>>>>>>>>> +               { "WM510205", 0},
>>>>>>>>> +               { },
>>>>>>>>> +};
>>>>>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>>>>>> +#endif
>>>>>>>>> +
>>>>>>>>>     static const struct spi_device_id arizona_spi_ids[] = {
>>>>>>>>>            { "wm5102", WM5102 },
>>>>>>>>>            { "wm5110", WM5110 },
>>>>>>>>> @@ -96,6 +106,9 @@ static struct spi_driver arizona_spi_driver = {
>>>>>>>>>                    .owner  = THIS_MODULE,
>>>>>>>>>                    .pm     = &arizona_pm_ops,
>>>>>>>>>                    .of_match_table = of_match_ptr(arizona_of_match),
>>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>>>>>> +#endif
>>>>>>>>>            },
>>>>>>>>>            .probe          = arizona_spi_probe,
>>>>>>>>>            .remove         = arizona_spi_remove,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> commit 268e21d29c942205e40f749c6d71c77839dc67da
>>>>>>>>> Author: somebody anybody <somebody@foobar.com>
>>>>>>>>> Date:   Wed May 13 11:36:04 2015 +0200
>>>>>>>>>
>>>>>>>>>        arizona : added ACPI id of wm5102 to i2c driver
>>>>>>>>>
>>>>>>>>>        Signed-off-by: somebody anybody <somebody@foobar.com>
>>>>>>>>>
>>>>>>>>> diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
>>>>>>>>> index ff782a5..45ece1b 100644
>>>>>>>>> --- a/drivers/mfd/arizona-i2c.c
>>>>>>>>> +++ b/drivers/mfd/arizona-i2c.c
>>>>>>>>> @@ -18,6 +18,7 @@
>>>>>>>>>     #include <linux/regulator/consumer.h>
>>>>>>>>>     #include <linux/slab.h>
>>>>>>>>>     #include <linux/of.h>
>>>>>>>>> +#include <linux/acpi.h>
>>>>>>>>>
>>>>>>>>>     #include <linux/mfd/arizona/core.h>
>>>>>>>>>
>>>>>>>>> @@ -85,6 +86,15 @@ static int arizona_i2c_remove(struct i2c_client
>>>>>>>>> *i2c)
>>>>>>>>>            return 0;
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>>> +static struct acpi_device_id wm5102_acpi_match[] = {
>>>>>>>>> +               { "WM5102", 0},
>>>>>>>>> +               { "WM510205", 0},
>>>>>>>>> +               { },
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Those IDs don't really look like ACPI ones? Isn't there a rule that
>>>>>>>> the _HID
>>>>>>>> is represented by a 4-letter vendor ID followed by part ID? see
>>>>>>>> http://www.uefi.org/PNP_ACPI_Registry
>>>>>>>>
>>>>>>>>
>>>>>>>>> +};
>>>>>>>>> +MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
>>>>>>>>> +#endif
>>>>>>>>> +
>>>>>>>>>     static const struct i2c_device_id arizona_i2c_id[] = {
>>>>>>>>>            { "wm5102", WM5102 },
>>>>>>>>>            { "wm5110", WM5110 },
>>>>>>>>> @@ -100,6 +110,9 @@ static struct i2c_driver arizona_i2c_driver = {
>>>>>>>>>                    .owner  = THIS_MODULE,
>>>>>>>>>                    .pm     = &arizona_pm_ops,
>>>>>>>>>                    .of_match_table = of_match_ptr(arizona_of_match),
>>>>>>>>> +#ifdef CONFIG_ACPI
>>>>>>>>> +               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
>>>>>>>>> +#endif
>>>>>>>>>            },
>>>>>>>>>            .probe          = arizona_i2c_probe,
>>>>>>>>>            .remove         = arizona_i2c_remove,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> with these two patches the local master branch compiles fine, but at
>>>>>>>>> initialzing the arizona-spi driver gots a NULL pointer exception.
>>>>>>>>>
>>>>>>>>> I attach the whole dmesg of 4.1.0-rc3 (build 4.1.0.24-rc3).
>>>>>>>>>
>>>>>>>>> I need some assistance or hints to the right direction, I am looking
>>>>>>>>> myself and I also try what I can, but I think it would be easy peasy
>>>>>>>>> with some experts like here on this list :)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> PS: the message : spi_master spi32766: raised num_chipselect to 20
>>>>>>>>> for
>>>>>>>>> WM510205:00
>>>>>>>>>
>>>>>>>>> is a dev_err() line added to the function static acpi_status
>>>>>>>>> acpi_spi_add_device(), there I had raised the num_chipselect first
>>>>>>>>> (that was wrong, the raise is now done as in the first patch above.
>>>>>>>>> this is only a debug message and will be removed soon)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> PPS: for me it seems that there is a missing 'link' from WM5102 to
>>>>>>>>> the
>>>>>>>>> sst-acpi 80860F28:00 device, which complaints NOW / the first time
>>>>>>>>> with the three patches applied on top on master.... will have a look
>>>>>>>>> into it.
>>>>>>>>>
>>>>>>>>> I hope I got this device working with some more help from you.
>>>>>>>>>
>>>>>>>>> cheers
>>>>>>>>> chris
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Alsa-devel mailing list
>>>>>>>>> Alsa-devel@alsa-project.org
>>>>>>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>>>>>>>
>>>>>>>
>>>>> _______________________________________________
>>>>> Alsa-devel mailing list
>>>>> Alsa-devel@alsa-project.org
>>>>> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>>>>>
>>>>
>>>
>>>
>>>
>>
>
>
>

Patch
diff mbox

diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c
index e3223ac..9c919ea 100644
--- a/drivers/spi/spi-pxa2xx.c
+++ b/drivers/spi/spi-pxa2xx.c
@@ -1279,7 +1279,7 @@  pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev)
        if (adev->pnp.unique_id && !kstrtoint(adev->pnp.unique_id, 0, &devid))
                ssp->port_id = devid;

-       pdata->num_chipselect = 1;
+       pdata->num_chipselect = 20;
        pdata->enable_dma = true;

        return pdata;

This leds the spi master do the further ACPI configuration and inital
setup for the arizona-spi device, but adding the ACPI ID to it
does not work yet as expected:

The current last patchset on top of master is


Author: somebody anybody <somebody@foobar.com>
Date:   Wed May 13 11:36:25 2015 +0200

    arizona : added ACPI id of wm5102 to SPI driver, too

    Signed-off-by: somebody anybody <somebody@foobar.com>

diff --git a/drivers/mfd/arizona-spi.c b/drivers/mfd/arizona-spi.c
index 1e845f6..c19a4c1 100644
--- a/drivers/mfd/arizona-spi.c
+++ b/drivers/mfd/arizona-spi.c
@@ -17,6 +17,7 @@ 
 #include <linux/regulator/consumer.h>
 #include <linux/slab.h>
 #include <linux/spi/spi.h>
+#include <linux/acpi.h>
 #include <linux/of.h>

 #include <linux/mfd/arizona/core.h>
@@ -82,6 +83,15 @@  static int arizona_spi_remove(struct spi_device *spi)
        return 0;
 }

+#ifdef CONFIG_ACPI
+static struct acpi_device_id wm5102_acpi_match[] = {
+               { "WM5102", 0},
+               { "WM510205", 0},
+               { },
+};
+MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
+#endif
+
 static const struct spi_device_id arizona_spi_ids[] = {
        { "wm5102", WM5102 },
        { "wm5110", WM5110 },
@@ -96,6 +106,9 @@  static struct spi_driver arizona_spi_driver = {
                .owner  = THIS_MODULE,
                .pm     = &arizona_pm_ops,
                .of_match_table = of_match_ptr(arizona_of_match),
+#ifdef CONFIG_ACPI
+               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
+#endif
        },
        .probe          = arizona_spi_probe,
        .remove         = arizona_spi_remove,




commit 268e21d29c942205e40f749c6d71c77839dc67da
Author: somebody anybody <somebody@foobar.com>
Date:   Wed May 13 11:36:04 2015 +0200

    arizona : added ACPI id of wm5102 to i2c driver

    Signed-off-by: somebody anybody <somebody@foobar.com>

diff --git a/drivers/mfd/arizona-i2c.c b/drivers/mfd/arizona-i2c.c
index ff782a5..45ece1b 100644
--- a/drivers/mfd/arizona-i2c.c
+++ b/drivers/mfd/arizona-i2c.c
@@ -18,6 +18,7 @@ 
 #include <linux/regulator/consumer.h>
 #include <linux/slab.h>
 #include <linux/of.h>
+#include <linux/acpi.h>

 #include <linux/mfd/arizona/core.h>

@@ -85,6 +86,15 @@  static int arizona_i2c_remove(struct i2c_client *i2c)
        return 0;
 }

+#ifdef CONFIG_ACPI
+static struct acpi_device_id wm5102_acpi_match[] = {
+               { "WM5102", 0},
+               { "WM510205", 0},
+               { },
+};
+MODULE_DEVICE_TABLE(acpi, wm5102_acpi_match);
+#endif
+
 static const struct i2c_device_id arizona_i2c_id[] = {
        { "wm5102", WM5102 },
        { "wm5110", WM5110 },
@@ -100,6 +110,9 @@  static struct i2c_driver arizona_i2c_driver = {
                .owner  = THIS_MODULE,
                .pm     = &arizona_pm_ops,
                .of_match_table = of_match_ptr(arizona_of_match),
+#ifdef CONFIG_ACPI
+               .acpi_match_table = ACPI_PTR(wm5102_acpi_match),
+#endif
        },
        .probe          = arizona_i2c_probe,
        .remove         = arizona_i2c_remove,