[Qemu-devel] [PATCH v5 00/14] Initial i.MX7 support

Andrey Smirnov posted 14 patches 6 years, 2 months ago
Only 13 patches received!
There is a newer version of this series
default-configs/arm-softmmu.mak  |   3 +
hw/arm/Makefile.objs             |   3 +
hw/arm/boot.c                    |  65 ++++
hw/arm/fsl-imx6.c                |   2 +-
hw/arm/fsl-imx7.c                | 580 ++++++++++++++++++++++++++++++
hw/arm/mcimx7d-sabre.c           |  90 +++++
hw/arm/virt.c                    |  61 ----
hw/intc/Makefile.objs            |   2 +-
hw/intc/imx_gpcv2.c              | 125 +++++++
hw/misc/Makefile.objs            |   4 +
hw/misc/imx2_wdt.c               |  89 +++++
hw/misc/imx7_ccm.c               | 277 ++++++++++++++
hw/misc/imx7_gpr.c               | 124 +++++++
hw/misc/imx7_snvs.c              |  83 +++++
hw/misc/trace-events             |   4 +
hw/pci-host/Makefile.objs        |   2 +
hw/pci-host/designware.c         | 759 +++++++++++++++++++++++++++++++++++++++
hw/pci/pci_host.c                |  13 +-
hw/sd/sdhci-internal.h           |  20 ++
hw/sd/sdhci.c                    | 230 +++++++++++-
hw/timer/imx_gpt.c               |  25 ++
hw/usb/Makefile.objs             |   1 +
hw/usb/chipidea.c                | 176 +++++++++
include/hw/arm/fsl-imx7.h        | 221 ++++++++++++
include/hw/intc/imx_gpcv2.h      |  22 ++
include/hw/misc/imx2_wdt.h       |  33 ++
include/hw/misc/imx7_ccm.h       | 139 +++++++
include/hw/misc/imx7_gpr.h       |  28 ++
include/hw/misc/imx7_snvs.h      |  35 ++
include/hw/pci-host/designware.h |  97 +++++
include/hw/pci/pci_ids.h         |   2 +
include/hw/sd/sdhci.h            |  13 +
include/hw/timer/imx_gpt.h       |   1 +
include/hw/usb/chipidea.h        |  16 +
34 files changed, 3277 insertions(+), 68 deletions(-)
create mode 100644 hw/arm/fsl-imx7.c
create mode 100644 hw/arm/mcimx7d-sabre.c
create mode 100644 hw/intc/imx_gpcv2.c
create mode 100644 hw/misc/imx2_wdt.c
create mode 100644 hw/misc/imx7_ccm.c
create mode 100644 hw/misc/imx7_gpr.c
create mode 100644 hw/misc/imx7_snvs.c
create mode 100644 hw/pci-host/designware.c
create mode 100644 hw/usb/chipidea.c
create mode 100644 include/hw/arm/fsl-imx7.h
create mode 100644 include/hw/intc/imx_gpcv2.h
create mode 100644 include/hw/misc/imx2_wdt.h
create mode 100644 include/hw/misc/imx7_ccm.h
create mode 100644 include/hw/misc/imx7_gpr.h
create mode 100644 include/hw/misc/imx7_snvs.h
create mode 100644 include/hw/pci-host/designware.h
create mode 100644 include/hw/usb/chipidea.h
[Qemu-devel] [PATCH v5 00/14] Initial i.MX7 support
Posted by Andrey Smirnov 6 years, 2 months ago
Hi everyone,

This v5 of the patch series containing the work that I've done in
order to enable support for i.MX7 emulation in QEMU.

As the one before last commit in the series states the supported i.MX7
features are:

    * up to 2 Cortex A9 cores (SMP works with PSCI)
    * A7 MPCORE (identical to A15 MPCORE)
    * 4 GPTs modules
    * 7 GPIO controllers
    * 2 IOMUXC controllers
    * 1 CCM module
    * 1 SVNS module
    * 1 SRC module
    * 1 GPCv2 controller
    * 4 eCSPI controllers
    * 4 I2C controllers
    * 7 i.MX UART controllers
    * 2 FlexCAN controllers
    * 2 Ethernet controllers (FEC)
    * 3 SD controllers (USDHC)
    * 4 WDT modules
    * 1 SDMA module
    * 1 GPR module
    * 2 USBMISC modules
    * 2 ADC modules
    * 1 PCIe controller
    * 3 USB controllers
    * 1 LCD controller
    * 1 ARMv7 DAP IP block

