[PATCH v2 00/18] Add i.MX 8M Plus EVK machine

Bernhard Beschow posted 18 patches 1 month, 1 week ago
MAINTAINERS                         |  16 +
docs/system/arm/imx8mp-evk.rst      |  70 +++
docs/system/target-arm.rst          |   1 +
include/hw/arm/fsl-imx8mp.h         | 285 +++++++++++
include/hw/misc/imx8mp_analog.h     |  81 +++
include/hw/misc/imx8mp_ccm.h        |  30 ++
include/hw/pci-host/designware.h    |   7 +
include/hw/pci-host/fsl_imx8m_phy.h |  28 ++
include/hw/timer/imx_gpt.h          |   1 +
include/hw/usb/hcd-dwc3.h           |   2 +-
hw/arm/fsl-imx8mp.c                 | 732 ++++++++++++++++++++++++++++
hw/arm/imx8mp-evk.c                 |  74 +++
hw/misc/imx8mp_analog.c             | 160 ++++++
hw/misc/imx8mp_ccm.c                | 175 +++++++
hw/pci-host/designware.c            |  18 +-
hw/pci-host/fsl_imx8m_phy.c         |  98 ++++
hw/rtc/rs5c372.c                    | 236 +++++++++
hw/timer/imx_gpt.c                  |  25 +
hw/usb/hcd-dwc3.c                   |   5 +
tests/qtest/rs5c372-test.c          |  43 ++
hw/arm/Kconfig                      |  24 +
hw/arm/meson.build                  |   2 +
hw/gpio/Kconfig                     |   8 +
hw/misc/Kconfig                     |  14 +-
hw/misc/meson.build                 |   2 +
hw/pci-host/Kconfig                 |   3 +
hw/pci-host/meson.build             |   1 +
hw/rtc/Kconfig                      |   5 +
hw/rtc/meson.build                  |   1 +
hw/rtc/trace-events                 |   4 +
pc-bios/imx8mp-boot.rom             | Bin 0 -> 258048 bytes
pc-bios/meson.build                 |   1 +
tests/qtest/meson.build             |   1 +
33 files changed, 2143 insertions(+), 10 deletions(-)
create mode 100644 docs/system/arm/imx8mp-evk.rst
create mode 100644 include/hw/arm/fsl-imx8mp.h
create mode 100644 include/hw/misc/imx8mp_analog.h
create mode 100644 include/hw/misc/imx8mp_ccm.h
create mode 100644 include/hw/pci-host/fsl_imx8m_phy.h
create mode 100644 hw/arm/fsl-imx8mp.c
create mode 100644 hw/arm/imx8mp-evk.c
create mode 100644 hw/misc/imx8mp_analog.c
create mode 100644 hw/misc/imx8mp_ccm.c
create mode 100644 hw/pci-host/fsl_imx8m_phy.c
create mode 100644 hw/rtc/rs5c372.c
create mode 100644 tests/qtest/rs5c372-test.c
create mode 100644 pc-bios/imx8mp-boot.rom
[PATCH v2 00/18] Add i.MX 8M Plus EVK machine
Posted by Bernhard Beschow 1 month, 1 week ago
This series adds a new aarch64 machine to QEMU: i.MX 8M Plus EVK [1]. It allows
for running Linux distributions such as Buildroot
(freescale_imx8mpevk_defconfig) and Arch Linux [2] via direct kernel boot.
U-Boot does not work yet. I plan to use this machine in CI and I also want to
make it available to a bigger audience, so I propose to add it to QEMU. My goal
would be to have it added for 10.0. For this, a Changelog entry could be added
under https://wiki.qemu.org/ChangeLog/10.0 such as:
  * New board model "imx8mp-evk": i.MX 8M Plus Evaluation Kit

The series is structured as follows: The first three patches fix some issues in
device models reused by the new machine. Patches 4-17 add the machine step by
step which includes documentation. The last patch adds an I²C RTC which I'd like
to use along with the new machine.

I've based some code on existing one (see "Based on" in file headers) and I'm
unsure how to handle the licensing and attribution correctly -- advice welcome.

v3:
* Pick up R-b tags
* Add QTest testcase for the RS5C372 RTC (Phil)
* Rephrase machine description (Peter)
* Fix typos and confused sentence in machine documentation (Peter)
* Use g_autofree for object names (Peter)
* Clarify source of "cntfrq" CPU property (Peter)
* Fix typo "g[e]neral purpose timers" in commit message (Peter)
* Don't `default y if I2C_DEVICES` for hw/gpio/pca955* (Peter)
* TYPE_FSL_IMX8M_PCIE_PHY:
  * Implement reset method (Peter)
  * Use named constant rather than risking undefined behavior (Peter)
