[PATCH] econet: add EN751627 subtarget and ZyXEL EX3301-T0 support

Caleb James DeLisle cjd at cjdns.fr
Thu Apr 16 03:18:18 PDT 2026


On 16/04/2026 09:20, kpursoty at proton.me wrote:
> Thanks for your notes, I'm taking this as a teachable moment because
> I need to learn more about this process and device - I don't know how
> this device can boot and run if you target 24kc in the mkimage.

There are a fair few devices that are 1004kc, e.g. MT7621, they work as 
24kc - though I imagine they may be a little bit slower because they 
don't use all of the CPU instructions.

Do you have a EX3301-T0 that you're testing on?

Thanks,

Caleb

>
> Patch withdrawn.
>
> On Wednesday, 15 April 2026 at 23:13, Caleb James DeLisle <cjd at cjdns.fr> wrote:
>
>> It looks like we both just crossed each others' paths on the same day,
>> right down to adding the EX3301-T0.
>>
>> See: https://github.com/openwrt/openwrt/pull/22945
>>
>> I guess this is your patch:
>> https://github.com/openwrt/openwrt/compare/main...198thread:openwrt:econet/zyxel-ex3301-t0-pr
>>
>> It's pretty massive so I don't think it can be accepted as it is, but I
>> have some notes:
>>
>> 1. econet_eth should not be internalized as part of another PR, it's
>> currently external as https://github.com/cjdelisle/econet_eth and it
>> does not work on EN751627, if you have fixes for the problems then
>> please make a PR for it over there.
>>
>> 2. tclinux-trx.sh
>> <https://github.com/openwrt/openwrt/compare/main...198thread:openwrt:econet/zyxel-ex3301-t0-pr#diff-5aa6c2f83ed5cb7b89fb95b6ac4fb228b3dec3317f18d4c6ca38e914fbc6109c>->
>> Have you tested that this installs from the webapp? If yes, I'd like to
>> carve this out as it's own PR because it will make Zyxel units able to
>> install from web.
>>
>> 3. en75_sw_mdio_init -> Not really correct, that's not supposed to be
>> the eth driver, it's supposed to be a MMIO based switch, I'm mapping it
>> in the eth driver because I don't have a good switch driver ATM.
>>
>> 4. Kervin Pursoty and claude committed 2 days ago -> I can't speak for
>> the OpenWrt policy, but for me personally I'm OK with people using AI as
>> a tool, but I would encourage you to focus on small and obvious patches.
>>
>> But more importantly than that, I want to make sure you understand what
>> you're submitting; PARTICULARLY the description and comments. These Are
>> Your Words.
>>
>> Open source lives by trust that when someone says "I found a rare and
>> difficult to reproduce crash which is caused by <explanation>", that
>> this is written in honesty. Unfortunately, AI is infamous for
>> hallucinating messages just like that. So blindly forwarding commit
>> messages written by AI will almost certainly lead to committing the
>> equivalent of academic fraud.
>>
>> Thanks,
>>
>> Caleb
>>
>> On 15/04/2026 21:48, kpursoty at proton.me wrote:
>>> This adds support for the ZyXEL EX3301-T0, a DSL+WiFi gateway based on
>>> the EcoNet EN751627 (big-endian dual-core, 2-VPE-per-core MIPS 1004Kc SoC).
>>> The device has two MT7915/MT7916 PCIe WiFi cards, a QDMA Ethernet
>>> controller, NAND flash, and boots via the EcoNet ZHAL bootloader using
>>> TRX images.
>>>
>>> New files:
>>>     target/linux/econet/dts/en751627.dtsi
>>>     target/linux/econet/dts/en751627_zyxel_ex3301-t0.dts
>>>     target/linux/econet/en751627/config-6.12
>>>     target/linux/econet/en751627/target.mk           (CPU_TYPE=1004kc -> -mips32r2)
>>>     target/linux/econet/image/en751627.mk
>>>     target/linux/econet/files/drivers/net/ethernet/econet/   (EcoNet SoC Ethernet driver)
>>>     target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_tclinux.c
>>>
>>> Modified upstream files:
>>>     target/linux/econet/Makefile                  (register en751627 subtarget)
>>>     target/linux/econet/image/Makefile            (tclinux-trx build integration)
>>>     target/linux/econet/image/tclinux-trx.sh      (JAMCRC header writer)
>>>     target/linux/generic/files/drivers/mtd/mtdsplit/Kconfig
>>>     target/linux/generic/files/drivers/mtd/mtdsplit/Makefile
>>>     include/target.mk                             (CPU_CFLAGS_1004kc = -mips32r2 -mtune=1004kc)
>>>
>>> Patches carried until upstream kernel merges land:
>>>     018: dt-bindings: clock: airoha: update EN7523 binding for reset (v6.19-rc1 backport)
>>>     020: dt-bindings: clock: airoha: add reset support to EN7523 clock (v6.19-rc1 backport)
>>>     102: mips: econet: add EN751627 SoC Kconfig entry
>>>     104: clocksource: fix timer block mapping at boot (submitted upstream)
>>>     104b: clocksource: fix IRQ ack storm on interrupt handler (submitted upstream)
>>>     310: mips: econet: enable subsystem drivers (|| ECONET in Kconfigs + DMA_NONCOHERENT)
>>>     888: serial: base: console TX guard (submitted upstream)
>>>     930: net: econet: add EcoNet SoC Ethernet driver
>>>
>>> Upstream kernel patches 104 and 104b were sent to linux-kernel on
>>> 2026-04-15 and have received Reviewed-by / Tested-by from Caleb James
>>> DeLisle. Patch 888 was sent to linux-serial on the same date.
>>>
>>> A note on CPU_TYPE: the EN751627 is a MIPS 1004Kc. CPU_TYPE must be set to
>>> 1004kc (not 24kc) to get -mips32r2 -mtune=1004kc compiler flags. Without
>>> this, userspace is compiled as MIPS I baseline and every binary causes
>>> SIGILL on boot. The companion patch to include/target.mk adds the missing
>>> CPU_CFLAGS_1004kc entry (consistent with the existing 4kec, 24kc, 74kc
>>> entries) and is included in this series.
>>>
>>> Build verified on vanilla upstream openwrt/openwrt main (368f49ff85):
>>>     TRX VERDICT: PASS. Device booted to SSH, 4 CPUs online, LAN1-4 up,
>>>     PCIe WiFi enumerated, UBIFS overlay mounted.
>>>
>>> Branch: econet/zyxel-ex3301-t0-pr (198thread/openwrt.git)
>>>
>>> Signed-off-by: Kervin Pursoty <kpursoty at proton.me>
>>>
>>>



More information about the openwrt-devel mailing list