Re: [PATCH v3 01/15] ARM: mvebu: add Netgear RN102 support
Marco Felsch <[email protected]> Mon, 3 Aug 2026 15:43:59 +0200
| Newsgroups | org.infradead.lists.barebox |
|---|---|
| Message-ID | <vcqxg6s7erwuuxe62wdhecqrqsuao427vigelmvkg5pqjamvz7@46g5a3zsbs43> |
On 26-08-03, Sascha Hauer wrote: > On 2026-08-02 15:16, Luca Lauro via B4 Relay wrote: > > From: Luca Lauro <[email protected]> > > > > This adds full support for the Netgear ReadyNAS 102, including: > > > > - board driver matching on "netgear,rn102" > > - lowlevel initialization > > - barebox overlay with environment, state backend and > > NAND partition layout > > - Kconfig entry > > - image support > > > > Signed-off-by: Luca Lauro <[email protected]> > > --- > > arch/arm/boards/Makefile | 1 + > > arch/arm/boards/netgear-rn102/Makefile | 4 + > > arch/arm/boards/netgear-rn102/board.c | 243 +++++++++++++++++++++++++++++++ > > arch/arm/boards/netgear-rn102/lowlevel.c | 58 ++++++++ > > arch/arm/dts/Makefile | 1 + > > arch/arm/dts/armada-370-rn102-bb.dts | 82 +++++++++++ > > arch/arm/mach-mvebu/Kconfig | 4 + > > images/Makefile.mvebu | 10 ++ > > 8 files changed, 403 insertions(+) > > > > diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile > > index dd2f2c324e..aca1b45a81 100644 > > --- a/arch/arm/boards/Makefile > > +++ b/arch/arm/boards/Makefile > > @@ -64,6 +64,7 @@ obj-$(CONFIG_MACH_MARVELL_ARMADA_XP_DB) += marvell-armada-xp-db/ > > obj-$(CONFIG_MACH_MX23EVK) += freescale-mx23-evk/ > > obj-$(CONFIG_MACH_MX28EVK) += freescale-mx28-evk/ > > obj-$(CONFIG_MACH_MYIRTECH_X335X) += myirtech-x335x/ > > +obj-$(CONFIG_MACH_NETGEAR_RN102) += netgear-rn102/ > > obj-$(CONFIG_MACH_NETGEAR_RN104) += netgear-rn104/ > > obj-$(CONFIG_MACH_NETGEAR_RN2120) += netgear-rn2120/ > > obj-$(CONFIG_MACH_NVIDIA_BEAVER) += nvidia-beaver/ > > diff --git a/arch/arm/boards/netgear-rn102/Makefile b/arch/arm/boards/netgear-rn102/Makefile > > new file mode 100644 > > index 0000000000..da63d2625f > > --- /dev/null > > +++ b/arch/arm/boards/netgear-rn102/Makefile > > @@ -0,0 +1,4 @@ > > +# SPDX-License-Identifier: GPL-2.0-only > > + > > +obj-y += board.o > > +lwl-y += lowlevel.o > > diff --git a/arch/arm/boards/netgear-rn102/board.c b/arch/arm/boards/netgear-rn102/board.c > > new file mode 100644 > > index 0000000000..dba3d11518 > > --- /dev/null > > +++ b/arch/arm/boards/netgear-rn102/board.c > > @@ -0,0 +1,243 @@ > > +// SPDX-License-Identifier: GPL-2.0-only > > + > > +#include <common.h> > > +#include <init.h> > > +#include <gpio.h> > > +#include <driver.h> > > +#include <of.h> > > +#include <linux/device.h> > > +#include <linux/mbus.h> > > +#include <mach/mvebu/armada-370-xp-regs.h> > > +#include <bbu.h> > > + > > +/* > > + * Early GPIO0 MMIO > > + * > > + * GPIO driver arrives too late for the disks to be > > + * ready in time for AHCI driver probe. > > barebox supports deep probe which means the devices are made available > once needed or requested. Provided your dts carries the > barebox,deep-probe property you can do this: > > of_device_ensure_probed_by_alias("gpio0"); > of_device_ensure_probed_by_alias("gpio1"); > of_device_ensure_probed_by_alias("gpio2"); > > From that on the GPIO driver should be probed and you can use it. > > It shouldn't be necessary to duplicate the GPIO driver here. > > > +/* > > + * RN102 board driver > > + * > > + * Preferred pattern: board-specific code as a platform driver > > + * matching on the root DT node ("netgear,rn102"). > > + */ > > +static int rn102_probe(struct device *dev) > > +{ > > + /* CFU configuration */ > > + writel(0xC6, 0xf1020228); > > + > > + setup_usb0(); > > + setup_bays(); > > + init_disks(); > > + > > + /* Barebox Update handlers */ > > + bbu_register_std_file_update("bootloader", 0, > > + "/dev/nand0.bootloader", > > + filetype_kwbimage_v1); > > + > > + bbu_register_std_file_update("kernel", 0, > > + "/dev/nand0.kernel", > > + filetype_arm_zimage); > > + > > + bbu_register_std_file_update("minirootfs", 0, > > + "/dev/nand0.minirootfs", > > + filetype_gzip); > > That is a creative use of barebox update handlers. They are designed for > updating barebox itself, not arbitrary other components. > > I must think about this. Hint: You can expose the kernel and minirootfs via fastboot partitions to get a nice user interface. Barebox can talk the fastboot protocol over USB or NET. Regards, Marco