From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 16682606A31A for ; Fri, 23 Oct 2026 14:01:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=GwdNqafo Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1xKFoy-0001rl-9z; Fri, 23 Oct 2026 10:00:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1xKFoB-0000t6-Lz for qemu-devel@nongnu.org; Fri, 23 Oct 2026 09:59:49 -0400 Received: from mail-qv1-xf2c.google.com ([2607:f8b0:4864:20::f2c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1xKFo7-0004sh-3b for qemu-devel@nongnu.org; Fri, 23 Oct 2026 09:59:47 -0400 Received: by mail-qv1-xf2c.google.com with SMTP id 6a1803df08f44-91b54d1e9cdso8183216d6.1 for ; Fri, 23 Oct 2026 06:59:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792763982; x=1793368782; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BJsB6fS6z4gzM4CvmbXU27cB5kn+bKI9xPT6Y+2F2Zk=; b=GwdNqafo6phBZG2ZweJVPe6t28oUuy1UWttekwHtxTEoSMm2jjmApg+Wk3zJ1DFLS4 byuL3Y5qhiYG0IsgPGpU0jl7XEVakfVZ47gQZAOiLxL3v739yAwTsL8hk2WdvmtGE/Fw vfA19Tm+OrHNGK3Q0FRmIYauvcsqLkO79pT9relGaQPxawY1g8NHY4U8hBSJgkAeY6QZ 5IQuS9vYjI7a5WPCr69Xpg2NT4ymXX0Xqg+Db01d7BP+vWA3jZnTp7aJ5O4zEwT1RlDg zvOKQ+v1DX7gKXNfsZ1l9XJQ1KVTAi+pbdNUQJlVXa2RYoQFJ0TtzyuuWsqUG8JdmvWR rOkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792763982; x=1793368782; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=BJsB6fS6z4gzM4CvmbXU27cB5kn+bKI9xPT6Y+2F2Zk=; b=Ch3erEyqWEn6Ka0x2/RoAgT5LuQWaCM9NzmR+Va+jFAhIoExnFGw2RRfaHFO7FMziZ vFjXjg2+i968k37ksqQNwTvMzrmukbfiiSoeJL2/ZIFefW+6LEIBoexc0mYJ7XThDCJp ToLObkkyTq5JUGypQr+N0KuqSiGNoN+wLOR737CGyK6hGdKfqrFhYWFBI8sXKtf9cORN I9dZA0EUejzhOEVymPImYCl9agcOvTzpTFqJEWqDRaT6gaK4oG5PJhIChv1iNLFYXTDI iAElo/D6IU2sKPng75MAcSvqZ071945hhiH7ASyyzwGm7T24eievaovTSyMoCQdhMMsx bOQg== X-Gm-Message-State: AFq9FYJEoM4M2cPTTBsCMz2m6iBwlKN49+4cOTVanS84TmVAifkfVVn8 Ytgl7ZrT71Hy1kLjDTPvEVFajsFA27CbingjJ0EH/XAY816tzZOvprgITVk9Jsdi X-Gm-Gg: AYBFou2R0eJR8rQSd7fq/LFFvK09vUDjIbXx1ilxT2qVfO+TWpNtUrI8c+nDS2o/opc Q4CIUIm8E1/CqMWwDumHbwfVr6GzujCKqJwK95yRSqGVnOPkfo4Xd5tKxee5/FxQFTUk9qqG8vT M5iuu0gDMQ/II5pyfMPGgQ9sgUceF4kkon+Gpgax3fZ1eU3SNfascNOEiOAri6VexXoKwgHEkt0 kfpvGWNIWssh6QJM2CpATaNX4TQ5SZ1fCT5b8V09qPbyipGXJ3JWX1TxZjSzMIgt0wjrkmS+orJ kduDSj6+Szc9EtGkUihLo+xJw3J9wJBWdwaqHXrLbIOZAZpg6cVp5aEM9btSnDCiulRUsL5HGYB jVymT9fyDO7urtNNcUsOKCB/nJfMxHvmmqp8QjrMX33klTlSaZkQXENl6JKani0B03WVcVpsKjs qI+MYkt9aElbXLQUHSrrxoN3gnBFaOA2+C5tkPVkB1P0iIgWR/IyBjlNLredJuHqZHzifmaP6Q5 ZnSSgsSygsrgJPB8FACyiYl5ufOQrhjJnh/E8oEzQMeaim3nzhc1kjMMzTua8NIBFZXPOXQzedM budWPDzEg8VO16VhtX99LCE+FsmrrV3Lqz64n8rAMF0oLEksGwL3j+c1KfuHT9eLRRzytyXZoQ= = X-Received: by 2002:a05:620a:3715:b0:93e:f97f:f245 with SMTP id af79cd13be357-93f6f7ae31bmr422231885a.30.1792763982143; Fri, 23 Oct 2026 06:59:42 -0700 (PDT) Received: from localhost.localdomain ([2606:6d00:159:2900:450e:e72b:156b:33d1]) by smtp.gmail.com with ESMTPSA id af79cd13be357-94047811552sm23741285a.18.2026.10.23.06.59.41 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 23 Oct 2026 06:59:41 -0700 (PDT) From: Marcelo Manzo To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com, Marcelo Manzo Subject: [PATCH v5 14/16] hw/arm/bcm2838: enable BCM2838 GENET controller Date: Fri, 23 Oct 2026 09:59:22 -0400 Message-ID: <20261023135924.64990-16-marcelomanzo@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20261023135924.64990-1-marcelomanzo@gmail.com> References: <20261023135924.64990-1-marcelomanzo@gmail.com> X-Archived-By: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::f2c; envelope-from=marcelomanzo@gmail.com; helo=mail-qv1-xf2c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 Wire the BCM2838 GENET device (added in the previous patches) into the SoC: instantiate it in the peripherals block with qemu_configure_nic_device() so it picks up a -nic/-netdev from the command line, map its register region at the real BCM2711 physical offset, and route its two interrupt lines through the GIC. Also stop raspi4b from masking out the "brcm,bcm2711-genet-v5" device-tree node, now that the controller it describes is actually implemented. Adapted from patches 19-29/41 of Sergey Kambalin's Raspberry Pi 4B series (patchwork series 829638) against current QEMU master. Signed-off-by: Marcelo Manzo Reviewed-by: Peter Maydell --- hw/arm/bcm2838.c | 6 ++++++ hw/arm/bcm2838_peripherals.c | 11 +++++++++++ hw/arm/raspi4b.c | 1 - include/hw/arm/bcm2838_peripherals.h | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hw/arm/bcm2838.c b/hw/arm/bcm2838.c index 8f8e107c56..f0076a08ce 100644 --- a/hw/arm/bcm2838.c +++ b/hw/arm/bcm2838.c @@ -237,6 +237,12 @@ static void bcm2838_realize(DeviceState *dev, Error **errp) qdev_get_gpio_in(gicdev, int_n)); } + /* Connect Gigabit Ethernet controller to the interrupt controller */ + sysbus_connect_irq(SYS_BUS_DEVICE(&ps->genet), 0, + qdev_get_gpio_in(gicdev, GIC_SPI_INTERRUPT_GENET_A)); + sysbus_connect_irq(SYS_BUS_DEVICE(&ps->genet), 1, + qdev_get_gpio_in(gicdev, GIC_SPI_INTERRUPT_GENET_B)); + /* Pass through inbound GPIO lines to the GIC */ qdev_init_gpio_in(dev, bcm2838_gic_set_irq, GIC_NUM_IRQS); diff --git a/hw/arm/bcm2838_peripherals.c b/hw/arm/bcm2838_peripherals.c index d923ba968a..012a4567e7 100644 --- a/hw/arm/bcm2838_peripherals.c +++ b/hw/arm/bcm2838_peripherals.c @@ -44,6 +44,10 @@ static void bcm2838_peripherals_init(Object *obj) object_initialize_child(obj, "pcie-host", &s->pcie_host, TYPE_BCM2838_PCIE_HOST); + /* Gigabit Ethernet */ + object_initialize_child(obj, "genet", &s->genet, TYPE_BCM2838_GENET); + qemu_configure_nic_device(DEVICE(&s->genet), true, NULL); + /* GPIO */ object_initialize_child(obj, "gpio", &s->gpio, TYPE_BCM2838_GPIO); @@ -217,6 +221,13 @@ static void bcm2838_peripherals_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(get_system_memory(), PCIE_MMIO_ARM_OFFSET, &s->pcie_mmio_alias); + /* Gigabit Ethernet */ + if (!sysbus_realize(SYS_BUS_DEVICE(&s->genet), errp)) { + return; + } + regs_mr = sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->genet), 0); + memory_region_add_subregion(&s->peri_low_mr, GENET_OFFSET, regs_mr); + /* GPIO */ if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio), errp)) { return; diff --git a/hw/arm/raspi4b.c b/hw/arm/raspi4b.c index 931f2cca67..6076b43922 100644 --- a/hw/arm/raspi4b.c +++ b/hw/arm/raspi4b.c @@ -65,7 +65,6 @@ static void raspi4_modify_dtb(const struct arm_boot_info *info, void *fdt) const char *nodes_to_remove[] = { "brcm,bcm2711-rng200", "brcm,bcm2711-thermal", - "brcm,bcm2711-genet-v5", }; for (int i = 0; i < ARRAY_SIZE(nodes_to_remove); i++) { diff --git a/include/hw/arm/bcm2838_peripherals.h b/include/hw/arm/bcm2838_peripherals.h index 2a4307bed7..deddab50d2 100644 --- a/include/hw/arm/bcm2838_peripherals.h +++ b/include/hw/arm/bcm2838_peripherals.h @@ -11,6 +11,7 @@ #include "hw/arm/bcm2835_peripherals.h" #include "hw/arm/bcm2838_pcie.h" +#include "hw/net/bcm2838_genet.h" #include "hw/sd/sdhci.h" #include "hw/gpio/bcm2838_gpio.h" @@ -70,6 +71,7 @@ struct BCM2838PeripheralState { SDHCIState emmc2; MemoryRegion pcie_mmio_alias; BCM2838PcieHostState pcie_host; + BCM2838GenetState genet; BCM2838GpioState gpio; OrIRQState mmc_irq_orgate; -- 2.55.0