From nobody Sun Jul 26 11:52:32 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1777294531; cv=none; d=zohomail.com; s=zohoarc; b=bsAEwM/5jNIFnvjSDdwG+5Jjyd6qvKS0OExVSvcLzc6E7ifjOvgazuB1soxarabL6hV9rY50G4u9dh9f87utZ6gvWfpo36/iuLUnJWIRHkFHziP6NVpZLsgyxGHnEmI60km5LR5Oc2PtPaylGNAS+OiO7E/HqLh8vT9d1OeAeL4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777294531; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=9V9ypQhZMA6beD24MyNKWxp8/BYxr4ugvwVwFV1KVGM=; b=bMmmnnmAdS7Ap4wrVB6QN0Sf90gmOhNsHXbHXGndeoocbigHcKReDVmKirLwIWWfxTyGNQcsrfoSSTpOky3gzaBN2X49CrNDgc8RqjAbPDEfaOdTGAZAaEXKGBXVEqQ9ZJynTkkU9Ri4Q6YYaQZH9tsx9fKb/2SwuzfT/9AucVo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777294531517409.74949219963764; Mon, 27 Apr 2026 05:55:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wHLOv-0000jS-MV; Mon, 27 Apr 2026 08:49:27 -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 1wHLNa-0007tW-Mb for qemu-devel@nongnu.org; Mon, 27 Apr 2026 08:48:12 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wHLNR-0005VG-VV for qemu-devel@nongnu.org; Mon, 27 Apr 2026 08:48:00 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-48a3e9862f0so54014845e9.1 for ; Mon, 27 Apr 2026 05:47:53 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488ffc5e3f4sm448974115e9.2.2026.04.27.05.47.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Apr 2026 05:47:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777294072; x=1777898872; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=9V9ypQhZMA6beD24MyNKWxp8/BYxr4ugvwVwFV1KVGM=; b=Gfbni2pnj91UleX8weTK6IgZNpB2fbnt1nNNfdlthigKuP6Xb5sKukMcywZF7c9Mu5 myrsFy4EeOhVpj0q0U86vEmsqHxzTYVD2duCYaARWA1NL7S0QWdPPVhfVECC7Hxi/QUE vr8txEfeOC56zkBes2lyTct8tO0Sz+PxfcdnvZWItdIyp3XYTYo+PTd4E+YxPDXnV0dF 1pzciNGlzj6qPwfr9P4lNFUtF9ufC4fIJQC1/VMUGMyANb42ugfd6tgfdnWRGU3aa5P5 cQ21h3YnVWoyUqxnu5cJyGeBjG6tcNwOn51pYTTq1ehRK/Drgb+aEU51FFNh57MFPwd1 061w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777294072; x=1777898872; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9V9ypQhZMA6beD24MyNKWxp8/BYxr4ugvwVwFV1KVGM=; b=Rru4pbe4GJa5oVzy+k6VRnCw27DiM3y4u7axlRazhRVgXxsKB4ZYJbdJYihyTPHdzv A39TU5hVTMpOokOjtpQFe+RaNTCW5a3s962kc+Os0MYNgYfXsAoR1EaRkMtDAiqlirTh aje+g6z9e8Cgem24iduSHpYXs0USb1pRYbUIe98giZGkDGvt0e1ichvl94IPYfrAMQn2 IXht5OThpslwfuWUzrOUVlbNzmPBJ07cb7jN7sTkZqr513UGfRUl1SJCQmdkMDZ9+oIp Lj1tFXIwmMrbcVTDLDG9JqUjrl6E2POzELptqKtcdU71xzHseFYPxiTioQMB/pHq+BRD JBCg== X-Gm-Message-State: AOJu0YzsRHFbwTi84ZYny7T/3MG1qcLwrlEar6ZX5F6JLKJRsV4AhlhK kyr1RajKL0Ll/oPmaCwbPux2CP9WjG2IcTwCUjPo3cdn8GlaO5A+QL8DLOGQWJXs0xPwoklzVFo lcTea X-Gm-Gg: AeBDievqIPH5oqcKYrwlff7MNod/WnXPzklA3LgrBSrjETgtS85KJJrhcUJQbuWwQlw mBSgR+mGTrgWpAwDPmar22S2Xhz9nPZipZALQbmw/PZX7awwNpHt6jD4U715ut0olLsT4eHEjLJ uPQYBB07PPu9lVYyYPoVPp2cQ76jXi5/WjzO1PlvmDfB6Xza3H2s+DFWR0lTwM0ixy2It1XDE2y qFx9BZSMvMCsSKgydx9iboou5AVyBYJwm2TICHDio8ypwRkYK2v8xDq7H+NvQbCPdVXyp4p36kG hfl44nX5fT36uI5aAW1tt+Jd9Ilnsn/ToyhJMVWRffWRfb78LKArTuvFWnh2YefBrXrcnZDBH0u p0ujq7yjGDz2D4iLTNRcIltRjDgTIN6+85IKJNFTkVR01rlPEZjGXkOn5RZuCmItXx4Z2DdCOcb G7PFojjQcXWppK7OYXyudxzHeVw/x4UC6qv4VEgpZB9ok9JYGXt52za54AWPMPUK6e76hQu8h05 Skzr/11HJ9hQOBPjqBZ6TnpxkE9nbr+pBm/xRPzB6Bp/ZcQI3Ol X-Received: by 2002:a05:600d:8447:b0:486:f893:56c6 with SMTP id 5b1f17b1804b1-488fb8b18d1mr423170665e9.10.1777294072114; Mon, 27 Apr 2026 05:47:52 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/63] hw/arm/fsl-imx8mm: Adding support for USB controller Date: Mon, 27 Apr 2026 13:46:49 +0100 Message-ID: <20260427124738.966578-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260427124738.966578-1-peter.maydell@linaro.org> References: <20260427124738.966578-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.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, 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-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777294533028154100 Content-Type: text/plain; charset="utf-8" From: Gaurav Sharma It enables emulation of USB on iMX8MM Enables testing and debugging of USB drivers Reviewed-by: Philippe Mathieu-Daude Reviewed-by: Peter Maydell Reviewed-by: Bernhard Beschow Signed-off-by: Gaurav Sharma Signed-off-by: Peter Maydell --- hw/arm/Kconfig | 1 + hw/arm/fsl-imx8mm.c | 27 +++++++++++++++++++++++++++ include/hw/arm/fsl-imx8mm.h | 6 ++++++ 3 files changed, 34 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 104954d90d..b940af9345 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -631,6 +631,7 @@ config FSL_IMX8MM select SDHCI select PCI_EXPRESS_DESIGNWARE select PCI_EXPRESS_FSL_IMX8M_PHY + select USB_DWC3 select WDT_IMX2 =20 config FSL_IMX8MM_EVK diff --git a/hw/arm/fsl-imx8mm.c b/hw/arm/fsl-imx8mm.c index f1c173dbec..97c3f8542c 100644 --- a/hw/arm/fsl-imx8mm.c +++ b/hw/arm/fsl-imx8mm.c @@ -202,6 +202,11 @@ static void fsl_imx8mm_init(Object *obj) object_initialize_child(obj, name, &s->usdhc[i], TYPE_IMX_USDHC); } =20 + for (i =3D 0; i < FSL_IMX8MM_NUM_USBS; i++) { + g_autofree char *name =3D g_strdup_printf("usb%d", i); + object_initialize_child(obj, name, &s->usb[i], TYPE_USB_DWC3); + } + for (i =3D 0; i < FSL_IMX8MM_NUM_ECSPIS; i++) { g_autofree char *name =3D g_strdup_printf("spi%d", i + 1); object_initialize_child(obj, name, &s->spi[i], TYPE_IMX_SPI); @@ -529,6 +534,27 @@ static void fsl_imx8mm_realize(DeviceState *dev, Error= **errp) qdev_get_gpio_in(gicdev, usdhc_table[i].irq)); } =20 + /* USBs */ + for (i =3D 0; i < FSL_IMX8MM_NUM_USBS; i++) { + static const struct { + hwaddr addr; + unsigned int irq; + } usb_table[FSL_IMX8MM_NUM_USBS] =3D { + { fsl_imx8mm_memmap[FSL_IMX8MM_USB1].addr, FSL_IMX8MM_USB1_IRQ= }, + { fsl_imx8mm_memmap[FSL_IMX8MM_USB2].addr, FSL_IMX8MM_USB2_IRQ= }, + }; + + qdev_prop_set_uint32(DEVICE(&s->usb[i].sysbus_xhci), "p2", 1); + qdev_prop_set_uint32(DEVICE(&s->usb[i].sysbus_xhci), "p3", 1); + qdev_prop_set_uint32(DEVICE(&s->usb[i].sysbus_xhci), "slots", 2); + if (!sysbus_realize(SYS_BUS_DEVICE(&s->usb[i]), errp)) { + return; + } + sysbus_mmio_map(SYS_BUS_DEVICE(&s->usb[i]), 0, usb_table[i].addr); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->usb[i].sysbus_xhci), 0, + qdev_get_gpio_in(gicdev, usb_table[i].irq)); + } + /* ECSPIs */ for (i =3D 0; i < FSL_IMX8MM_NUM_ECSPIS; i++) { static const struct { @@ -635,6 +661,7 @@ static void fsl_imx8mm_realize(DeviceState *dev, Error = **errp) case FSL_IMX8MM_OCRAM: case FSL_IMX8MM_SNVS_HP: case FSL_IMX8MM_UART1 ... FSL_IMX8MM_UART4: + case FSL_IMX8MM_USB1 ... FSL_IMX8MM_USB2: case FSL_IMX8MM_USDHC1 ... FSL_IMX8MM_USDHC3: case FSL_IMX8MM_WDOG1 ... FSL_IMX8MM_WDOG3: /* device implemented and treated above */ diff --git a/include/hw/arm/fsl-imx8mm.h b/include/hw/arm/fsl-imx8mm.h index bc5a0922ad..60d79a6e3c 100644 --- a/include/hw/arm/fsl-imx8mm.h +++ b/include/hw/arm/fsl-imx8mm.h @@ -25,6 +25,7 @@ #include "hw/sd/sdhci.h" #include "hw/ssi/imx_spi.h" #include "hw/timer/imx_gpt.h" +#include "hw/usb/hcd-dwc3.h" #include "hw/watchdog/wdt_imx2.h" #include "qom/object.h" #include "qemu/units.h" @@ -43,6 +44,7 @@ enum FslImx8mmConfiguration { FSL_IMX8MM_NUM_I2CS =3D 4, FSL_IMX8MM_NUM_IRQS =3D 128, FSL_IMX8MM_NUM_UARTS =3D 4, + FSL_IMX8MM_NUM_USBS =3D 2, FSL_IMX8MM_NUM_USDHCS =3D 3, FSL_IMX8MM_NUM_WDTS =3D 3, }; @@ -64,6 +66,7 @@ struct FslImx8mmState { IMXFECState enet; SDHCIState usdhc[FSL_IMX8MM_NUM_USDHCS]; IMX2WdtState wdt[FSL_IMX8MM_NUM_WDTS]; + USBDWC3 usb[FSL_IMX8MM_NUM_USBS]; DesignwarePCIEHost pcie; FslImx8mPciePhyState pcie_phy; OrIRQState gpt5_gpt6_irq; @@ -202,6 +205,9 @@ enum FslImx8mmIrqs { FSL_IMX8MM_I2C3_IRQ =3D 37, FSL_IMX8MM_I2C4_IRQ =3D 38, =20 + FSL_IMX8MM_USB1_IRQ =3D 40, + FSL_IMX8MM_USB2_IRQ =3D 41, + FSL_IMX8MM_GPT1_IRQ =3D 55, FSL_IMX8MM_GPT2_IRQ =3D 54, FSL_IMX8MM_GPT3_IRQ =3D 53, --=20 2.43.0