Feedback is welcome!

Changes since [v4]:

    - Rebase patchest on top of latest QEMU master

    - Reworked PCIE emulation code to create MemoryRegions
      only once

    - Fixed incorrect usages of PCI instead of PCIE

    - Fixed device class reported by PCIE bridge

    - Added patch to make pci_data_read() and pci_data_write() usable
      for PCIE devices as well

    - Converted PCIE code to use pci_data_read() and pci_data_write()

    - Added VMStateDescription code for PCIE

    - Collected Reviewed-by tag from Philippe

Changes since [v3]:

    - Changes to FEC were split into a separate set and merged to master

    - Patchest is rebased on latest master

    - Converted to use PSCI DT fixup code that is shared with virt
      platform (now relocated to live in arm/boot.c)

    - Large number of dummy block were converted to use
      create_unimplemented_device() as opposed to its own dedicated
      type

    - Incorporated varios small feedback items

    - Collected Reviewed-by tags from Peter

Changes since [v2]:

    - Added stubs for more blocks that were causing memory
      transactions when booting Linux guest as were revealed by
      additional testing of the patchest

    - Added proper USB emulation code, so now it should be possible to
      emulated guest's USB bus

Changes since [v1]:

    - Patchset no longer relies on "ignore_memory_transaction_failures = false"
      for its functionality

    - As a consequnce of implementing the above a number of patches
      implementing dummy IP block emulation as well as PCIe emulation
      patches that I alluded to in [v1] are now included in this patch
      series

    - "has_el3" property is no longer being set to "false" as a part
      of intialization of A7 CPU. I couldn't reproduce the issues that
      I thought I was having, so I just dropped that code.

    - A number of smaller feedback items from Peter and other has been
      incorporated into the patches.


Thanks,
Andrey Smirnov

[v4] https://lists.gnu.org/archive/html/qemu-devel/2018-01/msg03264.html
[v3] https://lists.gnu.org/archive/html/qemu-devel/2017-11/msg04236.html
[v2] https://lists.gnu.org/archive/html/qemu-devel/2017-10/msg05516.html
[v1] https://lists.gnu.org/archive/html/qemu-devel/2017-09/msg04770.html

