On Thu, Dec 18, 2025 at 07:36:08PM +0100, Geert Uytterhoeven wrote:
> Hi Stafford,
>
> On Wed, 17 Dec 2025 at 09:23, Stafford Horne <[email protected]> wrote:
> > The de0 nano from Terasic is an FPGA board that we use in the OpenRISC
> > community to test OpenRISC configurations. Add a base configuration for
> > the board that runs an OpenRISC CPU at 50Mhz with 32MB ram, UART for
> > console and some GPIOs for LEDs and switches.
> >
> > There is an older version of this floating around that defines all of
> > the hardware on the board including SPI's, flash devices, sram, ADCs
> > etc. Eventually it would be good to get the full version upstream
> > but for now I think a minimal board is good to start with.
> >
> > Link: https://openrisc.io/tutorials/de0_nano/
> > Link: https://github.com/olofk/de0_nano
> >
> > Signed-off-by: Stafford Horne <[email protected]>
>
> Thanks for your patch!
>
> > --- /dev/null
> > +++ b/arch/openrisc/boot/dts/de0-nano-common.dtsi
> > @@ -0,0 +1,41 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/leds/common.h>
> > +
> > +/ {
> > + memory@0 {
> > + device_type = "memory";
> > + reg = <0x00000000 0x02000000>;
> > + };
> > +
> > + leds: leds {
>
> Move this up (or down), before (or after) all nodes with unit addresses?
OK.
> > + compatible = "gpio-leds";
> > + status = "okay";
>
> Missing blank line.
OK, also I can remove the "okay" line as well.
> > + led-heartbeat {
> > + gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
> > + color = <LED_COLOR_ID_GREEN>;
> > + function = LED_FUNCTION_HEARTBEAT;
> > + linux,default-trigger = "heartbeat";
> > + label = "heartbeat";
> > + };
> > + };
> > +
> > + 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";
>
> "okay" is the default, so you could drop this line.
OK.
> > + };
> > +
> > + gpio1: gpio@92000000 {
> > + compatible = "opencores,gpio", "brcm,bcm6345-gpio";
> > + reg = <0x92000000 0x1>, <0x92000001 0x1>;
> > + reg-names = "dat", "dirout";
> > + gpio-controller;
> > + #gpio-cells = <2>;
> > + status = "disabled";
> > + };
> > +};
>
> > --- /dev/null
> > +++ b/arch/openrisc/boot/dts/de0-nano.dts
> > @@ -0,0 +1,54 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +
> > +/dts-v1/;
> > +
> > +#include "de0-nano-common.dtsi"
> > +
> > +/ {
> > + model = "Terasic DE0 Nano";
> > + compatible = "opencores,or1ksim";
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > + interrupt-parent = <&pic>;
> > +
> > + aliases {
> > + uart0 = &serial0;
> > + };
> > +
> > + chosen {
> > + bootargs = "earlycon";
>
> Do you need this?
What do you mean here? I want to keep "earlycon", and it is not supplied in
de0-nano-common.dtsi.
> > + stdout-path = "uart0:115200";
> > + };
> > +
> > + cpus {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
>
> Missing blank line.
OK.
> > + cpu@0 {
> > + compatible = "opencores,or1200-rtlsvn481";
> > + reg = <0>;
> > + clock-frequency = <50000000>;
> > + };
> > + };
> > +
> > + /*
> > + * OR1K PIC is built into CPU and accessed via special purpose
> > + * registers. It is not addressable and, hence, has no 'reg'
> > + * property.
> > + */
> > + pic: pic {
> > + compatible = "opencores,or1k-pic";
> > + #interrupt-cells = <1>;
> > + interrupt-controller;
> > + };
> > +
> > + serial0: serial@90000000 {
> > + compatible = "opencores,uart16550-rtlsvn105", "ns16550a";
> > + reg = <0x90000000 0x100>;
> > + interrupts = <2>;
> > + clock-frequency = <50000000>;
> > + };
> > +};
-Stafford