diff --git a/sound/soc/samsung/abox/Makefile b/sound/soc/samsung/abox/Makefile index 0c99fdd0a..15e25f333 100755 --- a/sound/soc/samsung/abox/Makefile +++ b/sound/soc/samsung/abox/Makefile @@ -21,11 +21,15 @@ snd-soc-samsung-abox-gic-$(CONFIG_SND_SOC_SAMSUNG_ABOX) += abox_gic.o abox_util. snd-soc-samsung-abox-sync-$(CONFIG_SEC_SND_SYNCHRONIZED_IPC) += abox_synchronized_ipc.o snd-soc-samsung-abox-$(CONFIG_SND_SOC_SAMSUNG_ABOX) += abox_util.o \ - abox_dbg.o abox_dump.o abox_log.o abox.o abox_core.o abox_rdma.o\ + abox_dump.o abox_log.o abox.o abox_core.o abox_rdma.o\ abox_wdma.o abox_if.o abox_effect.o abox_vss.o abox_failsafe.o \ abox_vdma.o abox_msg.o abox_ipc.o abox_qos.o abox_ion.o abox_tplg.o \ abox_dma.o abox_pci.o abox_shm.o abox_atune.o abox_proc.o abox_oem.o +ifeq ($(CONFIG_SND_SOC_SAMSUNG_DEBUG),y) +snd-soc-samsung-abox-$(CONFIG_SND_SOC_SAMSUNG_ABOX) += abox_dbg.o +endif + obj-$(CONFIG_SND_SOC_SAMSUNG_ABOX) += snd-soc-samsung-abox-gic.o snd-soc-samsung-abox.o obj-$(CONFIG_SEC_SND_SYNCHRONIZED_IPC) += snd-soc-samsung-abox-sync.o diff --git a/sound/soc/samsung/abox/abox.c b/sound/soc/samsung/abox/abox.c index 711c614b5..e919daa40 100755 --- a/sound/soc/samsung/abox/abox.c +++ b/sound/soc/samsung/abox/abox.c @@ -118,9 +118,11 @@ struct abox_data *abox_get_data(struct device *dev) static int abox_iommu_fault_handler(struct iommu_fault *fault, void *token) { +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG struct abox_data *data = token; abox_dbg_print_gpr(data->dev, data); +#endif return 0; } @@ -150,14 +152,18 @@ static void exynos_abox_panic_handler(void) } has_run = true; +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_gpr(dev, data, ABOX_DBG_DUMP_KERNEL, "panic"); +#endif abox_set_magic(data, 0x504E4943); abox_cpu_enable(false); abox_cpu_power(false); abox_cpu_power(true); abox_cpu_enable(true); mdelay(100); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_mem(dev, data, ABOX_DBG_DUMP_KERNEL, "panic"); +#endif } else { abox_info(dev, "%s: dump is skipped due to no power\n", __func__); @@ -184,8 +190,10 @@ static void abox_wdt_work_func(struct work_struct *work) wdt_work); struct device *dev_abox = data->dev; +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_print_gpr(dev_abox, data); abox_dbg_dump_mem(dev_abox, data, ABOX_DBG_DUMP_KERNEL, "watchdog"); +#endif abox_failsafe_report(dev_abox, true); } @@ -199,7 +207,9 @@ static irqreturn_t abox_wdt_handler(int irq, void *dev_id) abox_err(dev, "abox watchdog timeout\n"); if (abox_is_on()) { +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_gpr(dev, data, ABOX_DBG_DUMP_KERNEL, "watchdog"); +#endif writel(0x504E4943, data->sram_base + SRAM_FIRMWARE_SIZE - sizeof(u32)); abox_cpu_enable(false); @@ -1148,8 +1158,10 @@ static int abox_check_dram_status(struct device *dev, struct abox_data *data, val &= ABOX_SYSPOWER_STATUS_MASK; if (local_clock() > timeout) { abox_warn(dev, "syspower status timeout: %u\n", val); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_simple(dev, data, "syspower status timeout"); +#endif ret = -EPERM; break; } @@ -2380,21 +2392,25 @@ static void abox_system_ipc_handler(struct device *dev, system_msg->bundle.param_s32[1]); area = abox_addr_to_kernel_addr(data, system_msg->bundle.param_s32[0]); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_print_gpr_from_addr(dev, data, area); abox_dbg_dump_gpr_from_addr(dev, data, area, ABOX_DBG_DUMP_FIRMWARE, type); abox_dbg_dump_mem(dev, data, ABOX_DBG_DUMP_FIRMWARE, type); +#endif break; default: abox_err(dev, "%s(%#x, %#x, %#x) is reported from calliope\n", type, system_msg->param1, system_msg->param2, system_msg->param3); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_print_gpr(dev, data); abox_dbg_dump_gpr(dev, data, ABOX_DBG_DUMP_FIRMWARE, type); abox_dbg_dump_mem(dev, data, ABOX_DBG_DUMP_FIRMWARE, type); +#endif break; } #if IS_ENABLED(CONFIG_SND_SOC_SAMSUNG_DEBUG) @@ -3514,8 +3530,10 @@ static int abox_disable(struct device *dev) clk_disable(data->clk_cpu); abox_gic_disable_irq(data->dev_gic); abox_failsafe_report_reset(dev); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG if (data->debug_mode != DEBUG_MODE_NONE) abox_dbg_dump_suspend(dev, data); +#endif abox_power_notifier_call_chain(data, false); abox_cleanup(data); abox_set_minimum_stable_qos(data, false); @@ -3644,7 +3662,9 @@ int abox_notify_modem_event(enum abox_modem_event event) case ABOX_MODEM_EVENT_EXIT: system_msg->msgtype = ABOX_STOP_VSS; if (abox_is_on()) { +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_print_gpr(dev, data); +#endif abox_failsafe_report(dev, false); } break; @@ -3688,9 +3708,11 @@ static int abox_itmon_notifier(struct notifier_block *nb, if (itmon_data->port && strstr(itmon_data->port, keyword)) { abox_info(dev, "%s(%lu)\n", __func__, action); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_print_gpr(dev, data); abox_dbg_dump_gpr(dev, data, ABOX_DBG_DUMP_KERNEL, "itmon"); abox_dbg_dump_mem(dev, data, ABOX_DBG_DUMP_KERNEL, "itmon"); +#endif data->enabled = false; return NOTIFY_BAD; } @@ -3940,7 +3962,9 @@ static void abox_sysevent_register(struct abox_data *data) /* sub-driver list */ static struct platform_driver *abox_sub_drivers[] = { +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG &samsung_abox_debug_driver, +#endif &samsung_abox_pci_driver, &samsung_abox_core_driver, &samsung_abox_dump_driver, diff --git a/sound/soc/samsung/abox/abox_core.c b/sound/soc/samsung/abox/abox_core.c index 825c22b28..48dd635a4 100755 --- a/sound/soc/samsung/abox/abox_core.c +++ b/sound/soc/samsung/abox/abox_core.c @@ -196,8 +196,10 @@ int abox_core_standby(void) "standby timeout(%d)", core->id); abox_err(dev, "%s\n", reason); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_gpr_mem(dev, data, ABOX_DBG_DUMP_KERNEL, reason); +#endif kfree(reason); ret = -EBUSY; @@ -559,7 +561,9 @@ int abox_core_download_firmware(void) if (fw->code_signed && fw->fw_imgloader_desc) { ret |= imgloader_boot(fw->fw_imgloader_desc); if (ret < 0) { +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_mem(dev, data, ABOX_DBG_DUMP_KERNEL, "verification fail"); +#endif abox_failsafe_report(dev, true); } continue; diff --git a/sound/soc/samsung/abox/abox_rdma.c b/sound/soc/samsung/abox/abox_rdma.c index ba5871c7c..48c116023 100755 --- a/sound/soc/samsung/abox/abox_rdma.c +++ b/sound/soc/samsung/abox/abox_rdma.c @@ -1407,7 +1407,9 @@ static void abox_rdma_disable_barrier(struct device *dev, continue; } dev_warn_ratelimited(dev, "RDMA disable timeout\n"); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_simple(dev, abox_data, "RDMA disable timeout"); +#endif /* Disable DMA by force */ regmap_update_bits_base(abox_data->regmap, ABOX_RDMA_CTRL(data->id), diff --git a/sound/soc/samsung/abox/abox_wdma.c b/sound/soc/samsung/abox/abox_wdma.c index bccb8f645..ce1a3eb8b 100755 --- a/sound/soc/samsung/abox/abox_wdma.c +++ b/sound/soc/samsung/abox/abox_wdma.c @@ -147,7 +147,9 @@ static void abox_wdma_disable_barrier(struct device *dev, continue; } dev_warn_ratelimited(dev, "WDMA disable timeout\n"); +#ifdef CONFIG_SND_SOC_SAMSUNG_DEBUG abox_dbg_dump_simple(dev, abox_data, "WDMA disable timeout"); +#endif /* Disable DMA by force */ regmap_update_bits_base(abox_data->regmap, ABOX_WDMA_CTRL(data->id),