++ if (policy->l2_rate[0] && policy->l2_rate[1] && policy->l2_rate[2]) {
++ policy->l2_rate_set = true;
++ of_property_read_u32_array(l2_np, "qcom,l2-cpufreq", policy->l2_cpufreq, 3);
++ of_property_read_u32_array(l2_np, "qcom,l2-volt", policy->l2_volt, 3);
++ } else
++ pr_warn("L2: failed to parse L2 rates\n");
++
++ if (!policy->l2_cpufreq[0] && !policy->l2_cpufreq[1] &&
++ !policy->l2_cpufreq[2] && policy->l2_rate_set) {
++ int i;
++
++ pr_warn("L2: failed to parse target cpu freq, using defaults\n");
++ for (i = 0; i < 3; i++)
++ policy->l2_cpufreq[i] = policy->l2_rate[i];
++ }
++
++ if (policy->l2_volt[0] && policy->l2_volt[1] && policy->l2_volt[2] &&
++ policy->l2_volt_tol && policy->l2_rate_set) {
++ vdd = of_parse_phandle(l2_np, "qcom,l2-supply", 0);
++
++ if (vdd) {
++ l2_regulator = devm_regulator_get(cpu_dev, vdd->name);
++ if (!IS_ERR(l2_regulator)) {
++ policy->l2_regulator = l2_regulator;
++ policy->l2_volt_set = true;
++ } else {
++ pr_warn("failed to get l2 supply\n");
++ l2_regulator = NULL;
++ }
++
++ of_node_put(vdd);
++ }
++ }
++ }