mbox series

[v2,0/4] hwspinlock: qcom: Allow dropping the intermediate TCSR mutex syscon

Message ID 20200622075956.171058-1-bjorn.andersson@linaro.org
Headers show
Series hwspinlock: qcom: Allow dropping the intermediate TCSR mutex syscon | expand

Message

Bjorn Andersson June 22, 2020, 7:59 a.m. UTC
In modern Qualcomm platforms the mutex region of the TCSR is forked off into
its own block, all with a offset of 0 and stride of 4096, and in some of these
platforms no other registers in this region is accessed from Linux. Update the
binding and the implementation to allow the TCSR mutex to be represented
without an intermediate syscon node.

Bjorn Andersson (4):
  dt-bindings: hwlock: qcom: Migrate binding to YAML
  dt-bindings: hwlock: qcom: Allow device on mmio bus
  hwspinlock: qcom: Allow mmio usage in addition to syscon
  arm64: dts: qcom: sm8250: Drop tcsr_mutex syscon

 .../bindings/hwlock/qcom-hwspinlock.txt       | 39 -----------
 .../bindings/hwlock/qcom-hwspinlock.yaml      | 65 +++++++++++++++++
 arch/arm64/boot/dts/qcom/sm8250.dtsi          | 17 ++---
 drivers/hwspinlock/qcom_hwspinlock.c          | 70 ++++++++++++++-----
 4 files changed, 125 insertions(+), 66 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.txt
 create mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml

-- 
2.26.2

Comments

Rob Herring (Arm) July 14, 2020, 2:09 a.m. UTC | #1
On Mon, 22 Jun 2020 00:59:53 -0700, Bjorn Andersson wrote:
> Migrate the Qualcomm TCSR mutex binding to YAML to allow validation.

> 

> Reviewed-by: Vinod Koul <vkoul@kernel.org>

> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

> ---

> 

> Changes since v1:

> - Actually remove the old binding doc

> 

>  .../bindings/hwlock/qcom-hwspinlock.txt       | 39 --------------

>  .../bindings/hwlock/qcom-hwspinlock.yaml      | 51 +++++++++++++++++++

>  2 files changed, 51 insertions(+), 39 deletions(-)

>  delete mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.txt

>  create mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml

> 


Reviewed-by: Rob Herring <robh@kernel.org>
Rob Herring July 21, 2020, 3:13 p.m. UTC | #2
On Mon, Jun 22, 2020 at 1:59 AM Bjorn Andersson
<bjorn.andersson@linaro.org> wrote:
>

> Migrate the Qualcomm TCSR mutex binding to YAML to allow validation.

>

> Reviewed-by: Vinod Koul <vkoul@kernel.org>

> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

> ---

>

> Changes since v1:

> - Actually remove the old binding doc

>

>  .../bindings/hwlock/qcom-hwspinlock.txt       | 39 --------------

>  .../bindings/hwlock/qcom-hwspinlock.yaml      | 51 +++++++++++++++++++

>  2 files changed, 51 insertions(+), 39 deletions(-)

>  delete mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.txt

>  create mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml


[...]

> diff --git a/Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml b/Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml

> new file mode 100644

> index 000000000000..71e63b52edd5

> --- /dev/null

> +++ b/Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml

> @@ -0,0 +1,51 @@

> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

> +%YAML 1.2

> +---

> +$id: http://devicetree.org/schemas/hwlock/qcom-hwspinlock.yaml#

> +$schema: http://devicetree.org/meta-schemas/core.yaml#

> +

> +title: Qualcomm Hardware Mutex Block

> +

> +maintainers:

> +  - Bjorn Andersson <bjorn.andersson@linaro.org>

> +

> +description:

> +  The hardware block provides mutexes utilized between different processors on

> +  the SoC as part of the communication protocol used by these processors.

> +

> +properties:

> +  compatible:

> +    enum:

> +      - qcom,sfpb-mutex

> +      - qcom,tcsr-mutex

> +

> +  '#hwlock-cells':

> +    const: 1

> +

> +  syscon:

> +    $ref: "/schemas/types.yaml#/definitions/phandle-array"

> +    description:

> +      Should be a triple of phandle referencing the TCSR mutex syscon, offset

> +      of first mutex within the syscon and stride between each mutex.

