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)
committerHoegeun Kwon <hoegeun.kwon@samsung.com>
Thu, 3 Aug 2023 09:35:23 +0000 (18:35 +0900)
commitedb58cbde3ae350b2b34e5586587aacacce830d1
treef9987672aa40aafac42c54c28d78d7e14ddfd95b
parent72c3d2612433f9580f450f3b21ffb565c47e82a4
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: Ib0f5edc86d363005abd75f989d732e917617f3fe
Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com>
sound/soc/codecs/ac108.c
sound/soc/seeed/seeed-voicecard.c