From nobody Fri May  9 00:15:14 2025
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=1693478809; cv=none;
	d=zohomail.com; s=zohoarc;
	b=HlS/0Smu1PZ55yfvpAM3zK84CqT50AVD9Iclnj0d16f1Ku0kPgarZfqpQkKwvnyo2eHaR9UkjmpleWLBcOQJ+X/dD3ZSJ2SB9kWrDp9BE8LozOX9zgj6dBMFTjtFqTR4U7R3cYW7OAzMo2zXDf4DEoaaqp3kqGvpQQfWrUGTStg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc;
	t=1693478809;
 h=Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To;
	bh=mfV/nwKI+irh9L62+dwToCu1Oo8P6yPQqKVntEFfbpw=;
	b=MkcYfcpsKyrDufHxgfIHtyknNeA9E7wyHkbOCNizaEH4e3WoKrNMw3alpw3sZenRy+H3q+5IemABTo3/c3lg9xBSVLuvNpOVoKoBOQx4PcnHFbOtiDumFBMTqzT6XUrotZd8fP5Ne+chFVGu7wZP0f7Mb+DnwFy3mu6IUv8MBvI=
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=<peter.maydell@linaro.org> (p=none dis=none)
Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org>
Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by
 mx.zohomail.com
	with SMTPS id 1693478809227130.69709677621552;
 Thu, 31 Aug 2023 03:46:49 -0700 (PDT)
Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <qemu-devel-bounces@nongnu.org>)
	id 1qbfBI-0003nB-SF; Thu, 31 Aug 2023 06:45:44 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1qbfBB-0003di-Cq
 for qemu-devel@nongnu.org; Thu, 31 Aug 2023 06:45:37 -0400
Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <peter.maydell@linaro.org>)
 id 1qbfB3-00043u-9q
 for qemu-devel@nongnu.org; Thu, 31 Aug 2023 06:45:33 -0400
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4013454fa93so6503055e9.0
 for <qemu-devel@nongnu.org>; Thu, 31 Aug 2023 03:45:27 -0700 (PDT)
Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2])
 by smtp.gmail.com with ESMTPSA id
 l5-20020adfe585000000b0031c71693449sm1785524wrm.1.2023.08.31.03.45.26
 for <qemu-devel@nongnu.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Aug 2023 03:45:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=linaro.org; s=google; t=1693478726; x=1694083526; 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=mfV/nwKI+irh9L62+dwToCu1Oo8P6yPQqKVntEFfbpw=;
 b=TRdkKHuhpNO63Yt2W90OmncD/LzbBjIeSyslhU6UXHV8/CR95FeMtIO655T5wa4Ce+
 opP1Sp1IjWQV73TlVYSsw4gzR15ehlBYuYHsl2nElcuEgoG21nIjLL850Lc4LwJnE7JD
 6MJRvhaSOMCoiiMF3LA9OyiR4NZyoIn/BoT6iMq64aF6BcK2bz4gPMtKzpA8mqzFFB/g
 koqYVzN9rlgwUd5k8Wr1jdky7nAdAv7zUNvVt50rnNBEp0LjLTzkbft98fYDGJyQ20zX
 SvXlZeqlYxPyNehv5GSUspZE9wX+ZFAPSOCpp2EeR7zUwaVyyPVXd04t8MTzkh1bBA91
 ViLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20221208; t=1693478726; x=1694083526;
 h=content-transfer-encoding:mime-version:references:in-reply-to
 :message-id:date:subject:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=mfV/nwKI+irh9L62+dwToCu1Oo8P6yPQqKVntEFfbpw=;
 b=D+ujtHSoo9Fl/9TkShpiJIgp2NPws9HXIx+g3DHcJiKDl7kdsvLGz3nf5y76PTHzWB
 E+d/Prm60UTvjpZoeoziHhk6fF2YbLBRq7qrP7hseXvGdAwzN0GpRAUASizR/KyZ4dO8
 nLYvgH3x2Jqy62s8GMDpJSzFnzXM6sx0duyOQdEHQiq/cZsR7pxZ4s+aWSzG/JDZHsyr
 WSMjazjCc0nNQqhHgsWuOzEurwPg/Zv9u61y3gTw/qr4bmGksl6dvmRe77D72dQHP7Bv
 VOuPl0xrPynMeaARpACiCMulZZEhPOrq0Sip0Y8FFlG6Lbp0BFvJ5omOFs/uo0CH+pBL
 YtXA==
X-Gm-Message-State: AOJu0YwUMj6u015dpPqOPQpjt8AZX7qO91p1efIStfKrULNvdu4QXmCs
 Fj4Yv+2joRaUTkZ/9zJxQw2KDzt7RQK+2hqfnYU=
X-Google-Smtp-Source: 
 AGHT+IHelscb0i4XhlS3G2dZuThcPRb9bqzVNZBsblO1/zj6GtXcJlQU/X4rv4pASX8ViL7UdOl4kg==
X-Received: by 2002:a05:600c:b57:b0:401:aa8f:7570 with SMTP id
 k23-20020a05600c0b5700b00401aa8f7570mr3633409wmr.1.1693478726479;
 Thu, 31 Aug 2023 03:45:26 -0700 (PDT)
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PULL 14/24] Refactor i.MX7 processor code
Date: Thu, 31 Aug 2023 11:45:09 +0100
Message-Id: <20230831104519.3520658-15-peter.maydell@linaro.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20230831104519.3520658-1-peter.maydell@linaro.org>
References: <20230831104519.3520658-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=lists.gnu.org;
Received-SPF: pass client-ip=2a00:1450:4864:20::331;
 envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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-devel.nongnu.org>
List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel>
List-Post: <mailto:qemu-devel@nongnu.org>
List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>,
 <mailto:qemu-devel-request@nongnu.org?subject=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: 1693478810039100001
