[PATCH 2/3] arm64: dts: exynosautov9: add exynosautov9-usi.dtsi

Krzysztof Kozlowski krzysztof.kozlowski at linaro.org
Wed Jun 29 04:09:02 PDT 2022


On 29/06/2022 11:47, Chanho Park wrote:
>> On 29/06/2022 03:56, Chanho Park wrote:
>>> Universal Serial Interface (USI) supports three types of serial
>>> interface such as Universal Asynchronous Receiver and Transmitter
>>> (UART), Serial Peripheral Interface (SPI), and Inter-Integrated Circuit
>> (I2C).
>>> Each protocols can be working independently and configured as one of
>>> those using external configuration inputs.
>>> Exynos Auto v9 SoC support 12 USIs. When a USI uses two pins such as
>>> i2c and 3 wire uarts(RX/TX only), we can use remain two pins as i2c mode.
>>> So, we can define one USI node that includes serial/spi and hsi2c.
>>> usi_i2c nodes can be used only for i2c mode.
>>>
>>> We can have below combinations for one USI.
>>> 1) The usi node is used either 4 pin uart or 4 pin spi  -> No usi_i2c
>>> can be used
>>> 2) The usi node is used 2 pin uart(RX/TX) and i2c(SDA/SCL)  -> usi_i2c
>>> should be enabled to use the latter i2c
>>> 3) The usi node is used i2c(SDA/SCL) and i2c(SDA/SCL)  -> usi_i2c
>>> should be enabled to use the latter i2c
>>>
>>> By default, all USIs are initially set to uart mode by below setting.
>>> samsung,mode = <USI_V2_UART>;
>>> You can change it either USI_V2_SPI or USI_V2_I2C.
>>>
>>> Signed-off-by: Chanho Park <chanho61.park at samsung.com>
>>> ---
>>>  .../boot/dts/exynos/exynosautov9-usi.dtsi     | 1127 +++++++++++++++++
>>>  1 file changed, 1127 insertions(+)
>>>  create mode 100644 arch/arm64/boot/dts/exynos/exynosautov9-usi.dtsi
>>
>> Put all this directly in exynosautov9.dtsi, because this is not a re-
>> usable piece among different DTSI.
> 
> Okay. I'll move them in the exynosautov9.dtsi. I thought they're too long to put in the exynosautov9.dtsi and I also found a similar case such as exynos5433-bus.dtsi and exynos5433-tmu.dtsi.

Indeed we did like that... The tmu maybe was meant to be re-used,
although it references specific clusters. But the split of bus I don't
understand - it does not help.

I don't think it improved readability.

> 
>>
>>>
>>> diff --git a/arch/arm64/boot/dts/exynos/exynosautov9-usi.dtsi
>>> b/arch/arm64/boot/dts/exynos/exynosautov9-usi.dtsi
>>> new file mode 100644
>>> index 000000000000..0e4c6332770b
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/exynos/exynosautov9-usi.dtsi
>>> @@ -0,0 +1,1127 @@
>>> +// SPDX-License-Identifier: GPL-2.0
>>> +/*
>>> + * Samsung's ExynosAutov9 SoC USI device tree source
>>> + *
>>> + * Copyright (c) 2022 Samsung Electronics Co., Ltd.
>>> + *
>>> + * Samsung's ExynosAutov9 SoC USI(Universal Serial Interface,
>>> +uart/spi/i2c)
>>> + * are listed as device tree nodes in this file.
>>> + */
>>> +
>>> +/* PERIC0 USIs */
>>> +&soc {
>>> +	syscon_peric0: syscon at 10220000 {
>>> +		compatible = "samsung,exynosautov9-sysreg", "syscon";
>>> +		reg = <0x10220000 0x2000>;
>>> +	};
>>> +
>>> +	usi_0: usi at 103000c0 {
>>> +		compatible = "samsung,exynos850-usi";
>>
>> We should start adding dedicated compatible, so:
>> "samsung,exynosautov9-usi", "samsung,exynos850-usi"
> 
> So, I need to add the compatible to the Documentation/devicetree/bindings/soc/samsung/exynos-usi.yaml, right?
> 
> - samsung,exynos850-usi   # for USIv2 (Exynos850, ExynosAutoV9)
> 
> To be>
> - samsung,exynos850-usi
> - samsung,exynosautov9-usi


  compatible:

    oneOf:
     - items:
         - const: samsung,exynosautov9-usi
         - const: samsung,exynos850-usi
     - enum:

         - samsung,exynos850-usi   # for USIv2 (Exynos850, ExynosAutoV9)

> 
>>
>>> +		reg = <0x103000c0 0x20>;
>>> +		samsung,sysreg = <&syscon_peric0 0x1000>;
>>> +		samsung,mode = <USI_V2_UART>;
>>> +		#address-cells = <1>;
>>> +		#size-cells = <1>;
>>> +		ranges;
>>> +		clocks = <&cmu_peric0 CLK_GOUT_PERIC0_PCLK_0>,
>>> +			 <&cmu_peric0 CLK_GOUT_PERIC0_IPCLK_0>;
>>> +		clock-names = "pclk", "ipclk";
>>> +		status = "disabled";
>>> +
>>> +		/* USI: UART */
>>
>> Skip the comments, they are obvious from device node name. Long time ago I
>> was not advocating this, but I see it's benefits - much easier to
>> introduce changes to DTS or binding in case of some differences.

Eh, I think my reply got mixed up. The last sentence was about
compatible, so it should be:

We should start adding dedicated compatible, so:
"samsung,exynosautov9-usi", "samsung,exynos850-usi".
Long time ago I was not advocating this, but I see it's benefits - much
easier to introduce changes to DTS or binding in case of some differences.

and here only about the comment.

> I'll drop them.

Yes, please.

> 
>>
>>> +		serial_0: serial at 10300000 {
>>> +			compatible = "samsung,exynos850-uart";
>>
>> Here as well.
> 
> I'll add "samsung,exynosautov9-uart" to the yaml file.
> 
>>

Best regards,
Krzysztof



More information about the linux-arm-kernel mailing list