... | ... | ||
---|---|---|---|
15 | 15 | ||
16 | Other masters should use the 'access-controllers' property to enforce | 16 | Other masters should use the 'access-controllers' property to enforce |
17 | a dependency between their device and the bridge device (see the DSP, | 17 | a dependency between their device and the bridge device (see the DSP, |
18 | for example). | 18 | for example). |
19 | 19 | ||
20 | At the moment, we only want to apply a default, more relaxed | ||
21 | configuration, which is why the number of access controller cells | ||
22 | is 0. | ||
23 | |||
24 | The initial version of the series can be found at [1]. The new version | 20 | The initial version of the series can be found at [1]. The new version |
25 | should provide better management of the device dependencies. | 21 | should provide better management of the device dependencies. |
26 | 22 | ||
27 | [1]: https://lore.kernel.org/linux-arm-kernel/20241119130726.2761726-1-daniel.baluta@nxp.com/ | 23 | [1]: https://lore.kernel.org/linux-arm-kernel/20241119130726.2761726-1-daniel.baluta@nxp.com/ |
28 | 24 | ||
25 | --- | ||
26 | Changes in v4: | ||
27 | * AIPS5 node now only contains a single memory region: that of the AC | ||
28 | (just like in V2). 'reg-names' property is dropped. | ||
29 | * AIPS5 node now uses 'ranges' property to restrict the size of the bus | ||
30 | (1:1 mapping) | ||
31 | * change the number of AC cells from 0 to 3 | ||
32 | * add binding headers | ||
33 | * link to v3: https://lore.kernel.org/lkml/20250324162556.30972-1-laurentiumihalcea111@gmail.com/ | ||
29 | 34 | ||
30 | Laurentiu Mihalcea (5): | 35 | Changes in v3: |
36 | * make '#address-cells' and '#size-cells' constants and equal to 1 in the | ||
37 | binding. The bus is 32-bit. | ||
38 | * add child node in the example DT snippet. | ||
39 | * the 'aips5' DT node now contains 2 memory regions: that of the | ||
40 | peripherals accessible via this bridge and that of the access controller. | ||
41 | * link to v2: https://lore.kernel.org/lkml/20250226165314.34205-1-laurentiumihalcea111@gmail.com/ | ||
42 | |||
43 | Changes in v2: | ||
44 | * adress Frank Li's comments | ||
45 | * pick up some A-b/R-b's | ||
46 | * don't use "simple-bus" as the second compatible. As per Krzysztof's | ||
47 | comment, AIPSTZ is not a "simple-bus". | ||
48 | * link to v1: https://lore.kernel.org/lkml/20250221191909.31874-1-laurentiumihalcea111@gmail.com/ | ||
49 | --- | ||
50 | |||
51 | Laurentiu Mihalcea (6): | ||
31 | dt-bindings: bus: add documentation for the IMX AIPSTZ bridge | 52 | dt-bindings: bus: add documentation for the IMX AIPSTZ bridge |
32 | dt-bindings: dsp: fsl,dsp: document 'access-controllers' property | 53 | dt-bindings: dsp: fsl,dsp: document 'access-controllers' property |
33 | bus: add driver for IMX AIPSTZ bridge | 54 | bus: add driver for IMX AIPSTZ bridge |
34 | arm64: dts: imx8mp: convert 'aips5' to 'aipstz5' | 55 | arm64: dts: imx8mp: convert 'aips5' to 'aipstz5' |
56 | arm64: dts: imx8mp: add aipstz master ID definitions | ||
35 | arm64: dts: imx8mp: make 'dsp' node depend on 'aips5' | 57 | arm64: dts: imx8mp: make 'dsp' node depend on 'aips5' |
36 | 58 | ||
37 | .../bindings/bus/fsl,imx8mp-aipstz.yaml | 62 +++++++++++++ | 59 | .../bindings/bus/fsl,imx8mp-aipstz.yaml | 104 ++++++++++++++++++ |
38 | .../devicetree/bindings/dsp/fsl,dsp.yaml | 3 + | 60 | .../devicetree/bindings/dsp/fsl,dsp.yaml | 3 + |
39 | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 9 +- | 61 | arch/arm64/boot/dts/freescale/imx8mp-aipstz.h | 25 +++++ |
40 | drivers/bus/Kconfig | 6 ++ | 62 | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 12 +- |
41 | drivers/bus/Makefile | 1 + | 63 | drivers/bus/Kconfig | 6 + |
42 | drivers/bus/imx-aipstz.c | 92 +++++++++++++++++++ | 64 | drivers/bus/Makefile | 1 + |
43 | 6 files changed, 170 insertions(+), 3 deletions(-) | 65 | drivers/bus/imx-aipstz.c | 92 ++++++++++++++++ |
66 | include/dt-bindings/bus/imx-aipstz.h | 25 +++++ | ||
67 | 8 files changed, 264 insertions(+), 4 deletions(-) | ||
44 | create mode 100644 Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml | 68 | create mode 100644 Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml |
69 | create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-aipstz.h | ||
45 | create mode 100644 drivers/bus/imx-aipstz.c | 70 | create mode 100644 drivers/bus/imx-aipstz.c |
71 | create mode 100644 include/dt-bindings/bus/imx-aipstz.h | ||
46 | 72 | ||
47 | -- | 73 | -- |
48 | 2.34.1 | 74 | 2.34.1 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
4 | 4 | ||
5 | Co-developed-by: Daniel Baluta <daniel.baluta@nxp.com> | 5 | Co-developed-by: Daniel Baluta <daniel.baluta@nxp.com> |
6 | Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> | 6 | Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> |
7 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | 7 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
8 | --- | 8 | --- |
9 | .../bindings/bus/fsl,imx8mp-aipstz.yaml | 62 +++++++++++++++++++ | 9 | .../bindings/bus/fsl,imx8mp-aipstz.yaml | 104 ++++++++++++++++++ |
10 | 1 file changed, 62 insertions(+) | 10 | include/dt-bindings/bus/imx-aipstz.h | 25 +++++ |
11 | 2 files changed, 129 insertions(+) | ||
11 | create mode 100644 Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml | 12 | create mode 100644 Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml |
13 | create mode 100644 include/dt-bindings/bus/imx-aipstz.h | ||
12 | 14 | ||
13 | diff --git a/Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml b/Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml | 15 | diff --git a/Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml b/Documentation/devicetree/bindings/bus/fsl,imx8mp-aipstz.yaml |
14 | new file mode 100644 | 16 | new file mode 100644 |
15 | index XXXXXXX..XXXXXXX | 17 | index XXXXXXX..XXXXXXX |
16 | --- /dev/null | 18 | --- /dev/null |
... | ... | ||
23 | +$schema: http://devicetree.org/meta-schemas/core.yaml# | 25 | +$schema: http://devicetree.org/meta-schemas/core.yaml# |
24 | + | 26 | + |
25 | +title: Secure AHB to IP Slave bus (AIPSTZ) bridge | 27 | +title: Secure AHB to IP Slave bus (AIPSTZ) bridge |
26 | + | 28 | + |
27 | +description: | 29 | +description: |
28 | + The secure AIPS bridge (AIPSTZ) acts as a bridge for AHB masters | 30 | + The secure AIPS bridge (AIPSTZ) acts as a bridge for AHB masters issuing |
29 | + issuing transactions to IP Slave peripherals. Additionally, this module | 31 | + transactions to IP Slave peripherals. Additionally, this module offers access |
30 | + offers access control configurations meant to restrict which peripherals | 32 | + control configurations meant to restrict which peripherals a master can |
31 | + a master can access. | 33 | + access. |
32 | + | 34 | + |
33 | +maintainers: | 35 | +maintainers: |
34 | + - Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | 36 | + - Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
35 | + | 37 | + |
36 | +select: | ||
37 | + properties: | ||
38 | + compatible: | ||
39 | + contains: | ||
40 | + const: fsl,imx8mp-aipstz | ||
41 | + required: | ||
42 | + - compatible | ||
43 | + | ||
44 | +properties: | 38 | +properties: |
45 | + compatible: | 39 | + compatible: |
46 | + items: | 40 | + const: fsl,imx8mp-aipstz |
47 | + - const: fsl,imx8mp-aipstz | ||
48 | + - const: simple-bus | ||
49 | + | 41 | + |
50 | + reg: | 42 | + reg: |
51 | + maxItems: 1 | 43 | + maxItems: 1 |
52 | + | 44 | + |
53 | + power-domains: | 45 | + power-domains: |
54 | + maxItems: 1 | 46 | + maxItems: 1 |
55 | + | 47 | + |
48 | + "#address-cells": | ||
49 | + const: 1 | ||
50 | + | ||
51 | + "#size-cells": | ||
52 | + const: 1 | ||
53 | + | ||
56 | + "#access-controller-cells": | 54 | + "#access-controller-cells": |
57 | + const: 0 | 55 | + const: 3 |
56 | + description: | ||
57 | + The first cell consists of the consumer type (master or peripheral). | ||
58 | + The second cell consists of the consumer ID. | ||
59 | + The third cell consists of the configuration value. | ||
60 | + | ||
61 | + ranges: true | ||
62 | + | ||
63 | +# borrowed from simple-bus.yaml, no additional requirements for children | ||
64 | +patternProperties: | ||
65 | + "@(0|[1-9a-f][0-9a-f]*)$": | ||
66 | + type: object | ||
67 | + additionalProperties: true | ||
68 | + properties: | ||
69 | + reg: | ||
70 | + items: | ||
71 | + minItems: 2 | ||
72 | + maxItems: 4 | ||
73 | + minItems: 1 | ||
74 | + maxItems: 1024 | ||
75 | + ranges: | ||
76 | + oneOf: | ||
77 | + - items: | ||
78 | + minItems: 3 | ||
79 | + maxItems: 7 | ||
80 | + minItems: 1 | ||
81 | + maxItems: 1024 | ||
82 | + - $ref: /schemas/types.yaml#/definitions/flag | ||
83 | + anyOf: | ||
84 | + - required: | ||
85 | + - reg | ||
86 | + - required: | ||
87 | + - ranges | ||
58 | + | 88 | + |
59 | +required: | 89 | +required: |
60 | + - compatible | 90 | + - compatible |
61 | + - reg | 91 | + - reg |
62 | + - power-domains | 92 | + - power-domains |
93 | + - "#address-cells" | ||
94 | + - "#size-cells" | ||
63 | + - "#access-controller-cells" | 95 | + - "#access-controller-cells" |
96 | + - ranges | ||
64 | + | 97 | + |
65 | +allOf: | 98 | +additionalProperties: false |
66 | + - $ref: /schemas/simple-bus.yaml# | ||
67 | + | ||
68 | +unevaluatedProperties: false | ||
69 | + | 99 | + |
70 | +examples: | 100 | +examples: |
71 | + - | | 101 | + - | |
102 | + #include <dt-bindings/clock/imx8mp-clock.h> | ||
103 | + #include <dt-bindings/interrupt-controller/arm-gic.h> | ||
104 | + | ||
72 | + bus@30df0000 { | 105 | + bus@30df0000 { |
73 | + compatible = "fsl,imx8mp-aipstz", "simple-bus"; | 106 | + compatible = "fsl,imx8mp-aipstz"; |
74 | + reg = <0x30df0000 0x10000>; | 107 | + reg = <0x30df0000 0x10000>; |
75 | + power-domains = <&pgc_audio>; | 108 | + power-domains = <&pgc_audio>; |
76 | + #address-cells = <1>; | 109 | + #address-cells = <1>; |
77 | + #size-cells = <1>; | 110 | + #size-cells = <1>; |
78 | + #access-controller-cells = <0>; | 111 | + #access-controller-cells = <3>; |
79 | + ranges; | 112 | + ranges = <0x30c00000 0x30c00000 0x400000>; |
113 | + | ||
114 | + dma-controller@30e00000 { | ||
115 | + compatible = "fsl,imx8mp-sdma", "fsl,imx8mq-sdma"; | ||
116 | + reg = <0x30e00000 0x10000>; | ||
117 | + #dma-cells = <3>; | ||
118 | + clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SDMA3_ROOT>, | ||
119 | + <&clk IMX8MP_CLK_AUDIO_ROOT>; | ||
120 | + clock-names = "ipg", "ahb"; | ||
121 | + interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; | ||
122 | + fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin"; | ||
123 | + }; | ||
80 | + }; | 124 | + }; |
125 | diff --git a/include/dt-bindings/bus/imx-aipstz.h b/include/dt-bindings/bus/imx-aipstz.h | ||
126 | new file mode 100644 | ||
127 | index XXXXXXX..XXXXXXX | ||
128 | --- /dev/null | ||
129 | +++ b/include/dt-bindings/bus/imx-aipstz.h | ||
130 | @@ -XXX,XX +XXX,XX @@ | ||
131 | +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ | ||
132 | +/* | ||
133 | + * Copyright 2025 NXP | ||
134 | + */ | ||
135 | + | ||
136 | +#ifndef _DT_BINDINGS_BUS_IMX_AIPSTZ_H | ||
137 | +#define _DT_BINDINGS_BUS_IMX_AIPSTZ_H | ||
138 | + | ||
139 | +/* consumer type - master or peripheral */ | ||
140 | +#define IMX_AIPSTZ_MASTER 0x0 | ||
141 | +#define IMX_AIPSTZ_PERIPH 0x1 | ||
142 | + | ||
143 | +/* master configuration options */ | ||
144 | +#define IMX_AIPSTZ_MPL 0x1 | ||
145 | +#define IMX_AIPSTZ_MTW 0x2 | ||
146 | +#define IMX_AIPSTZ_MTR 0x4 | ||
147 | +#define IMX_AIPSTZ_MBW 0x8 | ||
148 | + | ||
149 | +/* peripheral configuration options */ | ||
150 | +#define IMX_AIPSTZ_TP 0x1 | ||
151 | +#define IMX_AIPSTZ_WP 0x2 | ||
152 | +#define IMX_AIPSTZ_SP 0x4 | ||
153 | +#define IMX_AIPSTZ_BW 0x8 | ||
154 | + | ||
155 | +#endif /* _DT_BINDINGS_BUS_IMX_AIPSTZ_H */ | ||
81 | -- | 156 | -- |
82 | 2.34.1 | 157 | 2.34.1 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
6 | 6 | ||
7 | Add the optional 'access-controllers' property, which may be used | 7 | Add the optional 'access-controllers' property, which may be used |
8 | in such cases. | 8 | in such cases. |
9 | 9 | ||
10 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | 10 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
11 | Reviewed-by: Frank Li <Frank.Li@nxp.com> | ||
12 | Acked-by: Rob Herring (Arm) <robh@kernel.org> | ||
11 | --- | 13 | --- |
12 | Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 3 +++ | 14 | Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 3 +++ |
13 | 1 file changed, 3 insertions(+) | 15 | 1 file changed, 3 insertions(+) |
14 | 16 | ||
15 | diff --git a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 17 | diff --git a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml |
16 | index XXXXXXX..XXXXXXX 100644 | 18 | index XXXXXXX..XXXXXXX 100644 |
17 | --- a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 19 | --- a/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml |
18 | +++ b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml | 20 | +++ b/Documentation/devicetree/bindings/dsp/fsl,dsp.yaml |
19 | @@ -XXX,XX +XXX,XX @@ properties: | 21 | @@ -XXX,XX +XXX,XX @@ properties: |
20 | description: | 22 | - const: runstall |
21 | Phandle to syscon block which provide access for processor enablement | 23 | - const: softreset |
22 | 24 | ||
23 | + access-controllers: | 25 | + access-controllers: |
24 | + maxItems: 1 | 26 | + maxItems: 1 |
25 | + | 27 | + |
26 | required: | 28 | required: |
27 | - compatible | 29 | - compatible |
28 | - reg | 30 | - reg |
29 | -- | 31 | -- |
30 | 2.34.1 | 32 | 2.34.1 | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
15 | access controllers (and since there's currently no need for having | 15 | access controllers (and since there's currently no need for having |
16 | flexibility w.r.t the configurations) all this driver does is it | 16 | flexibility w.r.t the configurations) all this driver does is it |
17 | applies a relaxed, "default" configuration, in which all masters | 17 | applies a relaxed, "default" configuration, in which all masters |
18 | are trusted for R/W. | 18 | are trusted for R/W. |
19 | 19 | ||
20 | Note that some instances of this IP may be tied to a power domain and may | 20 | Note that some instances of this IP (e.g: AIPSTZ5 on i.MX8MP) may be tied |
21 | lose their configuration when the domain is powered off. This is why the | 21 | to a power domain and may lose their configuration when the domain is |
22 | configuration has to be restored when the domain is powered on. | 22 | powered off. This is why the configuration has to be restored when the |
23 | domain is powered on. | ||
23 | 24 | ||
24 | Co-developed-by: Daniel Baluta <daniel.baluta@nxp.com> | 25 | Co-developed-by: Daniel Baluta <daniel.baluta@nxp.com> |
25 | Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> | 26 | Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> |
26 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | 27 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
27 | --- | 28 | --- |
... | ... | ||
90 | + writel(default_cfg->mpr0, base + IMX_AIPSTZ_MPR0); | 91 | + writel(default_cfg->mpr0, base + IMX_AIPSTZ_MPR0); |
91 | +} | 92 | +} |
92 | + | 93 | + |
93 | +static int imx_aipstz_probe(struct platform_device *pdev) | 94 | +static int imx_aipstz_probe(struct platform_device *pdev) |
94 | +{ | 95 | +{ |
96 | + const struct imx_aipstz_config *default_cfg; | ||
95 | + void __iomem *base; | 97 | + void __iomem *base; |
96 | + const struct imx_aipstz_config *default_cfg; | ||
97 | + | 98 | + |
98 | + base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); | 99 | + base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL); |
99 | + if (IS_ERR(base)) | 100 | + if (IS_ERR(base)) |
100 | + return dev_err_probe(&pdev->dev, -ENOMEM, | 101 | + return dev_err_probe(&pdev->dev, -ENOMEM, |
101 | + "failed to get/ioremap memory\n"); | 102 | + "failed to get/ioremap AC memory\n"); |
102 | + | 103 | + |
103 | + default_cfg = of_device_get_match_data(&pdev->dev); | 104 | + default_cfg = of_device_get_match_data(&pdev->dev); |
104 | + | 105 | + |
105 | + imx_aipstz_apply_default(base, default_cfg); | 106 | + imx_aipstz_apply_default(base, default_cfg); |
106 | + | 107 | + |
... | ... | ||
112 | + return devm_of_platform_populate(&pdev->dev); | 113 | + return devm_of_platform_populate(&pdev->dev); |
113 | +} | 114 | +} |
114 | + | 115 | + |
115 | +static int imx_aipstz_runtime_resume(struct device *dev) | 116 | +static int imx_aipstz_runtime_resume(struct device *dev) |
116 | +{ | 117 | +{ |
118 | + const struct imx_aipstz_config *default_cfg; | ||
117 | + void __iomem *base; | 119 | + void __iomem *base; |
118 | + const struct imx_aipstz_config *default_cfg; | ||
119 | + | 120 | + |
120 | + base = dev_get_drvdata(dev); | 121 | + base = dev_get_drvdata(dev); |
121 | + default_cfg = of_device_get_match_data(dev); | 122 | + default_cfg = of_device_get_match_data(dev); |
122 | + | 123 | + |
123 | + /* restore potentially lost configuration during domain power-off */ | 124 | + /* restore potentially lost configuration during domain power-off */ |
... | ... | diff view generated by jsdifflib |
... | ... | ||
---|---|---|---|
16 | 16 | ||
17 | Co-developed-by: Daniel Baluta <daniel.baluta@nxp.com> | 17 | Co-developed-by: Daniel Baluta <daniel.baluta@nxp.com> |
18 | Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> | 18 | Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> |
19 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | 19 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
20 | --- | 20 | --- |
21 | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 8 +++++--- | 21 | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 10 ++++++---- |
22 | 1 file changed, 5 insertions(+), 3 deletions(-) | 22 | 1 file changed, 6 insertions(+), 4 deletions(-) |
23 | 23 | ||
24 | diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi | 24 | diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi |
25 | index XXXXXXX..XXXXXXX 100644 | 25 | index XXXXXXX..XXXXXXX 100644 |
26 | --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi | 26 | --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi |
27 | +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi | 27 | +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi |
... | ... | ||
31 | 31 | ||
32 | - aips5: bus@30c00000 { | 32 | - aips5: bus@30c00000 { |
33 | - compatible = "fsl,aips-bus", "simple-bus"; | 33 | - compatible = "fsl,aips-bus", "simple-bus"; |
34 | - reg = <0x30c00000 0x400000>; | 34 | - reg = <0x30c00000 0x400000>; |
35 | + aips5: bus@30df0000 { | 35 | + aips5: bus@30df0000 { |
36 | + compatible = "fsl,imx8mp-aipstz", "simple-bus"; | 36 | + compatible = "fsl,imx8mp-aipstz"; |
37 | + reg = <0x30df0000 0x10000>; | 37 | + reg = <0x30df0000 0x10000>; |
38 | + power-domains = <&pgc_audio>; | 38 | + power-domains = <&pgc_audio>; |
39 | #address-cells = <1>; | 39 | #address-cells = <1>; |
40 | #size-cells = <1>; | 40 | #size-cells = <1>; |
41 | + #access-controller-cells = <0>; | 41 | - ranges; |
42 | ranges; | 42 | + #access-controller-cells = <3>; |
43 | + ranges = <0x30c00000 0x30c00000 0x400000>; | ||
43 | 44 | ||
44 | spba-bus@30c00000 { | 45 | spba-bus@30c00000 { |
46 | compatible = "fsl,spba-bus", "simple-bus"; | ||
45 | -- | 47 | -- |
46 | 2.34.1 | 48 | 2.34.1 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | ||
1 | 2 | ||
3 | Add header file with master ID definitions for i.MX8MP's AIPSTZ. | ||
4 | |||
5 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | ||
6 | --- | ||
7 | arch/arm64/boot/dts/freescale/imx8mp-aipstz.h | 25 +++++++++++++++++++ | ||
8 | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 1 + | ||
9 | 2 files changed, 26 insertions(+) | ||
10 | create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-aipstz.h | ||
11 | |||
12 | diff --git a/arch/arm64/boot/dts/freescale/imx8mp-aipstz.h b/arch/arm64/boot/dts/freescale/imx8mp-aipstz.h | ||
13 | new file mode 100644 | ||
14 | index XXXXXXX..XXXXXXX | ||
15 | --- /dev/null | ||
16 | +++ b/arch/arm64/boot/dts/freescale/imx8mp-aipstz.h | ||
17 | @@ -XXX,XX +XXX,XX @@ | ||
18 | +/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */ | ||
19 | +/* | ||
20 | + * Copyright 2025 NXP | ||
21 | + */ | ||
22 | + | ||
23 | +#ifndef __IMX8MP_AIPSTZ_H | ||
24 | +#define __IMX8MP_AIPSTZ_H | ||
25 | + | ||
26 | +#include <dt-bindings/bus/imx-aipstz.h> | ||
27 | + | ||
28 | +/* master ID definitions */ | ||
29 | +#define IMX8MP_AIPSTZ_EDMA 0 /* AUDIOMIX EDMA */ | ||
30 | +#define IMX8MP_AIPSTZ_CA53 1 /* Cortex-A53 cluster */ | ||
31 | +#define IMX8MP_AIPSTZ_SDMA2 3 /* AUDIOMIX SDMA2 */ | ||
32 | +#define IMX8MP_AIPSTZ_SDMA3 3 /* AUDIOMIX SDMA3 */ | ||
33 | +#define IMX8MP_AIPSTZ_HIFI4 5 /* HIFI4 DSP */ | ||
34 | +#define IMX8MP_AIPSTZ_CM7 6 /* Cortex-M7 */ | ||
35 | + | ||
36 | +/* helper macros */ | ||
37 | +#define IMX8MP_AIPSTZ_HIFI4_T_RW_PL \ | ||
38 | + IMX_AIPSTZ_MASTER \ | ||
39 | + IMX8MP_AIPSTZ_HIFI4 \ | ||
40 | + (IMX_AIPSTZ_MPL | IMX_AIPSTZ_MTW | IMX_AIPSTZ_MTR) | ||
41 | + | ||
42 | +#endif /* __IMX8MP_AIPSTZ_H */ | ||
43 | diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi | ||
44 | index XXXXXXX..XXXXXXX 100644 | ||
45 | --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi | ||
46 | +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi | ||
47 | @@ -XXX,XX +XXX,XX @@ | ||
48 | #include <dt-bindings/interrupt-controller/arm-gic.h> | ||
49 | #include <dt-bindings/thermal/thermal.h> | ||
50 | |||
51 | +#include "imx8mp-aipstz.h" | ||
52 | #include "imx8mp-pinfunc.h" | ||
53 | |||
54 | / { | ||
55 | -- | ||
56 | 2.34.1 | diff view generated by jsdifflib |
1 | From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | 1 | From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
---|---|---|---|
2 | 2 | ||
3 | The DSP may want to access peripherals on AIPSTZ5. To do so, the | 3 | The DSP needs to access peripherals on AIPSTZ5 (to communicate with |
4 | security-related registers of the bridge have to be configured before | 4 | the AP using AUDIOMIX MU, for instance). To do so, the security-related |
5 | the DSP is started. Enforce a dependency on AIPSTZ5 by adding the | 5 | registers of the bridge have to be configured before the DSP is started. |
6 | 'access-controllers' property to the 'dsp' node. | 6 | Enforce a dependency on AIPSTZ5 by adding the 'access-controllers' |
7 | property to the 'dsp' node. | ||
7 | 8 | ||
8 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> | 9 | Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com> |
9 | --- | 10 | --- |
10 | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 1 + | 11 | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 1 + |
11 | 1 file changed, 1 insertion(+) | 12 | 1 file changed, 1 insertion(+) |
... | ... | ||
16 | +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi | 17 | +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi |
17 | @@ -XXX,XX +XXX,XX @@ dsp: dsp@3b6e8000 { | 18 | @@ -XXX,XX +XXX,XX @@ dsp: dsp@3b6e8000 { |
18 | mboxes = <&mu2 2 0>, <&mu2 2 1>, | 19 | mboxes = <&mu2 2 0>, <&mu2 2 1>, |
19 | <&mu2 3 0>, <&mu2 3 1>; | 20 | <&mu2 3 0>, <&mu2 3 1>; |
20 | memory-region = <&dsp_reserved>; | 21 | memory-region = <&dsp_reserved>; |
21 | + access-controllers = <&aips5>; | 22 | + access-controllers = <&aips5 IMX8MP_AIPSTZ_HIFI4_T_RW_PL>; |
22 | status = "disabled"; | 23 | status = "disabled"; |
23 | }; | 24 | }; |
24 | }; | 25 | }; |
25 | -- | 26 | -- |
26 | 2.34.1 | 27 | 2.34.1 | diff view generated by jsdifflib |