diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index ac32ff9..a474680 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -433,14 +433,16 @@
       if (state == FMState_Rx_Turned_On || state == FMState_Srch_InProg) {
          Log.d(TAG, "enable: FM already turned On and running");
          return status;
-      }
-      else if (state == subPwrLevel_FMTurning_Off) {
+      }else if (state == subPwrLevel_FMTurning_Off) {
          Log.v(TAG, "FM is in the process of turning off.Pls wait for sometime.");
          return status;
-      }
-      else if (state == subPwrLevel_FMRx_Starting) {
+      }else if (state == subPwrLevel_FMRx_Starting) {
          Log.v(TAG, "FM is in the process of turning On.Pls wait for sometime.");
          return status;
+      }else if ((state == FMState_Tx_Turned_On)
+                || (state == subPwrLevel_FMTx_Starting)) {
+         Log.v(TAG, "FM Tx is turned on or in the process of turning on.");
+         return status;
       }
 
       setFMPowerState(subPwrLevel_FMRx_Starting);
diff --git a/qcom/fmradio/FmTransmitter.java b/qcom/fmradio/FmTransmitter.java
index f13e4a7..287da3c 100644
--- a/qcom/fmradio/FmTransmitter.java
+++ b/qcom/fmradio/FmTransmitter.java
@@ -146,18 +146,23 @@
     *
     */
    public boolean enable (FmConfig configSettings){
-      boolean status = true;
+      boolean status = false;
 
       int state = getFMState();
       if (state == FMState_Tx_Turned_On) {
           Log.d(TAG, "enable: FM Tx already turned On and running");
           return status;
-      } else if (state == subPwrLevel_FMTurning_Off) {
+      }else if (state == subPwrLevel_FMTurning_Off) {
           Log.v(TAG, "FM is in the process of turning off.Pls wait for sometime.");
           return status;
-      } else if(state == subPwrLevel_FMTx_Starting) {
+      }else if((state == subPwrLevel_FMTx_Starting)
+                ||(state == subPwrLevel_FMRx_Starting)) {
           Log.v(TAG, "FM is in the process of turning On.Pls wait for sometime.");
           return status;
+      }else if((state == FMState_Srch_InProg)
+                ||(state == FMState_Rx_Turned_On)) {
+          Log.v(TAG, "FM Rx is turned on");
+          return status;
       }
       setFMPowerState(subPwrLevel_FMTx_Starting);
       Log.v(TAG, "enable: CURRENT-STATE : FMOff ---> NEW-STATE : FMTxStarting");
