err = hw->soc->bias_get_combo(hw, desc, &pullup, &ret);
                        if (err)
                                goto out;
+                       if (ret == MTK_PUPD_SET_R1R0_00)
+                               ret = MTK_DISABLE;
                        if (param == PIN_CONFIG_BIAS_DISABLE) {
-                               if (ret == MTK_PUPD_SET_R1R0_00)
-                                       ret = MTK_DISABLE;
+                               if (ret != MTK_DISABLE)
+                                       err = -EINVAL;
                        } else if (param == PIN_CONFIG_BIAS_PULL_UP) {
-                               /* When desire to get pull-up value, return
-                                *  error if current setting is pull-down
-                                */
-                               if (!pullup)
+                               if (!pullup || ret == MTK_DISABLE)
                                        err = -EINVAL;
                        } else if (param == PIN_CONFIG_BIAS_PULL_DOWN) {
-                               /* When desire to get pull-down value, return
-                                *  error if current setting is pull-up
-                                */
-                               if (pullup)
+                               if (pullup || ret == MTK_DISABLE)
                                        err = -EINVAL;
                        }
                } else {