devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: icenowy-h8G6r0blFSE@public.gmane.org
To: "Ondřej Jirman" <megi-DlDF6nMZSto@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
	Icenowy Zheng <icenowy-ymACFijhrKM@public.gmane.org>,
	Maxime Ripard
	<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v4 4/5] ARM: sunxi: h3/h5: switch apb0-related clocks to r_ccu
Date: Thu, 20 Jul 2017 10:19:11 +0800	[thread overview]
Message-ID: <2acca1ac65eea751651743c76ec6ede7@aosc.io> (raw)
In-Reply-To: <3299ee7dd04482f0a21752651335e223-h8G6r0blFSE@public.gmane.org>

在 2017-07-20 10:03,icenowy-h8G6r0blFSE@public.gmane.org 写道:
> 在 2017-07-20 06:59,Ondřej Jirman 写道:
>> Hi,
>> 
>> Icenowy Zheng píše v Út 04. 04. 2017 v 17:50 +0800:
>>> From: Icenowy Zheng <icenowy-ymACFijhrKM@public.gmane.org>
>>> 
>>> Now we have driver for the PRCM CCU, switch to use it instead of
>>> old-style clock nodes for apb0-related clocks in sunxi-h3-h5.dtsi .
>>> 
>>> The mux 3 of R_CCU is still the internal oscillator, which is said to 
>>> be
>>> 16MHz plus minus 30%, and get a measured value of 15MHz~16MHz on my 
>>> two
>>> H3 boards and one H5 board.
>> 
>> There's issue with the new r_ccu that breaks r_i2c. (no devices can be
>> found on the bus). Reverting this patch fixes the issue with the I2C
>> controller. (everything else being the same)
>> 
>> Here's the code I'm using: 
>> https://github.com/megous/linux/commits/oran
>> ge-pi-4.12
>> 
>> The last commit is the revert.
>> 
>> The issue manifests itself by non-working DVFS, because kernel lacks
>> access to SY8106A regulator, because r_i2c doesn't work with sunxi-ng
>> clock driver (sun8i-r).
>> 
>> Relevant difference in registers between working/non-working state is
>> just this (diff -u):
>> 
>>  0x01f02400 = 0x00000000
>>  0x01f02404 = 0x00000000
>> -0x01f02408 = 0x00000091
>> +0x01f02408 = 0x00000095 DATA register inisde the I2C controller
>>  0x01f0240c = 0x00000044
>>  0x01f02410 = 0x000000f8
>> -0x01f02414 = 0x00000059
>> +0x01f02414 = 0x00000000 CLOCK setup register inside the I2C 
>> controller
>>  0x01f02418 = 0x00000000
>>  0x01f0241c = 0x00000000
>>  0x01f02420 = 0x0000003a
>> 
>> It looks like the new sunxi-ng clock driver causes the I2C driver to
>> not correctly configure the CLOCK register. I don't know why and I'm
>> not sure how to deal with this. Any ideas what can I do next?
>> 
>> thank you and regards,
>>   o.
> 
> It seems to be a very very very weird problem -- the CPUS_CFG register
> seems to be not accessible in non-secure mode on H3, and if the r_ccu
> driver reads it a value of 0x0 is read out (which means that the parent
> of ar100 is osc32k), but the real initial value of the register is
> 0x00010000 (which means the parent is osc24M).
> 
> So the bus clock of r_i2c is wrongly claimed as 32kHz, not 24MHz, then
> the r_i2c fails to work.
> 
> This clock problem doesn't exist for A64.

H5 doesn't have this issue either.

> 
>> 
>>> Signed-off-by: Icenowy Zheng <icenowy-ymACFijhrKM@public.gmane.org>
>>> ---
>>> Changes in v4:
>>> - Temporarily dropped the CCU headers.
>>> Changes in v3:
>>> - Change osc32000 to iosc.
>>> 
>>>  arch/arm/boot/dts/sunxi-h3-h5.dtsi | 45 
>>> ++++++++++++--------------------------
>>>  1 file changed, 14 insertions(+), 31 deletions(-)
>>> 
>>> diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi 
>>> b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
>>> index 6640ebfa6419..1aeeacb3a884 100644
>>> --- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
>>> +++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
>>> @@ -68,31 +68,12 @@
>>>  			clock-output-names = "osc32k";
>>>  		};
>>> 
>>> -		apb0: apb0_clk {
>>> -			compatible = "fixed-factor-clock";
>>> +		iosc: internal-osc-clk {
>>>  			#clock-cells = <0>;
>>> -			clock-div = <1>;
>>> -			clock-mult = <1>;
>>> -			clocks = <&osc24M>;
>>> -			clock-output-names = "apb0";
>>> -		};
>>> -
>>> -		apb0_gates: clk@01f01428 {
>>> -			compatible = "allwinner,sun8i-h3-apb0-gates-clk",
>>> -				     "allwinner,sun4i-a10-gates-clk";
>>> -			reg = <0x01f01428 0x4>;
>>> -			#clock-cells = <1>;
>>> -			clocks = <&apb0>;
>>> -			clock-indices = <0>, <1>;
>>> -			clock-output-names = "apb0_pio", "apb0_ir";
>>> -		};
>>> -
>>> -		ir_clk: ir_clk@01f01454 {
>>> -			compatible = "allwinner,sun4i-a10-mod0-clk";
>>> -			reg = <0x01f01454 0x4>;
>>> -			#clock-cells = <0>;
>>> -			clocks = <&osc32k>, <&osc24M>;
>>> -			clock-output-names = "ir";
>>> +			compatible = "fixed-clock";
>>> +			clock-frequency = <16000000>;
>>> +			clock-accuracy = <300000000>;
>>> +			clock-output-names = "iosc";
>>>  		};
>>>  	};
>>> 
>>> @@ -576,9 +557,12 @@
>>>  				     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
>>>  		};
>>> 
>>> -		apb0_reset: reset@01f014b0 {
>>> -			reg = <0x01f014b0 0x4>;
>>> -			compatible = "allwinner,sun6i-a31-clock-reset";
>>> +		r_ccu: clock@1f01400 {
>>> +			compatible = "allwinner,sun50i-a64-r-ccu";
>>> +			reg = <0x01f01400 0x100>;
>>> +			clocks = <&osc24M>, <&osc32k>, <&iosc>;
>>> +			clock-names = "hosc", "losc", "iosc";
>>> +			#clock-cells = <1>;
>>>  			#reset-cells = <1>;
>>>  		};
>>> 
>>> @@ -589,9 +573,9 @@
>>> 
>>>  		ir: ir@01f02000 {
>>>  			compatible = "allwinner,sun5i-a13-ir";
>>> -			clocks = <&apb0_gates 1>, <&ir_clk>;
>>> +			clocks = <&r_ccu 4>, <&r_ccu 11>;
>>>  			clock-names = "apb", "ir";
>>> -			resets = <&apb0_reset 1>;
>>> +			resets = <&r_ccu 0>;
>>>  			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
>>>  			reg = <0x01f02000 0x40>;
>>>  			status = "disabled";
>>> @@ -601,9 +585,8 @@
>>>  			compatible = "allwinner,sun8i-h3-r-pinctrl";
>>>  			reg = <0x01f02c00 0x400>;
>>>  			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
>>> -			clocks = <&apb0_gates 0>, <&osc24M>, <&osc32k>;
>>> +			clocks = <&r_ccu 3>, <&osc24M>, <&osc32k>;
>>>  			clock-names = "apb", "hosc", "losc";
>>> -			resets = <&apb0_reset 0>;
>>>  			gpio-controller;
>>>  			#gpio-cells = <3>;
>>>  			interrupt-controller;
>>> --
>>> 2.12.2
>>> 
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

  parent reply	other threads:[~2017-07-20  2:19 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-04  9:50 [PATCH v4 0/5] Add support for the R_CCU on Allwinner H3/A64 SoCs Icenowy Zheng
     [not found] ` <20170404095100.18649-1-icenowy-h8G6r0blFSE@public.gmane.org>
2017-04-04  9:50   ` [PATCH v4 1/5] dt-bindings: update device tree binding for Allwinner PRCM CCUs Icenowy Zheng
2017-04-04  9:50   ` [PATCH v4 2/5] clk: sunxi-ng: add support for " Icenowy Zheng
2017-04-04  9:50   ` [PATCH v4 3/5] arm64: allwinner: a64: add r_ccu node Icenowy Zheng
2017-04-04  9:50   ` [PATCH v4 4/5] ARM: sunxi: h3/h5: switch apb0-related clocks to r_ccu Icenowy Zheng
     [not found]     ` <20170404095100.18649-5-icenowy-h8G6r0blFSE@public.gmane.org>
2017-07-19 22:59       ` 'Ondřej Jirman' via linux-sunxi
     [not found]         ` <1500505173.23770.1.camel-DlDF6nMZSto@public.gmane.org>
2017-07-20  2:03           ` icenowy-h8G6r0blFSE
     [not found]             ` <3299ee7dd04482f0a21752651335e223-h8G6r0blFSE@public.gmane.org>
2017-07-20  2:19               ` icenowy-h8G6r0blFSE [this message]
2017-07-20  5:15               ` icenowy-h8G6r0blFSE
2017-07-20  8:21           ` icenowy-h8G6r0blFSE
     [not found]             ` <a934bb1292328400004e58c886ccd693-h8G6r0blFSE@public.gmane.org>
2017-07-20 12:12               ` 'Ondřej Jirman' via linux-sunxi
2017-04-04  9:51   ` [PATCH v4 5/5] arm64: allwinner: a64: add R_PIO pinctrl node Icenowy Zheng
2017-04-04 15:45   ` [PATCH v4 0/5] Add support for the R_CCU on Allwinner H3/A64 SoCs Maxime Ripard

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=2acca1ac65eea751651743c76ec6ede7@aosc.io \
    --to=icenowy-h8g6r0blfse@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=icenowy-ymACFijhrKM@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=megi-DlDF6nMZSto@public.gmane.org \
    --cc=wens-jdAy2FN1RRM@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).