From patchwork Thu Feb 25 09:22:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 1444197 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=fpkN/tDl; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DmS5m66h2z9sVR for ; Thu, 25 Feb 2021 20:23:48 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 57D5E806C3; Thu, 25 Feb 2021 10:23:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="fpkN/tDl"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B16AC8006D; Thu, 25 Feb 2021 10:23:30 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 3662F8006D for ; Thu, 25 Feb 2021 10:23:27 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=bmeng.cn@gmail.com Received: by mail-ed1-x52e.google.com with SMTP id p2so5873200edm.12 for ; Thu, 25 Feb 2021 01:23:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=MxAg9mEplHYi/WoMH9eGqbZdqmjTbCTLlnsCgEMZaYc=; b=fpkN/tDlPY3zPcBW05/FvpN+ZaWG7NySbIAn+6Xx0h/KAHN63K4+aaXIdcTNZ0oabP iHlsW0nkBT+nAR6mnub9S3B/59lJpIfRP1zpwwB3ZhHDp1KU9jebLIcKYjuJMVLy2Em+ iXW7SQtxlyjoV9x+aB0BuL7qZlrqYo9ovUqUmc6G959Ewq4XEcC8DybVtAcc7UC41j9j FWFvHluIndr8X08zSkFNEP7MKNO3v5kUR+twS3Z7pAxf9kMiVgRMuPHVDzCRI+5jD7OP zCD7VyBiwHcxwpw9Tff0/XRgiexD8ePN/62Z2iQX2WAxLJK5Tuya+wIPs5H+2Yys2nVR u9Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=MxAg9mEplHYi/WoMH9eGqbZdqmjTbCTLlnsCgEMZaYc=; b=F5DCm8h4b+D4mO2E1xy58AjnWXLtvRbFLAWOYCHykq4u+f2FA4wEBvoTqpR9hl2TBC eAJJsR3cc4C+OMPIKclR5AeQOey27+rvXFLR+6R5PQ+nSdDx8GvgG7CY6mHO3ee66U8U O3/nwxnDRoyiqj3ySmRTBB7oLCxq+JpZgwz69qZi9SeheOgWPgaOV7bwa+MQyxJ75lBC wdaIQ2tupQDaIolzUUqyn/MrqKbPmvyPXUsFp/ELgI6ZFyT/m9JT3jDh98MMclYIdJ9S HLlgyAMLaDnOoV3r+8TwxHY2e7VHIfVGGh9OKxyjxU0sqalYM10Awz9SlV3Q6d6GXipu Ru6w== X-Gm-Message-State: AOAM530LwElfwNjSA8s6Kb3okJcv/zIHBvfWAOIVJJtG3I6hOqp7DjwH OxN3+7+IAM+w+R5pLR4UtKg= X-Google-Smtp-Source: ABdhPJz8e+GMKIvAG5+QjvRqB+8lsOd21nEA9pDahwcaT2mO2k4mw8uZ8JVJAyvzPxIGTjkwEzX+VQ== X-Received: by 2002:a05:6402:3121:: with SMTP id dd1mr1924094edb.387.1614245006797; Thu, 25 Feb 2021 01:23:26 -0800 (PST) Received: from pek-vx-bsp2.wrs.com (ec2-44-242-66-180.us-west-2.compute.amazonaws.com. [44.242.66.180]) by smtp.gmail.com with ESMTPSA id k22sm2987368edv.33.2021.02.25.01.23.21 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Feb 2021 01:23:26 -0800 (PST) From: Bin Meng To: Simon Glass , Alexander Graf , Priyanka Jain Cc: U-Boot Mailing List , Tom Rini , Marek Szyprowski , Matthias Brugger , Heiko Schocher , qemu-ppc@nongnu.org, qemu-devel@nongnu.org Subject: [PATCH v3 00/38] ppc: qemu: Convert qemu-ppce500 to driver model and enable additional driver support Date: Thu, 25 Feb 2021 17:22:21 +0800 Message-Id: <1614244979-48216-1-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 2.7.4 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.4 at phobos.denx.de X-Virus-Status: Clean At present when building qemu-ppce500 the following warnings are seen: ===================== WARNING ====================== This board does not use CONFIG_DM. CONFIG_DM will be compulsory starting with the v2020.01 release. Failure to update may result in board removal. UPD include/generated/timestamp_autogenerated.h See doc/driver-model/migration.rst for more info. ==================================================== ===================== WARNING ====================== This board does not use CONFIG_DM_PCI Please update the board to use CONFIG_DM_PCI before the v2019.07 release. Failure to update by the deadline may result in board removal. See doc/driver-model/migration.rst for more info. ==================================================== ===================== WARNING ====================== This board does not use CONFIG_DM_ETH (Driver Model for Ethernet drivers). Please update the board to use CONFIG_DM_ETH before the v2020.07 release. Failure to update by the deadline may result in board removal. See doc/driver-model/migration.rst for more info. ==================================================== The conversion of qemu-ppce500 board to driver model is long overdue. When testing the exisitng qemu-ppce500 support, PCI was found broken. This is caused by 2 separate issues: - One issue was caused by U-Boot: Commit e002474158d1 ("pci: pci-uclass: Dynamically allocate the PCI regions") Patch #1 updated the non-DM fsl_pci_init driver to dynamically allocate the PCI regions, to keep in sync with the pci uclass driver - One issue was caused by QEMU: commit e6b4e5f4795b ("PPC: e500: Move CCSR and MMIO space to upper end of address space") commit cb3778a0455a ("PPC: e500 pci host: Add support for ATMUs") Patch #3-4 fixed this issue to keep in sync with latest QEMU upstream Patch #5-8, #34-36 are minor fixes and clean-ups. Starting from patch#9, these are driver model conversion patches. Patch #11-17 are mainly related to CONFIG_ADDR_MAP, a library to support targets that have non-identity virtual-physical address mappings. A new command 'addrmap' is introduced to aid debugging, and a fix to arch/powerpc/asm/include/io.h is made to correct the usage of CONFIG_ADDR_MAP as it can only be used in the post- relocation phase. Also the initialization of this library is moved a bit earlier in the post-relocation phase otherwise device drivers won't work. Patch #19-21 are 85xx PCI driver fixes. It adds support to controller register physical address beyond 32-bit, as well as support to 64-bit bus and cpu address as current upstream QEMU uses 64-bit cpu address. Starting from patch#24, these are additional driver support patches. Patch #24, #26 are minor fix to the 'virtio' command and BLK driver dependency. Patch #25 enables the VirtIO NET support as by default a VirtIO standard PCI networking device is connected as an ethernet interface at PCI address 0.1.0. Patch #27 enables the VirtIO BLK driver support. Patch #28-30 enables the GPIO support. Patch #31-32 enables poweroff via GPIO. Patch #33 enables RTC over the I2C bus. Patch #37 moves the qemu-ppce500 boards codes to board/emulation as that is the place for other QEMU targets like x86, arm, riscv. Patch #38 adds a reST document to describe how to build and run U-Boot for the QEMU ppce500 machine. I hope we can make this series to U-Boot v2021.04 release. This series is available at u-boot-x86/qemu-ppc for testing. This cover letter is cc'ed to QEMU mailing list for a heads-up. A future patch will be sent to QEMU mailing list to bring its in-tree U-Boot source codes up-to-date. Changes in v3: - rebase on top of u-boot/master Changes in v2: - drop the revert patch of commit e002474158d1 - new patch: pci: fsl_pci_init: Dynamically allocate the PCI regions - add more details in the commit message, and put some comments in the codes to explain why - add doc/usage/addrmap.rst - new patch: test: cmd: Add a basic test for 'addrmap' command - new patch: virtio: Fix VirtIO BLK driver dependency - new patch: ppc: qemu: Enable VirtIO BLK support - new patch: ppc: mpc85xx: Add 'gpibe' register to 'struct ccsr_gpio' - new patch: gpio: mpc8xxx: Support controller register physical address beyond 32-bit - new patch: ppc: qemu: Enable GPIO support - new patch: dm: sysreset: Add a Kconfig option for the 'reset' command - new patch: ppc: qemu: Enable support for power off via GPIO - new patch: ppc: qemu: Enable RTC support via I2C - new patch: ppc: qemu: Delete the temporary FDT virtual-physical mapping after U-Boot is relocated - new patch: ppc: qemu: Drop a custom env variable 'fdt_addr_r' - new patch: ppc: qemu: Drop fixed_sdram() - add descriptions for VirtIO BLK, RTC and power off Bin Meng (38): pci: fsl_pci_init: Dynamically allocate the PCI regions ppc: qemu: Update MAINTAINERS for correct email address common: fdt_support: Support special case of PCI address in fdt_read_prop() ppc: qemu: Support non-identity PCI bus address ppc: qemu: Fix CONFIG_SYS_PCI_MAP_END ppc: mpc85xx: Wrap LAW related codes with CONFIG_FSL_LAW ppc: qemu: Drop init_laws() and print_laws() ppc: qemu: Drop board_early_init_f() ppc: qemu: Enable OF_CONTROL ppc: qemu: Enable driver model include: Remove extern from addr_map.h lib: addr_map: Move address_map[] type to the header file cmd: Add a command to display the address map test: cmd: Add a basic test for 'addrmap' command lib: kconfig: Mention CONFIG_ADDR_MAP limitation in the help ppc: io.h: Use addrmap_ translation APIs only in post-relocation phase common: Move initr_addr_map() to a bit earlier ppc: qemu: Switch over to use DM serial pci: mpc85xx: Wrap LAW programming with CONFIG_FSL_LAW pci: mpc85xx: Support controller register physical address beyond 32-bit pci: mpc85xx: Support 64-bit bus and cpu address ppc: qemu: Switch over to use DM ETH and PCI ppc: qemu: Drop CONFIG_OF_BOARD_SETUP cmd: Fix virtio command dependency ppc: qemu: Enable VirtIO NET support virtio: Fix VirtIO BLK driver dependency ppc: qemu: Enable VirtIO BLK support ppc: mpc85xx: Add 'gpibe' register to 'struct ccsr_gpio' gpio: mpc8xxx: Support controller register physical address beyond 32-bit ppc: qemu: Enable GPIO support dm: sysreset: Add a Kconfig option for the 'reset' command ppc: qemu: Enable support for power off via GPIO ppc: qemu: Enable RTC support via I2C ppc: qemu: Delete the temporary FDT virtual-physical mapping after U-Boot is relocated ppc: qemu: Drop a custom env variable 'fdt_addr_r' ppc: qemu: Drop fixed_sdram() ppc: qemu: Move board directory from board/freescale to board/emulation doc: Add a reST document for qemu-ppce500 arch/powerpc/cpu/mpc85xx/Kconfig | 2 +- arch/powerpc/cpu/mpc85xx/cpu.c | 2 + arch/powerpc/cpu/mpc85xx/cpu_init_early.c | 2 + arch/powerpc/include/asm/arch-mpc85xx/gpio.h | 2 +- arch/powerpc/include/asm/immap_85xx.h | 1 + arch/powerpc/include/asm/io.h | 15 +- .../{freescale => emulation}/qemu-ppce500/Kconfig | 2 +- board/emulation/qemu-ppce500/MAINTAINERS | 7 + .../{freescale => emulation}/qemu-ppce500/Makefile | 0 .../qemu-ppce500/qemu-ppce500.c | 178 +++++++-------------- board/freescale/qemu-ppce500/MAINTAINERS | 6 - cmd/Kconfig | 8 + cmd/Makefile | 1 + cmd/addrmap.c | 35 ++++ common/board_r.c | 6 +- common/fdt_support.c | 20 ++- configs/qemu-ppce500_defconfig | 27 +++- doc/board/emulation/index.rst | 1 + doc/board/emulation/qemu-ppce500.rst | 88 ++++++++++ doc/usage/addrmap.rst | 41 +++++ doc/usage/index.rst | 1 + drivers/gpio/mpc8xxx_gpio.c | 7 +- drivers/pci/fsl_pci_init.c | 5 + drivers/pci/pci_mpc85xx.c | 25 +-- drivers/sysreset/Kconfig | 6 + drivers/sysreset/sysreset-uclass.c | 2 + drivers/virtio/Kconfig | 1 + include/addr_map.h | 16 +- include/configs/qemu-ppce500.h | 30 +--- include/test/suites.h | 2 + lib/Kconfig | 2 + lib/addr_map.c | 6 +- test/cmd/Makefile | 1 + test/cmd/addrmap.c | 38 +++++ test/cmd_ut.c | 6 + 35 files changed, 397 insertions(+), 195 deletions(-) rename board/{freescale => emulation}/qemu-ppce500/Kconfig (86%) create mode 100644 board/emulation/qemu-ppce500/MAINTAINERS rename board/{freescale => emulation}/qemu-ppce500/Makefile (100%) rename board/{freescale => emulation}/qemu-ppce500/qemu-ppce500.c (65%) delete mode 100644 board/freescale/qemu-ppce500/MAINTAINERS create mode 100644 cmd/addrmap.c create mode 100644 doc/board/emulation/qemu-ppce500.rst create mode 100644 doc/usage/addrmap.rst create mode 100644 test/cmd/addrmap.c