* [PATCH v4 1/4] dt-bindings: nvmem: qfprom: Convert to yaml
2020-06-22 14:49 [PATCH v4 0/4] nvmem: qfprom: Patches for fuse blowing on Qualcomm SoCs Douglas Anderson
@ 2020-06-22 14:49 ` Douglas Anderson
2020-07-09 23:16 ` Rob Herring
2020-06-22 14:49 ` [PATCH v4 2/4] dt-bindings: nvmem: Add properties needed for blowing fuses Douglas Anderson
2020-06-22 14:49 ` [PATCH v4 4/4] arm64: dts: qcom: sc7180: Add properties to qfprom for fuse blowing Douglas Anderson
2 siblings, 1 reply; 6+ messages in thread
From: Douglas Anderson @ 2020-06-22 14:49 UTC (permalink / raw)
To: Srinivas Kandagatla, Rob Herring, Bjorn Andersson, Andy Gross
Cc: mturney, Jeffrey Hugo, rnayak, dhavalp, saiprakash.ranjan,
sparate, linux-arm-msm, mkurumel, Ravi Kumar Bokka,
Douglas Anderson, devicetree, linux-kernel
From: Ravi Kumar Bokka <rbokka@codeaurora.org>
This switches the bindings over from txt to yaml.
Signed-off-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---
Changes in v4:
- Maintainer now listed as Srinivas.
- Example under "soc" to get #address-cells and #size-cells.
Changes in v3:
- Split conversion to yaml into separate patch new in v3.
- Use 'const' for compatible instead of a 1-entry enum.
- Changed filename to match compatible string.
- Add #address-cells and #size-cells to list of properties.
- Fixed up example.
.../bindings/nvmem/qcom,qfprom.yaml | 50 +++++++++++++++++++
.../devicetree/bindings/nvmem/qfprom.txt | 35 -------------
2 files changed, 50 insertions(+), 35 deletions(-)
create mode 100644 Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
delete mode 100644 Documentation/devicetree/bindings/nvmem/qfprom.txt
diff --git a/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml b/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
new file mode 100644
index 000000000000..39f97c1c83a4
--- /dev/null
+++ b/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/nvmem/qcom,qfprom.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Technologies Inc, QFPROM Efuse bindings
+
+maintainers:
+ - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+
+allOf:
+ - $ref: "nvmem.yaml#"
+
+properties:
+ compatible:
+ const: qcom,qfprom
+
+ reg:
+ items:
+ - description: The corrected region.
+
+ # Needed if any child nodes are present.
+ "#address-cells":
+ const: 1
+ "#size-cells":
+ const: 1
+
+required:
+ - compatible
+ - reg
+
+examples:
+ - |
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ efuse@784000 {
+ compatible = "qcom,qfprom";
+ reg = <0 0x00784000 0 0x8ff>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ hstx-trim-primary@1eb {
+ reg = <0x1eb 0x1>;
+ bits = <1 4>;
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/nvmem/qfprom.txt b/Documentation/devicetree/bindings/nvmem/qfprom.txt
deleted file mode 100644
index 26fe878d5c86..000000000000
--- a/Documentation/devicetree/bindings/nvmem/qfprom.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-= Qualcomm QFPROM device tree bindings =
-
-This binding is intended to represent QFPROM which is found in most QCOM SOCs.
-
-Required properties:
-- compatible: should be "qcom,qfprom"
-- reg: Should contain registers location and length
-
-= Data cells =
-Are child nodes of qfprom, bindings of which as described in
-bindings/nvmem/nvmem.txt
-
-Example:
-
- qfprom: qfprom@700000 {
- compatible = "qcom,qfprom";
- reg = <0x00700000 0x8000>;
- ...
- /* Data cells */
- tsens_calibration: calib@404 {
- reg = <0x4404 0x10>;
- };
- };
-
-
-= Data consumers =
-Are device nodes which consume nvmem data cells.
-
-For example:
-
- tsens {
- ...
- nvmem-cells = <&tsens_calibration>;
- nvmem-cell-names = "calibration";
- };
--
2.27.0.111.gc72c7da667-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v4 1/4] dt-bindings: nvmem: qfprom: Convert to yaml
2020-06-22 14:49 ` [PATCH v4 1/4] dt-bindings: nvmem: qfprom: Convert to yaml Douglas Anderson
@ 2020-07-09 23:16 ` Rob Herring
0 siblings, 0 replies; 6+ messages in thread
From: Rob Herring @ 2020-07-09 23:16 UTC (permalink / raw)
To: Douglas Anderson
Cc: Ravi Kumar Bokka, rnayak, Srinivas Kandagatla, linux-arm-msm,
Bjorn Andersson, devicetree, dhavalp, linux-kernel, Jeffrey Hugo,
sparate, saiprakash.ranjan, Rob Herring, mkurumel, Andy Gross,
mturney
On Mon, 22 Jun 2020 07:49:26 -0700, Douglas Anderson wrote:
> From: Ravi Kumar Bokka <rbokka@codeaurora.org>
>
> This switches the bindings over from txt to yaml.
>
> Signed-off-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
>
> Changes in v4:
> - Maintainer now listed as Srinivas.
> - Example under "soc" to get #address-cells and #size-cells.
>
> Changes in v3:
> - Split conversion to yaml into separate patch new in v3.
> - Use 'const' for compatible instead of a 1-entry enum.
> - Changed filename to match compatible string.
> - Add #address-cells and #size-cells to list of properties.
> - Fixed up example.
>
> .../bindings/nvmem/qcom,qfprom.yaml | 50 +++++++++++++++++++
> .../devicetree/bindings/nvmem/qfprom.txt | 35 -------------
> 2 files changed, 50 insertions(+), 35 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
> delete mode 100644 Documentation/devicetree/bindings/nvmem/qfprom.txt
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 2/4] dt-bindings: nvmem: Add properties needed for blowing fuses
2020-06-22 14:49 [PATCH v4 0/4] nvmem: qfprom: Patches for fuse blowing on Qualcomm SoCs Douglas Anderson
2020-06-22 14:49 ` [PATCH v4 1/4] dt-bindings: nvmem: qfprom: Convert to yaml Douglas Anderson
@ 2020-06-22 14:49 ` Douglas Anderson
2020-07-09 23:16 ` Rob Herring
2020-06-22 14:49 ` [PATCH v4 4/4] arm64: dts: qcom: sc7180: Add properties to qfprom for fuse blowing Douglas Anderson
2 siblings, 1 reply; 6+ messages in thread
From: Douglas Anderson @ 2020-06-22 14:49 UTC (permalink / raw)
To: Srinivas Kandagatla, Rob Herring, Bjorn Andersson, Andy Gross
Cc: mturney, Jeffrey Hugo, rnayak, dhavalp, saiprakash.ranjan,
sparate, linux-arm-msm, mkurumel, Ravi Kumar Bokka,
Douglas Anderson, devicetree, linux-kernel
From: Ravi Kumar Bokka <rbokka@codeaurora.org>
On some systems it's possible to actually blow the fuses in the qfprom
from the kernel. Add properties to support that.
NOTE: Whether this is possible depends on the BIOS settings and
whether the kernel has permissions here, so not all boards will be
able to blow fuses in the kernel.
Signed-off-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---
Changes in v4:
- Clock name is "core", not "sec".
- Example under "soc" to get #address-cells and #size-cells.
Changes in v3:
- Add an extra reg range (at 0x6000 offset for SoCs checked)
- Define two options for reg: 1 item or 4 items.
- No reg-names.
- Add "clocks" and "clock-names" to list of properties.
- Clock is now "sec", not "secclk".
- Add "vcc-supply" to list of properties.
- Fixed up example.
.../bindings/nvmem/qcom,qfprom.yaml | 50 ++++++++++++++++++-
1 file changed, 48 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml b/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
index 39f97c1c83a4..d10a0cf91ba7 100644
--- a/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
+++ b/Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
@@ -17,8 +17,27 @@ properties:
const: qcom,qfprom
reg:
- items:
- - description: The corrected region.
+ # If the QFPROM is read-only OS image then only the corrected region
+ # needs to be provided. If the QFPROM is writable then all 4 regions
+ # must be provided.
+ oneOf:
+ - items:
+ - description: The corrected region.
+ - items:
+ - description: The corrected region.
+ - description: The raw region.
+ - description: The config region.
+ - description: The security control region.
+
+ # Clock must be provided if QFPROM is writable from the OS image.
+ clocks:
+ maxItems: 1
+ clock-names:
+ const: core
+
+ # Supply reference must be provided if QFPROM is writable from the OS image.
+ vcc-supply:
+ description: Our power supply.
# Needed if any child nodes are present.
"#address-cells":
@@ -31,6 +50,33 @@ required:
- reg
examples:
+ - |
+ #include <dt-bindings/clock/qcom,gcc-sc7180.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ efuse@784000 {
+ compatible = "qcom,qfprom";
+ reg = <0 0x00784000 0 0x8ff>,
+ <0 0x00780000 0 0x7a0>,
+ <0 0x00782000 0 0x100>,
+ <0 0x00786000 0 0x1fff>;
+ clocks = <&gcc GCC_SEC_CTRL_CLK_SRC>;
+ clock-names = "core";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ vcc-supply = <&vreg_l11a_1p8>;
+
+ hstx-trim-primary@25b {
+ reg = <0x25b 0x1>;
+ bits = <1 3>;
+ };
+ };
+ };
+
- |
soc {
#address-cells = <2>;
--
2.27.0.111.gc72c7da667-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v4 2/4] dt-bindings: nvmem: Add properties needed for blowing fuses
2020-06-22 14:49 ` [PATCH v4 2/4] dt-bindings: nvmem: Add properties needed for blowing fuses Douglas Anderson
@ 2020-07-09 23:16 ` Rob Herring
0 siblings, 0 replies; 6+ messages in thread
From: Rob Herring @ 2020-07-09 23:16 UTC (permalink / raw)
To: Douglas Anderson
Cc: mkurumel, linux-kernel, Andy Gross, devicetree, Ravi Kumar Bokka,
linux-arm-msm, Rob Herring, Bjorn Andersson, Srinivas Kandagatla,
mturney, saiprakash.ranjan, Jeffrey Hugo, sparate, dhavalp,
rnayak
On Mon, 22 Jun 2020 07:49:27 -0700, Douglas Anderson wrote:
> From: Ravi Kumar Bokka <rbokka@codeaurora.org>
>
> On some systems it's possible to actually blow the fuses in the qfprom
> from the kernel. Add properties to support that.
>
> NOTE: Whether this is possible depends on the BIOS settings and
> whether the kernel has permissions here, so not all boards will be
> able to blow fuses in the kernel.
>
> Signed-off-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
> Signed-off-by: Douglas Anderson <dianders@chromium.org>
> ---
>
> Changes in v4:
> - Clock name is "core", not "sec".
> - Example under "soc" to get #address-cells and #size-cells.
>
> Changes in v3:
> - Add an extra reg range (at 0x6000 offset for SoCs checked)
> - Define two options for reg: 1 item or 4 items.
> - No reg-names.
> - Add "clocks" and "clock-names" to list of properties.
> - Clock is now "sec", not "secclk".
> - Add "vcc-supply" to list of properties.
> - Fixed up example.
>
> .../bindings/nvmem/qcom,qfprom.yaml | 50 ++++++++++++++++++-
> 1 file changed, 48 insertions(+), 2 deletions(-)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 4/4] arm64: dts: qcom: sc7180: Add properties to qfprom for fuse blowing
2020-06-22 14:49 [PATCH v4 0/4] nvmem: qfprom: Patches for fuse blowing on Qualcomm SoCs Douglas Anderson
2020-06-22 14:49 ` [PATCH v4 1/4] dt-bindings: nvmem: qfprom: Convert to yaml Douglas Anderson
2020-06-22 14:49 ` [PATCH v4 2/4] dt-bindings: nvmem: Add properties needed for blowing fuses Douglas Anderson
@ 2020-06-22 14:49 ` Douglas Anderson
2 siblings, 0 replies; 6+ messages in thread
From: Douglas Anderson @ 2020-06-22 14:49 UTC (permalink / raw)
To: Srinivas Kandagatla, Rob Herring, Bjorn Andersson, Andy Gross
Cc: mturney, Jeffrey Hugo, rnayak, dhavalp, saiprakash.ranjan,
sparate, linux-arm-msm, mkurumel, Ravi Kumar Bokka,
Douglas Anderson, devicetree, linux-kernel
From: Ravi Kumar Bokka <rbokka@codeaurora.org>
This patch adds properties to the qfprom node to enable fuse blowing.
Signed-off-by: Ravi Kumar Bokka <rbokka@codeaurora.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
---
Changes in v4:
- Clock name is "core", not "sec".
Changes in v3:
- Name is now 'efuse' to match what schema checker wants.
- Reorganized ranges to match driver/bindings changes.
- Added 4th range as per driver/binding changes.
- No more reg-names as per driver/binding changes.
- Clock name is now just "sec" as per driver/binding changes.
arch/arm64/boot/dts/qcom/sc7180-idp.dts | 4 ++++
arch/arm64/boot/dts/qcom/sc7180.dtsi | 10 ++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sc7180-idp.dts b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
index 39dbfc89689e..4b3c6ebdc8d8 100644
--- a/arch/arm64/boot/dts/qcom/sc7180-idp.dts
+++ b/arch/arm64/boot/dts/qcom/sc7180-idp.dts
@@ -287,6 +287,10 @@ vreg_bob: bob {
};
};
+&qfprom {
+ vcc-supply = <&vreg_l11a_1p8>;
+};
+
&qspi {
status = "okay";
pinctrl-names = "default";
diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
index 3a8076c8bdbf..bfbdace2d29c 100644
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
@@ -498,9 +498,15 @@ gcc: clock-controller@100000 {
#power-domain-cells = <1>;
};
- qfprom@784000 {
+ qfprom: efuse@784000 {
compatible = "qcom,qfprom";
- reg = <0 0x00784000 0 0x8ff>;
+ reg = <0 0x00784000 0 0x8ff>,
+ <0 0x00780000 0 0x7a0>,
+ <0 0x00782000 0 0x100>,
+ <0 0x00786000 0 0x1fff>;
+
+ clocks = <&gcc GCC_SEC_CTRL_CLK_SRC>;
+ clock-names = "core";
#address-cells = <1>;
#size-cells = <1>;
--
2.27.0.111.gc72c7da667-goog
^ permalink raw reply related [flat|nested] 6+ messages in thread