All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Wahren <info@lategoodbye.de>
To: Fabio Estevam <festevam@gmail.com>
Cc: Shawn Guo <shawn.guo@linaro.org>,
	Fabio Estevam <fabio.estevam@freescale.com>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	Otavio Salvador <otavio@ossystems.com.br>,
	linux-pm@vger.kernel.org
Subject: Re: ARM: mx28: cpufreq-cpu0 support?
Date: Thu, 25 Sep 2014 20:24:00 +0200	[thread overview]
Message-ID: <54245DC0.8020700@lategoodbye.de> (raw)
In-Reply-To: <CAOMZO5BN8APenWCsy7uHbYNQ4q0-QxorAdGPKBHOHPcUzp2PYg@mail.gmail.com>

Hi,

i added linux-pm list.

Am 24.09.2014 23:47, schrieb Fabio Estevam:
> On Wed, Sep 24, 2014 at 5:46 PM, Stefan Wahren <info@lategoodbye.de> wrote:
>
>> thanks, registering cpufreq-cpu0 and adding missing properties reg & clocks
>> did the trick.
>>
>> Now the sys interface of cpufreq is available and the mxs-regulator seems to
>> handle frequency change. But the frequency selection do not work as
>> expected. If i set cpu frequency to 454736, 392727 or 261818 kHz, the
>
> Why 454736 instead of 454MHz? Same for the other values.

I took these values from the cpufreq driver in the Freescale BSP and 
they are in the datasheet, too. If i take 454000 and so one, i will get 
this nice oops:

root@duckbill:~# modprobe cpufreq-cpu0
[   95.764654] cpufreq: __cpufreq_add_dev: CPU0: Running at unlisted 
freq: 454736 KHz
[   95.773146] cpufreq_cpu0: failed to find OPP for 454736842
[   95.778692] cpufreq: __target_index: Failed to change cpu frequency: -34
[   95.786235] ------------[ cut here ]------------
[   95.790913] kernel BUG at drivers/cpufreq/cpufreq.c:1249!
[   95.796342] Internal error: Oops - BUG: 0 [#1] ARM
[   95.801154] Modules linked in: cpufreq_cpu0(+)
[   95.805673] CPU: 0 PID: 446 Comm: modprobe Not tainted 
3.17.0-rc4-00268-ge789d1c-dirty #17
[   95.813965] task: c6fa8980 ti: c6c86000 task.ti: c6c86000
[   95.819409] PC is at cpufreq_add_dev+0x530/0x5b4
[   95.824069] LR is at mark_held_locks+0x74/0x9c
[...]

>
>> cpufreq driver change it silently to 240000 kHz.
>
> 24MHz is the osc clock. It seems you did not turn on the PLL0.
>
> Check the POWER bit of HW_CLKCTRL_PLL0CTRL0 register.
>

240000 kHz = 240 MHz

I fixed this specific problem by setting the clock reference in the DT 
to ref_cpu instead of cpu. After that i'm able to set 392727, 360000, 
261818 and 64000 kHz. Unfortunately the highest and default value 454736 
is not selectable:

[   38.901842] cpu cpu0: Looking up cpu0-supply from device tree
[   38.904082] freq_table: table entry 0: 64000 kHz
[   38.904141] freq_table: table entry 1: 261818 kHz
[   38.904176] freq_table: table entry 2: 360000 kHz
[   38.904206] freq_table: table entry 3: 392727 kHz
[   38.904235] freq_table: table entry 4: 454736 kHz
[   38.908050] freq_table: request for verification of policy (64000 - 
454736 kHz) for cpu 0
[   38.908116] freq_table: verification lead to (64000 - 454736 kHz) for 
cpu 0
[   38.908176] freq_table: request for verification of policy (64000 - 
454736 kHz) for cpu 0
[   38.908220] freq_table: verification lead to tage: vddd register val 30
root@duckbill:/sys/devices/system/cpu/cpu0/cpufreq# echo "454736" > 
scaling_setspeed
[  595.671708] cpufreq_cpu0: failed to find OPP for 454736842
[  595.677272] cpufreq: __target_index: Failed to change cpu frequency: -34

That looks like a bug in cpufreq.

Best regards
Stefan

PS: Here is my relevant DT:

############# imx28.dtsi

[...]

cpus {
	#address-cells = <1>;
	#size-cells = <0>;

	cpu@0 {
		compatible = "arm,arm926ej-s";
		device_type = "cpu";
		reg = <0x0>;
		operating-points = <
			/* kHz	uV */
			454736  1550000
			392727  1475000
			360000  1375000
			261818  1275000
			64000   1050000
		>;
		clocks = <&clks 4>;
		clock-latency = <61036>; /* two CLK32 periods */
		cpu0-supply = <&reg_vddd>;
	};
};

[...]

WARNING: multiple messages have this Message-ID (diff)
From: info@lategoodbye.de (Stefan Wahren)
To: linux-arm-kernel@lists.infradead.org
Subject: ARM: mx28: cpufreq-cpu0 support?
Date: Thu, 25 Sep 2014 20:24:00 +0200	[thread overview]
Message-ID: <54245DC0.8020700@lategoodbye.de> (raw)
In-Reply-To: <CAOMZO5BN8APenWCsy7uHbYNQ4q0-QxorAdGPKBHOHPcUzp2PYg@mail.gmail.com>

Hi,

i added linux-pm list.

Am 24.09.2014 23:47, schrieb Fabio Estevam:
> On Wed, Sep 24, 2014 at 5:46 PM, Stefan Wahren <info@lategoodbye.de> wrote:
>
>> thanks, registering cpufreq-cpu0 and adding missing properties reg & clocks
>> did the trick.
>>
>> Now the sys interface of cpufreq is available and the mxs-regulator seems to
>> handle frequency change. But the frequency selection do not work as
>> expected. If i set cpu frequency to 454736, 392727 or 261818 kHz, the
>
> Why 454736 instead of 454MHz? Same for the other values.

I took these values from the cpufreq driver in the Freescale BSP and 
they are in the datasheet, too. If i take 454000 and so one, i will get 
this nice oops:

root at duckbill:~# modprobe cpufreq-cpu0
[   95.764654] cpufreq: __cpufreq_add_dev: CPU0: Running at unlisted 
freq: 454736 KHz
[   95.773146] cpufreq_cpu0: failed to find OPP for 454736842
[   95.778692] cpufreq: __target_index: Failed to change cpu frequency: -34
[   95.786235] ------------[ cut here ]------------
[   95.790913] kernel BUG at drivers/cpufreq/cpufreq.c:1249!
[   95.796342] Internal error: Oops - BUG: 0 [#1] ARM
[   95.801154] Modules linked in: cpufreq_cpu0(+)
[   95.805673] CPU: 0 PID: 446 Comm: modprobe Not tainted 
3.17.0-rc4-00268-ge789d1c-dirty #17
[   95.813965] task: c6fa8980 ti: c6c86000 task.ti: c6c86000
[   95.819409] PC is at cpufreq_add_dev+0x530/0x5b4
[   95.824069] LR is at mark_held_locks+0x74/0x9c
[...]

>
>> cpufreq driver change it silently to 240000 kHz.
>
> 24MHz is the osc clock. It seems you did not turn on the PLL0.
>
> Check the POWER bit of HW_CLKCTRL_PLL0CTRL0 register.
>

240000 kHz = 240 MHz

I fixed this specific problem by setting the clock reference in the DT 
to ref_cpu instead of cpu. After that i'm able to set 392727, 360000, 
261818 and 64000 kHz. Unfortunately the highest and default value 454736 
is not selectable:

[   38.901842] cpu cpu0: Looking up cpu0-supply from device tree
[   38.904082] freq_table: table entry 0: 64000 kHz
[   38.904141] freq_table: table entry 1: 261818 kHz
[   38.904176] freq_table: table entry 2: 360000 kHz
[   38.904206] freq_table: table entry 3: 392727 kHz
[   38.904235] freq_table: table entry 4: 454736 kHz
[   38.908050] freq_table: request for verification of policy (64000 - 
454736 kHz) for cpu 0
[   38.908116] freq_table: verification lead to (64000 - 454736 kHz) for 
cpu 0
[   38.908176] freq_table: request for verification of policy (64000 - 
454736 kHz) for cpu 0
[   38.908220] freq_table: verification lead to tage: vddd register val 30
root at duckbill:/sys/devices/system/cpu/cpu0/cpufreq# echo "454736" > 
scaling_setspeed
[  595.671708] cpufreq_cpu0: failed to find OPP for 454736842
[  595.677272] cpufreq: __target_index: Failed to change cpu frequency: -34

That looks like a bug in cpufreq.

Best regards
Stefan

PS: Here is my relevant DT:

############# imx28.dtsi

[...]

cpus {
	#address-cells = <1>;
	#size-cells = <0>;

	cpu at 0 {
		compatible = "arm,arm926ej-s";
		device_type = "cpu";
		reg = <0x0>;
		operating-points = <
			/* kHz	uV */
			454736  1550000
			392727  1475000
			360000  1375000
			261818  1275000
			64000   1050000
		>;
		clocks = <&clks 4>;
		clock-latency = <61036>; /* two CLK32 periods */
		cpu0-supply = <&reg_vddd>;
	};
};

[...]

  reply	other threads:[~2014-09-25 18:24 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-24  9:47 ARM: mx28: cpufreq-cpu0 support? Stefan Wahren
2014-08-24  9:47 ` Stefan Wahren
2014-08-25  8:01 ` Shawn Guo
2014-08-25  8:01   ` Shawn Guo
2014-08-25 10:30   ` Stefan Wahren
2014-08-25 10:30     ` Stefan Wahren
2014-08-30 17:05     ` Fabio Estevam
2014-08-30 17:05       ` Fabio Estevam
2014-08-30 17:07       ` Fabio Estevam
2014-08-30 17:07         ` Fabio Estevam
2014-09-01  6:31         ` Stefan Wahren
2014-09-01  6:31           ` Stefan Wahren
2014-09-01 13:33           ` Fabio Estevam
2014-09-01 13:33             ` Fabio Estevam
2014-09-02  5:09             ` Stefan Wahren
2014-09-02  5:09               ` Stefan Wahren
2014-09-02 13:13               ` Fabio Estevam
2014-09-02 13:13                 ` Fabio Estevam
2014-09-22 21:25             ` Stefan Wahren
2014-09-22 21:25               ` Stefan Wahren
2014-09-22 22:18               ` Fabio Estevam
2014-09-22 22:18                 ` Fabio Estevam
2014-09-24 20:46                 ` Stefan Wahren
2014-09-24 20:46                   ` Stefan Wahren
2014-09-24 21:47                   ` Fabio Estevam
2014-09-24 21:47                     ` Fabio Estevam
2014-09-25 18:24                     ` Stefan Wahren [this message]
2014-09-25 18:24                       ` Stefan Wahren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54245DC0.8020700@lategoodbye.de \
    --to=info@lategoodbye.de \
    --cc=cpufreq@vger.kernel.org \
    --cc=fabio.estevam@freescale.com \
    --cc=festevam@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=otavio@ossystems.com.br \
    --cc=shawn.guo@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.