public inbox for linux-gpio@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v6 1/6] dt-bindings: gpio-mmio: Correct opencores GPIO
@ 2026-01-23 14:18 Gary Lau
  2026-01-24 12:36 ` Stafford Horne
  0 siblings, 1 reply; 5+ messages in thread
From: Gary Lau @ 2026-01-23 14:18 UTC (permalink / raw)
  To: Stafford Horne
  Cc: linusw, linux-kernel, linux-openrisc, devicetree, robh, krzk+dt,
	conor+dt, geert+renesas, krzysztof.kozlowski, brgl, linux-gpio

Hi Stafford,

I should clarify my setup: I'm using hardware address translation to make the
OpenCores 8-bit GPIO appear as 32-bit to the CPU. Specifically:

1. Address translation: The CPU's 32-bit addresses are right-shifted by 2 bits
   (adr_i[2] in Verilog), so each 32-bit CPU access maps to the correct 8-bit
   OpenCores register.

2. Data width adaptation: Only dat_i[7:0] and dat_o[7:0] are connected, so
   32-bit writes are truncated to 8-bit, and reads are zero-extended.

This hardware wrapper makes brcm,bcm6345-gpio driver "work" with my OpenCores
GPIO, but it's really a hardware-level compatibility layer, not true software
compatibility.

So you're absolutely right that the native opencores,gpio isn't compatible
with brcm,bcm6345-gpio. My setup works because of custom hardware translation,
not because the IP cores are compatible.

Best regards,
Gary








^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: [PATCH v6 1/6] dt-bindings: gpio-mmio: Correct opencores GPIO
@ 2026-01-23 14:08 Gary Lau
  0 siblings, 0 replies; 5+ messages in thread
From: Gary Lau @ 2026-01-23 14:08 UTC (permalink / raw)
  To: Stafford Horne
  Cc: linusw, linux-kernel, linux-openrisc, devicetree, robh, krzk+dt,
	conor+dt, geert+renesas, krzysztof.kozlowski, brgl, linux-gpio

Hi Stafford,
I've tested the "brcm,bcm6345-gpio" driver with the OpenCores 8-bit GPIO core, and it is working as expected.
For reference, here is the hardware connection logic I used for the OpenRISC to OpenCores GPIO interface:
Verilog:
simple_gpio gpio0 (
    .clk_i  (clk_i),
    .rst_i  (rst_i),
    .cyc_i  (cyc_i & (|sel_i)),
    .stb_i  (stb_i & (|sel_i)),
    .adr_i  (adr_i[2]),
    .we_i   (we_i),
    .dat_i  (dat_i[7:0]),
    .ack_o  (ack_o),
    .dat_o  (dat_o[7:0]),
    .gpio   (gpio[7:0]),
    .gpio_i (gpio_i)
);
And here is the corresponding part of my dts:
gpio0: gpio@91000000 {
    compatible = "brcm,bcm6345-gpio";
    reg = <0x91000000 0x4>, <0x91000004 0x4>;
    reg-names = "dat", "dirout";
    gpio-controller;
    big-endian; 
    status = "okay";







^ permalink raw reply	[flat|nested] 5+ messages in thread
[parent not found: <20260115151014.3956805-1-shorne@gmail.com>]

end of thread, other threads:[~2026-01-24 12:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-23 14:18 [PATCH v6 1/6] dt-bindings: gpio-mmio: Correct opencores GPIO Gary Lau
2026-01-24 12:36 ` Stafford Horne
  -- strict thread matches above, loose matches on Subject: below --
2026-01-23 14:08 Gary Lau
     [not found] <20260115151014.3956805-1-shorne@gmail.com>
2026-01-15 15:09 ` Stafford Horne
2026-01-18 23:19   ` Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox