mbox series

[00/10] ARM/arm64: dts: use proper 'dma-channels/requests' properties

Message ID 20220427155840.596535-1-krzysztof.kozlowski@linaro.org
Headers show
Series ARM/arm64: dts: use proper 'dma-channels/requests' properties | expand

Message

Krzysztof Kozlowski April 27, 2022, 3:58 p.m. UTC
Hi,

Rob reported [1] that many (all?) PL330 device nodes use wrong dma-channels and
dma-requests properties.  The proper ones are without leading '#'.

I guess everything started with 42cf20980cde ("ARM: dts: pl330: Add #dma-cells for
generic dma binding support").

Patches are independent and can be picked-up as is. Otherwise please ack and
I'll push it to SoC.

[1] https://lore.kernel.org/linux-devicetree/fedb56be-f275-aabb-cdf5-dbd394b8a7bd@linaro.org/T/#m6235f451045c337d70a62dc65eab9a716618550b

Best regards,
Krzysztof

Krzysztof Kozlowski (10):
  ARM: dts: zynq-7000: use proper 'dma-channels/requests' properties
  ARM: dts: socfpga: use proper 'dma-channels/requests' properties
  arm64: dts: stratix10/agilex: use proper 'dma-channels/requests'
    properties
  arm64: dts: juno: use proper 'dma-channels/requests' properties
  arm64: dts: broadcom: use proper 'dma-channels/requests' properties
  dt-bindings: mfd: samsung,exynos5433-lpass: fix
    'dma-channels/requests' properties
  ARM: dts: s5pv210: use proper 'dma-channels/requests' properties
  ARM: dts: exynos: use proper 'dma-channels/requests' properties
  arm64: dts: exynos: use proper 'dma-channels/requests' properties
  arm64: dts: fsd: use proper 'dma-channels/requests' properties

 .../mfd/samsung,exynos5433-lpass.yaml         |  4 ++--
 arch/arm/boot/dts/exynos3250.dtsi             |  8 ++++----
 arch/arm/boot/dts/exynos4.dtsi                | 12 +++++------
 .../boot/dts/exynos4210-universal_c210.dts    |  4 ++--
 arch/arm/boot/dts/exynos5250.dtsi             | 16 +++++++--------
 arch/arm/boot/dts/exynos5410.dtsi             |  8 ++++----
 arch/arm/boot/dts/exynos5420.dtsi             | 20 +++++++++----------
 arch/arm/boot/dts/s5pv210.dtsi                | 12 +++++------
 arch/arm/boot/dts/socfpga.dtsi                |  4 ++--
 arch/arm/boot/dts/socfpga_arria10.dtsi        |  4 ++--
 arch/arm/boot/dts/zynq-7000.dtsi              |  4 ++--
 .../boot/dts/altera/socfpga_stratix10.dtsi    |  4 ++--
 arch/arm64/boot/dts/arm/juno-base.dtsi        |  4 ++--
 .../boot/dts/broadcom/northstar2/ns2.dtsi     |  4 ++--
 .../boot/dts/broadcom/stingray/stingray.dtsi  |  4 ++--
 arch/arm64/boot/dts/exynos/exynos5433.dtsi    | 12 +++++------
 arch/arm64/boot/dts/exynos/exynos7.dtsi       |  8 ++++----
 arch/arm64/boot/dts/intel/socfpga_agilex.dtsi |  4 ++--
 arch/arm64/boot/dts/tesla/fsd.dtsi            | 16 +++++++--------
 19 files changed, 76 insertions(+), 76 deletions(-)

Comments

Alim Akhtar April 27, 2022, 4:49 p.m. UTC | #1
>-----Original Message-----
>From: Krzysztof Kozlowski [mailto:krzysztof.kozlowski@linaro.org]
>Sent: Wednesday, April 27, 2022 9:29 PM
>To: Lee Jones <lee.jones@linaro.org>; Rob Herring <robh+dt@kernel.org>;
>Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>; Alim Akhtar
><alim.akhtar@samsung.com>; Dinh Nguyen <dinguyen@kernel.org>; Michal
>Simek <michal.simek@xilinx.com>; Liviu Dudau <liviu.dudau@arm.com>;
>Sudeep Holla <sudeep.holla@arm.com>; Lorenzo Pieralisi
><lorenzo.pieralisi@arm.com>; Ray Jui <rjui@broadcom.com>; Scott Branden
><sbranden@broadcom.com>; Broadcom Kernel Team <bcm-kernel-feedback-
>list@broadcom.com>; Sylwester Nawrocki <s.nawrocki@samsung.com>;
>devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
>samsung-soc@vger.kernel.org; linux-kernel@vger.kernel.org
>Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>; Rob Herring
><robh@kernel.org>
>Subject: [PATCH 10/10] arm64: dts: fsd: use proper 'dma-channels/requests'
>properties
>
>pl330 DMA controller bindings documented 'dma-channels' and 'dma-
>requests' properties (without leading hash sign), so fix the DTS to match
the
>bindings.
>
>Reported-by: Rob Herring <robh@kernel.org>
>Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>---

Acked-by: Alim Akhtar <alim.akhtar@samsung.com>

> arch/arm64/boot/dts/tesla/fsd.dtsi | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
>diff --git a/arch/arm64/boot/dts/tesla/fsd.dtsi
>b/arch/arm64/boot/dts/tesla/fsd.dtsi
>index 10c217a57a7d..7fba37d860b2 100644
>--- a/arch/arm64/boot/dts/tesla/fsd.dtsi
>+++ b/arch/arm64/boot/dts/tesla/fsd.dtsi
>@@ -432,8 +432,8 @@ mdma0: dma-controller@10100000 {
> 			reg = <0x0 0x10100000 0x0 0x1000>;
> 			interrupts = <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>;
> 			#dma-cells = <1>;
>-			#dma-channels = <8>;
>-			#dma-requests = <32>;
>+			dma-channels = <8>;
>+			dma-requests = <32>;
> 			clocks = <&clock_imem
>IMEM_DMA0_IPCLKPORT_ACLK>;
> 			clock-names = "apb_pclk";
> 			iommus = <&smmu_imem 0x800 0x0>;
>@@ -444,8 +444,8 @@ mdma1: dma-controller@10110000 {
> 			reg = <0x0 0x10110000 0x0 0x1000>;
> 			interrupts = <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>;
> 			#dma-cells = <1>;
>-			#dma-channels = <8>;
>-			#dma-requests = <32>;
>+			dma-channels = <8>;
>+			dma-requests = <32>;
> 			clocks = <&clock_imem
>IMEM_DMA1_IPCLKPORT_ACLK>;
> 			clock-names = "apb_pclk";
> 			iommus = <&smmu_imem 0x801 0x0>;
>@@ -456,8 +456,8 @@ pdma0: dma-controller@14280000 {
> 			reg = <0x0 0x14280000 0x0 0x1000>;
> 			interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
> 			#dma-cells = <1>;
>-			#dma-channels = <8>;
>-			#dma-requests = <32>;
>+			dma-channels = <8>;
>+			dma-requests = <32>;
> 			clocks = <&clock_peric
>PERIC_DMA0_IPCLKPORT_ACLK>;
> 			clock-names = "apb_pclk";
> 			iommus = <&smmu_peric 0x2 0x0>;
>@@ -468,8 +468,8 @@ pdma1: dma-controller@14290000 {
> 			reg = <0x0 0x14290000 0x0 0x1000>;
> 			interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
> 			#dma-cells = <1>;
>-			#dma-channels = <8>;
>-			#dma-requests = <32>;
>+			dma-channels = <8>;
>+			dma-requests = <32>;
> 			clocks = <&clock_peric
>PERIC_DMA1_IPCLKPORT_ACLK>;
> 			clock-names = "apb_pclk";
> 			iommus = <&smmu_peric 0x1 0x0>;
>--
>2.32.0
Michal Simek April 28, 2022, 6:24 a.m. UTC | #2
On 4/27/22 17:58, Krzysztof Kozlowski wrote:
> pl330 DMA controller bindings documented 'dma-channels' and
> 'dma-requests' properties (without leading hash sign), so fix the DTS to
> match the bindings.
> 
> Reported-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
>   arch/arm/boot/dts/zynq-7000.dtsi | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/zynq-7000.dtsi b/arch/arm/boot/dts/zynq-7000.dtsi
> index 47c2a4b14c06..40c60a2b6d2c 100644
> --- a/arch/arm/boot/dts/zynq-7000.dtsi
> +++ b/arch/arm/boot/dts/zynq-7000.dtsi
> @@ -343,8 +343,8 @@ dmac_s: dmac@f8003000 {
>   			             <0 40 4>, <0 41 4>,
>   			             <0 42 4>, <0 43 4>;
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <4>;
> +			dma-channels = <8>;
> +			dma-requests = <4>;
>   			clocks = <&clkc 27>;
>   			clock-names = "apb_pclk";
>   		};

Acked-by: Michal Simek <michal.simek@amd.com>

Thanks,
Michal
Marek Szyprowski April 28, 2022, 9:50 a.m. UTC | #3
Hi Krzysztof,

On 27.04.2022 17:58, Krzysztof Kozlowski wrote:
> pl330 DMA controller bindings documented 'dma-channels' and
> 'dma-requests' properties (without leading hash sign), so fix the DTS to
> match the bindings.
>
> Reported-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Are those properties really needed for PL330 driver on Exynos SoCs? I've 
removed them and I still see the proper values read from registers and 
reported in the log (Exynos4210):

dma-pl330 12680000.dma-controller: Loaded driver for PL330 DMAC-141330
dma-pl330 12680000.dma-controller:       DBUFF-32x4bytes Num_Chans-8 
Num_Peri-32 Num_Events-32
dma-pl330 12690000.dma-controller: Loaded driver for PL330 DMAC-141330
dma-pl330 12690000.dma-controller:       DBUFF-32x4bytes Num_Chans-8 
Num_Peri-32 Num_Events-32
dma-pl330 12850000.dma-controller: Loaded driver for PL330 DMAC-141330
dma-pl330 12850000.dma-controller:       DBUFF-64x8bytes Num_Chans-8 
Num_Peri-1 Num_Events-32

I also don't see any code that would read those properties. IMHO they 
should be simply removed at all, at least for the PL330 related nodes.

> ---
>   arch/arm/boot/dts/exynos3250.dtsi             |  8 ++++----
>   arch/arm/boot/dts/exynos4.dtsi                | 12 +++++------
>   .../boot/dts/exynos4210-universal_c210.dts    |  4 ++--
>   arch/arm/boot/dts/exynos5250.dtsi             | 16 +++++++--------
>   arch/arm/boot/dts/exynos5410.dtsi             |  8 ++++----
>   arch/arm/boot/dts/exynos5420.dtsi             | 20 +++++++++----------
>   6 files changed, 34 insertions(+), 34 deletions(-)
>
> diff --git a/arch/arm/boot/dts/exynos3250.dtsi b/arch/arm/boot/dts/exynos3250.dtsi
> index 41bb421e67c2..7bdd4f0782c3 100644
> --- a/arch/arm/boot/dts/exynos3250.dtsi
> +++ b/arch/arm/boot/dts/exynos3250.dtsi
> @@ -429,8 +429,8 @@ pdma0: dma-controller@12680000 {
>   			clocks = <&cmu CLK_PDMA0>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		pdma1: dma-controller@12690000 {
> @@ -440,8 +440,8 @@ pdma1: dma-controller@12690000 {
>   			clocks = <&cmu CLK_PDMA1>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		adc: adc@126c0000 {
> diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
> index 5fd17bc52321..2a244aaf84b4 100644
> --- a/arch/arm/boot/dts/exynos4.dtsi
> +++ b/arch/arm/boot/dts/exynos4.dtsi
> @@ -676,8 +676,8 @@ pdma0: dma-controller@12680000 {
>   			clocks = <&clock CLK_PDMA0>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		pdma1: dma-controller@12690000 {
> @@ -687,8 +687,8 @@ pdma1: dma-controller@12690000 {
>   			clocks = <&clock CLK_PDMA1>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		mdma1: dma-controller@12850000 {
> @@ -698,8 +698,8 @@ mdma1: dma-controller@12850000 {
>   			clocks = <&clock CLK_MDMA>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <1>;
> +			dma-channels = <8>;
> +			dma-requests = <1>;
>   		};
>   
>   		fimd: fimd@11c00000 {
> diff --git a/arch/arm/boot/dts/exynos4210-universal_c210.dts b/arch/arm/boot/dts/exynos4210-universal_c210.dts
> index 138d606d58a5..c1b11704b8ee 100644
> --- a/arch/arm/boot/dts/exynos4210-universal_c210.dts
> +++ b/arch/arm/boot/dts/exynos4210-universal_c210.dts
> @@ -666,8 +666,8 @@ mdma0: dma-controller@12840000 {
>   		clocks = <&clock CLK_MDMA>;
>   		clock-names = "apb_pclk";
>   		#dma-cells = <1>;
> -		#dma-channels = <8>;
> -		#dma-requests = <1>;
> +		dma-channels = <8>;
> +		dma-requests = <1>;
>   		power-domains = <&pd_lcd0>;
>   	};
>   };
> diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
> index df80ddfada2d..c4c0b4c08094 100644
> --- a/arch/arm/boot/dts/exynos5250.dtsi
> +++ b/arch/arm/boot/dts/exynos5250.dtsi
> @@ -700,8 +700,8 @@ pdma0: dma-controller@121a0000 {
>   			clocks = <&clock CLK_PDMA0>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		pdma1: dma-controller@121b0000 {
> @@ -711,8 +711,8 @@ pdma1: dma-controller@121b0000 {
>   			clocks = <&clock CLK_PDMA1>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		mdma0: dma-controller@10800000 {
> @@ -722,8 +722,8 @@ mdma0: dma-controller@10800000 {
>   			clocks = <&clock CLK_MDMA0>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <1>;
> +			dma-channels = <8>;
> +			dma-requests = <1>;
>   		};
>   
>   		mdma1: dma-controller@11c10000 {
> @@ -733,8 +733,8 @@ mdma1: dma-controller@11c10000 {
>   			clocks = <&clock CLK_MDMA1>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <1>;
> +			dma-channels = <8>;
> +			dma-requests = <1>;
>   		};
>   
>   		gsc_0: gsc@13e00000 {
> diff --git a/arch/arm/boot/dts/exynos5410.dtsi b/arch/arm/boot/dts/exynos5410.dtsi
> index 4d797a9abba4..6dc08cb0622c 100644
> --- a/arch/arm/boot/dts/exynos5410.dtsi
> +++ b/arch/arm/boot/dts/exynos5410.dtsi
> @@ -196,8 +196,8 @@ pdma0: dma-controller@121a0000 {
>   			clocks = <&clock CLK_PDMA0>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		pdma1: dma-controller@121b0000 {
> @@ -207,8 +207,8 @@ pdma1: dma-controller@121b0000 {
>   			clocks = <&clock CLK_PDMA1>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		audi2s0: i2s@3830000 {
> diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
> index 21b608705049..08198d82ce8d 100644
> --- a/arch/arm/boot/dts/exynos5420.dtsi
> +++ b/arch/arm/boot/dts/exynos5420.dtsi
> @@ -437,8 +437,8 @@ adma: dma-controller@3880000 {
>   			clocks = <&clock_audss EXYNOS_ADMA>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <6>;
> -			#dma-requests = <16>;
> +			dma-channels = <6>;
> +			dma-requests = <16>;
>   			power-domains = <&mau_pd>;
>   		};
>   
> @@ -449,8 +449,8 @@ pdma0: dma-controller@121a0000 {
>   			clocks = <&clock CLK_PDMA0>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		pdma1: dma-controller@121b0000 {
> @@ -460,8 +460,8 @@ pdma1: dma-controller@121b0000 {
>   			clocks = <&clock CLK_PDMA1>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <32>;
> +			dma-channels = <8>;
> +			dma-requests = <32>;
>   		};
>   
>   		mdma0: dma-controller@10800000 {
> @@ -471,8 +471,8 @@ mdma0: dma-controller@10800000 {
>   			clocks = <&clock CLK_MDMA0>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <1>;
> +			dma-channels = <8>;
> +			dma-requests = <1>;
>   		};
>   
>   		mdma1: dma-controller@11c10000 {
> @@ -482,8 +482,8 @@ mdma1: dma-controller@11c10000 {
>   			clocks = <&clock CLK_MDMA1>;
>   			clock-names = "apb_pclk";
>   			#dma-cells = <1>;
> -			#dma-channels = <8>;
> -			#dma-requests = <1>;
> +			dma-channels = <8>;
> +			dma-requests = <1>;
>   			/*
>   			 * MDMA1 can support both secure and non-secure
>   			 * AXI transactions. When this is enabled in

Best regards
Krzysztof Kozlowski April 28, 2022, 9:54 a.m. UTC | #4
On 28/04/2022 11:50, Marek Szyprowski wrote:
> Hi Krzysztof,
> 
> On 27.04.2022 17:58, Krzysztof Kozlowski wrote:
>> pl330 DMA controller bindings documented 'dma-channels' and
>> 'dma-requests' properties (without leading hash sign), so fix the DTS to
>> match the bindings.
>>
>> Reported-by: Rob Herring <robh@kernel.org>
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> 
> Are those properties really needed for PL330 driver on Exynos SoCs? I've 
> removed them and I still see the proper values read from registers and 
> reported in the log (Exynos4210):
> 
> dma-pl330 12680000.dma-controller: Loaded driver for PL330 DMAC-141330
> dma-pl330 12680000.dma-controller:       DBUFF-32x4bytes Num_Chans-8 
> Num_Peri-32 Num_Events-32
> dma-pl330 12690000.dma-controller: Loaded driver for PL330 DMAC-141330
> dma-pl330 12690000.dma-controller:       DBUFF-32x4bytes Num_Chans-8 
> Num_Peri-32 Num_Events-32
> dma-pl330 12850000.dma-controller: Loaded driver for PL330 DMAC-141330
> dma-pl330 12850000.dma-controller:       DBUFF-64x8bytes Num_Chans-8 
> Num_Peri-1 Num_Events-32
> 
> I also don't see any code that would read those properties. IMHO they 
> should be simply removed at all, at least for the PL330 related nodes.

In current Linux implementation they indeed are not used. Nothing parses
them. However:
1. They describe (hopefully correct) the hardware.
2. They might be used by other implementations of pl330 driver.

I would not remove them from existing sources, but indeed maybe there is
no need to add for new files.

Best regards,
Krzysztof
Alim Akhtar April 28, 2022, 9:55 a.m. UTC | #5
>-----Original Message-----
>From: Marek Szyprowski [mailto:m.szyprowski@samsung.com]
>Sent: Thursday, April 28, 2022 3:20 PM
>To: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>; Lee Jones
><lee.jones@linaro.org>; Rob Herring <robh+dt@kernel.org>; Krzysztof
>Kozlowski <krzysztof.kozlowski+dt@linaro.org>; Alim Akhtar
><alim.akhtar@samsung.com>; Dinh Nguyen <dinguyen@kernel.org>; Michal
>Simek <michal.simek@xilinx.com>; Liviu Dudau <liviu.dudau@arm.com>;
>Sudeep Holla <sudeep.holla@arm.com>; Lorenzo Pieralisi
><lorenzo.pieralisi@arm.com>; Ray Jui <rjui@broadcom.com>; Scott Branden
><sbranden@broadcom.com>; Broadcom Kernel Team <bcm-kernel-feedback-
>list@broadcom.com>; Sylwester Nawrocki <s.nawrocki@samsung.com>;
>devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
>samsung-soc@vger.kernel.org; linux-kernel@vger.kernel.org
>Cc: Rob Herring <robh@kernel.org>
>Subject: Re: [PATCH 08/10] ARM: dts: exynos: use proper 'dma-
>channels/requests' properties
>
>Hi Krzysztof,
>
>On 27.04.2022 17:58, Krzysztof Kozlowski wrote:
>> pl330 DMA controller bindings documented 'dma-channels' and
>> 'dma-requests' properties (without leading hash sign), so fix the DTS
>> to match the bindings.
>>
>> Reported-by: Rob Herring <robh@kernel.org>
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>
>Are those properties really needed for PL330 driver on Exynos SoCs? I've
>removed them and I still see the proper values read from registers and
>reported in the log (Exynos4210):
>
>dma-pl330 12680000.dma-controller: Loaded driver for PL330 DMAC-141330
>dma-pl330 12680000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>Num_Peri-32 Num_Events-32
>dma-pl330 12690000.dma-controller: Loaded driver for PL330 DMAC-141330
>dma-pl330 12690000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>Num_Peri-32 Num_Events-32
>dma-pl330 12850000.dma-controller: Loaded driver for PL330 DMAC-141330
>dma-pl330 12850000.dma-controller:       DBUFF-64x8bytes Num_Chans-8
>Num_Peri-1 Num_Events-32
>
>I also don't see any code that would read those properties. IMHO they should
>be simply removed at all, at least for the PL330 related nodes.
>
I thought these series is correcting the DMA binding error, however is DMA binding itself is broken then probably this need a relook. 

>> ---
>>   arch/arm/boot/dts/exynos3250.dtsi             |  8 ++++----
>>   arch/arm/boot/dts/exynos4.dtsi                | 12 +++++------
>>   .../boot/dts/exynos4210-universal_c210.dts    |  4 ++--
>>   arch/arm/boot/dts/exynos5250.dtsi             | 16 +++++++--------
>>   arch/arm/boot/dts/exynos5410.dtsi             |  8 ++++----
>>   arch/arm/boot/dts/exynos5420.dtsi             | 20 +++++++++----------
>>   6 files changed, 34 insertions(+), 34 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/exynos3250.dtsi
>> b/arch/arm/boot/dts/exynos3250.dtsi
>> index 41bb421e67c2..7bdd4f0782c3 100644
>> --- a/arch/arm/boot/dts/exynos3250.dtsi
>> +++ b/arch/arm/boot/dts/exynos3250.dtsi
>> @@ -429,8 +429,8 @@ pdma0: dma-controller@12680000 {
>>   			clocks = <&cmu CLK_PDMA0>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		pdma1: dma-controller@12690000 {
>> @@ -440,8 +440,8 @@ pdma1: dma-controller@12690000 {
>>   			clocks = <&cmu CLK_PDMA1>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		adc: adc@126c0000 {
>> diff --git a/arch/arm/boot/dts/exynos4.dtsi
>> b/arch/arm/boot/dts/exynos4.dtsi index 5fd17bc52321..2a244aaf84b4
>> 100644
>> --- a/arch/arm/boot/dts/exynos4.dtsi
>> +++ b/arch/arm/boot/dts/exynos4.dtsi
>> @@ -676,8 +676,8 @@ pdma0: dma-controller@12680000 {
>>   			clocks = <&clock CLK_PDMA0>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		pdma1: dma-controller@12690000 {
>> @@ -687,8 +687,8 @@ pdma1: dma-controller@12690000 {
>>   			clocks = <&clock CLK_PDMA1>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		mdma1: dma-controller@12850000 {
>> @@ -698,8 +698,8 @@ mdma1: dma-controller@12850000 {
>>   			clocks = <&clock CLK_MDMA>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <1>;
>> +			dma-channels = <8>;
>> +			dma-requests = <1>;
>>   		};
>>
>>   		fimd: fimd@11c00000 {
>> diff --git a/arch/arm/boot/dts/exynos4210-universal_c210.dts
>> b/arch/arm/boot/dts/exynos4210-universal_c210.dts
>> index 138d606d58a5..c1b11704b8ee 100644
>> --- a/arch/arm/boot/dts/exynos4210-universal_c210.dts
>> +++ b/arch/arm/boot/dts/exynos4210-universal_c210.dts
>> @@ -666,8 +666,8 @@ mdma0: dma-controller@12840000 {
>>   		clocks = <&clock CLK_MDMA>;
>>   		clock-names = "apb_pclk";
>>   		#dma-cells = <1>;
>> -		#dma-channels = <8>;
>> -		#dma-requests = <1>;
>> +		dma-channels = <8>;
>> +		dma-requests = <1>;
>>   		power-domains = <&pd_lcd0>;
>>   	};
>>   };
>> diff --git a/arch/arm/boot/dts/exynos5250.dtsi
>> b/arch/arm/boot/dts/exynos5250.dtsi
>> index df80ddfada2d..c4c0b4c08094 100644
>> --- a/arch/arm/boot/dts/exynos5250.dtsi
>> +++ b/arch/arm/boot/dts/exynos5250.dtsi
>> @@ -700,8 +700,8 @@ pdma0: dma-controller@121a0000 {
>>   			clocks = <&clock CLK_PDMA0>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		pdma1: dma-controller@121b0000 {
>> @@ -711,8 +711,8 @@ pdma1: dma-controller@121b0000 {
>>   			clocks = <&clock CLK_PDMA1>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		mdma0: dma-controller@10800000 {
>> @@ -722,8 +722,8 @@ mdma0: dma-controller@10800000 {
>>   			clocks = <&clock CLK_MDMA0>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <1>;
>> +			dma-channels = <8>;
>> +			dma-requests = <1>;
>>   		};
>>
>>   		mdma1: dma-controller@11c10000 {
>> @@ -733,8 +733,8 @@ mdma1: dma-controller@11c10000 {
>>   			clocks = <&clock CLK_MDMA1>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <1>;
>> +			dma-channels = <8>;
>> +			dma-requests = <1>;
>>   		};
>>
>>   		gsc_0: gsc@13e00000 {
>> diff --git a/arch/arm/boot/dts/exynos5410.dtsi
>> b/arch/arm/boot/dts/exynos5410.dtsi
>> index 4d797a9abba4..6dc08cb0622c 100644
>> --- a/arch/arm/boot/dts/exynos5410.dtsi
>> +++ b/arch/arm/boot/dts/exynos5410.dtsi
>> @@ -196,8 +196,8 @@ pdma0: dma-controller@121a0000 {
>>   			clocks = <&clock CLK_PDMA0>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		pdma1: dma-controller@121b0000 {
>> @@ -207,8 +207,8 @@ pdma1: dma-controller@121b0000 {
>>   			clocks = <&clock CLK_PDMA1>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		audi2s0: i2s@3830000 {
>> diff --git a/arch/arm/boot/dts/exynos5420.dtsi
>> b/arch/arm/boot/dts/exynos5420.dtsi
>> index 21b608705049..08198d82ce8d 100644
>> --- a/arch/arm/boot/dts/exynos5420.dtsi
>> +++ b/arch/arm/boot/dts/exynos5420.dtsi
>> @@ -437,8 +437,8 @@ adma: dma-controller@3880000 {
>>   			clocks = <&clock_audss EXYNOS_ADMA>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <6>;
>> -			#dma-requests = <16>;
>> +			dma-channels = <6>;
>> +			dma-requests = <16>;
>>   			power-domains = <&mau_pd>;
>>   		};
>>
>> @@ -449,8 +449,8 @@ pdma0: dma-controller@121a0000 {
>>   			clocks = <&clock CLK_PDMA0>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		pdma1: dma-controller@121b0000 {
>> @@ -460,8 +460,8 @@ pdma1: dma-controller@121b0000 {
>>   			clocks = <&clock CLK_PDMA1>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <32>;
>> +			dma-channels = <8>;
>> +			dma-requests = <32>;
>>   		};
>>
>>   		mdma0: dma-controller@10800000 {
>> @@ -471,8 +471,8 @@ mdma0: dma-controller@10800000 {
>>   			clocks = <&clock CLK_MDMA0>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <1>;
>> +			dma-channels = <8>;
>> +			dma-requests = <1>;
>>   		};
>>
>>   		mdma1: dma-controller@11c10000 {
>> @@ -482,8 +482,8 @@ mdma1: dma-controller@11c10000 {
>>   			clocks = <&clock CLK_MDMA1>;
>>   			clock-names = "apb_pclk";
>>   			#dma-cells = <1>;
>> -			#dma-channels = <8>;
>> -			#dma-requests = <1>;
>> +			dma-channels = <8>;
>> +			dma-requests = <1>;
>>   			/*
>>   			 * MDMA1 can support both secure and non-secure
>>   			 * AXI transactions. When this is enabled in
>
>Best regards
>--
>Marek Szyprowski, PhD
>Samsung R&D Institute Poland
Marek Szyprowski April 28, 2022, 9:57 a.m. UTC | #6
On 28.04.2022 11:54, Krzysztof Kozlowski wrote:
> On 28/04/2022 11:50, Marek Szyprowski wrote:
>> On 27.04.2022 17:58, Krzysztof Kozlowski wrote:
>>> pl330 DMA controller bindings documented 'dma-channels' and
>>> 'dma-requests' properties (without leading hash sign), so fix the DTS to
>>> match the bindings.
>>>
>>> Reported-by: Rob Herring <robh@kernel.org>
>>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>> Are those properties really needed for PL330 driver on Exynos SoCs? I've
>> removed them and I still see the proper values read from registers and
>> reported in the log (Exynos4210):
>>
>> dma-pl330 12680000.dma-controller: Loaded driver for PL330 DMAC-141330
>> dma-pl330 12680000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>> Num_Peri-32 Num_Events-32
>> dma-pl330 12690000.dma-controller: Loaded driver for PL330 DMAC-141330
>> dma-pl330 12690000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>> Num_Peri-32 Num_Events-32
>> dma-pl330 12850000.dma-controller: Loaded driver for PL330 DMAC-141330
>> dma-pl330 12850000.dma-controller:       DBUFF-64x8bytes Num_Chans-8
>> Num_Peri-1 Num_Events-32
>>
>> I also don't see any code that would read those properties. IMHO they
>> should be simply removed at all, at least for the PL330 related nodes.
> In current Linux implementation they indeed are not used. Nothing parses
> them. However:
> 1. They describe (hopefully correct) the hardware.
> 2. They might be used by other implementations of pl330 driver.
>
> I would not remove them from existing sources, but indeed maybe there is
> no need to add for new files.

What's the point in having dt properties duplicating data that might be 
read from the driver registers?


Best regards
Krzysztof Kozlowski April 28, 2022, 10 a.m. UTC | #7
On 28/04/2022 11:57, Marek Szyprowski wrote:
> On 28.04.2022 11:54, Krzysztof Kozlowski wrote:
>> On 28/04/2022 11:50, Marek Szyprowski wrote:
>>> On 27.04.2022 17:58, Krzysztof Kozlowski wrote:
>>>> pl330 DMA controller bindings documented 'dma-channels' and
>>>> 'dma-requests' properties (without leading hash sign), so fix the DTS to
>>>> match the bindings.
>>>>
>>>> Reported-by: Rob Herring <robh@kernel.org>
>>>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>>> Are those properties really needed for PL330 driver on Exynos SoCs? I've
>>> removed them and I still see the proper values read from registers and
>>> reported in the log (Exynos4210):
>>>
>>> dma-pl330 12680000.dma-controller: Loaded driver for PL330 DMAC-141330
>>> dma-pl330 12680000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>>> Num_Peri-32 Num_Events-32
>>> dma-pl330 12690000.dma-controller: Loaded driver for PL330 DMAC-141330
>>> dma-pl330 12690000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>>> Num_Peri-32 Num_Events-32
>>> dma-pl330 12850000.dma-controller: Loaded driver for PL330 DMAC-141330
>>> dma-pl330 12850000.dma-controller:       DBUFF-64x8bytes Num_Chans-8
>>> Num_Peri-1 Num_Events-32
>>>
>>> I also don't see any code that would read those properties. IMHO they
>>> should be simply removed at all, at least for the PL330 related nodes.
>> In current Linux implementation they indeed are not used. Nothing parses
>> them. However:
>> 1. They describe (hopefully correct) the hardware.
>> 2. They might be used by other implementations of pl330 driver.
>>
>> I would not remove them from existing sources, but indeed maybe there is
>> no need to add for new files.
> 
> What's the point in having dt properties duplicating data that might be 
> read from the driver registers?

Hm, indeed, there is no point in this. Since they are read from
registers, what was the idea behind in commit 42cf20980cde?

Best regards,
Krzysztof
Marek Szyprowski April 28, 2022, 10:05 a.m. UTC | #8
On 28.04.2022 12:00, Krzysztof Kozlowski wrote:
> On 28/04/2022 11:57, Marek Szyprowski wrote:
>> On 28.04.2022 11:54, Krzysztof Kozlowski wrote:
>>> On 28/04/2022 11:50, Marek Szyprowski wrote:
>>>> On 27.04.2022 17:58, Krzysztof Kozlowski wrote:
>>>>> pl330 DMA controller bindings documented 'dma-channels' and
>>>>> 'dma-requests' properties (without leading hash sign), so fix the DTS to
>>>>> match the bindings.
>>>>>
>>>>> Reported-by: Rob Herring <robh@kernel.org>
>>>>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>>>> Are those properties really needed for PL330 driver on Exynos SoCs? I've
>>>> removed them and I still see the proper values read from registers and
>>>> reported in the log (Exynos4210):
>>>>
>>>> dma-pl330 12680000.dma-controller: Loaded driver for PL330 DMAC-141330
>>>> dma-pl330 12680000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>>>> Num_Peri-32 Num_Events-32
>>>> dma-pl330 12690000.dma-controller: Loaded driver for PL330 DMAC-141330
>>>> dma-pl330 12690000.dma-controller:       DBUFF-32x4bytes Num_Chans-8
>>>> Num_Peri-32 Num_Events-32
>>>> dma-pl330 12850000.dma-controller: Loaded driver for PL330 DMAC-141330
>>>> dma-pl330 12850000.dma-controller:       DBUFF-64x8bytes Num_Chans-8
>>>> Num_Peri-1 Num_Events-32
>>>>
>>>> I also don't see any code that would read those properties. IMHO they
>>>> should be simply removed at all, at least for the PL330 related nodes.
>>> In current Linux implementation they indeed are not used. Nothing parses
>>> them. However:
>>> 1. They describe (hopefully correct) the hardware.
>>> 2. They might be used by other implementations of pl330 driver.
>>>
>>> I would not remove them from existing sources, but indeed maybe there is
>>> no need to add for new files.
>> What's the point in having dt properties duplicating data that might be
>> read from the driver registers?
> Hm, indeed, there is no point in this. Since they are read from
> registers, what was the idea behind in commit 42cf20980cde?

#dma-cells is indeed required, but the rest seems to be the cargo-cult 
of some kind.


Best regards
Krzysztof Kozlowski April 28, 2022, 10:09 a.m. UTC | #9
On 28/04/2022 12:05, Marek Szyprowski wrote:
>>>>> I also don't see any code that would read those properties. IMHO they
>>>>> should be simply removed at all, at least for the PL330 related nodes.
>>>> In current Linux implementation they indeed are not used. Nothing parses
>>>> them. However:
>>>> 1. They describe (hopefully correct) the hardware.
>>>> 2. They might be used by other implementations of pl330 driver.
>>>>
>>>> I would not remove them from existing sources, but indeed maybe there is
>>>> no need to add for new files.
>>> What's the point in having dt properties duplicating data that might be
>>> read from the driver registers?
>> Hm, indeed, there is no point in this. Since they are read from
>> registers, what was the idea behind in commit 42cf20980cde?
> 
> #dma-cells is indeed required, but the rest seems to be the cargo-cult 
> of some kind.

Rob,

Any guidance from your side? Is there any benefit in describing the
hadrware (dma-channels/dma-requests) if the same value can be read from
registers?


Best regards,
Krzysztof
Robin Murphy April 28, 2022, 10:43 a.m. UTC | #10
On 2022-04-27 16:58, Krzysztof Kozlowski wrote:
> pl330 DMA controller bindings documented 'dma-channels' and
> 'dma-requests' properties (without leading hash sign), so fix the DTS to
> match the bindings.
> 
> Reported-by: Rob Herring <robh@kernel.org>
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> ---
>   arch/arm64/boot/dts/arm/juno-base.dtsi | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi
> index 4f40a5c8f565..96ef0ddc0b2d 100644
> --- a/arch/arm64/boot/dts/arm/juno-base.dtsi
> +++ b/arch/arm64/boot/dts/arm/juno-base.dtsi
> @@ -829,8 +829,8 @@ dma-controller@7ff00000 {
>   		compatible = "arm,pl330", "arm,primecell";
>   		reg = <0x0 0x7ff00000 0 0x1000>;
>   		#dma-cells = <1>;
> -		#dma-channels = <8>;
> -		#dma-requests = <32>;
> +		dma-channels = <8>;
> +		dma-requests = <32>;

BTW, this has always been wrong - Juno is configured with only 8 request 
interfaces. But then it's moot anyway since PL330 has an ID register for 
this stuff[1], so the DT properties aren't used by Linux, and shouldn't 
be needed in general.

Thanks,
Robin.

[1] 
https://developer.arm.com/documentation/ddi0424/d/programmers-model/register-descriptions/configuration-register-0?lang=en

>   		interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
>   			     <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
>   			     <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
Krzysztof Kozlowski April 28, 2022, 10:45 a.m. UTC | #11
On 28/04/2022 12:43, Robin Murphy wrote:
> On 2022-04-27 16:58, Krzysztof Kozlowski wrote:
>> pl330 DMA controller bindings documented 'dma-channels' and
>> 'dma-requests' properties (without leading hash sign), so fix the DTS to
>> match the bindings.
>>
>> Reported-by: Rob Herring <robh@kernel.org>
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>> ---
>>   arch/arm64/boot/dts/arm/juno-base.dtsi | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi
>> index 4f40a5c8f565..96ef0ddc0b2d 100644
>> --- a/arch/arm64/boot/dts/arm/juno-base.dtsi
>> +++ b/arch/arm64/boot/dts/arm/juno-base.dtsi
>> @@ -829,8 +829,8 @@ dma-controller@7ff00000 {
>>   		compatible = "arm,pl330", "arm,primecell";
>>   		reg = <0x0 0x7ff00000 0 0x1000>;
>>   		#dma-cells = <1>;
>> -		#dma-channels = <8>;
>> -		#dma-requests = <32>;
>> +		dma-channels = <8>;
>> +		dma-requests = <32>;
> 
> BTW, this has always been wrong - Juno is configured with only 8 request 
> interfaces. But then it's moot anyway since PL330 has an ID register for 
> this stuff[1], so the DT properties aren't used by Linux, and shouldn't 
> be needed in general.

Marek also raised the point [1] that these properties are useless for
PL330 because the actual data is read from the device registers.

I understand you are also supporting the idea of removing them from
pl330 device nodes?

[1]
https://lore.kernel.org/linux-devicetree/20220427155840.596535-1-krzysztof.kozlowski@linaro.org/T/#mf108b8c9f0d513ebc6e381775e3c6887b5c2fe31

Best regards,
Krzysztof
Rob Herring (Arm) April 28, 2022, 1:33 p.m. UTC | #12
On Thu, Apr 28, 2022 at 12:09:02PM +0200, Krzysztof Kozlowski wrote:
> On 28/04/2022 12:05, Marek Szyprowski wrote:
> >>>>> I also don't see any code that would read those properties. IMHO they
> >>>>> should be simply removed at all, at least for the PL330 related nodes.
> >>>> In current Linux implementation they indeed are not used. Nothing parses
> >>>> them. However:
> >>>> 1. They describe (hopefully correct) the hardware.
> >>>> 2. They might be used by other implementations of pl330 driver.
> >>>>
> >>>> I would not remove them from existing sources, but indeed maybe there is
> >>>> no need to add for new files.
> >>> What's the point in having dt properties duplicating data that might be
> >>> read from the driver registers?
> >> Hm, indeed, there is no point in this. Since they are read from
> >> registers, what was the idea behind in commit 42cf20980cde?
> > 
> > #dma-cells is indeed required, but the rest seems to be the cargo-cult 
> > of some kind.
> 
> Rob,
> 
> Any guidance from your side? Is there any benefit in describing the
> hadrware (dma-channels/dma-requests) if the same value can be read from
> registers?

Drop the properties. They should only be an override if ever needed.

Rob