diff mbox

[v5,1/4] dt-bindings: power: reset: add document for reboot-mode driver

Message ID 1457439785-8133-1-git-send-email-andy.yan@rock-chips.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andy Yan March 8, 2016, 12:23 p.m. UTC
add device tree bindings document for reboot-mode driver

Signed-off-by: Andy Yan <andy.yan@rock-chips.com>

---

Changes in v5:
- delete a unnecessary blank line in syscon-reboot-mode.txt
- rename macro BOOT_LOADER to BOOT_BL_DOWNLOAD, which gives a more clear mean

Changes in v4:
- remove mode-maskrom
- rename mode-fastboot to mode-bootloader to keep compatible with the exiting Android device

Changes in v3:
- descirbe all reboot mode as properity instead of subnode

Changes in v2: None
Changes in v1: None

 .../bindings/power/reset/reboot-mode.txt           | 24 +++++++++++++++
 .../bindings/power/reset/syscon-reboot-mode.txt    | 34 ++++++++++++++++++++++
 2 files changed, 58 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/power/reset/reboot-mode.txt
 create mode 100644 Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt

Comments

Rob Herring March 17, 2016, 3:52 p.m. UTC | #1
On Tue, Mar 08, 2016 at 08:23:05PM +0800, Andy Yan wrote:
> add device tree bindings document for reboot-mode driver
> 
> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
> 
> ---
> 
> Changes in v5:
> - delete a unnecessary blank line in syscon-reboot-mode.txt
> - rename macro BOOT_LOADER to BOOT_BL_DOWNLOAD, which gives a more clear mean
> 
> Changes in v4:
> - remove mode-maskrom
> - rename mode-fastboot to mode-bootloader to keep compatible with the exiting Android device
> 
> Changes in v3:
> - descirbe all reboot mode as properity instead of subnode
> 
> Changes in v2: None
> Changes in v1: None
> 
>  .../bindings/power/reset/reboot-mode.txt           | 24 +++++++++++++++
>  .../bindings/power/reset/syscon-reboot-mode.txt    | 34 ++++++++++++++++++++++
>  2 files changed, 58 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power/reset/reboot-mode.txt
>  create mode 100644 Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
> 
> diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.txt b/Documentation/devicetree/bindings/power/reset/reboot-mode.txt
> new file mode 100644
> index 0000000..3457949
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.txt
> @@ -0,0 +1,24 @@
> +Generic reboot mode core map driver
> +
> +This driver get reboot mode arguments and call the write
> +interface to stores the magic value in special register
> +or ram . Then the bootloader can read it and take different
> +action according the argument stored.
> +
> +All mode properties are vendor specific, it is a indication to tell
> +the bootloder what to do when the system reboot, and should be named
> +as mode-xxx = <magic> (xxx is mode name).
> +
> +- mode-normal: Normal reboot mode, system reboot with command "reboot".
> +- mode-recovery: Android Recovery mode, it is a mode to format the device or update a new image.
> +- mode-bootloader: Android fastboot mode, it's a mode to re-flash partitions on the Android based device.
> +- mode-loader: A bootloader mode, it's a mode used to download image on Rockchip platform,
> +	       usually used in development.
> +
> +Example:
> +	reboot-mode {
> +		mode-normal = <BOOT_NORMAL>;
> +		mode-recovery = <BOOT_RECOVERY>;
> +		mode-bootloader = <BOOT_FASTBOOT>;
> +		mode-loader = <BOOT_BL_DOWNLOAD>;
> +	}
> diff --git a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
> new file mode 100644
> index 0000000..d03cb52
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
> @@ -0,0 +1,34 @@
> +SYSCON reboot mode driver
> +
> +This driver get reboot mode magic value form reboot-mode driver
> +and stores it in a SYSCON mapped register. Then the bootloader
> +can read it and take different action according to the magic
> +value stored.
> +
> +This DT node should be represented as a sub-node of a "syscon", "simple-mfd"
> +node.
> +
> +Required properties:
> +- compatible: should be "syscon-reboot-mode"
> +- offset: offset in the register map for the storage register (in bytes)
> +
> +Optional properity:
> +- mask: the mask bits of the mode magic value, default set to 0xffffffff if missing.

I can't see how this is used. I would drop it for now.

