[PATCH v5 07/16] Documentation: DT: MIPS: lantiq: Add docs for the RCU bindings

Hauke Mehrtens hauke at hauke-m.de
Thu Jun 29 13:27:19 PDT 2017


On 06/24/2017 12:12 AM, Rob Herring wrote:
> On Wed, Jun 21, 2017 at 12:37:34AM +0200, Hauke Mehrtens wrote:
>> From: Martin Blumenstingl <martin.blumenstingl at googlemail.com>
>>
>> This adds the initial documentation for the RCU module (a MFD device
>> which provides USB PHYs, reset controllers and more).
>>
>> The RCU register range is used for multiple purposes. Mostly one device
>> uses one or multiple register exclusively, but for some registers some
>> bits are for one driver and some other bits are for a different driver.
>> With this patch all accesses to the RCU registers will go through
>> syscon.
>>
>> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>> ---
>>  .../devicetree/bindings/mips/lantiq/rcu.txt        | 95 ++++++++++++++++++++++
>>  1 file changed, 95 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/mips/lantiq/rcu.txt
>>
>> diff --git a/Documentation/devicetree/bindings/mips/lantiq/rcu.txt b/Documentation/devicetree/bindings/mips/lantiq/rcu.txt
>> new file mode 100644
>> index 000000000000..9c875f4f3c90
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mips/lantiq/rcu.txt
>> @@ -0,0 +1,95 @@
>> +Lantiq XWAY SoC RCU binding
>> +===========================
>> +
>> +This binding describes the RCU (reset controller unit) multifunction device,
>> +where each sub-device has it's own set of registers.
>> +
>> +The RCU register range is used for multiple purposes. Mostly one device
>> +uses one or multiple register exclusively, but for some registers some
>> +bits are for one driver and some other bits are for a different driver.
>> +With this patch all accesses to the RCU registers will go through
>> +syscon.
>> +
>> +
>> +-------------------------------------------------------------------------------
>> +Required properties:
>> +- compatible	: The first and second values must be:
>> +		  "lantiq,xrx200-rcu", "simple-mfd", "syscon"
>> +- reg		: The address and length of the system control registers
>> +
>> +
>> +-------------------------------------------------------------------------------
>> +Example of the RCU bindings on a xRX200 SoC:
>> +	rcu0: rcu at 203000 {
>> +		compatible = "lantiq,xrx200-rcu", "simple-mfd", "syscon";
>> +		reg = <0x203000 0x100>;
>> +		ranges = <0x0 0x203000 0x100>;
>> +		big-endian;
>> +
>> +		gphy0: gphy at 0 {
> 
> unit address should match reg, so "phy at 20"

done

>> +			compatible = "lantiq,xrx200a2x-gphy";
>> +			reg = <0x20 0x4>;
>> +
>> +			resets = <&reset0 31 30>, <&reset1 7 7>;
>> +			reset-names = "gphy", "gphy2";
>> +			lantiq,gphy-mode = <GPHY_MODE_GE>;
>> +		};
>> +
>> +		gphy1: gphy at 1 {
> 
> phy at 68

done

>> +			compatible = "lantiq,xrx200a2x-gphy";
>> +			reg = <0x68 0x4>;
>> +
>> +			resets = <&reset0 29 28>, <&reset1 6 6>;
>> +			reset-names = "gphy", "gphy2";
>> +			lantiq,gphy-mode = <GPHY_MODE_GE>;
>> +		};
>> +
>> +		reset0: reset-controller at 0 {
> 
> ... at 10

done


>> +			compatible = "lantiq,xrx200-reset";
>> +
>> +			offset-set = <0x10>;
>> +			offset-status = <0x14>;
> 
> reg = <0x10 8>;

done

>> +			#reset-cells = <2>;
>> +		};
>> +
>> +		reset1: reset-controller at 1 {
>> +			compatible = "lantiq,xrx200-reset";
>> +
>> +			offset-set = <0x48>;
>> +			offset-status = <0x24>;
> 
> reg = <0x48 4>, <0x24 4>;

done

>> +			#reset-cells = <2>;
>> +		};
>> +
>> +		usb_phy0: usb2-phy at 0 {
>> +			compatible = "lantiq,xrx200-usb2-phy";
>> +			status = "disabled";
>> +
>> +			regmap = <&rcu0>;
> 
> This should be dropped.

I will get this from the parent device now.

>> +			offset-phy = <0x18>;
>> +			offset-ana = <0x38>;
> 
> Use reg.

There is also one bit used to reset the DSL digital frontend at offset
0x38. This has nothing to do with USB.

>> +			resets = <&reset1 4 4>, <&reset0 4 4>;
>> +			reset-names = "phy", "ctrl";
>> +			#phy-cells = <0>;
>> +		};
>> +
>> +		usb_phy1: usb2-phy at 1 {
>> +			compatible = "lantiq,xrx200-usb2-phy";
>> +			status = "disabled";
>> +
>> +			regmap = <&rcu0>;
> 
> Drop.

done

>> +			offset-phy = <0x34>;
>> +			offset-ana = <0x3C>;
> 
> Use reg.

There is also a bits to configure something with the DSL dying gasp at
offset 0x34. This has nothing to do with USB.

> 
>> +			resets = <&reset1 5 4>, <&reset0 4 4>;
>> +			reset-names = "phy", "ctrl";
>> +			#phy-cells = <0>;
>> +		};
>> +
>> +		reboot {
>> +			compatible = "syscon-reboot";
>> +
>> +			regmap = <&rcu0>;
> 
> Drop.

The syscon-reboot driver uses this code to get the regmap:
ctx->map = syscon_regmap_lookup_by_phandle(dev->of_node, "regmap");
This driver was not added by me.

>> +			offset = <0x10>;
>> +			mask = <0x40000000>;
>> +		};
>> +	};
>> +
>> -- 
>> 2.11.0
>>




More information about the linux-mtd mailing list