On 04-12-19, 16:25, sumitg wrote: > In T194, CCPLEX doesn't have access to set clocks and the > > clk_{get|set}_rate() functions set clocks by hook to BPMP R5. > > CPU freq can be directly set by CCPLEX using MSR(NVFREQ_REQ_EL1). > > As DVFS run's on BPMP, another MSR (NVFREQ_FEEDBACK_EL1) is > > used to read the counters and calculate "actual" cpu freq at CCPLEX. > > So, "cpuinfo_cur_freq" node gives the actual cpu frequency and not > > given by node "scaling_cur_freq". Right, but why can't this be hidden in the CPU's clk driver instead, so cpufreq driver can just do clk_get_rate() and clk_set_rate() ? > > > > - populating cpufreq table, you can probably add OPPs instead using > > the same mechanism > > We are reading available frequencies from BPMP to populate > > cpufreq table and not using static opp table. Right and lot of other platforms read it from firmware (I believe BBMP is a firmware here), and create OPPs at runtime. Look at this for example: drivers/cpufreq/qcom-cpufreq-hw.c and search for dev_pm_opp_add(). -- viresh