Kernel commit: 5a8361f7ecceaed64b4064000d16cb703462be49
ACPICA: Integrate package handling with module-level code
The above commit fixed a problem with ACPI that previously prevented
ASPM to be enabled. Unfortunately our driver broke because the link to
the device went down while streaming. Fix this for now by disabling ASPM
for the device entirely.
Note: There is an ACPI method we're calling to "power on/off" the device
so the real solution here might be to get it working correctly. I will
need to investigate that further so no ASPM will have to do for now.
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
This is a temporary fix for suspend/resume. It'll unload and reload the
entire driver on suspend/resume. This will obviously not work if the
device is not closed. Also, remove the PCI_VDEVICE macro.
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Introduce a new debug sysfs file, which accepts the following commands:
ps - show task running in firmware
banner - show startup banner
get_root - get ROOT object
heap - show heap statistics
irq - show irq statistics
semaphore - show semaphore status
wiring - show wiring status
get_object_by_name %s - get address for object
get_fsm_by_name %s - get address for FSM
dump_object %p - show information about object
dump_objects - dump all objects (NOTE: will crash firmware)
show_objects - show graph about all objects known
get_debug_level - get debug level for object
set_debug_level - set debug level for object
set_debug_level_rec - set debug level recursive for all objects
get_fsm_count - get count of FSM's
get_fsm_by_index - get fsm address for index
get_fsm_debug_level - get debug level for fsm
set_fsm_debug_level - set debug level for fsm
In the current implementation it returns -1 on error, an offset value
otherwise. Change it to return a negative error value, and add a pointer
to an u32 for receiving the entry offset as an extra argument.
This makes the ugly (u32)-1 return code comparision obsolete, and we
can return a more detailed error code like EAGAIN if all ringbuffer slots
are busy.