diff options
author | Skylar Chang <chiaweic@codeaurora.org> | 2016-04-19 12:05:11 -0700 |
---|---|---|
committer | Kyle Yan <kyan@codeaurora.org> | 2016-04-27 19:04:43 -0700 |
commit | 1741862c6916601adcc56fa751daaff86bd6572b (patch) | |
tree | 1080a62fec1e32a98b8de9af755e3abc12ef9748 /drivers/platform/msm | |
parent | b1136eebcdff15d2ca5718287f5de93a3b32eb21 (diff) |
msm: ipa: ipahal: change IPC logging to common buffer
Use IPA driver IPC buffer for IPC logging for IPAHAL.
CRs-Fixed: 1005492
Change-Id: Iee4f6e7b5da3ca27e9ef619bfb2bacc45970d3cc
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Diffstat (limited to 'drivers/platform/msm')
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v2/ipa_utils.c | 15 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_i.h | 1 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_utils.c | 17 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c | 55 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h | 53 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c | 1 |
6 files changed, 56 insertions, 86 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c index 794eaa32bf90..672568468c47 100644 --- a/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c +++ b/drivers/platform/msm/ipa/ipa_v2/ipa_utils.c @@ -4933,6 +4933,18 @@ static int ipa2_stop_gsi_channel(u32 clnt_hdl) return -EFAULT; } +static void *ipa2_get_ipc_logbuf(void) +{ + /* no support for IPC logging in IPAv2 */ + return NULL; +} + +static void *ipa2_get_ipc_logbuf_low(void) +{ + /* no support for IPC logging in IPAv2 */ + return NULL; +} + int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, struct ipa_api_controller *api_ctrl) @@ -5069,6 +5081,9 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type, api_ctrl->ipa_suspend_resource_sync = ipa2_suspend_resource_sync; api_ctrl->ipa_set_required_perf_profile = ipa2_set_required_perf_profile; + api_ctrl->ipa_get_ipc_logbuf = ipa2_get_ipc_logbuf; + api_ctrl->ipa_get_ipc_logbuf_low = ipa2_get_ipc_logbuf_low; + return 0; } diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h index d22d2d7c008d..a21df09b7059 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h @@ -27,7 +27,6 @@ #include <asm/dma-iommu.h> #include <linux/iommu.h> #include <linux/platform_device.h> -#include <linux/ipc_logging.h> #include <linux/firmware.h> #include "ipa_hw_defs.h" #include "ipa_ram_mmap.h" diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c index 5ea39b732ee6..5574ef88398b 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c @@ -4439,6 +4439,21 @@ int ipa3_disable_apps_wan_cons_deaggr(uint32_t agg_size, uint32_t agg_count) return res; } +static void *ipa3_get_ipc_logbuf(void) +{ + if (ipa3_ctx) + return ipa3_ctx->logbuf; + + return NULL; +} + +static void *ipa3_get_ipc_logbuf_low(void) +{ + if (ipa3_ctx) + return ipa3_ctx->logbuf_low; + + return NULL; +} int ipa3_bind_api_controller(enum ipa_hw_type ipa_hw_type, struct ipa_api_controller *api_ctrl) @@ -4576,6 +4591,8 @@ int ipa3_bind_api_controller(enum ipa_hw_type ipa_hw_type, api_ctrl->ipa_suspend_resource_sync = ipa3_suspend_resource_sync; api_ctrl->ipa_set_required_perf_profile = ipa3_set_required_perf_profile; + api_ctrl->ipa_get_ipc_logbuf = ipa3_get_ipc_logbuf; + api_ctrl->ipa_get_ipc_logbuf_low = ipa3_get_ipc_logbuf_low; return 0; } diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c index f7a74283056c..9f98d3ffef30 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal.c @@ -10,7 +10,6 @@ * GNU General Public License for more details. */ -#include <linux/ipc_logging.h> #include <linux/debugfs.h> #include "ipahal.h" #include "ipahal_i.h" @@ -987,46 +986,12 @@ const char *ipahal_pkt_status_exception_str( return ipahal_pkt_status_exception_to_str[exception]; } -static int ipahal_ipc_logging_init(void) -{ - ipahal_ctx->ipc_logbuf = - ipc_log_context_create(IPAHAL_IPC_LOG_PAGES, "ipahal", 0); - if (!ipahal_ctx->ipc_logbuf) { - /* Cannot use the logging macros as no log buffers yet */ - pr_err("ipaghal: failed to create ipc_logbuf\n"); - return -ENOMEM; - } - - ipahal_ctx->ipc_logbuf_low = - ipc_log_context_create(IPAHAL_IPC_LOG_PAGES, "ipahal_low", 0); - if (!ipahal_ctx->ipc_logbuf_low) { - /* Cannot use the logging macros as no log buffers yet */ - pr_err("ipaghal: failed to create ipc_logbuf_low\n"); - ipc_log_context_destroy(ipahal_ctx->ipc_logbuf); - return -ENOMEM; - } - - return 0; -} - #ifdef CONFIG_DEBUG_FS static void ipahal_debugfs_init(void) { - const mode_t read_write_mode = S_IRUSR | S_IRGRP | S_IROTH | - S_IWUSR | S_IWGRP; - ipahal_ctx->dent = debugfs_create_dir("ipahal", 0); if (!ipahal_ctx->dent || IS_ERR(ipahal_ctx->dent)) { IPAHAL_ERR("fail to create ipahal debugfs folder\n"); - return; - } - - ipahal_ctx->dfile_enable_low_prio_ipc = - debugfs_create_u32("enable_low_prio_log", read_write_mode, - ipahal_ctx->dent, &ipahal_ctx->enable_low_prio_ipc); - if (!ipahal_ctx->dfile_enable_low_prio_ipc || - IS_ERR(ipahal_ctx->dfile_enable_low_prio_ipc)) { - IPAHAL_ERR("fail create enable_low_prio_log debugfs file\n"); goto fail; } @@ -1067,23 +1032,16 @@ int ipahal_init(enum ipa_hw_type ipa_hw_type, void __iomem *base) goto bail_err_exit; } - if (ipahal_ipc_logging_init()) { - /* Cannot use the logging macros as no log buffers yet */ - pr_err("ipahal: failed to initialize ipc logging\n"); - result = -ENOMEM; - goto bail_free_ctx; - } - if (ipa_hw_type < IPA_HW_v3_0) { IPAHAL_ERR("ipahal supported on IPAv3 and later only\n"); result = -EINVAL; - goto bail_destroy_ipc; + goto bail_free_ctx; } if (!base) { IPAHAL_ERR("invalid memory io mapping addr\n"); result = -EINVAL; - goto bail_destroy_ipc; + goto bail_free_ctx; } ipahal_ctx->hw_type = ipa_hw_type; @@ -1092,28 +1050,25 @@ int ipahal_init(enum ipa_hw_type ipa_hw_type, void __iomem *base) if (ipahal_reg_init(ipa_hw_type)) { IPAHAL_ERR("failed to init ipahal reg\n"); result = -EFAULT; - goto bail_destroy_ipc; + goto bail_free_ctx; } if (ipahal_imm_cmd_init(ipa_hw_type)) { IPAHAL_ERR("failed to init ipahal imm cmd\n"); result = -EFAULT; - goto bail_destroy_ipc; + goto bail_free_ctx; } if (ipahal_pkt_status_init(ipa_hw_type)) { IPAHAL_ERR("failed to init ipahal pkt status\n"); result = -EFAULT; - goto bail_destroy_ipc; + goto bail_free_ctx; } ipahal_debugfs_init(); return 0; -bail_destroy_ipc: - ipc_log_context_destroy(ipahal_ctx->ipc_logbuf_low); - ipc_log_context_destroy(ipahal_ctx->ipc_logbuf); bail_free_ctx: kfree(ipahal_ctx); ipahal_ctx = NULL; diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h index 3c513a7d4dc1..9b348d6f969e 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_i.h @@ -13,44 +13,37 @@ #ifndef _IPAHAL_I_H_ #define _IPAHAL_I_H_ -#define IPAHAL_DRV_NAME "ipahal" +#include <linux/ipa.h> +#include "../../ipa_common_i.h" -#define IPAHAL_IPC_LOG_PAGES 10 -#define IPAHAL_IPC_LOG(buf, fmt, args...) \ - ipc_log_string((buf), \ - IPAHAL_DRV_NAME " %s:%d " fmt, __func__, __LINE__, ## args) +#define IPAHAL_DRV_NAME "ipahal" #define IPAHAL_DBG(fmt, args...) \ do { \ - pr_debug(IPAHAL_DRV_NAME " %s:%d " fmt, \ - __func__, __LINE__, ## args); \ - if (likely(ipahal_ctx)) { \ - IPAHAL_IPC_LOG(ipahal_ctx->ipc_logbuf, fmt, ## args); \ - IPAHAL_IPC_LOG(ipahal_ctx->ipc_logbuf_low, \ - fmt, ## args); \ - } \ + pr_debug(IPAHAL_DRV_NAME " %s:%d " fmt, __func__, __LINE__, \ + ## args); \ + IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \ + IPAHAL_DRV_NAME " %s:%d " fmt, ## args); \ + IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \ + IPAHAL_DRV_NAME " %s:%d " fmt, ## args); \ } while (0) #define IPAHAL_DBG_LOW(fmt, args...) \ do { \ - pr_debug(IPAHAL_DRV_NAME " %s:%d " fmt, \ - __func__, __LINE__, ## args); \ - if (likely(ipahal_ctx) && \ - ipahal_ctx->enable_low_prio_ipc) { \ - IPAHAL_IPC_LOG(ipahal_ctx->ipc_logbuf_low, \ - fmt, ## args); \ - } \ + pr_debug(IPAHAL_DRV_NAME " %s:%d " fmt, __func__, __LINE__, \ + ## args); \ + IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \ + IPAHAL_DRV_NAME " %s:%d " fmt, ## args); \ } while (0) #define IPAHAL_ERR(fmt, args...) \ do { \ - pr_err(IPAHAL_DRV_NAME " %s:%d " fmt, \ - __func__, __LINE__, ## args); \ - if (likely(ipahal_ctx)) { \ - IPAHAL_IPC_LOG(ipahal_ctx->ipc_logbuf, fmt, ## args); \ - IPAHAL_IPC_LOG(ipahal_ctx->ipc_logbuf_low, \ - fmt, ## args); \ - } \ + pr_err(IPAHAL_DRV_NAME " %s:%d " fmt, __func__, __LINE__, \ + ## args); \ + IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \ + IPAHAL_DRV_NAME " %s:%d " fmt, ## args); \ + IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \ + IPAHAL_DRV_NAME " %s:%d " fmt, ## args); \ } while (0) /* @@ -58,21 +51,13 @@ * @hw_type: IPA H/W type/version. * @base: Base address to be used for accessing IPA memory. This is * I/O memory mapped address. - * @ipc_logbuf: IPC debug logs buffer - * @ipc_logbuf_low: IPC Low priority debug logs buffer - * @enable_low_prio_ipc: Flag telling to enable low priority logging * Controlled by debugfs. default is off * @dent: Debugfs folder dir entry - * @dfile_enable_low_prio_ipc: Debugfs file for enable_low_prio_ipc */ struct ipahal_context { enum ipa_hw_type hw_type; void __iomem *base; - void *ipc_logbuf; - void *ipc_logbuf_low; - u32 enable_low_prio_ipc; struct dentry *dent; - struct dentry *dfile_enable_low_prio_ipc; }; extern struct ipahal_context *ipahal_ctx; diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c index cf0fa16b2bbc..c47d353d9658 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c @@ -10,7 +10,6 @@ * GNU General Public License for more details. */ -#include <linux/ipc_logging.h> #include <linux/init.h> #include <linux/ipa.h> #include <linux/kernel.h> |