Hi Geert,
On Mon, Dec 06, 2021 at 11:18:18AM +0100, Geert Uytterhoeven wrote:
On Sat, Dec 4, 2021 at 9:41 PM Gabriel Somlo [off-list ref] wrote:
quoted
LiteSDCard is a small footprint, configurable SDCard core for FPGA
based system on chips.
Signed-off-by: Gabriel Somlo <redacted>
And after reviewing the driver...
quoted
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/litex,mmc.yaml
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/litex,mmc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: LiteX LiteSDCard device
+
+maintainers:
+ - Gabriel Somlo <gsomlo@gmail.com>
+
+description: |
+ LiteSDCard is a small footprint, configurable SDCard core for FPGA based
+ system on chips.
+
+ The hardware source is Open Source and can be found on at
+ https://github.com/enjoy-digital/litesdcard/.
+
+allOf:
+ - $ref: mmc-controller.yaml#
+
+properties:
+ compatible:
+ const: litex,mmc
+
+ reg:
+ items:
+ - description: PHY registers
+ - description: CORE registers
+ - description: DMA Reader buffer
+ - description: DMA Writer buffer
+ - description: IRQ registers
The last one is optional...
quoted
+
+ reg-names:
+ items:
+ - const: phy
+ - const: core
+ - const: reader
+ - const: writer
+ - const: irq
Likewise.
quoted
+
+ interrupts:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
reg-names, as the driver needs it (and it's good practice anyway).
quoted
+ - interrupts
Interrupts is optional.
I tried to link it to reg{,-names}:
if:
not:
required:
- interrupts
then:
properties:
reg:
maxItems: 4
reg-names:
maxItems: 4
but that doesn't seem to work. Anyone with a clue?
For now I'm queueing this up for v3, unless we get more ideas:
@@ -29,7 +29,9 @@ properties:
- description: CORE registers
- description: DMA Reader buffer
- description: DMA Writer buffer
- - description: IRQ registers
+ - description: IRQ registers (optional)
+ minItems: 4
+ maxItems: 5
reg-names:
items:@@ -37,7 +39,9 @@ properties:
- const: core
- const: reader
- const: writer
- - const: irq
+ - const: irq (optional)
+ minItems: 4
+ maxItems: 5
interrupts:
maxItems: 1@@ -45,7 +49,7 @@ properties:
required:
- compatible
- reg
- - interrupts
+ - reg-names
Some of the *.txt formatted files in Documentation/devicetree/bindings/mmc
had an explicit "Optional" section, but all the .yaml formatted ones
just seem to assume that if it's not under `required:`, it's
implicitly optional. So I'm removing `interrupts` from `required`, and
adding `reg-names`, as you pointed out.
Thanks,
--Gabriel
quoted
+
+additionalProperties: false
+
+examples:
+ - |
+ mmc: mmc@12005000 {
+ compatible = "litex,mmc";
+ reg = <0x12005000 0x100>,
+ <0x12003800 0x100>,
+ <0x12003000 0x100>,
+ <0x12004800 0x100>,
+ <0x12004000 0x100>;
+ reg-names = "phy", "core", "reader", "writer", "irq";
+ interrupts = <4>;
+ };
--
2.31.1
--
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds