فهرست منبع

msm: ipa3: Fix IPA clk is not going to gated state.

Due to improper decrement of some IPA clients, the
active client count is greater than zero, due to
which clk not going to gated state. Now doing
proper decrement of those clients.

Change-Id: I57301cdfc34d48874d26fe0b0ee90913c5e6c44b
Signed-off-by: Piyush Dhyani <[email protected]>
Piyush Dhyani 3 سال پیش
والد
کامیت
5403d2fe9f
2فایلهای تغییر یافته به همراه11 افزوده شده و 3 حذف شده
  1. 4 2
      drivers/platform/msm/ipa/ipa_v3/ipa.c
  2. 7 1
      drivers/platform/msm/ipa/ipa_v3/ipa_dp.c

+ 4 - 2
drivers/platform/msm/ipa/ipa_v3/ipa.c

@@ -3156,12 +3156,14 @@ static long ipa3_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	case IPA_IOC_RM_ADD_DEPENDENCY:
 	case IPA_IOC_RM_ADD_DEPENDENCY:
 		/* IPA RM is deprecate because IPA PM is used */
 		/* IPA RM is deprecate because IPA PM is used */
 		IPAERR("using obselete command: IPA_IOC_RM_ADD_DEPENDENCY");
 		IPAERR("using obselete command: IPA_IOC_RM_ADD_DEPENDENCY");
-		return -EINVAL;
+		retval = -EINVAL;
+		break;
 
 
 	case IPA_IOC_RM_DEL_DEPENDENCY:
 	case IPA_IOC_RM_DEL_DEPENDENCY:
 		/* IPA RM is deprecate because IPA PM is used */
 		/* IPA RM is deprecate because IPA PM is used */
 		IPAERR("using obselete command: IPA_IOC_RM_DEL_DEPENDENCY");
 		IPAERR("using obselete command: IPA_IOC_RM_DEL_DEPENDENCY");
-		return -EINVAL;
+		retval = -EINVAL;
+		break;
 
 
 	case IPA_IOC_GENERATE_FLT_EQ:
 	case IPA_IOC_GENERATE_FLT_EQ:
 		{
 		{

+ 7 - 1
drivers/platform/msm/ipa/ipa_v3/ipa_dp.c

@@ -1019,6 +1019,7 @@ static int ipa3_rx_switch_to_intr_mode(struct ipa3_sys_context *sys)
  */
  */
 static void ipa3_handle_rx(struct ipa3_sys_context *sys)
 static void ipa3_handle_rx(struct ipa3_sys_context *sys)
 {
 {
+	enum ipa_client_type client_type;
 	int inactive_cycles;
 	int inactive_cycles;
 	int cnt;
 	int cnt;
 	int ret;
 	int ret;
@@ -1052,7 +1053,12 @@ start_poll:
 	if (ret == -GSI_STATUS_PENDING_IRQ)
 	if (ret == -GSI_STATUS_PENDING_IRQ)
 		goto start_poll;
 		goto start_poll;
 
 
-	IPA_ACTIVE_CLIENTS_DEC_EP(sys->ep->client);
+	if (IPA_CLIENT_IS_WAN_CONS(sys->ep->client))
+		client_type = IPA_CLIENT_APPS_WAN_COAL_CONS;
+	else
+		client_type = sys->ep->client;
+
+	IPA_ACTIVE_CLIENTS_DEC_EP(client_type);
 }
 }
 
 
 static void ipa3_switch_to_intr_rx_work_func(struct work_struct *work)
 static void ipa3_switch_to_intr_rx_work_func(struct work_struct *work)