When not used, requesting to get snr causes following kernel panic
because driver is not initialized. Fix only requesting to get snr
when used.
Internal error: Oops: 805 [#1] PREEMPT SMP ARM
...
[<
c05a9fd8>] (skb_queue_tail+0x34/0x58) from [<
c047e7e4>] (__fm_send_cmd.isra.0+0xcc/0xf8)
[<
c047e7e4>] (__fm_send_cmd.isra.0+0xcc/0xf8) from [<
c047ea5c>] (fmc_send_cmd+0x6c/0x210)
[<
c047ea5c>] (fmc_send_cmd+0x6c/0x210) from [<
c0482764>] (fm_rx_get_snr+0x4c/0x84)
[<
c0482764>] (fm_rx_get_snr+0x4c/0x84) from [<
c0480ad4>] (show_fmrx_curr_snr+0x34/0x6c)
[<
c0480ad4>] (show_fmrx_curr_snr+0x34/0x6c) from [<
c0308264>] (dev_attr_show+0x30/0x54)
[<
c0308264>] (dev_attr_show+0x30/0x54) from [<
c0172498>] (sysfs_read_file+0xc0/0x170)
[<
c0172498>] (sysfs_read_file+0xc0/0x170) from [<
c01160b8>] (vfs_read+0xbc/0x138)
[<
c01160b8>] (vfs_read+0xbc/0x138) from [<
c01166a8>] (SyS_read+0x50/0x78)
[<
c01166a8>] (SyS_read+0x50/0x78) from [<
c000fa4c>] (__sys_trace_return+0x0/0x14)
Change-Id: I6ada090c40925212ef96107d56021612c5cf46fe
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
unsigned int curr_snr = 0;
struct fmdrv_ops *fmdev = dev_get_drvdata(dev);
- ret = fm_rx_get_snr(fmdev,&curr_snr);
+ if(atomic_read(&v4l2_device_available) != 1) {
+ /* only request when it is currently used */
+ ret = fm_rx_get_snr(fmdev,&curr_snr);
- if (ret < 0 )
- {
- pr_err("(fmdrv) %s(): fail to get current SNR\n",
+ if (ret < 0 )
+ {
+ pr_err("(fmdrv) %s(): fail to get current SNR\n",
__func__);
+ }
}
return sprintf(buf, "%d\n", curr_snr);