int cpufreq_frequency_table_target(struct cpufreq_policy *policy,
                                    unsigned int target_freq,
-                                   unsigned int relation,
-                                   unsigned int *index);
+                                   unsigned int relation);
 
 is the corresponding frequency table helper for the ->target
-stage. Just pass the values to this function, and the unsigned int
-index returns the number of the frequency table entry which contains
+stage. Just pass the values to this function, and this function
+returns the number of the frequency table entry which contains
 the frequency the CPU shall be set to.
 
 The following macros can be used as iterators over cpufreq_frequency_table:
 
                else {
                        unsigned int index;
 
-                       cpufreq_frequency_table_target(policy,
-                               policy->cur - 1, CPUFREQ_RELATION_H, &index);
+                       index = cpufreq_frequency_table_target(policy,
+                               policy->cur - 1, CPUFREQ_RELATION_H);
                        freq_next = policy->freq_table[index].frequency;
                }
 
 
                            unsigned int relation)
 {
        unsigned int old_target_freq = target_freq;
-       int index, retval;
+       int index;
 
        if (cpufreq_disabled())
                return -ENODEV;
        if (!cpufreq_driver->target_index)
                return -EINVAL;
 
-       retval = cpufreq_frequency_table_target(policy, target_freq, relation,
-                                               &index);
-       if (unlikely(retval)) {
-               pr_err("%s: Unable to find matching freq\n", __func__);
-               return retval;
-       }
+       index = cpufreq_frequency_table_target(policy, target_freq, relation);
 
        return __target_index(policy, index);
 }
 
 {
        unsigned int freq_req, freq_reduc, freq_avg;
        unsigned int freq_hi, freq_lo;
-       unsigned int index = 0;
+       unsigned int index;
        unsigned int delay_hi_us;
        struct policy_dbs_info *policy_dbs = policy->governor_data;
        struct od_policy_dbs_info *dbs_info = to_dbs_info(policy_dbs);
                return freq_next;
        }
 
-       cpufreq_frequency_table_target(policy, freq_next, relation, &index);
+       index = cpufreq_frequency_table_target(policy, freq_next, relation);
        freq_req = freq_table[index].frequency;
        freq_reduc = freq_req * od_tuners->powersave_bias / 1000;
        freq_avg = freq_req - freq_reduc;
 
        /* Find freq bounds for freq_avg in freq_table */
-       index = 0;
-       cpufreq_frequency_table_target(policy, freq_avg, CPUFREQ_RELATION_H,
-                                      &index);
+       index = cpufreq_frequency_table_target(policy, freq_avg,
+                                              CPUFREQ_RELATION_H);
        freq_lo = freq_table[index].frequency;
-       index = 0;
-       cpufreq_frequency_table_target(policy, freq_avg, CPUFREQ_RELATION_L,
-                                      &index);
+       index = cpufreq_frequency_table_target(policy, freq_avg,
+                                              CPUFREQ_RELATION_L);
        freq_hi = freq_table[index].frequency;
 
        /* Find out how long we have to be in hi and lo freqs */
 
 EXPORT_SYMBOL_GPL(cpufreq_generic_frequency_table_verify);
 
 int cpufreq_frequency_table_target(struct cpufreq_policy *policy,
-                                  unsigned int target_freq,
-                                  unsigned int relation,
-                                  unsigned int *index)
+                                   unsigned int target_freq,
+                                   unsigned int relation)
 {
        struct cpufreq_frequency_table optimal = {
                .driver_data = ~0,
        struct cpufreq_frequency_table *pos;
        struct cpufreq_frequency_table *table = policy->freq_table;
        unsigned int freq, diff, i = 0;
+       int index;
 
        pr_debug("request for target %u kHz (relation: %u) for cpu %u\n",
                                        target_freq, relation, policy->cpu);
                }
        }
        if (optimal.driver_data > i) {
-               if (suboptimal.driver_data > i)
-                       return -EINVAL;
-               *index = suboptimal.driver_data;
-       } else
-               *index = optimal.driver_data;
+               if (suboptimal.driver_data > i) {
+                       WARN(1, "Invalid frequency table: %d\n", policy->cpu);
+                       return 0;
+               }
 