Content-Type: text/plain; charset="utf-8"

From: Jean-Christophe Dubois <jcd@tribudubois.net>

* Add Addr and size definition for all i.MX7 devices in i.MX7 header file.
* Use those newly defined named constants whenever possible.
* Standardize the way we init a familly of unimplemented devices
  - SAI
  - PWM
  - CAN
* Add/rework few comments

Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net>
Message-id: 59e195d33e4d486a8d131392acd46633c8c10ed7.1692964892.git.jcd@tri=
budubois.net
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 include/hw/arm/fsl-imx7.h | 330 ++++++++++++++++++++++++++++----------
 hw/arm/fsl-imx7.c         | 130 ++++++++++-----
 2 files changed, 335 insertions(+), 125 deletions(-)

diff --git a/include/hw/arm/fsl-imx7.h b/include/hw/arm/fsl-imx7.h
index fcce6421c8c..06b2c5e4acf 100644
--- a/include/hw/arm/fsl-imx7.h
+++ b/include/hw/arm/fsl-imx7.h
@@ -25,7 +25,6 @@
 #include "hw/misc/imx7_ccm.h"
 #include "hw/misc/imx7_snvs.h"
 #include "hw/misc/imx7_gpr.h"
-#include "hw/misc/imx6_src.h"
 #include "hw/watchdog/wdt_imx2.h"
 #include "hw/gpio/imx_gpio.h"
 #include "hw/char/imx_serial.h"
@@ -39,6 +38,7 @@
 #include "hw/usb/chipidea.h"
 #include "cpu.h"
 #include "qom/object.h"
+#include "qemu/units.h"
=20
 #define TYPE_FSL_IMX7 "fsl-imx7"
 OBJECT_DECLARE_SIMPLE_TYPE(FslIMX7State, FSL_IMX7)
@@ -57,6 +57,9 @@ enum FslIMX7Configuration {
     FSL_IMX7_NUM_ECSPIS       =3D 4,
     FSL_IMX7_NUM_USBS         =3D 3,
     FSL_IMX7_NUM_ADCS         =3D 2,
+    FSL_IMX7_NUM_SAIS         =3D 3,
+    FSL_IMX7_NUM_CANS         =3D 2,
+    FSL_IMX7_NUM_PWMS         =3D 4,
 };
