Loading drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c +26 −6 Original line number Diff line number Diff line Loading @@ -40,9 +40,6 @@ #define IPA_MHI_MAX_UL_CHANNELS 1 #define IPA_MHI_MAX_DL_CHANNELS 1 #define IPA_MHI_GSI_ER_START 10 #define IPA_MHI_GSI_ER_END 16 #if (IPA_MHI_MAX_UL_CHANNELS + IPA_MHI_MAX_DL_CHANNELS) > \ (IPA_MHI_GSI_ER_END - IPA_MHI_GSI_ER_START) #error not enought event rings for MHI Loading Loading @@ -1504,10 +1501,11 @@ int ipa_mhi_connect_pipe(struct ipa_mhi_connect_params *in, u32 *clnt_hdl) /* for event context address index needs to read from host */ IPA_MHI_DBG("client %d channelHandle %d channelIndex %d, state %d\n", IPA_MHI_DBG("client %d channelIndex %d channelID %d, state %d\n", channel->client, channel->index, channel->id, channel->state); IPA_MHI_DBG("channel_context_addr 0x%llx\n", channel->channel_context_addr); IPA_MHI_DBG("channel_context_addr 0x%llx cached_gsi_evt_ring_hdl %lu\n", channel->channel_context_addr, channel->cached_gsi_evt_ring_hdl); IPA_ACTIVE_CLIENTS_INC_EP(in->sys.client); Loading Loading @@ -2585,5 +2583,27 @@ int ipa_mhi_handle_ipa_config_req(struct ipa_config_req_msg_v01 *config_req) return 0; } int ipa_mhi_is_using_dma(bool *flag) { IPA_MHI_FUNC_ENTRY(); if (!ipa_mhi_client_ctx) { IPA_MHI_ERR("not initialized\n"); return -EPERM; } *flag = ipa_mhi_client_ctx->use_ipadma ? true : false; IPA_MHI_FUNC_EXIT(); return 0; } EXPORT_SYMBOL(ipa_mhi_is_using_dma); const char *ipa_mhi_get_state_str(int state) { return MHI_STATE_STR(state); } EXPORT_SYMBOL(ipa_mhi_get_state_str); MODULE_LICENSE("GPL v2"); MODULE_DESCRIPTION("IPA MHI client driver"); drivers/platform/msm/ipa/ipa_common_i.h +23 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,27 @@ struct ipa_mem_buffer { u32 size; }; #define IPA_MHI_GSI_ER_START 10 #define IPA_MHI_GSI_ER_END 16 /** * enum ipa3_mhi_burst_mode - MHI channel burst mode state * * Values are according to MHI specification * @IPA_MHI_BURST_MODE_DEFAULT: burst mode enabled for HW channels, * disabled for SW channels * @IPA_MHI_BURST_MODE_RESERVED: * @IPA_MHI_BURST_MODE_DISABLE: Burst mode is disabled for this channel * @IPA_MHI_BURST_MODE_ENABLE: Burst mode is enabled for this channel * */ enum ipa3_mhi_burst_mode { IPA_MHI_BURST_MODE_DEFAULT, IPA_MHI_BURST_MODE_RESERVED, IPA_MHI_BURST_MODE_DISABLE, IPA_MHI_BURST_MODE_ENABLE, }; /** * enum ipa_hw_mhi_channel_states - MHI channel state machine * Loading Loading @@ -325,6 +346,8 @@ int ipa_mhi_handle_ipa_config_req(struct ipa_config_req_msg_v01 *config_req); int ipa_mhi_query_ch_info(enum ipa_client_type client, struct gsi_chan_info *ch_info); int ipa_mhi_destroy_channel(enum ipa_client_type client); int ipa_mhi_is_using_dma(bool *flag); const char *ipa_mhi_get_state_str(int state); /* MHI uC */ int ipa_uc_mhi_send_dl_ul_sync_info(union IpaHwMhiDlUlSyncCmdData_t *cmd); Loading drivers/platform/msm/ipa/ipa_v3/ipa_mhi.c +6 −19 Original line number Diff line number Diff line Loading @@ -67,24 +67,6 @@ #define IPA_MHI_HOST_ADDR_COND(addr) \ ((params->assert_bit40)?(IPA_MHI_HOST_ADDR(addr)):(addr)) /** * enum ipa3_mhi_burst_mode - MHI channel burst mode state * * Values are according to MHI specification * @IPA_MHI_BURST_MODE_DEFAULT: burst mode enabled for HW channels, * disabled for SW channels * @IPA_MHI_BURST_MODE_RESERVED: * @IPA_MHI_BURST_MODE_DISABLE: Burst mode is disabled for this channel * @IPA_MHI_BURST_MODE_ENABLE: Burst mode is enabled for this channel * */ enum ipa3_mhi_burst_mode { IPA_MHI_BURST_MODE_DEFAULT, IPA_MHI_BURST_MODE_RESERVED, IPA_MHI_BURST_MODE_DISABLE, IPA_MHI_BURST_MODE_ENABLE, }; enum ipa3_mhi_polling_mode { IPA_MHI_POLLING_MODE_DB_MODE, IPA_MHI_POLLING_MODE_POLL_MODE, Loading Loading @@ -224,7 +206,6 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client, /* allocate event ring only for the first time pipe is connected */ if (params->state == IPA_HW_MHI_CHANNEL_STATE_INVALID) { IPA_MHI_DBG("allocating event ring\n"); memset(&ev_props, 0, sizeof(ev_props)); ev_props.intf = GSI_EVT_CHTYPE_MHI_EV; ev_props.intr = GSI_INTR_MSI; Loading @@ -247,6 +228,8 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client, ev_props.user_data = params->channel; ev_props.evchid_valid = true; ev_props.evchid = params->evchid; IPA_MHI_DBG("allocating event ring ep:%u evchid:%u\n", ipa_ep_idx, ev_props.evchid); res = gsi_alloc_evt_ring(&ev_props, ipa3_ctx->gsi_dev_hdl, &ep->gsi_evt_ring_hdl); if (res) { Loading @@ -260,6 +243,10 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client, *params->cached_gsi_evt_ring_hdl = ep->gsi_evt_ring_hdl; } else { IPA_MHI_DBG("event ring already exists: evt_ring_hdl=%lu\n", *params->cached_gsi_evt_ring_hdl); ep->gsi_evt_ring_hdl = *params->cached_gsi_evt_ring_hdl; } memset(&ch_props, 0, sizeof(ch_props)); Loading drivers/platform/msm/ipa/test/Makefile +1 −1 Original line number Diff line number Diff line obj-$(CONFIG_IPA_UT) += ipa_ut_mod.o ipa_ut_mod-y := ipa_ut_framework.o ipa_test_example.o ipa_ut_mod-y := ipa_ut_framework.o ipa_test_example.o ipa_test_mhi.o drivers/platform/msm/ipa/test/ipa_test_mhi.c 0 → 100644 +3301 −0 File added.Preview size limit exceeded, changes collapsed. Show changes Loading
drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c +26 −6 Original line number Diff line number Diff line Loading @@ -40,9 +40,6 @@ #define IPA_MHI_MAX_UL_CHANNELS 1 #define IPA_MHI_MAX_DL_CHANNELS 1 #define IPA_MHI_GSI_ER_START 10 #define IPA_MHI_GSI_ER_END 16 #if (IPA_MHI_MAX_UL_CHANNELS + IPA_MHI_MAX_DL_CHANNELS) > \ (IPA_MHI_GSI_ER_END - IPA_MHI_GSI_ER_START) #error not enought event rings for MHI Loading Loading @@ -1504,10 +1501,11 @@ int ipa_mhi_connect_pipe(struct ipa_mhi_connect_params *in, u32 *clnt_hdl) /* for event context address index needs to read from host */ IPA_MHI_DBG("client %d channelHandle %d channelIndex %d, state %d\n", IPA_MHI_DBG("client %d channelIndex %d channelID %d, state %d\n", channel->client, channel->index, channel->id, channel->state); IPA_MHI_DBG("channel_context_addr 0x%llx\n", channel->channel_context_addr); IPA_MHI_DBG("channel_context_addr 0x%llx cached_gsi_evt_ring_hdl %lu\n", channel->channel_context_addr, channel->cached_gsi_evt_ring_hdl); IPA_ACTIVE_CLIENTS_INC_EP(in->sys.client); Loading Loading @@ -2585,5 +2583,27 @@ int ipa_mhi_handle_ipa_config_req(struct ipa_config_req_msg_v01 *config_req) return 0; } int ipa_mhi_is_using_dma(bool *flag) { IPA_MHI_FUNC_ENTRY(); if (!ipa_mhi_client_ctx) { IPA_MHI_ERR("not initialized\n"); return -EPERM; } *flag = ipa_mhi_client_ctx->use_ipadma ? true : false; IPA_MHI_FUNC_EXIT(); return 0; } EXPORT_SYMBOL(ipa_mhi_is_using_dma); const char *ipa_mhi_get_state_str(int state) { return MHI_STATE_STR(state); } EXPORT_SYMBOL(ipa_mhi_get_state_str); MODULE_LICENSE("GPL v2"); MODULE_DESCRIPTION("IPA MHI client driver");
drivers/platform/msm/ipa/ipa_common_i.h +23 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,27 @@ struct ipa_mem_buffer { u32 size; }; #define IPA_MHI_GSI_ER_START 10 #define IPA_MHI_GSI_ER_END 16 /** * enum ipa3_mhi_burst_mode - MHI channel burst mode state * * Values are according to MHI specification * @IPA_MHI_BURST_MODE_DEFAULT: burst mode enabled for HW channels, * disabled for SW channels * @IPA_MHI_BURST_MODE_RESERVED: * @IPA_MHI_BURST_MODE_DISABLE: Burst mode is disabled for this channel * @IPA_MHI_BURST_MODE_ENABLE: Burst mode is enabled for this channel * */ enum ipa3_mhi_burst_mode { IPA_MHI_BURST_MODE_DEFAULT, IPA_MHI_BURST_MODE_RESERVED, IPA_MHI_BURST_MODE_DISABLE, IPA_MHI_BURST_MODE_ENABLE, }; /** * enum ipa_hw_mhi_channel_states - MHI channel state machine * Loading Loading @@ -325,6 +346,8 @@ int ipa_mhi_handle_ipa_config_req(struct ipa_config_req_msg_v01 *config_req); int ipa_mhi_query_ch_info(enum ipa_client_type client, struct gsi_chan_info *ch_info); int ipa_mhi_destroy_channel(enum ipa_client_type client); int ipa_mhi_is_using_dma(bool *flag); const char *ipa_mhi_get_state_str(int state); /* MHI uC */ int ipa_uc_mhi_send_dl_ul_sync_info(union IpaHwMhiDlUlSyncCmdData_t *cmd); Loading
drivers/platform/msm/ipa/ipa_v3/ipa_mhi.c +6 −19 Original line number Diff line number Diff line Loading @@ -67,24 +67,6 @@ #define IPA_MHI_HOST_ADDR_COND(addr) \ ((params->assert_bit40)?(IPA_MHI_HOST_ADDR(addr)):(addr)) /** * enum ipa3_mhi_burst_mode - MHI channel burst mode state * * Values are according to MHI specification * @IPA_MHI_BURST_MODE_DEFAULT: burst mode enabled for HW channels, * disabled for SW channels * @IPA_MHI_BURST_MODE_RESERVED: * @IPA_MHI_BURST_MODE_DISABLE: Burst mode is disabled for this channel * @IPA_MHI_BURST_MODE_ENABLE: Burst mode is enabled for this channel * */ enum ipa3_mhi_burst_mode { IPA_MHI_BURST_MODE_DEFAULT, IPA_MHI_BURST_MODE_RESERVED, IPA_MHI_BURST_MODE_DISABLE, IPA_MHI_BURST_MODE_ENABLE, }; enum ipa3_mhi_polling_mode { IPA_MHI_POLLING_MODE_DB_MODE, IPA_MHI_POLLING_MODE_POLL_MODE, Loading Loading @@ -224,7 +206,6 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client, /* allocate event ring only for the first time pipe is connected */ if (params->state == IPA_HW_MHI_CHANNEL_STATE_INVALID) { IPA_MHI_DBG("allocating event ring\n"); memset(&ev_props, 0, sizeof(ev_props)); ev_props.intf = GSI_EVT_CHTYPE_MHI_EV; ev_props.intr = GSI_INTR_MSI; Loading @@ -247,6 +228,8 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client, ev_props.user_data = params->channel; ev_props.evchid_valid = true; ev_props.evchid = params->evchid; IPA_MHI_DBG("allocating event ring ep:%u evchid:%u\n", ipa_ep_idx, ev_props.evchid); res = gsi_alloc_evt_ring(&ev_props, ipa3_ctx->gsi_dev_hdl, &ep->gsi_evt_ring_hdl); if (res) { Loading @@ -260,6 +243,10 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client, *params->cached_gsi_evt_ring_hdl = ep->gsi_evt_ring_hdl; } else { IPA_MHI_DBG("event ring already exists: evt_ring_hdl=%lu\n", *params->cached_gsi_evt_ring_hdl); ep->gsi_evt_ring_hdl = *params->cached_gsi_evt_ring_hdl; } memset(&ch_props, 0, sizeof(ch_props)); Loading
drivers/platform/msm/ipa/test/Makefile +1 −1 Original line number Diff line number Diff line obj-$(CONFIG_IPA_UT) += ipa_ut_mod.o ipa_ut_mod-y := ipa_ut_framework.o ipa_test_example.o ipa_ut_mod-y := ipa_ut_framework.o ipa_test_example.o ipa_test_mhi.o
drivers/platform/msm/ipa/test/ipa_test_mhi.c 0 → 100644 +3301 −0 File added.Preview size limit exceeded, changes collapsed. Show changes