-       pr_debug("target index is %u, freq is:%u kHz\n", *index,
-                table[*index].frequency);
+               index = suboptimal.driver_data;
+       } else
+               index = optimal.driver_data;
 
-       return 0;
+       pr_debug("target index is %u, freq is:%u kHz\n", index,
+                table[index].frequency);
+       return index;
 }
 EXPORT_SYMBOL_GPL(cpufreq_frequency_table_target);
 
 
                struct cpufreq_policy policy;
 
                cpufreq_get_policy(&policy, cpu);
-               cpufreq_frequency_table_target(&policy, policy.cur,
-                                              CPUFREQ_RELATION_C, &index);
+               index = cpufreq_frequency_table_target(&policy, policy.cur,
+                                              CPUFREQ_RELATION_C);
                powernv_cpufreq_target_index(&policy, index);
                cpumask_andnot(&mask, &mask, policy.cpus);
        }
 
                     __func__, policy, target_freq, relation);
 
        if (ftab) {
-               if (cpufreq_frequency_table_target(policy, target_freq,
-                                                  relation, &index)) {
-                       s3c_freq_dbg("%s: table failed\n", __func__);
-                       return -EINVAL;
-               }
+               index = cpufreq_frequency_table_target(policy, target_freq,
+                                                      relation);
 
                s3c_freq_dbg("%s: adjust %d to entry %d (%u)\n", __func__,
                             target_freq, index, ftab[index].frequency);
                pll = NULL;
        } else {
                struct cpufreq_policy tmp_policy;
-               int ret;
 
                /* we keep the cpu pll table in Hz, to ensure we get an
                 * accurate value for the PLL output. */
                tmp_policy.cpu = policy->cpu;
                tmp_policy.freq_table = pll_reg;
 
-               /* cpufreq_frequency_table_target uses a pointer to 'index'
-                * which is the number of the table entry, not the value of
+               /* cpufreq_frequency_table_target returns the index
+                * of the table entry, not the value of
                 * the table entry's index field. */
 
-               ret = cpufreq_frequency_table_target(&tmp_policy, target_freq,
-                                                    relation, &index);
-
-               if (ret < 0) {
-                       pr_err("%s: no PLL available\n", __func__);
-                       goto err_notpossible;
-               }
-
+               index = cpufreq_frequency_table_target(&tmp_policy, target_freq,
+                                                      relation);
                pll = pll_reg + index;
 
                s3c_freq_dbg("%s: target %u => %u\n",
        }
 
        return s3c_cpufreq_settarget(policy, target_freq, pll);
-
- err_notpossible:
-       pr_err("no compatible settings for %d\n", target_freq);
-       return -EINVAL;
 }
 
 struct clk *s3c_cpufreq_clk_get(struct device *dev, const char *name)
 
        new_freq = s5pv210_freq_table[index].frequency;
 
        /* Finding current running level index */
-       if (cpufreq_frequency_table_target(policy, old_freq, CPUFREQ_RELATION_H,
-                                          &priv_index)) {
-               ret = -EINVAL;
-               goto exit;
-       }
+       priv_index = cpufreq_frequency_table_target(policy, old_freq,
+                                                   CPUFREQ_RELATION_H);
 
        arm_volt = dvs_conf[index].arm_volt;
        int_volt = dvs_conf[index].int_volt;
 
 
 int cpufreq_frequency_table_target(struct cpufreq_policy *policy,
                                   unsigned int target_freq,
-                                  unsigned int relation,
-                                  unsigned int *index);
+                                  unsigned int relation);
 int cpufreq_frequency_table_get_index(struct cpufreq_policy *policy,
                unsigned int freq);