With that change:

Acked-by: Rob Herring <robh@kernel.org>

> +
> +The rest of the properties should follow the generic reboot-mode discription
> +found in reboot-mode.txt
> +
> +Example:
> +	pmu: pmu@20004000 {
> +		compatible = "rockchip,rk3066-pmu", "syscon", "simple-mfd";
> +		reg = <0x20004000 0x100>;
> +
> +		reboot-mode {
> +			compatible = "syscon-reboot-mode";
> +			offset = <0x40>;
> +			mode-normal = <BOOT_NORMAL>;
> +			mode-recovery = <BOOT_RECOVERY>;
> +			mode-bootloader = <BOOT_FASTBOOT>;
> +			mode-loader = <BOOT_BL_DOWNLOAD>;
> +		};
> +	};
> -- 
> 1.9.1
> 
> 
>
Andy Yan March 18, 2016, 8:43 a.m. UTC | #2
Hi Rob:


On 2016?03?17? 23:52, Rob Herring wrote:
> On Tue, Mar 08, 2016 at 08:23:05PM +0800, Andy Yan wrote:
>> add device tree bindings document for reboot-mode driver
>>
>> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
>>
>> ---
>>
>> Changes in v5:
>> - delete a unnecessary blank line in syscon-reboot-mode.txt
>> - rename macro BOOT_LOADER to BOOT_BL_DOWNLOAD, which gives a more clear mean
>>
>> Changes in v4:
>> - remove mode-maskrom
>> - rename mode-fastboot to mode-bootloader to keep compatible with the exiting Android device
>>
>> Changes in v3:
>> - descirbe all reboot mode as properity instead of subnode
>>
>> Changes in v2: None
>> Changes in v1: None
>>
>>   .../bindings/power/reset/reboot-mode.txt           | 24 +++++++++++++++
>>   .../bindings/power/reset/syscon-reboot-mode.txt    | 34 ++++++++++++++++++++++
>>   2 files changed, 58 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/power/reset/reboot-mode.txt
>>   create mode 100644 Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
>>
>> diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.txt b/Documentation/devicetree/bindings/power/reset/reboot-mode.txt
>> new file mode 100644
>> index 0000000..3457949
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.txt
>> @@ -0,0 +1,24 @@
>> +Generic reboot mode core map driver
>> +
>> +This driver get reboot mode arguments and call the write
>> +interface to stores the magic value in special register
>> +or ram . Then the bootloader can read it and take different
>> +action according the argument stored.
>> +
>> +All mode properties are vendor specific, it is a indication to tell
>> +the bootloder what to do when the system reboot, and should be named
>> +as mode-xxx = <magic> (xxx is mode name).
>> +
>> +- mode-normal: Normal reboot mode, system reboot with command "reboot".
>> +- mode-recovery: Android Recovery mode, it is a mode to format the device or update a new image.
>> +- mode-bootloader: Android fastboot mode, it's a mode to re-flash partitions on the Android based device.
>> +- mode-loader: A bootloader mode, it's a mode used to download image on Rockchip platform,
>> +	       usually used in development.
>> +
>> +Example:
>> +	reboot-mode {
>> +		mode-normal = <BOOT_NORMAL>;
>> +		mode-recovery = <BOOT_RECOVERY>;
>> +		mode-bootloader = <BOOT_FASTBOOT>;
>> +		mode-loader = <BOOT_BL_DOWNLOAD>;
>> +	}
>> diff --git a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
>> new file mode 100644
>> index 0000000..d03cb52
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
>> @@ -0,0 +1,34 @@
>> +SYSCON reboot mode driver
>> +
>> +This driver get reboot mode magic value form reboot-mode driver
>> +and stores it in a SYSCON mapped register. Then the bootloader
>> +can read it and take different action according to the magic
>> +value stored.
>> +
>> +This DT node should be represented as a sub-node of a "syscon", "simple-mfd"
>> +node.
>> +
>> +Required properties:
>> +- compatible: should be "syscon-reboot-mode"
>> +- offset: offset in the register map for the storage register (in bytes)
>> +
>> +Optional properity:
>> +- mask: the mask bits of the mode magic value, default set to 0xffffffff if missing.
> I can't see how this is used. I would drop it for now.
>
> With that change:
>
> Acked-by: Rob Herring <robh@kernel.org>

