From patchwork Tue Nov 19 22:46:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013404 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=mqu6vu3/; dkim-atps=neutral Authentication-Results: legolas.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=patchwork.ozlabs.org) 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 ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMfy4QD8z1xt3 for ; Wed, 20 Nov 2024 11:28:58 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id F367A8961E; Wed, 20 Nov 2024 01:27:59 +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="mqu6vu3/"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4748589553; Tue, 19 Nov 2024 23:46:51 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) (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 4BF7589555 for ; Tue, 19 Nov 2024 23:46:48 +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=l.rubusch@gmail.com Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4314e64eba4so5964775e9.2 for ; Tue, 19 Nov 2024 14:46:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056408; x=1732661208; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sAwNPVnhe/2Q8U/oXS9H8Q8Mu+DYVg3nknHTNQynCAM=; b=mqu6vu3/+NF/jgPWPvz0bcXE663NPaN8dckApjvigcj2/bQyI23ceFdJZipt5BZvV7 n5vy0NP6xmo8EI20Y4RD6nsJ0VYUftyIVTKHGs5n8QvEvxkejpoWh/buu/owDrxdZjrq 7wpns4Zu2MRbtUZ4Un1QCxaK4+p+XxgD4jGxybnUjwdT4/JDdmiyKPEuzJfAS26Ang9n qfunfwpFAc8Aa5wxQVEKulXSFIcCzto8zfxbGI1llQmMmWPFn1w1ct/5Ri5Ap0waoF40 Ra36j61BLSyexCHbQQuPZWNaTubIWbhI8KbQ8PMNyla1H2mdyAJm9Q/sQreGtlqi+1WZ QkVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056408; x=1732661208; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sAwNPVnhe/2Q8U/oXS9H8Q8Mu+DYVg3nknHTNQynCAM=; b=jOIziM6rKEriitgJgw6zMi5KoP8f9lRdiGvgtceYTb/AhUq9tOyJHhGGUayxLSWZHs hoqQI7I/SMnDiTIPYzou2YIVvj3mXfbg4B9QdRy1LoMmHZvKV3uUr7K3XMlFBWga+yw2 64mks7JfhSq7xEeEMS5e6j7KsyY6Krv4ThhVACd2xpbFbT3g/WfL4UlCTXYUiCKmAunX SdOo2CRgQtT9flT/e7dwbt2+ToqwUBfHWLq2TJtdSIIozoGQ9MoHo6YSsEQzd2ZrlvQ/ QEzVy5hu4t8camytEgzefGD3krC8sXSItEKa/z4u3oJ7tsb13jZup15S81xeJY36w0A3 FzHg== X-Gm-Message-State: AOJu0YxADa4MNL33XaD4bdwzwKfxoITU4fOz35SOjm/SOXRFYeHoqBhV /OSw0mI6MyMity4Qi5FuQmCNezrW/GnDQCP9BGW06nzMkDG31pHq8IzqmwR4 X-Gm-Gg: ASbGncvQOTFYLb8vNGwhvH5Z9hSuP+nnO2nbo/Epr3LmkXOZcyla/XjOc5lJ/43fZHV gBookd7NurLYoxj7zsbMHe9fWbg1C9fXmnCG031FdNUo7cqmDZQRAWx07gW87xkeXLZLOPda3kL piH8t2OY42UtTjiQ+ivfx14jOpwB7VSRj/2Xxmoxow6Dm6Y4D4TFu22RScr17+wTXdSAnCCci7j BYe8XvIW3vykT4uJMLpETT2D/OSKceLAEu4i12g+gbUO0rwGG8zYLlHwXrObXRImElftw2pT82P HTabe2sjEDl3HipCtjQxa2k/ilmb X-Google-Smtp-Source: AGHT+IEB1MHsCj+2HjMcMD1A6yURgt0rZX8pnSfEn+EJqhAW9zRQ+cr/7LWjNVYHIIwr2muarXzAgg== X-Received: by 2002:a05:600c:1990:b0:42c:ba61:d20b with SMTP id 5b1f17b1804b1-4334899a5b5mr1983845e9.3.1732056407551; Tue, 19 Nov 2024 14:46:47 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:46 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 01/10] doc: board: enclustra: add Enclustra Mercury+ AA1 Date: Tue, 19 Nov 2024 22:46:34 +0000 Message-Id: <20241119224643.27692-2-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Start documentation section for Enclustra. Cover Enclustra Intel SoMs and related carrier board setups. The section covers the Mercury+ AA1 SoM (Intel/arria10). Signed-off-by: Lothar Rubusch --- doc/board/enclustra/index.rst | 9 ++ doc/board/enclustra/mercury-aa1.rst | 202 ++++++++++++++++++++++++++++ doc/board/index.rst | 1 + 3 files changed, 212 insertions(+) create mode 100644 doc/board/enclustra/index.rst create mode 100644 doc/board/enclustra/mercury-aa1.rst diff --git a/doc/board/enclustra/index.rst b/doc/board/enclustra/index.rst new file mode 100644 index 0000000000..00727d0861 --- /dev/null +++ b/doc/board/enclustra/index.rst @@ -0,0 +1,9 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Enclustra +========= + +.. toctree:: + :maxdepth: 2 + + mercury-aa1 diff --git a/doc/board/enclustra/mercury-aa1.rst b/doc/board/enclustra/mercury-aa1.rst new file mode 100644 index 0000000000..dec7cc3bdd --- /dev/null +++ b/doc/board/enclustra/mercury-aa1.rst @@ -0,0 +1,202 @@ +.. SPDX-License-Identifier: GPL-2.0-or-later +.. sectionauthor:: Lothar Rubusch + +Mercury AA1 Module (Arria1 10) +============================== + +- SoM: https://www.enclustra.com/en/products/system-on-chip-modules/mercury-aa1/ +- Carrier board Mercury+ ST1: https://www.enclustra.com/en/products/base-boards/mercury-st1/ +- Carrier board Mercury+ PE1: https://www.enclustra.com/en/products/base-boards/mercury-pe1-200-300-400/ +- Carrier board Mercury+ PE3: https://www.enclustra.com/en/products/base-boards/mercury-pe3/ + +There are slightly different variants of the AA1 SoM, going by the identifier. + +- Me-aa1-270-2i2-d11e-nfx3 +- Me-aa1-270-3e4-d11e-nfx3 +- Me-aa1-480-2i3-d12e-nfx3 + +The u-boot setup is specific to a quartus design. Generate handoff files from +the design. Pass them to a python script to produce a handoff.h file. This is +needed as input for building the device-tree for u-boot. Eventually, building +the final u-boot depends on the particular Quartus design, the particular +carrier board, the selected boot media and boot mode. + +Enclustra provides reference design examples which can be built with +OpenEmbedded using their meta-layer. + +- Reference Design AA1 on ST1: https://github.com/enclustra/Mercury_AA1_ST1_Reference_Design +- Reference Design AA1 on PE1: https://github.com/enclustra/Mercury_AA1_PE1_Reference_Design +- Reference Design AA1 on PE3: https://github.com/enclustra/Mercury_AA1_PE3_Reference_Design +- OpenEmbedded meta-layer: https://github.com/enclustra/meta-enclustra-socfpga + +Quick Start +----------- + +- Setup and build a Quartus design project +- Obtain the hps.xml file from the Quartus design project +- Generate the handoff.h file for u-boot +- Adjust the device-tree file according to your setup +- Build u-boot +- Flash u-boot + +Build U-Boot +------------ + +The Quartus design produces a design specific ``hps.xml``, an ``emif.xml`` and +a corresponding ``id`` file contained in a directory ``handoff``. + +Generate the handoff.h file for u-boot, from a provided ``hps.xml`` using the +script provided in u-boot. + +.. code-block:: bash + + $ arch/arm/mach-socfpga/qts-filter-a10.sh /hps.xml arch/arm/dts/socfpga_arria10_mercury_aa1_handoff.h + +Adjust the device-tree file according to your setup. Follow the comments in the +file. + +.. code-block:: bash + + $ vi ./arch/arm/dts/enclustra-aa1.dts + +Build u-boot. Source your favorite toolchain for ARM first. + +.. code-block:: bash + + $ make socfpga_enclustra_mercury_aa1_defconfig + $ make -j8 + +Setup and compile a boot script as needed. Depending on the boot-mode select +``sd-aa1.cmd`` for SD/eMMC, or ``qspi-aa1.cmd`` for QSPI flash. + +.. code-block:: bash + + $ ./tools/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "U-boot mmc startscript" -d board/enclustra/bootscripts/sd-aa1.cmd boot.scr + +Device-Tree setup +----------------- + +The basic u-boot device-tree fragments are provided here. The handoff tools +will generate further u-boot device-tree fragments. The various .dtsi files +then need to be included in a top-level .dts file. + +Flash the U-Boot Binary to a Micro SD Card +------------------------------------------ + +The following example describes the full approach. Prepare a micro SD card with +three partitions as follows e.g. on /dev/sda (check before): + +* ``type=c, start=2048, size=409600`` +* ``type=a2, start=411648, size=14336`` +* ``type=83, start=425984, size=1619968`` + +.. code-block:: bash + + $ cat ./partitionmap.txt + start= 2048, size= 102400, type=b, bootable + start= 104448, size= 4096, type=a2 + start= 108544, size= 819200, type=83 + + $ sudo sfdisk /dev/sde < ./partitionmap.txt + +Note: The ``fpga.itb`` is needed to start the bootloader. A kernel +``system.dtb`` is needed to boot into the system. Both are not part of +u-boot, but are be provided through OpenEmbedded using Enclustra's meta-layer. + +Generally the bitstream files depend on the logic design, but the meta-layer +provides a demo design. Copy the ``bitstream.periph.rbf`` and +``bitstream.core.rbf`` from your design or OpenEmbedded's deploy directory. The +``fpga.its`` in board/enclustra then is used to bundle them. + + .. code-block:: bash + + $ cp /bitstream.periph.rbf ./ + $ cp /bitstream.core.rbf ./ + $ ./tools/mkimage -E -f ./board/enclustra/mercury_aa1/fpga.its fpga.itb + +Format the SD card, and copy the following artifacts to the mounted boot +partition, e.g. on /dev/sda. + + .. code-block:: bash + + $ mkfs.vfat -n boot /dev/sda1 + $ mount /dev/sda1 /media/boot + $ cp ./{boot.scr,u-boot.img,fpga.itb,Image,system.dtb} /media/boot/ + $ umount /dev/sda1 + +Flash the SPL directly. + + .. code-block:: bash + + $ sudo dd if=./spl/u-boot-splx4.sfp of=/dev/sda2 conv=fdatasync bs=4k status=progress + +Format and flash a rootfs from image or files to the third partition. + + .. code-block:: bash + + $ mkfs.ext4 -L rootfs /dev/sda3 + $ mount /dev/sda3 /media/rootfs + $ tar xf ./rootfs.tar -C /media/rootfs + $ umount /dev/sda3 + +Boot Media +---------- + +Alternative boot media are possible as officially documented by Enclustra. + +* Micro-SD card +* eMMC +* QSPI + +Note: eMMC and QSPI can be flashed from off the u-boot shell. Usually after +flashing, the correct boot mode needs to be set by a BSEL switch. + +Before turning on the setup, make sure to have the correct voltage configured +at the carrier board, using the jumpers on the voltage pin header. Also make +sure to have switched to the correct boot media using typically some dip +switches to be found on the carrier board. + +Boot Log +-------- + +The demo shows booting a AA1 + ST1 setup and stopping at the u-boot shell. + +Here is the console output:: + + U-Boot SPL 2024.10 + FPGA: Checking FPGA configuration setting ... + FPGA: Start to program peripheral/full bitstream ... + FPGA: Early Release Succeeded. + FPGA: Checking FPGA configuration setting ... + FPGA: Start to program peripheral/full bitstream ... + FPGA: Early Release Succeeded. + + U-Boot SPL 2024.10 + DDRCAL: Success + DDRCAL: Scrubbing ECC RAM (2048 MiB). + DDRCAL: Scrubbing ECC RAM done. + FPGA: Checking FPGA configuration setting ... + FPGA: Start to program core bitstream ... + Full Configuration Succeeded. + FPGA: Enter user mode. + Trying to boot from MMC1 + + + U-Boot 2024.10 + + CPU: Altera SoCFPGA Arria 10 + BOOT: SD/MMC External Transceiver (1.8V) + Model: Enclustra Mercury+ AA1 + DRAM: 2 GiB + Core: 80 devices, 20 uclasses, devicetree: separate + MMC: dwmmc0@ff808000: 0 + Loading Environment from FAT... OK + In: serial + Out: serial + Err: serial + Model: Enclustra Mercury+ AA1 + ethaddr set to 20:B0:F7:06:0D:BE + eth1addr set to 20:B0:F7:06:0D:BF + Net: eth0: ethernet@ff800000 + => + diff --git a/doc/board/index.rst b/doc/board/index.rst index 3fb7c84f10..26feff48cd 100644 --- a/doc/board/index.rst +++ b/doc/board/index.rst @@ -25,6 +25,7 @@ Board-specific doc congatec/index coreboot/index emulation/index + enclustra/index gateworks/index google/index highbank/index From patchwork Tue Nov 19 22:46:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013405 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=A1v//UyM; dkim-atps=neutral Authentication-Results: legolas.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=patchwork.ozlabs.org) 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 ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMgB0wzCz1xt3 for ; Wed, 20 Nov 2024 11:29:09 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 6315489621; Wed, 20 Nov 2024 01:28:00 +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="A1v//UyM"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B80AE88D7E; Tue, 19 Nov 2024 23:46:51 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) (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 6F64788EEA for ; Tue, 19 Nov 2024 23:46:49 +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=l.rubusch@gmail.com Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-43158124a54so4379545e9.3 for ; Tue, 19 Nov 2024 14:46:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056409; x=1732661209; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7/EeGPd018YB4+Oc1qt/IsiIdPYECzj8/mJdz2JsbLE=; b=A1v//UyMDkg3oYH78pVKUkNtuQRK4Trj9bQj5iJls7WjpCuuUxsAJOFZagSMlNY1KQ kGwqqfdzbxpepU1O+tXoO0zvnuv71o/GevQq3cTSQEdpUsMFkNB1h3pt3pFZXG53g9tl xYtVpq2E4KRhHcakYRe4XVbmLU/B3qQRZXOhRf4F4zotVlR4bTx9bUE6O0CXOaVcrhfA gEB77/dt8NWKSYzGk57epFS1wvCFj+7SomGHCSwyPPuszKi5FzS+Abtf9+KrT3lzOcep 1vWuYLiMPklmEz+kqNH8oUXUlCOaCh117AYOqUwZPFHKDkYDc76ejem3XCKRo7tL9Yt7 U0Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056409; x=1732661209; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7/EeGPd018YB4+Oc1qt/IsiIdPYECzj8/mJdz2JsbLE=; b=CjMz7wCUKJtlPm2jHhHRxGz8dbwahrPafsDrSwq20rvLD125vUafTWbT3t+fmBbsWQ 2aqXamOnKEGVytdiyiOLTkzMPGZsfs+TT+CoCxaIyE/p5ogeRPoKoB6d1lwxwgvFYxbS 84zUjyMqKl89bm6XTf2YPbsEQB87+/WbhhxdxsAcKUZmop1ICMcfpICxAjFiUgAFT5kY JuT0oRGRWUFlXAK9//BWdHT9voV7nxmaxffiWeGUb5aMs5OnQfLynmqD+rvmkbXvKVEO Z4xDLDGgLP2RjRbnf/oi2epEyGmoTUI8H3Bla1sKXLWbkrtt7W/weF3fhCQK3s3e89fq JZQA== X-Gm-Message-State: AOJu0YwVMg7v2mV90awrUNSrz2IbBOnkq5cDBmjTQEDzcFDkZcfemw0t J5ulNgL4+EEmV1IdkmghbGV4FjP4Z4XhqedmcYu4kIMguDlE4HR7rSe0f4vv X-Gm-Gg: ASbGncuo/ksmbn5BcsAFFWsm4rnkej3CeUWUcaybFSsjs2QvTjBcLgAtDYkdRLTy6vv CYCvc9uRpRbqZb8/2TAhs2rTCgxF4kWg/o8tkKjIhvjNGdSA9Gu3gVg/mZFunxdAbKaJoEoZBQB Dgh1EGNYqaQC3B4XRO679n8nnq+hkEXv/XofjYqgXcv7F1S/61xDjmPGqCUpRSG0nPayGgqHD4a vqK0sIgYMjf7uzzO4KBBroPy27dDwcIfFHD53FXKfVa5x7/vU7ROw81/cum5i+uI+mMYmbfVnEs +h3jKAnauvl3Cq9KAUDgVqd+Pm3M X-Google-Smtp-Source: AGHT+IEszi42ga0k0ufnbHmPK8HUho2yk/RT2JMEvC70xlbLx6KBqkCLa0Xrc/DBg64Ao8os7HuE/A== X-Received: by 2002:a05:600c:4fcf:b0:42c:aeee:e604 with SMTP id 5b1f17b1804b1-4334f030467mr2216655e9.8.1732056408789; Tue, 19 Nov 2024 14:46:48 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:48 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 02/10] ARM: socfpga: add Mercury+ AA1 SoM support Date: Tue, 19 Nov 2024 22:46:35 +0000 Message-Id: <20241119224643.27692-3-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Introduce support for the Enclustra SoMs: Mercury+ AA1 (Intel/Arria10) Cover general board files for SD/MMC and QSPI boot modes. Integrate the boards to kconfig. All build variants will depend on Quartus handoff files, thus they depend on the particular Quartus design. The approach is covered in the according documentation part. Additionally add configuration for SD/MMC boot and QSPI bootmodes. Register additional targets in kconfig. Signed-off-by: Andreas Buerkler Signed-off-by: Lothar Rubusch --- arch/arm/mach-socfpga/Kconfig | 9 ++ board/enclustra/common/Makefile | 4 + board/enclustra/mercury_aa1/Kconfig | 15 ++++ board/enclustra/mercury_aa1/MAINTAINERS | 10 +++ board/enclustra/mercury_aa1/fpga.its | 32 +++++++ .../socfpga_enclustra_mercury_aa1_defconfig | 85 +++++++++++++++++++ include/configs/socfpga_mercury_aa1.h | 23 +++++ 7 files changed, 178 insertions(+) create mode 100644 board/enclustra/common/Makefile create mode 100644 board/enclustra/mercury_aa1/Kconfig create mode 100644 board/enclustra/mercury_aa1/MAINTAINERS create mode 100644 board/enclustra/mercury_aa1/fpga.its create mode 100644 configs/socfpga_enclustra_mercury_aa1_defconfig create mode 100644 include/configs/socfpga_mercury_aa1.h diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig index 6b6a162f56..b7de86e934 100644 --- a/arch/arm/mach-socfpga/Kconfig +++ b/arch/arm/mach-socfpga/Kconfig @@ -184,6 +184,10 @@ config TARGET_SOCFPGA_EBV_SOCRATES bool "EBV SoCrates (Cyclone V)" select TARGET_SOCFPGA_CYCLONE5 +config TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 + bool "Enclustra Mercury+ AA1" + select TARGET_SOCFPGA_ARRIA10 + config TARGET_SOCFPGA_IS1 bool "IS1 (Cyclone V)" select TARGET_SOCFPGA_CYCLONE5 @@ -237,6 +241,7 @@ config SYS_BOARD default "de10-standard" if TARGET_SOCFPGA_TERASIC_DE10_STANDARD default "is1" if TARGET_SOCFPGA_IS1 default "mcvevk" if TARGET_SOCFPGA_ARIES_MCVEVK + default "mercury_aa1" if TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 default "n5x-socdk" if TARGET_SOCFPGA_N5X_SOCDK default "secu1" if TARGET_SOCFPGA_ARRIA5_SECU1 default "sockit" if TARGET_SOCFPGA_TERASIC_SOCKIT @@ -256,6 +261,7 @@ config SYS_VENDOR default "aries" if TARGET_SOCFPGA_ARIES_MCVEVK default "devboards" if TARGET_SOCFPGA_DEVBOARDS_DBM_SOC1 default "ebv" if TARGET_SOCFPGA_EBV_SOCRATES + default "enclustra" if TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 default "google" if TARGET_SOCFPGA_CHAMELEONV3 default "keymile" if TARGET_SOCFPGA_ARRIA5_SECU1 default "softing" if TARGET_SOCFPGA_SOFTING_VINING_FPGA @@ -283,6 +289,7 @@ config SYS_CONFIG_NAME default "socfpga_de10_standard" if TARGET_SOCFPGA_TERASIC_DE10_STANDARD default "socfpga_is1" if TARGET_SOCFPGA_IS1 default "socfpga_mcvevk" if TARGET_SOCFPGA_ARIES_MCVEVK + default "socfpga_mercury_aa1" if TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 default "socfpga_n5x_socdk" if TARGET_SOCFPGA_N5X_SOCDK default "socfpga_sockit" if TARGET_SOCFPGA_TERASIC_SOCKIT default "socfpga_socrates" if TARGET_SOCFPGA_EBV_SOCRATES @@ -290,4 +297,6 @@ config SYS_CONFIG_NAME default "socfpga_stratix10_socdk" if TARGET_SOCFPGA_STRATIX10_SOCDK default "socfpga_vining_fpga" if TARGET_SOCFPGA_SOFTING_VINING_FPGA +source "board/enclustra/mercury_aa1/Kconfig" + endif diff --git a/board/enclustra/common/Makefile b/board/enclustra/common/Makefile new file mode 100644 index 0000000000..16c8531d74 --- /dev/null +++ b/board/enclustra/common/Makefile @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright (c) 2024 Enclustra GmbH + +# Common for several Enclustra modules diff --git a/board/enclustra/mercury_aa1/Kconfig b/board/enclustra/mercury_aa1/Kconfig new file mode 100644 index 0000000000..40c7cb2687 --- /dev/null +++ b/board/enclustra/mercury_aa1/Kconfig @@ -0,0 +1,15 @@ +if TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 + +config SYS_CPU + default "armv7" + +config SYS_BOARD + default "mercury_aa1" + +config SYS_VENDOR + default "enclustra" + +config SYS_CONFIG_NAME + default "socfpga_mercury_aa1" + +endif diff --git a/board/enclustra/mercury_aa1/MAINTAINERS b/board/enclustra/mercury_aa1/MAINTAINERS new file mode 100644 index 0000000000..13baf949ab --- /dev/null +++ b/board/enclustra/mercury_aa1/MAINTAINERS @@ -0,0 +1,10 @@ +Enclustra Mercury+ AA1 +M: Lothar Rubusch +S: Maintained +N: board/enclustra/mercury_aa1/ +N: board/enclustra/common/ +N: configs/socfpga_enclustra_mercury_aa1_defconfig +N: doc/board/enclustra/mercury-aa1.rst +N: include/configs/socfpga_mercury_aa1.h +N: enclustra +N: mercury_aa1 diff --git a/board/enclustra/mercury_aa1/fpga.its b/board/enclustra/mercury_aa1/fpga.its new file mode 100644 index 0000000000..cb42d61fbd --- /dev/null +++ b/board/enclustra/mercury_aa1/fpga.its @@ -0,0 +1,32 @@ +/dts-v1/; + +/ { + description = "FIT image with FPGA bistream"; + #address-cells = <1>; + + images { + fpga-periph-1 { + description = "FPGA peripheral bitstream"; + data = /incbin/("../../../bitstream.periph.rbf"); + type = "fpga"; + arch = "arm"; + compression = "none"; + }; + + fpga-core-1 { + description = "FPGA core bitstream"; + data = /incbin/("../../../bitstream.core.rbf"); + type = "fpga"; + arch = "arm"; + compression = "none"; + }; + }; + + configurations { + default = "config-1"; + config-1 { + description = "Boot with FPGA early IO release config"; + fpga = "fpga-periph-1", "fpga-core-1"; + }; + }; +}; diff --git a/configs/socfpga_enclustra_mercury_aa1_defconfig b/configs/socfpga_enclustra_mercury_aa1_defconfig new file mode 100644 index 0000000000..6a2434fe5a --- /dev/null +++ b/configs/socfpga_enclustra_mercury_aa1_defconfig @@ -0,0 +1,85 @@ +CONFIG_ARM=y +CONFIG_SYS_L2_PL310=y +CONFIG_ARCH_SOCFPGA=y +CONFIG_SYS_MALLOC_LEN=0x4000000 +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xffe2b000 +CONFIG_SF_DEFAULT_SPEED=10000000 +CONFIG_SF_DEFAULT_MODE=0x2003 +CONFIG_ENV_SIZE=0x80000 +CONFIG_DM_GPIO=y +CONFIG_DEFAULT_DEVICE_TREE="socfpga_arria10_enclustra_mercury_aa1" +CONFIG_SPL_TEXT_BASE=0xFFE00000 +CONFIG_OF_LIBFDT_OVERLAY=y +CONFIG_SPL_DRIVERS_MISC=y +CONFIG_SPL_STACK=0xffe2b000 +CONFIG_TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1=y +CONFIG_IDENT_STRING="socfpga_arria10" +CONFIG_SPL_FS_FAT=y +CONFIG_FIT=y +CONFIG_SPL_LOAD_FIT=y +CONFIG_BOOTSTD_FULL=y +CONFIG_BOOTDELAY=3 +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=ttyS0,115200 rw rootwait root=/dev/mmcblk0p3" +CONFIG_BOOTCOMMAND="run distro_bootcmd" +CONFIG_DEFAULT_FDT_FILE="system.dtb" +CONFIG_SYS_CONSOLE_IS_IN_ENV=y +CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y +CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y +CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_CLOCKS=y +CONFIG_SPL_PAD_TO=0x40000 +CONFIG_SPL_NO_BSS_LIMIT=y +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SPL_SYS_MALLOC=y +CONFIG_SPL_HAS_CUSTOM_MALLOC_START=y +CONFIG_SPL_CUSTOM_SYS_MALLOC_ADDR=0xffe2b000 +CONFIG_SPL_SYS_MALLOC_SIZE=0x15000 +CONFIG_SPL_ENV_SUPPORT=y +CONFIG_SPL_FS_LOAD_PAYLOAD_NAME="u-boot.img" +CONFIG_SPL_FPGA=y +CONFIG_SPL_SPI_LOAD=y +CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000 +# CONFIG_CMD_BOOTDEV is not set +# CONFIG_CMD_BOOTMETH is not set +# CONFIG_CMD_VBE is not set +CONFIG_CMD_ASKENV=y +CONFIG_CMD_GREPENV=y +CONFIG_CMD_FPGA_LOADMK=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_I2C=y +CONFIG_CMD_MMC=y +CONFIG_CMD_SPI=y +CONFIG_CMD_CACHE=y +CONFIG_CMD_SYSBOOT=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-parent dmas dma-names" +CONFIG_ENV_OVERWRITE=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_USE_BOOTFILE=y +CONFIG_BOOTFILE="boot.scr" +CONFIG_VERSION_VARIABLE=y +CONFIG_SPL_DM_SEQ_ALIAS=y +CONFIG_DWAPB_GPIO=y +CONFIG_SYS_I2C_DW=y +CONFIG_MISC=y +CONFIG_FS_LOADER=y +CONFIG_SPL_FS_LOADER=y +CONFIG_MMC_DW=y +CONFIG_BOOTDEV_SPI_FLASH=y +# CONFIG_SPI_FLASH_LOCK is not set +# CONFIG_SPI_FLASH_UNLOCK_ALL is not set +CONFIG_SPI_FLASH_SPANSION=y +# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set +CONFIG_PHY_MICREL=y +CONFIG_PHY_MICREL_KSZ90X1=y +CONFIG_ETH_DESIGNWARE=y +CONFIG_MII=y +CONFIG_SYS_NS16550_MEM32=y +CONFIG_SPI=y +CONFIG_CADENCE_QSPI=y +CONFIG_TIMER=y +CONFIG_SPL_TIMER=y +CONFIG_DESIGNWARE_APB_TIMER=y +CONFIG_USB=y diff --git a/include/configs/socfpga_mercury_aa1.h b/include/configs/socfpga_mercury_aa1.h new file mode 100644 index 0000000000..d9d169f6dd --- /dev/null +++ b/include/configs/socfpga_mercury_aa1.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2024 Enclustra GmbH + * + */ + +#ifndef __CONFIG_SOCFGPA_MERCURY_AA1_H__ +#define __CONFIG_SOCFGPA_MERCURY_AA1_H__ + +#include + +/* + * U-Boot general configurations + */ + +/* Memory configurations */ +#define PHYS_SDRAM_1_SIZE 0x80000000 + +/* The rest of the configuration is shared */ +#include +#include + +#endif /* __CONFIG_SOCFGPA_MERCURY_AA1_H__ */ From patchwork Tue Nov 19 22:46:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013406 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=a6b+EEN5; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMgN3V1Pz1xt3 for ; Wed, 20 Nov 2024 11:29:20 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id E4A7789623; Wed, 20 Nov 2024 01:28:00 +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="a6b+EEN5"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 9E20A89555; Tue, 19 Nov 2024 23:46:53 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) (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 AA666895D9 for ; Tue, 19 Nov 2024 23:46:50 +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=l.rubusch@gmail.com Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3821a8c7c5cso667193f8f.0 for ; Tue, 19 Nov 2024 14:46:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056410; x=1732661210; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sF6Tp2/pRdN0BzptcIUevTa/Zbklnfm6T4bZ8FxQZi8=; b=a6b+EEN5L3jl2KNwpyHfHXQipa8RxKLY32+9twVhQhNxF+YMGqnic8O6jcEEQTo2tb eLcBoGuCLHmbcBgMbbsqBVU3ACmv+TMoBigETGMW+i/RlTBo696RBV1tzWDFUDm0HNOB V2hXTT1pgUSSJg8lnShThiIE1vlYSxa057u0UpTNfZpUOfUlegDCVg+MzLcznDL6UcTh mHfuUuN6nSPZe0HkLecU3LiFAuao90u1t5oe5oAK11NzEB6wPAXp/MghhWeM2a2Btiy4 FZ/H2m+UES3VEAVoLTieG3bPB4xfpbGYG6LH9V/mh67MyoTOttgToUexfJuKMjam2IOq jMiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056410; x=1732661210; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sF6Tp2/pRdN0BzptcIUevTa/Zbklnfm6T4bZ8FxQZi8=; b=OI5+LPh482s0YWdaISQ3s6ESCI3Yvk8V7dk0/YfKIVwV89+q2dYCHGbjY8PLN7hoxB x+lXpU8OLBki73SbspkYJ99F2PsHrM7+hoqnCNJvZZYn7Jhkpd9/SMlF/y9POtun2Ypt MHOBQcOadfsyo1YCMWOcGoW5thI/R+PG0khEE+emwyZ4P7ZqoB2WmD7z5mhLuv1c8vbT R+DbX2y+VdxeN6p2TsPQvP5L7Y2dxUYANh+8f81jN+b5i5jWxGeq3zhOVQ4KNpVca7rV rM2yjgvysE7bqeJ4aKtDSae5bMdR9qVUKj4SQWAma261AWStIG67fb1P8wpZHKoVIK8m YgsQ== X-Gm-Message-State: AOJu0Yy9OroGEl8Ep/dzGp+vfk3CiP5VZtZ8Y/EWPgYxPa/VsYmBfGST hYIebY1Qbg4OON/Y2ALINUKIioqiiOv4D2FFOwLPGe/eAfDXYYAVzOQkCrwO X-Gm-Gg: ASbGncvz60y34dejWNCm/e5ObI3RSI3u8uHeB9MTU6qcjbeVHed+nTIiNhqAGY+FWCc N6o/mJncB2729654I8X/mWnohDsRFYa3Bqi0otCcHONts8o5+YetACgCs+1p2O1TYE1E8GLkHkK X/M+bCBRZGO5TioD32dd5Iv0yxwCLTVJtBSaeLwtV4vMNTY/Us4cM+5vlQW+3OTmQHz6uJEx5Rl mQJtBlVxIIoiMus4b11S2XIcoWJOag1Jzt5O/qQsvAqfSirm/w7ogTkYxSupcey5MWaWfed10lP MgRnkDllx8jhKqMovdLQdLMhgSu5 X-Google-Smtp-Source: AGHT+IENKCrfsuSN+EAX5dXjVpQEpBjy+/AcX2R682N6EG9DHzKtRHqhReJagMvUq7LcH6LwCoLnlQ== X-Received: by 2002:a05:600c:3ba6:b0:432:7c08:d0fb with SMTP id 5b1f17b1804b1-433489b1372mr2204645e9.3.1732056409966; Tue, 19 Nov 2024 14:46:49 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:49 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 03/10] ARM: dts: socfpga: add Mercury+ AA1 for u-boot dts Date: Tue, 19 Nov 2024 22:46:36 +0000 Message-Id: <20241119224643.27692-4-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Introduce u-boot specific device-tree files for Enclustra Mercury+ AA1 SoMs (Intel/arria10). Generic device-tree fragments for linux and U-boot shall be provided in dts/upstream. The selection of the generic device-tree fragments depends on a selected boot-mode and a selected carrier board. On Intel/Arria10 a handoff setup is needed for initialization of various clock / pinmux / DRAM settings only used by U-Boot provided by the current patch. Signed-off-by: Andreas Buerkler Signed-off-by: Lothar Rubusch --- ..._arria10_enclustra_mercury_aa1-u-boot.dtsi | 45 +++ .../socfpga_arria10_enclustra_mercury_aa1.dts | 45 +++ .../socfpga_arria10_mercury_aa1-u-boot.dtsi | 19 ++ .../dts/socfpga_arria10_mercury_aa1_handoff.h | 305 ++++++++++++++++++ board/enclustra/mercury_aa1/Kconfig | 37 +++ board/enclustra/mercury_aa1/MAINTAINERS | 2 + 6 files changed, 453 insertions(+) create mode 100644 arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi create mode 100644 arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts create mode 100644 arch/arm/dts/socfpga_arria10_mercury_aa1_handoff.h diff --git a/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi new file mode 100644 index 0000000000..6e38286572 --- /dev/null +++ b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* + * Copyright (C) 2024 Lothar Rubusch + */ + +/* Arria10 handoff (u-boot) */ +#include "socfpga_arria10_mercury_aa1_handoff.h" +#include "socfpga_arria10-handoff.dtsi" +#include "socfpga_arria10_handoff_u-boot.dtsi" +#include "socfpga_arria10_mercury_aa1-u-boot.dtsi" + +/* Specific boot-mode (u-boot) */ +#if IS_ENABLED(CONFIG_ENCLUSTRA_SDMMC) || IS_ENABLED(CONFIG_ENCLUSTRA_EMMC) + +/ { + fs_loader0: fs-loader { + bootph-all; + compatible = "u-boot,fs-loader"; + phandlepart = <&mmc 1>; + }; +}; + +&fpga_mgr { + bootph-all; + firmware-loader = <&fs_loader0>; + altr,bitstream = "fpga.itb"; +}; + +#elif IS_ENABLED(CONFIG_ENCLUSTRA_QSPI) + +/ { + fs_loader0: fs-loader { + bootph-all; + compatible = "u-boot,fs-loader"; + sfconfig = <0 0 50000000 3>; + }; +}; + +&fpga_mgr { + bootph-all; + firmware-loader = <&fs_loader0>; + altr,bitstream = "300000"; +}; + +#endif diff --git a/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts new file mode 100644 index 0000000000..e8cc51a7b8 --- /dev/null +++ b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0+ OR MIT +/* + * Copyright (C) 2024 Lothar Rubusch + */ + +/dts-v1/; + +/* The arria10 family */ +#include "socfpga/socfpga_arria10_mercury_aa1.dtsi" + +/ { + aliases { + ethernet0 = &gmac0; + serial0 = &uart0; + serial1 = &uart1; + i2c0 = &i2c1; + i2c1 = &i2c0; + spi0 = &qspi; + }; +}; + +&qspi { + bootph-all; + status = "okay"; + flash0: s25fl512s@0 { + bootph-all; + + cdns,page-size = <256>; + cdns,block-size = <16>; + + cdns,tshsl-ns = <200>; + cdns,tsd2d-ns = <255>; + cdns,tchsh-ns = <20>; + cdns,tslch-ns = <20>; + }; +}; + +/* Carrier board support */ +#if IS_ENABLED(CONFIG_ENCLUSTRA_PE1) +# include "socfpga/socfpga_enclustra_mercury_pe1.dtsi" +#elif IS_ENABLED(CONFIG_ENCLUSTRA_PE3) +# include "socfpga/socfpga_enclustra_mercury_pe3.dtsi" +#elif IS_ENABLED(CONFIG_ENCLUSTRA_ST1) +# include "socfpga/socfpga_enclustra_mercury_st1.dtsi" +#endif diff --git a/arch/arm/dts/socfpga_arria10_mercury_aa1-u-boot.dtsi b/arch/arm/dts/socfpga_arria10_mercury_aa1-u-boot.dtsi index 8866df3ddd..ad5b5a87e0 100644 --- a/arch/arm/dts/socfpga_arria10_mercury_aa1-u-boot.dtsi +++ b/arch/arm/dts/socfpga_arria10_mercury_aa1-u-boot.dtsi @@ -33,6 +33,21 @@ bootph-all; }; +&l4_main_clk { + bootph-all; +}; + +&qspi_clk { + bootph-all; +}; + +&qspi { + bootph-all; + flash0: s25fl512s@0 { + bootph-all; + }; +}; + &mmc { bootph-all; }; @@ -52,3 +67,7 @@ &uart1 { bootph-all; }; + +&watchdog1 { + bootph-all; +}; diff --git a/arch/arm/dts/socfpga_arria10_mercury_aa1_handoff.h b/arch/arm/dts/socfpga_arria10_mercury_aa1_handoff.h new file mode 100644 index 0000000000..b7cdb74792 --- /dev/null +++ b/arch/arm/dts/socfpga_arria10_mercury_aa1_handoff.h @@ -0,0 +1,305 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Intel Arria 10 SoCFPGA configuration + */ + +#ifndef __SOCFPGA_ARRIA10_CONFIG_H__ +#define __SOCFPGA_ARRIA10_CONFIG_H__ + +/* Clocks */ +#define CB_INTOSC_LS_CLK_HZ 60000000 +#define EMAC0_CLK_HZ 250000000 +#define EMAC1_CLK_HZ 250000000 +#define EMAC2_CLK_HZ 250000000 +#define EOSC1_CLK_HZ 33333000 +#define F2H_FREE_CLK_HZ 200000000 +#define H2F_USER0_CLK_HZ 100000000 +#define H2F_USER1_CLK_HZ 50000000 +#define L3_MAIN_FREE_CLK_HZ 400000000 +#define SDMMC_CLK_HZ 200000000 +#define TPIU_CLK_HZ 100000000 +#define MAINPLLGRP_CNTR15CLK_CNT 900 +#define MAINPLLGRP_CNTR2CLK_CNT 900 +#define MAINPLLGRP_CNTR3CLK_CNT 900 +#define MAINPLLGRP_CNTR4CLK_CNT 900 +#define MAINPLLGRP_CNTR5CLK_CNT 900 +#define MAINPLLGRP_CNTR6CLK_CNT 9 +#define MAINPLLGRP_CNTR7CLK_CNT 19 +#define MAINPLLGRP_CNTR7CLK_SRC 0 +#define MAINPLLGRP_CNTR8CLK_CNT 39 +#define MAINPLLGRP_CNTR9CLK_CNT 900 +#define MAINPLLGRP_CNTR9CLK_SRC 0 +#define MAINPLLGRP_MPUCLK_CNT 0 +#define MAINPLLGRP_MPUCLK_SRC 0 +#define MAINPLLGRP_NOCCLK_CNT 0 +#define MAINPLLGRP_NOCCLK_SRC 0 +#define MAINPLLGRP_NOCDIV_CSATCLK 0 +#define MAINPLLGRP_NOCDIV_CSPDBGCLK 1 +#define MAINPLLGRP_NOCDIV_CSTRACECLK 0 +#define MAINPLLGRP_NOCDIV_L4MAINCLK 0 +#define MAINPLLGRP_NOCDIV_L4MPCLK 1 +#define MAINPLLGRP_NOCDIV_L4SPCLK 2 +#define MAINPLLGRP_VCO0_PSRC 0 +#define MAINPLLGRP_VCO1_DENOM 32 +#define MAINPLLGRP_VCO1_NUMER 1980 +#define PERPLLGRP_CNTR2CLK_CNT 7 +#define PERPLLGRP_CNTR2CLK_SRC 1 +#define PERPLLGRP_CNTR3CLK_CNT 900 +#define PERPLLGRP_CNTR3CLK_SRC 1 +#define PERPLLGRP_CNTR4CLK_CNT 19 +#define PERPLLGRP_CNTR4CLK_SRC 1 +#define PERPLLGRP_CNTR5CLK_CNT 499 +#define PERPLLGRP_CNTR5CLK_SRC 1 +#define PERPLLGRP_CNTR6CLK_CNT 900 +#define PERPLLGRP_CNTR6CLK_SRC 0 +#define PERPLLGRP_CNTR7CLK_CNT 900 +#define PERPLLGRP_CNTR8CLK_CNT 900 +#define PERPLLGRP_CNTR8CLK_SRC 0 +#define PERPLLGRP_CNTR9CLK_CNT 900 +#define PERPLLGRP_EMACCTL_EMAC0SEL 0 +#define PERPLLGRP_EMACCTL_EMAC1SEL 0 +#define PERPLLGRP_EMACCTL_EMAC2SEL 0 +#define PERPLLGRP_GPIODIV_GPIODBCLK 32000 +#define PERPLLGRP_VCO0_PSRC 0 +#define PERPLLGRP_VCO1_DENOM 32 +#define PERPLLGRP_VCO1_NUMER 1980 +#define CLKMGR_TESTIOCTRL_DEBUGCLKSEL 16 +#define CLKMGR_TESTIOCTRL_MAINCLKSEL 8 +#define CLKMGR_TESTIOCTRL_PERICLKSEL 8 +#define ALTERAGRP_MPUCLK_MAINCNT 1 +#define ALTERAGRP_MPUCLK_PERICNT 900 +#define ALTERAGRP_NOCCLK_MAINCNT 4 +#define ALTERAGRP_NOCCLK_PERICNT 900 +#define ALTERAGRP_MPUCLK ((ALTERAGRP_MPUCLK_PERICNT << 16) | \ + (ALTERAGRP_MPUCLK_MAINCNT)) +#define ALTERAGRP_NOCCLK ((ALTERAGRP_NOCCLK_PERICNT << 16) | \ + (ALTERAGRP_NOCCLK_MAINCNT)) + +/* Pin Mux Configuration */ +#define CONFIG_IO_10_INPUT_BUF_EN 1 +#define CONFIG_IO_10_PD_DRV_STRG 10 +#define CONFIG_IO_10_PD_SLW_RT 1 +#define CONFIG_IO_10_PU_DRV_STRG 8 +#define CONFIG_IO_10_PU_SLW_RT 1 +#define CONFIG_IO_10_RTRIM 1 +#define CONFIG_IO_10_WK_PU_EN 0 +#define CONFIG_IO_11_INPUT_BUF_EN 1 +#define CONFIG_IO_11_PD_DRV_STRG 10 +#define CONFIG_IO_11_PD_SLW_RT 1 +#define CONFIG_IO_11_PU_DRV_STRG 8 +#define CONFIG_IO_11_PU_SLW_RT 1 +#define CONFIG_IO_11_RTRIM 1 +#define CONFIG_IO_11_WK_PU_EN 0 +#define CONFIG_IO_12_INPUT_BUF_EN 1 +#define CONFIG_IO_12_PD_DRV_STRG 10 +#define CONFIG_IO_12_PD_SLW_RT 1 +#define CONFIG_IO_12_PU_DRV_STRG 8 +#define CONFIG_IO_12_PU_SLW_RT 1 +#define CONFIG_IO_12_RTRIM 1 +#define CONFIG_IO_12_WK_PU_EN 0 +#define CONFIG_IO_13_INPUT_BUF_EN 1 +#define CONFIG_IO_13_PD_DRV_STRG 10 +#define CONFIG_IO_13_PD_SLW_RT 1 +#define CONFIG_IO_13_PU_DRV_STRG 8 +#define CONFIG_IO_13_PU_SLW_RT 1 +#define CONFIG_IO_13_RTRIM 1 +#define CONFIG_IO_13_WK_PU_EN 0 +#define CONFIG_IO_14_INPUT_BUF_EN 1 +#define CONFIG_IO_14_PD_DRV_STRG 10 +#define CONFIG_IO_14_PD_SLW_RT 1 +#define CONFIG_IO_14_PU_DRV_STRG 8 +#define CONFIG_IO_14_PU_SLW_RT 1 +#define CONFIG_IO_14_RTRIM 1 +#define CONFIG_IO_14_WK_PU_EN 0 +#define CONFIG_IO_15_INPUT_BUF_EN 1 +#define CONFIG_IO_15_PD_DRV_STRG 10 +#define CONFIG_IO_15_PD_SLW_RT 1 +#define CONFIG_IO_15_PU_DRV_STRG 8 +#define CONFIG_IO_15_PU_SLW_RT 1 +#define CONFIG_IO_15_RTRIM 1 +#define CONFIG_IO_15_WK_PU_EN 0 +#define CONFIG_IO_16_INPUT_BUF_EN 0 +#define CONFIG_IO_16_PD_DRV_STRG 10 +#define CONFIG_IO_16_PD_SLW_RT 1 +#define CONFIG_IO_16_PU_DRV_STRG 8 +#define CONFIG_IO_16_PU_SLW_RT 1 +#define CONFIG_IO_16_RTRIM 1 +#define CONFIG_IO_16_WK_PU_EN 0 +#define CONFIG_IO_17_INPUT_BUF_EN 1 +#define CONFIG_IO_17_PD_DRV_STRG 10 +#define CONFIG_IO_17_PD_SLW_RT 1 +#define CONFIG_IO_17_PU_DRV_STRG 8 +#define CONFIG_IO_17_PU_SLW_RT 1 +#define CONFIG_IO_17_RTRIM 1 +#define CONFIG_IO_17_WK_PU_EN 0 +#define CONFIG_IO_1_INPUT_BUF_EN 1 +#define CONFIG_IO_1_PD_DRV_STRG 10 +#define CONFIG_IO_1_PD_SLW_RT 0 +#define CONFIG_IO_1_PU_DRV_STRG 8 +#define CONFIG_IO_1_PU_SLW_RT 0 +#define CONFIG_IO_1_RTRIM 1 +#define CONFIG_IO_1_WK_PU_EN 1 +#define CONFIG_IO_2_INPUT_BUF_EN 1 +#define CONFIG_IO_2_PD_DRV_STRG 10 +#define CONFIG_IO_2_PD_SLW_RT 0 +#define CONFIG_IO_2_PU_DRV_STRG 8 +#define CONFIG_IO_2_PU_SLW_RT 0 +#define CONFIG_IO_2_RTRIM 1 +#define CONFIG_IO_2_WK_PU_EN 1 +#define CONFIG_IO_3_INPUT_BUF_EN 1 +#define CONFIG_IO_3_PD_DRV_STRG 10 +#define CONFIG_IO_3_PD_SLW_RT 0 +#define CONFIG_IO_3_PU_DRV_STRG 8 +#define CONFIG_IO_3_PU_SLW_RT 0 +#define CONFIG_IO_3_RTRIM 1 +#define CONFIG_IO_3_WK_PU_EN 1 +#define CONFIG_IO_4_INPUT_BUF_EN 1 +#define CONFIG_IO_4_PD_DRV_STRG 10 +#define CONFIG_IO_4_PD_SLW_RT 1 +#define CONFIG_IO_4_PU_DRV_STRG 8 +#define CONFIG_IO_4_PU_SLW_RT 1 +#define CONFIG_IO_4_RTRIM 1 +#define CONFIG_IO_4_WK_PU_EN 0 +#define CONFIG_IO_5_INPUT_BUF_EN 1 +#define CONFIG_IO_5_PD_DRV_STRG 10 +#define CONFIG_IO_5_PD_SLW_RT 1 +#define CONFIG_IO_5_PU_DRV_STRG 8 +#define CONFIG_IO_5_PU_SLW_RT 1 +#define CONFIG_IO_5_RTRIM 1 +#define CONFIG_IO_5_WK_PU_EN 0 +#define CONFIG_IO_6_INPUT_BUF_EN 0 +#define CONFIG_IO_6_PD_DRV_STRG 10 +#define CONFIG_IO_6_PD_SLW_RT 1 +#define CONFIG_IO_6_PU_DRV_STRG 8 +#define CONFIG_IO_6_PU_SLW_RT 1 +#define CONFIG_IO_6_RTRIM 1 +#define CONFIG_IO_6_WK_PU_EN 0 +#define CONFIG_IO_7_INPUT_BUF_EN 1 +#define CONFIG_IO_7_PD_DRV_STRG 10 +#define CONFIG_IO_7_PD_SLW_RT 1 +#define CONFIG_IO_7_PU_DRV_STRG 8 +#define CONFIG_IO_7_PU_SLW_RT 1 +#define CONFIG_IO_7_RTRIM 1 +#define CONFIG_IO_7_WK_PU_EN 0 +#define CONFIG_IO_8_INPUT_BUF_EN 1 +#define CONFIG_IO_8_PD_DRV_STRG 10 +#define CONFIG_IO_8_PD_SLW_RT 1 +#define CONFIG_IO_8_PU_DRV_STRG 8 +#define CONFIG_IO_8_PU_SLW_RT 1 +#define CONFIG_IO_8_RTRIM 1 +#define CONFIG_IO_8_WK_PU_EN 0 +#define CONFIG_IO_9_INPUT_BUF_EN 1 +#define CONFIG_IO_9_PD_DRV_STRG 10 +#define CONFIG_IO_9_PD_SLW_RT 1 +#define CONFIG_IO_9_PU_DRV_STRG 8 +#define CONFIG_IO_9_PU_SLW_RT 1 +#define CONFIG_IO_9_RTRIM 1 +#define CONFIG_IO_9_WK_PU_EN 0 +#define CONFIG_IO_BANK_VOLTAGE_SEL_CLKRST_IO 1 +#define CONFIG_IO_BANK_VOLTAGE_SEL_PERI_IO 1 +#define PINMUX_DEDICATED_IO_10_SEL 15 +#define PINMUX_DEDICATED_IO_11_SEL 15 +#define PINMUX_DEDICATED_IO_12_SEL 15 +#define PINMUX_DEDICATED_IO_13_SEL 15 +#define PINMUX_DEDICATED_IO_14_SEL 15 +#define PINMUX_DEDICATED_IO_15_SEL 15 +#define PINMUX_DEDICATED_IO_16_SEL 13 +#define PINMUX_DEDICATED_IO_17_SEL 13 +#define PINMUX_DEDICATED_IO_4_SEL 8 +#define PINMUX_DEDICATED_IO_5_SEL 8 +#define PINMUX_DEDICATED_IO_6_SEL 8 +#define PINMUX_DEDICATED_IO_7_SEL 8 +#define PINMUX_DEDICATED_IO_8_SEL 8 +#define PINMUX_DEDICATED_IO_9_SEL 8 +#define PINMUX_I2C0_USEFPGA_SEL 0 +#define PINMUX_I2C1_USEFPGA_SEL 0 +#define PINMUX_I2CEMAC0_USEFPGA_SEL 0 +#define PINMUX_I2CEMAC1_USEFPGA_SEL 0 +#define PINMUX_I2CEMAC2_USEFPGA_SEL 0 +#define PINMUX_NAND_USEFPGA_SEL 0 +#define PINMUX_PLL_CLOCK_OUT_USEFPGA_SEL 0 +#define PINMUX_QSPI_USEFPGA_SEL 0 +#define PINMUX_RGMII0_USEFPGA_SEL 0 +#define PINMUX_RGMII1_USEFPGA_SEL 0 +#define PINMUX_RGMII2_USEFPGA_SEL 0 +#define PINMUX_SDMMC_USEFPGA_SEL 0 +#define PINMUX_SHARED_IO_Q1_10_SEL 8 +#define PINMUX_SHARED_IO_Q1_11_SEL 8 +#define PINMUX_SHARED_IO_Q1_12_SEL 8 +#define PINMUX_SHARED_IO_Q1_1_SEL 8 +#define PINMUX_SHARED_IO_Q1_2_SEL 8 +#define PINMUX_SHARED_IO_Q1_3_SEL 8 +#define PINMUX_SHARED_IO_Q1_4_SEL 8 +#define PINMUX_SHARED_IO_Q1_5_SEL 8 +#define PINMUX_SHARED_IO_Q1_6_SEL 8 +#define PINMUX_SHARED_IO_Q1_7_SEL 8 +#define PINMUX_SHARED_IO_Q1_8_SEL 8 +#define PINMUX_SHARED_IO_Q1_9_SEL 8 +#define PINMUX_SHARED_IO_Q2_10_SEL 4 +#define PINMUX_SHARED_IO_Q2_11_SEL 4 +#define PINMUX_SHARED_IO_Q2_12_SEL 4 +#define PINMUX_SHARED_IO_Q2_1_SEL 4 +#define PINMUX_SHARED_IO_Q2_2_SEL 4 +#define PINMUX_SHARED_IO_Q2_3_SEL 4 +#define PINMUX_SHARED_IO_Q2_4_SEL 4 +#define PINMUX_SHARED_IO_Q2_5_SEL 4 +#define PINMUX_SHARED_IO_Q2_6_SEL 4 +#define PINMUX_SHARED_IO_Q2_7_SEL 4 +#define PINMUX_SHARED_IO_Q2_8_SEL 4 +#define PINMUX_SHARED_IO_Q2_9_SEL 4 +#define PINMUX_SHARED_IO_Q3_10_SEL 15 +#define PINMUX_SHARED_IO_Q3_11_SEL 1 +#define PINMUX_SHARED_IO_Q3_12_SEL 1 +#define PINMUX_SHARED_IO_Q3_1_SEL 15 +#define PINMUX_SHARED_IO_Q3_2_SEL 15 +#define PINMUX_SHARED_IO_Q3_3_SEL 15 +#define PINMUX_SHARED_IO_Q3_4_SEL 15 +#define PINMUX_SHARED_IO_Q3_5_SEL 15 +#define PINMUX_SHARED_IO_Q3_6_SEL 15 +#define PINMUX_SHARED_IO_Q3_7_SEL 0 +#define PINMUX_SHARED_IO_Q3_8_SEL 0 +#define PINMUX_SHARED_IO_Q3_9_SEL 15 +#define PINMUX_SHARED_IO_Q4_10_SEL 15 +#define PINMUX_SHARED_IO_Q4_11_SEL 15 +#define PINMUX_SHARED_IO_Q4_12_SEL 15 +#define PINMUX_SHARED_IO_Q4_1_SEL 10 +#define PINMUX_SHARED_IO_Q4_2_SEL 10 +#define PINMUX_SHARED_IO_Q4_3_SEL 10 +#define PINMUX_SHARED_IO_Q4_4_SEL 10 +#define PINMUX_SHARED_IO_Q4_5_SEL 10 +#define PINMUX_SHARED_IO_Q4_6_SEL 10 +#define PINMUX_SHARED_IO_Q4_7_SEL 15 +#define PINMUX_SHARED_IO_Q4_8_SEL 15 +#define PINMUX_SHARED_IO_Q4_9_SEL 15 +#define PINMUX_SPIM0_USEFPGA_SEL 0 +#define PINMUX_SPIM1_USEFPGA_SEL 0 +#define PINMUX_SPIS0_USEFPGA_SEL 0 +#define PINMUX_SPIS1_USEFPGA_SEL 0 +#define PINMUX_UART0_USEFPGA_SEL 0 +#define PINMUX_UART1_USEFPGA_SEL 0 +#define PINMUX_USB0_USEFPGA_SEL 0 +#define PINMUX_USB1_USEFPGA_SEL 0 + +/* Bridge Configuration */ +#define F2H_AXI_SLAVE 0 +#define F2SDRAM0_AXI_SLAVE 0 +#define F2SDRAM1_AXI_SLAVE 0 +#define F2SDRAM2_AXI_SLAVE 0 +#define H2F_AXI_MASTER 1 +#define LWH2F_AXI_MASTER 1 + +/* Voltage Select for Config IO */ +#define CONFIG_IO_BANK_VSEL \ + (((CONFIG_IO_BANK_VOLTAGE_SEL_CLKRST_IO & 0x3) << 8) | \ + (CONFIG_IO_BANK_VOLTAGE_SEL_PERI_IO & 0x3)) + +/* Macro for Config IO bit mapping */ +#define CONFIG_IO_MACRO(NAME) (((NAME ## _RTRIM & 0x7) << 19) | \ + ((NAME ## _INPUT_BUF_EN & 0x3) << 17) | \ + ((NAME ## _WK_PU_EN & 0x1) << 16) | \ + ((NAME ## _PU_SLW_RT & 0x1) << 13) | \ + ((NAME ## _PU_DRV_STRG & 0x1f) << 8) | \ + ((NAME ## _PD_SLW_RT & 0x1) << 5) | \ + (NAME ## _PD_DRV_STRG & 0x1f)) + +#endif /* __SOCFPGA_ARRIA10_CONFIG_H__ */ diff --git a/board/enclustra/mercury_aa1/Kconfig b/board/enclustra/mercury_aa1/Kconfig index 40c7cb2687..a5f3c2a051 100644 --- a/board/enclustra/mercury_aa1/Kconfig +++ b/board/enclustra/mercury_aa1/Kconfig @@ -12,4 +12,41 @@ config SYS_VENDOR config SYS_CONFIG_NAME default "socfpga_mercury_aa1" +choice + prompt "Mercury+ AA1 base-board" + default ENCLUSTRA_PE1 + help + Select the base-board for Mercury+ AA1. + +config ENCLUSTRA_PE1 + bool "Mercury+ PE1" + +config ENCLUSTRA_PE3 + bool "Mercury+ PE3" + +config ENCLUSTRA_ST1 + bool "Mercury+ ST1" + +config ENCLUSTRA_CUSTOM_BASE + bool "Customized base-board" + +endchoice + +choice + prompt "Mercury+ AA1 boot-mode" + default ENCLUSTRA_SDMMC + help + Select the boot-mode for the Mercury+ AA1 setup. + +config ENCLUSTRA_SDMMC + bool "SD card" + +config ENCLUSTRA_EMMC + bool "eMMC" + +config ENCLUSTRA_QSPI + bool "QSPI flash" + +endchoice + endif diff --git a/board/enclustra/mercury_aa1/MAINTAINERS b/board/enclustra/mercury_aa1/MAINTAINERS index 13baf949ab..f765530770 100644 --- a/board/enclustra/mercury_aa1/MAINTAINERS +++ b/board/enclustra/mercury_aa1/MAINTAINERS @@ -1,6 +1,8 @@ Enclustra Mercury+ AA1 M: Lothar Rubusch S: Maintained +N: arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts +N: arch/arm/dts/socfpga_arria10_mercury_aa1_handoff.h N: board/enclustra/mercury_aa1/ N: board/enclustra/common/ N: configs/socfpga_enclustra_mercury_aa1_defconfig From patchwork Tue Nov 19 22:46:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013408 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=ggTfNvA2; dkim-atps=neutral Authentication-Results: legolas.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=patchwork.ozlabs.org) 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 ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMgZ2BrSz1xt3 for ; Wed, 20 Nov 2024 11:29:29 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8AFF889634; Wed, 20 Nov 2024 01:28:01 +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="ggTfNvA2"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 659ED895D2; Tue, 19 Nov 2024 23:46:55 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) (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 1CB4588DB2 for ; Tue, 19 Nov 2024 23:46:53 +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=l.rubusch@gmail.com Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-43159469053so3644895e9.2 for ; Tue, 19 Nov 2024 14:46:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056412; x=1732661212; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GEFYfRYfTxAJOM+Xjr0Dp4zS0D1pIYZO5UEvV+EOBO0=; b=ggTfNvA2ed3UlGBEy8WV7CC6maKC+0DHnz7t8fj8HuyKtNGdvOMC4UI4IB2E66289d lnY+Tr5a5WgQxdFfKQbKk7Q213gS9tB3+cUEH2Mt8vjsv6hH/PmAVnY6OtRDnhOlhAcV C+HWOpTACiCZYhonG2UJ9Sy9olaA3y+JoCFWRHPDbiX4pmplQsAPK2A1S1GP+cKA3YXC D+nUUTvNmcp2p15lHWG8BNKtYT9Nj6hMA0ERKHMvQcZ0s6n8Jado748E104dDGllVSzV hPjkZvZyqi6APVG1B2+vL738jVpznPYQGci4pMoVjSECpR2XuNOpDlRwSmKoJQfxX4uV gnTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056412; x=1732661212; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GEFYfRYfTxAJOM+Xjr0Dp4zS0D1pIYZO5UEvV+EOBO0=; b=ImZsztJ7w1vd9jh8v1QWR9Sz/XcYNXFdUbWU26+Uaviin9YhTne8xBpRcmLcNqfCBH H8DWBfhckn2GYUy8VytmciLf9DRIqMPt7vDcGqZGDHcIiX7ux8akFHx8atbWIXp62e0h qzgJR5KjMoKdTOYEylXGTqZDgitV4bjNtTpWlijmJrIhz18FnAA42vIvCh+bzN+prt7w Yx7grLsYvAkAT/QpYRBOU5zPtU62uSXHPUNKYpnpMtkgBf7S9EA3nwJ4I90kUaTVqBza qqJIUkULBF5MQ2U4roq6HHz1KoKZfRE64l/qMoeFKaq8NRzNNer43jnflI2a4rc4KOPu b9sw== X-Gm-Message-State: AOJu0YzyGV3icIgTQlZAqxx6olj81xcrpJkKPwbU+9XbxJNCM7L/LfWU x3tKFQIOA8I7jWaVO+cTRoaC0VHjqcOY1LsjpWxEAwhplD0hafwHH7zM4vrh X-Gm-Gg: ASbGncssvjshjma759zitkxiucoYDCH8jD+9wWi71u4cmWzW2RIcci10c5NagSh3x13 LhqTcK1CNLTaKNXrxNudqefBJuHwy/6P/Zgw1CJsMzDaKTcJjIaTm+Y3jaoJAFD5jWDgrdBGwdd mK+hEpBiR7nb/y9JD5Kh+CeDwhXMeD1pyZC11VFMBcYhussdqKs4UxmQGlCJcGWR0gXGZQNcyiQ OZGJFfOyLB8NxX3YqIz9kh4SsDw8lOEABS3/CWi2sZC6B1LmOyiIqRqiCCbMOeDazibjAZiaOXB 9fY2Ju2sdzOqdDKrkKk1gE3svXq2 X-Google-Smtp-Source: AGHT+IExgpauUzLpdLYQYhp4n+cW/3tZpzMnn6WOkBY/tRr11TDRnLOSrQOsL7O0B6cvXQpy7qCqPA== X-Received: by 2002:a05:600c:4f4f:b0:42c:bb35:b6d0 with SMTP id 5b1f17b1804b1-433489861cbmr2275905e9.1.1732056412414; Tue, 19 Nov 2024 14:46:52 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:51 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 04/10] ARM: socfpga: add Enclustra storage switch Date: Tue, 19 Nov 2024 22:46:37 +0000 Message-Id: <20241119224643.27692-5-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Some of Enclustra's Intel SoMs need gpio muxing for setting up the boot media. This can be done by switching dip switches and also in software. The image in this case can be loaded from SD card, and flashed to the eMMC or QSPI. After, the dip switches can set the boot select accordingly. With altera_set_storage MMC|EMMC|QSPI from off the u-boot shell, the media is usually switched. Signed-off-by: Lothar Rubusch --- .../socfpga_arria10_enclustra_mercury_aa1.dts | 17 ++ board/enclustra/mercury_aa1/Makefile | 8 + .../mercury_aa1/aa1_set_storage_cmd.c | 190 ++++++++++++++++++ doc/board/enclustra/mercury-aa1.rst | 25 +++ 4 files changed, 240 insertions(+) create mode 100644 board/enclustra/mercury_aa1/Makefile create mode 100644 board/enclustra/mercury_aa1/aa1_set_storage_cmd.c diff --git a/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts index e8cc51a7b8..c038b2352e 100644 --- a/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts +++ b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1.dts @@ -5,6 +5,8 @@ /dts-v1/; +#include + /* The arria10 family */ #include "socfpga/socfpga_arria10_mercury_aa1.dtsi" @@ -17,6 +19,13 @@ i2c1 = &i2c0; spi0 = &qspi; }; + + altera_set_storage { + compatible = "enclustra,altera_set_storage"; + status = "okay"; + oe-gpios = <&portb 5 GPIO_ACTIVE_HIGH>; + sel-gpios = <&portc 6 GPIO_ACTIVE_HIGH>; + }; }; &qspi { @@ -35,6 +44,14 @@ }; }; +&gpio1 { + status = "okay"; +}; + +&gpio2 { + status = "okay"; +}; + /* Carrier board support */ #if IS_ENABLED(CONFIG_ENCLUSTRA_PE1) # include "socfpga/socfpga_enclustra_mercury_pe1.dtsi" diff --git a/board/enclustra/mercury_aa1/Makefile b/board/enclustra/mercury_aa1/Makefile new file mode 100644 index 0000000000..53c84d8156 --- /dev/null +++ b/board/enclustra/mercury_aa1/Makefile @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright (c) 2024 Enclustra GmbH + +ifeq ($(CONFIG_SPL_BUILD),) + +obj-y += aa1_set_storage_cmd.o + +endif diff --git a/board/enclustra/mercury_aa1/aa1_set_storage_cmd.c b/board/enclustra/mercury_aa1/aa1_set_storage_cmd.c new file mode 100644 index 0000000000..31c5ddb23b --- /dev/null +++ b/board/enclustra/mercury_aa1/aa1_set_storage_cmd.c @@ -0,0 +1,190 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2024 Enclustra GmbH + * + */ + +#include +#include +#include +#include +#include +#include +#include + +/* Pin muxing */ +#define ALTERA_NONE 0 +#define ALTERA_MMC 1 +#define ALTERA_QSPI 2 +#define ALTERA_EMMC 3 +#define MMC_CLK_DIV 0x9 +#define QSPI_CLK_DIV 0x384 +#define ALTERA_PINMUX_OFFS 0xffd07200 +#define ALTERA_CLKMGR_MAINPLL_CNTR6CLK_BASE 0xFFD04078 + +static int altera_current_storage = ALTERA_NONE; + +static const struct udevice_id altera_set_storage_match[] = { + { .compatible = "enclustra,altera_set_storage" }, + { } +}; + +U_BOOT_DRIVER(altera_set_storage) = { + .name = "altera_set_storage", + .id = UCLASS_MISC, + .of_match = altera_set_storage_match, +}; + +static void enclustra_mercury_aa1_write(const u32 *pinmux_arr, int len) +{ + u32 i, offset, value; + + for (i = 0; i < len; i += 2) { + offset = pinmux_arr[i]; + value = pinmux_arr[i + 1]; + writel(value, ALTERA_PINMUX_OFFS + offset); + } +} + +static void enclustra_mercury_aa1_set_mux_mmc(void) +{ + static const u32 pinmux_arr[] = {0x0c, 0x8, // IO4 connected to SDMMC + 0x10, 0x8, // IO5 + 0x14, 0x8, // IO6 + 0x18, 0x8, // IO7 + 0x1c, 0x8, // IO8 + 0x20, 0x8, // IO9 + 0x24, 0xf, // IO10 connected to GPIO + 0x28, 0xf, // IO11 + 0x2c, 0xf, // IO12 + 0x30, 0xf, // IO13 + 0x34, 0xf, // IO14 + 0x38, 0xf}; // IO15 + enclustra_mercury_aa1_write(pinmux_arr, ARRAY_SIZE(pinmux_arr)); +} + +static void enclustra_mercury_aa1_set_mux_emmc(void) +{ + static const u32 pinmux_arr[] = {0x0c, 0x8, // IO4 + 0x10, 0x8, // IO5 + 0x14, 0x8, // IO6 + 0x18, 0x8, // IO7 + 0x1c, 0x8, // IO8 + 0x20, 0x8, // IO9 + 0x24, 0xf, // IO10 + 0x28, 0xf, // IO11 + 0x2c, 0x8, // IO12 + 0x30, 0x8, // IO13 + 0x34, 0x8, // IO14 + 0x38, 0x8}; // IO15 + enclustra_mercury_aa1_write(pinmux_arr, ARRAY_SIZE(pinmux_arr)); +} + +static void enclustra_mercury_aa1_set_mux_qspi(void) +{ + static const u32 pinmux_arr[] = {0x0c, 0x4, // IO4 connected to QSPI + 0x10, 0x4, // IO5 + 0x14, 0x4, // IO6 + 0x18, 0x4, // IO7 + 0x1c, 0x4, // IO8 + 0x20, 0x4, // IO9 + 0x24, 0xf, // IO10 + 0x28, 0xf, // IO11 + 0x2c, 0xf, // IO12 + 0x30, 0xf, // IO13 + 0x34, 0xf, // IO14 + 0x38, 0xf}; // IO15 + enclustra_mercury_aa1_write(pinmux_arr, ARRAY_SIZE(pinmux_arr)); +} + +static int altera_set_storage(struct udevice *dev, int store) +{ + struct gpio_desc gpio_flash_sel; + struct gpio_desc gpio_flash_oe; + int ret; + + if (store == altera_current_storage) + return CMD_RET_FAILURE; + + /* oe: portb 5 */ + ret = gpio_request_by_name(dev, "oe-gpios", 0, + &gpio_flash_oe, GPIOD_IS_OUT); + + if (ret) { + printf("ERROR: GPIO oe not found\n"); + return log_msg_ret("gpio", ret); + } + + /* sel: portc 6 */ + ret = gpio_request_by_name(dev, "sel-gpios", 0, + &gpio_flash_sel, GPIOD_IS_OUT); + if (ret) { + printf("ERROR: GPIO sel not found\n"); + ret = CMD_RET_FAILURE; + goto err; + } + + switch (store) { + case ALTERA_MMC: + enclustra_mercury_aa1_set_mux_mmc(); + dm_gpio_set_value(&gpio_flash_sel, 0); + dm_gpio_set_value(&gpio_flash_oe, 0); + altera_current_storage = ALTERA_MMC; + writel(MMC_CLK_DIV, ALTERA_CLKMGR_MAINPLL_CNTR6CLK_BASE); + break; + case ALTERA_EMMC: + enclustra_mercury_aa1_set_mux_emmc(); + dm_gpio_set_value(&gpio_flash_sel, 1); + dm_gpio_set_value(&gpio_flash_oe, 1); + altera_current_storage = ALTERA_EMMC; + writel(MMC_CLK_DIV, ALTERA_CLKMGR_MAINPLL_CNTR6CLK_BASE); + break; + case ALTERA_QSPI: + enclustra_mercury_aa1_set_mux_qspi(); + dm_gpio_set_value(&gpio_flash_sel, 1); + dm_gpio_set_value(&gpio_flash_oe, 0); + altera_current_storage = ALTERA_QSPI; + writel(QSPI_CLK_DIV, ALTERA_CLKMGR_MAINPLL_CNTR6CLK_BASE); + break; + default: + altera_current_storage = ALTERA_NONE; + break; + } + + ret = CMD_RET_SUCCESS; + dm_gpio_free(dev, &gpio_flash_sel); +err: + dm_gpio_free(dev, &gpio_flash_oe); + + return ret; +} + +static int altera_set_storage_cmd(struct cmd_tbl *cmdtp, int flag, + int argc, char * const argv[]) +{ + struct udevice *dev; + int ret; + + ret = uclass_get_device_by_driver(UCLASS_MISC, + DM_DRIVER_GET(altera_set_storage), &dev); + if (ret) + return ret; + + if (argc != 2) + return CMD_RET_USAGE; + + if (!strcasecmp(argv[1], "mmc")) + return altera_set_storage(dev, ALTERA_MMC); + else if (!strcasecmp(argv[1], "qspi")) + return altera_set_storage(dev, ALTERA_QSPI); + else if (!strcasecmp(argv[1], "emmc")) + return altera_set_storage(dev, ALTERA_EMMC); + else + return CMD_RET_USAGE; + + return CMD_RET_FAILURE; +} + +U_BOOT_CMD(altera_set_storage, 2, 0, altera_set_storage_cmd, + "Set non volatile memory access", + " - Set access for the selected memory device"); diff --git a/doc/board/enclustra/mercury-aa1.rst b/doc/board/enclustra/mercury-aa1.rst index dec7cc3bdd..cba36aae2e 100644 --- a/doc/board/enclustra/mercury-aa1.rst +++ b/doc/board/enclustra/mercury-aa1.rst @@ -151,6 +151,31 @@ Alternative boot media are possible as officially documented by Enclustra. Note: eMMC and QSPI can be flashed from off the u-boot shell. Usually after flashing, the correct boot mode needs to be set by a BSEL switch. +In the u-boot shell use the following command to switch between the boot media. +This can be used to flash e.g. eMMC or QSPI with an image file stored on the SD +card. Approaches are described in detail in the official Enclustra +documentation according to their releases mentioned as links. + + .. code-block:: bash + + Hit any key to stop autoboot: 0 + => altera_set_storage + altera_set_storage - Set non volatile memory access + Usage: + altera_set_storage - Set access for the selected memory device + => altera_set_storage QSPI + => sf probe + SF: Detected s25fl512s with page size 256 Bytes, erase size 256 KiB, total 64 MiB + => altera_set_storage MMC + => mmc rescan + => mmc list + mmc@ff808000: 0 (SD) + => altera_set_storage EMMC + => mmc rescan + => mmc list + mmc@ff808000: 0 (eMMC) + => + Before turning on the setup, make sure to have the correct voltage configured at the carrier board, using the jumpers on the voltage pin header. Also make sure to have switched to the correct boot media using typically some dip From patchwork Tue Nov 19 22:46:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013409 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=DDwcf84L; dkim-atps=neutral Authentication-Results: legolas.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=patchwork.ozlabs.org) 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 ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMgh4bgPz1xt3 for ; Wed, 20 Nov 2024 11:29:36 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 44F3B8963A; Wed, 20 Nov 2024 01:28:02 +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="DDwcf84L"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 4E46E895D8; Tue, 19 Nov 2024 23:46:57 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) (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 51CD6895D0 for ; Tue, 19 Nov 2024 23:46:55 +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=l.rubusch@gmail.com Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-43159555f29so5964695e9.3 for ; Tue, 19 Nov 2024 14:46:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056415; x=1732661215; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3VeLkBhHNTPKgBKHtvcBkoTCMemneo1KRpoomrwYlaY=; b=DDwcf84LYpsDdKWVn+K3lJLjcoTVV0wgL273nhlgSaxK58ksxFAuDL4pp1A5WQ9i6Q 2JOl903xlXoOwV6raN4YN2cAf0OJV9quaxxwB6Ftih5VhNb6h2rNZECd55kxXi5/yrNk j5DrgKoPrTRFqfUggXrB23bEsauJKPFLN3hT011TCXvAYMPzAYkh36rsdeeDYQKTSWGy 9onm9kwrdPNBSEqmTJD5fbO113s6n4uD9YBOj0f+xJ86USTYtKuERGLetCOrVUL7A9NZ YUUV67kCxen0GYH0Fh24LX7GVYfNEG2MULYY1Ds3FUB5yWTdp/b0ijSM/zV1D4t2I3Pw lMwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056415; x=1732661215; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3VeLkBhHNTPKgBKHtvcBkoTCMemneo1KRpoomrwYlaY=; b=HeAXVG316U0084l3ORb56+gCwGQRoaITRTGuG5U6HiVEz9iqVTDmgKY9ZMZKWapbg8 Ot/XuWMqo2QXP2Nm46lOx8cb0LDSzhCjIYiexLm8P/QX1hV0l9+MPHJ3+5OnyJ7dhB45 FSWCgj+p+wqNM/GetmWm3o/m3SG4iDavZWveLlWim0Db+e0e3Kd0FBptGH/cGcb4gJ4v K5j7LIGnOhlnFufQiqjlYMt9YfuKuEmjXjMVHw+vw0SqkS1sqYpEjQ5/6v/yJ1MSsMV2 tZ1Euwk8bOPN5WIYRA1FujMU80VwzSIBjarX/UgVKZpYzoTmXgLXgvoEJTBwk2aT9RC3 2Sgg== X-Gm-Message-State: AOJu0YwrKgmzGIuPsQeneBrpeqqIHr7GNBZDasCbdt+ZcSu+bsfzTudQ oty/DMAACeelpXSvawCIKYGBACJMcKeEZiKAZBf35Nhvq58NWfuSucpVJZCO X-Gm-Gg: ASbGncsc8nLT1KEez2X6JAcZjH6OFAfD8EMojcrjxKKxPM5uzf9i0f9fdr5r3brHsTD W6s7G7Vfn8rypE1X6scmDO+5jrDdgfyR68Ln11hrQC/e44T9JkkW6m3hN3lVi30ZAuyVC8ZZdYz iN/lx/src+pf64kK0FHEPwFihAC3bdQCXMoWizSrFJw7NunS00CWVsBq/jvoOIO9gLUoPe71gns 4jQgMPlkDzAyKP5nNScHqZrjQRoSSmUsHnPxzQYcyt1MJv1+/XrBRDVURvcDxZcIHnb+XRJhoht 2RZfkfM+CpGUrBNUYi+E38Eu4Eu2 X-Google-Smtp-Source: AGHT+IG/2bGj5YoltLW7qTJV6suLg1u9fnYFlIce0y9SzdgUyBmk/z80PuQYwW4c9c7wLTU4G468sw== X-Received: by 2002:a5d:6c63:0:b0:37d:4705:ff71 with SMTP id ffacd0b85a97d-38254b165eemr153370f8f.10.1732056414353; Tue, 19 Nov 2024 14:46:54 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:53 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 05/10] ARM: socfpga: add Mercury+ AA1 boot scripts Date: Tue, 19 Nov 2024 22:46:38 +0000 Message-Id: <20241119224643.27692-6-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Add bootscripts to boot Enclustra SoMs from MicroSD card or QSPI flash. MicroSD card as bood device here covers the cases of sdmmc or emmc as such boot media. Signed-off-by: Lothar Rubusch --- board/enclustra/bootscripts/qspi-aa1.cmd | 12 ++++++++++++ board/enclustra/bootscripts/sd-aa1.cmd | 9 +++++++++ 2 files changed, 21 insertions(+) create mode 100644 board/enclustra/bootscripts/qspi-aa1.cmd create mode 100644 board/enclustra/bootscripts/sd-aa1.cmd diff --git a/board/enclustra/bootscripts/qspi-aa1.cmd b/board/enclustra/bootscripts/qspi-aa1.cmd new file mode 100644 index 0000000000..9633754491 --- /dev/null +++ b/board/enclustra/bootscripts/qspi-aa1.cmd @@ -0,0 +1,12 @@ +# This is an example input file for boot.scr generation. +# Generate boot.scr +# ./tools/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -d board/enclustra/bootscripts/qspi-aa1.cmd boot.scr +# +# Note: The needed variables need to be set in the environment. +bridge enable +sf probe +sf read $kernel_addr_r $qspi_offset_addr_kernel $kernel_size +sf read $fdt_addr_r $qspi_offset_addr_devicetree $fdt_size +sf read $rootfs_addr_r $qspi_offset_addr_rootfs $rootfs_size +run fdtload_qspi +bootm $kernel_addr_r $rootfs_addr_r $fdt_addr_r diff --git a/board/enclustra/bootscripts/sd-aa1.cmd b/board/enclustra/bootscripts/sd-aa1.cmd new file mode 100644 index 0000000000..604ae0760a --- /dev/null +++ b/board/enclustra/bootscripts/sd-aa1.cmd @@ -0,0 +1,9 @@ +# This is an example input file for boot.scr generation. +# Generate boot.scr +# ./tools/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "U-boot mmc start script" -d board/enclustra/bootscripts/sd-aa1.cmd boot.scr +# +# Note: The needed variables need to be set in the environment. +bridge enable +load mmc $devnum:$distro_bootpart $kernel_addr_r Image +load mmc $devnum:$distro_bootpart $fdt_addr_r $fdtfile +booti $kernel_addr_r - $fdt_addr_r From patchwork Tue Nov 19 22:46:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013412 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=aSdjE9d8; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMh92Qlbz1xt3 for ; Wed, 20 Nov 2024 11:30:01 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4998089649; Wed, 20 Nov 2024 01:28:04 +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="aSdjE9d8"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2DD3488DB2; Tue, 19 Nov 2024 23:47:03 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) (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 298E588D7E for ; Tue, 19 Nov 2024 23:46:56 +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=l.rubusch@gmail.com Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-3824a646667so297519f8f.1 for ; Tue, 19 Nov 2024 14:46:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056415; x=1732661215; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9KeAduFPWr2ikKTjftpTJV5pNhlNpnBW6QC7+sd5A7k=; b=aSdjE9d8K6EhB6IrMGQWt1DjJpoXJ2G24TR2pNeswbSF9eL2QSGc6EM13oZJRNxAGF qfsWPix+EaTJyYpLCN6n8dp56y9K0ll+M7Kc9BeaNLIuG0iZ8xd5xVRwm/66GBYvWIrp v8/qdTAoB1zvhA6nS/3aoMlQTMmR1yll0Idv6sDt26PigCVLoTqD3LGUUPeHalyTs3ev BrVh6Lvwbl7lV5Wohkf4eX2o3UojNIPzWBsYo02EkAAuNfQScTLjJFnOdkv7NupWGGKa tdcdCdWKq0M7YwUo8/24Js90+2HPrtiB0CZVgkPEpDVaJHv4aiQHPZAuLTOjeA/DKkR9 zbAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056415; x=1732661215; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9KeAduFPWr2ikKTjftpTJV5pNhlNpnBW6QC7+sd5A7k=; b=ANMx36RdTx9wbZ7YwnjrB2jB5lZQoobcOHRwAaKtOYcxNUtArtrFOhZYaSOvWPnI0H 9kmydnr+vCISG2X6qQtAXfSjgXqE4GoRAxNxB3eN7GB0CSTWu+O3xnc2ZkR+yfwoDCqk TMV+2Don8+sCt8qPjWV6F1ViC/Hz5tHoUriQoXPN+QpUZwY7B1tu+R5J5boqdkmbaPBq Q99jFcFIRck3FMSB6VJI3m3+Jv5GbjvzcbHsMPbSMkB9N25KB2LrVQl5FV3c1Aeehgdi vT+j1UOEMkmUpF8/Ov5VT2gV3MXlXKI/BijYEP8veoafqp7nV5BilAKgn333bo5pWm1u bO7Q== X-Gm-Message-State: AOJu0Ywufv3Xrb0jAZQM3P6XViVFAZbZormPpH4q6JnEeEaAYjpHp12r iju6pZTg5stIWFscWifKF2F48ehZ8vQ6vQVcDOrO/ldCxIOru3tlfBTzH3GR X-Gm-Gg: ASbGncta4gccFzx4Em9/8VRbwhmCpGVduRZHJoBa4KYu2jMEUY9knnT4k7jwXLQoHUB iDsUqzOOr13qncfp2wCjGk9B97esKSc0zC+JFs/FIta67Mqo+K9+3hns4MmI1l5q37tBGM2xYYe eTi+bOu/C8IngPZ2yBfBpF9cyF2oS3B0S8td+OOwivQUtk/yw608dbAM/fdk6oGDqtC9J1r05kG XcdJ5CInXQkKn50ZwE3VbyfPYIR28TzDvE38KWJtbesAczdSNHfgB+dZIUPoQODCX5cVVKhs5SW gBbhyQS6zWPbmmb2g/AM38cINLwg X-Google-Smtp-Source: AGHT+IFghRo58/rw6+TnXr7fymOaH0vDPHBeXWRAlPX3a3Mi6Q8nsCXt5p9wU57RZQxo+dIh70jdUA== X-Received: by 2002:a05:600c:4f82:b0:431:558c:d9e9 with SMTP id 5b1f17b1804b1-4334f01d8c0mr2182325e9.5.1732056415512; Tue, 19 Nov 2024 14:46:55 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:55 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 06/10] ARM: socfpga: AA1: support MAC from secure eeprom Date: Tue, 19 Nov 2024 22:46:39 +0000 Message-Id: <20241119224643.27692-7-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Several Enclustra devices store MAC address in a secure eeprom device. In most cases this is the atsha204a (alternatively DS28). The atsha204a device is preconfigured accordingly. Reading then is based on u-boot's atsha204a driver. Add such support for Enclustra's AA1 SoMs. Signed-off-by: Lothar Rubusch --- arch/arm/mach-socfpga/Kconfig | 2 +- board/enclustra/common/Kconfig | 25 +++++ board/enclustra/common/Makefile | 3 + board/enclustra/common/enclustra_mac.h | 48 +++++++++ board/enclustra/common/mac_atsha204.c | 102 ++++++++++++++++++ board/enclustra/common/mac_common.c | 52 +++++++++ board/enclustra/common/mac_ds28.c | 93 ++++++++++++++++ board/enclustra/mercury_aa1/Makefile | 2 + .../mercury_aa1/aa1_board_late_init.c | 17 +++ .../socfpga_enclustra_mercury_aa1_defconfig | 1 + 10 files changed, 344 insertions(+), 1 deletion(-) create mode 100644 board/enclustra/common/Kconfig create mode 100644 board/enclustra/common/enclustra_mac.h create mode 100644 board/enclustra/common/mac_atsha204.c create mode 100644 board/enclustra/common/mac_common.c create mode 100644 board/enclustra/common/mac_ds28.c create mode 100644 board/enclustra/mercury_aa1/aa1_board_late_init.c diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig index b7de86e934..60d8c889dc 100644 --- a/arch/arm/mach-socfpga/Kconfig +++ b/arch/arm/mach-socfpga/Kconfig @@ -297,6 +297,6 @@ config SYS_CONFIG_NAME default "socfpga_stratix10_socdk" if TARGET_SOCFPGA_STRATIX10_SOCDK default "socfpga_vining_fpga" if TARGET_SOCFPGA_SOFTING_VINING_FPGA -source "board/enclustra/mercury_aa1/Kconfig" +source "board/enclustra/common/Kconfig" endif diff --git a/board/enclustra/common/Kconfig b/board/enclustra/common/Kconfig new file mode 100644 index 0000000000..4ba082e5e7 --- /dev/null +++ b/board/enclustra/common/Kconfig @@ -0,0 +1,25 @@ +config ENCLUSTRA_EEPROM_MAC + bool "Enclustra MAC address" + select ATSHA204A + depends on TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 + default y + help + Reads the MAC address out of the EEPROM and configures the MAC + addresses in the environment. + +choice + prompt "Enclustra EEPROM device" + depends on ENCLUSTRA_EEPROM_MAC + default ENCLUSTRA_EEPROM_MAC_ATSHA204 if TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 + help + Specify the device where the MAC is stored. + +config ENCLUSTRA_EEPROM_MAC_ATSHA204 + bool "MAC stored in 'ATSHA204'" + +config ENCLUSTRA_EEPROM_MAC_DS28 + bool "MAC stored in 'DS28'" + +endchoice + +source "board/enclustra/mercury_aa1/Kconfig" diff --git a/board/enclustra/common/Makefile b/board/enclustra/common/Makefile index 16c8531d74..c83743abe7 100644 --- a/board/enclustra/common/Makefile +++ b/board/enclustra/common/Makefile @@ -2,3 +2,6 @@ # Copyright (c) 2024 Enclustra GmbH # Common for several Enclustra modules +obj-$(CONFIG_ENCLUSTRA_EEPROM_MAC) += mac_common.o +obj-$(CONFIG_ENCLUSTRA_EEPROM_MAC_ATSHA204) += mac_atsha204.o +obj-$(CONFIG_ENCLUSTRA_EEPROM_MAC_DS28) += mac_ds28.o diff --git a/board/enclustra/common/enclustra_mac.h b/board/enclustra/common/enclustra_mac.h new file mode 100644 index 0000000000..9631e9d458 --- /dev/null +++ b/board/enclustra/common/enclustra_mac.h @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0+ + * + * Copyright 2024 Enclustra GmbH, + */ + +#ifndef ENCLUSTRA_MAC +# define ENCLUSTRA_MAC 0xF7B020 +#endif + +/* + * enclustra_mac_is_in_env - Check if MAC address is already set + * + * @env: name of the environment variable + * Return: true if MAC is set, false otherwise + */ +bool enclustra_mac_is_in_env(const char *env); + +/* + * enclustra_get_mac_is_enabled - Test if ethernet MAC is enabled in DT + * + * @alias: alias for ethernet MAC device tree node + * Return: 0 if OK, other value on error + */ +int enclustra_get_mac_is_enabled(const char *alias); + +/* + * enclustra_get_mac_from_eeprom - Get MAC address from eeprom and write it to enetaddr + * + * @enetaddr: buffer where address is to be stored + * @alias: alias for EEPROM device tree node + * Return: 0 if OK, other value on error + */ +int enclustra_get_mac_from_eeprom(unsigned char *enetaddr, const char *alias); + +/* + * enclustra_get_mac1_from_mac - Get MAC1 address from MAC and write it to enetaddr + * + * @enetaddr: buffer where MAC is passed, MAC will be modified to MAC1 + * Return: 0 if OK, else error value + */ +int enclustra_get_mac1_from_mac(unsigned char *enetaddr); + +/* + * enclustra_setup_mac_address - Try to get MAC address from various locations and write it to env + * + * Return: 0 if OK, other value on error + */ +int enclustra_setup_mac_address(void); diff --git a/board/enclustra/common/mac_atsha204.c b/board/enclustra/common/mac_atsha204.c new file mode 100644 index 0000000000..d582bfde0a --- /dev/null +++ b/board/enclustra/common/mac_atsha204.c @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2024 Enclustra GmbH + */ + +#include +#include +#include + +#include "enclustra_mac.h" + +int enclustra_get_mac_from_eeprom(unsigned char *enetaddr, const char *alias) +{ + struct udevice *dev; + u32 hwaddr_h; + u8 data[4]; + int i, j, eeprom_addr, mac_len, ret; + + ret = uclass_get_device_by_name(UCLASS_MISC, alias, &dev); + if (ret) { + printf("%s: Failed, cannot find EEPROM! ret = %d\n", __func__, ret); + return ret; + } + + /* Make sure atsha204a is in a defined state (part of protocol) */ + ret = atsha204a_sleep(dev); + if (ret) { + printf("%s(): Failed to bring EEPROM in defined state\n", __func__); + return ret; + } + + ret = atsha204a_wakeup(dev); + if (ret) { + printf("%s(): Failed to wakeup EEPROM\n", __func__); + return ret; + } + + /* + * Read twice portions of 4 bytes (atsha204 protocol). One from address + * 4 the other from address 5 of the OTP zone. Then convert the data to + * the 6 elements of the MAC address. + */ + eeprom_addr = 4; + mac_len = 6; + for (i = 0; i < 2; i++) { + eeprom_addr += i; + if (atsha204a_read(dev, ATSHA204A_ZONE_OTP, false, eeprom_addr, data)) { + printf("%s(): Failed to parse ATSHA204A_ZONE_OTP of EEPROM\n", + __func__); + return -EFAULT; + } + + for (j = 0; j < 4 && j + i * 4 < mac_len; j++) + enetaddr[j + i * 4] = data[j]; + } + + /* + * Check if the value is a valid mac registered for + * Enclustra GmbH + */ + hwaddr_h = enetaddr[0] | (enetaddr[1] << 8) | (enetaddr[2] << 16); + if ((hwaddr_h & 0xFFFFFF) != ENCLUSTRA_MAC) { + printf("%s(): Failed, parsed MAC is no Enclustra MAC\n", __func__); + return -ENOENT; + } + + if (!is_valid_ethaddr(enetaddr)) { + printf("%s(): Failed, address read from EEPROM is invalid!\n", + __func__); + return -EINVAL; + } + + printf("ethaddr set to %pM\n", enetaddr); + + return 0; +} + +int enclustra_setup_mac_address(void) +{ + unsigned char enetaddr[6]; + int ret; + + if (enclustra_mac_is_in_env("ethaddr")) + return 0; + + if (enclustra_get_mac_is_enabled("ethernet0")) + return 0; + + ret = enclustra_get_mac_from_eeprom(enetaddr, "atsha204a@64"); + if (ret) + return ret; + + ret = eth_env_set_enetaddr("ethaddr", enetaddr); + if (ret) + return ret; + + if (!enclustra_get_mac1_from_mac(enetaddr)) + return eth_env_set_enetaddr("eth1addr", enetaddr); + + printf("%s(): Failed, unable to set MAC address!\n", __func__); + return -ENXIO; +} diff --git a/board/enclustra/common/mac_common.c b/board/enclustra/common/mac_common.c new file mode 100644 index 0000000000..3304a8987c --- /dev/null +++ b/board/enclustra/common/mac_common.c @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2024 Enclustra GmbH + */ + +#include +#include +#include + +#include "enclustra_mac.h" + +bool enclustra_mac_is_in_env(const char *env) +{ + unsigned char enetaddr[6]; + + return eth_env_get_enetaddr(env, enetaddr); +} + +int enclustra_get_mac_is_enabled(const char *alias) +{ + ofnode node = ofnode_path(alias); + + if (!ofnode_valid(node)) + return -EINVAL; + + if (!ofnode_is_enabled(node)) + return -EINVAL; + + return 0; +} + +int enclustra_get_mac1_from_mac(unsigned char *enetaddr) +{ + u32 hwaddr_h; + + /* Increment MAC addr */ + hwaddr_h = (enetaddr[3] << 16) | (enetaddr[4] << 8) | enetaddr[5]; + hwaddr_h = (hwaddr_h + 1) & 0xFFFFFF; + enetaddr[3] = (hwaddr_h >> 16) & 0xFF; + enetaddr[4] = (hwaddr_h >> 8) & 0xFF; + enetaddr[5] = hwaddr_h & 0xFF; + + if (!is_valid_ethaddr(enetaddr)) { + printf("%s(): Failed, address computed from enetaddr is invalid!\n", + __func__); + return -EINVAL; + } + + printf("eth1addr set to %pM\n", enetaddr); + + return 0; +} diff --git a/board/enclustra/common/mac_ds28.c b/board/enclustra/common/mac_ds28.c new file mode 100644 index 0000000000..49c3a05317 --- /dev/null +++ b/board/enclustra/common/mac_ds28.c @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2024 Enclustra GmbH + */ + +#include +#include +#include +#include + +#include "enclustra_mac.h" + +#define DS28_I2C_ADDR 0x5C +#define DS28_SYS_I2C_EEPROM_BUS 0 + +int enclustra_get_mac_from_eeprom(unsigned char *enetaddr, const char *alias) +{ + struct udevice *dev; + u32 hwaddr_h; + struct dm_i2c_chip *chip; + uint chip_addr = DS28_I2C_ADDR; + int alen = 1; + int ret; + + ret = i2c_get_chip_for_busnum(DS28_SYS_I2C_EEPROM_BUS, chip_addr, + alen, &dev); + if (ret) + return ret; + + chip = dev_get_parent_plat(dev); + if (chip->offset_len != alen) { + debug("I2C chip %x: alen %d does not match offset_len %d\n", + chip_addr, alen, chip->offset_len); + return -EADDRNOTAVAIL; + } + + ret = dm_i2c_read(dev, 0x10, enetaddr, 6); + if (ret) { + printf("%s(): Failed reading EEPROM! ret = %d\n", __func__, ret); + return ret; + } + + /* + * Check if the value is a valid mac registered for + * Enclustra GmbH + */ + hwaddr_h = enetaddr[0] | (enetaddr[1] << 8) | (enetaddr[2] << 16); + if ((hwaddr_h & 0xFFFFFF) != ENCLUSTRA_MAC) { + printf("%s(): Failed, parsed MAC is no Enclustra MAC\n", __func__); + return -ENOENT; + } + + if (!is_valid_ethaddr(enetaddr)) { + printf("%s(): Failed, address read from EEPROM is invalid!\n", + __func__); + return -EINVAL; + } + + printf("ethaddr set to %pM\n", enetaddr); + + return 0; +} + +int enclustra_setup_mac_address(void) +{ + unsigned char enetaddr[6]; + int ret; + + if (enclustra_mac_is_in_env("ethaddr")) + return 0; + + if (enclustra_get_mac_is_enabled("ethernet0")) + return 0; + + /* + * Note: DS28 is still not available in official DT, so referencing + * here by i2c busnumber and address directly + * preparation for DT access here, though + */ + ret = enclustra_get_mac_from_eeprom(enetaddr, ""); + if (ret) + return ret; + + ret = eth_env_set_enetaddr("ethaddr", enetaddr); + if (ret) + return ret; + + if (!enclustra_get_mac1_from_mac(enetaddr)) + return eth_env_set_enetaddr("eth1addr", enetaddr); + + printf("%s(): Failed, unable to set MAC address!\n", __func__); + return -ENXIO; +} diff --git a/board/enclustra/mercury_aa1/Makefile b/board/enclustra/mercury_aa1/Makefile index 53c84d8156..b145254466 100644 --- a/board/enclustra/mercury_aa1/Makefile +++ b/board/enclustra/mercury_aa1/Makefile @@ -6,3 +6,5 @@ ifeq ($(CONFIG_SPL_BUILD),) obj-y += aa1_set_storage_cmd.o endif + +obj-y += aa1_board_late_init.o diff --git a/board/enclustra/mercury_aa1/aa1_board_late_init.c b/board/enclustra/mercury_aa1/aa1_board_late_init.c new file mode 100644 index 0000000000..2e8f8459e3 --- /dev/null +++ b/board/enclustra/mercury_aa1/aa1_board_late_init.c @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2024 Enclustra GmbH + * + */ + +#include +#include +#include +#include + +#include "../common/enclustra_mac.h" + +int board_late_init(void) +{ + return enclustra_setup_mac_address(); +} diff --git a/configs/socfpga_enclustra_mercury_aa1_defconfig b/configs/socfpga_enclustra_mercury_aa1_defconfig index 6a2434fe5a..5f52a30e9d 100644 --- a/configs/socfpga_enclustra_mercury_aa1_defconfig +++ b/configs/socfpga_enclustra_mercury_aa1_defconfig @@ -28,6 +28,7 @@ CONFIG_SYS_CONSOLE_IS_IN_ENV=y CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_BOARD_LATE_INIT=y CONFIG_CLOCKS=y CONFIG_SPL_PAD_TO=0x40000 CONFIG_SPL_NO_BSS_LIMIT=y From patchwork Tue Nov 19 22:46:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013410 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=SsihjcQn; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMgr5nmnz1xt3 for ; Wed, 20 Nov 2024 11:29:44 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id F11BD89641; Wed, 20 Nov 2024 01:28:02 +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="SsihjcQn"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 37623895D6; Tue, 19 Nov 2024 23:46:59 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) (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 4142B89431 for ; Tue, 19 Nov 2024 23:46:57 +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=l.rubusch@gmail.com Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-3821a8c7c5cso667214f8f.0 for ; Tue, 19 Nov 2024 14:46:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056417; x=1732661217; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=N+gTXKkoNCmg09HrAn3T7WBqGC7JqojyYDP79MXe0rg=; b=SsihjcQnhwFoGDbm2xNs9DB37z0BYFLS7FfK17erP4iwOF9NvM4a298gtQYxfX+SiM cra4nD7tzKvaXvd3mcIyUCp6TOpZLBgiJqcMsVTIJGDO9upHobC/c9PBu7i6VmAq6NW6 z1kplNrSVQrm7MI4IebU+XxQDvtSG4oXxGd4AenK7W2lx2vZWPPDSK+cJNfwj88GkM27 Q/vrktqqsAwg0uJZsC1kY2jjzI6LGTUc68DZ/fCuCMvHmdpgs7Sgs8sn6Q42ar8qpYGq KGxzPgRwdRbvDGmNNKiWsfxYhkNAA+r+oquzPwnzP8kq7FH9XjllyyEoHGvBAayijSub NNFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056417; x=1732661217; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N+gTXKkoNCmg09HrAn3T7WBqGC7JqojyYDP79MXe0rg=; b=c6TwUp4exAfuvmFcfijGLO4RTwLUYtu5DJvp54DrtlEzQJC4B01UUbTWO0/GElxPap TFKWaqCm3iawDG7ev2kJsXkSDkrRd2hw5zT3P2ZcYh6h5iOlcPBaMD/M2i4UpRcjr1JN ogfQdIr3fH6hgtq8z+q4XlGMdZTslBaOQGA2kCmKFAD0BO9Nsw9GwOTHdrdlGRb5fome vNPlExiSDvf5Du6SGYHsq1zhiYWzEBB65vkFXAEQKQJhOZSnUAyiP+DOYRhZzxyLvBg7 4rk0LV3DXHC88+7VOl7MIe+gbW88RPxetFtraXQlrG8uxGRF73sIva508fx1uCtUjVet DTcA== X-Gm-Message-State: AOJu0YzSphUNuRP8P1KoFdvTulbKLhwtp3Xned2lzKdspiONlfuO6jIy TJmq5SukqWPRkB56HjNsFCiqg+9uGJiIJPWlf/PZo36bmo6EtNAF0YnvSTDX X-Gm-Gg: ASbGncuhc0equUYowPIdjg2fkvqElcs1MYm2Ao1Wh6/OMAUynzRuVW3Ril82aZMJfpY o+SdIimsgl8hzkaiCwWX23IFZbq90f6vrUk4/niOyf7Mdx3iHStg5sVQzfWHBKvLHkMVj0lqhR2 B4Gol7TdtHi69s6KkLjhtmo8Hw0qw+/fWKv39Jyr3kiQJs8yM56pSzNspB9IuRlvMkGmsS7sbhV 8EiLTv9LHO7slqzZeV4BeqOWzO+EtweB9SMz89hEwa2sb9P9bGPTv0a1QEdO0jLDqoUhD2wlvMP M38xwrL5U1CV4/RW9bqvZYiUaOLu X-Google-Smtp-Source: AGHT+IHXu9IP6C6fXdxZ/m7tca1C+rffKvfkh97i/TiOOdFXgLS9ecmDz+aorLo43+yElcwaIBGM+g== X-Received: by 2002:a05:600c:1d1a:b0:42c:ba6c:d9b1 with SMTP id 5b1f17b1804b1-4334f01d8d8mr2138705e9.4.1732056416645; Tue, 19 Nov 2024 14:46:56 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:56 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 07/10] misc: atsha204a: update kconfig description Date: Tue, 19 Nov 2024 22:46:40 +0000 Message-Id: <20241119224643.27692-8-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean The atsha204a crypto chip is not only on the Turris Omnia board. Extend the description of the atsha204a kconfig to cover also other boards. As an example the Enclustra Mercury+ AA1 SoM. Signed-off-by: Lothar Rubusch --- drivers/misc/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 6009d55f40..90fa8c9eae 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -73,7 +73,7 @@ config ATSHA204A help Enable support for I2C connected Atmel's ATSHA204A CryptoAuthentication module found for example on the Turris Omnia - board. + board and Enclustra SoC FPGA boards. config GATEWORKS_SC bool "Gateworks System Controller Support" From patchwork Tue Nov 19 22:46:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013413 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=QO6SMGp3; dkim-atps=neutral Authentication-Results: legolas.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=patchwork.ozlabs.org) 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 ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMhL46Ynz1xyG for ; Wed, 20 Nov 2024 11:30:10 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id CE7798964E; Wed, 20 Nov 2024 01:28:04 +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="QO6SMGp3"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 10B1C88EEA; Tue, 19 Nov 2024 23:47:06 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) (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 6BBB288D7E for ; Tue, 19 Nov 2024 23:47:03 +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=l.rubusch@gmail.com Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4315dfa3e0bso4400815e9.0 for ; Tue, 19 Nov 2024 14:47:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056418; x=1732661218; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q1DbdJx4HjCcpeSfXxC23Hyb//eM2usEzjMLWbd/NNg=; b=QO6SMGp3zdyMoRTYLx5rlw7rz8e4MN5CNtqEiQTg+6K7uA+lcP7no3zuVfgR757Sx0 m0tY6uKDleEUUM+nQ6FB8lI6Mg8Hymn7/bYa2yv27V4aFsUxORhE3wqJ0dRxageRwXW7 UxVkRRTV1+km5vd06VA2hFlkP3kNU7NWWbpiDi4SCEHWwvyCTFtV+Ko520X/bAWMTr6U ptNra0NxrWEgufLOqkYFZwjW7Y1HdLjsx/4utW6r2/f3Im4tFamr7CNkH0H5astpQQQh 6c2k6Yy4COQUoVRQst3fujOJqn6poZwZnhNix6i4jDRT/YyJuxn8kTRAXTy/06JZ+y/K PfCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056418; x=1732661218; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q1DbdJx4HjCcpeSfXxC23Hyb//eM2usEzjMLWbd/NNg=; b=c4aqjADf7xK5idi4foRJAqjsj/7yDJO8TrJBvVeCS3/6jVYdWWBOk9tki9MwYjzORJ bU+ecRn8MkjyKKna9mH51cUAL+aEqaCoj2zhSqHggPyPf3jE2DzlWC0MWJOvs5pY+Kt1 p2XrLGi/wLpvsq6MqVaTWihBkP54jkz0/u8A/XhSR8MhZ9r0GRGhpvymgVxx1/oNFyjB q+0ZqKUwGuo1F6HLc+wsnZqW/2UFPpQ/kYEPWy4i2v/NZeD5MEj9B3xl2ujl39acxp9h K1hAUXqBlT8cPNGnGkM81ADMP7NW4eGTf0FNIqCB4Sb/eX9WcwSaF+mVMFY3B4/SwosU N3ow== X-Gm-Message-State: AOJu0YzYMLfbRkhpCwsKK5f9v3+gi8mV3pwnALZgxy/7Lxf85rNaFYYU BR/vV0oTM0fJTEAo4ZeZetg4YDHc+kIl81PZNNvmD/T6vdAe5KOQf+JtYwO8 X-Gm-Gg: ASbGnctc1Rsp/ncRqcV0H153bgqyLj+i4zp/15XEaLX4hLG+xLABu3HLYc4oHw4qop5 zIJ76l4aYbCzLkEI9RbHoEo0g93FMNPOItEcXdcBW6ywdh7l2TaLzNM2LrZKcu4S/q2RQ/H04QV hA2ymU5OJQEGbM5MJ3dxdjJdsoDlhCM409Jm0BoR9O8kFL5kx6fahip7gMLXmnUrtl/8fFjWFh9 ClrRmVS7TWjPWQAKXlHLT5l3miHABnvnZCHZspi8I8FjwQYr5M/0B9wc4UCBvQNQzS5l5LmECxe wwsdTR8z2wO1GOmVCsf7uaJJLCRp X-Google-Smtp-Source: AGHT+IHy4zKMfDeGu956Ze9WvZpYaooQOiiHN9wfwetrpTPgefeDe5WsULnyZsa8ExvaRJDvTY0lJA== X-Received: by 2002:a05:600c:35d5:b0:431:5316:6752 with SMTP id 5b1f17b1804b1-43348986a69mr2359005e9.2.1732056417758; Tue, 19 Nov 2024 14:46:57 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:57 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 08/10] ARM: dts: arria10: update according to DTSpec Date: Tue, 19 Nov 2024 22:46:41 +0000 Message-Id: <20241119224643.27692-9-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Update node-names according to DTspec. Add labels for compatibility and/or add missing nodes in order to make the file compatible with the corresponding counterpart in dts/upstream. Eventually the u-boot local file then can be replaced by the dts/upstream, and eventually removed. Signed-off-by: Lothar Rubusch --- arch/arm/dts/socfpga_arria10.dtsi | 42 ++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/arch/arm/dts/socfpga_arria10.dtsi b/arch/arm/dts/socfpga_arria10.dtsi index bab34ab56c..5826268823 100644 --- a/arch/arm/dts/socfpga_arria10.dtsi +++ b/arch/arm/dts/socfpga_arria10.dtsi @@ -15,13 +15,13 @@ #size-cells = <0>; enable-method = "altr,socfpga-a10-smp"; - cpu@0 { + cpu0: cpu@0 { compatible = "arm,cortex-a9"; device_type = "cpu"; reg = <0>; next-level-cache = <&L2>; }; - cpu@1 { + cpu1: cpu@1 { compatible = "arm,cortex-a9"; device_type = "cpu"; reg = <1>; @@ -29,7 +29,16 @@ }; }; - intc: intc@ffffd000 { + pmu: pmu@ff111000 { + compatible = "arm,cortex-a9-pmu"; + interrupt-parent = <&intc>; + interrupts = <0 124 4>, <0 125 4>; + interrupt-affinity = <&cpu0>, <&cpu1>; + reg = <0xff111000 0x1000>, + <0xff113000 0x1000>; + }; + + intc: interrupt-controller@ffffd000 { compatible = "arm,cortex-a9-gic"; #interrupt-cells = <3>; interrupt-controller; @@ -73,7 +82,7 @@ }; }; - base_fpga_region { + fpga-region { #address-cells = <0x1>; #size-cells = <0x1>; @@ -638,7 +647,7 @@ reg = <0xffcfb100 0x80>; }; - L2: l2-cache@fffff000 { + L2: cache-controller@fffff000 { compatible = "arm,pl310-cache"; reg = <0xfffff000 0x1000>; interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>; @@ -649,7 +658,7 @@ arm,shared-override; }; - mmc: dwmmc0@ff808000 { + mmc: mmc@ff808000 { #address-cells = <1>; #size-cells = <0>; compatible = "altr,socfpga-dw-mshc"; @@ -662,7 +671,7 @@ status = "disabled"; }; - nand: nand@ffb90000 { + nand: nand-controller@ffb90000 { #address-cells = <1>; #size-cells = <0>; compatible = "altr,socfpga-denali-nand"; @@ -729,6 +738,16 @@ <37 IRQ_TYPE_LEVEL_HIGH>; }; + sdmmca-ecc@ff8c2c00 { + compatible = "altr,socfpga-sdmmc-ecc"; + reg = <0xff8c2c00 0x400>; + altr,ecc-parent = <&mmc>; + interrupts = <15 IRQ_TYPE_LEVEL_HIGH>, + <47 IRQ_TYPE_LEVEL_HIGH>, + <16 IRQ_TYPE_LEVEL_HIGH>, + <48 IRQ_TYPE_LEVEL_HIGH>; + }; + dma-ecc@ff8c8000 { compatible = "altr,socfpga-dma-ecc"; reg = <0xff8c8000 0x400>; @@ -760,6 +779,11 @@ resets = <&rst QSPI_RESET>, <&rst QSPI_OCP_RESET>; reset-names = "qspi", "qspi-ocp"; status = "disabled"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0x0>; + }; }; rst: rstmgr@ffd05000 { @@ -828,7 +852,7 @@ reset-names = "timer"; }; - uart0: serial0@ffc02000 { + uart0: serial@ffc02000 { compatible = "snps,dw-apb-uart"; reg = <0xffc02000 0x100>; interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>; @@ -839,7 +863,7 @@ status = "disabled"; }; - uart1: serial1@ffc02100 { + uart1: serial@ffc02100 { compatible = "snps,dw-apb-uart"; reg = <0xffc02100 0x100>; interrupts = <0 111 IRQ_TYPE_LEVEL_HIGH>; From patchwork Tue Nov 19 22:46:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013411 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=JSmbJoxs; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMh06ZS3z1xt3 for ; Wed, 20 Nov 2024 11:29:52 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8E64689645; Wed, 20 Nov 2024 01:28:03 +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="JSmbJoxs"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 19BB389555; Tue, 19 Nov 2024 23:47:03 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) (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 2C67089431 for ; Tue, 19 Nov 2024 23:47:01 +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=l.rubusch@gmail.com Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-4314c006fa4so5966955e9.0 for ; Tue, 19 Nov 2024 14:47:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056421; x=1732661221; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=whsMWy87DdN0a+FeuQymygUWgKhoOAh97g3EiwT1pb8=; b=JSmbJoxs7VqjNYnCjLu9xdzBCCgfR77dYB1swv7Ka1gUVnpMiHYP7nUV9hV4JLvFLN k8/wa9aCSVo4jhj2VGrGoqH+JFvG8wpxCHMtHgji/zrWeLiX9g/jEnqbGxk8dtP+88gI FdkWd8cy9svWf6r3BXY2HuaSaz7t3c3LNIMX+QXzg428Q0sTANcWlTBeXNKXn+N33+Pn lDrUueokE9UgX7ilglbzEIUPta554svKuK+WHfc+X7SuI5USVInyW9zE7W9dykV5QjM9 K5pe3QbtY6O6PusfhdbzegmlfpRbZlzFayKiXygYhS6E+FC6YZjnRprFBAhJi9IgX0hE DmkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056421; x=1732661221; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=whsMWy87DdN0a+FeuQymygUWgKhoOAh97g3EiwT1pb8=; b=UPu1G/asCKMxAvm0RPAjneabG+ET0KbLP7qkdHyB2N++T1HDLCxrBDLN5Cu0ugAarE OdFNn8/JKzX4oyOzxMQtbs1q41JMDE8key7XTiU4k+zzTLN8R5iPTe66CE227dhzdvJo BHB3Gijcgb2cRFOy2ZEpMO96Y7Rd92KPgYibnz8IPlUODKxlkgcIbnsJmPE+BM0DS9Dj PoC5BrOlUnm3GBFrRX/3Gp3rKSb5wHCI/S+bxWw6zd43utTgN2PDrYNWmG/GeXeVEkUl KLj2tuZrBqGFPr57cd/17QhTTXwqpHcyv/bfBhFu5WaJD+5hk2L0wSBhf4Etm5Iaa/hV oTNw== X-Gm-Message-State: AOJu0YxfAFb0QND97tdC0OwYVLA903qeWg+eHPwi09bmMBpo3rTE9RoX auFpLFRH85hmqjUgJPwSGD406PFE/GzkTXbGCav46wMHeqk6b7/GvGtDnEhO X-Gm-Gg: ASbGncuRzN81X5genHTYNmG7DGviKVYvyXx8tjBODhuz/GVjkb6itPChcx5aZVcA4Ub XP2J4Ji1kizR/oTERUPzAOYiGthrSzRqpNLAjPNeUW2J9PpYly9NbTxI/RJHxkSKnyIjFng/BfX d0gSzZh3TpslzDov231OV2onaxreLelJo9Q93D+zUOMeJQf66f7HlIA72dL53naClOHOmYNMK4F PBsP44L9IQ1+WSbafB1fnjjEZQEN0FzaDjGiYzdjhd9Y3+DZVXcQGf8eXJWYoFiEBz40FpCzSUh vsZa5e9xlaY07o1DD06a8cqI+8le X-Google-Smtp-Source: AGHT+IGGg4i5wwEnSikJ4RTYv7HrhvgNRerzXqEy2a+YR/lXohqDFUdimJpY8lDd0cXBDCGQyVOZJw== X-Received: by 2002:a05:600c:1d1f:b0:42c:aeee:80b with SMTP id 5b1f17b1804b1-4334f0230ffmr1945725e9.8.1732056420320; Tue, 19 Nov 2024 14:47:00 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.46.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:46:59 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 09/10] ARM: socfpga: update function call to modern API Date: Tue, 19 Nov 2024 22:46:42 +0000 Message-Id: <20241119224643.27692-10-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Remove arguments in the function call. The call's argument list differs from its definition, which breaks compilation. The removed arguments are obtained from device-tree declaration. Signed-off-by: Lothar Rubusch --- arch/arm/mach-socfpga/misc_arria10.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm/mach-socfpga/misc_arria10.c b/arch/arm/mach-socfpga/misc_arria10.c index c442af0288..1e20f77773 100644 --- a/arch/arm/mach-socfpga/misc_arria10.c +++ b/arch/arm/mach-socfpga/misc_arria10.c @@ -214,8 +214,6 @@ int qspi_flash_software_reset(void) /* Get the flash info */ ret = spi_flash_probe_bus_cs(CONFIG_SF_DEFAULT_BUS, CONFIG_SF_DEFAULT_CS, - CONFIG_SF_DEFAULT_SPEED, - CONFIG_SF_DEFAULT_MODE, &flash); if (ret) { From patchwork Tue Nov 19 22:46:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lothar Rubusch X-Patchwork-Id: 2013414 X-Patchwork-Delegate: tien.fong.chee@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=Iwa5Mid7; dkim-atps=neutral Authentication-Results: legolas.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=patchwork.ozlabs.org) 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 ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XtMhW09xrz1xyG for ; Wed, 20 Nov 2024 11:30:19 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 8423E89630; Wed, 20 Nov 2024 01:28:11 +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="Iwa5Mid7"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C50BB88DB2; Tue, 19 Nov 2024 23:47:08 +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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) (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 75CA088ED9 for ; Tue, 19 Nov 2024 23:47:03 +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=l.rubusch@gmail.com Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-4315549c4d5so6896095e9.0 for ; Tue, 19 Nov 2024 14:47:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732056423; x=1732661223; darn=lists.denx.de; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=y9WbDmSMKJwyeH+scxHCKNE1pRYeLjJXP8smDB3meqE=; b=Iwa5Mid7RK/C6wLJPUc5gJUeErAEBYnVJMvk/4SSTW95GeUG1py2Ld/6F5buE/Di3A r0zu1HJnD1eCI93soRpmDX9vw8h3Kj9j3YkU2cGMMrrZ/Ttg2TsFOgjnSEdxFGbAF5EW KESPhSFN5OuNFc30Ut2OM26w/t4NWB+X2gAvdtvtzv3QTLZfqftc4faSoH6mdrhZ6naN +8VxUb7ki3J/pSLxaxTRn6/U7gRK/jf1jhjhJsVdQuG9m8gGQEtbcje8/Pay3tRDdfpA OmQCep2YKbPZnhDttnVUPpUplXj/ho+1zHXR0mICRVfdKpPFWXDzYE4XT16WUf0xQKmh NMpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732056423; x=1732661223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y9WbDmSMKJwyeH+scxHCKNE1pRYeLjJXP8smDB3meqE=; b=CpHUnA1i1lQUDnwkXUddZ7tj7dwSTh/9sVuhzKeEVZqqponR4q26Gk1ukdMpKnf8Mu LR/NJUjPUK4VS20OY1lFDh3n9qVoQvK/suwu0SKkd/fDlvbn7YgnisVwQxRR3JBCTwqu jHr56t3BhGVUsuhpj/WyzEM+FUhzJPJj/uP9MvTMtfHW4VAlq4KN9s3Hq/8GQKo460Js bMNqbqUm/5txoZUGugq9Crjq/tYGGRE7yYiEnVR3mD6yJYGV5VP/H4XyUajvHbyvxrhc BU3bo2OQNYWTzC82ZRx8Tx5cceSglSMH8v+abq3qQ0d+1J9hLAdSnPCUBnUOdFEpckJf fU9A== X-Gm-Message-State: AOJu0YxUqxpQcp6RgHW8GlaLFVoZjJCkRgIU6jljnM96guTRlDt/nqAM UnZ+22x5LvsLRGd4C7aavXiGlLitDUskLC/m0X7UCwtmVDkb9fxxmJPCJdlb X-Gm-Gg: ASbGnct31E4Fr9ChcYq3wK2darQyyTxPHt6oAuPQLqHHX8SPON55/KXWNjcCkfJJIVb 1SBxGPocM6t8CQc26aL6JnGvCG1h9uB+9VAsYJuPhu08UOkZ/9+OyPLuhlgfKrodbABJwwetnJ9 xKPghNQ5RiJbWZgYUVkWRazzrYqovOVLKTYVQDROcXIcatNIQribiz7P4/sulfHTwoucO/rmGbs 3CR6A5Fojli3j1KWCFfGupmXHJW8u+JFQqzRI/ojOTiUY3DZ0/a9O5UW8HCotE0zAjuRRXkSPIc 4/i78G16v/ROgsus7+VhGcC1W/eZ X-Google-Smtp-Source: AGHT+IFtRWw2UmYjTQAGazmfpYD5udpe36E11TUvUTbDtL0Mpouw7uLk+aVh2L4O98LgsLvqxLSMnQ== X-Received: by 2002:a05:600c:1391:b0:42c:df54:18f6 with SMTP id 5b1f17b1804b1-4334899cbb6mr2097735e9.3.1732056422846; Tue, 19 Nov 2024 14:47:02 -0800 (PST) Received: from d71e1d1a2016.v.cablecom.net (84-72-156-211.dclient.hispeed.ch. [84.72.156.211]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da27fc8esm216979795e9.21.2024.11.19.14.47.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 14:47:01 -0800 (PST) From: Lothar Rubusch To: u-boot@lists.denx.de, trini@konsulko.com, marex@denx.de, simon.k.r.goldschmidt@gmail.com, tien.fong.chee@intel.com, sumit.garg@linaro.org Cc: sjg@chromium.org, xypron.glpk@gmx.de, michal.simek@amd.com, jit.loon.lim@intel.com, barnas@google.com, l.rubusch@gmail.com Subject: [PATCH v4 v5 10/10] ARM: socfpga: apply binman approach to fpga parts Date: Tue, 19 Nov 2024 22:46:43 +0000 Message-Id: <20241119224643.27692-11-l.rubusch@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20241119224643.27692-1-l.rubusch@gmail.com> References: <20241119224643.27692-1-l.rubusch@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 20 Nov 2024 01:27:55 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.8 at phobos.denx.de X-Virus-Status: Clean Convert the .its based approach to binman instruction covered in the device tree generation. This reduces additional instructions and integrates the former separate build step into building the u-boot. Signed-off-by: Lothar Rubusch --- ..._arria10_enclustra_mercury_aa1-u-boot.dtsi | 44 +++++++++++++++++++ arch/arm/mach-socfpga/Kconfig | 1 + board/enclustra/mercury_aa1/fpga.its | 32 -------------- doc/board/enclustra/mercury-aa1.rst | 3 ++ 4 files changed, 48 insertions(+), 32 deletions(-) delete mode 100644 board/enclustra/mercury_aa1/fpga.its diff --git a/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi index 6e38286572..9587d2dddb 100644 --- a/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi +++ b/arch/arm/dts/socfpga_arria10_enclustra_mercury_aa1-u-boot.dtsi @@ -18,6 +18,10 @@ compatible = "u-boot,fs-loader"; phandlepart = <&mmc 1>; }; + + binman: binman { + multiple-images; + }; }; &fpga_mgr { @@ -43,3 +47,43 @@ }; #endif + +&binman { + u-boot { + filename = "fpga.itb"; + + fit { + description = "FIT image with FPGA bistream"; + fit,external-offset = <0>; + #address-cells = <1>; + + images { + fpga-periph-1 { + description = "FPGA peripheral bitstream"; + type = "fpga"; + compression = "none"; + blob-ext { + filename = "bitstream.periph.rbf"; + }; + }; + + fpga-core-1 { + description = "FPGA core bitstream"; + type = "fpga"; + compression = "none"; + blob-ext { + filename = "bitstream.core.rbf"; + }; + }; + }; + + configurations { + default = "config-1"; + config-1 { + description = "Boot with FPGA early IO release config"; + fpga = "fpga-periph-1", "fpga-core-1"; + }; + }; + }; + }; +}; diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig index 60d8c889dc..e7236a56f7 100644 --- a/arch/arm/mach-socfpga/Kconfig +++ b/arch/arm/mach-socfpga/Kconfig @@ -186,6 +186,7 @@ config TARGET_SOCFPGA_EBV_SOCRATES config TARGET_SOCFPGA_ENCLUSTRA_MERCURY_AA1 bool "Enclustra Mercury+ AA1" + select BINMAN select TARGET_SOCFPGA_ARRIA10 config TARGET_SOCFPGA_IS1 diff --git a/board/enclustra/mercury_aa1/fpga.its b/board/enclustra/mercury_aa1/fpga.its deleted file mode 100644 index cb42d61fbd..0000000000 --- a/board/enclustra/mercury_aa1/fpga.its +++ /dev/null @@ -1,32 +0,0 @@ -/dts-v1/; - -/ { - description = "FIT image with FPGA bistream"; - #address-cells = <1>; - - images { - fpga-periph-1 { - description = "FPGA peripheral bitstream"; - data = /incbin/("../../../bitstream.periph.rbf"); - type = "fpga"; - arch = "arm"; - compression = "none"; - }; - - fpga-core-1 { - description = "FPGA core bitstream"; - data = /incbin/("../../../bitstream.core.rbf"); - type = "fpga"; - arch = "arm"; - compression = "none"; - }; - }; - - configurations { - default = "config-1"; - config-1 { - description = "Boot with FPGA early IO release config"; - fpga = "fpga-periph-1", "fpga-core-1"; - }; - }; -}; diff --git a/doc/board/enclustra/mercury-aa1.rst b/doc/board/enclustra/mercury-aa1.rst index cba36aae2e..f3c629d42e 100644 --- a/doc/board/enclustra/mercury-aa1.rst +++ b/doc/board/enclustra/mercury-aa1.rst @@ -66,6 +66,9 @@ Build u-boot. Source your favorite toolchain for ARM first. $ make socfpga_enclustra_mercury_aa1_defconfig $ make -j8 +Note: Call ``make`` with ``NO_PYTHON=1`` where python tools unnecessarily falls +back into additional python setup. + Setup and compile a boot script as needed. Depending on the boot-mode select ``sd-aa1.cmd`` for SD/eMMC, or ``qspi-aa1.cmd`` for QSPI flash.