author | nengwen.chen <nengwen.chen@amlogic.com> | 2018-04-17 14:01:19 (GMT) |
---|---|---|
committer | Xindong Xu <xindong.xu@amlogic.com> | 2018-04-19 06:01:15 (GMT) |
commit | e92b11d3fdbd4d3da30097465f0559b0074f1ada (patch) | |
tree | 49534069e1291c52cc07b287a74966d6d2e92fc4 | |
parent | 0e0e5ef0e1def12546270298dd2d60421ed1bba3 (diff) | |
download | common-e92b11d3fdbd4d3da30097465f0559b0074f1ada.zip common-e92b11d3fdbd4d3da30097465f0559b0074f1ada.tar.gz common-e92b11d3fdbd4d3da30097465f0559b0074f1ada.tar.bz2 |
atv_demod: Add atv demod
PD#163853: Add atv demod
Change-Id: Ia3a7f51927df92025a67923e5acce2f0f07e674c
Signed-off-by: nengwen.chen <nengwen.chen@amlogic.com>
-rw-r--r-- | drivers/amlogic/atv_demod/Makefile | 26 | ||||
-rw-r--r-- | drivers/amlogic/atv_demod/atv_demod_debug.h | 19 | ||||
-rw-r--r-- | drivers/amlogic/atv_demod/atv_demod_driver.c | 166 | ||||
-rw-r--r-- | drivers/amlogic/atv_demod/atv_demod_ops.c | 46 | ||||
-rw-r--r-- | drivers/amlogic/atv_demod/atv_demod_v4l2.c | 183 | ||||
-rw-r--r-- | drivers/amlogic/atv_demod/atvauddemod_func.c | 6 | ||||
-rw-r--r-- | drivers/amlogic/atv_demod/atvdemod_func.c | 20 |
7 files changed, 222 insertions, 244 deletions
diff --git a/drivers/amlogic/atv_demod/Makefile b/drivers/amlogic/atv_demod/Makefile index 52abf31..f53fe04 100644 --- a/drivers/amlogic/atv_demod/Makefile +++ b/drivers/amlogic/atv_demod/Makefile @@ -4,29 +4,3 @@ aml_atvdemod-objs = atvdemod_func.o atvauddemod_func.o atv_demod_v4l2.o atv_demo ccflags-y += -I. ccflags-y += -Idrivers/media/dvb-core -#ccflags-y += -Idrivers/amlogic/tuners/mxl661 -#ccflags-y += -Idrivers/amlogic/tuners/si2151 - -#obj-m += aml_atvdemod.o -# -#aml_atvdemod-objs = atvdemod_func.o atvauddemod_func.o -# -#aml_atvdemod-objs += atv_demod_v4l2.o atv_demod_driver.o atv_demod_ops.o -# -#ccflags-y += -I. -#ccflags-y += -Idrivers/media/dvb-core -# -#TARGET_PRODUCT=t962e_r321 -#KERNEL_ARCH=arm64 -#CROSS_COMPILE=aarch64-linux-gnu- -#PRODUCT_OUT=../../../../out/target/product/$(TARGET_PRODUCT)/obj/KERNEL_OBJ -# -#KBUILD_EXTRA_SYMBOLS += $(shell pwd)/../tuner/si2151_4.9/Module.symvers -# -#export KBUILD_EXTRA_SYMBOLS -# -#all: -# $(MAKE) -C $(PRODUCT_OUT) M=$(shell pwd) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules -# -#clean: -# rm -rf *.ko .*.ko.cmd *.o *.order *.symvers -f *.cmd .*.o.cmd *.mod.c .tmp_versions/
\ No newline at end of file diff --git a/drivers/amlogic/atv_demod/atv_demod_debug.h b/drivers/amlogic/atv_demod/atv_demod_debug.h index 4d8e587..936c87e 100644 --- a/drivers/amlogic/atv_demod/atv_demod_debug.h +++ b/drivers/amlogic/atv_demod/atv_demod_debug.h @@ -16,25 +16,28 @@ extern int atvdemod_debug_en; +#undef pr_fmt +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + #undef pr_info -#define pr_info(args...)\ +#define pr_info(fmt, ...)\ do {\ - if (atvdemod_debug_en)\ - printk(args);\ + if (1)\ + printk(fmt, ##__VA_ARGS__);\ } while (0) #undef pr_dbg -#define pr_dbg(args...) \ +#define pr_dbg(fmt, ...) \ do {\ - if (atvdemod_debug_en == 2)\ - printk(args);\ + if (atvdemod_debug_en)\ + printk(fmt, ##__VA_ARGS__);\ } while (0) #undef pr_err -#define pr_err(args...) \ +#define pr_err(fmt, ...) \ do {\ if (1)\ - printk(args);\ + printk(fmt, ##__VA_ARGS__);\ } while (0) #endif /* __ATV_DEMOD_DEBUG_H__ */ diff --git a/drivers/amlogic/atv_demod/atv_demod_driver.c b/drivers/amlogic/atv_demod/atv_demod_driver.c index 43f52e0..e6680d8 100644 --- a/drivers/amlogic/atv_demod/atv_demod_driver.c +++ b/drivers/amlogic/atv_demod/atv_demod_driver.c @@ -71,30 +71,29 @@ static ssize_t aml_atvdemod_store(struct class *class, parm[n++] = token; } - if (!strncmp(parm[0], "init", strlen("init"))) { + if (!strncmp(parm[0], "init", 4)) { ret = atv_demod_enter_mode(); if (ret) - pr_info("[tuner..] atv_restart error.\n"); - } else if (!strncmp(parm[0], "audout_mode", strlen("audout_mode"))) { + pr_info("atv init error.\n"); + } else if (!strncmp(parm[0], "audout_mode", 11)) { if (get_atvdemod_state() == ATVDEMOD_STATE_WORK) { if (is_meson_txlx_cpu()) { atvauddemod_set_outputmode(); - pr_info("[tuner..] atvauddemod_set_outputmode done ....\n"); + pr_info("atvauddemod_set_outputmode done ....\n"); } } else { - pr_info("[tuner..] atvdemod_state not work ....\n"); + pr_info("atvdemod_state not work ....\n"); } - } else if (!strncmp(parm[0], "signal_audmode", - strlen("signal_audmode"))) { + } else if (!strncmp(parm[0], "signal_audmode", 14)) { int stereo_flag, sap_flag; if (get_atvdemod_state() == ATVDEMOD_STATE_WORK) { if (is_meson_txlx_cpu()) { update_btsc_mode(1, &stereo_flag, &sap_flag); - pr_info("[tuner..] get signal_audmode done ....\n"); + pr_info("get signal_audmode done ....\n"); } } else { - pr_info("[tuner..] atvdemod_state not work ....\n"); + pr_info("atvdemod_state not work ....\n"); } } else if (!strncmp(parm[0], "clk", 3)) { adc_set_pll_cntl(1, 0x1, NULL); @@ -102,51 +101,45 @@ static ssize_t aml_atvdemod_store(struct class *class, if (is_meson_txlx_cpu() || is_meson_txhd_cpu()) aud_demod_clk_gate(1); pr_info("atvdemod_clk_init done ....\n"); - } else if (!strcmp(parm[0], "tune")) { + } else if (!strncmp(parm[0], "tune", 4)) { /* val = simple_strtol(parm[1], NULL, 10); */ - } else if (!strcmp(parm[0], "set")) { - if (!strncmp(parm[1], "avout_gain", strlen("avout_gain"))) { + } else if (!strncmp(parm[0], "set", 3)) { + if (!strncmp(parm[1], "avout_gain", 10)) { if (kstrtoul(buf + strlen("avout_offset") + 1, 10, &tmp) == 0) val = tmp; atv_dmd_wr_byte(0x0c, 0x01, val & 0xff); - } else if (!strncmp(parm[1], "avout_offset", - strlen("avout_offset"))) { + } else if (!strncmp(parm[1], "avout_offset", 12)) { if (kstrtoul(buf + strlen("avout_offset") + 1, 10, &tmp) == 0) val = tmp; atv_dmd_wr_byte(0x0c, 0x04, val & 0xff); - } else if (!strncmp(parm[1], "atv_gain", - strlen("atv_gain"))) { + } else if (!strncmp(parm[1], "atv_gain", 8)) { if (kstrtoul(buf + strlen("atv_gain") + 1, 10, &tmp) == 0) val = tmp; atv_dmd_wr_byte(0x19, 0x01, val & 0xff); - } else if (!strncmp(parm[1], "atv_offset", - strlen("atv_offset"))) { + } else if (!strncmp(parm[1], "atv_offset", 10)) { if (kstrtoul(buf + strlen("atv_offset") + 1, 10, &tmp) == 0) val = tmp; atv_dmd_wr_byte(0x19, 0x04, val & 0xff); } - } else if (!strcmp(parm[0], "get")) { - if (!strncmp(parm[1], "avout_gain", strlen("avout_gain"))) { + } else if (!strncmp(parm[0], "get", 3)) { + if (!strncmp(parm[1], "avout_gain", 10)) { val = atv_dmd_rd_byte(0x0c, 0x01); pr_dbg("avout_gain:0x%x\n", val); - } else if (!strncmp(parm[1], "avout_offset", - strlen("avout_offset"))) { + } else if (!strncmp(parm[1], "avout_offset", 12)) { val = atv_dmd_rd_byte(0x0c, 0x04); pr_dbg("avout_offset:0x%x\n", val); - } else if (!strncmp(parm[1], "atv_gain", - strlen("atv_gain"))) { + } else if (!strncmp(parm[1], "atv_gain", 8)) { val = atv_dmd_rd_byte(0x19, 0x01); pr_dbg("atv_gain:0x%x\n", val); - } else if (!strncmp(parm[1], "atv_offset", - strlen("atv_offset"))) { + } else if (!strncmp(parm[1], "atv_offset", 10)) { val = atv_dmd_rd_byte(0x19, 0x04); pr_dbg("atv_offset:0x%x\n", val); } - } else if (!strncmp(parm[0], "snr_hist", strlen("snr_hist"))) { + } else if (!strncmp(parm[0], "snr_hist", 8)) { data_snr_avg = 0; for (i = 0; i < 128; i++) { data_snr[i] = (atv_dmd_rd_long(APB_BLOCK_ADDR_VDAGC, @@ -158,37 +151,32 @@ static ssize_t aml_atvdemod_store(struct class *class, pr_dbg("**********snr_hist_128avg:0x%x(%d)*********\n", data_snr_avg, data_snr_avg); - } else if (!strncmp(parm[0], "afc_info", strlen("afc_info"))) { + } else if (!strncmp(parm[0], "afc_info", 8)) { data_afc = retrieve_vpll_carrier_afc(); - pr_dbg("[amlatvdemod..]afc %d Khz.\n", data_afc); - } else if (!strncmp(parm[0], "ver_info", strlen("ver_info"))) { - pr_dbg("[amlatvdemod..]aml_atvdemod_ver %s.\n", + pr_dbg("afc %d Khz.\n", data_afc); + } else if (!strncmp(parm[0], "ver_info", 8)) { + pr_dbg("aml_atvdemod_ver %s.\n", AMLATVDEMOD_VER); - } else if (!strncmp(parm[0], "audio_autodet", - strlen("audio_autodet"))) { + } else if (!strncmp(parm[0], "audio_autodet", 13)) { aml_audiomode_autodet(NULL); - } else if (!strncmp(parm[0], "overmodule_det", - strlen("overmodule_det"))) { + } else if (!strncmp(parm[0], "overmodule_det", 14)) { /* unsigned long over_threshold, */ /* int det_mode = auto_det_mode; */ aml_atvdemod_overmodule_det(); - } else if (!strncmp(parm[0], "audio_gain_set", - strlen("audio_gain_set"))) { + } else if (!strncmp(parm[0], "audio_gain_set", 14)) { if (kstrtoul(buf + strlen("audio_gain_set") + 1, 16, &tmp) == 0) val = tmp; aml_audio_valume_gain_set(val); pr_dbg("audio_gain_set : %d\n", val); - } else if (!strncmp(parm[0], "audio_gain_get", - strlen("audio_gain_get"))) { + } else if (!strncmp(parm[0], "audio_gain_get", 14)) { val = aml_audio_valume_gain_get(); pr_dbg("audio_gain_get : %d\n", val); - } else if (!strncmp(parm[0], "fix_pwm_adj", - strlen("fix_pwm_adj"))) { + } else if (!strncmp(parm[0], "fix_pwm_adj", 11)) { if (kstrtoul(parm[1], 10, &tmp) == 0) { val = tmp; aml_fix_PWM_adjust(val); } - } else if (!strncmp(parm[0], "rs", strlen("rs"))) { + } else if (!strncmp(parm[0], "rs", 2)) { if (kstrtoul(parm[1], 16, &tmp) == 0) block_addr = tmp; if (kstrtoul(parm[2], 16, &tmp) == 0) @@ -198,7 +186,7 @@ static ssize_t aml_atvdemod_store(struct class *class, pr_dbg("rs block_addr:0x%x,block_reg:0x%x,block_val:0x%x\n", block_addr, block_reg, block_val); - } else if (!strncmp(parm[0], "ws", strlen("ws"))) { + } else if (!strncmp(parm[0], "ws", 2)) { if (kstrtoul(parm[1], 16, &tmp) == 0) block_addr = tmp; if (kstrtoul(parm[2], 16, &tmp) == 0) @@ -212,16 +200,16 @@ static ssize_t aml_atvdemod_store(struct class *class, block_reg, block_val); block_val = atv_dmd_rd_long(block_addr, block_reg); pr_dbg("readback_val:0x%x\n", block_val); - } else if (!strncmp(parm[0], "pin_mux", strlen("pin_mux"))) { + } else if (!strncmp(parm[0], "pin_mux", 7)) { aml_atvdemod_dev->pin = devm_pinctrl_get_select( aml_atvdemod_dev->dev, aml_atvdemod_dev->pin_name); pr_dbg("atvdemod agc pinmux name:%s\n", aml_atvdemod_dev->pin_name); - } else if (!strncmp(parm[0], "snr_cur", strlen("snr_cur"))) { + } else if (!strncmp(parm[0], "snr_cur", 7)) { data_snr_avg = aml_atvdemod_get_snr_ex(); pr_dbg("**********snr_cur:%d*********\n", data_snr_avg); - } else if (!strncmp(parm[0], "pll_status", strlen("pll_status"))) { + } else if (!strncmp(parm[0], "pll_status", 10)) { int vpll_lock; retrieve_vpll_carrier_lock(&vpll_lock); @@ -229,7 +217,7 @@ static ssize_t aml_atvdemod_store(struct class *class, pr_dbg("visual carrier lock:locked\n"); else pr_dbg("visual carrier lock:unlocked\n"); - } else if (!strncmp(parm[0], "line_lock", strlen("line_lock"))) { + } else if (!strncmp(parm[0], "line_lock", 9)) { int line_lock; retrieve_vpll_carrier_line_lock(&line_lock); @@ -237,16 +225,16 @@ static ssize_t aml_atvdemod_store(struct class *class, pr_dbg("line lock:locked\n"); else pr_dbg("line lock:unlocked\n"); - } else if (!strncmp(parm[0], "audio_power", strlen("audio_power"))) { + } else if (!strncmp(parm[0], "audio_power", 11)) { int audio_power = 0; retrieve_vpll_carrier_audio_power(&audio_power); - } else if (!strncmp(parm[0], "adc_power", strlen("adc_power"))) { + } else if (!strncmp(parm[0], "adc_power", 9)) { int adc_power = 0; retrieve_adc_power(&adc_power); pr_dbg("adc_power:%d\n", adc_power); - } else if (!strncmp(parm[0], "search_atv", strlen("search_atv"))) { + } else if (!strncmp(parm[0], "search_atv", 10)) { unsigned int freq = 0; struct analog_parameters params; struct dvb_frontend *fe = NULL; @@ -262,7 +250,7 @@ static ssize_t aml_atvdemod_store(struct class *class, params.std = V4L2_STD_PAL_I; fe->ops.analog_ops.set_params(fe, ¶ms); - } else if (!strncmp(parm[0], "mode_set", strlen("mode_set"))) { + } else if (!strncmp(parm[0], "mode_set", 8)) { int priv_cfg = AML_ATVDEMOD_INIT; struct dvb_frontend *fe = NULL; @@ -349,14 +337,11 @@ static void aml_atvdemod_dt_parse(struct aml_atvdemod_device *pdev) if (ret) pr_err("can't find tuner.\n"); else { - if (!strncmp(str, "mxl661_tuner", - strlen("mxl661_tuner"))) + if (!strncmp(str, "mxl661_tuner", 12)) pdev->tuner_id = AM_TUNER_MXL661; - else if (!strncmp(str, "si2151_tuner", - strlen("si2151_tuner"))) + else if (!strncmp(str, "si2151_tuner", 12)) pdev->tuner_id = AM_TUNER_SI2151; - else if (!strncmp(str, "r840_tuner", - strlen("r840_tuner"))) + else if (!strncmp(str, "r840_tuner", 10)) pdev->tuner_id = AM_TUNER_R840; else pr_err("can't find tuner: %s.\n", str); @@ -392,27 +377,27 @@ static int aml_atvdemod_probe(struct platform_device *pdev) int size_io_reg = 0; struct aml_atvdemod_device *dev = NULL; - pr_info("%s.\n", __func__); - - dev = kzalloc(sizeof(struct aml_atvdemod_device), GFP_KERNEL); - if (!dev) { - ret = -ENOMEM; - goto fail_alloc_device; - } + dev = devm_kmalloc(&pdev->dev, sizeof(struct aml_atvdemod_device), + GFP_KERNEL); + if (!dev) + return -ENOMEM; dev->name = ATVDEMOD_DEVICE_NAME; + dev->cls.name = ATVDEMOD_DEVICE_NAME; +#if 0 + dev->cls.name = devm_kmalloc(&pdev->dev, sizeof(ATVDEMOD_DEVICE_NAME), + GFP_KERNEL); + if (!dev->cls.name) + return -ENOMEM; - dev->cls.name = kzalloc(strlen(ATVDEMOD_DEVICE_NAME), GFP_KERNEL); - if (!dev->cls.name) { - ret = -ENOMEM; - goto fail_alloc_class; - } + snprintf((char *)dev->cls.name, sizeof(ATVDEMOD_DEVICE_NAME), "%s", + ATVDEMOD_DEVICE_NAME); +#endif - sprintf((char *)dev->cls.name, "%s", ATVDEMOD_DEVICE_NAME); dev->cls.class_attrs = atvdemod_debug_class_attrs; ret = class_register(&dev->cls); if (ret) { - dev_err(&pdev->dev, "class_create fail.\n"); + pr_err("class_create fail.\n"); goto fail_create_class; } @@ -420,7 +405,7 @@ static int aml_atvdemod_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { - dev_err(&pdev->dev, "get demod memory resource fail.\n"); + pr_err("get demod memory resource fail.\n"); goto fail_get_resource; } @@ -428,7 +413,7 @@ static int aml_atvdemod_probe(struct platform_device *pdev) dev->demod_reg_base = devm_ioremap_nocache(&pdev->dev, res->start, size_io_reg); if (!dev->demod_reg_base) { - dev_err(&pdev->dev, "demod ioremap failed.\n"); + pr_err("demod ioremap failed.\n"); goto fail_get_resource; } @@ -438,14 +423,14 @@ static int aml_atvdemod_probe(struct platform_device *pdev) res = platform_get_resource(pdev, IORESOURCE_MEM, 1); if (!res) { - dev_err(&pdev->dev, "no audio demod memory resource.\n"); + pr_err("no audio demod memory resource.\n"); dev->audio_reg_base = NULL; } else { size_io_reg = resource_size(res); dev->audio_reg_base = devm_ioremap_nocache( &pdev->dev, res->start, size_io_reg); if (!dev->audio_reg_base) { - dev_err(&pdev->dev, "audio ioremap failed.\n"); + pr_err("audio ioremap failed.\n"); goto fail_get_resource; } @@ -477,7 +462,7 @@ static int aml_atvdemod_probe(struct platform_device *pdev) dev->v4l2_ad.tuner_id = dev->tuner_id; ret = v4l2_resister_frontend(&dev->v4l2_ad, &dev->v4l2_fe); if (ret) { - dev_err(&pdev->dev, "resister v4l2 fail.\n"); + pr_err("resister v4l2 fail.\n"); goto fail_register_v4l2; } @@ -485,7 +470,7 @@ static int aml_atvdemod_probe(struct platform_device *pdev) amlatvdemod_devp = dev; - pr_info("probe ok.\n"); + pr_info("%s: OK.\n", __func__); return 0; @@ -493,11 +478,10 @@ fail_register_v4l2: fail_get_resource: class_unregister(&dev->cls); fail_create_class: - kfree(dev->cls.name); -fail_alloc_class: - kfree(dev); -fail_alloc_device: - pr_info("[amlatvdemod]: atvdemod_init fail.\n"); + /*devm_kfree(&pdev->dev, dev->cls.name);*/ + devm_kfree(&pdev->dev, dev); + + pr_info("%s: fail.\n", __func__); return ret; } @@ -515,17 +499,17 @@ static int aml_atvdemod_remove(struct platform_device *pdev) amlatvdemod_devp = NULL; - kfree(dev->cls.name); - kfree(dev); + /*devm_kfree(&pdev->dev, dev->cls.name);*/ + devm_kfree(&pdev->dev, dev); - pr_dbg("[amlatvdemod] : aml_atvdemod_remove.\n"); + pr_info("%s: OK.\n", __func__); return 0; } static void aml_atvdemod_shutdown(struct platform_device *pdev) { - pr_info("%s done.\n", __func__); + pr_info("%s: OK.\n", __func__); } static int aml_atvdemod_suspend(struct platform_device *pdev, @@ -535,7 +519,7 @@ static int aml_atvdemod_suspend(struct platform_device *pdev, v4l2_frontend_suspend(&dev->v4l2_fe); - pr_info("%s: OK\n", __func__); + pr_info("%s: OK.\n", __func__); return 0; } @@ -546,7 +530,7 @@ int aml_atvdemod_resume(struct platform_device *pdev) v4l2_frontend_resume(&dev->v4l2_fe); - pr_info("%s: OK\n", __func__); + pr_info("%s: OK.\n", __func__); return 0; } @@ -575,11 +559,11 @@ static struct platform_driver aml_atvdemod_driver = { static int __init aml_atvdemod_init(void) { if (platform_driver_register(&aml_atvdemod_driver)) { - pr_err("failed to register amlatvdemod driver module\n"); + pr_err("%s: failed to register driver.\n", __func__); return -ENODEV; } - pr_dbg("[amlatvdemod..]%s: driver init ok.\n", __func__); + pr_info("%s: OK.\n", __func__); return 0; } @@ -587,7 +571,7 @@ static int __init aml_atvdemod_init(void) static void __exit aml_atvdemod_exit(void) { platform_driver_unregister(&aml_atvdemod_driver); - pr_dbg("[amlatvdemod..]%s: driver exit ok.\n", __func__); + pr_info("%s: OK.\n", __func__); } MODULE_AUTHOR("nengwen.chen <nengwen.chen@amlogic.com>"); diff --git a/drivers/amlogic/atv_demod/atv_demod_ops.c b/drivers/amlogic/atv_demod/atv_demod_ops.c index 13695e6..8bcf116 100644 --- a/drivers/amlogic/atv_demod/atv_demod_ops.c +++ b/drivers/amlogic/atv_demod/atv_demod_ops.c @@ -72,7 +72,7 @@ void aml_fe_get_atvaudio_state(int *state) else *state = 0; - pr_info("aml_fe_get_atvaudio_state: %d, power = %d.\n", + pr_dbg("aml_fe_get_atvaudio_state: %d, power = %d.\n", *state, power); } @@ -201,10 +201,13 @@ int atv_demod_enter_mode(void) } /* set_aft_thread_enable(1, 0); */ - //memset(&(amlatvdemod_devp->parm), 0, sizeof(amlatvdemod_devp->parm)); + /* + * memset(&(amlatvdemod_devp->parm), 0, + * sizeof(amlatvdemod_devp->parm)); + */ atvdemod_state = ATVDEMOD_STATE_WORK; - pr_info("%s: OK\n", __func__); + pr_info("%s: OK.\n", __func__); return 0; } @@ -224,10 +227,14 @@ int atv_demod_leave_mode(void) adc_set_pll_cntl(0, 0x1, NULL); if (is_meson_txlx_cpu() || is_meson_txhd_cpu()) aud_demod_clk_gate(0); - //memset(&(amlatvdemod_devp->parm), 0, sizeof(amlatvdemod_devp->parm)); + + /* + * memset(&(amlatvdemod_devp->parm), 0, + * sizeof(amlatvdemod_devp->parm)); + */ atvdemod_state = ATVDEMOD_STATE_IDEL; - pr_info("%s: OK\n", __func__); + pr_info("%s: OK.\n", __func__); return 0; } @@ -288,14 +295,12 @@ static void atv_demod_set_params(struct dvb_frontend *fe, if (!is_atvdemod_scan_mode()) atvauddemod_init(); - pr_info("[amlatvdemod..]%s set std color %lld, audio type %lld.\n", + pr_info("%s: set std color %lld, audio type %lld.\n", __func__, amlatvdemod_devp->std, amlatvdemod_devp->std); - pr_info("[amlatvdemod..]%s set if_freq %d, if_inv %d.\n", + pr_info("%s: set if_freq %d, if_inv %d.\n", __func__, amlatvdemod_devp->if_freq, amlatvdemod_devp->if_inv); } - - pr_err("%s: tuner_id = %d.\n", __func__, atvdemod_param->tuner_id); } static int atv_demod_has_signal(struct dvb_frontend *fe, u16 *signal) @@ -316,8 +321,6 @@ static int atv_demod_has_signal(struct dvb_frontend *fe, u16 *signal) pr_info("visual carrier lock:unlocked\n"); } - pr_err("%s.\n", __func__); - return 0; } @@ -328,20 +331,18 @@ static void atv_demod_standby(struct dvb_frontend *fe) set_atvdemod_state(ATVDEMOD_STATE_SLEEP); } - pr_info("%s: OK\n", __func__); + pr_info("%s: OK.\n", __func__); } static void atv_demod_tuner_status(struct dvb_frontend *fe) { - pr_err("%s.\n", __func__); + pr_info("%s.\n", __func__); } static int atv_demod_get_afc(struct dvb_frontend *fe, s32 *afc) { *afc = retrieve_vpll_carrier_afc(); - pr_info("%s: afc %d.\n", __func__, *afc); - return 0; } @@ -360,7 +361,7 @@ static void atv_demod_release(struct dvb_frontend *fe) fe->analog_demod_priv = NULL; - pr_err("%s.\n", __func__); + pr_info("%s: OK.\n", __func__); } static int atv_demod_set_config(struct dvb_frontend *fe, void *priv_cfg) @@ -368,7 +369,7 @@ static int atv_demod_set_config(struct dvb_frontend *fe, void *priv_cfg) int *state = (int *) priv_cfg; if (!state) { - pr_err("%s state == NULL.\n", __func__); + pr_err("%s: state == NULL.\n", __func__); return -1; } @@ -391,8 +392,6 @@ static int atv_demod_set_config(struct dvb_frontend *fe, void *priv_cfg) mutex_unlock(&atv_demod_list_mutex); - pr_err("%s done.\n", __func__); - return 0; } @@ -414,6 +413,7 @@ struct dvb_frontend *aml_atvdemod_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c_adap, u8 i2c_addr, u32 tuner_id) { int instance = 0; + void *p = NULL; struct atv_demod_priv *priv = NULL; mutex_lock(&atv_demod_list_mutex); @@ -449,12 +449,16 @@ struct dvb_frontend *aml_atvdemod_attach(struct dvb_frontend *fe, case AM_TUNER_R840: break; case AM_TUNER_SI2151: - v4l2_attach(si2151_attach, fe, i2c_adap, i2c_addr); + p = v4l2_attach(si2151_attach, fe, i2c_adap, i2c_addr); break; case AM_TUNER_MXL661: - v4l2_attach(mxl661_attach, fe, i2c_adap, i2c_addr); + p = v4l2_attach(mxl661_attach, fe, i2c_adap, i2c_addr); break; } + if (!p) + pr_err("%s: v4l2_attach tuner %d error.\n", + __func__, tuner_id); + return fe; } diff --git a/drivers/amlogic/atv_demod/atv_demod_v4l2.c b/drivers/amlogic/atv_demod/atv_demod_v4l2.c index 4419864..d7e0734 100644 --- a/drivers/amlogic/atv_demod/atv_demod_v4l2.c +++ b/drivers/amlogic/atv_demod/atv_demod_v4l2.c @@ -68,7 +68,8 @@ void aml_fe_hook_cvd(hook_func_t atv_mode, hook_func_t cvd_hv_lock, aml_fe_hook_atv_status = atv_mode; aml_fe_hook_hv_lock = cvd_hv_lock; aml_fe_hook_get_fmt = get_fmt; - pr_dbg("[aml_fe]%s\n", __func__); + + pr_info("%s: OK.\n", __func__); } EXPORT_SYMBOL(aml_fe_hook_cvd); @@ -104,7 +105,7 @@ static v4l2_std_id demod_fmt_2_v4l2_std(int fmt) std = V4L2_STD_SECAM_DK; break; default: - pr_err("%s: unsupport fmt: 0x%0x.\n", __func__, fmt); + pr_err("%s: Unsupport fmt: 0x%0x.\n", __func__, fmt); } return std; @@ -137,14 +138,15 @@ static v4l2_std_id trans_tvin_fmt_to_v4l2_std(int fmt) std = V4L2_STD_SECAM; break; default: - pr_err("%s err fmt: 0x%x\n", __func__, fmt); + pr_err("%s: Unsupport fmt: 0x%x\n", __func__, fmt); break; } return std; } static void v4l2_fe_try_analog_format(struct v4l2_frontend *v4l2_fe, - bool auto_search_std, v4l2_std_id *video_fmt, int *audio_fmt) + bool auto_search_std, v4l2_std_id *video_fmt, + unsigned int *audio_fmt) { struct dvb_frontend *fe = &v4l2_fe->v4l2_ad->fe; struct v4l2_analog_parameters *p = &v4l2_fe->params; @@ -153,7 +155,7 @@ static void v4l2_fe_try_analog_format(struct v4l2_frontend *v4l2_fe, int try_vfmt_cnt = 300; int varify_cnt = 0; v4l2_std_id std_bk = 0; - int audio = 0; + unsigned int audio = 0; if (auto_search_std == true) { for (i = 0; i < try_vfmt_cnt; i++) { @@ -202,8 +204,8 @@ static void v4l2_fe_try_analog_format(struct v4l2_frontend *v4l2_fe, i, (unsigned int) std_bk); if (std_bk == 0) { - pr_err("[%s] failed to get v fmt !!\n", __func__); - pr_err("[%s] vfmt assume PAL !!\n", __func__); + pr_err("%s: failed to get video fmt, assume PAL.\n", + __func__); std_bk = TVIN_SIG_FMT_CVBS_PAL_I; p->std = V4L2_STD_PAL_I; p->frequency += 1; @@ -240,21 +242,23 @@ static void v4l2_fe_try_analog_format(struct v4l2_frontend *v4l2_fe, #endif #else /* Now, force to NTSC_M, Ours demod only support M for NTSC.*/ audio = V4L2_STD_NTSC_M; - std_bk |= V4L2_COLOR_STD_NTSC; + *video_fmt |= V4L2_COLOR_STD_NTSC; #endif } else if (std_bk == V4L2_STD_SECAM) { audio = V4L2_STD_SECAM_L; - std_bk |= V4L2_COLOR_STD_SECAM; + *video_fmt |= V4L2_COLOR_STD_SECAM; } else { /*V4L2_COLOR_STD_PAL*/ - std_bk |= V4L2_COLOR_STD_PAL; + *video_fmt |= V4L2_COLOR_STD_PAL; amlatvdemod_set_std(AML_ATV_DEMOD_VIDEO_MODE_PROP_PAL_DK); audio = aml_audiomode_autodet(fe); + pr_info("autodet audmode 0x%x\n", audio); audio = demod_fmt_2_v4l2_std(audio); + pr_info("v4l2_std audmode 0x%x\n", audio); #if 0 /* Why do this to me? We need support PAL_M.*/ if (audio == V4L2_STD_PAL_M) { audio = demod_fmt_2_v4l2_std(broad_std_except_pal_m); - pr_err("select audmode 0x%x\n", audio); + pr_info("select audmode 0x%x\n", audio); } #endif } @@ -284,8 +288,7 @@ static int v4l2_fe_afc_closer(struct v4l2_frontend *v4l2_fe, int minafcfreq, if (abs(p->frequency - freq_success) < 3000000 && p->frequency > 45000000) { ktime_get_ts(&time_now); - //if (debug_fe & 0x2) - pr_err("%s: tv_sec now:%ld,tv_sec success:%ld\n", + pr_err("[%s] tv_sec now:%ld,tv_sec success:%ld\n", __func__, time_now.tv_sec, success_time.tv_sec); /* beyond 10s search same frequency is ok */ if ((time_now.tv_sec - success_time.tv_sec) < 10) @@ -312,8 +315,7 @@ static int v4l2_fe_afc_closer(struct v4l2_frontend *v4l2_fe, int minafcfreq, else if (fe->ops.tuner_ops.get_afc) fe->ops.tuner_ops.get_afc(fe, &afc); - //if (debug_fe & 0x2) - pr_err("[%s] get afc %d khz, freq %u.\n", + pr_dbg("[%s] get afc %d khz, freq %u.\n", __func__, afc, p->frequency); if (afc == 0xffff) { @@ -321,7 +323,7 @@ static int v4l2_fe_afc_closer(struct v4l2_frontend *v4l2_fe, int minafcfreq, if (lock_cnt > 0) { p->frequency = temp_freq + temp_afc * 1000; - pr_err("%s, force lock, f:%d\n", + pr_err("[%s] force lock, f:%d\n", __func__, p->frequency); break; } @@ -352,21 +354,21 @@ static int v4l2_fe_afc_closer(struct v4l2_frontend *v4l2_fe, int minafcfreq, p->frequency += afc * 1000; if (unlikely(p->frequency > maxafcfreq)) { - pr_err("[%s]:[%d] is exceed maxafcfreq[%d]\n", + pr_err("[%s] [%d] is exceed maxafcfreq[%d]\n", __func__, p->frequency, maxafcfreq); p->frequency = set_freq; return -1; } #if 0 /*if enable ,it would miss program*/ if (unlikely(c->frequency < minafcfreq)) { - pr_dbg("[%s]:[%d] is exceed minafcfreq[%d]\n", + pr_dbg("[%s] [%d] is exceed minafcfreq[%d]\n", __func__, c->frequency, minafcfreq); c->frequency = set_freq; return -1; } #endif if (likely(!(count--))) { - pr_err("[%s]:exceed the afc count\n", __func__); + pr_err("[%s] exceed the afc count\n", __func__); p->frequency = set_freq; return -1; } @@ -387,8 +389,7 @@ static int v4l2_fe_afc_closer(struct v4l2_frontend *v4l2_fe, int minafcfreq, freq_success = p->frequency; ktime_get_ts(&success_time); - //if (debug_fe & 0x2) - pr_err("[%s] get afc %d khz done, freq %u.\n", + pr_dbg("[%s] get afc %d khz done, freq %u.\n", __func__, afc, p->frequency); } @@ -409,7 +410,7 @@ static enum v4l2_search v4l2_frontend_search(struct v4l2_frontend *v4l2_fe) __u32 afc_step = 0; int tuner_status_cnt_local = tuner_status_cnt; v4l2_std_id std_bk = 0; - int audio = 0; + unsigned int audio = 0; int double_check_cnt = 1; bool auto_search_std = false; int search_count = 0; @@ -429,13 +430,13 @@ static enum v4l2_search v4l2_frontend_search(struct v4l2_frontend *v4l2_fe) } if (p->afc_range == 0) { - pr_err("[%s]:afc_range == 0, skip the search\n", __func__); + pr_err("[%s] afc_range == 0, skip the search\n", __func__); return V4L2_SEARCH_INVALID; } - pr_err("[%s] afc_range: [%d], tuner type: [%d], freq: [%d].\n", - __func__, p->afc_range, - v4l2_fe->v4l2_ad->tuner_id, p->frequency); + pr_info("[%s] afc_range: [%d], tuner: [%d], freq: [%d], flag: [%d].\n", + __func__, p->afc_range, v4l2_fe->v4l2_ad->tuner_id, + p->frequency, p->flag); /* backup the freq by api */ set_freq = p->frequency; @@ -447,7 +448,7 @@ static enum v4l2_search v4l2_frontend_search(struct v4l2_frontend *v4l2_fe) if (p->std == 0) { p->std = V4L2_STD_PAL_I; auto_search_std = true; - pr_dbg("%s, user analog.std is 0, so set it to PAL | I.\n", + pr_dbg("[%s] user analog.std is 0, so set it to PAL | I.\n", __func__); } @@ -473,7 +474,7 @@ static enum v4l2_search v4l2_frontend_search(struct v4l2_frontend *v4l2_fe) } /**enter auto search mode**/ - pr_dbg("%s Auto search user std: 0x%08x\n", + pr_dbg("[%s] Auto search std: 0x%08x\n", __func__, (unsigned int) p->std); #ifdef DEBUG_TIME_CUS @@ -564,7 +565,7 @@ static enum v4l2_search v4l2_frontend_search(struct v4l2_frontend *v4l2_fe) #ifdef DEBUG_TIME_CUS time_end = jiffies_to_msecs(jiffies); time_delta = time_end - time_start; - pr_dbg("[ATV_SEARCH_SUCCESS]%s: time_delta:%d ms\n", + pr_dbg("[%s] time_delta:%d ms\n", __func__, time_delta); #endif /*sync param */ @@ -607,16 +608,14 @@ static enum v4l2_search v4l2_frontend_search(struct v4l2_frontend *v4l2_fe) #ifdef DEBUG_TIME_CUS time_end = jiffies_to_msecs(jiffies); time_delta = time_end - time_start; - pr_dbg("[ATV_SEARCH_FAILED]%s: time_delta:%d ms\n", - __func__, time_delta); + pr_dbg("[%s] time_delta:%d ms\n", __func__, time_delta); #endif } #ifdef DEBUG_TIME_CUS time_end = jiffies_to_msecs(jiffies); time_delta = time_end - time_start; - pr_dbg("[ATV_SEARCH_FAILED]%s: time_delta:%d ms\n", - __func__, time_delta); + pr_dbg("[%s] time_delta:%d ms\n", __func__, time_delta); #endif pr_dbg("[%s] [%d] over of range [min=%d, max=%d], search failed.\n", @@ -635,7 +634,7 @@ static int v4l2_frontend_get_event(struct v4l2_frontend *v4l2_fe, struct v4l2_frontend_private *fepriv = v4l2_fe->frontend_priv; struct v4l2_fe_events *events = &fepriv->events; - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); if (events->overflow) { events->overflow = 0; @@ -678,7 +677,7 @@ static void v4l2_frontend_add_event(struct v4l2_frontend *v4l2_fe, struct v4l2_frontend_event *e = NULL; int wp; - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); mutex_lock(&events->mtx); @@ -752,7 +751,7 @@ static int v4l2_frontend_thread(void *data) enum v4l2_status s = V4L2_TIMEDOUT; unsigned long timeout = 0; - pr_err("%s: thread start.\n", __func__); + pr_info("%s: thread start.\n", __func__); fepriv->delay = 3 * HZ; fepriv->status = 0; @@ -782,7 +781,7 @@ restart: /* pr_dbg("%s: state = %d.\n", __func__, fepriv->state); */ if (fepriv->state & V4L2FE_STATE_RETUNE) { - pr_err("%s: Retune requested, V4L2FE_STATE_RETUNE.\n", + pr_dbg("%s: Retune requested, V4L2FE_STATE_RETUNE.\n", __func__); fepriv->state = V4L2FE_STATE_TUNED; } @@ -838,7 +837,7 @@ restart: v4l2_frontend_wakeup(v4l2_fe); - pr_err("%s: thread exit state = %d.\n", __func__, fepriv->state); + pr_dbg("%s: thread exit state = %d.\n", __func__, fepriv->state); return 0; } @@ -847,7 +846,7 @@ static void v4l2_frontend_stop(struct v4l2_frontend *v4l2_fe) { struct v4l2_frontend_private *fepriv = v4l2_fe->frontend_priv; - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); fepriv->exit = V4L2_FE_NORMAL_EXIT; @@ -864,7 +863,7 @@ static void v4l2_frontend_stop(struct v4l2_frontend *v4l2_fe) /* paranoia check in case a signal arrived */ if (fepriv->thread) - pr_err("%s: warning: thread %p won't exit\n", + pr_info("%s: warning: thread %p won't exit\n", __func__, fepriv->thread); } @@ -874,7 +873,7 @@ static int v4l2_frontend_start(struct v4l2_frontend *v4l2_fe) struct task_struct *thread = NULL; struct v4l2_frontend_private *fepriv = v4l2_fe->frontend_priv; - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); if (fepriv->thread) { if (fepriv->exit == V4L2_FE_NO_EXIT) @@ -920,13 +919,13 @@ static int v4l2_set_frontend(struct v4l2_frontend *v4l2_fe, struct v4l2_frontend_private *fepriv = v4l2_fe->frontend_priv; struct dvb_frontend *fe = &v4l2_fe->v4l2_ad->fe; - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); freq_min = fe->ops.tuner_ops.info.frequency_min; freq_max = fe->ops.tuner_ops.info.frequency_max; if (freq_min == 0 || freq_max == 0) - pr_err("%s: demod or tuner frequency limits undefined.\n", + pr_info("%s: demod or tuner frequency limits undefined.\n", __func__); /* range check: frequency */ @@ -970,6 +969,9 @@ static int v4l2_set_frontend(struct v4l2_frontend *v4l2_fe, static int v4l2_get_frontend(struct v4l2_frontend *v4l2_fe, struct v4l2_analog_parameters *p) { + pr_dbg("%s.\n", __func__); + + memcpy(p, &v4l2_fe->params, sizeof(struct v4l2_analog_parameters)); return 0; } @@ -982,7 +984,7 @@ static int v4l2_frontend_set_mode(struct v4l2_frontend *v4l2_fe, struct analog_demod_ops *analog_ops = NULL; int priv_cfg = 0; - pr_err("%s: params = %ld.\n", __func__, params); + pr_dbg("%s: params = %ld.\n", __func__, params); fepriv->state = V4L2FE_STATE_IDLE; @@ -1023,20 +1025,20 @@ static int v4l2_frontend_read_status(struct v4l2_frontend *v4l2_fe, static void v4l2_frontend_vdev_release(struct video_device *dev) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); } static ssize_t v4l2_frontend_read(struct file *filp, char __user *buf, size_t count, loff_t *ppos) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static ssize_t v4l2_frontend_write(struct file *filp, const char __user *buf, size_t count, loff_t *ppos) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } @@ -1048,10 +1050,11 @@ static unsigned int v4l2_frontend_poll(struct file *filp, poll_wait(filp, &fepriv->events.wait_queue, pts); - if (fepriv->events.eventw != fepriv->events.eventr) + if (fepriv->events.eventw != fepriv->events.eventr) { + pr_dbg("%s: POLLIN | POLLRDNORM | POLLPRI.\n", __func__); return (POLLIN | POLLRDNORM | POLLPRI); + } - pr_info("%s.\n", __func__); return 0; } @@ -1059,18 +1062,28 @@ static long v4l2_frontend_ioctl(struct file *filp, void *fh, bool valid_prio, unsigned int cmd, void *arg) { int ret = 0; + int need_lock = 1; struct v4l2_frontend *v4l2_fe = video_get_drvdata(video_devdata(filp)); struct v4l2_frontend_private *fepriv = v4l2_fe->frontend_priv; - pr_err("%s: cmd = 0x%x.\n", __func__, cmd); + pr_dbg("%s: cmd = 0x%x.\n", __func__, cmd); if (fepriv->exit != V4L2_FE_NO_EXIT) return -ENODEV; - if (down_interruptible(&fepriv->sem)) - return -ERESTARTSYS; + if (cmd == V4L2_READ_STATUS || cmd == V4L2_GET_FRONTEND) + need_lock = 0; + + if (need_lock) + if (down_interruptible(&fepriv->sem)) + return -ERESTARTSYS; + + if (fepriv->exit != DVB_FE_NO_EXIT) { + up(&fepriv->sem); + return -ENODEV; + } switch (cmd) { - case V4L2_SET_FRONTEND: + case V4L2_SET_FRONTEND: /* 0x40285669 */ ret = v4l2_set_frontend(v4l2_fe, (struct v4l2_analog_parameters *) arg); break; @@ -1080,13 +1093,13 @@ static long v4l2_frontend_ioctl(struct file *filp, void *fh, bool valid_prio, (struct v4l2_analog_parameters *) arg); break; - case V4L2_GET_EVENT: + case V4L2_GET_EVENT: /* 0x8030566b */ ret = v4l2_frontend_get_event(v4l2_fe, (struct v4l2_frontend_event *) arg, filp->f_flags); break; - case V4L2_SET_MODE: + case V4L2_SET_MODE: /* 0x566c */ ret = v4l2_frontend_set_mode(v4l2_fe, (unsigned long) arg); break; @@ -1099,7 +1112,8 @@ static long v4l2_frontend_ioctl(struct file *filp, void *fh, bool valid_prio, break; } - up(&fepriv->sem); + if (need_lock) + up(&fepriv->sem); return ret; } @@ -1128,27 +1142,25 @@ static int v4l2_frontend_open(struct file *filp) break; } - if (p == NULL) - pr_err("%s: v4l2_attach error.\n", __func__); + if (p == NULL) { + pr_err("%s: v4l2_attach tuner %d error.\n", + __func__, v4l2_fe->v4l2_ad->tuner_id); + return -EBUSY; + } } ret = v4l2_frontend_start(v4l2_fe); fepriv->events.eventr = fepriv->events.eventw = 0; - pr_err("%s.\n", fepriv->v4l2dev->name); - pr_err("%s.\n", __func__); + pr_info("%s: %s OK.\n", __func__, fepriv->v4l2dev->name); return ret; } static int v4l2_frontend_release(struct file *filp) { - struct v4l2_frontend *v4l2_fe = video_get_drvdata(video_devdata(filp)); - struct v4l2_frontend_private *fepriv = v4l2_fe->frontend_priv; - - pr_err("%s.\n", fepriv->v4l2dev->name); - pr_err("%s.\n", __func__); + pr_info("%s: OK.\n", __func__); return 0; } @@ -1166,77 +1178,77 @@ static const struct v4l2_file_operations v4l2_fe_fops = { static int v4l2_frontend_vidioc_g_audio(struct file *file, void *fh, struct v4l2_audio *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_s_audio(struct file *filp, void *fh, const struct v4l2_audio *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_g_tuner(struct file *filp, void *fh, struct v4l2_tuner *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_s_tuner(struct file *filp, void *fh, const struct v4l2_tuner *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_g_frequency(struct file *filp, void *fh, struct v4l2_frequency *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_s_frequency(struct file *filp, void *fh, const struct v4l2_frequency *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_enum_freq_bands(struct file *filp, void *fh, struct v4l2_frequency_band *band) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_g_modulator(struct file *filp, void *fh, struct v4l2_modulator *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } static int v4l2_frontend_vidioc_s_modulator(struct file *filp, void *fh, const struct v4l2_modulator *a) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } int v4l2_frontend_vidioc_streamon(struct file *filp, void *fh, enum v4l2_buf_type i) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } int v4l2_frontend_vidioc_streamoff(struct file *filp, void *fh, enum v4l2_buf_type i) { - pr_err("%s.\n", __func__); + pr_dbg("%s.\n", __func__); return 0; } @@ -1270,7 +1282,7 @@ int v4l2_resister_frontend(struct v4l2_adapter *v4l2_ad, struct v4l2_frontend_private *fepriv = NULL; struct v4l2_atvdemod_device *v4l2dev = NULL; - if (v4l2_ad == NULL || v4l2_fe == NULL) { + if (!v4l2_ad || !v4l2_fe) { pr_err("NULL pointer.\n"); return -1; } @@ -1280,7 +1292,7 @@ int v4l2_resister_frontend(struct v4l2_adapter *v4l2_ad, v4l2_fe->frontend_priv = kzalloc(sizeof(struct v4l2_frontend_private), GFP_KERNEL); - if (v4l2_fe->frontend_priv == NULL) { + if (!v4l2_fe->frontend_priv) { mutex_unlock(&v4l2_fe_mutex); pr_err("kzalloc fail.\n"); return -ENOMEM; @@ -1292,7 +1304,7 @@ int v4l2_resister_frontend(struct v4l2_adapter *v4l2_ad, fepriv->v4l2dev = kzalloc(sizeof(struct v4l2_atvdemod_device), GFP_KERNEL); - if (fepriv->v4l2dev == NULL) { + if (!fepriv->v4l2dev) { ret = -ENOMEM; goto malloc_fail; } @@ -1336,7 +1348,7 @@ int v4l2_resister_frontend(struct v4l2_adapter *v4l2_ad, mutex_unlock(&v4l2_fe_mutex); - pr_err("resister aml atv demod device.\n"); + pr_info("%s: OK.\n", __func__); return 0; @@ -1349,6 +1361,7 @@ malloc_fail: kfree(v4l2_fe->frontend_priv); v4l2_fail: mutex_unlock(&v4l2_fe_mutex); + pr_info("%s: Fail.\n", __func__); return ret; } @@ -1366,7 +1379,7 @@ int v4l2_unresister_frontend(struct v4l2_frontend *v4l2_fe) mutex_unlock(&v4l2_fe_mutex); - pr_err("unregister aml atv demod device.\n"); + pr_info("%s: OK.\n", __func__); return 0; } @@ -1378,14 +1391,14 @@ int v4l2_frontend_suspend(struct v4l2_frontend *v4l2_fe) struct dvb_tuner_ops tuner_ops = fe->ops.tuner_ops; struct analog_demod_ops analog_ops = fe->ops.analog_ops; - pr_info("%s.\n", __func__); - if (analog_ops.standby) analog_ops.standby(fe); if (tuner_ops.suspend) tuner_ops.suspend(fe); + pr_info("%s: OK.\n", __func__); + return ret; } @@ -1398,8 +1411,6 @@ int v4l2_frontend_resume(struct v4l2_frontend *v4l2_fe) struct analog_demod_ops analog_ops = fe->ops.analog_ops; int priv_cfg = AML_ATVDEMOD_RESUME; - pr_info("%s.\n", __func__); - if (analog_ops.set_config) analog_ops.set_config(fe, &priv_cfg); @@ -1409,5 +1420,7 @@ int v4l2_frontend_resume(struct v4l2_frontend *v4l2_fe) fepriv->state = V4L2FE_STATE_RETUNE; v4l2_frontend_wakeup(v4l2_fe); + pr_info("%s: OK.\n", __func__); + return ret; } diff --git a/drivers/amlogic/atv_demod/atvauddemod_func.c b/drivers/amlogic/atv_demod/atvauddemod_func.c index 97b62fce..e9f1ee1 100644 --- a/drivers/amlogic/atv_demod/atvauddemod_func.c +++ b/drivers/amlogic/atv_demod/atvauddemod_func.c @@ -1158,7 +1158,7 @@ void audio_thd_det(void) if (thd_flag == 0) { thd_tmp_v += adec_rd_reg(OV_CNT_REPORT) & 0xffff; - pr_info("#0x12:0x%x\n", (adec_rd_reg(OV_CNT_REPORT) & 0xffff)); + pr_dbg("#0x12:0x%x\n", (adec_rd_reg(OV_CNT_REPORT) & 0xffff)); if (thd_cnt == 15) { thd_tmp_v /= 3; if (thd_tmp_v > audio_thd_threshold1) { @@ -1171,7 +1171,7 @@ void audio_thd_det(void) } else if (thd_flag == 1) { thd_tmp_v += adec_rd_reg(OV_CNT_REPORT) & 0xffff; - pr_info("#0x13:0x%x\n", (adec_rd_reg(OV_CNT_REPORT) & 0xffff)); + pr_dbg("#0x13:0x%x\n", (adec_rd_reg(OV_CNT_REPORT) & 0xffff)); if (thd_cnt == 15) { thd_tmp_v /= 3; if (thd_tmp_v <= audio_thd_threshold2) { @@ -1253,7 +1253,7 @@ void audio_mode_det(int mode) last_stereo_flag = stereo_flag; last_sap_flag = sap_flag; - pr_info("[tuner..] atvdemod_monitor_audio done ....\n"); + pr_dbg("atvdemod_monitor_audio done ....\n"); } } diff --git a/drivers/amlogic/atv_demod/atvdemod_func.c b/drivers/amlogic/atv_demod/atvdemod_func.c index 725c374..35774b4 100644 --- a/drivers/amlogic/atv_demod/atvdemod_func.c +++ b/drivers/amlogic/atv_demod/atvdemod_func.c @@ -1302,7 +1302,7 @@ void retrieve_vpll_carrier_line_lock(int *lock) line_lock = data & 0x10; line_lock_strong = data & 0x8; - pr_info("line_lock = 0x%x, line_lock_strong = 0x%x\n", + pr_dbg("line_lock = 0x%x, line_lock_strong = 0x%x\n", line_lock, line_lock_strong); *lock = (line_lock | line_lock_strong); @@ -1327,7 +1327,7 @@ void retrieve_vpll_carrier_audio_power(int *power) *power = data & 0xffff; } - pr_info("retrieve_vpll_carrier_audio_power: %d.\n", *power); + pr_dbg("retrieve_vpll_carrier_audio_power: %d.\n", *power); } int retrieve_vpll_carrier_afc(void) @@ -1343,7 +1343,7 @@ int retrieve_vpll_carrier_afc(void) if ((pll_lock == 1) || (line_lock == 0x10)) { /*if pll unlock, afc is invalid*/ - pr_err("[afc invalid] pll: %d, line: %d, line_strong: %d, field: %d.\n", + pr_info("[afc invalid] pll: %d, line: %d, line_strong: %d, field: %d.\n", pll_lock, line_lock, line_lock_strong, field_lock); @@ -1427,9 +1427,9 @@ void atvdemod_afc_tune(void) mix1_freq_cur = atv_dmd_rd_byte(APB_BLOCK_ADDR_MIXER_1, 0x0); delta_mix1_freq = abs(mix1_freq_cur - mix1_freq); if ((lock&0x1) == 0) - pr_info("%s visual carrier lock:locked\n", __func__); + pr_dbg("%s visual carrier lock:locked\n", __func__); else - pr_info("%s visual carrier lock:unlocked\n", __func__); + pr_dbg("%s visual carrier lock:unlocked\n", __func__); /* set_pll_lpf(lock); */ retrieve_frequency_offset(&freq_offset); /* pr_info("visual carrier offset:%d Hz\n",*/ @@ -2030,23 +2030,23 @@ int aml_audiomode_autodet(struct dvb_frontend *fe) param->param.std = V4L2_STD_PAL; switch (broad_std) { case AML_ATV_DEMOD_VIDEO_MODE_PROP_PAL_DK: - param->param.std |= V4L2_STD_PAL_DK; + param->param.std = V4L2_STD_PAL_DK; param->param.audmode = V4L2_STD_PAL_DK; break; case AML_ATV_DEMOD_VIDEO_MODE_PROP_PAL_I: - param->param.std |= V4L2_STD_PAL_I; + param->param.std = V4L2_STD_PAL_I; param->param.audmode = V4L2_STD_PAL_I; break; case AML_ATV_DEMOD_VIDEO_MODE_PROP_PAL_BG: - param->param.std |= V4L2_STD_PAL_BG; + param->param.std = V4L2_STD_PAL_BG; param->param.audmode = V4L2_STD_PAL_BG; break; case AML_ATV_DEMOD_VIDEO_MODE_PROP_PAL_M: - param->param.std |= V4L2_STD_PAL_M; + param->param.std = V4L2_STD_PAL_M; param->param.audmode = V4L2_STD_PAL_M; break; default: - param->param.std |= V4L2_STD_PAL_DK; + param->param.std = V4L2_STD_PAL_DK; param->param.audmode = V4L2_STD_PAL_DK; } param->param.frequency += 1; |