> +

> +required:

> +  - compatible

> +  - '#hwlock-cells'

> +  - syscon

> +

> +additionalProperties: false

> +

> +examples:

> +  - |

> +        tcsr_mutex_block: syscon@fd484000 {

> +                compatible = "syscon";


'syscon' alone now generates warnings. Can you drop this node or add a
specific compatible.

> +                reg = <0xfd484000 0x2000>;

> +        };

> +

> +        hwlock {

> +                compatible = "qcom,tcsr-mutex";

> +                syscon = <&tcsr_mutex_block 0 0x80>;

> +

> +                #hwlock-cells = <1>;

> +        };

> +...

> --

> 2.26.2

>
Bjorn Andersson July 22, 2020, 4:46 a.m. UTC | #3
On Tue 21 Jul 08:13 PDT 2020, Rob Herring wrote:

> On Mon, Jun 22, 2020 at 1:59 AM Bjorn Andersson

> <bjorn.andersson@linaro.org> wrote:

> >

> > Migrate the Qualcomm TCSR mutex binding to YAML to allow validation.

> >

> > Reviewed-by: Vinod Koul <vkoul@kernel.org>

> > Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>

> > ---

> >

> > Changes since v1:

> > - Actually remove the old binding doc

> >

> >  .../bindings/hwlock/qcom-hwspinlock.txt       | 39 --------------

> >  .../bindings/hwlock/qcom-hwspinlock.yaml      | 51 +++++++++++++++++++

> >  2 files changed, 51 insertions(+), 39 deletions(-)

> >  delete mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.txt

> >  create mode 100644 Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml

> 

> [...]

> 

> > diff --git a/Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml b/Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml

> > new file mode 100644

> > index 000000000000..71e63b52edd5

> > --- /dev/null

> > +++ b/Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml

> > @@ -0,0 +1,51 @@

> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

> > +%YAML 1.2

> > +---

> > +$id: http://devicetree.org/schemas/hwlock/qcom-hwspinlock.yaml#

> > +$schema: http://devicetree.org/meta-schemas/core.yaml#

> > +

> > +title: Qualcomm Hardware Mutex Block

> > +

> > +maintainers:

> > +  - Bjorn Andersson <bjorn.andersson@linaro.org>

> > +

> > +description:

> > +  The hardware block provides mutexes utilized between different processors on

> > +  the SoC as part of the communication protocol used by these processors.

> > +

> > +properties:

> > +  compatible:

> > +    enum:

> > +      - qcom,sfpb-mutex

> > +      - qcom,tcsr-mutex

> > +

> > +  '#hwlock-cells':

> > +    const: 1

> > +

> > +  syscon:

> > +    $ref: "/schemas/types.yaml#/definitions/phandle-array"

> > +    description:

> > +      Should be a triple of phandle referencing the TCSR mutex syscon, offset

> > +      of first mutex within the syscon and stride between each mutex.

> > +

> > +required:

> > +  - compatible

> > +  - '#hwlock-cells'

> > +  - syscon

> > +

> > +additionalProperties: false

> > +

> > +examples:

> > +  - |

> > +        tcsr_mutex_block: syscon@fd484000 {

> > +                compatible = "syscon";

> 

> 'syscon' alone now generates warnings. Can you drop this node or add a

> specific compatible.

> 


In the binding examples or in the dts files as well?

The hardware block here is named "TCSR_MUTEX", so the natural compatible
to add here would be "qcom,tcsr-mutex", but that already has a meaning -
and the syscon node here doesn't carry all required properties...


Should we perhaps just remove the split model (syscon and
qcom,tcsr-mutex as different nodes) from the example and dts files?
(While maintaining backwards compatibility in the binding and driver)

For the platforms where we have other drivers that needs to poke in this
syscon it seems to work fine to say:
	compatible = "qcom,tcsr-mutex", "syscon";

Regards,
Bjorn

> > +                reg = <0xfd484000 0x2000>;

> > +        };

> > +

> > +        hwlock {

> > +                compatible = "qcom,tcsr-mutex";

> > +                syscon = <&tcsr_mutex_block 0 0x80>;

> > +

> > +                #hwlock-cells = <1>;

> > +        };

> > +...

> > --

> > 2.26.2

> >