Andrey Smirnov (14):
  sdhci: Add i.MX specific subtype of SDHCI
  hw: i.MX: Convert i.MX6 to use TYPE_IMX_USDHC
  i.MX: Add code to emulate i.MX7 CCM, PMU and ANALOG IP blocks
  i.MX: Add code to emulate i.MX2 watchdog IP block
  i.MX: Add code to emulate i.MX7 SNVS IP-block
  i.MX: Add code to emulate GPCv2 IP block
  i.MX: Add i.MX7 GPT variant
  i.MX: Add implementation of i.MX7 GPR IP block
  pci: Use pci_config_size in pci_data_* accessors
  pci: Add support for Designware IP block
  usb: Add basic code to emulate Chipidea USB IP
  i.MX: Add i.MX7 SOC implementation.
  hw/arm: Move virt's PSCI DT fixup code to arm/boot.c
  Implement support for i.MX7 Sabre board

 default-configs/arm-softmmu.mak  |   3 +
 hw/arm/Makefile.objs             |   3 +
 hw/arm/boot.c                    |  65 ++++
 hw/arm/fsl-imx6.c                |   2 +-
 hw/arm/fsl-imx7.c                | 580 ++++++++++++++++++++++++++++++
 hw/arm/mcimx7d-sabre.c           |  90 +++++
 hw/arm/virt.c                    |  61 ----
 hw/intc/Makefile.objs            |   2 +-
 hw/intc/imx_gpcv2.c              | 125 +++++++
 hw/misc/Makefile.objs            |   4 +
 hw/misc/imx2_wdt.c               |  89 +++++
 hw/misc/imx7_ccm.c               | 277 ++++++++++++++
 hw/misc/imx7_gpr.c               | 124 +++++++
 hw/misc/imx7_snvs.c              |  83 +++++
 hw/misc/trace-events             |   4 +
 hw/pci-host/Makefile.objs        |   2 +
 hw/pci-host/designware.c         | 759 +++++++++++++++++++++++++++++++++++++++
 hw/pci/pci_host.c                |  13 +-
 hw/sd/sdhci-internal.h           |  20 ++
 hw/sd/sdhci.c                    | 230 +++++++++++-
 hw/timer/imx_gpt.c               |  25 ++
 hw/usb/Makefile.objs             |   1 +
 hw/usb/chipidea.c                | 176 +++++++++
 include/hw/arm/fsl-imx7.h        | 221 ++++++++++++
 include/hw/intc/imx_gpcv2.h      |  22 ++
 include/hw/misc/imx2_wdt.h       |  33 ++
 include/hw/misc/imx7_ccm.h       | 139 +++++++
 include/hw/misc/imx7_gpr.h       |  28 ++
 include/hw/misc/imx7_snvs.h      |  35 ++
 include/hw/pci-host/designware.h |  97 +++++
 include/hw/pci/pci_ids.h         |   2 +
 include/hw/sd/sdhci.h            |  13 +
 include/hw/timer/imx_gpt.h       |   1 +
 include/hw/usb/chipidea.h        |  16 +
 34 files changed, 3277 insertions(+), 68 deletions(-)
 create mode 100644 hw/arm/fsl-imx7.c
 create mode 100644 hw/arm/mcimx7d-sabre.c
 create mode 100644 hw/intc/imx_gpcv2.c
 create mode 100644 hw/misc/imx2_wdt.c
 create mode 100644 hw/misc/imx7_ccm.c
 create mode 100644 hw/misc/imx7_gpr.c
 create mode 100644 hw/misc/imx7_snvs.c
 create mode 100644 hw/pci-host/designware.c
 create mode 100644 hw/usb/chipidea.c
 create mode 100644 include/hw/arm/fsl-imx7.h
 create mode 100644 include/hw/intc/imx_gpcv2.h
 create mode 100644 include/hw/misc/imx2_wdt.h
 create mode 100644 include/hw/misc/imx7_ccm.h
 create mode 100644 include/hw/misc/imx7_gpr.h
 create mode 100644 include/hw/misc/imx7_snvs.h
 create mode 100644 include/hw/pci-host/designware.h
 create mode 100644 include/hw/usb/chipidea.h

-- 
2.14.3


Re: [Qemu-devel] [PATCH v5 00/14] Initial i.MX7 support
Posted by Peter Maydell 6 years, 2 months ago
On 7 February 2018 at 04:24, Andrey Smirnov <andrew.smirnov@gmail.com> wrote:
> Hi everyone,
>
> This v5 of the patch series containing the work that I've done in
> order to enable support for i.MX7 emulation in QEMU.

Thanks; I'm applying this to target-arm.next. There are a few minor
tweaks I'm going to make in the process, but I think that's better
than making you do yet another respin. Those changes are:
 * dropped stray blank-line-at-end-of-file from a few patches
 * fixed a couple of over-80-columnns lines
 * added a ESDHC_UNDOCUMENTED_REG27 define as suggested by Philippe
   (I didn't reorder the switches to put 'default' last though, as
   that didn't seem necessary to me)

If you get back to me today about the GPL-2-vs-2-or-later question
for patch 13 I'll make that change too. Otherwise I'll drop 13
and 14 for the moment.

thanks
-- PMM

Re: [Qemu-devel] [PATCH v5 00/14] Initial i.MX7 support
Posted by Andrey Smirnov 6 years, 2 months ago
On Thu, Feb 8, 2018 at 5:49 AM, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 7 February 2018 at 04:24, Andrey Smirnov <andrew.smirnov@gmail.com> wrote:
>> Hi everyone,
>>
>> This v5 of the patch series containing the work that I've done in
>> order to enable support for i.MX7 emulation in QEMU.
>
> Thanks; I'm applying this to target-arm.next. There are a few minor
> tweaks I'm going to make in the process, but I think that's better
> than making you do yet another respin. Those changes are:
>  * dropped stray blank-line-at-end-of-file from a few patches
>  * fixed a couple of over-80-columnns lines
>  * added a ESDHC_UNDOCUMENTED_REG27 define as suggested by Philippe
>    (I didn't reorder the switches to put 'default' last though, as
>    that didn't seem necessary to me)
>
> If you get back to me today about the GPL-2-vs-2-or-later question
> for patch 13 I'll make that change too. Otherwise I'll drop 13
> and 14 for the moment.
>

Awesome, thanks!

Andrey Smirnov