Hi Stafford, (reviving linusw)
On Thu, 8 Jan 2026 at 09:20, Stafford Horne <[email protected]> wrote: > On Wed, Jan 07, 2026 at 03:35:45PM +0100, Geert Uytterhoeven wrote: > > On Wed, 17 Dec 2025 at 09:15, Stafford Horne <[email protected]> wrote: > > > In FPGA Development boards with GPIOs we use the opencores gpio verilog > > > rtl. This is compatible with the gpio-mmio. Add the compatible string > > > to allow as below. > > > > > > Example: > > > > > > gpio0: gpio@91000000 { > > > compatible = "opencores,gpio", "brcm,bcm6345-gpio"; > > > reg = <0x91000000 0x1>, <0x91000001 0x1>; > > > reg-names = "dat", "dirout"; > > > gpio-controller; > > > #gpio-cells = <2>; > > > status = "okay"; > > > }; > > > > > > Link: https://opencores.org/projects/gpio > > > Signed-off-by: Stafford Horne <[email protected]> > > > > Thanks for your patch, which is now commit f48b5e8bc2e1344f > > ("dt-bindings: gpio-mmio: Add compatible string for opencores,gpio") > > in gpio/gpio/for-next. > > > > > --- a/Documentation/devicetree/bindings/gpio/gpio-mmio.yaml > > > +++ b/Documentation/devicetree/bindings/gpio/gpio-mmio.yaml > > > @@ -18,11 +18,16 @@ description: > > > > > > properties: > > > compatible: > > > - enum: > > > - - brcm,bcm6345-gpio > > > - - ni,169445-nand-gpio > > > - - wd,mbl-gpio # Western Digital MyBook Live memory-mapped GPIO > > > controller > > > - - intel,ixp4xx-expansion-bus-mmio-gpio > > > + oneOf: > > > + - enum: > > > + - brcm,bcm6345-gpio > > > + - ni,169445-nand-gpio > > > + - wd,mbl-gpio # Western Digital MyBook Live memory-mapped GPIO > > > controller > > > + - intel,ixp4xx-expansion-bus-mmio-gpio > > > + - items: > > > + - enum: > > > + - opencores,gpio > > > + - const: brcm,bcm6345-gpio > > > > What is the rationale behind using brcm,bcm6345-gpio? > > Given brcm,bcm6345-gpio has 32-bit registers, while opencores,gpio > > has 8-bit registers, I doubt the latter is compatible with the former... > I was following what we did for uart, where we have > "opencores,uart16550-rtlsvn105", "ns16550a". I assume the former is a 100% compatible plug-in for the latter. > I am using brcm,bcm6345-gpio to match the drivers/gpio/gpio-mmio.c driver. > The opencores,gpio is compatible with the same driver as brcm,bcm6345-gpio but > not 100% the same as the brcm,bcm6345-gpio. Since the device tree allows > configuring the gpio-mmio driver to make it compatible with opencore,gpio I > thought this would be OK. > > I switch the size from 32-bit to 8-bit using the reg = <* 0x1>, <* 0x1> > setting. > Also the reg addresses of "dat" and "dirout" are different for the real > brcm,bcm6345-gpio. > > brcm,bcm6345-gpio. Example: > > /* GPIOs 192 .. 223 */ > gpio6: gpio@518 { > compatible = "brcm,bcm6345-gpio"; > reg = <0x518 0x04>, <0x538 0x04>; > reg-names = "dirout", "dat"; > gpio-controller; > #gpio-cells = <2>; > }; > > vs opencores,gpio Example: > > gpio0: gpio@91000000 { > compatible = "opencores,gpio", "brcm,bcm6345-gpio"; > reg = <0x91000000 0x1>, <0x91000001 0x1>; > reg-names = "dat", "dirout"; > gpio-controller; > #gpio-cells = <2>; > }; Exactly, the register space and register widths are different > The opencores,gpio setup does work. > > Now that I think about it, would it have been better to just add > opencores,gpio > to gpio-mmio.c compatible list? I think that would be better. > If so I will can revise this patch and add patch to gpio-mmio.c. DT maintainers: Given gpio-mmio is that generic/simple, is there a specific reason there is no generic "gpio-mmio" compatible value that can be used as a fallback, avoiding the need to keep on adding new entries to gpio_mmio_of_match[]? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] 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

