public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dinh Nguyen <dinguyen@kernel.org>
To: "Rabara, Niravkumar L" <niravkumar.l.rabara@intel.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: lkp <lkp@intel.com>
Subject: Re: [PATCH] ARM: dts: socfpga: remove syscon compatible string for sysmgr node
Date: Tue, 11 Feb 2025 06:57:17 -0600	[thread overview]
Message-ID: <9fea34ee-3dbc-4166-ba7a-a5f4d1551e3d@kernel.org> (raw)
In-Reply-To: <BL3PR11MB6532473C345BF326F55A4CF9A2FD2@BL3PR11MB6532.namprd11.prod.outlook.com>

On 2/11/25 06:37, Rabara, Niravkumar L wrote:
> Hi Dinh,
> 
>> -----Original Message-----
>> From: Dinh Nguyen <dinguyen@kernel.org>
>> Sent: Tuesday, 11 February, 2025 8:25 PM
>> To: Rabara, Niravkumar L <niravkumar.l.rabara@intel.com>; Rob Herring
>> <robh@kernel.org>; Krzysztof Kozlowski <krzk+dt@kernel.org>; Conor Dooley
>> <conor+dt@kernel.org>; devicetree@vger.kernel.org; linux-
>> kernel@vger.kernel.org
>> Cc: lkp <lkp@intel.com>
>> Subject: Re: [PATCH] ARM: dts: socfpga: remove syscon compatible string for
>> sysmgr node
>>
>> On 2/11/25 06:18, Rabara, Niravkumar L wrote:
>>> Hi Dinh,
>>>
>>>> -----Original Message-----
>>>> From: Dinh Nguyen <dinguyen@kernel.org>
>>>> Sent: Tuesday, 11 February, 2025 12:15 PM
>>>> To: Rabara, Niravkumar L <niravkumar.l.rabara@intel.com>; Rob Herring
>>>> <robh@kernel.org>; Krzysztof Kozlowski <krzk+dt@kernel.org>; Conor
>>>> Dooley <conor+dt@kernel.org>; devicetree@vger.kernel.org; linux-
>>>> kernel@vger.kernel.org
>>>> Cc: lkp <lkp@intel.com>
>>>> Subject: Re: [PATCH] ARM: dts: socfpga: remove syscon compatible
>>>> string for sysmgr node
>>>>
>>>>> Yes, I have tested this using NFS boot, however I didn't observe any
>>>>> issue with SD/MMC driver.
>>>>>
>>>>> => fdt print /soc/mmc@ff808000
>>>>> mmc@ff808000 {
>>>>> 	#address-cells = <0x00000001>;
>>>>> 	#size-cells = <0x00000000>;
>>>>> 	compatible = "altr,socfpga-dw-mshc";
>>>>> 	reg = <0xff808000 0x00001000>;
>>>>> 	interrupts = <0x00000000 0x00000062 0x00000004>;
>>>>> 	fifo-depth = <0x00000400>;
>>>>> 	clocks = <0x0000001a 0x00000024>;
>>>>> 	clock-names = "biu", "ciu";
>>>>> 	resets = <0x00000006 0x00000027>;
>>>>> 	altr,sysmgr-syscon = <0x0000001c 0x00000028 0x00000004>;
>>>>> 	status = "okay";
>>>>> 	cap-sd-highspeed;
>>>>> 	cap-mmc-highspeed;
>>>>> 	broken-cd;
>>>>> 	bus-width = <0x00000004>;
>>>>> 	clk-phase-sd-hs = <0x00000000 0x00000087>;
>>>>> 	phandle = <0x00000029>;
>>>>> };
>>>>> => fdt print /soc/sysmgr@ffd06000
>>>>> sysmgr@ffd06000 {
>>>>> 	compatible = "altr,sys-mgr";
>>>>> 	reg = <0xffd06000 0x00000300>;
>>>>> 	cpu1-start-addr = <0xffd06230>;
>>>>> 	phandle = <0x0000001c>;
>>>>> };
>>>>>
>>>>> [    1.095784] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req
>>>> 50000000Hz, actual 50000000HZ div = 0)
>>>>> [    1.105692] mmc0: new high speed SDHC card at address 0001
>>>>> [    1.108238] at24 0-0051: supply vcc not found, using dummy regulator
>>>>> [    1.111817] mmcblk0: mmc0:0001 SD32G 29.1 GiB
>>>>> [    1.118872] at24 0-0051: 4096 byte 24c32 EEPROM, writable, 32
>>>> bytes/write
>>>>> [    1.129186]  mmcblk0: p1 p2 p3
>>>>>
>>>>> .
>>>>>
>>>>> root@arria10:~# ls /dev/mmcblk0*
>>>>> /dev/mmcblk0    /dev/mmcblk0p1  /dev/mmcblk0p2  /dev/mmcblk0p3
>>>>> root@arria10:~# mount /dev/mmcblk0p1 /tmp/ root@arria10:~# ls /tmp/
>>>>> extlinux                         socfpga_arria10_socdk_sdmmc.dtb  zImage
>>>>> fit_spl_fpga.itb                 u-boot.img
>>>>>
>>>>>
>>>>
>>>> You didn't really test anything. There's a register in the System
>>>> Manager that has set the SD/MMC clk-phase in U-Boot. So you won't see
>>>> the failure unless you explicitly change the value in that register
>>>> and then boot Linux, then you will see the failure. If you look at
>>>> drivers/mmc/host/dw_mmc-pltfm.c and look at the function
>>>> dw_mci_socfpga_priv_init(), you can see that work in action. If you remove
>> the syscon property, then that portion of the driver will fail.
>>>> Also the ethernet driver is using the system manager's to set the
>>>> correct PHY mode through syscon. I think you need to test this patch more
>> thoroughly.
>>>>
>>>> DInh
>>>
>>> Altera System Manager driver (drivers/mfd/altera-sysmgr.c) is enabled
>>> in "socfpga_defconfig" - i.e. CONFIG_MFD_ALTERA_SYSMGR=y
>>>
>>> So, SoCFPGA always using drivers/mfd/altera-sysmgr.c for System
>>> Manager register access, not the generic "syscon" drivers/mfd/syscon.c.
>>> That's why we do not need "syscon" compatible for fall back mechanism.
>>>
>>> 	sysmgr: sysmgr@ffd08000 {
>>> -		compatible = "altr,sys-mgr", "syscon";
>>> +		compatible = "altr,sys-mgr";
>>>    		reg = <0xffd08000 0x4000>;
>>>    	};
>>> 	mmc: mmc@ff808000 {
>>> 		…
>>> 		altr,sysmgr-syscon = <&sysmgr 0x28 4>;
>>> 		clk-phase-sd-hs = <0>, <135>;
>>> 		…
>>> 	};
>>> 	gmac0: ethernet@ff800000 {
>>> 		…
>>> 		altr,sysmgr-syscon = <&sysmgr 0x44 0>;
>>> 		…
>>> 	};
>>>
>>>
>>> Even the sdmmc driver you mentioned is using "drivers/mfd/altera-sysmgr.c"
>>> not the generic "syscon" drivers/mfd/syscon.c. Same thing for ethernet
>>> driver as well.
>>>
>>> dw_mci_socfpga_priv_init()  {
>>> 	...
>>> 	rc = of_property_read_variable_u32_array(np, "clk-phase-sd-hs",
>> &clk_phase[0], 2, 0);
>>> 	if (rc < 0)
>>> 		return 0;
>>>
>>> 	sys_mgr_base_addr = altr_sysmgr_regmap_lookup_by_phandle(np,
>> "altr,sysmgr-syscon");
>>> 	if (IS_ERR(sys_mgr_base_addr)) {
>>> 		dev_warn(host->dev, "clk-phase-sd-hs was specified, but failed
>> to find altr,sys-mgr regmap!\n");
>>> 		return 0;
>>> 	}
>>>
>>> 	of_property_read_u32_index(np, "altr,sysmgr-syscon", 1, &reg_offset);
>>> 	of_property_read_u32_index(np, "altr,sysmgr-syscon", 2, &reg_shift);
>>> 	...
>>> }
>>>
>>> Please let me know if my understanding is incorrect.
>>>
>>
>> But the altera-sysmgr driver is using syscon as the interface:
>>
>> config MFD_ALTERA_SYSMGR
>>           bool "Altera SOCFPGA System Manager"
>>           depends on ARCH_INTEL_SOCFPGA && OF
>>           select MFD_SYSCON
>>
>> Can you look at your bootlog and see if you see this message ""clk-phase-sd-hs
>> was specified, but failed to find altr,sys-mgr regmap!"?
>>
> 
> No, I do not see this error/warning in boot log.
> " clk-phase-sd-hs was specified, but failed to find altr,sys-mgr regmap!"
> 
> Also I did test by manually changing the clock phase register value in u-boot,
> and then boot Linux without "syscon" compatible, and I do not see any error or
> warning and sdmmc and ethernet drivers are working fine.
> 
> => md.l 0xffd06028 1
> ffd06028: 00000003                             ....
> => mw.l 0xffd06028 0x0
> 

Can you try an image that removes MFD_SYSCON from the MFD_ALTERA_SYSMGR?


  reply	other threads:[~2025-02-11 12:57 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-17 15:42 [PATCH] ARM: dts: socfpga: remove syscon compatible string for sysmgr node niravkumar.l.rabara
2025-02-10 22:29 ` Dinh Nguyen
2025-02-11  0:06   ` Dinh Nguyen
2025-02-11  3:18     ` Rabara, Niravkumar L
2025-02-11  4:14       ` Dinh Nguyen
2025-02-11 12:18         ` Rabara, Niravkumar L
2025-02-11 12:24           ` Dinh Nguyen
2025-02-11 12:37             ` Rabara, Niravkumar L
2025-02-11 12:57               ` Dinh Nguyen [this message]
2025-02-11 13:48                 ` Rabara, Niravkumar L
2025-02-14 13:01                   ` Dinh Nguyen

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=9fea34ee-3dbc-4166-ba7a-a5f4d1551e3d@kernel.org \
    --to=dinguyen@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=niravkumar.l.rabara@intel.com \
    --cc=robh@kernel.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