static struct tcs_group *get_tcs_for_msg(struct rsc_drv *drv,
                                         const struct tcs_request *msg)
 {
-       int type;
+       int type, ret;
+       struct tcs_group *tcs;
 
        switch (msg->state) {
        case RPMH_ACTIVE_ONLY_STATE:
                return ERR_PTR(-EINVAL);
        }
 
-       return get_tcs_of_type(drv, type);
+       /*
+        * If we are making an active request on a RSC that does not have a
+        * dedicated TCS for active state use, then re-purpose a wake TCS to
+        * send active votes.
+        * NOTE: The driver must be aware that this RSC does not have a
+        * dedicated AMC, and therefore would invalidate the sleep and wake
+        * TCSes before making an active state request.
+        */
+       tcs = get_tcs_of_type(drv, type);
+       if (msg->state == RPMH_ACTIVE_ONLY_STATE && IS_ERR(tcs)) {
+               tcs = get_tcs_of_type(drv, WAKE_TCS);
+               if (!IS_ERR(tcs)) {
+                       ret = rpmh_rsc_invalidate(drv);
+                       if (ret)
+                               return ERR_PTR(ret);
+               }
+       }
+
+       return tcs;
 }
 
 static const struct tcs_request *get_req_from_tcs(struct rsc_drv *drv,