d63a422570
A lot of home routers have NVMEM fixed cells containing MAC address that need some further processing. In ~99% cases MAC needs to be: 1. Optionally parsed from ASCII format 2. Increased by a vendor-picked value There was already an attempt to design a binding for that at NVMEM device level in the past. It wasn't accepted though as it didn't really fit NVMEM device layer. The introduction of NVMEM fixed-cells layout seems to be an opportunity to provide a relevant binding in a clean way. This commit adds a *generic* compatible string: "mac-base". As always it needs to be carefully reviewed. OpenWrt project currently supports ~300 home routers that have NVMEM cell with binary-stored base MAC.T hose devices are manufactured by multiple vendors. There are TP-Link devices (76 of them), Netgear (19), D-Link (11), OpenMesh (9), EnGenius (8), GL.iNet (8), ZTE (7), Xiaomi (5), Ubiquiti (6) and more. Those devices don't share an architecture or SoC. Another 200 devices have base MAC stored in an ASCII format (not all those devices have been converted to DT though). It would be impractical to provide unique "compatible" strings for NVMEM layouts of all those devices. It seems like a valid case for allowing a generic binding instead. Even if this binding will not be sufficient for some further devices it seems to be useful enough as it is. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Link: https://lore.kernel.org/r/20230823132744.350618-2-srinivas.kandagatla@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
63 lines
1.3 KiB
YAML
63 lines
1.3 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/nvmem/layouts/fixed-layout.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: NVMEM layout for fixed NVMEM cells
|
|
|
|
description:
|
|
Many NVMEM devices have hardcoded cells layout (offset and size of defined
|
|
NVMEM content doesn't change).
|
|
|
|
This binding allows defining such NVMEM layout with its cells. It can be used
|
|
on top of any NVMEM device.
|
|
|
|
maintainers:
|
|
- Rafał Miłecki <rafal@milecki.pl>
|
|
|
|
properties:
|
|
compatible:
|
|
const: fixed-layout
|
|
|
|
"#address-cells":
|
|
const: 1
|
|
|
|
"#size-cells":
|
|
const: 1
|
|
|
|
patternProperties:
|
|
"@[a-f0-9]+$":
|
|
type: object
|
|
$ref: fixed-cell.yaml
|
|
unevaluatedProperties: false
|
|
|
|
required:
|
|
- compatible
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
nvmem-layout {
|
|
compatible = "fixed-layout";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
mac@100 {
|
|
compatible = "mac-base";
|
|
reg = <0x100 0x6>;
|
|
#nvmem-cell-cells = <1>;
|
|
};
|
|
|
|
mac@110 {
|
|
compatible = "mac-base";
|
|
reg = <0x110 0x11>;
|
|
#nvmem-cell-cells = <1>;
|
|
};
|
|
|
|
calibration@4000 {
|
|
reg = <0x4000 0x100>;
|
|
};
|
|
};
|