* Fix copy'n'paste typo in imx8mp_analog.c
Open questions:
* How to generate all zero boot rom file in a portable way (Peter)

v2:
* Rebase onto master, eliminating some patches from the series
* Initialize ROM with memory_region_init_rom() (Zoltan)
* Mark the machine as "Maintained" (Peter)
* Do not select TEST_DEVICES (Peter)
* Have separate sources for the two clock tree modules (Peter)
* Make PCI devices attach to the correct bus (Peter)
* Avoid adding documentation that is removed later (Zoltan) Instead, document
  Buildroot process in the first place and change it slightly.
* Drop TCA6416 device model (Phil, Dmitrii)
* Add pca955* Kconfig cleanup patch

[1] https://www.nxp.com/design/design-center/development-boards-and-designs/8MPLUSLPD4-EVK
[2] https://archlinuxarm.org/platforms/armv8/generic

Bernhard Beschow (18):
  hw/usb/hcd-dwc3: Align global registers size with Linux
  hw/pci-host/designware: Prevent device attachment on internal PCIe
    root bus
  hw/gpio/pca955*: Move Kconfig switches next to implementations
  hw/arm: Add i.MX 8M Plus EVK board
  hw/arm/fsl-imx8mp: Implement clock tree
  hw/arm/fsl-imx8mp: Add SNVS
  hw/arm/fsl-imx8mp: Add USDHC storage controllers
  hw/arm/fsl-imx8mp: Add PCIe support
  hw/arm/fsl-imx8mp: Add GPIO controllers
  hw/arm/fsl-imx8mp: Add I2C controllers
  hw/arm/fsl-imx8mp: Add SPI controllers
  hw/arm/fsl-imx8mp: Add watchdog support
  hw/arm/fsl-imx8mp: Implement general purpose timers
  hw/arm/fsl-imx8mp: Add Ethernet controller
  hw/arm/fsl-imx8mp: Add USB support
  hw/arm/fsl-imx8mp: Add boot ROM
  hw/arm/fsl-imx8mp: Add on-chip RAM
  hw/rtc: Add Ricoh RS5C372 RTC emulation

 MAINTAINERS                         |  16 +
 docs/system/arm/imx8mp-evk.rst      |  70 +++
 docs/system/target-arm.rst          |   1 +
 include/hw/arm/fsl-imx8mp.h         | 285 +++++++++++
 include/hw/misc/imx8mp_analog.h     |  81 +++
 include/hw/misc/imx8mp_ccm.h        |  30 ++
 include/hw/pci-host/designware.h    |   7 +
 include/hw/pci-host/fsl_imx8m_phy.h |  28 ++
 include/hw/timer/imx_gpt.h          |   1 +
 include/hw/usb/hcd-dwc3.h           |   2 +-
 hw/arm/fsl-imx8mp.c                 | 732 ++++++++++++++++++++++++++++
 hw/arm/imx8mp-evk.c                 |  74 +++
 hw/misc/imx8mp_analog.c             | 160 ++++++
 hw/misc/imx8mp_ccm.c                | 175 +++++++
 hw/pci-host/designware.c            |  18 +-
 hw/pci-host/fsl_imx8m_phy.c         |  98 ++++
 hw/rtc/rs5c372.c                    | 236 +++++++++
 hw/timer/imx_gpt.c                  |  25 +
 hw/usb/hcd-dwc3.c                   |   5 +
 tests/qtest/rs5c372-test.c          |  43 ++
 hw/arm/Kconfig                      |  24 +
 hw/arm/meson.build                  |   2 +
 hw/gpio/Kconfig                     |   8 +
 hw/misc/Kconfig                     |  14 +-
 hw/misc/meson.build                 |   2 +
 hw/pci-host/Kconfig                 |   3 +
 hw/pci-host/meson.build             |   1 +
 hw/rtc/Kconfig                      |   5 +
 hw/rtc/meson.build                  |   1 +
 hw/rtc/trace-events                 |   4 +
 pc-bios/imx8mp-boot.rom             | Bin 0 -> 258048 bytes
 pc-bios/meson.build                 |   1 +
 tests/qtest/meson.build             |   1 +
 33 files changed, 2143 insertions(+), 10 deletions(-)
 create mode 100644 docs/system/arm/imx8mp-evk.rst
 create mode 100644 include/hw/arm/fsl-imx8mp.h
 create mode 100644 include/hw/misc/imx8mp_analog.h
 create mode 100644 include/hw/misc/imx8mp_ccm.h
 create mode 100644 include/hw/pci-host/fsl_imx8m_phy.h
 create mode 100644 hw/arm/fsl-imx8mp.c
 create mode 100644 hw/arm/imx8mp-evk.c
 create mode 100644 hw/misc/imx8mp_analog.c
 create mode 100644 hw/misc/imx8mp_ccm.c
 create mode 100644 hw/pci-host/fsl_imx8m_phy.c
 create mode 100644 hw/rtc/rs5c372.c
 create mode 100644 tests/qtest/rs5c372-test.c
 create mode 100644 pc-bios/imx8mp-boot.rom

