void omap_pm_dsp_set_min_opp(struct device *dev, unsigned long f) { u8 opp_id; if (!dev) { WARN_ON(1); return; }; pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id); if (cpu_is_omap3630()) { /* * check if OPP requested is 65Mz or greater if yes set * max opp constraint to OPP4, Which limits scaling of VDD1 * OPP to 1G only. 1.3G will be allowed when DSP load dies * down to 65MHz. */ if ((f > S65M) && !vdd1_max_opp) { vdd1_max_opp = 1; omap_pm_vdd1_set_max_opp(dev, VDD1_OPP4); omap_pm_vdd1_set_max_opp(dev, VDD1_OPP5); // omap_pm_vdd1_set_max_opp(dev, VDD1_OPP6); } else if ((f < S260M) && vdd1_max_opp) { omap_pm_vdd1_set_max_opp(dev, 0); vdd1_max_opp = 0; } /* * DSP table has 65MHz as OPP5, give OPP1-260MHz when DSP request * 65MHz-OPP1 */ if (f == S65M) f = S260M; // f = S520M; } opp_id = get_opp_id(dsp_opps + MAX_VDD1_OPP, f); /* * For now pass a dummy_dev struct for SRF to identify the caller. * Maybe its good to have DSP pass this as an argument */ resource_request("vdd1_opp", dev, opp_id); return; }
void omap_pm_dsp_set_min_opp(struct device *dev, unsigned long f) { u8 opp_id; if (!dev) { WARN_ON(1); return; } pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id); opp_id = get_opp_id(dsp_opps + MAX_VDD1_OPP, f); /* * For now pass a dummy_dev struct for SRF to identify the caller. * Maybe its good to have DSP pass this as an argument */ resource_request("vdd1_opp", dev, opp_id); return; }