Loading drivers/platform/msm/ipa/ipa_api.c +43 −43 Original line number Original line Diff line number Diff line Loading @@ -101,76 +101,76 @@ static struct ipa_api_controller *ipa_api_ctrl; const char *ipa_clients_strings[IPA_CLIENT_MAX] = { const char *ipa_clients_strings[IPA_CLIENT_MAX] = { __stringify(IPA_CLIENT_HSIC1_PROD), __stringify(IPA_CLIENT_HSIC1_PROD), __stringify(IPA_CLIENT_WLAN1_PROD), __stringify(IPA_CLIENT_HSIC1_CONS), __stringify(IPA_CLIENT_HSIC2_PROD), __stringify(IPA_CLIENT_HSIC2_PROD), __stringify(IPA_CLIENT_USB2_PROD), __stringify(IPA_CLIENT_HSIC2_CONS), __stringify(IPA_CLIENT_HSIC3_PROD), __stringify(IPA_CLIENT_HSIC3_PROD), __stringify(IPA_CLIENT_USB3_PROD), __stringify(IPA_CLIENT_HSIC3_CONS), __stringify(IPA_CLIENT_HSIC4_PROD), __stringify(IPA_CLIENT_HSIC4_PROD), __stringify(IPA_CLIENT_USB4_PROD), __stringify(IPA_CLIENT_HSIC4_CONS), __stringify(IPA_CLIENT_HSIC5_PROD), __stringify(IPA_CLIENT_HSIC5_PROD), __stringify(IPA_CLIENT_USB_PROD), __stringify(IPA_CLIENT_HSIC5_CONS), __stringify(IPA_CLIENT_A5_WLAN_AMPDU_PROD), __stringify(IPA_CLIENT_WLAN1_PROD), __stringify(IPA_CLIENT_A2_EMBEDDED_PROD), __stringify(IPA_CLIENT_A2_TETHERED_PROD), __stringify(IPA_CLIENT_APPS_LAN_PROD), __stringify(IPA_CLIENT_APPS_WAN_PROD), __stringify(IPA_CLIENT_APPS_CMD_PROD), __stringify(IPA_CLIENT_ODU_PROD), __stringify(IPA_CLIENT_MHI_PROD), __stringify(IPA_CLIENT_Q6_LAN_PROD), __stringify(IPA_CLIENT_Q6_WAN_PROD), __stringify(IPA_CLIENT_Q6_CMD_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD), __stringify(IPA_CLIENT_Q6_DECOMP_PROD), __stringify(IPA_CLIENT_Q6_DECOMP2_PROD), __stringify(IPA_CLIENT_UC_USB_PROD), __stringify(IPA_CLIENT_ETHERNET_PROD), /* Below PROD client type is only for test purpose */ __stringify(IPA_CLIENT_TEST_PROD), __stringify(IPA_CLIENT_TEST1_PROD), __stringify(IPA_CLIENT_TEST2_PROD), __stringify(IPA_CLIENT_TEST3_PROD), __stringify(IPA_CLIENT_TEST4_PROD), __stringify(IPA_CLIENT_HSIC1_CONS), __stringify(IPA_CLIENT_WLAN1_CONS), __stringify(IPA_CLIENT_WLAN1_CONS), __stringify(IPA_CLIENT_HSIC2_CONS), __stringify(IPA_CLIENT_A5_WLAN_AMPDU_PROD), __stringify(IPA_CLIENT_USB2_CONS), __stringify(IPA_CLIENT_WLAN2_CONS), __stringify(IPA_CLIENT_WLAN2_CONS), __stringify(IPA_CLIENT_HSIC3_CONS), __stringify(RESERVERD_PROD_14), __stringify(IPA_CLIENT_USB3_CONS), __stringify(IPA_CLIENT_WLAN3_CONS), __stringify(IPA_CLIENT_WLAN3_CONS), __stringify(IPA_CLIENT_HSIC4_CONS), __stringify(RESERVERD_PROD_16), __stringify(IPA_CLIENT_USB4_CONS), __stringify(IPA_CLIENT_WLAN4_CONS), __stringify(IPA_CLIENT_WLAN4_CONS), __stringify(IPA_CLIENT_HSIC5_CONS), __stringify(IPA_CLIENT_USB_PROD), __stringify(IPA_CLIENT_USB_CONS), __stringify(IPA_CLIENT_USB_CONS), __stringify(IPA_CLIENT_USB2_PROD), __stringify(IPA_CLIENT_USB2_CONS), __stringify(IPA_CLIENT_USB3_PROD), __stringify(IPA_CLIENT_USB3_CONS), __stringify(IPA_CLIENT_USB4_PROD), __stringify(IPA_CLIENT_USB4_CONS), __stringify(IPA_CLIENT_UC_USB_PROD), __stringify(IPA_CLIENT_USB_DPL_CONS), __stringify(IPA_CLIENT_USB_DPL_CONS), __stringify(IPA_CLIENT_A2_EMBEDDED_PROD), __stringify(IPA_CLIENT_A2_EMBEDDED_CONS), __stringify(IPA_CLIENT_A2_EMBEDDED_CONS), __stringify(IPA_CLIENT_A2_TETHERED_PROD), __stringify(IPA_CLIENT_A2_TETHERED_CONS), __stringify(IPA_CLIENT_A2_TETHERED_CONS), __stringify(IPA_CLIENT_A5_LAN_WAN_CONS), __stringify(IPA_CLIENT_APPS_LAN_PROD), __stringify(IPA_CLIENT_APPS_LAN_CONS), __stringify(IPA_CLIENT_APPS_LAN_CONS), __stringify(IPA_CLIENT_APPS_WAN_PROD), __stringify(IPA_CLIENT_APPS_WAN_CONS), __stringify(IPA_CLIENT_APPS_WAN_CONS), __stringify(IPA_CLIENT_APPS_CMD_PROD), __stringify(IPA_CLIENT_A5_LAN_WAN_CONS), __stringify(IPA_CLIENT_ODU_PROD), __stringify(IPA_CLIENT_ODU_EMB_CONS), __stringify(IPA_CLIENT_ODU_EMB_CONS), __stringify(RESERVERD_PROD_40), __stringify(IPA_CLIENT_ODU_TETH_CONS), __stringify(IPA_CLIENT_ODU_TETH_CONS), __stringify(IPA_CLIENT_MHI_PROD), __stringify(IPA_CLIENT_MHI_CONS), __stringify(IPA_CLIENT_MHI_CONS), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_CONS), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS), __stringify(IPA_CLIENT_ETHERNET_PROD), __stringify(IPA_CLIENT_ETHERNET_CONS), __stringify(IPA_CLIENT_Q6_LAN_PROD), __stringify(IPA_CLIENT_Q6_LAN_CONS), __stringify(IPA_CLIENT_Q6_LAN_CONS), __stringify(IPA_CLIENT_Q6_WAN_PROD), __stringify(IPA_CLIENT_Q6_WAN_CONS), __stringify(IPA_CLIENT_Q6_WAN_CONS), __stringify(IPA_CLIENT_Q6_CMD_PROD), __stringify(IPA_CLIENT_Q6_DUN_CONS), __stringify(IPA_CLIENT_Q6_DUN_CONS), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_CONS), __stringify(IPA_CLIENT_Q6_DECOMP_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS), __stringify(IPA_CLIENT_Q6_DECOMP_CONS), __stringify(IPA_CLIENT_Q6_DECOMP_CONS), __stringify(IPA_CLIENT_Q6_DECOMP2_PROD), __stringify(IPA_CLIENT_Q6_DECOMP2_CONS), __stringify(IPA_CLIENT_Q6_DECOMP2_CONS), __stringify(RESERVERD_PROD_60), __stringify(IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS), __stringify(IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS), __stringify(IPA_CLIENT_ETHERNET_CONS), __stringify(IPA_CLIENT_TEST_PROD), /* Below CONS client type is only for test purpose */ __stringify(IPA_CLIENT_TEST_CONS), __stringify(IPA_CLIENT_TEST_CONS), __stringify(IPA_CLIENT_TEST1_PROD), __stringify(IPA_CLIENT_TEST1_CONS), __stringify(IPA_CLIENT_TEST1_CONS), __stringify(IPA_CLIENT_TEST2_PROD), __stringify(IPA_CLIENT_TEST2_CONS), __stringify(IPA_CLIENT_TEST2_CONS), __stringify(IPA_CLIENT_TEST3_PROD), __stringify(IPA_CLIENT_TEST3_CONS), __stringify(IPA_CLIENT_TEST3_CONS), __stringify(IPA_CLIENT_TEST4_PROD), __stringify(IPA_CLIENT_TEST4_CONS), __stringify(IPA_CLIENT_TEST4_CONS), }; }; Loading drivers/platform/msm/ipa/ipa_common_i.h +5 −3 Original line number Original line Diff line number Diff line /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -108,8 +108,10 @@ do {\ ipa_assert();\ ipa_assert();\ } while (0) } while (0) #define IPA_CLIENT_IS_PROD(x) (x >= IPA_CLIENT_PROD && x < IPA_CLIENT_CONS) #define IPA_CLIENT_IS_PROD(x) \ #define IPA_CLIENT_IS_CONS(x) (x >= IPA_CLIENT_CONS && x < IPA_CLIENT_MAX) (x < IPA_CLIENT_MAX && (x & 0x1) == 0) #define IPA_CLIENT_IS_CONS(x) \ (x < IPA_CLIENT_MAX && (x & 0x1) == 1) #define IPA_GSI_CHANNEL_STOP_SLEEP_MIN_USEC (1000) #define IPA_GSI_CHANNEL_STOP_SLEEP_MIN_USEC (1000) #define IPA_GSI_CHANNEL_STOP_SLEEP_MAX_USEC (2000) #define IPA_GSI_CHANNEL_STOP_SLEEP_MAX_USEC (2000) Loading drivers/platform/msm/ipa/ipa_rm.c +27 −30 Original line number Original line Diff line number Diff line Loading @@ -19,32 +19,33 @@ static const char *resource_name_to_str[IPA_RM_RESOURCE_MAX] = { static const char *resource_name_to_str[IPA_RM_RESOURCE_MAX] = { __stringify(IPA_RM_RESOURCE_Q6_PROD), __stringify(IPA_RM_RESOURCE_Q6_PROD), __stringify(IPA_RM_RESOURCE_Q6_CONS), __stringify(IPA_RM_RESOURCE_USB_PROD), __stringify(IPA_RM_RESOURCE_USB_PROD), __stringify(IPA_RM_RESOURCE_USB_CONS), __stringify(IPA_RM_RESOURCE_USB_DPL_DUMMY_PROD), __stringify(IPA_RM_RESOURCE_USB_DPL_DUMMY_PROD), __stringify(IPA_RM_RESOURCE_USB_DPL_CONS), __stringify(IPA_RM_RESOURCE_HSIC_PROD), __stringify(IPA_RM_RESOURCE_HSIC_PROD), __stringify(IPA_RM_RESOURCE_HSIC_CONS), __stringify(IPA_RM_RESOURCE_STD_ECM_PROD), __stringify(IPA_RM_RESOURCE_STD_ECM_PROD), __stringify(IPA_RM_RESOURCE_APPS_CONS), __stringify(IPA_RM_RESOURCE_RNDIS_PROD), __stringify(IPA_RM_RESOURCE_RNDIS_PROD), __stringify(RESERVED_CONS_11), __stringify(IPA_RM_RESOURCE_WWAN_0_PROD), __stringify(IPA_RM_RESOURCE_WWAN_0_PROD), __stringify(RESERVED_CONS_13), __stringify(IPA_RM_RESOURCE_WLAN_PROD), __stringify(IPA_RM_RESOURCE_WLAN_PROD), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_PROD), __stringify(IPA_RM_RESOURCE_MHI_PROD), __stringify(IPA_RM_RESOURCE_ETHERNET_PROD), __stringify(IPA_RM_RESOURCE_Q6_CONS), __stringify(IPA_RM_RESOURCE_USB_CONS), __stringify(IPA_RM_RESOURCE_USB_DPL_CONS), __stringify(IPA_RM_RESOURCE_HSIC_CONS), __stringify(IPA_RM_RESOURCE_WLAN_CONS), __stringify(IPA_RM_RESOURCE_WLAN_CONS), __stringify(IPA_RM_RESOURCE_APPS_CONS), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_PROD), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_CONS), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_CONS), __stringify(IPA_RM_RESOURCE_MHI_PROD), __stringify(IPA_RM_RESOURCE_MHI_CONS), __stringify(IPA_RM_RESOURCE_MHI_CONS), __stringify(IPA_RM_RESOURCE_ETHERNET_PROD), __stringify(IPA_RM_RESOURCE_ETHERNET_CONS), __stringify(IPA_RM_RESOURCE_ETHERNET_CONS), }; }; struct ipa_rm_profile_vote_type { struct ipa_rm_profile_vote_type { enum ipa_voltage_level volt[IPA_RM_RESOURCE_MAX]; enum ipa_voltage_level volt[IPA_RM_RESOURCE_MAX]; enum ipa_voltage_level curr_volt; enum ipa_voltage_level curr_volt; u32 bw_prods[IPA_RM_RESOURCE_PROD_MAX]; u32 bw_resources[IPA_RM_RESOURCE_MAX]; u32 bw_cons[IPA_RM_RESOURCE_CONS_MAX]; u32 curr_bw; u32 curr_bw; }; }; Loading Loading @@ -999,7 +1000,9 @@ int ipa_rm_stat(char *buf, int size) return result; return result; spin_lock_irqsave(&ipa_rm_ctx->ipa_rm_lock, flags); spin_lock_irqsave(&ipa_rm_ctx->ipa_rm_lock, flags); for (i = 0; i < IPA_RM_RESOURCE_PROD_MAX; ++i) { for (i = 0; i < IPA_RM_RESOURCE_MAX; ++i) { if (!IPA_RM_RESORCE_IS_PROD(i)) continue; result = ipa_rm_dep_graph_get_resource( result = ipa_rm_dep_graph_get_resource( ipa_rm_ctx->dep_graph, ipa_rm_ctx->dep_graph, i, i, Loading @@ -1014,11 +1017,12 @@ int ipa_rm_stat(char *buf, int size) } } } } for (i = 0; i < IPA_RM_RESOURCE_PROD_MAX; i++) for (i = 0; i < IPA_RM_RESOURCE_MAX; i++) { sum_bw_prod += ipa_rm_ctx->prof_vote.bw_prods[i]; if (IPA_RM_RESORCE_IS_PROD(i)) sum_bw_prod += ipa_rm_ctx->prof_vote.bw_resources[i]; for (i = 0; i < IPA_RM_RESOURCE_CONS_MAX; i++) else sum_bw_cons += ipa_rm_ctx->prof_vote.bw_cons[i]; sum_bw_cons += ipa_rm_ctx->prof_vote.bw_resources[i]; } result = scnprintf(buf + cnt, size - cnt, result = scnprintf(buf + cnt, size - cnt, "All prod bandwidth: %d, All cons bandwidth: %d\n", "All prod bandwidth: %d, All cons bandwidth: %d\n", Loading Loading @@ -1118,15 +1122,7 @@ void ipa_rm_perf_profile_change(enum ipa_rm_resource_name resource_name) old_volt = ipa_rm_ctx->prof_vote.curr_volt; old_volt = ipa_rm_ctx->prof_vote.curr_volt; old_bw = ipa_rm_ctx->prof_vote.curr_bw; old_bw = ipa_rm_ctx->prof_vote.curr_bw; if (IPA_RM_RESORCE_IS_PROD(resource_name)) { bw_ptr = &ipa_rm_ctx->prof_vote.bw_resources[resource_name]; bw_ptr = &ipa_rm_ctx->prof_vote.bw_prods[resource_name]; } else if (IPA_RM_RESORCE_IS_CONS(resource_name)) { bw_ptr = &ipa_rm_ctx->prof_vote.bw_cons[ resource_name - IPA_RM_RESOURCE_PROD_MAX]; } else { IPA_RM_ERR("Invalid resource_name\n"); return; } switch (resource->state) { switch (resource->state) { case IPA_RM_GRANTED: case IPA_RM_GRANTED: Loading Loading @@ -1161,11 +1157,12 @@ void ipa_rm_perf_profile_change(enum ipa_rm_resource_name resource_name) } } } } for (i = 0; i < IPA_RM_RESOURCE_PROD_MAX; i++) for (i = 0; i < IPA_RM_RESOURCE_MAX; i++) { sum_bw_prod += ipa_rm_ctx->prof_vote.bw_prods[i]; if (IPA_RM_RESORCE_IS_PROD(i)) sum_bw_prod += ipa_rm_ctx->prof_vote.bw_resources[i]; for (i = 0; i < IPA_RM_RESOURCE_CONS_MAX; i++) else sum_bw_cons += ipa_rm_ctx->prof_vote.bw_cons[i]; sum_bw_cons += ipa_rm_ctx->prof_vote.bw_resources[i]; } IPA_RM_DBG_LOW("all prod bandwidth: %d all cons bandwidth: %d\n", IPA_RM_DBG_LOW("all prod bandwidth: %d all cons bandwidth: %d\n", sum_bw_prod, sum_bw_cons); sum_bw_prod, sum_bw_cons); Loading drivers/platform/msm/ipa/ipa_rm_i.h +3 −5 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -47,12 +47,10 @@ IPA_RM_DRV_NAME " %s:%d " fmt, ## args); \ IPA_RM_DRV_NAME " %s:%d " fmt, ## args); \ } while (0) } while (0) #define IPA_RM_RESOURCE_CONS_MAX \ (IPA_RM_RESOURCE_MAX - IPA_RM_RESOURCE_PROD_MAX) #define IPA_RM_RESORCE_IS_PROD(x) \ #define IPA_RM_RESORCE_IS_PROD(x) \ (x >= IPA_RM_RESOURCE_PROD && x < IPA_RM_RESOURCE_PROD_MAX) (x < IPA_RM_RESOURCE_MAX && (x & 0x1) == 0) #define IPA_RM_RESORCE_IS_CONS(x) \ #define IPA_RM_RESORCE_IS_CONS(x) \ (x >= IPA_RM_RESOURCE_PROD_MAX && x < IPA_RM_RESOURCE_MAX) (x < IPA_RM_RESOURCE_MAX && (x & 0x1) == 1) #define IPA_RM_INDEX_INVALID (-1) #define IPA_RM_INDEX_INVALID (-1) #define IPA_RM_RELEASE_DELAY_IN_MSEC 1000 #define IPA_RM_RELEASE_DELAY_IN_MSEC 1000 Loading drivers/platform/msm/ipa/ipa_rm_peers_list.c +1 −4 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -32,9 +32,6 @@ static int ipa_rm_peers_list_get_resource_index( resource_index = ipa_rm_prod_index(resource_name); resource_index = ipa_rm_prod_index(resource_name); else if (IPA_RM_RESORCE_IS_CONS(resource_name)) { else if (IPA_RM_RESORCE_IS_CONS(resource_name)) { resource_index = ipa_rm_cons_index(resource_name); resource_index = ipa_rm_cons_index(resource_name); if (resource_index != IPA_RM_INDEX_INVALID) resource_index = resource_index - IPA_RM_RESOURCE_PROD_MAX; } } return resource_index; return resource_index; Loading Loading
drivers/platform/msm/ipa/ipa_api.c +43 −43 Original line number Original line Diff line number Diff line Loading @@ -101,76 +101,76 @@ static struct ipa_api_controller *ipa_api_ctrl; const char *ipa_clients_strings[IPA_CLIENT_MAX] = { const char *ipa_clients_strings[IPA_CLIENT_MAX] = { __stringify(IPA_CLIENT_HSIC1_PROD), __stringify(IPA_CLIENT_HSIC1_PROD), __stringify(IPA_CLIENT_WLAN1_PROD), __stringify(IPA_CLIENT_HSIC1_CONS), __stringify(IPA_CLIENT_HSIC2_PROD), __stringify(IPA_CLIENT_HSIC2_PROD), __stringify(IPA_CLIENT_USB2_PROD), __stringify(IPA_CLIENT_HSIC2_CONS), __stringify(IPA_CLIENT_HSIC3_PROD), __stringify(IPA_CLIENT_HSIC3_PROD), __stringify(IPA_CLIENT_USB3_PROD), __stringify(IPA_CLIENT_HSIC3_CONS), __stringify(IPA_CLIENT_HSIC4_PROD), __stringify(IPA_CLIENT_HSIC4_PROD), __stringify(IPA_CLIENT_USB4_PROD), __stringify(IPA_CLIENT_HSIC4_CONS), __stringify(IPA_CLIENT_HSIC5_PROD), __stringify(IPA_CLIENT_HSIC5_PROD), __stringify(IPA_CLIENT_USB_PROD), __stringify(IPA_CLIENT_HSIC5_CONS), __stringify(IPA_CLIENT_A5_WLAN_AMPDU_PROD), __stringify(IPA_CLIENT_WLAN1_PROD), __stringify(IPA_CLIENT_A2_EMBEDDED_PROD), __stringify(IPA_CLIENT_A2_TETHERED_PROD), __stringify(IPA_CLIENT_APPS_LAN_PROD), __stringify(IPA_CLIENT_APPS_WAN_PROD), __stringify(IPA_CLIENT_APPS_CMD_PROD), __stringify(IPA_CLIENT_ODU_PROD), __stringify(IPA_CLIENT_MHI_PROD), __stringify(IPA_CLIENT_Q6_LAN_PROD), __stringify(IPA_CLIENT_Q6_WAN_PROD), __stringify(IPA_CLIENT_Q6_CMD_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD), __stringify(IPA_CLIENT_Q6_DECOMP_PROD), __stringify(IPA_CLIENT_Q6_DECOMP2_PROD), __stringify(IPA_CLIENT_UC_USB_PROD), __stringify(IPA_CLIENT_ETHERNET_PROD), /* Below PROD client type is only for test purpose */ __stringify(IPA_CLIENT_TEST_PROD), __stringify(IPA_CLIENT_TEST1_PROD), __stringify(IPA_CLIENT_TEST2_PROD), __stringify(IPA_CLIENT_TEST3_PROD), __stringify(IPA_CLIENT_TEST4_PROD), __stringify(IPA_CLIENT_HSIC1_CONS), __stringify(IPA_CLIENT_WLAN1_CONS), __stringify(IPA_CLIENT_WLAN1_CONS), __stringify(IPA_CLIENT_HSIC2_CONS), __stringify(IPA_CLIENT_A5_WLAN_AMPDU_PROD), __stringify(IPA_CLIENT_USB2_CONS), __stringify(IPA_CLIENT_WLAN2_CONS), __stringify(IPA_CLIENT_WLAN2_CONS), __stringify(IPA_CLIENT_HSIC3_CONS), __stringify(RESERVERD_PROD_14), __stringify(IPA_CLIENT_USB3_CONS), __stringify(IPA_CLIENT_WLAN3_CONS), __stringify(IPA_CLIENT_WLAN3_CONS), __stringify(IPA_CLIENT_HSIC4_CONS), __stringify(RESERVERD_PROD_16), __stringify(IPA_CLIENT_USB4_CONS), __stringify(IPA_CLIENT_WLAN4_CONS), __stringify(IPA_CLIENT_WLAN4_CONS), __stringify(IPA_CLIENT_HSIC5_CONS), __stringify(IPA_CLIENT_USB_PROD), __stringify(IPA_CLIENT_USB_CONS), __stringify(IPA_CLIENT_USB_CONS), __stringify(IPA_CLIENT_USB2_PROD), __stringify(IPA_CLIENT_USB2_CONS), __stringify(IPA_CLIENT_USB3_PROD), __stringify(IPA_CLIENT_USB3_CONS), __stringify(IPA_CLIENT_USB4_PROD), __stringify(IPA_CLIENT_USB4_CONS), __stringify(IPA_CLIENT_UC_USB_PROD), __stringify(IPA_CLIENT_USB_DPL_CONS), __stringify(IPA_CLIENT_USB_DPL_CONS), __stringify(IPA_CLIENT_A2_EMBEDDED_PROD), __stringify(IPA_CLIENT_A2_EMBEDDED_CONS), __stringify(IPA_CLIENT_A2_EMBEDDED_CONS), __stringify(IPA_CLIENT_A2_TETHERED_PROD), __stringify(IPA_CLIENT_A2_TETHERED_CONS), __stringify(IPA_CLIENT_A2_TETHERED_CONS), __stringify(IPA_CLIENT_A5_LAN_WAN_CONS), __stringify(IPA_CLIENT_APPS_LAN_PROD), __stringify(IPA_CLIENT_APPS_LAN_CONS), __stringify(IPA_CLIENT_APPS_LAN_CONS), __stringify(IPA_CLIENT_APPS_WAN_PROD), __stringify(IPA_CLIENT_APPS_WAN_CONS), __stringify(IPA_CLIENT_APPS_WAN_CONS), __stringify(IPA_CLIENT_APPS_CMD_PROD), __stringify(IPA_CLIENT_A5_LAN_WAN_CONS), __stringify(IPA_CLIENT_ODU_PROD), __stringify(IPA_CLIENT_ODU_EMB_CONS), __stringify(IPA_CLIENT_ODU_EMB_CONS), __stringify(RESERVERD_PROD_40), __stringify(IPA_CLIENT_ODU_TETH_CONS), __stringify(IPA_CLIENT_ODU_TETH_CONS), __stringify(IPA_CLIENT_MHI_PROD), __stringify(IPA_CLIENT_MHI_CONS), __stringify(IPA_CLIENT_MHI_CONS), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_CONS), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS), __stringify(IPA_CLIENT_ETHERNET_PROD), __stringify(IPA_CLIENT_ETHERNET_CONS), __stringify(IPA_CLIENT_Q6_LAN_PROD), __stringify(IPA_CLIENT_Q6_LAN_CONS), __stringify(IPA_CLIENT_Q6_LAN_CONS), __stringify(IPA_CLIENT_Q6_WAN_PROD), __stringify(IPA_CLIENT_Q6_WAN_CONS), __stringify(IPA_CLIENT_Q6_WAN_CONS), __stringify(IPA_CLIENT_Q6_CMD_PROD), __stringify(IPA_CLIENT_Q6_DUN_CONS), __stringify(IPA_CLIENT_Q6_DUN_CONS), __stringify(IPA_CLIENT_MEMCPY_DMA_SYNC_CONS), __stringify(IPA_CLIENT_Q6_DECOMP_PROD), __stringify(IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS), __stringify(IPA_CLIENT_Q6_DECOMP_CONS), __stringify(IPA_CLIENT_Q6_DECOMP_CONS), __stringify(IPA_CLIENT_Q6_DECOMP2_PROD), __stringify(IPA_CLIENT_Q6_DECOMP2_CONS), __stringify(IPA_CLIENT_Q6_DECOMP2_CONS), __stringify(RESERVERD_PROD_60), __stringify(IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS), __stringify(IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS), __stringify(IPA_CLIENT_ETHERNET_CONS), __stringify(IPA_CLIENT_TEST_PROD), /* Below CONS client type is only for test purpose */ __stringify(IPA_CLIENT_TEST_CONS), __stringify(IPA_CLIENT_TEST_CONS), __stringify(IPA_CLIENT_TEST1_PROD), __stringify(IPA_CLIENT_TEST1_CONS), __stringify(IPA_CLIENT_TEST1_CONS), __stringify(IPA_CLIENT_TEST2_PROD), __stringify(IPA_CLIENT_TEST2_CONS), __stringify(IPA_CLIENT_TEST2_CONS), __stringify(IPA_CLIENT_TEST3_PROD), __stringify(IPA_CLIENT_TEST3_CONS), __stringify(IPA_CLIENT_TEST3_CONS), __stringify(IPA_CLIENT_TEST4_PROD), __stringify(IPA_CLIENT_TEST4_CONS), __stringify(IPA_CLIENT_TEST4_CONS), }; }; Loading
drivers/platform/msm/ipa/ipa_common_i.h +5 −3 Original line number Original line Diff line number Diff line /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -108,8 +108,10 @@ do {\ ipa_assert();\ ipa_assert();\ } while (0) } while (0) #define IPA_CLIENT_IS_PROD(x) (x >= IPA_CLIENT_PROD && x < IPA_CLIENT_CONS) #define IPA_CLIENT_IS_PROD(x) \ #define IPA_CLIENT_IS_CONS(x) (x >= IPA_CLIENT_CONS && x < IPA_CLIENT_MAX) (x < IPA_CLIENT_MAX && (x & 0x1) == 0) #define IPA_CLIENT_IS_CONS(x) \ (x < IPA_CLIENT_MAX && (x & 0x1) == 1) #define IPA_GSI_CHANNEL_STOP_SLEEP_MIN_USEC (1000) #define IPA_GSI_CHANNEL_STOP_SLEEP_MIN_USEC (1000) #define IPA_GSI_CHANNEL_STOP_SLEEP_MAX_USEC (2000) #define IPA_GSI_CHANNEL_STOP_SLEEP_MAX_USEC (2000) Loading
drivers/platform/msm/ipa/ipa_rm.c +27 −30 Original line number Original line Diff line number Diff line Loading @@ -19,32 +19,33 @@ static const char *resource_name_to_str[IPA_RM_RESOURCE_MAX] = { static const char *resource_name_to_str[IPA_RM_RESOURCE_MAX] = { __stringify(IPA_RM_RESOURCE_Q6_PROD), __stringify(IPA_RM_RESOURCE_Q6_PROD), __stringify(IPA_RM_RESOURCE_Q6_CONS), __stringify(IPA_RM_RESOURCE_USB_PROD), __stringify(IPA_RM_RESOURCE_USB_PROD), __stringify(IPA_RM_RESOURCE_USB_CONS), __stringify(IPA_RM_RESOURCE_USB_DPL_DUMMY_PROD), __stringify(IPA_RM_RESOURCE_USB_DPL_DUMMY_PROD), __stringify(IPA_RM_RESOURCE_USB_DPL_CONS), __stringify(IPA_RM_RESOURCE_HSIC_PROD), __stringify(IPA_RM_RESOURCE_HSIC_PROD), __stringify(IPA_RM_RESOURCE_HSIC_CONS), __stringify(IPA_RM_RESOURCE_STD_ECM_PROD), __stringify(IPA_RM_RESOURCE_STD_ECM_PROD), __stringify(IPA_RM_RESOURCE_APPS_CONS), __stringify(IPA_RM_RESOURCE_RNDIS_PROD), __stringify(IPA_RM_RESOURCE_RNDIS_PROD), __stringify(RESERVED_CONS_11), __stringify(IPA_RM_RESOURCE_WWAN_0_PROD), __stringify(IPA_RM_RESOURCE_WWAN_0_PROD), __stringify(RESERVED_CONS_13), __stringify(IPA_RM_RESOURCE_WLAN_PROD), __stringify(IPA_RM_RESOURCE_WLAN_PROD), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_PROD), __stringify(IPA_RM_RESOURCE_MHI_PROD), __stringify(IPA_RM_RESOURCE_ETHERNET_PROD), __stringify(IPA_RM_RESOURCE_Q6_CONS), __stringify(IPA_RM_RESOURCE_USB_CONS), __stringify(IPA_RM_RESOURCE_USB_DPL_CONS), __stringify(IPA_RM_RESOURCE_HSIC_CONS), __stringify(IPA_RM_RESOURCE_WLAN_CONS), __stringify(IPA_RM_RESOURCE_WLAN_CONS), __stringify(IPA_RM_RESOURCE_APPS_CONS), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_PROD), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_CONS), __stringify(IPA_RM_RESOURCE_ODU_ADAPT_CONS), __stringify(IPA_RM_RESOURCE_MHI_PROD), __stringify(IPA_RM_RESOURCE_MHI_CONS), __stringify(IPA_RM_RESOURCE_MHI_CONS), __stringify(IPA_RM_RESOURCE_ETHERNET_PROD), __stringify(IPA_RM_RESOURCE_ETHERNET_CONS), __stringify(IPA_RM_RESOURCE_ETHERNET_CONS), }; }; struct ipa_rm_profile_vote_type { struct ipa_rm_profile_vote_type { enum ipa_voltage_level volt[IPA_RM_RESOURCE_MAX]; enum ipa_voltage_level volt[IPA_RM_RESOURCE_MAX]; enum ipa_voltage_level curr_volt; enum ipa_voltage_level curr_volt; u32 bw_prods[IPA_RM_RESOURCE_PROD_MAX]; u32 bw_resources[IPA_RM_RESOURCE_MAX]; u32 bw_cons[IPA_RM_RESOURCE_CONS_MAX]; u32 curr_bw; u32 curr_bw; }; }; Loading Loading @@ -999,7 +1000,9 @@ int ipa_rm_stat(char *buf, int size) return result; return result; spin_lock_irqsave(&ipa_rm_ctx->ipa_rm_lock, flags); spin_lock_irqsave(&ipa_rm_ctx->ipa_rm_lock, flags); for (i = 0; i < IPA_RM_RESOURCE_PROD_MAX; ++i) { for (i = 0; i < IPA_RM_RESOURCE_MAX; ++i) { if (!IPA_RM_RESORCE_IS_PROD(i)) continue; result = ipa_rm_dep_graph_get_resource( result = ipa_rm_dep_graph_get_resource( ipa_rm_ctx->dep_graph, ipa_rm_ctx->dep_graph, i, i, Loading @@ -1014,11 +1017,12 @@ int ipa_rm_stat(char *buf, int size) } } } } for (i = 0; i < IPA_RM_RESOURCE_PROD_MAX; i++) for (i = 0; i < IPA_RM_RESOURCE_MAX; i++) { sum_bw_prod += ipa_rm_ctx->prof_vote.bw_prods[i]; if (IPA_RM_RESORCE_IS_PROD(i)) sum_bw_prod += ipa_rm_ctx->prof_vote.bw_resources[i]; for (i = 0; i < IPA_RM_RESOURCE_CONS_MAX; i++) else sum_bw_cons += ipa_rm_ctx->prof_vote.bw_cons[i]; sum_bw_cons += ipa_rm_ctx->prof_vote.bw_resources[i]; } result = scnprintf(buf + cnt, size - cnt, result = scnprintf(buf + cnt, size - cnt, "All prod bandwidth: %d, All cons bandwidth: %d\n", "All prod bandwidth: %d, All cons bandwidth: %d\n", Loading Loading @@ -1118,15 +1122,7 @@ void ipa_rm_perf_profile_change(enum ipa_rm_resource_name resource_name) old_volt = ipa_rm_ctx->prof_vote.curr_volt; old_volt = ipa_rm_ctx->prof_vote.curr_volt; old_bw = ipa_rm_ctx->prof_vote.curr_bw; old_bw = ipa_rm_ctx->prof_vote.curr_bw; if (IPA_RM_RESORCE_IS_PROD(resource_name)) { bw_ptr = &ipa_rm_ctx->prof_vote.bw_resources[resource_name]; bw_ptr = &ipa_rm_ctx->prof_vote.bw_prods[resource_name]; } else if (IPA_RM_RESORCE_IS_CONS(resource_name)) { bw_ptr = &ipa_rm_ctx->prof_vote.bw_cons[ resource_name - IPA_RM_RESOURCE_PROD_MAX]; } else { IPA_RM_ERR("Invalid resource_name\n"); return; } switch (resource->state) { switch (resource->state) { case IPA_RM_GRANTED: case IPA_RM_GRANTED: Loading Loading @@ -1161,11 +1157,12 @@ void ipa_rm_perf_profile_change(enum ipa_rm_resource_name resource_name) } } } } for (i = 0; i < IPA_RM_RESOURCE_PROD_MAX; i++) for (i = 0; i < IPA_RM_RESOURCE_MAX; i++) { sum_bw_prod += ipa_rm_ctx->prof_vote.bw_prods[i]; if (IPA_RM_RESORCE_IS_PROD(i)) sum_bw_prod += ipa_rm_ctx->prof_vote.bw_resources[i]; for (i = 0; i < IPA_RM_RESOURCE_CONS_MAX; i++) else sum_bw_cons += ipa_rm_ctx->prof_vote.bw_cons[i]; sum_bw_cons += ipa_rm_ctx->prof_vote.bw_resources[i]; } IPA_RM_DBG_LOW("all prod bandwidth: %d all cons bandwidth: %d\n", IPA_RM_DBG_LOW("all prod bandwidth: %d all cons bandwidth: %d\n", sum_bw_prod, sum_bw_cons); sum_bw_prod, sum_bw_cons); Loading
drivers/platform/msm/ipa/ipa_rm_i.h +3 −5 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -47,12 +47,10 @@ IPA_RM_DRV_NAME " %s:%d " fmt, ## args); \ IPA_RM_DRV_NAME " %s:%d " fmt, ## args); \ } while (0) } while (0) #define IPA_RM_RESOURCE_CONS_MAX \ (IPA_RM_RESOURCE_MAX - IPA_RM_RESOURCE_PROD_MAX) #define IPA_RM_RESORCE_IS_PROD(x) \ #define IPA_RM_RESORCE_IS_PROD(x) \ (x >= IPA_RM_RESOURCE_PROD && x < IPA_RM_RESOURCE_PROD_MAX) (x < IPA_RM_RESOURCE_MAX && (x & 0x1) == 0) #define IPA_RM_RESORCE_IS_CONS(x) \ #define IPA_RM_RESORCE_IS_CONS(x) \ (x >= IPA_RM_RESOURCE_PROD_MAX && x < IPA_RM_RESOURCE_MAX) (x < IPA_RM_RESOURCE_MAX && (x & 0x1) == 1) #define IPA_RM_INDEX_INVALID (-1) #define IPA_RM_INDEX_INVALID (-1) #define IPA_RM_RELEASE_DELAY_IN_MSEC 1000 #define IPA_RM_RELEASE_DELAY_IN_MSEC 1000 Loading
drivers/platform/msm/ipa/ipa_rm_peers_list.c +1 −4 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -32,9 +32,6 @@ static int ipa_rm_peers_list_get_resource_index( resource_index = ipa_rm_prod_index(resource_name); resource_index = ipa_rm_prod_index(resource_name); else if (IPA_RM_RESORCE_IS_CONS(resource_name)) { else if (IPA_RM_RESORCE_IS_CONS(resource_name)) { resource_index = ipa_rm_cons_index(resource_name); resource_index = ipa_rm_cons_index(resource_name); if (resource_index != IPA_RM_INDEX_INVALID) resource_index = resource_index - IPA_RM_RESOURCE_PROD_MAX; } } return resource_index; return resource_index; Loading