-- 
2.48.1

Re: [PATCH v2 00/18] Add i.MX 8M Plus EVK machine
Posted by Peter Maydell 1 month ago
On Sun, 23 Feb 2025 at 11:47, Bernhard Beschow <shentey@gmail.com> wrote:
>
> This series adds a new aarch64 machine to QEMU: i.MX 8M Plus EVK [1]. It allows
> for running Linux distributions such as Buildroot
> (freescale_imx8mpevk_defconfig) and Arch Linux [2] via direct kernel boot.
> U-Boot does not work yet. I plan to use this machine in CI and I also want to
> make it available to a bigger audience, so I propose to add it to QEMU. My goal
> would be to have it added for 10.0. For this, a Changelog entry could be added
> under https://wiki.qemu.org/ChangeLog/10.0 such as:
>   * New board model "imx8mp-evk": i.MX 8M Plus Evaluation Kit
>
> The series is structured as follows: The first three patches fix some issues in
> device models reused by the new machine. Patches 4-17 add the machine step by
> step which includes documentation. The last patch adds an I²C RTC which I'd like
> to use along with the new machine.
>
> I've based some code on existing one (see "Based on" in file headers) and I'm
> unsure how to handle the licensing and attribution correctly -- advice welcome.

Hi; I've applied most of this series to target-arm.next:
patches 1 to 15 and 17. I've left a comment about what
I think we should do about patch 16 (the bootrom).
Patch 18 (the RTC i2c device) I don't have any objection to,
I just didn't have time to review it now and didn't want to delay
getting the new board model in until I did find that time.
Since the board code doesn't instantiate the i2c device,
the RTC is kind of a separate thing from the board series
anyway.

thanks
-- PMM
Re: [PATCH v2 00/18] Add i.MX 8M Plus EVK machine
Posted by Bernhard Beschow 1 month ago

Am 25. Februar 2025 14:43:32 UTC schrieb Peter Maydell <peter.maydell@linaro.org>:
>On Sun, 23 Feb 2025 at 11:47, Bernhard Beschow <shentey@gmail.com> wrote:
>>
>> This series adds a new aarch64 machine to QEMU: i.MX 8M Plus EVK [1]. It allows
>> for running Linux distributions such as Buildroot
>> (freescale_imx8mpevk_defconfig) and Arch Linux [2] via direct kernel boot.
>> U-Boot does not work yet. I plan to use this machine in CI and I also want to
>> make it available to a bigger audience, so I propose to add it to QEMU. My goal
>> would be to have it added for 10.0. For this, a Changelog entry could be added
>> under https://wiki.qemu.org/ChangeLog/10.0 such as:
>>   * New board model "imx8mp-evk": i.MX 8M Plus Evaluation Kit
>>
>> The series is structured as follows: The first three patches fix some issues in
>> device models reused by the new machine. Patches 4-17 add the machine step by
>> step which includes documentation. The last patch adds an I²C RTC which I'd like
>> to use along with the new machine.
>>
>> I've based some code on existing one (see "Based on" in file headers) and I'm
>> unsure how to handle the licensing and attribution correctly -- advice welcome.
>
>Hi; I've applied most of this series to target-arm.next:
>patches 1 to 15 and 17.

Thanks a lot, Peter!

>I've left a comment about what
>I think we should do about patch 16 (the bootrom).
>Patch 18 (the RTC i2c device) I don't have any objection to,
>I just didn't have time to review it now and didn't want to delay
>getting the new board model in until I did find that time.
>Since the board code doesn't instantiate the i2c device,
>the RTC is kind of a separate thing from the board series
>anyway.

Yes, it's fairly separate. I'm looking forward to any comments.

Best regards,
Bernhard

>
>thanks
>-- PMM