mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
dt-bindings: Drop kernel copy of common reserved-memory bindings
The common reserved-memory bindings have recently been copied from the kernel tree into dtschema. The preference is to host common, stable bindings in dtschema. As reserved-memory is documented in the DT Spec, it meets the criteria. The v2023.09 version of dtschema is what contains the reserved-memory schemas we depend on, so bump the minimum version to that. Otherwise, references to these schemas will generate errors. Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org> Link: https://lore.kernel.org/r/20231013200851.347042-1-robh@kernel.org Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
parent
2e6fc0b815
commit
b32dcf23a0
8 changed files with 4 additions and 374 deletions
|
@ -6,7 +6,7 @@ DT_MK_SCHEMA ?= dt-mk-schema
|
|||
DT_SCHEMA_LINT = $(shell which yamllint || \
|
||||
echo "warning: python package 'yamllint' not installed, skipping" >&2)
|
||||
|
||||
DT_SCHEMA_MIN_VERSION = 2022.3
|
||||
DT_SCHEMA_MIN_VERSION = 2023.9
|
||||
|
||||
PHONY += check_dtschema_version
|
||||
check_dtschema_version:
|
||||
|
|
|
@ -31,7 +31,7 @@ properties:
|
|||
remoteproc device. This is variable and describes the memories shared with
|
||||
the remote processor (e.g. remoteproc firmware and carveouts, rpmsg
|
||||
vrings, ...).
|
||||
(see ../reserved-memory/reserved-memory.yaml)
|
||||
(see reserved-memory/reserved-memory.yaml in dtschema project)
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/reserved-memory/framebuffer.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: /reserved-memory framebuffer node
|
||||
|
||||
maintainers:
|
||||
- devicetree-spec@vger.kernel.org
|
||||
|
||||
allOf:
|
||||
- $ref: reserved-memory.yaml
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: framebuffer
|
||||
description: >
|
||||
This indicates a region of memory meant to be used as a framebuffer for
|
||||
a set of display devices. It can be used by an operating system to keep
|
||||
the framebuffer from being overwritten and use it as the backing memory
|
||||
for a display device (such as simple-framebuffer).
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
/ {
|
||||
compatible = "foo";
|
||||
model = "foo";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
chosen {
|
||||
framebuffer {
|
||||
compatible = "simple-framebuffer";
|
||||
memory-region = <&fb>;
|
||||
};
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
fb: framebuffer@80000000 {
|
||||
compatible = "framebuffer";
|
||||
reg = <0x80000000 0x007e9000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,40 +0,0 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/reserved-memory/memory-region.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Reserved Memory Region
|
||||
|
||||
maintainers:
|
||||
- devicetree-spec@vger.kernel.org
|
||||
|
||||
description: |
|
||||
Regions in the /reserved-memory node may be referenced by other device
|
||||
nodes by adding a memory-region property to the device node.
|
||||
|
||||
select: true
|
||||
|
||||
properties:
|
||||
memory-region:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
description: >
|
||||
Phandle to a /reserved-memory child node assigned to the device.
|
||||
|
||||
memory-region-names:
|
||||
$ref: /schemas/types.yaml#/definitions/string-array
|
||||
description: >
|
||||
A list of names, one for each corresponding entry in the
|
||||
memory-region property
|
||||
|
||||
additionalProperties: true
|
||||
|
||||
examples:
|
||||
- |
|
||||
fb0: video@12300000 {
|
||||
/* ... */
|
||||
reg = <0x12300000 0x1000>;
|
||||
memory-region = <&display_reserved>;
|
||||
};
|
||||
|
||||
...
|
|
@ -1 +1 @@
|
|||
This file has been moved to reserved-memory.yaml.
|
||||
This file has been moved to reserved-memory.yaml in the dtschema repository.
|
||||
|
|
|
@ -1,181 +0,0 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/reserved-memory/reserved-memory.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: /reserved-memory Child Node Common
|
||||
|
||||
maintainers:
|
||||
- devicetree-spec@vger.kernel.org
|
||||
|
||||
description: >
|
||||
Reserved memory is specified as a node under the /reserved-memory node. The
|
||||
operating system shall exclude reserved memory from normal usage one can
|
||||
create child nodes describing particular reserved (excluded from normal use)
|
||||
memory regions. Such memory regions are usually designed for the special
|
||||
usage by various device drivers.
|
||||
|
||||
Each child of the reserved-memory node specifies one or more regions
|
||||
of reserved memory. Each child node may either use a 'reg' property to
|
||||
specify a specific range of reserved memory, or a 'size' property with
|
||||
optional constraints to request a dynamically allocated block of
|
||||
memory.
|
||||
|
||||
Following the generic-names recommended practice, node names should
|
||||
reflect the purpose of the node (ie. "framebuffer" or "dma-pool").
|
||||
Unit address (@<address>) should be appended to the name if the node
|
||||
is a static allocation.
|
||||
|
||||
properties:
|
||||
reg: true
|
||||
|
||||
size:
|
||||
oneOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
- $ref: /schemas/types.yaml#/definitions/uint64
|
||||
description: >
|
||||
Length based on parent's \#size-cells. Size in bytes of memory to
|
||||
reserve.
|
||||
|
||||
alignment:
|
||||
oneOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
- $ref: /schemas/types.yaml#/definitions/uint64
|
||||
description: >
|
||||
Length based on parent's \#size-cells. Address boundary for
|
||||
alignment of allocation.
|
||||
|
||||
alloc-ranges:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
description: >
|
||||
Address and Length pairs. Specifies regions of memory that are
|
||||
acceptable to allocate from.
|
||||
|
||||
iommu-addresses:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
description: >
|
||||
A list of phandle and specifier pairs that describe static IO virtual
|
||||
address space mappings and carveouts associated with a given reserved
|
||||
memory region. The phandle in the first cell refers to the device for
|
||||
which the mapping or carveout is to be created.
|
||||
|
||||
The specifier consists of an address/size pair and denotes the IO
|
||||
virtual address range of the region for the given device. The exact
|
||||
format depends on the values of the "#address-cells" and "#size-cells"
|
||||
properties of the device referenced via the phandle.
|
||||
|
||||
When used in combination with a "reg" property, an IOVA mapping is to
|
||||
be established for this memory region. One example where this can be
|
||||
useful is to create an identity mapping for physical memory that the
|
||||
firmware has configured some hardware to access (such as a bootsplash
|
||||
framebuffer).
|
||||
|
||||
If no "reg" property is specified, the "iommu-addresses" property
|
||||
defines carveout regions in the IOVA space for the given device. This
|
||||
can be useful if a certain memory region should not be mapped through
|
||||
the IOMMU.
|
||||
|
||||
no-map:
|
||||
type: boolean
|
||||
description: >
|
||||
Indicates the operating system must not create a virtual mapping
|
||||
of the region as part of its standard mapping of system memory,
|
||||
nor permit speculative access to it under any circumstances other
|
||||
than under the control of the device driver using the region.
|
||||
|
||||
reusable:
|
||||
type: boolean
|
||||
description: >
|
||||
The operating system can use the memory in this region with the
|
||||
limitation that the device driver(s) owning the region need to be
|
||||
able to reclaim it back. Typically that means that the operating
|
||||
system can use that region to store volatile or cached data that
|
||||
can be otherwise regenerated or migrated elsewhere.
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
required:
|
||||
- no-map
|
||||
|
||||
then:
|
||||
not:
|
||||
required:
|
||||
- reusable
|
||||
|
||||
- if:
|
||||
required:
|
||||
- reusable
|
||||
|
||||
then:
|
||||
not:
|
||||
required:
|
||||
- no-map
|
||||
|
||||
oneOf:
|
||||
- oneOf:
|
||||
- required:
|
||||
- reg
|
||||
|
||||
- required:
|
||||
- size
|
||||
|
||||
- oneOf:
|
||||
# IOMMU reservations
|
||||
- required:
|
||||
- iommu-addresses
|
||||
|
||||
# IOMMU mappings
|
||||
- required:
|
||||
- reg
|
||||
- iommu-addresses
|
||||
|
||||
additionalProperties: true
|
||||
|
||||
examples:
|
||||
- |
|
||||
/ {
|
||||
compatible = "foo";
|
||||
model = "foo";
|
||||
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
adsp_resv: reservation-adsp {
|
||||
/*
|
||||
* Restrict IOVA mappings for ADSP buffers to the 512 MiB region
|
||||
* from 0x40000000 - 0x5fffffff. Anything outside is reserved by
|
||||
* the ADSP for I/O memory and private memory allocations.
|
||||
*/
|
||||
iommu-addresses = <&adsp 0x0 0x00000000 0x00 0x40000000>,
|
||||
<&adsp 0x0 0x60000000 0xff 0xa0000000>;
|
||||
};
|
||||
|
||||
fb: framebuffer@90000000 {
|
||||
reg = <0x0 0x90000000 0x0 0x00800000>;
|
||||
iommu-addresses = <&dc0 0x0 0x90000000 0x0 0x00800000>;
|
||||
};
|
||||
};
|
||||
|
||||
bus@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x0 0x0 0x40000000>;
|
||||
|
||||
adsp: adsp@2990000 {
|
||||
reg = <0x2990000 0x2000>;
|
||||
memory-region = <&adsp_resv>;
|
||||
};
|
||||
|
||||
dc0: display@15200000 {
|
||||
reg = <0x15200000 0x10000>;
|
||||
memory-region = <&fb>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,97 +0,0 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/reserved-memory/shared-dma-pool.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: /reserved-memory DMA pool
|
||||
|
||||
maintainers:
|
||||
- devicetree-spec@vger.kernel.org
|
||||
|
||||
allOf:
|
||||
- $ref: reserved-memory.yaml
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: shared-dma-pool
|
||||
description: >
|
||||
This indicates a region of memory meant to be used as a shared
|
||||
pool of DMA buffers for a set of devices. It can be used by an
|
||||
operating system to instantiate the necessary pool management
|
||||
subsystem if necessary.
|
||||
|
||||
- const: restricted-dma-pool
|
||||
description: >
|
||||
This indicates a region of memory meant to be used as a pool
|
||||
of restricted DMA buffers for a set of devices. The memory
|
||||
region would be the only region accessible to those devices.
|
||||
When using this, the no-map and reusable properties must not
|
||||
be set, so the operating system can create a virtual mapping
|
||||
that will be used for synchronization. The main purpose for
|
||||
restricted DMA is to mitigate the lack of DMA access control
|
||||
on systems without an IOMMU, which could result in the DMA
|
||||
accessing the system memory at unexpected times and/or
|
||||
unexpected addresses, possibly leading to data leakage or
|
||||
corruption. The feature on its own provides a basic level of
|
||||
protection against the DMA overwriting buffer contents at
|
||||
unexpected times. However, to protect against general data
|
||||
leakage and system memory corruption, the system needs to
|
||||
provide way to lock down the memory access, e.g., MPU. Note
|
||||
that since coherent allocation needs remapping, one must set
|
||||
up another device coherent pool by shared-dma-pool and use
|
||||
dma_alloc_from_dev_coherent instead for atomic coherent
|
||||
allocation.
|
||||
|
||||
linux,cma-default:
|
||||
type: boolean
|
||||
description: >
|
||||
If this property is present, then Linux will use the region for
|
||||
the default pool of the contiguous memory allocator.
|
||||
|
||||
linux,dma-default:
|
||||
type: boolean
|
||||
description: >
|
||||
If this property is present, then Linux will use the region for
|
||||
the default pool of the consistent DMA allocator.
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: restricted-dma-pool
|
||||
then:
|
||||
properties:
|
||||
no-map: false
|
||||
reusable: false
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
reserved-memory {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
/* global autoconfigured region for contiguous allocations */
|
||||
linux,cma {
|
||||
compatible = "shared-dma-pool";
|
||||
reusable;
|
||||
size = <0x4000000>;
|
||||
alignment = <0x2000>;
|
||||
linux,cma-default;
|
||||
};
|
||||
|
||||
display_reserved: framebuffer@78000000 {
|
||||
reg = <0x78000000 0x800000>;
|
||||
};
|
||||
|
||||
restricted_dma_reserved: restricted-dma-pool@50000000 {
|
||||
compatible = "restricted-dma-pool";
|
||||
reg = <0x50000000 0x4000000>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
|
@ -29,7 +29,7 @@ properties:
|
|||
maxItems: 1
|
||||
description: |
|
||||
Shared memory region for AFE memif. A "shared-dma-pool".
|
||||
See ../reserved-memory/reserved-memory.yaml for details.
|
||||
See dtschema reserved-memory/shared-dma-pool.yaml for details.
|
||||
|
||||
mediatek,topckgen:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
|
|
Loading…
Add table
Reference in a new issue