ASoC: ac108: Fixes kernel bug message when starting to capture
authorJaechul Lee <jcsing.lee@samsung.com>
Thu, 9 May 2019 00:26:53 +0000 (09:26 +0900)
committerJunghoon Kim <jhoon20.kim@samsung.com>
Thu, 2 Apr 2020 04:09:04 +0000 (13:09 +0900)
commit96d54e479671ab668c0c8c541e0c30bdc6e7b56d
tree87ba1efb26ab9783a33f058e9c315249f70fdb08
parent7967dc65fccf7a17ced9628ff3227d0fcb8d7ab4
ASoC: ac108: Fixes kernel bug message when starting to capture

The code in the trigger function is moved to prepare function that is
called right before trigger function. clock operation would be ran by
parepare function without disabling preemption.

BUG: scheduling while atomic: arecord/1244/0x00000004
Preemption disabled at:
[<ffffff80087c4a08>] snd_pcm_stream_lock+0x30/0x68

Call trace:
[<ffffff800808b250>] dump_backtrace+0x0/0x270
[<ffffff800808b4e4>] show_stack+0x24/0x30
[<ffffff8008ae87c4>] dump_stack+0xac/0xe8
[<ffffff80080cc814>] __schedule_bug+0x7c/0xd8
[<ffffff8008afb558>] __schedule+0x718/0x880
[<ffffff8008afb6fc>] schedule+0x3c/0xa0
[<ffffff8008aff028>] schedule_timeout+0x190/0x408
[<ffffff8008afc4b8>] wait_for_common+0xa8/0x150
[<ffffff8008afc5c4>] wait_for_completion_timeout+0x2c/0x38
[<ffffff80086e5a0c>] bcm2835_i2c_xfer+0x16c/0x400
[<ffffff80086deedc>] __i2c_transfer+0x12c/0x570
[<ffffff80086df38c>] i2c_transfer+0x6c/0xc0
[<ffffff80086df430>] i2c_master_send+0x50/0x68
[<ffffff8008584454>] regmap_i2c_write+0x34/0x70
[<ffffff800857fe34>] _regmap_raw_write+0x7cc/0x7e0
[<ffffff800857feb8>] _regmap_bus_raw_write+0x70/0x88
[<ffffff800857ea48>] _regmap_write+0x70/0x160
[<ffffff800857ec10>] _regmap_update_bits+0xd8/0xf8
[<ffffff80085800b0>] regmap_update_bits_base+0x68/0x98
[<ffffff8008805838>] ac10x_update_bits+0x48/0x88
[<ffffff8008805c00>] ac108_trigger+0x118/0x130

Change-Id: I73ef21247e1dfbd0acd3272b6a73311377eb000d
Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com>
sound/soc/codecs/ac108.c
sound/soc/seeed/seeed-voicecard.c