=20
 struct FslIMX7State {
@@ -87,80 +90,106 @@ struct FslIMX7State {
=20
 enum FslIMX7MemoryMap {
     FSL_IMX7_MMDC_ADDR            =3D 0x80000000,
-    FSL_IMX7_MMDC_SIZE            =3D 2 * 1024 * 1024 * 1024UL,
+    FSL_IMX7_MMDC_SIZE            =3D (2 * GiB),
=20
-    FSL_IMX7_GPIO1_ADDR           =3D 0x30200000,
-    FSL_IMX7_GPIO2_ADDR           =3D 0x30210000,
-    FSL_IMX7_GPIO3_ADDR           =3D 0x30220000,
-    FSL_IMX7_GPIO4_ADDR           =3D 0x30230000,
-    FSL_IMX7_GPIO5_ADDR           =3D 0x30240000,
-    FSL_IMX7_GPIO6_ADDR           =3D 0x30250000,
-    FSL_IMX7_GPIO7_ADDR           =3D 0x30260000,
+    FSL_IMX7_QSPI1_MEM_ADDR       =3D 0x60000000,
+    FSL_IMX7_QSPI1_MEM_SIZE       =3D (256 * MiB),
=20
-    FSL_IMX7_IOMUXC_LPSR_GPR_ADDR =3D 0x30270000,
+    FSL_IMX7_PCIE1_MEM_ADDR       =3D 0x40000000,
+    FSL_IMX7_PCIE1_MEM_SIZE       =3D (256 * MiB),
=20
-    FSL_IMX7_WDOG1_ADDR           =3D 0x30280000,
-    FSL_IMX7_WDOG2_ADDR           =3D 0x30290000,
-    FSL_IMX7_WDOG3_ADDR           =3D 0x302A0000,
-    FSL_IMX7_WDOG4_ADDR           =3D 0x302B0000,
+    FSL_IMX7_QSPI1_RX_BUF_ADDR    =3D 0x34000000,
+    FSL_IMX7_QSPI1_RX_BUF_SIZE    =3D (32 * MiB),
=20
-    FSL_IMX7_IOMUXC_LPSR_ADDR     =3D 0x302C0000,
+    /* PCIe Peripherals */
+    FSL_IMX7_PCIE_REG_ADDR        =3D 0x33800000,
=20
-    FSL_IMX7_GPT1_ADDR            =3D 0x302D0000,
-    FSL_IMX7_GPT2_ADDR            =3D 0x302E0000,
-    FSL_IMX7_GPT3_ADDR            =3D 0x302F0000,
-    FSL_IMX7_GPT4_ADDR            =3D 0x30300000,
+    /* MMAP Peripherals */
+    FSL_IMX7_DMA_APBH_ADDR        =3D 0x33000000,
+    FSL_IMX7_DMA_APBH_SIZE        =3D 0x8000,
=20
-    FSL_IMX7_IOMUXC_ADDR          =3D 0x30330000,
-    FSL_IMX7_IOMUXC_GPR_ADDR      =3D 0x30340000,
-    FSL_IMX7_IOMUXCn_SIZE         =3D 0x1000,
+    /* GPV configuration */
+    FSL_IMX7_GPV6_ADDR            =3D 0x32600000,
+    FSL_IMX7_GPV5_ADDR            =3D 0x32500000,
+    FSL_IMX7_GPV4_ADDR            =3D 0x32400000,
+    FSL_IMX7_GPV3_ADDR            =3D 0x32300000,
+    FSL_IMX7_GPV2_ADDR            =3D 0x32200000,
+    FSL_IMX7_GPV1_ADDR            =3D 0x32100000,
+    FSL_IMX7_GPV0_ADDR            =3D 0x32000000,
+    FSL_IMX7_GPVn_SIZE            =3D (1 * MiB),
=20
-    FSL_IMX7_OCOTP_ADDR           =3D 0x30350000,
-    FSL_IMX7_OCOTP_SIZE           =3D 0x10000,
+    /* Arm Peripherals */
+    FSL_IMX7_A7MPCORE_ADDR        =3D 0x31000000,
=20
-    FSL_IMX7_ANALOG_ADDR          =3D 0x30360000,
-    FSL_IMX7_SNVS_ADDR            =3D 0x30370000,
-    FSL_IMX7_CCM_ADDR             =3D 0x30380000,
+    /* AIPS-3 Begin */
=20
-    FSL_IMX7_SRC_ADDR             =3D 0x30390000,
-    FSL_IMX7_SRC_SIZE             =3D 0x1000,
+    FSL_IMX7_ENET2_ADDR           =3D 0x30BF0000,
+    FSL_IMX7_ENET1_ADDR           =3D 0x30BE0000,
=20
-    FSL_IMX7_ADC1_ADDR            =3D 0x30610000,
-    FSL_IMX7_ADC2_ADDR            =3D 0x30620000,
-    FSL_IMX7_ADCn_SIZE            =3D 0x1000,
+    FSL_IMX7_SDMA_ADDR            =3D 0x30BD0000,
+    FSL_IMX7_SDMA_SIZE            =3D (4 * KiB),
=20
-    FSL_IMX7_PWM1_ADDR            =3D 0x30660000,
-    FSL_IMX7_PWM2_ADDR            =3D 0x30670000,
-    FSL_IMX7_PWM3_ADDR            =3D 0x30680000,
-    FSL_IMX7_PWM4_ADDR            =3D 0x30690000,
-    FSL_IMX7_PWMn_SIZE            =3D 0x10000,
+    FSL_IMX7_EIM_ADDR             =3D 0x30BC0000,
+    FSL_IMX7_EIM_SIZE             =3D (4 * KiB),
=20
-    FSL_IMX7_PCIE_PHY_ADDR        =3D 0x306D0000,
-    FSL_IMX7_PCIE_PHY_SIZE        =3D 0x10000,
+    FSL_IMX7_QSPI_ADDR            =3D 0x30BB0000,
+    FSL_IMX7_QSPI_SIZE            =3D 0x8000,
=20
-    FSL_IMX7_GPC_ADDR             =3D 0x303A0000,
+    FSL_IMX7_SIM2_ADDR            =3D 0x30BA0000,
+    FSL_IMX7_SIM1_ADDR            =3D 0x30B90000,
+    FSL_IMX7_SIMn_SIZE            =3D (4 * KiB),
+
+    FSL_IMX7_USDHC3_ADDR          =3D 0x30B60000,
+    FSL_IMX7_USDHC2_ADDR          =3D 0x30B50000,
+    FSL_IMX7_USDHC1_ADDR          =3D 0x30B40000,
+
+    FSL_IMX7_USB3_ADDR            =3D 0x30B30000,
+    FSL_IMX7_USBMISC3_ADDR        =3D 0x30B30200,
+    FSL_IMX7_USB2_ADDR            =3D 0x30B20000,
+    FSL_IMX7_USBMISC2_ADDR        =3D 0x30B20200,
+    FSL_IMX7_USB1_ADDR            =3D 0x30B10000,
+    FSL_IMX7_USBMISC1_ADDR        =3D 0x30B10200,
+    FSL_IMX7_USBMISCn_SIZE        =3D 0x200,
+
+    FSL_IMX7_USB_PL301_ADDR       =3D 0x30AD0000,
+    FSL_IMX7_USB_PL301_SIZE       =3D (64 * KiB),
+
+    FSL_IMX7_SEMAPHORE_HS_ADDR    =3D 0x30AC0000,
+    FSL_IMX7_SEMAPHORE_HS_SIZE    =3D (64 * KiB),
+
+    FSL_IMX7_MUB_ADDR             =3D 0x30AB0000,
+    FSL_IMX7_MUA_ADDR             =3D 0x30AA0000,
+    FSL_IMX7_MUn_SIZE             =3D (KiB),
+
+    FSL_IMX7_UART7_ADDR           =3D 0x30A90000,
+    FSL_IMX7_UART6_ADDR           =3D 0x30A80000,
+    FSL_IMX7_UART5_ADDR           =3D 0x30A70000,
+    FSL_IMX7_UART4_ADDR           =3D 0x30A60000,
+
+    FSL_IMX7_I2C4_ADDR            =3D 0x30A50000,
+    FSL_IMX7_I2C3_ADDR            =3D 0x30A40000,
+    FSL_IMX7_I2C2_ADDR            =3D 0x30A30000,
+    FSL_IMX7_I2C1_ADDR            =3D 0x30A20000,
+
+    FSL_IMX7_CAN2_ADDR            =3D 0x30A10000,
+    FSL_IMX7_CAN1_ADDR            =3D 0x30A00000,
+    FSL_IMX7_CANn_SIZE            =3D (4 * KiB),
+
+    FSL_IMX7_AIPS3_CONF_ADDR      =3D 0x309F0000,
+    FSL_IMX7_AIPS3_CONF_SIZE      =3D (64 * KiB),
=20
     FSL_IMX7_CAAM_ADDR            =3D 0x30900000,
-    FSL_IMX7_CAAM_SIZE            =3D 0x40000,
+    FSL_IMX7_CAAM_SIZE            =3D (256 * KiB),
=20
-    FSL_IMX7_CAN1_ADDR            =3D 0x30A00000,
-    FSL_IMX7_CAN2_ADDR            =3D 0x30A10000,
-    FSL_IMX7_CANn_SIZE            =3D 0x10000,
+    FSL_IMX7_SPBA_ADDR            =3D 0x308F0000,
+    FSL_IMX7_SPBA_SIZE            =3D (4 * KiB),
=20
-    FSL_IMX7_I2C1_ADDR            =3D 0x30A20000,
-    FSL_IMX7_I2C2_ADDR            =3D 0x30A30000,
-    FSL_IMX7_I2C3_ADDR            =3D 0x30A40000,
-    FSL_IMX7_I2C4_ADDR            =3D 0x30A50000,
+    FSL_IMX7_SAI3_ADDR            =3D 0x308C0000,
+    FSL_IMX7_SAI2_ADDR            =3D 0x308B0000,
+    FSL_IMX7_SAI1_ADDR            =3D 0x308A0000,
+    FSL_IMX7_SAIn_SIZE            =3D (4 * KiB),
=20
-    FSL_IMX7_ECSPI1_ADDR          =3D 0x30820000,
-    FSL_IMX7_ECSPI2_ADDR          =3D 0x30830000,
-    FSL_IMX7_ECSPI3_ADDR          =3D 0x30840000,
-    FSL_IMX7_ECSPI4_ADDR          =3D 0x30630000,
-
-    FSL_IMX7_LCDIF_ADDR           =3D 0x30730000,
-    FSL_IMX7_LCDIF_SIZE           =3D 0x1000,
-
-    FSL_IMX7_UART1_ADDR           =3D 0x30860000,
+    FSL_IMX7_UART3_ADDR           =3D 0x30880000,
     /*
      * Some versions of the reference manual claim that UART2 is @
      * 0x30870000, but experiments with HW + DT files in upstream
@@ -168,45 +197,174 @@ enum FslIMX7MemoryMap {
      * actually located @ 0x30890000
      */
     FSL_IMX7_UART2_ADDR           =3D 0x30890000,
-    FSL_IMX7_UART3_ADDR           =3D 0x30880000,
-    FSL_IMX7_UART4_ADDR           =3D 0x30A60000,
-    FSL_IMX7_UART5_ADDR           =3D 0x30A70000,
-    FSL_IMX7_UART6_ADDR           =3D 0x30A80000,
-    FSL_IMX7_UART7_ADDR           =3D 0x30A90000,
+    FSL_IMX7_UART1_ADDR           =3D 0x30860000,
=20
-    FSL_IMX7_SAI1_ADDR            =3D 0x308A0000,
-    FSL_IMX7_SAI2_ADDR            =3D 0x308B0000,
-    FSL_IMX7_SAI3_ADDR            =3D 0x308C0000,
-    FSL_IMX7_SAIn_SIZE            =3D 0x10000,
+    FSL_IMX7_ECSPI3_ADDR          =3D 0x30840000,
+    FSL_IMX7_ECSPI2_ADDR          =3D 0x30830000,
+    FSL_IMX7_ECSPI1_ADDR          =3D 0x30820000,
+    FSL_IMX7_ECSPIn_SIZE          =3D (4 * KiB),
=20
-    FSL_IMX7_ENET1_ADDR           =3D 0x30BE0000,
-    FSL_IMX7_ENET2_ADDR           =3D 0x30BF0000,
+    /* AIPS-3 End */
=20
-    FSL_IMX7_USB1_ADDR            =3D 0x30B10000,
-    FSL_IMX7_USBMISC1_ADDR        =3D 0x30B10200,
-    FSL_IMX7_USB2_ADDR            =3D 0x30B20000,
-    FSL_IMX7_USBMISC2_ADDR        =3D 0x30B20200,
-    FSL_IMX7_USB3_ADDR            =3D 0x30B30000,
-    FSL_IMX7_USBMISC3_ADDR        =3D 0x30B30200,
-    FSL_IMX7_USBMISCn_SIZE        =3D 0x200,
+    /* AIPS-2 Begin */
=20
-    FSL_IMX7_USDHC1_ADDR          =3D 0x30B40000,
-    FSL_IMX7_USDHC2_ADDR          =3D 0x30B50000,
-    FSL_IMX7_USDHC3_ADDR          =3D 0x30B60000,
+    FSL_IMX7_AXI_DEBUG_MON_ADDR   =3D 0x307E0000,
+    FSL_IMX7_AXI_DEBUG_MON_SIZE   =3D (64 * KiB),
=20
-    FSL_IMX7_SDMA_ADDR            =3D 0x30BD0000,
-    FSL_IMX7_SDMA_SIZE            =3D 0x1000,
+    FSL_IMX7_PERFMON2_ADDR        =3D 0x307D0000,
+    FSL_IMX7_PERFMON1_ADDR        =3D 0x307C0000,
+    FSL_IMX7_PERFMONn_SIZE        =3D (64 * KiB),
+
+    FSL_IMX7_DDRC_ADDR            =3D 0x307A0000,
+    FSL_IMX7_DDRC_SIZE            =3D (4 * KiB),
+
+    FSL_IMX7_DDRC_PHY_ADDR        =3D 0x30790000,
+    FSL_IMX7_DDRC_PHY_SIZE        =3D (4 * KiB),
+
+    FSL_IMX7_TZASC_ADDR           =3D 0x30780000,
+    FSL_IMX7_TZASC_SIZE           =3D (64 * KiB),
+
+    FSL_IMX7_MIPI_DSI_ADDR        =3D 0x30760000,
+    FSL_IMX7_MIPI_DSI_SIZE        =3D (4 * KiB),
+
+    FSL_IMX7_MIPI_CSI_ADDR        =3D 0x30750000,
+    FSL_IMX7_MIPI_CSI_SIZE        =3D 0x4000,
+
+    FSL_IMX7_LCDIF_ADDR           =3D 0x30730000,
+    FSL_IMX7_LCDIF_SIZE           =3D 0x8000,
+
+    FSL_IMX7_CSI_ADDR             =3D 0x30710000,
+    FSL_IMX7_CSI_SIZE             =3D (4 * KiB),
+
+    FSL_IMX7_PXP_ADDR             =3D 0x30700000,
+    FSL_IMX7_PXP_SIZE             =3D 0x4000,
+
+    FSL_IMX7_EPDC_ADDR            =3D 0x306F0000,
+    FSL_IMX7_EPDC_SIZE            =3D (4 * KiB),
+
+    FSL_IMX7_PCIE_PHY_ADDR        =3D 0x306D0000,
+    FSL_IMX7_PCIE_PHY_SIZE        =3D (4 * KiB),
+
+    FSL_IMX7_SYSCNT_CTRL_ADDR     =3D 0x306C0000,
+    FSL_IMX7_SYSCNT_CMP_ADDR      =3D 0x306B0000,
+    FSL_IMX7_SYSCNT_RD_ADDR       =3D 0x306A0000,
+
+    FSL_IMX7_PWM4_ADDR            =3D 0x30690000,
+    FSL_IMX7_PWM3_ADDR            =3D 0x30680000,
+    FSL_IMX7_PWM2_ADDR            =3D 0x30670000,
+    FSL_IMX7_PWM1_ADDR            =3D 0x30660000,
+    FSL_IMX7_PWMn_SIZE            =3D (4 * KiB),
+
+    FSL_IMX7_FlEXTIMER2_ADDR      =3D 0x30650000,
+    FSL_IMX7_FlEXTIMER1_ADDR      =3D 0x30640000,
+    FSL_IMX7_FLEXTIMERn_SIZE      =3D (4 * KiB),
+
+    FSL_IMX7_ECSPI4_ADDR          =3D 0x30630000,
+
+    FSL_IMX7_ADC2_ADDR            =3D 0x30620000,
+    FSL_IMX7_ADC1_ADDR            =3D 0x30610000,
+    FSL_IMX7_ADCn_SIZE            =3D (4 * KiB),
+
+    FSL_IMX7_AIPS2_CONF_ADDR      =3D 0x305F0000,
+    FSL_IMX7_AIPS2_CONF_SIZE      =3D (64 * KiB),
+
+    /* AIPS-2 End */
+
+    /* AIPS-1 Begin */
+
+    FSL_IMX7_CSU_ADDR             =3D 0x303E0000,
+    FSL_IMX7_CSU_SIZE             =3D (64 * KiB),
+
+    FSL_IMX7_RDC_ADDR             =3D 0x303D0000,
+    FSL_IMX7_RDC_SIZE             =3D (4 * KiB),
+
+    FSL_IMX7_SEMAPHORE2_ADDR      =3D 0x303C0000,
+    FSL_IMX7_SEMAPHORE1_ADDR      =3D 0x303B0000,
+    FSL_IMX7_SEMAPHOREn_SIZE      =3D (4 * KiB),
+
+    FSL_IMX7_GPC_ADDR             =3D 0x303A0000,
+
+    FSL_IMX7_SRC_ADDR             =3D 0x30390000,
+    FSL_IMX7_SRC_SIZE             =3D (4 * KiB),
+
+    FSL_IMX7_CCM_ADDR             =3D 0x30380000,
+
+    FSL_IMX7_SNVS_HP_ADDR         =3D 0x30370000,
+
+    FSL_IMX7_ANALOG_ADDR          =3D 0x30360000,
+
+    FSL_IMX7_OCOTP_ADDR           =3D 0x30350000,
+    FSL_IMX7_OCOTP_SIZE           =3D 0x10000,
+
+    FSL_IMX7_IOMUXC_GPR_ADDR      =3D 0x30340000,
+    FSL_IMX7_IOMUXC_GPR_SIZE      =3D (4 * KiB),
+
+    FSL_IMX7_IOMUXC_ADDR          =3D 0x30330000,
+    FSL_IMX7_IOMUXC_SIZE          =3D (4 * KiB),
+
+    FSL_IMX7_KPP_ADDR             =3D 0x30320000,
+    FSL_IMX7_KPP_SIZE             =3D (4 * KiB),
+
+    FSL_IMX7_ROMCP_ADDR           =3D 0x30310000,
+    FSL_IMX7_ROMCP_SIZE           =3D (4 * KiB),
+
+    FSL_IMX7_GPT4_ADDR            =3D 0x30300000,
+    FSL_IMX7_GPT3_ADDR            =3D 0x302F0000,
+    FSL_IMX7_GPT2_ADDR            =3D 0x302E0000,
+    FSL_IMX7_GPT1_ADDR            =3D 0x302D0000,
+
+    FSL_IMX7_IOMUXC_LPSR_ADDR     =3D 0x302C0000,
+    FSL_IMX7_IOMUXC_LPSR_SIZE     =3D (4 * KiB),
+
+    FSL_IMX7_WDOG4_ADDR           =3D 0x302B0000,
+    FSL_IMX7_WDOG3_ADDR           =3D 0x302A0000,
+    FSL_IMX7_WDOG2_ADDR           =3D 0x30290000,
+    FSL_IMX7_WDOG1_ADDR           =3D 0x30280000,
+
+    FSL_IMX7_IOMUXC_LPSR_GPR_ADDR =3D 0x30270000,
+
+    FSL_IMX7_GPIO7_ADDR           =3D 0x30260000,
+    FSL_IMX7_GPIO6_ADDR           =3D 0x30250000,
+    FSL_IMX7_GPIO5_ADDR           =3D 0x30240000,
+    FSL_IMX7_GPIO4_ADDR           =3D 0x30230000,
+    FSL_IMX7_GPIO3_ADDR           =3D 0x30220000,
+    FSL_IMX7_GPIO2_ADDR           =3D 0x30210000,
+    FSL_IMX7_GPIO1_ADDR           =3D 0x30200000,
+
+    FSL_IMX7_AIPS1_CONF_ADDR      =3D 0x301F0000,
+    FSL_IMX7_AIPS1_CONF_SIZE      =3D (64 * KiB),
=20
-    FSL_IMX7_A7MPCORE_ADDR        =3D 0x31000000,
     FSL_IMX7_A7MPCORE_DAP_ADDR    =3D 0x30000000,
+    FSL_IMX7_A7MPCORE_DAP_SIZE    =3D (1 * MiB),
=20
-    FSL_IMX7_PCIE_REG_ADDR        =3D 0x33800000,
-    FSL_IMX7_PCIE_REG_SIZE        =3D 16 * 1024,
+    /* AIPS-1 End */
=20
-    FSL_IMX7_GPR_ADDR             =3D 0x30340000,
+    FSL_IMX7_EIM_CS0_ADDR         =3D 0x28000000,
+    FSL_IMX7_EIM_CS0_SIZE         =3D (128 * MiB),
=20
-    FSL_IMX7_DMA_APBH_ADDR        =3D 0x33000000,
-    FSL_IMX7_DMA_APBH_SIZE        =3D 0x2000,
+    FSL_IMX7_OCRAM_PXP_ADDR       =3D 0x00940000,
+    FSL_IMX7_OCRAM_PXP_SIZE       =3D (32 * KiB),
+
+    FSL_IMX7_OCRAM_EPDC_ADDR      =3D 0x00920000,
+    FSL_IMX7_OCRAM_EPDC_SIZE      =3D (128 * KiB),
+
+    FSL_IMX7_OCRAM_MEM_ADDR       =3D 0x00900000,
+    FSL_IMX7_OCRAM_MEM_SIZE       =3D (128 * KiB),
+
+    FSL_IMX7_TCMU_ADDR            =3D 0x00800000,
+    FSL_IMX7_TCMU_SIZE            =3D (32 * KiB),
+
+    FSL_IMX7_TCML_ADDR            =3D 0x007F8000,
+    FSL_IMX7_TCML_SIZE            =3D (32 * KiB),
+
+    FSL_IMX7_OCRAM_S_ADDR         =3D 0x00180000,
+    FSL_IMX7_OCRAM_S_SIZE         =3D (32 * KiB),
+
+    FSL_IMX7_CAAM_MEM_ADDR        =3D 0x00100000,
+    FSL_IMX7_CAAM_MEM_SIZE        =3D (32 * KiB),
+
+    FSL_IMX7_ROM_ADDR             =3D 0x00000000,
+    FSL_IMX7_ROM_SIZE             =3D (96 * KiB),
 };
=20
 enum FslIMX7IRQs {
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
index 9e41d4b6772..e9760535393 100644
--- a/hw/arm/fsl-imx7.c
+++ b/hw/arm/fsl-imx7.c
@@ -36,6 +36,9 @@ static void fsl_imx7_init(Object *obj)
     char name[NAME_SIZE];
     int i;
=20
+    /*
+     * CPUs
+     */
     for (i =3D 0; i < MIN(ms->smp.cpus, FSL_IMX7_NUM_CPUS); i++) {
         snprintf(name, NAME_SIZE, "cpu%d", i);
         object_initialize_child(obj, name, &s->cpu[i],
@@ -49,7 +52,7 @@ static void fsl_imx7_init(Object *obj)
                             TYPE_A15MPCORE_PRIV);
=20
     /*
-     * GPIOs 1 to 7
+     * GPIOs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_GPIOS; i++) {
         snprintf(name, NAME_SIZE, "gpio%d", i);
@@ -57,7 +60,7 @@ static void fsl_imx7_init(Object *obj)
     }
=20
     /*
-     * GPT1, 2, 3, 4
+     * GPTs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_GPTS; i++) {
         snprintf(name, NAME_SIZE, "gpt%d", i);
@@ -79,19 +82,24 @@ static void fsl_imx7_init(Object *obj)
      */
     object_initialize_child(obj, "gpcv2", &s->gpcv2, TYPE_IMX_GPCV2);
=20
+    /*
+     * ECSPIs
+     */
     for (i =3D 0; i < FSL_IMX7_NUM_ECSPIS; i++) {
         snprintf(name, NAME_SIZE, "spi%d", i + 1);
         object_initialize_child(obj, name, &s->spi[i], TYPE_IMX_SPI);
     }
=20
-
+    /*
+     * I2Cs
+     */
     for (i =3D 0; i < FSL_IMX7_NUM_I2CS; i++) {
         snprintf(name, NAME_SIZE, "i2c%d", i + 1);
         object_initialize_child(obj, name, &s->i2c[i], TYPE_IMX_I2C);
     }
=20
     /*
-     * UART
+     * UARTs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_UARTS; i++) {
             snprintf(name, NAME_SIZE, "uart%d", i);
@@ -99,7 +107,7 @@ static void fsl_imx7_init(Object *obj)
     }
=20
     /*
-     * Ethernet
+     * Ethernets
      */
     for (i =3D 0; i < FSL_IMX7_NUM_ETHS; i++) {
             snprintf(name, NAME_SIZE, "eth%d", i);
@@ -107,7 +115,7 @@ static void fsl_imx7_init(Object *obj)
     }
=20
     /*
-     * SDHCI
+     * SDHCIs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_USDHCS; i++) {
             snprintf(name, NAME_SIZE, "usdhc%d", i);
@@ -120,7 +128,7 @@ static void fsl_imx7_init(Object *obj)
     object_initialize_child(obj, "snvs", &s->snvs, TYPE_IMX7_SNVS);
=20
     /*
-     * Watchdog
+     * Watchdogs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_WDTS; i++) {
             snprintf(name, NAME_SIZE, "wdt%d", i);
@@ -132,8 +140,14 @@ static void fsl_imx7_init(Object *obj)
      */
     object_initialize_child(obj, "gpr", &s->gpr, TYPE_IMX7_GPR);
=20
+    /*
+     * PCIE
+     */
     object_initialize_child(obj, "pcie", &s->pcie, TYPE_DESIGNWARE_PCIE_HO=
ST);
=20
+    /*
+     * USBs
+     */
     for (i =3D 0; i < FSL_IMX7_NUM_USBS; i++) {
         snprintf(name, NAME_SIZE, "usb%d", i);
         object_initialize_child(obj, name, &s->usb[i], TYPE_CHIPIDEA);
@@ -156,6 +170,9 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
         return;
     }
=20
+    /*
+     * CPUs
+     */
     for (i =3D 0; i < smp_cpus; i++) {
         o =3D OBJECT(&s->cpu[i]);
=20
@@ -206,10 +223,10 @@ static void fsl_imx7_realize(DeviceState *dev, Error =
**errp)
      * A7MPCORE DAP
      */
     create_unimplemented_device("a7mpcore-dap", FSL_IMX7_A7MPCORE_DAP_ADDR,
-                                0x100000);
+                                FSL_IMX7_A7MPCORE_DAP_SIZE);
=20
     /*
-     * GPT1, 2, 3, 4
+     * GPTs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_GPTS; i++) {
         static const hwaddr FSL_IMX7_GPTn_ADDR[FSL_IMX7_NUM_GPTS] =3D {
@@ -234,6 +251,9 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
                                             FSL_IMX7_GPTn_IRQ[i]));
     }
=20
+    /*
+     * GPIOs
+     */
     for (i =3D 0; i < FSL_IMX7_NUM_GPIOS; i++) {
         static const hwaddr FSL_IMX7_GPIOn_ADDR[FSL_IMX7_NUM_GPIOS] =3D {
             FSL_IMX7_GPIO1_ADDR,
@@ -281,16 +301,10 @@ static void fsl_imx7_realize(DeviceState *dev, Error =
**errp)
     /*
      * IOMUXC and IOMUXC_LPSR
      */
-    for (i =3D 0; i < FSL_IMX7_NUM_IOMUXCS; i++) {
-        static const hwaddr FSL_IMX7_IOMUXCn_ADDR[FSL_IMX7_NUM_IOMUXCS] =
=3D {
-            FSL_IMX7_IOMUXC_ADDR,
-            FSL_IMX7_IOMUXC_LPSR_ADDR,
-        };
-
-        snprintf(name, NAME_SIZE, "iomuxc%d", i);
-        create_unimplemented_device(name, FSL_IMX7_IOMUXCn_ADDR[i],
-                                    FSL_IMX7_IOMUXCn_SIZE);
-    }
+    create_unimplemented_device("iomuxc", FSL_IMX7_IOMUXC_ADDR,
+                                FSL_IMX7_IOMUXC_SIZE);
+    create_unimplemented_device("iomuxc_lspr", FSL_IMX7_IOMUXC_LPSR_ADDR,
+                                FSL_IMX7_IOMUXC_LPSR_SIZE);
=20
     /*
      * CCM
@@ -310,7 +324,9 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
     sysbus_realize(SYS_BUS_DEVICE(&s->gpcv2), &error_abort);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpcv2), 0, FSL_IMX7_GPC_ADDR);
=20
-    /* Initialize all ECSPI */
+    /*
+     * ECSPIs
+     */
     for (i =3D 0; i < FSL_IMX7_NUM_ECSPIS; i++) {
         static const hwaddr FSL_IMX7_SPIn_ADDR[FSL_IMX7_NUM_ECSPIS] =3D {
             FSL_IMX7_ECSPI1_ADDR,
@@ -335,6 +351,9 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
                                             FSL_IMX7_SPIn_IRQ[i]));
     }
=20
+    /*
+     * I2Cs
+     */
     for (i =3D 0; i < FSL_IMX7_NUM_I2CS; i++) {
         static const hwaddr FSL_IMX7_I2Cn_ADDR[FSL_IMX7_NUM_I2CS] =3D {
             FSL_IMX7_I2C1_ADDR,
@@ -359,7 +378,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
     }
=20
     /*
-     * UART
+     * UARTs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_UARTS; i++) {
         static const hwaddr FSL_IMX7_UARTn_ADDR[FSL_IMX7_NUM_UARTS] =3D {
@@ -394,7 +413,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
     }
=20
     /*
-     * Ethernet
+     * Ethernets
      *
      * We must use two loops since phy_connected affects the other interfa=
ce
      * and we have to set all properties before calling sysbus_realize().
@@ -434,7 +453,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
     }
=20
     /*
-     * USDHC
+     * USDHCs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_USDHCS; i++) {
         static const hwaddr FSL_IMX7_USDHCn_ADDR[FSL_IMX7_NUM_USDHCS] =3D {
@@ -464,7 +483,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
      * SNVS
      */
     sysbus_realize(SYS_BUS_DEVICE(&s->snvs), &error_abort);
-    sysbus_mmio_map(SYS_BUS_DEVICE(&s->snvs), 0, FSL_IMX7_SNVS_ADDR);
+    sysbus_mmio_map(SYS_BUS_DEVICE(&s->snvs), 0, FSL_IMX7_SNVS_HP_ADDR);
=20
     /*
      * SRC
@@ -472,7 +491,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
     create_unimplemented_device("src", FSL_IMX7_SRC_ADDR, FSL_IMX7_SRC_SIZ=
E);
=20
     /*
-     * Watchdog
+     * Watchdogs
      */
     for (i =3D 0; i < FSL_IMX7_NUM_WDTS; i++) {
         static const hwaddr FSL_IMX7_WDOGn_ADDR[FSL_IMX7_NUM_WDTS] =3D {
@@ -509,25 +528,49 @@ static void fsl_imx7_realize(DeviceState *dev, Error =
**errp)
     create_unimplemented_device("caam", FSL_IMX7_CAAM_ADDR, FSL_IMX7_CAAM_=
SIZE);
=20
     /*
-     * PWM
+     * PWMs
      */
-    create_unimplemented_device("pwm1", FSL_IMX7_PWM1_ADDR, FSL_IMX7_PWMn_=
SIZE);
-    create_unimplemented_device("pwm2", FSL_IMX7_PWM2_ADDR, FSL_IMX7_PWMn_=
SIZE);
-    create_unimplemented_device("pwm3", FSL_IMX7_PWM3_ADDR, FSL_IMX7_PWMn_=
SIZE);
-    create_unimplemented_device("pwm4", FSL_IMX7_PWM4_ADDR, FSL_IMX7_PWMn_=
SIZE);
+    for (i =3D 0; i < FSL_IMX7_NUM_PWMS; i++) {
+        static const hwaddr FSL_IMX7_PWMn_ADDR[FSL_IMX7_NUM_PWMS] =3D {
+            FSL_IMX7_PWM1_ADDR,
+            FSL_IMX7_PWM2_ADDR,
+            FSL_IMX7_PWM3_ADDR,
+            FSL_IMX7_PWM4_ADDR,
+        };
+
+        snprintf(name, NAME_SIZE, "pwm%d", i);
+        create_unimplemented_device(name, FSL_IMX7_PWMn_ADDR[i],
+                                    FSL_IMX7_PWMn_SIZE);
+    }
=20
     /*
-     * CAN
+     * CANs
      */
-    create_unimplemented_device("can1", FSL_IMX7_CAN1_ADDR, FSL_IMX7_CANn_=
SIZE);
-    create_unimplemented_device("can2", FSL_IMX7_CAN2_ADDR, FSL_IMX7_CANn_=
SIZE);
+    for (i =3D 0; i < FSL_IMX7_NUM_CANS; i++) {
+        static const hwaddr FSL_IMX7_CANn_ADDR[FSL_IMX7_NUM_CANS] =3D {
+            FSL_IMX7_CAN1_ADDR,
+            FSL_IMX7_CAN2_ADDR,
+        };
+
+        snprintf(name, NAME_SIZE, "can%d", i);
+        create_unimplemented_device(name, FSL_IMX7_CANn_ADDR[i],
+                                    FSL_IMX7_CANn_SIZE);
+    }
=20
     /*
-     * SAI (Audio SSI (Synchronous Serial Interface))
+     * SAIs (Audio SSI (Synchronous Serial Interface))
      */
-    create_unimplemented_device("sai1", FSL_IMX7_SAI1_ADDR, FSL_IMX7_SAIn_=
SIZE);
-    create_unimplemented_device("sai2", FSL_IMX7_SAI2_ADDR, FSL_IMX7_SAIn_=
SIZE);
-    create_unimplemented_device("sai2", FSL_IMX7_SAI3_ADDR, FSL_IMX7_SAIn_=
SIZE);
+    for (i =3D 0; i < FSL_IMX7_NUM_SAIS; i++) {
+        static const hwaddr FSL_IMX7_SAIn_ADDR[FSL_IMX7_NUM_SAIS] =3D {
+            FSL_IMX7_SAI1_ADDR,
+            FSL_IMX7_SAI2_ADDR,
+            FSL_IMX7_SAI3_ADDR,
+        };
+
+        snprintf(name, NAME_SIZE, "sai%d", i);
+        create_unimplemented_device(name, FSL_IMX7_SAIn_ADDR[i],
+                                    FSL_IMX7_SAIn_SIZE);
+    }
=20
     /*
      * OCOTP
@@ -535,9 +578,15 @@ static void fsl_imx7_realize(DeviceState *dev, Error *=
*errp)
     create_unimplemented_device("ocotp", FSL_IMX7_OCOTP_ADDR,
                                 FSL_IMX7_OCOTP_SIZE);
=20
+    /*
+     * GPR
+     */
     sysbus_realize(SYS_BUS_DEVICE(&s->gpr), &error_abort);
-    sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpr), 0, FSL_IMX7_GPR_ADDR);
+    sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpr), 0, FSL_IMX7_IOMUXC_GPR_ADDR);
=20
+    /*
+     * PCIE
+     */
     sysbus_realize(SYS_BUS_DEVICE(&s->pcie), &error_abort);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->pcie), 0, FSL_IMX7_PCIE_REG_ADDR);
=20
@@ -550,7 +599,9 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
     irq =3D qdev_get_gpio_in(DEVICE(&s->a7mpcore), FSL_IMX7_PCI_INTD_IRQ);
     sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 3, irq);
=20
-
+    /*
+     * USBs
+     */
     for (i =3D 0; i < FSL_IMX7_NUM_USBS; i++) {
         static const hwaddr FSL_IMX7_USBMISCn_ADDR[FSL_IMX7_NUM_USBS] =3D {
             FSL_IMX7_USBMISC1_ADDR,
@@ -612,6 +663,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **=
errp)
      */
     create_unimplemented_device("pcie-phy", FSL_IMX7_PCIE_PHY_ADDR,
                                 FSL_IMX7_PCIE_PHY_SIZE);
+
 }
=20
 static Property fsl_imx7_properties[] =3D {
--=20
2.34.1