The mask is suggested by Moritz Fischer in V2[0]. And I found Tegra did 
indeed only use some bits of one register to store the reboot mode[1].

@Heiko: It seems that this patch series can land now, but the dts parts 
belong to  two different branch(arm32 and arm64) . And these
two parts both depends on one head file rockchip_boot-mode.h, So I hope 
some suggestions from you how to deal with it.

    [0] https://lkml.org/lkml/2016/1/27/225
    [1] drivers/soc/tegra/pmc.c  (tegra_pmc_restart_notify)
>> +
>> +The rest of the properties should follow the generic reboot-mode discription
>> +found in reboot-mode.txt
>> +
>> +Example:
>> +	pmu: pmu@20004000 {
>> +		compatible = "rockchip,rk3066-pmu", "syscon", "simple-mfd";
>> +		reg = <0x20004000 0x100>;
>> +
>> +		reboot-mode {
>> +			compatible = "syscon-reboot-mode";
>> +			offset = <0x40>;
>> +			mode-normal = <BOOT_NORMAL>;
>> +			mode-recovery = <BOOT_RECOVERY>;
>> +			mode-bootloader = <BOOT_FASTBOOT>;
>> +			mode-loader = <BOOT_BL_DOWNLOAD>;
>> +		};
>> +	};
>> -- 
>> 1.9.1
>>
>>
>>
>
>
Heiko Stübner March 18, 2016, 9:07 a.m. UTC | #3
Hi Andy,

Am Freitag, 18. März 2016, 16:43:29 schrieb Andy Yan:
> On 2016?03?17? 23:52, Rob Herring wrote:
> > On Tue, Mar 08, 2016 at 08:23:05PM +0800, Andy Yan wrote:
> >> add device tree bindings document for reboot-mode driver
> >> 
> >> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>

[...]

> >> diff --git
> >> a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
> >> b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
> >> new file mode 100644
> >> index 0000000..d03cb52
> >> --- /dev/null
> >> +++
> >> b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
> >> @@ -0,0 +1,34 @@
> >> +SYSCON reboot mode driver
> >> +
> >> +This driver get reboot mode magic value form reboot-mode driver
> >> +and stores it in a SYSCON mapped register. Then the bootloader
> >> +can read it and take different action according to the magic
> >> +value stored.
> >> +
> >> +This DT node should be represented as a sub-node of a "syscon",
> >> "simple-mfd" +node.
> >> +
> >> +Required properties:
> >> +- compatible: should be "syscon-reboot-mode"
> >> +- offset: offset in the register map for the storage register (in bytes)
> >> +
> >> +Optional properity:
> >> +- mask: the mask bits of the mode magic value, default set to 0xffffffff
> >> if missing.> 
> > I can't see how this is used. I would drop it for now.
> > 
> > With that change:
> > 
> > Acked-by: Rob Herring <robh@kernel.org>
> 
> The mask is suggested by Moritz Fischer in V2[0]. And I found Tegra did
> indeed only use some bits of one register to store the reboot mode[1].
> 
> @Heiko: It seems that this patch series can land now, but the dts parts
> belong to  two different branch(arm32 and arm64) . And these
> two parts both depends on one head file rockchip_boot-mode.h, So I hope
> some suggestions from you how to deal with it.

as this is a new driver with completely new binding, the split should be easy.

Sebastian (sre@kernel.org) should take the driver + binding-txt parts and I 
can then simply queue up the 32 and 64 bit devicetree additions in my 
respective branches for 4.7.


Thanks for pushing that whole thing through, as it looks really nice now.
Heiko


