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>
Tue, 11 Jun 2019 00:35:56 +0000 (09:35 +0900)
commita942c460e0715322beea46a59f9a3fa291d19875
treedd88b44abf0617158ed25ee4445a5f19a376a442
parenta686abe631472fdb2e8303c6bed650a80dd54d37
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