>     [0] https://lkml.org/lkml/2016/1/27/225
>     [1] drivers/soc/tegra/pmc.c  (tegra_pmc_restart_notify)
> 
> >> +
> >> +The rest of the properties should follow the generic reboot-mode
> >> discription +found in reboot-mode.txt
> >> +
> >> +Example:
> >> +	pmu: pmu@20004000 {
> >> +		compatible = "rockchip,rk3066-pmu", "syscon", "simple-mfd";
> >> +		reg = <0x20004000 0x100>;
> >> +
> >> +		reboot-mode {
> >> +			compatible = "syscon-reboot-mode";
> >> +			offset = <0x40>;
> >> +			mode-normal = <BOOT_NORMAL>;
> >> +			mode-recovery = <BOOT_RECOVERY>;
> >> +			mode-bootloader = <BOOT_FASTBOOT>;
> >> +			mode-loader = <BOOT_BL_DOWNLOAD>;
> >> +		};
> >> +	};
Rob Herring March 18, 2016, 1:14 p.m. UTC | #4
On Fri, Mar 18, 2016 at 3:43 AM, Andy Yan <andy.yan@rock-chips.com> wrote:
> Hi Rob:
>
>
> On 2016?03?17? 23:52, Rob Herring wrote:
>>
>> On Tue, Mar 08, 2016 at 08:23:05PM +0800, Andy Yan wrote:
>>>
>>> add device tree bindings document for reboot-mode driver
>>>
>>> Signed-off-by: Andy Yan <andy.yan@rock-chips.com>

[...]

>>> +Required properties:
>>> +- compatible: should be "syscon-reboot-mode"
>>> +- offset: offset in the register map for the storage register (in bytes)
>>> +
>>> +Optional properity:
>>> +- mask: the mask bits of the mode magic value, default set to 0xffffffff
>>> if missing.
>>
>> I can't see how this is used. I would drop it for now.
>>
>> With that change:
>>
>> Acked-by: Rob Herring <robh@kernel.org>
>
>
> The mask is suggested by Moritz Fischer in V2[0]. And I found Tegra did
> indeed only use some bits of one register to store the reboot mode[1].

And the other bits in the register need to be preserved? Please make
it clear the mask is for the register, not the magic value.

There's also a typo with "properity".

Rob
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.txt b/Documentation/devicetree/bindings/power/reset/reboot-mode.txt
new file mode 100644
index 0000000..3457949
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.txt
@@ -0,0 +1,24 @@ 
+Generic reboot mode core map driver
+
+This driver get reboot mode arguments and call the write
+interface to stores the magic value in special register
+or ram . Then the bootloader can read it and take different
+action according the argument stored.
+
+All mode properties are vendor specific, it is a indication to tell
+the bootloder what to do when the system reboot, and should be named
+as mode-xxx = <magic> (xxx is mode name).
+
+- mode-normal: Normal reboot mode, system reboot with command "reboot".
+- mode-recovery: Android Recovery mode, it is a mode to format the device or update a new image.
+- mode-bootloader: Android fastboot mode, it's a mode to re-flash partitions on the Android based device.
+- mode-loader: A bootloader mode, it's a mode used to download image on Rockchip platform,
+	       usually used in development.
+
+Example:
+	reboot-mode {
+		mode-normal = <BOOT_NORMAL>;
+		mode-recovery = <BOOT_RECOVERY>;
+		mode-bootloader = <BOOT_FASTBOOT>;
+		mode-loader = <BOOT_BL_DOWNLOAD>;
+	}
diff --git a/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
new file mode 100644
index 0000000..d03cb52
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/reset/syscon-reboot-mode.txt
@@ -0,0 +1,34 @@ 
+SYSCON reboot mode driver
+
+This driver get reboot mode magic value form reboot-mode driver
+and stores it in a SYSCON mapped register. Then the bootloader
+can read it and take different action according to the magic
+value stored.
+
+This DT node should be represented as a sub-node of a "syscon", "simple-mfd"
+node.
+
+Required properties:
+- compatible: should be "syscon-reboot-mode"
+- offset: offset in the register map for the storage register (in bytes)
+
+Optional properity:
+- mask: the mask bits of the mode magic value, default set to 0xffffffff if missing.
+
+The rest of the properties should follow the generic reboot-mode discription
+found in reboot-mode.txt
+
+Example:
+	pmu: pmu@20004000 {
+		compatible = "rockchip,rk3066-pmu", "syscon", "simple-mfd";
+		reg = <0x20004000 0x100>;
+
+		reboot-mode {
+			compatible = "syscon-reboot-mode";
+			offset = <0x40>;
+			mode-normal = <BOOT_NORMAL>;
+			mode-recovery = <BOOT_RECOVERY>;
+			mode-bootloader = <BOOT_FASTBOOT>;
+			mode-loader = <BOOT_BL_DOWNLOAD>;
+		};
+	};